; LLVM IR from erwincoumans/tiny-differentiable-simulator :: third_party/dear_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.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiContext = type <{ i8, i8, [6 x i8], %struct.ImGuiIO, %struct.ImGuiPlatformIO, %struct.ImGuiStyle, i32, i32, [4 x i8], ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i32, i8, i8, i8, i8, i32, ptr, %struct.ImVector.5, %struct.ImVector.5, %struct.ImVector.5, %struct.ImVector.5, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i32, i8, i8, [2 x i8], float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, [2 x i8], i32, i32, [4 x i8], i64, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, [2 x i8], ptr, i32, float, %struct.ImGuiNextWindowData, %struct.ImGuiNextItemData, [4 x i8], %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.9, %struct.ImVector.10, float, [4 x i8], ptr, ptr, ptr, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, [2 x i8], i32, i32, i32, i32, i32, i32, [4 x i8], %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, ptr, i32, [4 x i8], ptr, ptr, ptr, float, float, i8, [7 x i8], ptr, ptr, i32, i32, i32, i32, i8, [3 x i8], float, i32, i8, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, [4 x i8], %struct.ImVector.11, [16 x i8], ptr, %struct.ImPool, %struct.ImVector.13, %struct.ImVector.14, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, float, [3 x float], %struct.ImVec4, float, i8, i8, [2 x i8], float, float, float, i32, [4 x i8], %struct.ImVector.2, %struct.ImVector.17, %struct.ImVec2, %struct.ImVec2, ptr, %struct.ImGuiDockContext, i8, [3 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.20, %struct.ImChunkStream, i8, [3 x i8], i32, ptr, %struct.ImGuiTextBuffer, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, [120 x float], i32, float, i32, i32, i32, [3073 x i8], [7 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, [22 x i32], float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i32, i8, i8, i8, i8, [512 x i8], [21 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, i32, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], [512 x float], [512 x float], [21 x float], [21 x float], float, i16, %struct.ImVector }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiPlatformIO = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVector.3, ptr, %struct.ImVector.4 }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImGuiStyle = type { float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, float, float, [50 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, [12 x %struct.ImVec2], [64 x i8], ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.0 }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImGuiNextWindowData = type { i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, %struct.ImRect, ptr, ptr, float, i32, i32, %struct.ImGuiWindowClass, %struct.ImVec2 }
%struct.ImGuiWindowClass = type <{ i32, i32, i32, i32, i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiNextItemData = type <{ i32, float, i32, i32, i8, [3 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.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImGuiNavMoveResult = type <{ ptr, i32, i32, float, float, float, %struct.ImRect, [4 x i8] }>
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImPool = type <{ %struct.ImVector.12, %struct.ImGuiStorage, i32, [4 x i8] }>
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type { i32, i32, i32, %struct.ImVector, %struct.ImVector.2, %struct.ImVector.2, i8, i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i32, ptr, ptr }
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type <{ %struct.ImVector.15, float, float, %struct.ImVector, %struct.ImVector.16, ptr, %struct.ImVec2, ptr, ptr, i16, i16, i16, i8, i8, float, float, float, i32, [2 x i8], [6 x i8] }>
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImGuiDockContext = type <{ %struct.ImGuiStorage, %struct.ImVector.18, %struct.ImVector.19, i8, [7 x i8] }>
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.2 }
%struct.ImGuiTextBuffer = type { %struct.ImVector.2 }
%struct.ImGuiWindow = type <{ ptr, i32, i32, i32, %struct.ImGuiWindowClass, ptr, i32, %struct.ImVec2, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i32, i32, i32, %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, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8], %struct.ImVector.17, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, i32, float, float, %struct.ImGuiStorage, %struct.ImVector.23, float, float, i32, [4 x i8], ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i8, [3 x i8], i32, i32, [4 x i8], ptr, ptr, i32, i32, %struct.ImRect, i16, i8, [5 x i8] }>
%struct.ImGuiWindowTempData = type <{ %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, i32, i32, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.5, ptr, ptr, i32, i32, i32, i32, i32, float, float, [4 x i8], %struct.ImVector.21, %struct.ImVector.15, %struct.ImVector.15, %struct.ImVector.22, [6 x i16], [4 x i8] }>
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type { float, float, float, [3 x float], [3 x float] }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVec2ih = type { i16, i16 }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImDrawList = type { %struct.ImVector.24, %struct.ImVector, %struct.ImVector.25, i32, ptr, ptr, i32, ptr, ptr, %struct.ImVector.26, %struct.ImVector.27, %struct.ImVector.28, %struct.ImDrawCmd, %struct.ImDrawListSplitter }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImDrawCmd = type { %struct.ImVec4, ptr, i32, i32, i32, ptr, ptr }
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.29 }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImGuiPopupData = type { i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiDockNode = type <{ i32, i32, i32, [4 x i8], ptr, [2 x ptr], %struct.ImVector.5, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, %struct.ImGuiWindowClass, i32, [4 x i8], ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i16, i8, [5 x i8] }>
%struct.ImGuiViewportP = type { %struct.ImGuiViewport.base, i32, i32, [2 x i32], i32, i32, %struct.ImVec2, float, float, i16, i8, ptr, [2 x ptr], %struct.ImDrawData, %struct.ImDrawDataBuilder, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiViewport.base = type <{ i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, [4 x i8], ptr, i32, [4 x i8], ptr, ptr, ptr, ptr, i8, i8, i8 }>
%struct.ImDrawData = type { i8, ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, ptr }
%struct.ImDrawDataBuilder = type { [2 x %struct.ImVector.32] }
%struct.ImVector.32 = type { i32, i32, ptr }
%struct.ImGuiViewport = type <{ i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, [4 x i8], ptr, i32, [4 x i8], ptr, ptr, ptr, ptr, i8, i8, i8, [5 x i8] }>
%struct.ImGuiPlatformMonitor = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float }
%struct.ImFontAtlas = type { i8, i32, ptr, i32, i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.8, %struct.ImVector.33, %struct.ImVector.34, [64 x %struct.ImVec4], i32, i32 }
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImVector.34 = type { i32, i32, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [69 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: 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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef, float noundef) #8

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

declare void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) #9

declare void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef, float noundef) #9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; 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
define dso_local noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef %0, ptr noundef %1, i32 noundef %2) #10 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca i32, align 4
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca ptr, align 8
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca %struct.ImVec2, align 4
  %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 %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 4
  %33 = alloca %struct.ImRect, align 4
  %34 = alloca %struct.ImVec2, align 4
  %35 = alloca i8, align 1
  %36 = alloca i8, align 1
  %37 = alloca %struct.ImVec2, align 4
  %38 = alloca %struct.ImVec2, align 4
  %39 = alloca %struct.ImVec2, align 4
  %40 = alloca %struct.ImRect, align 4
  %41 = alloca float, 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 i8, align 1
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i8, align 1
  %54 = alloca %struct.ImRect, align 4
  %55 = alloca %struct.ImRect, align 4
  %56 = alloca %struct.ImVec2, align 4
  %57 = alloca %struct.ImRect, align 4
  %58 = alloca %struct.ImVec2, align 4
  %59 = alloca %struct.ImVec2, align 4
  %60 = alloca %struct.ImVec2, align 4
  %61 = alloca ptr, align 8
  %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 i8, align 1
  %67 = alloca i8, align 1
  %68 = alloca i32, align 4
  %69 = alloca [4 x i32], align 16
  %70 = alloca i32, align 4
  %71 = alloca float, align 4
  %72 = alloca %struct.ImRect, align 4
  %73 = alloca %struct.ImVec2, align 4
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca %struct.ImVec2, align 4
  %76 = alloca %struct.ImVec2, align 4
  %77 = alloca %struct.ImVec2, align 4
  %78 = alloca float, align 4
  %79 = alloca float, align 4
  %80 = alloca %struct.ImVec2, align 4
  %81 = alloca %struct.ImRect, align 4
  %82 = alloca %struct.ImRect, align 4
  %83 = alloca %struct.ImRect, align 4
  %84 = alloca float, align 4
  %85 = alloca %struct.ImVec2, align 4
  %86 = alloca %struct.ImVec2, align 4
  %87 = alloca ptr, align 8
  %88 = alloca i8, align 1
  %89 = alloca i8, align 1
  %90 = alloca i32, align 4
  %91 = alloca %struct.ImRect, align 4
  %92 = alloca i8, align 1
  %93 = alloca i8, align 1
  %94 = alloca ptr, align 8
  %95 = alloca i8, align 1
  %96 = alloca float, align 4
  %97 = alloca %struct.ImRect, align 4
  %98 = alloca i8, align 1
  %99 = alloca i8, align 1
  %100 = alloca float, align 4
  %101 = alloca float, align 4
  %102 = alloca %struct.ImVec2, align 4
  %103 = alloca %struct.ImVec2, align 4
  %104 = alloca %struct.ImVec2, align 4
  %105 = alloca i8, align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store i32 %2, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #13
  %106 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %106, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #13
  %107 = load ptr, ptr %7, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.ImGuiContext, ptr %107, i32 0, i32 5
  store ptr %108, ptr %8, align 8, !tbaa !5
  %109 = load ptr, ptr %4, align 8, !tbaa !5
  %110 = icmp ne ptr %109, null
  br i1 %110, label %111, label %117

111:                                              ; preds = %3
  %112 = load ptr, ptr %4, align 8, !tbaa !5
  %113 = getelementptr inbounds i8, ptr %112, i64 0
  %114 = load i8, ptr %113, align 1, !tbaa !11
  %115 = sext i8 %114 to i32
  %116 = icmp ne i32 %115, 0
  br label %117

117:                                              ; preds = %111, %3
  %118 = phi i1 [ false, %3 ], [ %116, %111 ]
  br i1 %118, label %119, label %120

119:                                              ; preds = %117
  br label %122

120:                                              ; preds = %117
  call void @__assert_fail(ptr noundef @.str.100, ptr noundef @.str.3, i32 noundef 5838, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

121:                                              ; No predecessors!
  br label %122

122:                                              ; preds = %121, %119
  %123 = load ptr, ptr %7, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.ImGuiContext, ptr %123, i32 0, i32 18
  %125 = load i8, ptr %124, align 8, !tbaa !12, !range !65, !noundef !66
  %126 = trunc i8 %125 to i1
  br i1 %126, label %127, label %128

127:                                              ; preds = %122
  br label %130

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

129:                                              ; No predecessors!
  br label %130

130:                                              ; preds = %129, %127
  %131 = load ptr, ptr %7, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.ImGuiContext, ptr %131, i32 0, i32 15
  %133 = load i32, ptr %132, align 4, !tbaa !67
  %134 = load ptr, ptr %7, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.ImGuiContext, ptr %134, i32 0, i32 14
  %136 = load i32, ptr %135, align 8, !tbaa !68
  %137 = icmp ne i32 %133, %136
  br i1 %137, label %138, label %139

138:                                              ; preds = %130
  br label %141

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

140:                                              ; No predecessors!
  br label %141

141:                                              ; preds = %140, %138
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #13
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef %142)
  store ptr %143, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #13
  %144 = load ptr, ptr %9, align 8, !tbaa !5
  %145 = icmp eq ptr %144, null
  %146 = zext i1 %145 to i8
  store i8 %146, ptr %10, align 1, !tbaa !69
  %147 = load i8, ptr %10, align 1, !tbaa !69, !range !65, !noundef !66
  %148 = trunc i8 %147 to i1
  br i1 %148, label %149, label %153

149:                                              ; preds = %141
  %150 = load ptr, ptr %4, align 8, !tbaa !5
  %151 = load i32, ptr %6, align 4, !tbaa !9
  %152 = call noundef ptr @_ZL15CreateNewWindowPKci(ptr noundef %150, i32 noundef %151)
  store ptr %152, ptr %9, align 8, !tbaa !5
  br label %153

153:                                              ; preds = %149, %141
  %154 = load i32, ptr %6, align 4, !tbaa !9
  %155 = and i32 %154, 786944
  %156 = icmp eq i32 %155, 786944
  br i1 %156, label %157, label %160

157:                                              ; preds = %153
  %158 = load i32, ptr %6, align 4, !tbaa !9
  %159 = or i32 %158, 6
  store i32 %159, ptr %6, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %157, %153
  %161 = load i32, ptr %6, align 4, !tbaa !9
  %162 = and i32 %161, 8388608
  %163 = icmp ne i32 %162, 0
  br i1 %163, label %164, label %172

164:                                              ; preds = %160
  %165 = load i32, ptr %6, align 4, !tbaa !9
  %166 = and i32 %165, 16777216
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %164
  br label %171

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

170:                                              ; No predecessors!
  br label %171

171:                                              ; preds = %170, %168
  br label %172

172:                                              ; preds = %171, %160
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #13
  %173 = load ptr, ptr %7, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.ImGuiContext, ptr %173, i32 0, i32 14
  %175 = load i32, ptr %174, align 8, !tbaa !68
  store i32 %175, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #13
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.ImGuiWindow, ptr %176, i32 0, i32 68
  %178 = load i32, ptr %177, align 8, !tbaa !70
  %179 = load i32, ptr %11, align 4, !tbaa !9
  %180 = icmp ne i32 %178, %179
  %181 = zext i1 %180 to i8
  store i8 %181, ptr %12, align 1, !tbaa !69
  %182 = load ptr, ptr %7, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.ImGuiContext, ptr %182, i32 0, i32 27
  %184 = getelementptr inbounds %struct.ImVector.5, ptr %183, i32 0, i32 0
  %185 = load i32, ptr %184, align 8, !tbaa !88
  %186 = icmp eq i32 %185, 0
  br i1 %186, label %187, label %192

187:                                              ; preds = %172
  %188 = load ptr, ptr %7, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.ImGuiContext, ptr %188, i32 0, i32 19
  %190 = load i8, ptr %189, align 1, !tbaa !89, !range !65, !noundef !66
  %191 = trunc i8 %190 to i1
  br label %192

192:                                              ; preds = %187, %172
  %193 = phi i1 [ false, %172 ], [ %191, %187 ]
  %194 = load ptr, ptr %9, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.ImGuiWindow, ptr %194, i32 0, i32 36
  %196 = zext i1 %193 to i8
  store i8 %196, ptr %195, align 1, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #13
  %197 = load ptr, ptr %9, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.ImGuiWindow, ptr %197, i32 0, i32 68
  %199 = load i32, ptr %198, align 8, !tbaa !70
  %200 = load i32, ptr %11, align 4, !tbaa !9
  %201 = sub nsw i32 %200, 1
  %202 = icmp slt i32 %199, %201
  %203 = zext i1 %202 to i8
  store i8 %203, ptr %13, align 1, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #13
  %204 = load ptr, ptr %9, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.ImGuiWindow, ptr %204, i32 0, i32 49
  %206 = load i32, ptr %205, align 8, !tbaa !91
  %207 = icmp sgt i32 %206, 0
  %208 = zext i1 %207 to i8
  store i8 %208, ptr %14, align 1, !tbaa !69
  %209 = load i32, ptr %6, align 4, !tbaa !9
  %210 = and i32 %209, 67108864
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %212, label %246

212:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #13
  %213 = load ptr, ptr %7, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.ImGuiContext, ptr %213, i32 0, i32 78
  %215 = load ptr, ptr %7, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.ImGuiContext, ptr %215, i32 0, i32 79
  %217 = getelementptr inbounds %struct.ImVector.9, ptr %216, i32 0, i32 0
  %218 = load i32, ptr %217, align 8, !tbaa !92
  %219 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %214, i32 noundef %218)
  store ptr %219, ptr %15, align 8, !tbaa !5
  %220 = load ptr, ptr %9, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.ImGuiWindow, ptr %220, i32 0, i32 42
  %222 = load i32, ptr %221, align 8, !tbaa !93
  %223 = load ptr, ptr %15, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.ImGuiPopupData, ptr %223, i32 0, i32 0
  %225 = load i32, ptr %224, align 8, !tbaa !94
  %226 = icmp ne i32 %222, %225
  %227 = zext i1 %226 to i32
  %228 = load i8, ptr %13, align 1, !tbaa !69, !range !65, !noundef !66
  %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 %13, align 1, !tbaa !69
  %234 = load ptr, ptr %9, align 8, !tbaa !5
  %235 = load ptr, ptr %15, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.ImGuiPopupData, ptr %235, i32 0, i32 1
  %237 = load ptr, ptr %236, align 8, !tbaa !96
  %238 = icmp ne ptr %234, %237
  %239 = zext i1 %238 to i32
  %240 = load i8, ptr %13, align 1, !tbaa !69, !range !65, !noundef !66
  %241 = trunc i8 %240 to i1
  %242 = zext i1 %241 to i32
  %243 = or i32 %242, %239
  %244 = icmp ne i32 %243, 0
  %245 = zext i1 %244 to i8
  store i8 %245, ptr %13, align 1, !tbaa !69
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #13
  br label %246

246:                                              ; preds = %212, %192
  %247 = load i8, ptr %13, align 1, !tbaa !69, !range !65, !noundef !66
  %248 = trunc i8 %247 to i1
  br i1 %248, label %252, label %249

249:                                              ; preds = %246
  %250 = load i8, ptr %14, align 1, !tbaa !69, !range !65, !noundef !66
  %251 = trunc i8 %250 to i1
  br label %252

252:                                              ; preds = %249, %246
  %253 = phi i1 [ true, %246 ], [ %251, %249 ]
  %254 = load ptr, ptr %9, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.ImGuiWindow, ptr %254, i32 0, i32 34
  %256 = zext i1 %253 to i8
  store i8 %256, ptr %255, align 1, !tbaa !97
  %257 = load ptr, ptr %9, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.ImGuiWindow, ptr %257, i32 0, i32 34
  %259 = load i8, ptr %258, align 1, !tbaa !97, !range !65, !noundef !66
  %260 = trunc i8 %259 to i1
  br i1 %260, label %261, label %263

261:                                              ; preds = %252
  %262 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %262, i32 noundef 8, i1 noundef zeroext true)
  br label %263

263:                                              ; preds = %261, %252
  %264 = load i8, ptr %12, align 1, !tbaa !69, !range !65, !noundef !66
  %265 = trunc i8 %264 to i1
  br i1 %265, label %266, label %293

266:                                              ; preds = %263
  %267 = load ptr, ptr %9, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.ImGuiWindow, ptr %267, i32 0, i32 2
  %269 = load i32, ptr %268, align 4, !tbaa !98
  %270 = load ptr, ptr %9, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.ImGuiWindow, ptr %270, i32 0, i32 3
  store i32 %269, ptr %271, align 8, !tbaa !99
  %272 = load i32, ptr %6, align 4, !tbaa !9
  %273 = load ptr, ptr %9, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.ImGuiWindow, ptr %273, i32 0, i32 2
  store i32 %272, ptr %274, align 4, !tbaa !98
  %275 = load i32, ptr %11, align 4, !tbaa !9
  %276 = load ptr, ptr %9, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.ImGuiWindow, ptr %276, i32 0, i32 68
  store i32 %275, ptr %277, align 8, !tbaa !70
  %278 = load ptr, ptr %7, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.ImGuiContext, ptr %278, i32 0, i32 13
  %280 = load double, ptr %279, align 8, !tbaa !100
  %281 = fptrunc double %280 to float
  %282 = load ptr, ptr %9, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.ImGuiWindow, ptr %282, i32 0, i32 70
  store float %281, ptr %283, align 8, !tbaa !101
  %284 = load ptr, ptr %9, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.ImGuiWindow, ptr %284, i32 0, i32 40
  store i16 0, ptr %285, align 4, !tbaa !102
  %286 = load ptr, ptr %7, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.ImGuiContext, ptr %286, i32 0, i32 29
  %288 = load i32, ptr %287, align 8, !tbaa !103
  %289 = add nsw i32 %288, 1
  store i32 %289, ptr %287, align 8, !tbaa !103
  %290 = trunc i32 %288 to i16
  %291 = load ptr, ptr %9, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.ImGuiWindow, ptr %291, i32 0, i32 41
  store i16 %290, ptr %292, align 2, !tbaa !104
  br label %297

293:                                              ; preds = %263
  %294 = load ptr, ptr %9, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.ImGuiWindow, ptr %294, i32 0, i32 2
  %296 = load i32, ptr %295, align 4, !tbaa !98
  store i32 %296, ptr %6, align 4, !tbaa !9
  br label %297

297:                                              ; preds = %293, %266
  %298 = load ptr, ptr %9, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.ImGuiWindow, ptr %298, i32 0, i32 93
  %300 = load ptr, ptr %299, align 8, !tbaa !105
  %301 = icmp eq ptr %300, null
  br i1 %301, label %307, label %302

302:                                              ; preds = %297
  %303 = load ptr, ptr %9, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.ImGuiWindow, ptr %303, i32 0, i32 94
  %305 = load ptr, ptr %304, align 8, !tbaa !106
  %306 = icmp eq ptr %305, null
  br label %307

307:                                              ; preds = %302, %297
  %308 = phi i1 [ true, %297 ], [ %306, %302 ]
  br i1 %308, label %309, label %310

309:                                              ; preds = %307
  br label %312

310:                                              ; preds = %307
  call void @__assert_fail(ptr noundef @.str.104, ptr noundef @.str.3, i32 noundef 5889, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

311:                                              ; No predecessors!
  br label %312

312:                                              ; preds = %311, %309
  %313 = load ptr, ptr %7, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.ImGuiContext, ptr %313, i32 0, i32 72
  %315 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %314, i32 0, i32 0
  %316 = load i32, ptr %315, align 8, !tbaa !107
  %317 = and i32 %316, 512
  %318 = icmp ne i32 %317, 0
  br i1 %318, label %319, label %329

319:                                              ; preds = %312
  %320 = load ptr, ptr %9, align 8, !tbaa !5
  %321 = load ptr, ptr %7, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.ImGuiContext, ptr %321, i32 0, i32 72
  %323 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %322, i32 0, i32 17
  %324 = load i32, ptr %323, align 8, !tbaa !108
  %325 = load ptr, ptr %7, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.ImGuiContext, ptr %325, i32 0, i32 72
  %327 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %326, i32 0, i32 4
  %328 = load i32, ptr %327, align 8, !tbaa !109
  call void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef %320, i32 noundef %324, i32 noundef %328)
  br label %329

329:                                              ; preds = %319, %312
  %330 = load i8, ptr %12, align 1, !tbaa !69, !range !65, !noundef !66
  %331 = trunc i8 %330 to i1
  br i1 %331, label %332, label %385

332:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #13
  %333 = load ptr, ptr %9, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.ImGuiWindow, ptr %333, i32 0, i32 95
  %335 = load i32, ptr %334, align 8, !tbaa !110
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %342, label %337

337:                                              ; preds = %332
  %338 = load ptr, ptr %9, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.ImGuiWindow, ptr %338, i32 0, i32 93
  %340 = load ptr, ptr %339, align 8, !tbaa !105
  %341 = icmp ne ptr %340, null
  br label %342

342:                                              ; preds = %337, %332
  %343 = phi i1 [ true, %332 ], [ %341, %337 ]
  %344 = zext i1 %343 to i8
  store i8 %344, ptr %16, align 1, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #13
  %345 = load i8, ptr %16, align 1, !tbaa !69, !range !65, !noundef !66
  %346 = trunc i8 %345 to i1
  br i1 %346, label %350, label %347

347:                                              ; preds = %342
  %348 = load ptr, ptr %9, align 8, !tbaa !5
  %349 = call noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef %348)
  br label %350

350:                                              ; preds = %347, %342
  %351 = phi i1 [ false, %342 ], [ %349, %347 ]
  %352 = zext i1 %351 to i8
  store i8 %352, ptr %17, align 1, !tbaa !69
  %353 = load i8, ptr %16, align 1, !tbaa !69, !range !65, !noundef !66
  %354 = trunc i8 %353 to i1
  br i1 %354, label %358, label %355

355:                                              ; preds = %350
  %356 = load i8, ptr %17, align 1, !tbaa !69, !range !65, !noundef !66
  %357 = trunc i8 %356 to i1
  br i1 %357, label %358, label %384

358:                                              ; preds = %355, %350
  %359 = load ptr, ptr %9, align 8, !tbaa !5
  %360 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5ImGui11BeginDockedEP11ImGuiWindowPb(ptr noundef %359, ptr noundef %360)
  %361 = load ptr, ptr %9, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.ImGuiWindow, ptr %361, i32 0, i32 2
  %363 = load i32, ptr %362, align 4, !tbaa !98
  store i32 %363, ptr %6, align 4, !tbaa !9
  %364 = load ptr, ptr %9, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.ImGuiWindow, ptr %364, i32 0, i32 99
  %366 = load i8, ptr %365, align 2
  %367 = and i8 %366, 1
  %368 = trunc i8 %367 to i1
  br i1 %368, label %369, label %378

369:                                              ; preds = %358
  %370 = load ptr, ptr %9, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.ImGuiWindow, ptr %370, i32 0, i32 93
  %372 = load ptr, ptr %371, align 8, !tbaa !105
  %373 = icmp ne ptr %372, null
  br i1 %373, label %374, label %375

374:                                              ; preds = %369
  br label %377

375:                                              ; preds = %369
  call void @__assert_fail(ptr noundef @.str.105, ptr noundef @.str.3, i32 noundef 5901, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

376:                                              ; No predecessors!
  br label %377

377:                                              ; preds = %376, %374
  br label %378

378:                                              ; preds = %377, %358
  %379 = load ptr, ptr %7, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.ImGuiContext, ptr %379, i32 0, i32 72
  %381 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %380, i32 0, i32 0
  %382 = load i32, ptr %381, align 8, !tbaa !107
  %383 = and i32 %382, -17
  store i32 %383, ptr %381, align 8, !tbaa !107
  br label %384

384:                                              ; preds = %378, %355
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #13
  br label %385

385:                                              ; preds = %384, %329
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #13
  %386 = load ptr, ptr %9, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.ImGuiWindow, ptr %386, i32 0, i32 99
  %388 = load i8, ptr %387, align 2
  %389 = and i8 %388, 1
  %390 = trunc i8 %389 to i1
  br i1 %390, label %391, label %397

391:                                              ; preds = %385
  %392 = load ptr, ptr %9, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.ImGuiWindow, ptr %392, i32 0, i32 93
  %394 = load ptr, ptr %393, align 8, !tbaa !105
  %395 = getelementptr inbounds %struct.ImGuiDockNode, ptr %394, i32 0, i32 15
  %396 = load ptr, ptr %395, align 8, !tbaa !111
  br label %409

397:                                              ; preds = %385
  %398 = load ptr, ptr %7, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.ImGuiContext, ptr %398, i32 0, i32 27
  %400 = call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %399)
  br i1 %400, label %401, label %402

401:                                              ; preds = %397
  br label %407

402:                                              ; preds = %397
  %403 = load ptr, ptr %7, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.ImGuiContext, ptr %403, i32 0, i32 27
  %405 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %404)
  %406 = load ptr, ptr %405, align 8, !tbaa !5
  br label %407

407:                                              ; preds = %402, %401
  %408 = phi ptr [ null, %401 ], [ %406, %402 ]
  br label %409

409:                                              ; preds = %407, %391
  %410 = phi ptr [ %396, %391 ], [ %408, %407 ]
  store ptr %410, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  %411 = load i8, ptr %12, align 1, !tbaa !69, !range !65, !noundef !66
  %412 = trunc i8 %411 to i1
  br i1 %412, label %413, label %422

413:                                              ; preds = %409
  %414 = load i32, ptr %6, align 4, !tbaa !9
  %415 = and i32 %414, 83886080
  %416 = icmp ne i32 %415, 0
  br i1 %416, label %417, label %419

417:                                              ; preds = %413
  %418 = load ptr, ptr %18, align 8, !tbaa !5
  br label %420

419:                                              ; preds = %413
  br label %420

420:                                              ; preds = %419, %417
  %421 = phi ptr [ %418, %417 ], [ null, %419 ]
  br label %426

422:                                              ; preds = %409
  %423 = load ptr, ptr %9, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.ImGuiWindow, ptr %423, i32 0, i32 80
  %425 = load ptr, ptr %424, align 8, !tbaa !115
  br label %426

426:                                              ; preds = %422, %420
  %427 = phi ptr [ %421, %420 ], [ %425, %422 ]
  store ptr %427, ptr %19, align 8, !tbaa !5
  %428 = load ptr, ptr %19, align 8, !tbaa !5
  %429 = icmp ne ptr %428, null
  br i1 %429, label %435, label %430

430:                                              ; preds = %426
  %431 = load i32, ptr %6, align 4, !tbaa !9
  %432 = and i32 %431, 16777216
  %433 = icmp ne i32 %432, 0
  %434 = xor i1 %433, true
  br label %435

435:                                              ; preds = %430, %426
  %436 = phi i1 [ true, %426 ], [ %434, %430 ]
  br i1 %436, label %437, label %438

437:                                              ; preds = %435
  br label %440

438:                                              ; preds = %435
  call void @__assert_fail(ptr noundef @.str.106, ptr noundef @.str.3, i32 noundef 5911, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

439:                                              ; No predecessors!
  br label %440

440:                                              ; preds = %439, %437
  %441 = load ptr, ptr %9, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.ImGuiWindow, ptr %441, i32 0, i32 57
  %443 = getelementptr inbounds %struct.ImVector.17, ptr %442, i32 0, i32 0
  %444 = load i32, ptr %443, align 8, !tbaa !116
  %445 = icmp eq i32 %444, 0
  br i1 %445, label %446, label %451

446:                                              ; preds = %440
  %447 = load ptr, ptr %9, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.ImGuiWindow, ptr %447, i32 0, i32 57
  %449 = load ptr, ptr %9, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.ImGuiWindow, ptr %449, i32 0, i32 1
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %448, ptr noundef nonnull align 4 dereferenceable(4) %450)
  br label %451

451:                                              ; preds = %446, %440
  %452 = load ptr, ptr %7, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.ImGuiContext, ptr %452, i32 0, i32 27
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %453, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %454 = load ptr, ptr %7, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.ImGuiContext, ptr %454, i32 0, i32 31
  store ptr null, ptr %455, align 8, !tbaa !117
  %456 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGuiL35ErrorCheckBeginEndCompareStacksSizeEP11ImGuiWindowb(ptr noundef %456, i1 noundef zeroext true)
  %457 = load i32, ptr %6, align 4, !tbaa !9
  %458 = and i32 %457, 67108864
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %460, label %479

460:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  %461 = load ptr, ptr %7, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.ImGuiContext, ptr %461, i32 0, i32 78
  %463 = load ptr, ptr %7, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.ImGuiContext, ptr %463, i32 0, i32 79
  %465 = getelementptr inbounds %struct.ImVector.9, ptr %464, i32 0, i32 0
  %466 = load i32, ptr %465, align 8, !tbaa !92
  %467 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %462, i32 noundef %466)
  store ptr %467, ptr %20, align 8, !tbaa !5
  %468 = load ptr, ptr %9, align 8, !tbaa !5
  %469 = load ptr, ptr %20, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.ImGuiPopupData, ptr %469, i32 0, i32 1
  store ptr %468, ptr %470, align 8, !tbaa !96
  %471 = load ptr, ptr %7, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.ImGuiContext, ptr %471, i32 0, i32 79
  %473 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %472, ptr noundef nonnull align 8 dereferenceable(48) %473)
  %474 = load ptr, ptr %20, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.ImGuiPopupData, ptr %474, i32 0, i32 0
  %476 = load i32, ptr %475, align 8, !tbaa !94
  %477 = load ptr, ptr %9, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.ImGuiWindow, ptr %477, i32 0, i32 42
  store i32 %476, ptr %478, align 8, !tbaa !93
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %479

479:                                              ; preds = %460, %451
  %480 = load i8, ptr %14, align 1, !tbaa !69, !range !65, !noundef !66
  %481 = trunc i8 %480 to i1
  br i1 %481, label %482, label %490

482:                                              ; preds = %479
  %483 = load i32, ptr %6, align 4, !tbaa !9
  %484 = and i32 %483, 16777216
  %485 = icmp ne i32 %484, 0
  br i1 %485, label %490, label %486

486:                                              ; preds = %482
  %487 = load ptr, ptr %9, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.ImGuiWindow, ptr %487, i32 0, i32 86
  %489 = getelementptr inbounds [2 x i32], ptr %488, i64 0, i64 0
  store i32 0, ptr %489, align 8, !tbaa !9
  br label %490

490:                                              ; preds = %486, %482, %479
  %491 = load i8, ptr %12, align 1, !tbaa !69, !range !65, !noundef !66
  %492 = trunc i8 %491 to i1
  br i1 %492, label %493, label %497

493:                                              ; preds = %490
  %494 = load ptr, ptr %9, align 8, !tbaa !5
  %495 = load i32, ptr %6, align 4, !tbaa !9
  %496 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %494, i32 noundef %495, ptr noundef %496)
  br label %497

497:                                              ; preds = %493, %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  store i8 0, ptr %21, align 1, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #13
  store i8 0, ptr %22, align 1, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  store i8 0, ptr %23, align 1, !tbaa !69
  %498 = load ptr, ptr %7, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.ImGuiContext, ptr %498, i32 0, i32 72
  %500 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %499, i32 0, i32 0
  %501 = load i32, ptr %500, align 8, !tbaa !107
  %502 = and i32 %501, 1
  %503 = icmp ne i32 %502, 0
  br i1 %503, label %504, label %548

504:                                              ; preds = %497
  %505 = load ptr, ptr %9, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.ImGuiWindow, ptr %505, i32 0, i32 50
  %507 = load i32, ptr %506, align 4, !tbaa !118
  %508 = load ptr, ptr %7, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.ImGuiContext, ptr %508, i32 0, i32 72
  %510 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %509, i32 0, i32 1
  %511 = load i32, ptr %510, align 4, !tbaa !119
  %512 = and i32 %507, %511
  %513 = icmp ne i32 %512, 0
  %514 = zext i1 %513 to i8
  store i8 %514, ptr %21, align 1, !tbaa !69
  %515 = load i8, ptr %21, align 1, !tbaa !69, !range !65, !noundef !66
  %516 = trunc i8 %515 to i1
  br i1 %516, label %517, label %538

517:                                              ; preds = %504
  %518 = load ptr, ptr %7, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ImGuiContext, ptr %518, i32 0, i32 72
  %520 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %519, i32 0, i32 6
  %521 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %520)
  %522 = fcmp ogt float %521, 0x3EE4F8B580000000
  br i1 %522, label %523, label %538

523:                                              ; preds = %517
  %524 = load ptr, ptr %7, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.ImGuiContext, ptr %524, i32 0, i32 72
  %526 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %525, i32 0, i32 5
  %527 = load ptr, ptr %9, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.ImGuiWindow, ptr %527, i32 0, i32 54
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %528, ptr align 4 %526, i64 8, i1 false), !tbaa.struct !120
  %529 = load ptr, ptr %7, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.ImGuiContext, ptr %529, i32 0, i32 72
  %531 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %530, i32 0, i32 6
  %532 = load ptr, ptr %9, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.ImGuiWindow, ptr %532, i32 0, i32 55
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %533, ptr align 4 %531, i64 8, i1 false), !tbaa.struct !120
  %534 = load ptr, ptr %9, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.ImGuiWindow, ptr %534, i32 0, i32 50
  %536 = load i32, ptr %535, align 4, !tbaa !118
  %537 = and i32 %536, -15
  store i32 %537, ptr %535, align 4, !tbaa !118
  br label %547

538:                                              ; preds = %517, %504
  %539 = load ptr, ptr %9, align 8, !tbaa !5
  %540 = load ptr, ptr %7, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.ImGuiContext, ptr %540, i32 0, i32 72
  %542 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %541, i32 0, i32 5
  %543 = load ptr, ptr %7, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.ImGuiContext, ptr %543, i32 0, i32 72
  %545 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %544, i32 0, i32 1
  %546 = load i32, ptr %545, align 4, !tbaa !119
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %539, ptr noundef nonnull align 4 dereferenceable(8) %542, i32 noundef %546)
  br label %547

547:                                              ; preds = %538, %523
  br label %548

548:                                              ; preds = %547, %497
  %549 = load ptr, ptr %7, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ImGuiContext, ptr %549, i32 0, i32 72
  %551 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %550, i32 0, i32 0
  %552 = load i32, ptr %551, align 8, !tbaa !107
  %553 = and i32 %552, 2
  %554 = icmp ne i32 %553, 0
  br i1 %554, label %555, label %602

555:                                              ; preds = %548
  %556 = load ptr, ptr %9, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.ImGuiWindow, ptr %556, i32 0, i32 51
  %558 = load i32, ptr %557, align 8, !tbaa !122
  %559 = load ptr, ptr %7, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.ImGuiContext, ptr %559, i32 0, i32 72
  %561 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %560, i32 0, i32 2
  %562 = load i32, ptr %561, align 8, !tbaa !123
  %563 = and i32 %558, %562
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %565, label %572

565:                                              ; preds = %555
  %566 = load ptr, ptr %7, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.ImGuiContext, ptr %566, i32 0, i32 72
  %568 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %567, i32 0, i32 7
  %569 = getelementptr inbounds %struct.ImVec2, ptr %568, i32 0, i32 0
  %570 = load float, ptr %569, align 4, !tbaa !124
  %571 = fcmp ogt float %570, 0.000000e+00
  br label %572

572:                                              ; preds = %565, %555
  %573 = phi i1 [ false, %555 ], [ %571, %565 ]
  %574 = zext i1 %573 to i8
  store i8 %574, ptr %22, align 1, !tbaa !69
  %575 = load ptr, ptr %9, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiWindow, ptr %575, i32 0, i32 51
  %577 = load i32, ptr %576, align 8, !tbaa !122
  %578 = load ptr, ptr %7, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.ImGuiContext, ptr %578, i32 0, i32 72
  %580 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %579, i32 0, i32 2
  %581 = load i32, ptr %580, align 8, !tbaa !123
  %582 = and i32 %577, %581
  %583 = icmp ne i32 %582, 0
  br i1 %583, label %584, label %591

584:                                              ; preds = %572
  %585 = load ptr, ptr %7, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.ImGuiContext, ptr %585, i32 0, i32 72
  %587 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %586, i32 0, i32 7
  %588 = getelementptr inbounds %struct.ImVec2, ptr %587, i32 0, i32 1
  %589 = load float, ptr %588, align 4, !tbaa !125
  %590 = fcmp ogt float %589, 0.000000e+00
  br label %591

591:                                              ; preds = %584, %572
  %592 = phi i1 [ false, %572 ], [ %590, %584 ]
  %593 = zext i1 %592 to i8
  store i8 %593, ptr %23, align 1, !tbaa !69
  %594 = load ptr, ptr %9, align 8, !tbaa !5
  %595 = load ptr, ptr %7, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.ImGuiContext, ptr %595, i32 0, i32 72
  %597 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %596, i32 0, i32 7
  %598 = load ptr, ptr %7, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.ImGuiContext, ptr %598, i32 0, i32 72
  %600 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %599, i32 0, i32 2
  %601 = load i32, ptr %600, align 8, !tbaa !123
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %594, ptr noundef nonnull align 4 dereferenceable(8) %597, i32 noundef %601)
  br label %602

602:                                              ; preds = %591, %548
  %603 = load ptr, ptr %7, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.ImGuiContext, ptr %603, i32 0, i32 72
  %605 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %604, i32 0, i32 0
  %606 = load i32, ptr %605, align 8, !tbaa !107
  %607 = and i32 %606, 128
  %608 = icmp ne i32 %607, 0
  br i1 %608, label %609, label %648

609:                                              ; preds = %602
  %610 = load ptr, ptr %7, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.ImGuiContext, ptr %610, i32 0, i32 72
  %612 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %611, i32 0, i32 9
  %613 = getelementptr inbounds %struct.ImVec2, ptr %612, i32 0, i32 0
  %614 = load float, ptr %613, align 4, !tbaa !126
  %615 = fcmp oge float %614, 0.000000e+00
  br i1 %615, label %616, label %628

616:                                              ; preds = %609
  %617 = load ptr, ptr %7, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.ImGuiContext, ptr %617, i32 0, i32 72
  %619 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %618, i32 0, i32 9
  %620 = getelementptr inbounds %struct.ImVec2, ptr %619, i32 0, i32 0
  %621 = load float, ptr %620, align 4, !tbaa !126
  %622 = load ptr, ptr %9, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.ImGuiWindow, ptr %622, i32 0, i32 22
  %624 = getelementptr inbounds %struct.ImVec2, ptr %623, i32 0, i32 0
  store float %621, ptr %624, align 4, !tbaa !127
  %625 = load ptr, ptr %9, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImGuiWindow, ptr %625, i32 0, i32 23
  %627 = getelementptr inbounds %struct.ImVec2, ptr %626, i32 0, i32 0
  store float 0.000000e+00, ptr %627, align 4, !tbaa !128
  br label %628

628:                                              ; preds = %616, %609
  %629 = load ptr, ptr %7, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.ImGuiContext, ptr %629, i32 0, i32 72
  %631 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %630, i32 0, i32 9
  %632 = getelementptr inbounds %struct.ImVec2, ptr %631, i32 0, i32 1
  %633 = load float, ptr %632, align 4, !tbaa !129
  %634 = fcmp oge float %633, 0.000000e+00
  br i1 %634, label %635, label %647

635:                                              ; preds = %628
  %636 = load ptr, ptr %7, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.ImGuiContext, ptr %636, i32 0, i32 72
  %638 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %637, i32 0, i32 9
  %639 = getelementptr inbounds %struct.ImVec2, ptr %638, i32 0, i32 1
  %640 = load float, ptr %639, align 4, !tbaa !129
  %641 = load ptr, ptr %9, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.ImGuiWindow, ptr %641, i32 0, i32 22
  %643 = getelementptr inbounds %struct.ImVec2, ptr %642, i32 0, i32 1
  store float %640, ptr %643, align 4, !tbaa !130
  %644 = load ptr, ptr %9, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.ImGuiWindow, ptr %644, i32 0, i32 23
  %646 = getelementptr inbounds %struct.ImVec2, ptr %645, i32 0, i32 1
  store float 0.000000e+00, ptr %646, align 4, !tbaa !131
  br label %647

647:                                              ; preds = %635, %628
  br label %648

648:                                              ; preds = %647, %602
  %649 = load ptr, ptr %7, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiContext, ptr %649, i32 0, i32 72
  %651 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %650, i32 0, i32 0
  %652 = load i32, ptr %651, align 8, !tbaa !107
  %653 = and i32 %652, 4
  %654 = icmp ne i32 %653, 0
  br i1 %654, label %655, label %661

655:                                              ; preds = %648
  %656 = load ptr, ptr %7, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.ImGuiContext, ptr %656, i32 0, i32 72
  %658 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %657, i32 0, i32 8
  %659 = load ptr, ptr %9, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.ImGuiWindow, ptr %659, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %660, ptr align 4 %658, i64 8, i1 false), !tbaa.struct !120
  br label %668

661:                                              ; preds = %648
  %662 = load i8, ptr %12, align 1, !tbaa !69, !range !65, !noundef !66
  %663 = trunc i8 %662 to i1
  br i1 %663, label %664, label %667

664:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %24, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %665 = load ptr, ptr %9, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.ImGuiWindow, ptr %665, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %666, ptr align 4 %24, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #13
  br label %667

667:                                              ; preds = %664, %661
  br label %668

668:                                              ; preds = %667, %655
  %669 = load ptr, ptr %7, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.ImGuiContext, ptr %669, i32 0, i32 72
  %671 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %670, i32 0, i32 0
  %672 = load i32, ptr %671, align 8, !tbaa !107
  %673 = and i32 %672, 1024
  %674 = icmp ne i32 %673, 0
  br i1 %674, label %675, label %681

675:                                              ; preds = %668
  %676 = load ptr, ptr %7, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.ImGuiContext, ptr %676, i32 0, i32 72
  %678 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %677, i32 0, i32 18
  %679 = load ptr, ptr %9, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.ImGuiWindow, ptr %679, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %680, ptr align 4 %678, i64 26, i1 false), !tbaa.struct !132
  br label %681

681:                                              ; preds = %675, %668
  %682 = load ptr, ptr %7, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.ImGuiContext, ptr %682, i32 0, i32 72
  %684 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %683, i32 0, i32 0
  %685 = load i32, ptr %684, align 8, !tbaa !107
  %686 = and i32 %685, 8
  %687 = icmp ne i32 %686, 0
  br i1 %687, label %688, label %699

688:                                              ; preds = %681
  %689 = load ptr, ptr %9, align 8, !tbaa !5
  %690 = load ptr, ptr %7, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.ImGuiContext, ptr %690, i32 0, i32 72
  %692 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %691, i32 0, i32 11
  %693 = load i8, ptr %692, align 1, !tbaa !133, !range !65, !noundef !66
  %694 = trunc i8 %693 to i1
  %695 = load ptr, ptr %7, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.ImGuiContext, ptr %695, i32 0, i32 72
  %697 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %696, i32 0, i32 3
  %698 = load i32, ptr %697, align 4, !tbaa !134
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %689, i1 noundef zeroext %694, i32 noundef %698)
  br label %699

699:                                              ; preds = %688, %681
  %700 = load ptr, ptr %7, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.ImGuiContext, ptr %700, i32 0, i32 72
  %702 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %701, i32 0, i32 0
  %703 = load i32, ptr %702, align 8, !tbaa !107
  %704 = and i32 %703, 32
  %705 = icmp ne i32 %704, 0
  br i1 %705, label %706, label %708

706:                                              ; preds = %699
  %707 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %707)
  br label %708

708:                                              ; preds = %706, %699
  %709 = load ptr, ptr %9, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.ImGuiWindow, ptr %709, i32 0, i32 34
  %711 = load i8, ptr %710, align 1, !tbaa !97, !range !65, !noundef !66
  %712 = trunc i8 %711 to i1
  br i1 %712, label %713, label %715

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

715:                                              ; preds = %713, %708
  %716 = load i8, ptr %12, align 1, !tbaa !69, !range !65, !noundef !66
  %717 = trunc i8 %716 to i1
  br i1 %717, label %718, label %3368

718:                                              ; preds = %715
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #13
  %719 = load i32, ptr %6, align 4, !tbaa !9
  %720 = and i32 %719, 16777216
  %721 = icmp ne i32 %720, 0
  br i1 %721, label %722, label %726

722:                                              ; preds = %718
  %723 = load i32, ptr %6, align 4, !tbaa !9
  %724 = and i32 %723, 33554432
  %725 = icmp ne i32 %724, 0
  br label %726

726:                                              ; preds = %722, %718
  %727 = phi i1 [ false, %718 ], [ %725, %722 ]
  %728 = zext i1 %727 to i8
  store i8 %728, ptr %25, align 1, !tbaa !69
  %729 = load ptr, ptr %9, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.ImGuiWindow, ptr %729, i32 0, i32 28
  store i8 1, ptr %730, align 1, !tbaa !135
  %731 = load ptr, ptr %5, align 8, !tbaa !5
  %732 = icmp ne ptr %731, null
  %733 = load ptr, ptr %9, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.ImGuiWindow, ptr %733, i32 0, i32 37
  %735 = zext i1 %732 to i8
  store i8 %735, ptr %734, align 8, !tbaa !136
  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)
  %736 = load ptr, ptr %9, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ImGuiWindow, ptr %736, i32 0, i32 64
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %737, ptr align 4 %26, i64 16, i1 false), !tbaa.struct !137
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #13
  %738 = load ptr, ptr %9, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.ImGuiWindow, ptr %738, i32 0, i32 57
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %739, i32 noundef 1)
  %740 = load ptr, ptr %9, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.ImGuiWindow, ptr %740, i32 0, i32 78
  %742 = load ptr, ptr %741, align 8, !tbaa !138
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(224) %742)
  %743 = load ptr, ptr %9, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.ImGuiWindow, ptr %743, i32 0, i32 88
  %745 = load i8, ptr %744, align 8, !tbaa !139, !range !65, !noundef !66
  %746 = trunc i8 %745 to i1
  br i1 %746, label %747, label %749

747:                                              ; preds = %726
  %748 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %748)
  br label %749

749:                                              ; preds = %747, %726
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #13
  store i8 0, ptr %28, align 1, !tbaa !69
  %750 = load ptr, ptr %9, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.ImGuiWindow, ptr %750, i32 0, i32 5
  %752 = load ptr, ptr %751, align 8, !tbaa !140
  %753 = icmp ne ptr %752, null
  br i1 %753, label %754, label %762

754:                                              ; preds = %749
  %755 = load ptr, ptr %9, align 8, !tbaa !5
  %756 = getelementptr inbounds %struct.ImGuiWindow, ptr %755, i32 0, i32 5
  %757 = load ptr, ptr %756, align 8, !tbaa !140
  %758 = getelementptr inbounds %struct.ImGuiViewportP, ptr %757, i32 0, i32 11
  %759 = load ptr, ptr %758, align 8, !tbaa !141
  %760 = load ptr, ptr %9, align 8, !tbaa !5
  %761 = icmp eq ptr %759, %760
  br i1 %761, label %768, label %762

762:                                              ; preds = %754, %749
  %763 = load ptr, ptr %9, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.ImGuiWindow, ptr %763, i32 0, i32 99
  %765 = load i8, ptr %764, align 2
  %766 = and i8 %765, 1
  %767 = trunc i8 %766 to i1
  br i1 %767, label %768, label %769

768:                                              ; preds = %762, %754
  store i8 1, ptr %28, align 1, !tbaa !69
  br label %782

769:                                              ; preds = %762
  %770 = load ptr, ptr %7, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.ImGuiContext, ptr %770, i32 0, i32 133
  %772 = load ptr, ptr %771, align 8, !tbaa !146
  %773 = icmp ne ptr %772, null
  br i1 %773, label %774, label %781

774:                                              ; preds = %769
  %775 = load ptr, ptr %9, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.ImGuiWindow, ptr %775, i32 0, i32 2
  %777 = load i32, ptr %776, align 4, !tbaa !98
  %778 = and i32 %777, 524288
  %779 = icmp eq i32 %778, 0
  br i1 %779, label %780, label %781

780:                                              ; preds = %774
  store i8 1, ptr %28, align 1, !tbaa !69
  br label %781

781:                                              ; preds = %780, %774, %769
  br label %782

782:                                              ; preds = %781, %768
  %783 = load i8, ptr %28, align 1, !tbaa !69, !range !65, !noundef !66
  %784 = trunc i8 %783 to i1
  br i1 %784, label %785, label %811

785:                                              ; preds = %782
  %786 = load i8, ptr %10, align 1, !tbaa !69, !range !65, !noundef !66
  %787 = trunc i8 %786 to i1
  br i1 %787, label %811, label %788

788:                                              ; preds = %785
  %789 = load ptr, ptr %4, align 8, !tbaa !5
  %790 = load ptr, ptr %9, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.ImGuiWindow, ptr %790, i32 0, i32 0
  %792 = load ptr, ptr %791, align 8, !tbaa !147
  %793 = call i32 @strcmp(ptr noundef %789, ptr noundef %792) #15
  %794 = icmp ne i32 %793, 0
  br i1 %794, label %795, label %811

795:                                              ; preds = %788
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #13
  %796 = load ptr, ptr %9, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.ImGuiWindow, ptr %796, i32 0, i32 17
  %798 = load i32, ptr %797, align 8, !tbaa !148
  %799 = sext i32 %798 to i64
  store i64 %799, ptr %29, align 8, !tbaa !149
  %800 = load ptr, ptr %9, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.ImGuiWindow, ptr %800, i32 0, i32 0
  %802 = load ptr, ptr %801, align 8, !tbaa !147
  %803 = load ptr, ptr %4, align 8, !tbaa !5
  %804 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %802, ptr noundef %29, ptr noundef %803)
  %805 = load ptr, ptr %9, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.ImGuiWindow, ptr %805, i32 0, i32 0
  store ptr %804, ptr %806, align 8, !tbaa !147
  %807 = load i64, ptr %29, align 8, !tbaa !149
  %808 = trunc i64 %807 to i32
  %809 = load ptr, ptr %9, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.ImGuiWindow, ptr %809, i32 0, i32 17
  store i32 %808, ptr %810, align 8, !tbaa !148
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  br label %811

811:                                              ; preds = %795, %788, %785, %782
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #13
  %812 = load ptr, ptr %9, align 8, !tbaa !5
  %813 = call <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef %812)
  store <2 x float> %813, ptr %30, align 4
  %814 = load ptr, ptr %9, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.ImGuiWindow, ptr %814, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %815, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  %816 = load ptr, ptr %9, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.ImGuiWindow, ptr %816, i32 0, i32 48
  %818 = load i32, ptr %817, align 4, !tbaa !151
  %819 = icmp sgt i32 %818, 0
  br i1 %819, label %820, label %825

820:                                              ; preds = %811
  %821 = load ptr, ptr %9, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.ImGuiWindow, ptr %821, i32 0, i32 48
  %823 = load i32, ptr %822, align 4, !tbaa !151
  %824 = add nsw i32 %823, -1
  store i32 %824, ptr %822, align 4, !tbaa !151
  br label %825

825:                                              ; preds = %820, %811
  %826 = load ptr, ptr %9, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.ImGuiWindow, ptr %826, i32 0, i32 49
  %828 = load i32, ptr %827, align 8, !tbaa !91
  %829 = icmp sgt i32 %828, 0
  br i1 %829, label %830, label %835

830:                                              ; preds = %825
  %831 = load ptr, ptr %9, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImGuiWindow, ptr %831, i32 0, i32 49
  %833 = load i32, ptr %832, align 8, !tbaa !91
  %834 = add nsw i32 %833, -1
  store i32 %834, ptr %832, align 8, !tbaa !91
  br label %835

835:                                              ; preds = %830, %825
  %836 = load i8, ptr %10, align 1, !tbaa !69, !range !65, !noundef !66
  %837 = trunc i8 %836 to i1
  br i1 %837, label %838, label %847

838:                                              ; preds = %835
  %839 = load i8, ptr %22, align 1, !tbaa !69, !range !65, !noundef !66
  %840 = trunc i8 %839 to i1
  br i1 %840, label %841, label %844

841:                                              ; preds = %838
  %842 = load i8, ptr %23, align 1, !tbaa !69, !range !65, !noundef !66
  %843 = trunc i8 %842 to i1
  br i1 %843, label %847, label %844

844:                                              ; preds = %841, %838
  %845 = load ptr, ptr %9, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiWindow, ptr %845, i32 0, i32 49
  store i32 1, ptr %846, align 8, !tbaa !91
  br label %847

847:                                              ; preds = %844, %841, %835
  %848 = load i8, ptr %13, align 1, !tbaa !69, !range !65, !noundef !66
  %849 = trunc i8 %848 to i1
  br i1 %849, label %850, label %884

850:                                              ; preds = %847
  %851 = load i32, ptr %6, align 4, !tbaa !9
  %852 = and i32 %851, 100663296
  %853 = icmp ne i32 %852, 0
  br i1 %853, label %854, label %884

854:                                              ; preds = %850
  %855 = load ptr, ptr %9, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.ImGuiWindow, ptr %855, i32 0, i32 49
  store i32 1, ptr %856, align 8, !tbaa !91
  %857 = load i32, ptr %6, align 4, !tbaa !9
  %858 = and i32 %857, 64
  %859 = icmp ne i32 %858, 0
  br i1 %859, label %860, label %883

860:                                              ; preds = %854
  %861 = load i8, ptr %22, align 1, !tbaa !69, !range !65, !noundef !66
  %862 = trunc i8 %861 to i1
  br i1 %862, label %870, label %863

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

870:                                              ; preds = %863, %860
  %871 = load i8, ptr %23, align 1, !tbaa !69, !range !65, !noundef !66
  %872 = trunc i8 %871 to i1
  br i1 %872, label %880, label %873

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

880:                                              ; preds = %873, %870
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %881 = load ptr, ptr %9, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.ImGuiWindow, ptr %881, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %882, ptr align 4 %31, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #13
  br label %883

883:                                              ; preds = %880, %854
  br label %884

884:                                              ; preds = %883, %850, %847
  %885 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGuiL26UpdateSelectWindowViewportEP11ImGuiWindow(ptr noundef %885)
  %886 = load ptr, ptr %9, align 8, !tbaa !5
  %887 = load ptr, ptr %9, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.ImGuiWindow, ptr %887, i32 0, i32 5
  %889 = load ptr, ptr %888, align 8, !tbaa !140
  call void @_ZN5ImGuiL18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %886, ptr noundef %889)
  %890 = load ptr, ptr %7, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.ImGuiContext, ptr %890, i32 0, i32 3
  %892 = getelementptr inbounds %struct.ImGuiIO, ptr %891, i32 0, i32 0
  %893 = load i32, ptr %892, align 8, !tbaa !156
  %894 = and i32 %893, 32768
  %895 = icmp ne i32 %894, 0
  br i1 %895, label %896, label %902

896:                                              ; preds = %884
  %897 = load ptr, ptr %9, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.ImGuiWindow, ptr %897, i32 0, i32 5
  %899 = load ptr, ptr %898, align 8, !tbaa !140
  %900 = getelementptr inbounds %struct.ImGuiViewport, ptr %899, i32 0, i32 6
  %901 = load float, ptr %900, align 8, !tbaa !157
  br label %903

902:                                              ; preds = %884
  br label %903

903:                                              ; preds = %902, %896
  %904 = phi float [ %901, %896 ], [ 1.000000e+00, %902 ]
  %905 = load ptr, ptr %9, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.ImGuiWindow, ptr %905, i32 0, i32 75
  store float %904, ptr %906, align 4, !tbaa !158
  %907 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %907)
  %908 = load ptr, ptr %9, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.ImGuiWindow, ptr %908, i32 0, i32 2
  %910 = load i32, ptr %909, align 4, !tbaa !98
  store i32 %910, ptr %6, align 4, !tbaa !9
  %911 = load i32, ptr %6, align 4, !tbaa !9
  %912 = and i32 %911, 16777216
  %913 = icmp ne i32 %912, 0
  br i1 %913, label %914, label %920

914:                                              ; preds = %903
  %915 = load ptr, ptr %8, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.ImGuiStyle, ptr %915, i32 0, i32 8
  %917 = load float, ptr %916, align 4, !tbaa !159
  %918 = load ptr, ptr %9, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.ImGuiWindow, ptr %918, i32 0, i32 16
  store float %917, ptr %919, align 4, !tbaa !160
  br label %940

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

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

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

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

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

940:                                              ; preds = %936, %914
  %941 = load ptr, ptr %9, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.ImGuiWindow, ptr %941, i32 0, i32 99
  %943 = load i8, ptr %942, align 2
  %944 = and i8 %943, 1
  %945 = trunc i8 %944 to i1
  br i1 %945, label %973, label %946

946:                                              ; preds = %940
  %947 = load i32, ptr %6, align 4, !tbaa !9
  %948 = and i32 %947, 16777216
  %949 = icmp ne i32 %948, 0
  br i1 %949, label %950, label %973

950:                                              ; preds = %946
  %951 = load i32, ptr %6, align 4, !tbaa !9
  %952 = and i32 %951, 67174400
  %953 = icmp ne i32 %952, 0
  br i1 %953, label %973, label %954

954:                                              ; preds = %950
  %955 = load ptr, ptr %9, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.ImGuiWindow, ptr %955, i32 0, i32 16
  %957 = load float, ptr %956, align 4, !tbaa !160
  %958 = fcmp oeq float %957, 0.000000e+00
  br i1 %958, label %959, label %973

959:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %960 = load i32, ptr %6, align 4, !tbaa !9
  %961 = and i32 %960, 1024
  %962 = icmp ne i32 %961, 0
  br i1 %962, label %963, label %968

963:                                              ; preds = %959
  %964 = load ptr, ptr %8, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.ImGuiStyle, ptr %964, i32 0, i32 1
  %966 = getelementptr inbounds %struct.ImVec2, ptr %965, i32 0, i32 1
  %967 = load float, ptr %966, align 4, !tbaa !163
  br label %969

968:                                              ; preds = %959
  br label %969

969:                                              ; preds = %968, %963
  %970 = phi float [ %967, %963 ], [ 0.000000e+00, %968 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef 0.000000e+00, float noundef %970)
  %971 = load ptr, ptr %9, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.ImGuiWindow, ptr %971, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %972, ptr align 4 %32, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  br label %978

973:                                              ; preds = %954, %950, %946, %940
  %974 = load ptr, ptr %8, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.ImGuiStyle, ptr %974, i32 0, i32 1
  %976 = load ptr, ptr %9, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.ImGuiWindow, ptr %976, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %977, ptr align 4 %975, i64 8, i1 false), !tbaa.struct !120
  br label %978

978:                                              ; preds = %973, %969
  %979 = load ptr, ptr %9, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.ImGuiWindow, ptr %979, i32 0, i32 14
  %981 = getelementptr inbounds %struct.ImVec2, ptr %980, i32 0, i32 0
  %982 = load float, ptr %981, align 8, !tbaa !164
  %983 = load ptr, ptr %8, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.ImGuiStyle, ptr %983, i32 0, i32 14
  %985 = getelementptr inbounds %struct.ImVec2, ptr %984, i32 0, i32 0
  %986 = load float, ptr %985, align 4, !tbaa !165
  %987 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %982, float noundef %986)
  %988 = load ptr, ptr %7, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.ImGuiContext, ptr %988, i32 0, i32 72
  %990 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %989, i32 0, i32 19
  %991 = getelementptr inbounds %struct.ImVec2, ptr %990, i32 0, i32 0
  %992 = load float, ptr %991, align 8, !tbaa !166
  %993 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %987, float noundef %992)
  %994 = load ptr, ptr %9, align 8, !tbaa !5
  %995 = getelementptr inbounds %struct.ImGuiWindow, ptr %994, i32 0, i32 58
  %996 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %995, i32 0, i32 24
  %997 = getelementptr inbounds %struct.ImVec2, ptr %996, i32 0, i32 0
  store float %993, ptr %997, align 4, !tbaa !167
  %998 = load ptr, ptr %7, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.ImGuiContext, ptr %998, i32 0, i32 72
  %1000 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %999, i32 0, i32 19
  %1001 = getelementptr inbounds %struct.ImVec2, ptr %1000, i32 0, i32 1
  %1002 = load float, ptr %1001, align 4, !tbaa !168
  %1003 = load ptr, ptr %9, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.ImGuiWindow, ptr %1003, i32 0, i32 58
  %1005 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1004, i32 0, i32 24
  %1006 = getelementptr inbounds %struct.ImVec2, ptr %1005, i32 0, i32 1
  store float %1002, ptr %1006, align 4, !tbaa !169
  %1007 = load i32, ptr %6, align 4, !tbaa !9
  %1008 = and i32 %1007, 1
  %1009 = icmp ne i32 %1008, 0
  br i1 %1009, label %1073, label %1010

1010:                                             ; preds = %978
  %1011 = load i32, ptr %6, align 4, !tbaa !9
  %1012 = and i32 %1011, 32
  %1013 = icmp ne i32 %1012, 0
  br i1 %1013, label %1073, label %1014

1014:                                             ; preds = %1010
  %1015 = load ptr, ptr %9, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.ImGuiWindow, ptr %1015, i32 0, i32 99
  %1017 = load i8, ptr %1016, align 2
  %1018 = and i8 %1017, 1
  %1019 = trunc i8 %1018 to i1
  br i1 %1019, label %1073, label %1020

1020:                                             ; preds = %1014
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #13
  %1021 = load ptr, ptr %9, align 8, !tbaa !5
  %1022 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1163) %1021)
  %1023 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %33, i32 0, i32 0
  %1024 = extractvalue { <2 x float>, <2 x float> } %1022, 0
  store <2 x float> %1024, ptr %1023, align 4
  %1025 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %33, i32 0, i32 1
  %1026 = extractvalue { <2 x float>, <2 x float> } %1022, 1
  store <2 x float> %1026, ptr %1025, align 4
  %1027 = load ptr, ptr %7, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct.ImGuiContext, ptr %1027, i32 0, i32 32
  %1029 = load ptr, ptr %1028, align 8, !tbaa !170
  %1030 = load ptr, ptr %9, align 8, !tbaa !5
  %1031 = icmp eq ptr %1029, %1030
  br i1 %1031, label %1032, label %1056

1032:                                             ; preds = %1020
  %1033 = load ptr, ptr %7, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.ImGuiContext, ptr %1033, i32 0, i32 40
  %1035 = load i32, ptr %1034, align 4, !tbaa !171
  %1036 = icmp eq i32 %1035, 0
  br i1 %1036, label %1037, label %1056

1037:                                             ; preds = %1032
  %1038 = load ptr, ptr %7, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.ImGuiContext, ptr %1038, i32 0, i32 41
  %1040 = load i32, ptr %1039, align 8, !tbaa !172
  %1041 = icmp eq i32 %1040, 0
  br i1 %1041, label %1042, label %1056

1042:                                             ; preds = %1037
  %1043 = getelementptr inbounds %struct.ImRect, ptr %33, i32 0, i32 0
  %1044 = getelementptr inbounds %struct.ImRect, ptr %33, i32 0, i32 1
  %1045 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1043, ptr noundef nonnull align 4 dereferenceable(8) %1044, i1 noundef zeroext true)
  br i1 %1045, label %1046, label %1056

1046:                                             ; preds = %1042
  %1047 = load ptr, ptr %7, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.ImGuiContext, ptr %1047, i32 0, i32 3
  %1049 = getelementptr inbounds %struct.ImGuiIO, ptr %1048, i32 0, i32 72
  %1050 = getelementptr inbounds [5 x i8], ptr %1049, i64 0, i64 0
  %1051 = load i8, ptr %1050, align 1, !tbaa !69, !range !65, !noundef !66
  %1052 = trunc i8 %1051 to i1
  br i1 %1052, label %1053, label %1056

1053:                                             ; preds = %1046
  %1054 = load ptr, ptr %9, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.ImGuiWindow, ptr %1054, i32 0, i32 32
  store i8 1, ptr %1055, align 1, !tbaa !173
  br label %1056

1056:                                             ; preds = %1053, %1046, %1042, %1037, %1032, %1020
  %1057 = load ptr, ptr %9, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.ImGuiWindow, ptr %1057, i32 0, i32 32
  %1059 = load i8, ptr %1058, align 1, !tbaa !173, !range !65, !noundef !66
  %1060 = trunc i8 %1059 to i1
  br i1 %1060, label %1061, label %1072

1061:                                             ; preds = %1056
  %1062 = load ptr, ptr %9, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.ImGuiWindow, ptr %1062, i32 0, i32 31
  %1064 = load i8, ptr %1063, align 2, !tbaa !174, !range !65, !noundef !66
  %1065 = trunc i8 %1064 to i1
  %1066 = xor i1 %1065, true
  %1067 = load ptr, ptr %9, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ImGuiWindow, ptr %1067, i32 0, i32 31
  %1069 = zext i1 %1066 to i8
  store i8 %1069, ptr %1068, align 2, !tbaa !174
  %1070 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1070)
  %1071 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %1071)
  br label %1072

1072:                                             ; preds = %1061, %1056
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #13
  br label %1076

1073:                                             ; preds = %1014, %1010, %978
  %1074 = load ptr, ptr %9, align 8, !tbaa !5
  %1075 = getelementptr inbounds %struct.ImGuiWindow, ptr %1074, i32 0, i32 31
  store i8 0, ptr %1075, align 2, !tbaa !174
  br label %1076

1076:                                             ; preds = %1073, %1072
  %1077 = load ptr, ptr %9, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.ImGuiWindow, ptr %1077, i32 0, i32 32
  store i8 0, ptr %1078, align 1, !tbaa !173
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %1079 = load ptr, ptr %9, align 8, !tbaa !5
  %1080 = load ptr, ptr %9, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.ImGuiWindow, ptr %1080, i32 0, i32 12
  %1082 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %1079, ptr noundef nonnull align 4 dereferenceable(8) %1081)
  store <2 x float> %1082, ptr %34, align 4
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #13
  %1083 = load i8, ptr %10, align 1, !tbaa !69, !range !65, !noundef !66
  %1084 = trunc i8 %1083 to i1
  %1085 = zext i1 %1084 to i8
  store i8 %1085, ptr %35, align 1, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #13
  %1086 = load i8, ptr %10, align 1, !tbaa !69, !range !65, !noundef !66
  %1087 = trunc i8 %1086 to i1
  %1088 = zext i1 %1087 to i8
  store i8 %1088, ptr %36, align 1, !tbaa !69
  %1089 = load i32, ptr %6, align 4, !tbaa !9
  %1090 = and i32 %1089, 64
  %1091 = icmp ne i32 %1090, 0
  br i1 %1091, label %1092, label %1116

1092:                                             ; preds = %1076
  %1093 = load ptr, ptr %9, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.ImGuiWindow, ptr %1093, i32 0, i32 31
  %1095 = load i8, ptr %1094, align 2, !tbaa !174, !range !65, !noundef !66
  %1096 = trunc i8 %1095 to i1
  br i1 %1096, label %1116, label %1097

1097:                                             ; preds = %1092
  %1098 = load i8, ptr %22, align 1, !tbaa !69, !range !65, !noundef !66
  %1099 = trunc i8 %1098 to i1
  br i1 %1099, label %1106, label %1100

1100:                                             ; preds = %1097
  %1101 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 0
  %1102 = load float, ptr %1101, align 4, !tbaa !175
  %1103 = load ptr, ptr %9, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.ImGuiWindow, ptr %1103, i32 0, i32 11
  %1105 = getelementptr inbounds %struct.ImVec2, ptr %1104, i32 0, i32 0
  store float %1102, ptr %1105, align 8, !tbaa !152
  store i8 1, ptr %35, align 1, !tbaa !69
  br label %1106

1106:                                             ; preds = %1100, %1097
  %1107 = load i8, ptr %23, align 1, !tbaa !69, !range !65, !noundef !66
  %1108 = trunc i8 %1107 to i1
  br i1 %1108, label %1115, label %1109

1109:                                             ; preds = %1106
  %1110 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 1
  %1111 = load float, ptr %1110, align 4, !tbaa !176
  %1112 = load ptr, ptr %9, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.ImGuiWindow, ptr %1112, i32 0, i32 11
  %1114 = getelementptr inbounds %struct.ImVec2, ptr %1113, i32 0, i32 1
  store float %1111, ptr %1114, align 4, !tbaa !154
  store i8 1, ptr %36, align 1, !tbaa !69
  br label %1115

1115:                                             ; preds = %1109, %1106
  br label %1197

1116:                                             ; preds = %1092, %1076
  %1117 = load ptr, ptr %9, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.ImGuiWindow, ptr %1117, i32 0, i32 43
  %1119 = load i8, ptr %1118, align 4, !tbaa !177
  %1120 = sext i8 %1119 to i32
  %1121 = icmp sgt i32 %1120, 0
  br i1 %1121, label %1128, label %1122

1122:                                             ; preds = %1116
  %1123 = load ptr, ptr %9, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.ImGuiWindow, ptr %1123, i32 0, i32 44
  %1125 = load i8, ptr %1124, align 1, !tbaa !178
  %1126 = sext i8 %1125 to i32
  %1127 = icmp sgt i32 %1126, 0
  br i1 %1127, label %1128, label %1196

1128:                                             ; preds = %1122, %1116
  %1129 = load i8, ptr %22, align 1, !tbaa !69, !range !65, !noundef !66
  %1130 = trunc i8 %1129 to i1
  br i1 %1130, label %1158, label %1131

1131:                                             ; preds = %1128
  %1132 = load ptr, ptr %9, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.ImGuiWindow, ptr %1132, i32 0, i32 43
  %1134 = load i8, ptr %1133, align 4, !tbaa !177
  %1135 = sext i8 %1134 to i32
  %1136 = icmp sgt i32 %1135, 0
  br i1 %1136, label %1137, label %1158

1137:                                             ; preds = %1131
  %1138 = load ptr, ptr %9, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.ImGuiWindow, ptr %1138, i32 0, i32 46
  %1140 = load i8, ptr %1139, align 1, !tbaa !179, !range !65, !noundef !66
  %1141 = trunc i8 %1140 to i1
  br i1 %1141, label %1142, label %1150

1142:                                             ; preds = %1137
  %1143 = load ptr, ptr %9, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.ImGuiWindow, ptr %1143, i32 0, i32 11
  %1145 = getelementptr inbounds %struct.ImVec2, ptr %1144, i32 0, i32 0
  %1146 = load float, ptr %1145, align 8, !tbaa !152
  %1147 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 0
  %1148 = load float, ptr %1147, align 4, !tbaa !175
  %1149 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1146, float noundef %1148)
  br label %1153

1150:                                             ; preds = %1137
  %1151 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 0
  %1152 = load float, ptr %1151, align 4, !tbaa !175
  br label %1153

1153:                                             ; preds = %1150, %1142
  %1154 = phi float [ %1149, %1142 ], [ %1152, %1150 ]
  %1155 = load ptr, ptr %9, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.ImGuiWindow, ptr %1155, i32 0, i32 11
  %1157 = getelementptr inbounds %struct.ImVec2, ptr %1156, i32 0, i32 0
  store float %1154, ptr %1157, align 8, !tbaa !152
  store i8 1, ptr %35, align 1, !tbaa !69
  br label %1158

1158:                                             ; preds = %1153, %1131, %1128
  %1159 = load i8, ptr %23, align 1, !tbaa !69, !range !65, !noundef !66
  %1160 = trunc i8 %1159 to i1
  br i1 %1160, label %1188, label %1161

1161:                                             ; preds = %1158
  %1162 = load ptr, ptr %9, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiWindow, ptr %1162, i32 0, i32 44
  %1164 = load i8, ptr %1163, align 1, !tbaa !178
  %1165 = sext i8 %1164 to i32
  %1166 = icmp sgt i32 %1165, 0
  br i1 %1166, label %1167, label %1188

1167:                                             ; preds = %1161
  %1168 = load ptr, ptr %9, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.ImGuiWindow, ptr %1168, i32 0, i32 46
  %1170 = load i8, ptr %1169, align 1, !tbaa !179, !range !65, !noundef !66
  %1171 = trunc i8 %1170 to i1
  br i1 %1171, label %1172, label %1180

1172:                                             ; preds = %1167
  %1173 = load ptr, ptr %9, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.ImGuiWindow, ptr %1173, i32 0, i32 11
  %1175 = getelementptr inbounds %struct.ImVec2, ptr %1174, i32 0, i32 1
  %1176 = load float, ptr %1175, align 4, !tbaa !154
  %1177 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 1
  %1178 = load float, ptr %1177, align 4, !tbaa !176
  %1179 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1176, float noundef %1178)
  br label %1183

1180:                                             ; preds = %1167
  %1181 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 1
  %1182 = load float, ptr %1181, align 4, !tbaa !176
  br label %1183

1183:                                             ; preds = %1180, %1172
  %1184 = phi float [ %1179, %1172 ], [ %1182, %1180 ]
  %1185 = load ptr, ptr %9, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct.ImGuiWindow, ptr %1185, i32 0, i32 11
  %1187 = getelementptr inbounds %struct.ImVec2, ptr %1186, i32 0, i32 1
  store float %1184, ptr %1187, align 4, !tbaa !154
  store i8 1, ptr %36, align 1, !tbaa !69
  br label %1188

1188:                                             ; preds = %1183, %1161, %1158
  %1189 = load ptr, ptr %9, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.ImGuiWindow, ptr %1189, i32 0, i32 31
  %1191 = load i8, ptr %1190, align 2, !tbaa !174, !range !65, !noundef !66
  %1192 = trunc i8 %1191 to i1
  br i1 %1192, label %1195, label %1193

1193:                                             ; preds = %1188
  %1194 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1194)
  br label %1195

1195:                                             ; preds = %1193, %1188
  br label %1196

1196:                                             ; preds = %1195, %1122
  br label %1197

1197:                                             ; preds = %1196, %1115
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  %1198 = load ptr, ptr %9, align 8, !tbaa !5
  %1199 = load ptr, ptr %9, align 8, !tbaa !5
  %1200 = getelementptr inbounds %struct.ImGuiWindow, ptr %1199, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %38, ptr align 8 %1200, i64 8, i1 false), !tbaa.struct !120
  %1201 = load <2 x float>, ptr %38, align 4
  %1202 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %1198, <2 x float> %1201)
  store <2 x float> %1202, ptr %37, align 4
  %1203 = load ptr, ptr %9, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.ImGuiWindow, ptr %1203, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1204, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #13
  %1205 = load ptr, ptr %9, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.ImGuiWindow, ptr %1205, i32 0, i32 31
  %1207 = load i8, ptr %1206, align 2, !tbaa !174, !range !65, !noundef !66
  %1208 = trunc i8 %1207 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #13
  br i1 %1208, label %1209, label %1221

1209:                                             ; preds = %1197
  %1210 = load i32, ptr %6, align 4, !tbaa !9
  %1211 = and i32 %1210, 16777216
  %1212 = icmp ne i32 %1211, 0
  br i1 %1212, label %1221, label %1213

1213:                                             ; preds = %1209
  %1214 = load ptr, ptr %9, align 8, !tbaa !5
  %1215 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1163) %1214)
  %1216 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %40, i32 0, i32 0
  %1217 = extractvalue { <2 x float>, <2 x float> } %1215, 0
  store <2 x float> %1217, ptr %1216, align 4
  %1218 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %40, i32 0, i32 1
  %1219 = extractvalue { <2 x float>, <2 x float> } %1215, 1
  store <2 x float> %1219, ptr %1218, align 4
  %1220 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %40)
  store <2 x float> %1220, ptr %39, align 4
  br label %1224

1221:                                             ; preds = %1209, %1197
  %1222 = load ptr, ptr %9, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.ImGuiWindow, ptr %1222, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 8 %1223, i64 8, i1 false), !tbaa.struct !120
  br label %1224

1224:                                             ; preds = %1221, %1213
  %1225 = load ptr, ptr %9, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.ImGuiWindow, ptr %1225, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1226, ptr align 4 %39, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #13
  %1227 = load ptr, ptr %9, align 8, !tbaa !5
  %1228 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1163) %1227)
  %1229 = load ptr, ptr %9, align 8, !tbaa !5
  %1230 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1163) %1229)
  %1231 = fadd float %1228, %1230
  store float %1231, ptr %41, align 4, !tbaa !121
  %1232 = load i8, ptr %13, align 1, !tbaa !69, !range !65, !noundef !66
  %1233 = trunc i8 %1232 to i1
  br i1 %1233, label %1234, label %1255

1234:                                             ; preds = %1224
  %1235 = load ptr, ptr %9, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.ImGuiWindow, ptr %1235, i32 0, i32 47
  store i32 -1, ptr %1236, align 8, !tbaa !180
  %1237 = load i32, ptr %6, align 4, !tbaa !9
  %1238 = and i32 %1237, 67108864
  %1239 = icmp ne i32 %1238, 0
  br i1 %1239, label %1240, label %1254

1240:                                             ; preds = %1234
  %1241 = load i32, ptr %6, align 4, !tbaa !9
  %1242 = and i32 %1241, 134217728
  %1243 = icmp ne i32 %1242, 0
  br i1 %1243, label %1254, label %1244

1244:                                             ; preds = %1240
  %1245 = load i8, ptr %21, align 1, !tbaa !69, !range !65, !noundef !66
  %1246 = trunc i8 %1245 to i1
  br i1 %1246, label %1254, label %1247

1247:                                             ; preds = %1244
  %1248 = load ptr, ptr %7, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.ImGuiContext, ptr %1248, i32 0, i32 79
  %1250 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1249)
  %1251 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1250, i32 0, i32 5
  %1252 = load ptr, ptr %9, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.ImGuiWindow, ptr %1252, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1253, ptr align 8 %1251, i64 8, i1 false), !tbaa.struct !120
  br label %1254

1254:                                             ; preds = %1247, %1244, %1240, %1234
  br label %1255

1255:                                             ; preds = %1254, %1224
  %1256 = load i32, ptr %6, align 4, !tbaa !9
  %1257 = and i32 %1256, 16777216
  %1258 = icmp ne i32 %1257, 0
  br i1 %1258, label %1259, label %1300

1259:                                             ; preds = %1255
  %1260 = load ptr, ptr %19, align 8, !tbaa !5
  %1261 = icmp ne ptr %1260, null
  br i1 %1261, label %1262, label %1267

1262:                                             ; preds = %1259
  %1263 = load ptr, ptr %19, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.ImGuiWindow, ptr %1263, i32 0, i32 28
  %1265 = load i8, ptr %1264, align 1, !tbaa !135, !range !65, !noundef !66
  %1266 = trunc i8 %1265 to i1
  br label %1267

1267:                                             ; preds = %1262, %1259
  %1268 = phi i1 [ false, %1259 ], [ %1266, %1262 ]
  br i1 %1268, label %1269, label %1270

1269:                                             ; preds = %1267
  br label %1272

1270:                                             ; preds = %1267
  call void @__assert_fail(ptr noundef @.str.107, ptr noundef @.str.3, i32 noundef 6150, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1271:                                             ; No predecessors!
  br label %1272

1272:                                             ; preds = %1271, %1269
  %1273 = load ptr, ptr %19, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.ImGuiWindow, ptr %1273, i32 0, i32 58
  %1275 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1274, i32 0, i32 28
  %1276 = getelementptr inbounds %struct.ImVector.5, ptr %1275, i32 0, i32 0
  %1277 = load i32, ptr %1276, align 8, !tbaa !181
  %1278 = trunc i32 %1277 to i16
  %1279 = load ptr, ptr %9, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.ImGuiWindow, ptr %1279, i32 0, i32 40
  store i16 %1278, ptr %1280, align 4, !tbaa !102
  %1281 = load ptr, ptr %19, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.ImGuiWindow, ptr %1281, i32 0, i32 58
  %1283 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1282, i32 0, i32 28
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1283, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %1284 = load i32, ptr %6, align 4, !tbaa !9
  %1285 = and i32 %1284, 67108864
  %1286 = icmp ne i32 %1285, 0
  br i1 %1286, label %1299, label %1287

1287:                                             ; preds = %1272
  %1288 = load i8, ptr %21, align 1, !tbaa !69, !range !65, !noundef !66
  %1289 = trunc i8 %1288 to i1
  br i1 %1289, label %1299, label %1290

1290:                                             ; preds = %1287
  %1291 = load i8, ptr %25, align 1, !tbaa !69, !range !65, !noundef !66
  %1292 = trunc i8 %1291 to i1
  br i1 %1292, label %1299, label %1293

1293:                                             ; preds = %1290
  %1294 = load ptr, ptr %19, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.ImGuiWindow, ptr %1294, i32 0, i32 58
  %1296 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1295, i32 0, i32 0
  %1297 = load ptr, ptr %9, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.ImGuiWindow, ptr %1297, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1298, ptr align 8 %1296, i64 8, i1 false), !tbaa.struct !120
  br label %1299

1299:                                             ; preds = %1293, %1290, %1287, %1272
  br label %1300

1300:                                             ; preds = %1299, %1255
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #13
  %1301 = load ptr, ptr %9, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.ImGuiWindow, ptr %1301, i32 0, i32 54
  %1303 = getelementptr inbounds %struct.ImVec2, ptr %1302, i32 0, i32 0
  %1304 = load float, ptr %1303, align 4, !tbaa !182
  %1305 = fcmp une float %1304, 0x47EFFFFFE0000000
  br i1 %1305, label %1306, label %1311

1306:                                             ; preds = %1300
  %1307 = load ptr, ptr %9, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.ImGuiWindow, ptr %1307, i32 0, i32 49
  %1309 = load i32, ptr %1308, align 8, !tbaa !91
  %1310 = icmp eq i32 %1309, 0
  br label %1311

1311:                                             ; preds = %1306, %1300
  %1312 = phi i1 [ false, %1300 ], [ %1310, %1306 ]
  %1313 = zext i1 %1312 to i8
  store i8 %1313, ptr %42, align 1, !tbaa !69
  %1314 = load i8, ptr %42, align 1, !tbaa !69, !range !65, !noundef !66
  %1315 = trunc i8 %1314 to i1
  br i1 %1315, label %1316, label %1326

1316:                                             ; preds = %1311
  %1317 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %1318 = load ptr, ptr %9, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.ImGuiWindow, ptr %1318, i32 0, i32 54
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %1320 = load ptr, ptr %9, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.ImGuiWindow, ptr %1320, i32 0, i32 11
  %1322 = load ptr, ptr %9, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.ImGuiWindow, ptr %1322, i32 0, i32 55
  %1324 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1321, ptr noundef nonnull align 4 dereferenceable(8) %1323)
  store <2 x float> %1324, ptr %44, align 4
  %1325 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1319, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %1325, ptr %43, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1317, 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 %1368

1326:                                             ; preds = %1311
  %1327 = load i32, ptr %6, align 4, !tbaa !9
  %1328 = and i32 %1327, 268435456
  %1329 = icmp ne i32 %1328, 0
  br i1 %1329, label %1330, label %1335

1330:                                             ; preds = %1326
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #13
  %1331 = load ptr, ptr %9, align 8, !tbaa !5
  %1332 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1331)
  store <2 x float> %1332, ptr %45, align 4
  %1333 = load ptr, ptr %9, align 8, !tbaa !5
  %1334 = getelementptr inbounds %struct.ImGuiWindow, ptr %1333, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1334, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #13
  br label %1367

1335:                                             ; preds = %1326
  %1336 = load i32, ptr %6, align 4, !tbaa !9
  %1337 = and i32 %1336, 67108864
  %1338 = icmp ne i32 %1337, 0
  br i1 %1338, label %1339, label %1350

1339:                                             ; preds = %1335
  %1340 = load i8, ptr %21, align 1, !tbaa !69, !range !65, !noundef !66
  %1341 = trunc i8 %1340 to i1
  br i1 %1341, label %1350, label %1342

1342:                                             ; preds = %1339
  %1343 = load i8, ptr %14, align 1, !tbaa !69, !range !65, !noundef !66
  %1344 = trunc i8 %1343 to i1
  br i1 %1344, label %1345, label %1350

1345:                                             ; preds = %1342
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #13
  %1346 = load ptr, ptr %9, align 8, !tbaa !5
  %1347 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1346)
  store <2 x float> %1347, ptr %46, align 4
  %1348 = load ptr, ptr %9, align 8, !tbaa !5
  %1349 = getelementptr inbounds %struct.ImGuiWindow, ptr %1348, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1349, ptr align 4 %46, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  br label %1366

1350:                                             ; preds = %1342, %1339, %1335
  %1351 = load i32, ptr %6, align 4, !tbaa !9
  %1352 = and i32 %1351, 33554432
  %1353 = icmp ne i32 %1352, 0
  br i1 %1353, label %1354, label %1365

1354:                                             ; preds = %1350
  %1355 = load i8, ptr %21, align 1, !tbaa !69, !range !65, !noundef !66
  %1356 = trunc i8 %1355 to i1
  br i1 %1356, label %1365, label %1357

1357:                                             ; preds = %1354
  %1358 = load i8, ptr %25, align 1, !tbaa !69, !range !65, !noundef !66
  %1359 = trunc i8 %1358 to i1
  br i1 %1359, label %1365, label %1360

1360:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  %1361 = load ptr, ptr %9, align 8, !tbaa !5
  %1362 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1361)
  store <2 x float> %1362, ptr %47, align 4
  %1363 = load ptr, ptr %9, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.ImGuiWindow, ptr %1363, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1364, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  br label %1365

1365:                                             ; preds = %1360, %1357, %1354, %1350
  br label %1366

1366:                                             ; preds = %1365, %1345
  br label %1367

1367:                                             ; preds = %1366, %1330
  br label %1368

1368:                                             ; preds = %1367, %1316
  %1369 = load ptr, ptr %9, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.ImGuiWindow, ptr %1369, i32 0, i32 8
  %1371 = load i32, ptr %1370, align 4, !tbaa !183
  %1372 = icmp sge i32 %1371, 0
  br i1 %1372, label %1373, label %1438

1373:                                             ; preds = %1368
  %1374 = load ptr, ptr %9, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.ImGuiWindow, ptr %1374, i32 0, i32 27
  %1376 = load i8, ptr %1375, align 2, !tbaa !184, !range !65, !noundef !66
  %1377 = trunc i8 %1376 to i1
  br i1 %1377, label %1438, label %1378

1378:                                             ; preds = %1373
  %1379 = load ptr, ptr %9, align 8, !tbaa !5
  %1380 = getelementptr inbounds %struct.ImGuiWindow, ptr %1379, i32 0, i32 5
  %1381 = load ptr, ptr %1380, align 8, !tbaa !140
  %1382 = getelementptr inbounds %struct.ImGuiViewport, ptr %1381, i32 0, i32 1
  %1383 = load i32, ptr %1382, align 4, !tbaa !185
  %1384 = and i32 %1383, 128
  %1385 = icmp ne i32 %1384, 0
  br i1 %1385, label %1438, label %1386

1386:                                             ; preds = %1378
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #13
  %1387 = load ptr, ptr %9, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.ImGuiWindow, ptr %1387, i32 0, i32 5
  %1389 = load ptr, ptr %1388, align 8, !tbaa !140
  %1390 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(304) %1389)
  %1391 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 0
  %1392 = extractvalue { <2 x float>, <2 x float> } %1390, 0
  store <2 x float> %1392, ptr %1391, align 4
  %1393 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 1
  %1394 = extractvalue { <2 x float>, <2 x float> } %1390, 1
  store <2 x float> %1394, ptr %1393, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #13
  %1395 = load ptr, ptr %9, align 8, !tbaa !5
  %1396 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1163) %1395)
  %1397 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %49, i32 0, i32 0
  %1398 = extractvalue { <2 x float>, <2 x float> } %1396, 0
  store <2 x float> %1398, ptr %1397, align 4
  %1399 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %49, i32 0, i32 1
  %1400 = extractvalue { <2 x float>, <2 x float> } %1396, 1
  store <2 x float> %1400, ptr %1399, align 4
  %1401 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %48, ptr noundef nonnull align 4 dereferenceable(16) %49)
  %1402 = xor i1 %1401, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #13
  br i1 %1402, label %1403, label %1437

1403:                                             ; preds = %1386
  %1404 = load ptr, ptr %9, align 8, !tbaa !5
  %1405 = load ptr, ptr %9, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct.ImGuiWindow, ptr %1405, i32 0, i32 1
  %1407 = load i32, ptr %1406, align 8, !tbaa !186
  %1408 = load ptr, ptr %9, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct.ImGuiWindow, ptr %1408, i32 0, i32 9
  %1410 = load ptr, ptr %9, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.ImGuiWindow, ptr %1410, i32 0, i32 10
  %1412 = call noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef %1404, i32 noundef %1407, ptr noundef nonnull align 4 dereferenceable(8) %1409, ptr noundef nonnull align 4 dereferenceable(8) %1411, i32 noundef 4)
  %1413 = load ptr, ptr %9, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.ImGuiWindow, ptr %1413, i32 0, i32 5
  store ptr %1412, ptr %1414, align 8, !tbaa !140
  %1415 = load ptr, ptr %9, align 8, !tbaa !5
  %1416 = load ptr, ptr %9, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.ImGuiWindow, ptr %1416, i32 0, i32 5
  %1418 = load ptr, ptr %1417, align 8, !tbaa !140
  call void @_ZN5ImGuiL18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1415, ptr noundef %1418)
  %1419 = load ptr, ptr %7, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.ImGuiContext, ptr %1419, i32 0, i32 3
  %1421 = getelementptr inbounds %struct.ImGuiIO, ptr %1420, i32 0, i32 0
  %1422 = load i32, ptr %1421, align 8, !tbaa !156
  %1423 = and i32 %1422, 32768
  %1424 = icmp ne i32 %1423, 0
  br i1 %1424, label %1425, label %1431

1425:                                             ; preds = %1403
  %1426 = load ptr, ptr %9, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.ImGuiWindow, ptr %1426, i32 0, i32 5
  %1428 = load ptr, ptr %1427, align 8, !tbaa !140
  %1429 = getelementptr inbounds %struct.ImGuiViewport, ptr %1428, i32 0, i32 6
  %1430 = load float, ptr %1429, align 8, !tbaa !157
  br label %1432

1431:                                             ; preds = %1403
  br label %1432

1432:                                             ; preds = %1431, %1425
  %1433 = phi float [ %1430, %1425 ], [ 1.000000e+00, %1431 ]
  %1434 = load ptr, ptr %9, align 8, !tbaa !5
  %1435 = getelementptr inbounds %struct.ImGuiWindow, ptr %1434, i32 0, i32 75
  store float %1433, ptr %1435, align 4, !tbaa !158
  %1436 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1436)
  br label %1437

1437:                                             ; preds = %1432, %1386
  br label %1438

1438:                                             ; preds = %1437, %1378, %1373, %1368
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #13
  store i8 0, ptr %50, align 1, !tbaa !69
  %1439 = load ptr, ptr %9, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.ImGuiWindow, ptr %1439, i32 0, i32 27
  %1441 = load i8, ptr %1440, align 2, !tbaa !184, !range !65, !noundef !66
  %1442 = trunc i8 %1441 to i1
  br i1 %1442, label %1443, label %1652

1443:                                             ; preds = %1438
  %1444 = load ptr, ptr %9, align 8, !tbaa !5
  %1445 = getelementptr inbounds %struct.ImGuiWindow, ptr %1444, i32 0, i32 5
  %1446 = load ptr, ptr %1445, align 8, !tbaa !140
  %1447 = getelementptr inbounds %struct.ImGuiViewport, ptr %1446, i32 0, i32 15
  %1448 = load i8, ptr %1447, align 8, !tbaa !187, !range !65, !noundef !66
  %1449 = trunc i8 %1448 to i1
  br i1 %1449, label %1450, label %1458

1450:                                             ; preds = %1443
  %1451 = load ptr, ptr %9, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.ImGuiWindow, ptr %1451, i32 0, i32 5
  %1453 = load ptr, ptr %1452, align 8, !tbaa !140
  %1454 = getelementptr inbounds %struct.ImGuiViewport, ptr %1453, i32 0, i32 2
  %1455 = load ptr, ptr %9, align 8, !tbaa !5
  %1456 = getelementptr inbounds %struct.ImGuiWindow, ptr %1455, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1456, ptr align 8 %1454, i64 8, i1 false), !tbaa.struct !120
  %1457 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1457)
  br label %1475

1458:                                             ; preds = %1443
  %1459 = load ptr, ptr %9, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.ImGuiWindow, ptr %1459, i32 0, i32 5
  %1461 = load ptr, ptr %1460, align 8, !tbaa !140
  %1462 = getelementptr inbounds %struct.ImGuiViewport, ptr %1461, i32 0, i32 2
  %1463 = load ptr, ptr %9, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.ImGuiWindow, ptr %1463, i32 0, i32 9
  %1465 = call i32 @memcmp(ptr noundef %1462, ptr noundef %1464, i64 noundef 8) #15
  %1466 = icmp ne i32 %1465, 0
  br i1 %1466, label %1467, label %1474

1467:                                             ; preds = %1458
  store i8 1, ptr %50, align 1, !tbaa !69
  %1468 = load ptr, ptr %9, align 8, !tbaa !5
  %1469 = getelementptr inbounds %struct.ImGuiWindow, ptr %1468, i32 0, i32 9
  %1470 = load ptr, ptr %9, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.ImGuiWindow, ptr %1470, i32 0, i32 5
  %1472 = load ptr, ptr %1471, align 8, !tbaa !140
  %1473 = getelementptr inbounds %struct.ImGuiViewport, ptr %1472, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1473, ptr align 8 %1469, i64 8, i1 false), !tbaa.struct !120
  br label %1474

1474:                                             ; preds = %1467, %1458
  br label %1475

1475:                                             ; preds = %1474, %1450
  %1476 = load ptr, ptr %9, align 8, !tbaa !5
  %1477 = getelementptr inbounds %struct.ImGuiWindow, ptr %1476, i32 0, i32 5
  %1478 = load ptr, ptr %1477, align 8, !tbaa !140
  %1479 = getelementptr inbounds %struct.ImGuiViewport, ptr %1478, i32 0, i32 16
  %1480 = load i8, ptr %1479, align 1, !tbaa !188, !range !65, !noundef !66
  %1481 = trunc i8 %1480 to i1
  br i1 %1481, label %1482, label %1492

1482:                                             ; preds = %1475
  %1483 = load ptr, ptr %9, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.ImGuiWindow, ptr %1483, i32 0, i32 5
  %1485 = load ptr, ptr %1484, align 8, !tbaa !140
  %1486 = getelementptr inbounds %struct.ImGuiViewport, ptr %1485, i32 0, i32 3
  %1487 = load ptr, ptr %9, align 8, !tbaa !5
  %1488 = getelementptr inbounds %struct.ImGuiWindow, ptr %1487, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1488, ptr align 8 %1486, i64 8, i1 false), !tbaa.struct !120
  %1489 = load ptr, ptr %9, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.ImGuiWindow, ptr %1489, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1490, ptr align 4 %1488, i64 8, i1 false), !tbaa.struct !120
  %1491 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1491)
  br label %1509

1492:                                             ; preds = %1475
  %1493 = load ptr, ptr %9, align 8, !tbaa !5
  %1494 = getelementptr inbounds %struct.ImGuiWindow, ptr %1493, i32 0, i32 5
  %1495 = load ptr, ptr %1494, align 8, !tbaa !140
  %1496 = getelementptr inbounds %struct.ImGuiViewport, ptr %1495, i32 0, i32 3
  %1497 = load ptr, ptr %9, align 8, !tbaa !5
  %1498 = getelementptr inbounds %struct.ImGuiWindow, ptr %1497, i32 0, i32 10
  %1499 = call i32 @memcmp(ptr noundef %1496, ptr noundef %1498, i64 noundef 8) #15
  %1500 = icmp ne i32 %1499, 0
  br i1 %1500, label %1501, label %1508

1501:                                             ; preds = %1492
  store i8 1, ptr %50, align 1, !tbaa !69
  %1502 = load ptr, ptr %9, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.ImGuiWindow, ptr %1502, i32 0, i32 10
  %1504 = load ptr, ptr %9, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.ImGuiWindow, ptr %1504, i32 0, i32 5
  %1506 = load ptr, ptr %1505, align 8, !tbaa !140
  %1507 = getelementptr inbounds %struct.ImGuiViewport, ptr %1506, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1507, ptr align 8 %1503, i64 8, i1 false), !tbaa.struct !120
  br label %1508

1508:                                             ; preds = %1501, %1492
  br label %1509

1509:                                             ; preds = %1508, %1482
  %1510 = load i8, ptr %50, align 1, !tbaa !69, !range !65, !noundef !66
  %1511 = trunc i8 %1510 to i1
  br i1 %1511, label %1512, label %1516

1512:                                             ; preds = %1509
  %1513 = load ptr, ptr %9, align 8, !tbaa !5
  %1514 = getelementptr inbounds %struct.ImGuiWindow, ptr %1513, i32 0, i32 5
  %1515 = load ptr, ptr %1514, align 8, !tbaa !140
  call void @_ZN5ImGuiL29UpdateViewportPlatformMonitorEP14ImGuiViewportP(ptr noundef %1515)
  br label %1516

1516:                                             ; preds = %1512, %1509
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #13
  store i32 99, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #13
  %1517 = load ptr, ptr %9, align 8, !tbaa !5
  %1518 = getelementptr inbounds %struct.ImGuiWindow, ptr %1517, i32 0, i32 5
  %1519 = load ptr, ptr %1518, align 8, !tbaa !140
  %1520 = getelementptr inbounds %struct.ImGuiViewport, ptr %1519, i32 0, i32 1
  %1521 = load i32, ptr %1520, align 4, !tbaa !185
  %1522 = and i32 %1521, -100
  store i32 %1522, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #13
  %1523 = load i32, ptr %6, align 4, !tbaa !9
  %1524 = and i32 %1523, 369098752
  %1525 = icmp ne i32 %1524, 0
  %1526 = zext i1 %1525 to i8
  store i8 %1526, ptr %53, align 1, !tbaa !69
  %1527 = load i32, ptr %6, align 4, !tbaa !9
  %1528 = and i32 %1527, 33554432
  %1529 = icmp ne i32 %1528, 0
  br i1 %1529, label %1530, label %1533

1530:                                             ; preds = %1516
  %1531 = load i32, ptr %52, align 4, !tbaa !9
  %1532 = or i32 %1531, 64
  store i32 %1532, ptr %52, align 4, !tbaa !9
  br label %1533

1533:                                             ; preds = %1530, %1516
  %1534 = load ptr, ptr %7, align 8, !tbaa !5
  %1535 = getelementptr inbounds %struct.ImGuiContext, ptr %1534, i32 0, i32 3
  %1536 = getelementptr inbounds %struct.ImGuiIO, ptr %1535, i32 0, i32 24
  %1537 = load i8, ptr %1536, align 1, !tbaa !189, !range !65, !noundef !66
  %1538 = trunc i8 %1537 to i1
  br i1 %1538, label %1542, label %1539

1539:                                             ; preds = %1533
  %1540 = load i8, ptr %53, align 1, !tbaa !69, !range !65, !noundef !66
  %1541 = trunc i8 %1540 to i1
  br i1 %1541, label %1542, label %1545

1542:                                             ; preds = %1539, %1533
  %1543 = load i32, ptr %52, align 4, !tbaa !9
  %1544 = or i32 %1543, 2
  store i32 %1544, ptr %52, align 4, !tbaa !9
  br label %1545

1545:                                             ; preds = %1542, %1539
  %1546 = load ptr, ptr %7, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.ImGuiContext, ptr %1546, i32 0, i32 3
  %1548 = getelementptr inbounds %struct.ImGuiIO, ptr %1547, i32 0, i32 25
  %1549 = load i8, ptr %1548, align 2, !tbaa !190, !range !65, !noundef !66
  %1550 = trunc i8 %1549 to i1
  br i1 %1550, label %1554, label %1551

1551:                                             ; preds = %1545
  %1552 = load i8, ptr %53, align 1, !tbaa !69, !range !65, !noundef !66
  %1553 = trunc i8 %1552 to i1
  br i1 %1553, label %1554, label %1557

1554:                                             ; preds = %1551, %1545
  %1555 = load i32, ptr %52, align 4, !tbaa !9
  %1556 = or i32 %1555, 1
  store i32 %1556, ptr %52, align 4, !tbaa !9
  br label %1557

1557:                                             ; preds = %1554, %1551
  %1558 = load i8, ptr %53, align 1, !tbaa !69, !range !65, !noundef !66
  %1559 = trunc i8 %1558 to i1
  br i1 %1559, label %1560, label %1567

1560:                                             ; preds = %1557
  %1561 = load i32, ptr %6, align 4, !tbaa !9
  %1562 = and i32 %1561, 134217728
  %1563 = icmp eq i32 %1562, 0
  br i1 %1563, label %1564, label %1567

1564:                                             ; preds = %1560
  %1565 = load i32, ptr %52, align 4, !tbaa !9
  %1566 = or i32 %1565, 12
  store i32 %1566, ptr %52, align 4, !tbaa !9
  br label %1567

1567:                                             ; preds = %1564, %1560, %1557
  %1568 = load ptr, ptr %9, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.ImGuiWindow, ptr %1568, i32 0, i32 4
  %1570 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %1569, i32 0, i32 1
  %1571 = load i32, ptr %1570, align 4, !tbaa !191
  %1572 = icmp ne i32 %1571, 0
  br i1 %1572, label %1573, label %1582

1573:                                             ; preds = %1567
  %1574 = load ptr, ptr %9, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.ImGuiWindow, ptr %1574, i32 0, i32 4
  %1576 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %1575, i32 0, i32 1
  %1577 = load i32, ptr %1576, align 4, !tbaa !191
  %1578 = load ptr, ptr %9, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.ImGuiWindow, ptr %1578, i32 0, i32 5
  %1580 = load ptr, ptr %1579, align 8, !tbaa !140
  %1581 = getelementptr inbounds %struct.ImGuiViewport, ptr %1580, i32 0, i32 9
  store i32 %1577, ptr %1581, align 8, !tbaa !192
  br label %1612

1582:                                             ; preds = %1567
  %1583 = load i32, ptr %6, align 4, !tbaa !9
  %1584 = and i32 %1583, 100663296
  %1585 = icmp ne i32 %1584, 0
  br i1 %1585, label %1586, label %1599

1586:                                             ; preds = %1582
  %1587 = load ptr, ptr %18, align 8, !tbaa !5
  %1588 = icmp ne ptr %1587, null
  br i1 %1588, label %1589, label %1599

1589:                                             ; preds = %1586
  %1590 = load ptr, ptr %18, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.ImGuiWindow, ptr %1590, i32 0, i32 5
  %1592 = load ptr, ptr %1591, align 8, !tbaa !140
  %1593 = getelementptr inbounds %struct.ImGuiViewport, ptr %1592, i32 0, i32 0
  %1594 = load i32, ptr %1593, align 8, !tbaa !193
  %1595 = load ptr, ptr %9, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.ImGuiWindow, ptr %1595, i32 0, i32 5
  %1597 = load ptr, ptr %1596, align 8, !tbaa !140
  %1598 = getelementptr inbounds %struct.ImGuiViewport, ptr %1597, i32 0, i32 9
  store i32 %1594, ptr %1598, align 8, !tbaa !192
  br label %1611

1599:                                             ; preds = %1586, %1582
  %1600 = load ptr, ptr %7, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct.ImGuiContext, ptr %1600, i32 0, i32 3
  %1602 = getelementptr inbounds %struct.ImGuiIO, ptr %1601, i32 0, i32 26
  %1603 = load i8, ptr %1602, align 1, !tbaa !194, !range !65, !noundef !66
  %1604 = trunc i8 %1603 to i1
  %1605 = zext i1 %1604 to i64
  %1606 = select i1 %1604, i32 0, i32 286331153
  %1607 = load ptr, ptr %9, align 8, !tbaa !5
  %1608 = getelementptr inbounds %struct.ImGuiWindow, ptr %1607, i32 0, i32 5
  %1609 = load ptr, ptr %1608, align 8, !tbaa !140
  %1610 = getelementptr inbounds %struct.ImGuiViewport, ptr %1609, i32 0, i32 9
  store i32 %1606, ptr %1610, align 8, !tbaa !192
  br label %1611

1611:                                             ; preds = %1599, %1589
  br label %1612

1612:                                             ; preds = %1611, %1573
  %1613 = load ptr, ptr %9, align 8, !tbaa !5
  %1614 = getelementptr inbounds %struct.ImGuiWindow, ptr %1613, i32 0, i32 4
  %1615 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %1614, i32 0, i32 2
  %1616 = load i32, ptr %1615, align 4, !tbaa !195
  %1617 = icmp ne i32 %1616, 0
  br i1 %1617, label %1618, label %1625

1618:                                             ; preds = %1612
  %1619 = load ptr, ptr %9, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.ImGuiWindow, ptr %1619, i32 0, i32 4
  %1621 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %1620, i32 0, i32 2
  %1622 = load i32, ptr %1621, align 4, !tbaa !195
  %1623 = load i32, ptr %52, align 4, !tbaa !9
  %1624 = or i32 %1623, %1622
  store i32 %1624, ptr %52, align 4, !tbaa !9
  br label %1625

1625:                                             ; preds = %1618, %1612
  %1626 = load ptr, ptr %9, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.ImGuiWindow, ptr %1626, i32 0, i32 4
  %1628 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %1627, i32 0, i32 3
  %1629 = load i32, ptr %1628, align 4, !tbaa !196
  %1630 = icmp ne i32 %1629, 0
  br i1 %1630, label %1631, label %1639

1631:                                             ; preds = %1625
  %1632 = load ptr, ptr %9, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.ImGuiWindow, ptr %1632, i32 0, i32 4
  %1634 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %1633, i32 0, i32 3
  %1635 = load i32, ptr %1634, align 4, !tbaa !196
  %1636 = xor i32 %1635, -1
  %1637 = load i32, ptr %52, align 4, !tbaa !9
  %1638 = and i32 %1637, %1636
  store i32 %1638, ptr %52, align 4, !tbaa !9
  br label %1639

1639:                                             ; preds = %1631, %1625
  %1640 = load i32, ptr %6, align 4, !tbaa !9
  %1641 = and i32 %1640, 128
  %1642 = icmp ne i32 %1641, 0
  br i1 %1642, label %1646, label %1643

1643:                                             ; preds = %1639
  %1644 = load i32, ptr %52, align 4, !tbaa !9
  %1645 = and i32 %1644, -33
  store i32 %1645, ptr %52, align 4, !tbaa !9
  br label %1646

1646:                                             ; preds = %1643, %1639
  %1647 = load i32, ptr %52, align 4, !tbaa !9
  %1648 = load ptr, ptr %9, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.ImGuiWindow, ptr %1648, i32 0, i32 5
  %1650 = load ptr, ptr %1649, align 8, !tbaa !140
  %1651 = getelementptr inbounds %struct.ImGuiViewport, ptr %1650, i32 0, i32 1
  store i32 %1647, ptr %1651, align 4, !tbaa !185
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #13
  br label %1652

1652:                                             ; preds = %1646, %1438
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #13
  %1653 = load ptr, ptr %9, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.ImGuiWindow, ptr %1653, i32 0, i32 5
  %1655 = load ptr, ptr %1654, align 8, !tbaa !140
  %1656 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(304) %1655)
  %1657 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %54, i32 0, i32 0
  %1658 = extractvalue { <2 x float>, <2 x float> } %1656, 0
  store <2 x float> %1658, ptr %1657, align 4
  %1659 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %54, i32 0, i32 1
  %1660 = extractvalue { <2 x float>, <2 x float> } %1656, 1
  store <2 x float> %1660, ptr %1659, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #13
  %1661 = load ptr, ptr %9, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.ImGuiWindow, ptr %1661, i32 0, i32 5
  %1663 = load ptr, ptr %1662, align 8, !tbaa !140
  %1664 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(304) %1663)
  %1665 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %55, i32 0, i32 0
  %1666 = extractvalue { <2 x float>, <2 x float> } %1664, 0
  store <2 x float> %1666, ptr %1665, align 4
  %1667 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %55, i32 0, i32 1
  %1668 = extractvalue { <2 x float>, <2 x float> } %1664, 1
  store <2 x float> %1668, ptr %1667, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %1669 = load ptr, ptr %8, align 8, !tbaa !5
  %1670 = getelementptr inbounds %struct.ImGuiStyle, ptr %1669, i32 0, i32 30
  %1671 = load ptr, ptr %8, align 8, !tbaa !5
  %1672 = getelementptr inbounds %struct.ImGuiStyle, ptr %1671, i32 0, i32 31
  %1673 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1670, ptr noundef nonnull align 4 dereferenceable(8) %1672)
  store <2 x float> %1673, ptr %56, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %1674 = getelementptr inbounds %struct.ImRect, ptr %55, i32 0, i32 0
  %1675 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1674, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1675, ptr %58, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #13
  %1676 = getelementptr inbounds %struct.ImRect, ptr %55, i32 0, i32 1
  %1677 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1676, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1677, ptr %59, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %57, ptr noundef nonnull align 4 dereferenceable(8) %58, ptr noundef nonnull align 4 dereferenceable(8) %59)
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  %1678 = load i8, ptr %21, align 1, !tbaa !69, !range !65, !noundef !66
  %1679 = trunc i8 %1678 to i1
  br i1 %1679, label %1765, label %1680

1680:                                             ; preds = %1652
  %1681 = load i32, ptr %6, align 4, !tbaa !9
  %1682 = and i32 %1681, 16777216
  %1683 = icmp ne i32 %1682, 0
  br i1 %1683, label %1765, label %1684

1684:                                             ; preds = %1680
  %1685 = load ptr, ptr %9, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.ImGuiWindow, ptr %1685, i32 0, i32 43
  %1687 = load i8, ptr %1686, align 4, !tbaa !177
  %1688 = sext i8 %1687 to i32
  %1689 = icmp sle i32 %1688, 0
  br i1 %1689, label %1690, label %1765

1690:                                             ; preds = %1684
  %1691 = load ptr, ptr %9, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.ImGuiWindow, ptr %1691, i32 0, i32 44
  %1693 = load i8, ptr %1692, align 1, !tbaa !178
  %1694 = sext i8 %1693 to i32
  %1695 = icmp sle i32 %1694, 0
  br i1 %1695, label %1696, label %1765

1696:                                             ; preds = %1690
  %1697 = load ptr, ptr %9, align 8, !tbaa !5
  %1698 = getelementptr inbounds %struct.ImGuiWindow, ptr %1697, i32 0, i32 27
  %1699 = load i8, ptr %1698, align 2, !tbaa !184, !range !65, !noundef !66
  %1700 = trunc i8 %1699 to i1
  br i1 %1700, label %1709, label %1701

1701:                                             ; preds = %1696
  %1702 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %54)
  %1703 = fcmp ogt float %1702, 0.000000e+00
  br i1 %1703, label %1704, label %1709

1704:                                             ; preds = %1701
  %1705 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %54)
  %1706 = fcmp ogt float %1705, 0.000000e+00
  br i1 %1706, label %1707, label %1709

1707:                                             ; preds = %1704
  %1708 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRect(ptr noundef %1708, ptr noundef nonnull align 4 dereferenceable(16) %57)
  br label %1764

1709:                                             ; preds = %1704, %1701, %1696
  %1710 = load ptr, ptr %9, align 8, !tbaa !5
  %1711 = getelementptr inbounds %struct.ImGuiWindow, ptr %1710, i32 0, i32 27
  %1712 = load i8, ptr %1711, align 2, !tbaa !184, !range !65, !noundef !66
  %1713 = trunc i8 %1712 to i1
  br i1 %1713, label %1714, label %1763

1714:                                             ; preds = %1709
  %1715 = load ptr, ptr %7, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct.ImGuiContext, ptr %1715, i32 0, i32 4
  %1717 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %1716, i32 0, i32 24
  %1718 = getelementptr inbounds %struct.ImVector.3, ptr %1717, i32 0, i32 0
  %1719 = load i32, ptr %1718, align 8, !tbaa !197
  %1720 = icmp sgt i32 %1719, 0
  br i1 %1720, label %1721, label %1763

1721:                                             ; preds = %1714
  %1722 = load ptr, ptr %9, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.ImGuiWindow, ptr %1722, i32 0, i32 5
  %1724 = load ptr, ptr %1723, align 8, !tbaa !140
  %1725 = getelementptr inbounds %struct.ImGuiViewportP, ptr %1724, i32 0, i32 9
  %1726 = load i16, ptr %1725, align 4, !tbaa !198
  %1727 = sext i16 %1726 to i32
  %1728 = icmp eq i32 %1727, -1
  br i1 %1728, label %1729, label %1739

1729:                                             ; preds = %1721
  %1730 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #13
  %1731 = load ptr, ptr %7, align 8, !tbaa !5
  %1732 = getelementptr inbounds %struct.ImGuiContext, ptr %1731, i32 0, i32 80
  %1733 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP14ImGuiViewportPEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1732, i32 noundef 0)
  %1734 = load ptr, ptr %1733, align 8, !tbaa !5
  %1735 = getelementptr inbounds %struct.ImGuiViewport, ptr %1734, i32 0, i32 2
  %1736 = load ptr, ptr %8, align 8, !tbaa !5
  %1737 = getelementptr inbounds %struct.ImGuiStyle, ptr %1736, i32 0, i32 30
  %1738 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1735, ptr noundef nonnull align 4 dereferenceable(8) %1737)
  store <2 x float> %1738, ptr %60, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1730, ptr noundef nonnull align 4 dereferenceable(8) %60, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  br label %1762

1739:                                             ; preds = %1721
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #13
  %1740 = load ptr, ptr %7, align 8, !tbaa !5
  %1741 = getelementptr inbounds %struct.ImGuiContext, ptr %1740, i32 0, i32 4
  %1742 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %1741, i32 0, i32 24
  %1743 = load ptr, ptr %9, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.ImGuiWindow, ptr %1743, i32 0, i32 5
  %1745 = load ptr, ptr %1744, align 8, !tbaa !140
  %1746 = getelementptr inbounds %struct.ImGuiViewportP, ptr %1745, i32 0, i32 9
  %1747 = load i16, ptr %1746, align 4, !tbaa !198
  %1748 = sext i16 %1747 to i32
  %1749 = call noundef nonnull align 4 dereferenceable(36) ptr @_ZN8ImVectorI20ImGuiPlatformMonitorEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1742, i32 noundef %1748)
  store ptr %1749, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #13
  %1750 = load ptr, ptr %61, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1750, i32 0, i32 2
  %1752 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1751, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1752, ptr %62, align 4
  %1753 = getelementptr inbounds %struct.ImRect, ptr %57, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1753, ptr align 4 %62, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #13
  %1754 = load ptr, ptr %61, align 8, !tbaa !5
  %1755 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1754, i32 0, i32 2
  %1756 = load ptr, ptr %61, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1756, i32 0, i32 3
  %1758 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1755, ptr noundef nonnull align 4 dereferenceable(8) %1757)
  store <2 x float> %1758, ptr %64, align 4
  %1759 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %64, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1759, ptr %63, align 4
  %1760 = getelementptr inbounds %struct.ImRect, ptr %57, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1760, ptr align 4 %63, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #13
  %1761 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRect(ptr noundef %1761, ptr noundef nonnull align 4 dereferenceable(16) %57)
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #13
  br label %1762

1762:                                             ; preds = %1739, %1729
  br label %1763

1763:                                             ; preds = %1762, %1714, %1709
  br label %1764

1764:                                             ; preds = %1763, %1707
  br label %1765

1765:                                             ; preds = %1764, %1690, %1684, %1680, %1652
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #13
  %1766 = load ptr, ptr %9, align 8, !tbaa !5
  %1767 = getelementptr inbounds %struct.ImGuiWindow, ptr %1766, i32 0, i32 9
  %1768 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1767)
  store <2 x float> %1768, ptr %65, align 4
  %1769 = load ptr, ptr %9, align 8, !tbaa !5
  %1770 = getelementptr inbounds %struct.ImGuiWindow, ptr %1769, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1770, ptr align 4 %65, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #13
  %1771 = load ptr, ptr %9, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.ImGuiWindow, ptr %1771, i32 0, i32 27
  %1773 = load i8, ptr %1772, align 2, !tbaa !184, !range !65, !noundef !66
  %1774 = trunc i8 %1773 to i1
  br i1 %1774, label %1781, label %1775

1775:                                             ; preds = %1765
  %1776 = load ptr, ptr %9, align 8, !tbaa !5
  %1777 = getelementptr inbounds %struct.ImGuiWindow, ptr %1776, i32 0, i32 99
  %1778 = load i8, ptr %1777, align 2
  %1779 = and i8 %1778, 1
  %1780 = trunc i8 %1779 to i1
  br i1 %1780, label %1781, label %1784

1781:                                             ; preds = %1775, %1765
  %1782 = load ptr, ptr %9, align 8, !tbaa !5
  %1783 = getelementptr inbounds %struct.ImGuiWindow, ptr %1782, i32 0, i32 15
  store float 0.000000e+00, ptr %1783, align 8, !tbaa !199
  br label %1814

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

1788:                                             ; preds = %1784
  %1789 = load ptr, ptr %8, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.ImGuiStyle, ptr %1789, i32 0, i32 7
  %1791 = load float, ptr %1790, align 4, !tbaa !200
  br label %1810

1792:                                             ; preds = %1784
  %1793 = load i32, ptr %6, align 4, !tbaa !9
  %1794 = and i32 %1793, 67108864
  %1795 = icmp ne i32 %1794, 0
  br i1 %1795, label %1796, label %1804

1796:                                             ; preds = %1792
  %1797 = load i32, ptr %6, align 4, !tbaa !9
  %1798 = and i32 %1797, 134217728
  %1799 = icmp ne i32 %1798, 0
  br i1 %1799, label %1804, label %1800

1800:                                             ; preds = %1796
  %1801 = load ptr, ptr %8, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.ImGuiStyle, ptr %1801, i32 0, i32 9
  %1803 = load float, ptr %1802, align 4, !tbaa !201
  br label %1808

1804:                                             ; preds = %1796, %1792
  %1805 = load ptr, ptr %8, align 8, !tbaa !5
  %1806 = getelementptr inbounds %struct.ImGuiStyle, ptr %1805, i32 0, i32 2
  %1807 = load float, ptr %1806, align 4, !tbaa !202
  br label %1808

1808:                                             ; preds = %1804, %1800
  %1809 = phi float [ %1803, %1800 ], [ %1807, %1804 ]
  br label %1810

1810:                                             ; preds = %1808, %1788
  %1811 = phi float [ %1791, %1788 ], [ %1809, %1808 ]
  %1812 = load ptr, ptr %9, align 8, !tbaa !5
  %1813 = getelementptr inbounds %struct.ImGuiWindow, ptr %1812, i32 0, i32 15
  store float %1811, ptr %1813, align 8, !tbaa !199
  br label %1814

1814:                                             ; preds = %1810, %1781
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #13
  store i8 0, ptr %66, align 1, !tbaa !69
  %1815 = load i8, ptr %13, align 1, !tbaa !69, !range !65, !noundef !66
  %1816 = trunc i8 %1815 to i1
  br i1 %1816, label %1817, label %1843

1817:                                             ; preds = %1814
  %1818 = load i32, ptr %6, align 4, !tbaa !9
  %1819 = and i32 %1818, 4096
  %1820 = icmp ne i32 %1819, 0
  br i1 %1820, label %1843, label %1821

1821:                                             ; preds = %1817
  %1822 = load i32, ptr %6, align 4, !tbaa !9
  %1823 = and i32 %1822, 67108864
  %1824 = icmp ne i32 %1823, 0
  br i1 %1824, label %1825, label %1826

1825:                                             ; preds = %1821
  store i8 1, ptr %66, align 1, !tbaa !69
  br label %1842

1826:                                             ; preds = %1821
  %1827 = load ptr, ptr %9, align 8, !tbaa !5
  %1828 = getelementptr inbounds %struct.ImGuiWindow, ptr %1827, i32 0, i32 99
  %1829 = load i8, ptr %1828, align 2
  %1830 = and i8 %1829, 1
  %1831 = trunc i8 %1830 to i1
  br i1 %1831, label %1836, label %1832

1832:                                             ; preds = %1826
  %1833 = load i32, ptr %6, align 4, !tbaa !9
  %1834 = and i32 %1833, 16777216
  %1835 = icmp eq i32 %1834, 0
  br i1 %1835, label %1836, label %1841

1836:                                             ; preds = %1832, %1826
  %1837 = load i32, ptr %6, align 4, !tbaa !9
  %1838 = and i32 %1837, 33554432
  %1839 = icmp ne i32 %1838, 0
  br i1 %1839, label %1841, label %1840

1840:                                             ; preds = %1836
  store i8 1, ptr %66, align 1, !tbaa !69
  br label %1841

1841:                                             ; preds = %1840, %1836, %1832
  br label %1842

1842:                                             ; preds = %1841, %1825
  br label %1843

1843:                                             ; preds = %1842, %1817, %1814
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #13
  %1844 = load ptr, ptr %9, align 8, !tbaa !5
  %1845 = getelementptr inbounds %struct.ImGuiWindow, ptr %1844, i32 0, i32 94
  %1846 = load ptr, ptr %1845, align 8, !tbaa !106
  %1847 = icmp ne ptr %1846, null
  br i1 %1847, label %1855, label %1848

1848:                                             ; preds = %1843
  %1849 = load ptr, ptr %9, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.ImGuiWindow, ptr %1849, i32 0, i32 99
  %1851 = load i8, ptr %1850, align 2
  %1852 = and i8 %1851, 1
  %1853 = trunc i8 %1852 to i1
  %1854 = xor i1 %1853, true
  br label %1855

1855:                                             ; preds = %1848, %1843
  %1856 = phi i1 [ true, %1843 ], [ %1854, %1848 ]
  %1857 = zext i1 %1856 to i8
  store i8 %1857, ptr %67, align 1, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #13
  store i32 -1, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #13
  call void @llvm.memset.p0.i64(ptr align 16 %69, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #13
  %1858 = load ptr, ptr %7, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.ImGuiContext, ptr %1858, i32 0, i32 3
  %1860 = getelementptr inbounds %struct.ImGuiIO, ptr %1859, i32 0, i32 30
  %1861 = load i8, ptr %1860, align 1, !tbaa !203, !range !65, !noundef !66
  %1862 = trunc i8 %1861 to i1
  %1863 = zext i1 %1862 to i64
  %1864 = select i1 %1862, i32 2, i32 1
  store i32 %1864, ptr %70, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #13
  %1865 = load ptr, ptr %7, align 8, !tbaa !5
  %1866 = getelementptr inbounds %struct.ImGuiContext, ptr %1865, i32 0, i32 10
  %1867 = load float, ptr %1866, align 8, !tbaa !204
  %1868 = fmul float %1867, 0x3FF59999A0000000
  %1869 = load ptr, ptr %9, align 8, !tbaa !5
  %1870 = getelementptr inbounds %struct.ImGuiWindow, ptr %1869, i32 0, i32 15
  %1871 = load float, ptr %1870, align 8, !tbaa !199
  %1872 = fadd float %1871, 1.000000e+00
  %1873 = load ptr, ptr %7, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.ImGuiContext, ptr %1873, i32 0, i32 10
  %1875 = load float, ptr %1874, align 8, !tbaa !204
  %1876 = call float @llvm.fmuladd.f32(float %1875, float 0x3FC99999A0000000, float %1872)
  %1877 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1868, float noundef %1876)
  %1878 = fptosi float %1877 to i32
  %1879 = sitofp i32 %1878 to float
  store float %1879, ptr %71, align 4, !tbaa !121
  %1880 = load i8, ptr %67, align 1, !tbaa !69, !range !65, !noundef !66
  %1881 = trunc i8 %1880 to i1
  br i1 %1881, label %1882, label %1894

1882:                                             ; preds = %1855
  %1883 = load ptr, ptr %9, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.ImGuiWindow, ptr %1883, i32 0, i32 31
  %1885 = load i8, ptr %1884, align 2, !tbaa !174, !range !65, !noundef !66
  %1886 = trunc i8 %1885 to i1
  br i1 %1886, label %1894, label %1887

1887:                                             ; preds = %1882
  %1888 = load ptr, ptr %9, align 8, !tbaa !5
  %1889 = load i32, ptr %70, align 4, !tbaa !9
  %1890 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1891 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef %1888, ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef %68, i32 noundef %1889, ptr noundef %1890, ptr noundef nonnull align 4 dereferenceable(16) %57)
  br i1 %1891, label %1892, label %1893

1892:                                             ; preds = %1887
  store i8 1, ptr %36, align 1, !tbaa !69
  store i8 1, ptr %35, align 1, !tbaa !69
  br label %1893

1893:                                             ; preds = %1892, %1887
  br label %1894

1894:                                             ; preds = %1893, %1882, %1855
  %1895 = load i32, ptr %68, align 4, !tbaa !9
  %1896 = trunc i32 %1895 to i8
  %1897 = load ptr, ptr %9, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.ImGuiWindow, ptr %1897, i32 0, i32 38
  store i8 %1896, ptr %1898, align 1, !tbaa !205
  %1899 = load ptr, ptr %9, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.ImGuiWindow, ptr %1899, i32 0, i32 27
  %1901 = load i8, ptr %1900, align 2, !tbaa !184, !range !65, !noundef !66
  %1902 = trunc i8 %1901 to i1
  br i1 %1902, label %1903, label %1940

1903:                                             ; preds = %1894
  %1904 = load ptr, ptr %9, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.ImGuiWindow, ptr %1904, i32 0, i32 5
  %1906 = load ptr, ptr %1905, align 8, !tbaa !140
  %1907 = getelementptr inbounds %struct.ImGuiViewport, ptr %1906, i32 0, i32 15
  %1908 = load i8, ptr %1907, align 8, !tbaa !187, !range !65, !noundef !66
  %1909 = trunc i8 %1908 to i1
  br i1 %1909, label %1917, label %1910

1910:                                             ; preds = %1903
  %1911 = load ptr, ptr %9, align 8, !tbaa !5
  %1912 = getelementptr inbounds %struct.ImGuiWindow, ptr %1911, i32 0, i32 9
  %1913 = load ptr, ptr %9, align 8, !tbaa !5
  %1914 = getelementptr inbounds %struct.ImGuiWindow, ptr %1913, i32 0, i32 5
  %1915 = load ptr, ptr %1914, align 8, !tbaa !140
  %1916 = getelementptr inbounds %struct.ImGuiViewport, ptr %1915, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1916, ptr align 8 %1912, i64 8, i1 false), !tbaa.struct !120
  br label %1917

1917:                                             ; preds = %1910, %1903
  %1918 = load ptr, ptr %9, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.ImGuiWindow, ptr %1918, i32 0, i32 5
  %1920 = load ptr, ptr %1919, align 8, !tbaa !140
  %1921 = getelementptr inbounds %struct.ImGuiViewport, ptr %1920, i32 0, i32 16
  %1922 = load i8, ptr %1921, align 1, !tbaa !188, !range !65, !noundef !66
  %1923 = trunc i8 %1922 to i1
  br i1 %1923, label %1931, label %1924

1924:                                             ; preds = %1917
  %1925 = load ptr, ptr %9, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.ImGuiWindow, ptr %1925, i32 0, i32 10
  %1927 = load ptr, ptr %9, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.ImGuiWindow, ptr %1927, i32 0, i32 5
  %1929 = load ptr, ptr %1928, align 8, !tbaa !140
  %1930 = getelementptr inbounds %struct.ImGuiViewport, ptr %1929, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1930, ptr align 8 %1926, i64 8, i1 false), !tbaa.struct !120
  br label %1931

1931:                                             ; preds = %1924, %1917
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #13
  %1932 = load ptr, ptr %9, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.ImGuiWindow, ptr %1932, i32 0, i32 5
  %1934 = load ptr, ptr %1933, align 8, !tbaa !140
  %1935 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(304) %1934)
  %1936 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %72, i32 0, i32 0
  %1937 = extractvalue { <2 x float>, <2 x float> } %1935, 0
  store <2 x float> %1937, ptr %1936, align 4
  %1938 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %72, i32 0, i32 1
  %1939 = extractvalue { <2 x float>, <2 x float> } %1935, 1
  store <2 x float> %1939, ptr %1938, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %54, ptr align 4 %72, i64 16, i1 false), !tbaa.struct !137
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #13
  br label %1940

1940:                                             ; preds = %1931, %1894
  %1941 = load ptr, ptr %9, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.ImGuiWindow, ptr %1941, i32 0, i32 5
  %1943 = load ptr, ptr %1942, align 8, !tbaa !140
  %1944 = getelementptr inbounds %struct.ImGuiViewport, ptr %1943, i32 0, i32 2
  %1945 = load ptr, ptr %9, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.ImGuiWindow, ptr %1945, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1946, ptr align 8 %1944, i64 8, i1 false), !tbaa.struct !120
  %1947 = load ptr, ptr %9, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.ImGuiWindow, ptr %1947, i32 0, i32 31
  %1949 = load i8, ptr %1948, align 2, !tbaa !174, !range !65, !noundef !66
  %1950 = trunc i8 %1949 to i1
  br i1 %1950, label %2103, label %1951

1951:                                             ; preds = %1940
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #13
  %1952 = load ptr, ptr %9, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct.ImGuiWindow, ptr %1952, i32 0, i32 11
  %1954 = getelementptr inbounds %struct.ImVec2, ptr %1953, i32 0, i32 0
  %1955 = load float, ptr %1954, align 8, !tbaa !152
  %1956 = load ptr, ptr %9, align 8, !tbaa !5
  %1957 = getelementptr inbounds %struct.ImGuiWindow, ptr %1956, i32 0, i32 11
  %1958 = getelementptr inbounds %struct.ImVec2, ptr %1957, i32 0, i32 1
  %1959 = load float, ptr %1958, align 4, !tbaa !154
  %1960 = load float, ptr %41, align 4, !tbaa !121
  %1961 = fsub float %1959, %1960
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %73, float noundef %1955, float noundef %1961)
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  %1962 = load ptr, ptr %9, align 8, !tbaa !5
  %1963 = getelementptr inbounds %struct.ImGuiWindow, ptr %1962, i32 0, i32 60
  %1964 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1963)
  store <2 x float> %1964, ptr %75, align 4
  %1965 = load ptr, ptr %9, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.ImGuiWindow, ptr %1965, i32 0, i32 24
  %1967 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %75, ptr noundef nonnull align 4 dereferenceable(8) %1966)
  store <2 x float> %1967, ptr %74, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #13
  %1968 = load i8, ptr %10, align 1, !tbaa !69, !range !65, !noundef !66
  %1969 = trunc i8 %1968 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #13
  br i1 %1969, label %1970, label %1971

1970:                                             ; preds = %1951
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %76, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %1978

1971:                                             ; preds = %1951
  %1972 = load ptr, ptr %9, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.ImGuiWindow, ptr %1972, i32 0, i32 12
  %1974 = load ptr, ptr %9, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.ImGuiWindow, ptr %1974, i32 0, i32 14
  %1976 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1975, float noundef 2.000000e+00)
  store <2 x float> %1976, ptr %77, align 4
  %1977 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1973, ptr noundef nonnull align 4 dereferenceable(8) %77)
  store <2 x float> %1977, ptr %76, align 4
  br label %1978

1978:                                             ; preds = %1971, %1970
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #13
  %1979 = load i8, ptr %35, align 1, !tbaa !69, !range !65, !noundef !66
  %1980 = trunc i8 %1979 to i1
  br i1 %1980, label %1981, label %1984

1981:                                             ; preds = %1978
  %1982 = getelementptr inbounds %struct.ImVec2, ptr %73, i32 0, i32 0
  %1983 = load float, ptr %1982, align 4, !tbaa !175
  br label %1987

1984:                                             ; preds = %1978
  %1985 = getelementptr inbounds %struct.ImVec2, ptr %74, i32 0, i32 0
  %1986 = load float, ptr %1985, align 4, !tbaa !175
  br label %1987

1987:                                             ; preds = %1984, %1981
  %1988 = phi float [ %1983, %1981 ], [ %1986, %1984 ]
  store float %1988, ptr %78, align 4, !tbaa !121
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #13
  %1989 = load i8, ptr %36, align 1, !tbaa !69, !range !65, !noundef !66
  %1990 = trunc i8 %1989 to i1
  br i1 %1990, label %1991, label %1994

1991:                                             ; preds = %1987
  %1992 = getelementptr inbounds %struct.ImVec2, ptr %73, i32 0, i32 1
  %1993 = load float, ptr %1992, align 4, !tbaa !176
  br label %1997

1994:                                             ; preds = %1987
  %1995 = getelementptr inbounds %struct.ImVec2, ptr %74, i32 0, i32 1
  %1996 = load float, ptr %1995, align 4, !tbaa !176
  br label %1997

1997:                                             ; preds = %1994, %1991
  %1998 = phi float [ %1993, %1991 ], [ %1996, %1994 ]
  store float %1998, ptr %79, align 4, !tbaa !121
  %1999 = load i32, ptr %6, align 4, !tbaa !9
  %2000 = and i32 %1999, 16384
  %2001 = icmp ne i32 %2000, 0
  br i1 %2001, label %2014, label %2002

2002:                                             ; preds = %1997
  %2003 = getelementptr inbounds %struct.ImVec2, ptr %76, i32 0, i32 1
  %2004 = load float, ptr %2003, align 4, !tbaa !176
  %2005 = load float, ptr %79, align 4, !tbaa !121
  %2006 = fcmp ogt float %2004, %2005
  br i1 %2006, label %2007, label %2012

2007:                                             ; preds = %2002
  %2008 = load i32, ptr %6, align 4, !tbaa !9
  %2009 = and i32 %2008, 8
  %2010 = icmp ne i32 %2009, 0
  %2011 = xor i1 %2010, true
  br label %2012

2012:                                             ; preds = %2007, %2002
  %2013 = phi i1 [ false, %2002 ], [ %2011, %2007 ]
  br label %2014

2014:                                             ; preds = %2012, %1997
  %2015 = phi i1 [ true, %1997 ], [ %2013, %2012 ]
  %2016 = load ptr, ptr %9, align 8, !tbaa !5
  %2017 = getelementptr inbounds %struct.ImGuiWindow, ptr %2016, i32 0, i32 26
  %2018 = zext i1 %2015 to i8
  store i8 %2018, ptr %2017, align 1, !tbaa !206
  %2019 = load i32, ptr %6, align 4, !tbaa !9
  %2020 = and i32 %2019, 32768
  %2021 = icmp ne i32 %2020, 0
  br i1 %2021, label %2049, label %2022

2022:                                             ; preds = %2014
  %2023 = getelementptr inbounds %struct.ImVec2, ptr %76, i32 0, i32 0
  %2024 = load float, ptr %2023, align 4, !tbaa !175
  %2025 = load float, ptr %78, align 4, !tbaa !121
  %2026 = load ptr, ptr %9, align 8, !tbaa !5
  %2027 = getelementptr inbounds %struct.ImGuiWindow, ptr %2026, i32 0, i32 26
  %2028 = load i8, ptr %2027, align 1, !tbaa !206, !range !65, !noundef !66
  %2029 = trunc i8 %2028 to i1
  br i1 %2029, label %2030, label %2034

2030:                                             ; preds = %2022
  %2031 = load ptr, ptr %8, align 8, !tbaa !5
  %2032 = getelementptr inbounds %struct.ImGuiStyle, ptr %2031, i32 0, i32 19
  %2033 = load float, ptr %2032, align 4, !tbaa !207
  br label %2035

2034:                                             ; preds = %2022
  br label %2035

2035:                                             ; preds = %2034, %2030
  %2036 = phi float [ %2033, %2030 ], [ 0.000000e+00, %2034 ]
  %2037 = fsub float %2025, %2036
  %2038 = fcmp ogt float %2024, %2037
  br i1 %2038, label %2039, label %2047

2039:                                             ; preds = %2035
  %2040 = load i32, ptr %6, align 4, !tbaa !9
  %2041 = and i32 %2040, 8
  %2042 = icmp ne i32 %2041, 0
  br i1 %2042, label %2047, label %2043

2043:                                             ; preds = %2039
  %2044 = load i32, ptr %6, align 4, !tbaa !9
  %2045 = and i32 %2044, 2048
  %2046 = icmp ne i32 %2045, 0
  br label %2047

2047:                                             ; preds = %2043, %2039, %2035
  %2048 = phi i1 [ false, %2039 ], [ false, %2035 ], [ %2046, %2043 ]
  br label %2049

2049:                                             ; preds = %2047, %2014
  %2050 = phi i1 [ true, %2014 ], [ %2048, %2047 ]
  %2051 = load ptr, ptr %9, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.ImGuiWindow, ptr %2051, i32 0, i32 25
  %2053 = zext i1 %2050 to i8
  store i8 %2053, ptr %2052, align 4, !tbaa !208
  %2054 = load ptr, ptr %9, align 8, !tbaa !5
  %2055 = getelementptr inbounds %struct.ImGuiWindow, ptr %2054, i32 0, i32 25
  %2056 = load i8, ptr %2055, align 4, !tbaa !208, !range !65, !noundef !66
  %2057 = trunc i8 %2056 to i1
  br i1 %2057, label %2058, label %2078

2058:                                             ; preds = %2049
  %2059 = load ptr, ptr %9, align 8, !tbaa !5
  %2060 = getelementptr inbounds %struct.ImGuiWindow, ptr %2059, i32 0, i32 26
  %2061 = load i8, ptr %2060, align 1, !tbaa !206, !range !65, !noundef !66
  %2062 = trunc i8 %2061 to i1
  br i1 %2062, label %2078, label %2063

2063:                                             ; preds = %2058
  %2064 = getelementptr inbounds %struct.ImVec2, ptr %76, i32 0, i32 1
  %2065 = load float, ptr %2064, align 4, !tbaa !176
  %2066 = load float, ptr %79, align 4, !tbaa !121
  %2067 = fcmp ogt float %2065, %2066
  br i1 %2067, label %2068, label %2073

2068:                                             ; preds = %2063
  %2069 = load i32, ptr %6, align 4, !tbaa !9
  %2070 = and i32 %2069, 8
  %2071 = icmp ne i32 %2070, 0
  %2072 = xor i1 %2071, true
  br label %2073

2073:                                             ; preds = %2068, %2063
  %2074 = phi i1 [ false, %2063 ], [ %2072, %2068 ]
  %2075 = load ptr, ptr %9, align 8, !tbaa !5
  %2076 = getelementptr inbounds %struct.ImGuiWindow, ptr %2075, i32 0, i32 26
  %2077 = zext i1 %2074 to i8
  store i8 %2077, ptr %2076, align 1, !tbaa !206
  br label %2078

2078:                                             ; preds = %2073, %2058, %2049
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #13
  %2079 = load ptr, ptr %9, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.ImGuiWindow, ptr %2079, i32 0, i32 26
  %2081 = load i8, ptr %2080, align 1, !tbaa !206, !range !65, !noundef !66
  %2082 = trunc i8 %2081 to i1
  br i1 %2082, label %2083, label %2087

2083:                                             ; preds = %2078
  %2084 = load ptr, ptr %8, align 8, !tbaa !5
  %2085 = getelementptr inbounds %struct.ImGuiStyle, ptr %2084, i32 0, i32 19
  %2086 = load float, ptr %2085, align 4, !tbaa !207
  br label %2088

2087:                                             ; preds = %2078
  br label %2088

2088:                                             ; preds = %2087, %2083
  %2089 = phi float [ %2086, %2083 ], [ 0.000000e+00, %2087 ]
  %2090 = load ptr, ptr %9, align 8, !tbaa !5
  %2091 = getelementptr inbounds %struct.ImGuiWindow, ptr %2090, i32 0, i32 25
  %2092 = load i8, ptr %2091, align 4, !tbaa !208, !range !65, !noundef !66
  %2093 = trunc i8 %2092 to i1
  br i1 %2093, label %2094, label %2098

2094:                                             ; preds = %2088
  %2095 = load ptr, ptr %8, align 8, !tbaa !5
  %2096 = getelementptr inbounds %struct.ImGuiStyle, ptr %2095, i32 0, i32 19
  %2097 = load float, ptr %2096, align 4, !tbaa !207
  br label %2099

2098:                                             ; preds = %2088
  br label %2099

2099:                                             ; preds = %2098, %2094
  %2100 = phi float [ %2097, %2094 ], [ 0.000000e+00, %2098 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %80, float noundef %2089, float noundef %2100)
  %2101 = load ptr, ptr %9, align 8, !tbaa !5
  %2102 = getelementptr inbounds %struct.ImGuiWindow, ptr %2101, i32 0, i32 24
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2102, ptr align 4 %80, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #13
  br label %2103

2103:                                             ; preds = %2099, %1940
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #13
  %2104 = load i32, ptr %6, align 4, !tbaa !9
  %2105 = and i32 %2104, 16777216
  %2106 = icmp ne i32 %2105, 0
  br i1 %2106, label %2107, label %2117

2107:                                             ; preds = %2103
  %2108 = load i32, ptr %6, align 4, !tbaa !9
  %2109 = and i32 %2108, 67108864
  %2110 = icmp ne i32 %2109, 0
  br i1 %2110, label %2117, label %2111

2111:                                             ; preds = %2107
  %2112 = load i8, ptr %25, align 1, !tbaa !69, !range !65, !noundef !66
  %2113 = trunc i8 %2112 to i1
  br i1 %2113, label %2117, label %2114

2114:                                             ; preds = %2111
  %2115 = load ptr, ptr %19, align 8, !tbaa !5
  %2116 = getelementptr inbounds %struct.ImGuiWindow, ptr %2115, i32 0, i32 64
  br label %2118

2117:                                             ; preds = %2111, %2107, %2103
  br label %2118

2118:                                             ; preds = %2117, %2114
  %2119 = phi ptr [ %2116, %2114 ], [ %54, %2117 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %81, ptr align 4 %2119, i64 16, i1 false), !tbaa.struct !137
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #13
  %2120 = load ptr, ptr %9, align 8, !tbaa !5
  %2121 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1163) %2120)
  %2122 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %82, i32 0, i32 0
  %2123 = extractvalue { <2 x float>, <2 x float> } %2121, 0
  store <2 x float> %2123, ptr %2122, align 4
  %2124 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %82, i32 0, i32 1
  %2125 = extractvalue { <2 x float>, <2 x float> } %2121, 1
  store <2 x float> %2125, ptr %2124, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #13
  %2126 = load ptr, ptr %9, align 8, !tbaa !5
  %2127 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1163) %2126)
  %2128 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %83, i32 0, i32 0
  %2129 = extractvalue { <2 x float>, <2 x float> } %2127, 0
  store <2 x float> %2129, ptr %2128, align 4
  %2130 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %83, i32 0, i32 1
  %2131 = extractvalue { <2 x float>, <2 x float> } %2127, 1
  store <2 x float> %2131, ptr %2130, align 4
  %2132 = load ptr, ptr %9, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.ImGuiWindow, ptr %2132, i32 0, i32 59
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2133, ptr align 4 %82, i64 16, i1 false), !tbaa.struct !137
  %2134 = load ptr, ptr %9, align 8, !tbaa !5
  %2135 = getelementptr inbounds %struct.ImGuiWindow, ptr %2134, i32 0, i32 99
  %2136 = load i8, ptr %2135, align 2
  %2137 = and i8 %2136, 1
  %2138 = trunc i8 %2137 to i1
  br i1 %2138, label %2139, label %2148

2139:                                             ; preds = %2118
  %2140 = load ptr, ptr %9, align 8, !tbaa !5
  %2141 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1163) %2140)
  %2142 = load ptr, ptr %9, align 8, !tbaa !5
  %2143 = getelementptr inbounds %struct.ImGuiWindow, ptr %2142, i32 0, i32 59
  %2144 = getelementptr inbounds %struct.ImRect, ptr %2143, i32 0, i32 0
  %2145 = getelementptr inbounds %struct.ImVec2, ptr %2144, i32 0, i32 1
  %2146 = load float, ptr %2145, align 4, !tbaa !209
  %2147 = fadd float %2146, %2141
  store float %2147, ptr %2145, align 4, !tbaa !209
  br label %2148

2148:                                             ; preds = %2139, %2118
  %2149 = load ptr, ptr %9, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.ImGuiWindow, ptr %2149, i32 0, i32 59
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2150, ptr noundef nonnull align 4 dereferenceable(16) %81)
  %2151 = load ptr, ptr %9, align 8, !tbaa !5
  %2152 = getelementptr inbounds %struct.ImGuiWindow, ptr %2151, i32 0, i32 9
  %2153 = getelementptr inbounds %struct.ImVec2, ptr %2152, i32 0, i32 0
  %2154 = load float, ptr %2153, align 8, !tbaa !210
  %2155 = load ptr, ptr %9, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.ImGuiWindow, ptr %2155, i32 0, i32 60
  %2157 = getelementptr inbounds %struct.ImRect, ptr %2156, i32 0, i32 0
  %2158 = getelementptr inbounds %struct.ImVec2, ptr %2157, i32 0, i32 0
  store float %2154, ptr %2158, align 8, !tbaa !211
  %2159 = load ptr, ptr %9, align 8, !tbaa !5
  %2160 = getelementptr inbounds %struct.ImGuiWindow, ptr %2159, i32 0, i32 9
  %2161 = getelementptr inbounds %struct.ImVec2, ptr %2160, i32 0, i32 1
  %2162 = load float, ptr %2161, align 4, !tbaa !212
  %2163 = load float, ptr %41, align 4, !tbaa !121
  %2164 = fadd float %2162, %2163
  %2165 = load ptr, ptr %9, align 8, !tbaa !5
  %2166 = getelementptr inbounds %struct.ImGuiWindow, ptr %2165, i32 0, i32 60
  %2167 = getelementptr inbounds %struct.ImRect, ptr %2166, i32 0, i32 0
  %2168 = getelementptr inbounds %struct.ImVec2, ptr %2167, i32 0, i32 1
  store float %2164, ptr %2168, align 4, !tbaa !213
  %2169 = load ptr, ptr %9, align 8, !tbaa !5
  %2170 = getelementptr inbounds %struct.ImGuiWindow, ptr %2169, i32 0, i32 9
  %2171 = getelementptr inbounds %struct.ImVec2, ptr %2170, i32 0, i32 0
  %2172 = load float, ptr %2171, align 8, !tbaa !210
  %2173 = load ptr, ptr %9, align 8, !tbaa !5
  %2174 = getelementptr inbounds %struct.ImGuiWindow, ptr %2173, i32 0, i32 10
  %2175 = getelementptr inbounds %struct.ImVec2, ptr %2174, i32 0, i32 0
  %2176 = load float, ptr %2175, align 8, !tbaa !153
  %2177 = fadd float %2172, %2176
  %2178 = load ptr, ptr %9, align 8, !tbaa !5
  %2179 = getelementptr inbounds %struct.ImGuiWindow, ptr %2178, i32 0, i32 24
  %2180 = getelementptr inbounds %struct.ImVec2, ptr %2179, i32 0, i32 0
  %2181 = load float, ptr %2180, align 4, !tbaa !214
  %2182 = fsub float %2177, %2181
  %2183 = load ptr, ptr %9, align 8, !tbaa !5
  %2184 = getelementptr inbounds %struct.ImGuiWindow, ptr %2183, i32 0, i32 60
  %2185 = getelementptr inbounds %struct.ImRect, ptr %2184, i32 0, i32 1
  %2186 = getelementptr inbounds %struct.ImVec2, ptr %2185, i32 0, i32 0
  store float %2182, ptr %2186, align 8, !tbaa !215
  %2187 = load ptr, ptr %9, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.ImGuiWindow, ptr %2187, i32 0, i32 9
  %2189 = getelementptr inbounds %struct.ImVec2, ptr %2188, i32 0, i32 1
  %2190 = load float, ptr %2189, align 4, !tbaa !212
  %2191 = load ptr, ptr %9, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiWindow, ptr %2191, i32 0, i32 10
  %2193 = getelementptr inbounds %struct.ImVec2, ptr %2192, i32 0, i32 1
  %2194 = load float, ptr %2193, align 4, !tbaa !155
  %2195 = fadd float %2190, %2194
  %2196 = load ptr, ptr %9, align 8, !tbaa !5
  %2197 = getelementptr inbounds %struct.ImGuiWindow, ptr %2196, i32 0, i32 24
  %2198 = getelementptr inbounds %struct.ImVec2, ptr %2197, i32 0, i32 1
  %2199 = load float, ptr %2198, align 4, !tbaa !216
  %2200 = fsub float %2195, %2199
  %2201 = load ptr, ptr %9, align 8, !tbaa !5
  %2202 = getelementptr inbounds %struct.ImGuiWindow, ptr %2201, i32 0, i32 60
  %2203 = getelementptr inbounds %struct.ImRect, ptr %2202, i32 0, i32 1
  %2204 = getelementptr inbounds %struct.ImVec2, ptr %2203, i32 0, i32 1
  store float %2200, ptr %2204, align 4, !tbaa !217
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #13
  %2205 = load i32, ptr %6, align 4, !tbaa !9
  %2206 = and i32 %2205, 1024
  %2207 = icmp ne i32 %2206, 0
  br i1 %2207, label %2212, label %2208

2208:                                             ; preds = %2148
  %2209 = load i32, ptr %6, align 4, !tbaa !9
  %2210 = and i32 %2209, 1
  %2211 = icmp ne i32 %2210, 0
  br i1 %2211, label %2216, label %2212

2212:                                             ; preds = %2208, %2148
  %2213 = load ptr, ptr %8, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.ImGuiStyle, ptr %2213, i32 0, i32 13
  %2215 = load float, ptr %2214, align 4, !tbaa !218
  br label %2220

2216:                                             ; preds = %2208
  %2217 = load ptr, ptr %9, align 8, !tbaa !5
  %2218 = getelementptr inbounds %struct.ImGuiWindow, ptr %2217, i32 0, i32 16
  %2219 = load float, ptr %2218, align 4, !tbaa !160
  br label %2220

2220:                                             ; preds = %2216, %2212
  %2221 = phi float [ %2215, %2212 ], [ %2219, %2216 ]
  store float %2221, ptr %84, align 4, !tbaa !121
  %2222 = load ptr, ptr %9, align 8, !tbaa !5
  %2223 = getelementptr inbounds %struct.ImGuiWindow, ptr %2222, i32 0, i32 60
  %2224 = getelementptr inbounds %struct.ImRect, ptr %2223, i32 0, i32 0
  %2225 = getelementptr inbounds %struct.ImVec2, ptr %2224, i32 0, i32 0
  %2226 = load float, ptr %2225, align 8, !tbaa !211
  %2227 = fadd float 5.000000e-01, %2226
  %2228 = load ptr, ptr %9, align 8, !tbaa !5
  %2229 = getelementptr inbounds %struct.ImGuiWindow, ptr %2228, i32 0, i32 14
  %2230 = getelementptr inbounds %struct.ImVec2, ptr %2229, i32 0, i32 0
  %2231 = load float, ptr %2230, align 8, !tbaa !164
  %2232 = fmul float %2231, 5.000000e-01
  %2233 = call noundef float @_ZL7ImFloorf(float noundef %2232)
  %2234 = load ptr, ptr %9, align 8, !tbaa !5
  %2235 = getelementptr inbounds %struct.ImGuiWindow, ptr %2234, i32 0, i32 16
  %2236 = load float, ptr %2235, align 4, !tbaa !160
  %2237 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2233, float noundef %2236)
  %2238 = fadd float %2227, %2237
  %2239 = call noundef float @_ZL7ImFloorf(float noundef %2238)
  %2240 = load ptr, ptr %9, align 8, !tbaa !5
  %2241 = getelementptr inbounds %struct.ImGuiWindow, ptr %2240, i32 0, i32 61
  %2242 = getelementptr inbounds %struct.ImRect, ptr %2241, i32 0, i32 0
  %2243 = getelementptr inbounds %struct.ImVec2, ptr %2242, i32 0, i32 0
  store float %2239, ptr %2243, align 8, !tbaa !219
  %2244 = load ptr, ptr %9, align 8, !tbaa !5
  %2245 = getelementptr inbounds %struct.ImGuiWindow, ptr %2244, i32 0, i32 60
  %2246 = getelementptr inbounds %struct.ImRect, ptr %2245, i32 0, i32 0
  %2247 = getelementptr inbounds %struct.ImVec2, ptr %2246, i32 0, i32 1
  %2248 = load float, ptr %2247, align 4, !tbaa !213
  %2249 = fadd float 5.000000e-01, %2248
  %2250 = load float, ptr %84, align 4, !tbaa !121
  %2251 = fadd float %2249, %2250
  %2252 = call noundef float @_ZL7ImFloorf(float noundef %2251)
  %2253 = load ptr, ptr %9, align 8, !tbaa !5
  %2254 = getelementptr inbounds %struct.ImGuiWindow, ptr %2253, i32 0, i32 61
  %2255 = getelementptr inbounds %struct.ImRect, ptr %2254, i32 0, i32 0
  %2256 = getelementptr inbounds %struct.ImVec2, ptr %2255, i32 0, i32 1
  store float %2252, ptr %2256, align 4, !tbaa !220
  %2257 = load ptr, ptr %9, align 8, !tbaa !5
  %2258 = getelementptr inbounds %struct.ImGuiWindow, ptr %2257, i32 0, i32 60
  %2259 = getelementptr inbounds %struct.ImRect, ptr %2258, i32 0, i32 1
  %2260 = getelementptr inbounds %struct.ImVec2, ptr %2259, i32 0, i32 0
  %2261 = load float, ptr %2260, align 8, !tbaa !215
  %2262 = fadd float 5.000000e-01, %2261
  %2263 = load ptr, ptr %9, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.ImGuiWindow, ptr %2263, i32 0, i32 14
  %2265 = getelementptr inbounds %struct.ImVec2, ptr %2264, i32 0, i32 0
  %2266 = load float, ptr %2265, align 8, !tbaa !164
  %2267 = fmul float %2266, 5.000000e-01
  %2268 = call noundef float @_ZL7ImFloorf(float noundef %2267)
  %2269 = load ptr, ptr %9, align 8, !tbaa !5
  %2270 = getelementptr inbounds %struct.ImGuiWindow, ptr %2269, i32 0, i32 16
  %2271 = load float, ptr %2270, align 4, !tbaa !160
  %2272 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2268, float noundef %2271)
  %2273 = fsub float %2262, %2272
  %2274 = call noundef float @_ZL7ImFloorf(float noundef %2273)
  %2275 = load ptr, ptr %9, align 8, !tbaa !5
  %2276 = getelementptr inbounds %struct.ImGuiWindow, ptr %2275, i32 0, i32 61
  %2277 = getelementptr inbounds %struct.ImRect, ptr %2276, i32 0, i32 1
  %2278 = getelementptr inbounds %struct.ImVec2, ptr %2277, i32 0, i32 0
  store float %2274, ptr %2278, align 8, !tbaa !221
  %2279 = load ptr, ptr %9, align 8, !tbaa !5
  %2280 = getelementptr inbounds %struct.ImGuiWindow, ptr %2279, i32 0, i32 60
  %2281 = getelementptr inbounds %struct.ImRect, ptr %2280, i32 0, i32 1
  %2282 = getelementptr inbounds %struct.ImVec2, ptr %2281, i32 0, i32 1
  %2283 = load float, ptr %2282, align 4, !tbaa !217
  %2284 = fadd float 5.000000e-01, %2283
  %2285 = load ptr, ptr %9, align 8, !tbaa !5
  %2286 = getelementptr inbounds %struct.ImGuiWindow, ptr %2285, i32 0, i32 16
  %2287 = load float, ptr %2286, align 4, !tbaa !160
  %2288 = fsub float %2284, %2287
  %2289 = call noundef float @_ZL7ImFloorf(float noundef %2288)
  %2290 = load ptr, ptr %9, align 8, !tbaa !5
  %2291 = getelementptr inbounds %struct.ImGuiWindow, ptr %2290, i32 0, i32 61
  %2292 = getelementptr inbounds %struct.ImRect, ptr %2291, i32 0, i32 1
  %2293 = getelementptr inbounds %struct.ImVec2, ptr %2292, i32 0, i32 1
  store float %2289, ptr %2293, align 4, !tbaa !222
  %2294 = load ptr, ptr %9, align 8, !tbaa !5
  %2295 = getelementptr inbounds %struct.ImGuiWindow, ptr %2294, i32 0, i32 61
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2295, ptr noundef nonnull align 4 dereferenceable(16) %81)
  %2296 = load ptr, ptr %9, align 8, !tbaa !5
  %2297 = getelementptr inbounds %struct.ImGuiWindow, ptr %2296, i32 0, i32 10
  %2298 = getelementptr inbounds %struct.ImVec2, ptr %2297, i32 0, i32 0
  %2299 = load float, ptr %2298, align 8, !tbaa !153
  %2300 = fcmp ogt float %2299, 0.000000e+00
  br i1 %2300, label %2301, label %2318

2301:                                             ; preds = %2220
  %2302 = load i32, ptr %6, align 4, !tbaa !9
  %2303 = and i32 %2302, 33554432
  %2304 = icmp ne i32 %2303, 0
  br i1 %2304, label %2318, label %2305

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

2309:                                             ; preds = %2305
  %2310 = load ptr, ptr %9, align 8, !tbaa !5
  %2311 = getelementptr inbounds %struct.ImGuiWindow, ptr %2310, i32 0, i32 10
  %2312 = getelementptr inbounds %struct.ImVec2, ptr %2311, i32 0, i32 0
  %2313 = load float, ptr %2312, align 8, !tbaa !153
  %2314 = fmul float %2313, 0x3FE4CCCCC0000000
  %2315 = call noundef float @_ZL7ImFloorf(float noundef %2314)
  %2316 = load ptr, ptr %9, align 8, !tbaa !5
  %2317 = getelementptr inbounds %struct.ImGuiWindow, ptr %2316, i32 0, i32 71
  store float %2315, ptr %2317, align 4, !tbaa !223
  br label %2326

2318:                                             ; preds = %2305, %2301, %2220
  %2319 = load ptr, ptr %7, align 8, !tbaa !5
  %2320 = getelementptr inbounds %struct.ImGuiContext, ptr %2319, i32 0, i32 10
  %2321 = load float, ptr %2320, align 8, !tbaa !204
  %2322 = fmul float %2321, 1.600000e+01
  %2323 = call noundef float @_ZL7ImFloorf(float noundef %2322)
  %2324 = load ptr, ptr %9, align 8, !tbaa !5
  %2325 = getelementptr inbounds %struct.ImGuiWindow, ptr %2324, i32 0, i32 71
  store float %2323, ptr %2325, align 4, !tbaa !223
  br label %2326

2326:                                             ; preds = %2318, %2309
  %2327 = load ptr, ptr %9, align 8, !tbaa !5
  %2328 = getelementptr inbounds %struct.ImGuiWindow, ptr %2327, i32 0, i32 12
  %2329 = getelementptr inbounds %struct.ImVec2, ptr %2328, i32 0, i32 0
  %2330 = load float, ptr %2329, align 8, !tbaa !224
  %2331 = load ptr, ptr %9, align 8, !tbaa !5
  %2332 = getelementptr inbounds %struct.ImGuiWindow, ptr %2331, i32 0, i32 14
  %2333 = getelementptr inbounds %struct.ImVec2, ptr %2332, i32 0, i32 0
  %2334 = load float, ptr %2333, align 8, !tbaa !164
  %2335 = call float @llvm.fmuladd.f32(float %2334, float 2.000000e+00, float %2330)
  %2336 = load ptr, ptr %9, align 8, !tbaa !5
  %2337 = getelementptr inbounds %struct.ImGuiWindow, ptr %2336, i32 0, i32 60
  %2338 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %2337)
  %2339 = fsub float %2335, %2338
  %2340 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2339)
  %2341 = load ptr, ptr %9, align 8, !tbaa !5
  %2342 = getelementptr inbounds %struct.ImGuiWindow, ptr %2341, i32 0, i32 21
  %2343 = getelementptr inbounds %struct.ImVec2, ptr %2342, i32 0, i32 0
  store float %2340, ptr %2343, align 4, !tbaa !225
  %2344 = load ptr, ptr %9, align 8, !tbaa !5
  %2345 = getelementptr inbounds %struct.ImGuiWindow, ptr %2344, i32 0, i32 12
  %2346 = getelementptr inbounds %struct.ImVec2, ptr %2345, i32 0, i32 1
  %2347 = load float, ptr %2346, align 4, !tbaa !226
  %2348 = load ptr, ptr %9, align 8, !tbaa !5
  %2349 = getelementptr inbounds %struct.ImGuiWindow, ptr %2348, i32 0, i32 14
  %2350 = getelementptr inbounds %struct.ImVec2, ptr %2349, i32 0, i32 1
  %2351 = load float, ptr %2350, align 4, !tbaa !227
  %2352 = call float @llvm.fmuladd.f32(float %2351, float 2.000000e+00, float %2347)
  %2353 = load ptr, ptr %9, align 8, !tbaa !5
  %2354 = getelementptr inbounds %struct.ImGuiWindow, ptr %2353, i32 0, i32 60
  %2355 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %2354)
  %2356 = fsub float %2352, %2355
  %2357 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2356)
  %2358 = load ptr, ptr %9, align 8, !tbaa !5
  %2359 = getelementptr inbounds %struct.ImGuiWindow, ptr %2358, i32 0, i32 21
  %2360 = getelementptr inbounds %struct.ImVec2, ptr %2359, i32 0, i32 1
  store float %2357, ptr %2360, align 4, !tbaa !228
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #13
  %2361 = load ptr, ptr %9, align 8, !tbaa !5
  %2362 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %2361)
  store <2 x float> %2362, ptr %85, align 4
  %2363 = load ptr, ptr %9, align 8, !tbaa !5
  %2364 = getelementptr inbounds %struct.ImGuiWindow, ptr %2363, i32 0, i32 20
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2364, ptr align 4 %85, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %86, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %2365 = load ptr, ptr %9, align 8, !tbaa !5
  %2366 = getelementptr inbounds %struct.ImGuiWindow, ptr %2365, i32 0, i32 22
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2366, ptr align 4 %86, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #13
  %2367 = load ptr, ptr %9, align 8, !tbaa !5
  %2368 = getelementptr inbounds %struct.ImGuiWindow, ptr %2367, i32 0, i32 78
  %2369 = load ptr, ptr %2368, align 8, !tbaa !138
  %2370 = getelementptr inbounds %struct.ImDrawList, ptr %2369, i32 0, i32 0
  %2371 = getelementptr inbounds %struct.ImVector.24, ptr %2370, i32 0, i32 0
  %2372 = load i32, ptr %2371, align 8, !tbaa !229
  %2373 = icmp eq i32 %2372, 1
  br i1 %2373, label %2374, label %2383

2374:                                             ; preds = %2326
  %2375 = load ptr, ptr %9, align 8, !tbaa !5
  %2376 = getelementptr inbounds %struct.ImGuiWindow, ptr %2375, i32 0, i32 78
  %2377 = load ptr, ptr %2376, align 8, !tbaa !138
  %2378 = getelementptr inbounds %struct.ImDrawList, ptr %2377, i32 0, i32 0
  %2379 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2378, i32 noundef 0)
  %2380 = getelementptr inbounds %struct.ImDrawCmd, ptr %2379, i32 0, i32 4
  %2381 = load i32, ptr %2380, align 8, !tbaa !230
  %2382 = icmp eq i32 %2381, 0
  br label %2383

2383:                                             ; preds = %2374, %2326
  %2384 = phi i1 [ false, %2326 ], [ %2382, %2374 ]
  br i1 %2384, label %2385, label %2386

2385:                                             ; preds = %2383
  br label %2388

2386:                                             ; preds = %2383
  call void @__assert_fail(ptr noundef @.str.108, ptr noundef @.str.3, i32 noundef 6416, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

2387:                                             ; No predecessors!
  br label %2388

2388:                                             ; preds = %2387, %2385
  %2389 = load ptr, ptr %9, align 8, !tbaa !5
  %2390 = getelementptr inbounds %struct.ImGuiWindow, ptr %2389, i32 0, i32 78
  %2391 = load ptr, ptr %2390, align 8, !tbaa !138
  %2392 = load ptr, ptr %7, align 8, !tbaa !5
  %2393 = getelementptr inbounds %struct.ImGuiContext, ptr %2392, i32 0, i32 9
  %2394 = load ptr, ptr %2393, align 8, !tbaa !231
  %2395 = getelementptr inbounds %struct.ImFont, ptr %2394, i32 0, i32 7
  %2396 = load ptr, ptr %2395, align 8, !tbaa !232
  %2397 = getelementptr inbounds %struct.ImFontAtlas, ptr %2396, i32 0, i32 2
  %2398 = load ptr, ptr %2397, align 8, !tbaa !233
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(224) %2391, ptr noundef %2398)
  %2399 = getelementptr inbounds %struct.ImRect, ptr %81, i32 0, i32 0
  %2400 = getelementptr inbounds %struct.ImRect, ptr %81, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2399, ptr noundef nonnull align 4 dereferenceable(8) %2400, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #13
  %2401 = load ptr, ptr %7, align 8, !tbaa !5
  %2402 = getelementptr inbounds %struct.ImGuiContext, ptr %2401, i32 0, i32 133
  %2403 = load ptr, ptr %2402, align 8, !tbaa !146
  store ptr %2403, ptr %87, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #13
  %2404 = load i32, ptr %6, align 4, !tbaa !9
  %2405 = and i32 %2404, 134217728
  %2406 = icmp ne i32 %2405, 0
  br i1 %2406, label %2407, label %2416

2407:                                             ; preds = %2388
  %2408 = load ptr, ptr %9, align 8, !tbaa !5
  %2409 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  %2410 = icmp eq ptr %2408, %2409
  br i1 %2410, label %2411, label %2416

2411:                                             ; preds = %2407
  %2412 = load ptr, ptr %9, align 8, !tbaa !5
  %2413 = getelementptr inbounds %struct.ImGuiWindow, ptr %2412, i32 0, i32 49
  %2414 = load i32, ptr %2413, align 8, !tbaa !91
  %2415 = icmp sle i32 %2414, 0
  br label %2416

2416:                                             ; preds = %2411, %2407, %2388
  %2417 = phi i1 [ false, %2407 ], [ false, %2388 ], [ %2415, %2411 ]
  %2418 = zext i1 %2417 to i8
  store i8 %2418, ptr %88, align 1, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #13
  %2419 = load ptr, ptr %7, align 8, !tbaa !5
  %2420 = getelementptr inbounds %struct.ImGuiContext, ptr %2419, i32 0, i32 132
  %2421 = load ptr, ptr %2420, align 8, !tbaa !237
  %2422 = icmp ne ptr %2421, null
  br i1 %2422, label %2423, label %2449

2423:                                             ; preds = %2416
  %2424 = load ptr, ptr %9, align 8, !tbaa !5
  %2425 = load ptr, ptr %7, align 8, !tbaa !5
  %2426 = getelementptr inbounds %struct.ImGuiContext, ptr %2425, i32 0, i32 132
  %2427 = load ptr, ptr %2426, align 8, !tbaa !237
  %2428 = getelementptr inbounds %struct.ImGuiWindow, ptr %2427, i32 0, i32 81
  %2429 = load ptr, ptr %2428, align 8, !tbaa !238
  %2430 = icmp eq ptr %2424, %2429
  br i1 %2430, label %2447, label %2431

2431:                                             ; preds = %2423
  %2432 = load ptr, ptr %9, align 8, !tbaa !5
  %2433 = load ptr, ptr %87, align 8, !tbaa !5
  %2434 = icmp eq ptr %2432, %2433
  br i1 %2434, label %2435, label %2445

2435:                                             ; preds = %2431
  %2436 = load ptr, ptr %87, align 8, !tbaa !5
  %2437 = getelementptr inbounds %struct.ImGuiWindow, ptr %2436, i32 0, i32 5
  %2438 = load ptr, ptr %2437, align 8, !tbaa !140
  %2439 = load ptr, ptr %7, align 8, !tbaa !5
  %2440 = getelementptr inbounds %struct.ImGuiContext, ptr %2439, i32 0, i32 132
  %2441 = load ptr, ptr %2440, align 8, !tbaa !237
  %2442 = getelementptr inbounds %struct.ImGuiWindow, ptr %2441, i32 0, i32 5
  %2443 = load ptr, ptr %2442, align 8, !tbaa !140
  %2444 = icmp ne ptr %2438, %2443
  br label %2445

2445:                                             ; preds = %2435, %2431
  %2446 = phi i1 [ false, %2431 ], [ %2444, %2435 ]
  br label %2447

2447:                                             ; preds = %2445, %2423
  %2448 = phi i1 [ true, %2423 ], [ %2446, %2445 ]
  br label %2449

2449:                                             ; preds = %2447, %2416
  %2450 = phi i1 [ false, %2416 ], [ %2448, %2447 ]
  %2451 = zext i1 %2450 to i8
  store i8 %2451, ptr %89, align 1, !tbaa !69
  %2452 = load i8, ptr %88, align 1, !tbaa !69, !range !65, !noundef !66
  %2453 = trunc i8 %2452 to i1
  br i1 %2453, label %2457, label %2454

2454:                                             ; preds = %2449
  %2455 = load i8, ptr %89, align 1, !tbaa !69, !range !65, !noundef !66
  %2456 = trunc i8 %2455 to i1
  br i1 %2456, label %2457, label %2472

2457:                                             ; preds = %2454, %2449
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #13
  %2458 = load i8, ptr %88, align 1, !tbaa !69, !range !65, !noundef !66
  %2459 = trunc i8 %2458 to i1
  %2460 = zext i1 %2459 to i64
  %2461 = select i1 %2459, i32 49, i32 48
  %2462 = load ptr, ptr %7, align 8, !tbaa !5
  %2463 = getelementptr inbounds %struct.ImGuiContext, ptr %2462, i32 0, i32 146
  %2464 = load float, ptr %2463, align 4, !tbaa !239
  %2465 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %2461, float noundef %2464)
  store i32 %2465, ptr %90, align 4, !tbaa !9
  %2466 = load ptr, ptr %9, align 8, !tbaa !5
  %2467 = getelementptr inbounds %struct.ImGuiWindow, ptr %2466, i32 0, i32 78
  %2468 = load ptr, ptr %2467, align 8, !tbaa !138
  %2469 = getelementptr inbounds %struct.ImRect, ptr %54, i32 0, i32 0
  %2470 = getelementptr inbounds %struct.ImRect, ptr %54, i32 0, i32 1
  %2471 = load i32, ptr %90, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %2468, ptr noundef nonnull align 4 dereferenceable(8) %2469, ptr noundef nonnull align 4 dereferenceable(8) %2470, i32 noundef %2471, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #13
  br label %2472

2472:                                             ; preds = %2457, %2454
  %2473 = load i8, ptr %89, align 1, !tbaa !69, !range !65, !noundef !66
  %2474 = trunc i8 %2473 to i1
  br i1 %2474, label %2475, label %2508

2475:                                             ; preds = %2472
  %2476 = load ptr, ptr %9, align 8, !tbaa !5
  %2477 = load ptr, ptr %7, align 8, !tbaa !5
  %2478 = getelementptr inbounds %struct.ImGuiContext, ptr %2477, i32 0, i32 132
  %2479 = load ptr, ptr %2478, align 8, !tbaa !237
  %2480 = icmp eq ptr %2476, %2479
  br i1 %2480, label %2481, label %2508

2481:                                             ; preds = %2475
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #13
  %2482 = load ptr, ptr %9, align 8, !tbaa !5
  %2483 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1163) %2482)
  %2484 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %91, i32 0, i32 0
  %2485 = extractvalue { <2 x float>, <2 x float> } %2483, 0
  store <2 x float> %2485, ptr %2484, align 4
  %2486 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %91, i32 0, i32 1
  %2487 = extractvalue { <2 x float>, <2 x float> } %2483, 1
  store <2 x float> %2487, ptr %2486, align 4
  %2488 = load ptr, ptr %7, align 8, !tbaa !5
  %2489 = getelementptr inbounds %struct.ImGuiContext, ptr %2488, i32 0, i32 10
  %2490 = load float, ptr %2489, align 8, !tbaa !204
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %91, float noundef %2490)
  %2491 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %91, ptr noundef nonnull align 4 dereferenceable(16) %54)
  br i1 %2491, label %2507, label %2492

2492:                                             ; preds = %2481
  %2493 = load ptr, ptr %9, align 8, !tbaa !5
  %2494 = getelementptr inbounds %struct.ImGuiWindow, ptr %2493, i32 0, i32 78
  %2495 = load ptr, ptr %2494, align 8, !tbaa !138
  %2496 = getelementptr inbounds %struct.ImRect, ptr %91, i32 0, i32 0
  %2497 = getelementptr inbounds %struct.ImRect, ptr %91, i32 0, i32 1
  %2498 = load ptr, ptr %7, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.ImGuiContext, ptr %2498, i32 0, i32 135
  %2500 = load float, ptr %2499, align 4, !tbaa !240
  %2501 = fmul float %2500, 2.500000e-01
  %2502 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %2501)
  %2503 = load ptr, ptr %7, align 8, !tbaa !5
  %2504 = getelementptr inbounds %struct.ImGuiContext, ptr %2503, i32 0, i32 5
  %2505 = getelementptr inbounds %struct.ImGuiStyle, ptr %2504, i32 0, i32 2
  %2506 = load float, ptr %2505, align 4, !tbaa !241
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %2495, ptr noundef nonnull align 4 dereferenceable(8) %2496, ptr noundef nonnull align 4 dereferenceable(8) %2497, i32 noundef %2502, float noundef %2506, i32 noundef 15)
  br label %2507

2507:                                             ; preds = %2492, %2481
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #13
  br label %2508

2508:                                             ; preds = %2507, %2475, %2472
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #13
  %2509 = load ptr, ptr %9, align 8, !tbaa !5
  %2510 = getelementptr inbounds %struct.ImGuiWindow, ptr %2509, i32 0, i32 99
  %2511 = load i8, ptr %2510, align 2
  %2512 = and i8 %2511, 1
  %2513 = trunc i8 %2512 to i1
  br i1 %2513, label %2514, label %2521

2514:                                             ; preds = %2508
  %2515 = load ptr, ptr %9, align 8, !tbaa !5
  %2516 = getelementptr inbounds %struct.ImGuiWindow, ptr %2515, i32 0, i32 99
  %2517 = load i8, ptr %2516, align 2
  %2518 = lshr i8 %2517, 1
  %2519 = and i8 %2518, 1
  %2520 = trunc i8 %2519 to i1
  br label %2521

2521:                                             ; preds = %2514, %2508
  %2522 = phi i1 [ true, %2508 ], [ %2520, %2514 ]
  %2523 = zext i1 %2522 to i8
  store i8 %2523, ptr %92, align 1, !tbaa !69
  %2524 = load i8, ptr %92, align 1, !tbaa !69, !range !65, !noundef !66
  %2525 = trunc i8 %2524 to i1
  br i1 %2525, label %2526, label %2631

2526:                                             ; preds = %2521
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #13
  store i8 0, ptr %93, align 1, !tbaa !69
  %2527 = load i32, ptr %6, align 4, !tbaa !9
  %2528 = and i32 %2527, 16777216
  %2529 = icmp ne i32 %2528, 0
  br i1 %2529, label %2530, label %2556

2530:                                             ; preds = %2526
  %2531 = load i32, ptr %6, align 4, !tbaa !9
  %2532 = and i32 %2531, 67108864
  %2533 = icmp ne i32 %2532, 0
  br i1 %2533, label %2556, label %2534

2534:                                             ; preds = %2530
  %2535 = load i8, ptr %25, align 1, !tbaa !69, !range !65, !noundef !66
  %2536 = trunc i8 %2535 to i1
  br i1 %2536, label %2556, label %2537

2537:                                             ; preds = %2534
  %2538 = load ptr, ptr %9, align 8, !tbaa !5
  %2539 = getelementptr inbounds %struct.ImGuiWindow, ptr %2538, i32 0, i32 78
  %2540 = load ptr, ptr %2539, align 8, !tbaa !138
  %2541 = getelementptr inbounds %struct.ImDrawList, ptr %2540, i32 0, i32 0
  %2542 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %2541)
  %2543 = getelementptr inbounds %struct.ImDrawCmd, ptr %2542, i32 0, i32 4
  %2544 = load i32, ptr %2543, align 8, !tbaa !230
  %2545 = icmp eq i32 %2544, 0
  br i1 %2545, label %2546, label %2555

2546:                                             ; preds = %2537
  %2547 = load ptr, ptr %19, align 8, !tbaa !5
  %2548 = getelementptr inbounds %struct.ImGuiWindow, ptr %2547, i32 0, i32 78
  %2549 = load ptr, ptr %2548, align 8, !tbaa !138
  %2550 = getelementptr inbounds %struct.ImDrawList, ptr %2549, i32 0, i32 2
  %2551 = getelementptr inbounds %struct.ImVector.25, ptr %2550, i32 0, i32 0
  %2552 = load i32, ptr %2551, align 8, !tbaa !242
  %2553 = icmp sgt i32 %2552, 0
  br i1 %2553, label %2554, label %2555

2554:                                             ; preds = %2546
  store i8 1, ptr %93, align 1, !tbaa !69
  br label %2555

2555:                                             ; preds = %2554, %2546, %2537
  br label %2556

2556:                                             ; preds = %2555, %2534, %2530, %2526
  %2557 = load i8, ptr %93, align 1, !tbaa !69, !range !65, !noundef !66
  %2558 = trunc i8 %2557 to i1
  br i1 %2558, label %2559, label %2565

2559:                                             ; preds = %2556
  %2560 = load ptr, ptr %19, align 8, !tbaa !5
  %2561 = getelementptr inbounds %struct.ImGuiWindow, ptr %2560, i32 0, i32 78
  %2562 = load ptr, ptr %2561, align 8, !tbaa !138
  %2563 = load ptr, ptr %9, align 8, !tbaa !5
  %2564 = getelementptr inbounds %struct.ImGuiWindow, ptr %2563, i32 0, i32 78
  store ptr %2562, ptr %2564, align 8, !tbaa !138
  br label %2565

2565:                                             ; preds = %2559, %2556
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #13
  %2566 = load ptr, ptr %7, align 8, !tbaa !5
  %2567 = getelementptr inbounds %struct.ImGuiContext, ptr %2566, i32 0, i32 131
  %2568 = load ptr, ptr %2567, align 8, !tbaa !243
  %2569 = icmp ne ptr %2568, null
  br i1 %2569, label %2570, label %2574

2570:                                             ; preds = %2565
  %2571 = load ptr, ptr %7, align 8, !tbaa !5
  %2572 = getelementptr inbounds %struct.ImGuiContext, ptr %2571, i32 0, i32 131
  %2573 = load ptr, ptr %2572, align 8, !tbaa !243
  br label %2578

2574:                                             ; preds = %2565
  %2575 = load ptr, ptr %7, align 8, !tbaa !5
  %2576 = getelementptr inbounds %struct.ImGuiContext, ptr %2575, i32 0, i32 88
  %2577 = load ptr, ptr %2576, align 8, !tbaa !244
  br label %2578

2578:                                             ; preds = %2574, %2570
  %2579 = phi ptr [ %2573, %2570 ], [ %2577, %2574 ]
  store ptr %2579, ptr %94, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #13
  %2580 = load i8, ptr %66, align 1, !tbaa !69, !range !65, !noundef !66
  %2581 = trunc i8 %2580 to i1
  br i1 %2581, label %2612, label %2582

2582:                                             ; preds = %2578
  %2583 = load ptr, ptr %94, align 8, !tbaa !5
  %2584 = icmp ne ptr %2583, null
  br i1 %2584, label %2585, label %2610

2585:                                             ; preds = %2582
  %2586 = load ptr, ptr %9, align 8, !tbaa !5
  %2587 = getelementptr inbounds %struct.ImGuiWindow, ptr %2586, i32 0, i32 83
  %2588 = load ptr, ptr %2587, align 8, !tbaa !245
  %2589 = load ptr, ptr %94, align 8, !tbaa !5
  %2590 = getelementptr inbounds %struct.ImGuiWindow, ptr %2589, i32 0, i32 83
  %2591 = load ptr, ptr %2590, align 8, !tbaa !245
  %2592 = icmp eq ptr %2588, %2591
  br i1 %2592, label %2608, label %2593

2593:                                             ; preds = %2585
  %2594 = load ptr, ptr %9, align 8, !tbaa !5
  %2595 = getelementptr inbounds %struct.ImGuiWindow, ptr %2594, i32 0, i32 93
  %2596 = load ptr, ptr %2595, align 8, !tbaa !105
  %2597 = icmp ne ptr %2596, null
  br i1 %2597, label %2598, label %2606

2598:                                             ; preds = %2593
  %2599 = load ptr, ptr %9, align 8, !tbaa !5
  %2600 = getelementptr inbounds %struct.ImGuiWindow, ptr %2599, i32 0, i32 93
  %2601 = load ptr, ptr %2600, align 8, !tbaa !105
  %2602 = load ptr, ptr %94, align 8, !tbaa !5
  %2603 = getelementptr inbounds %struct.ImGuiWindow, ptr %2602, i32 0, i32 93
  %2604 = load ptr, ptr %2603, align 8, !tbaa !105
  %2605 = icmp eq ptr %2601, %2604
  br label %2606

2606:                                             ; preds = %2598, %2593
  %2607 = phi i1 [ false, %2593 ], [ %2605, %2598 ]
  br label %2608

2608:                                             ; preds = %2606, %2585
  %2609 = phi i1 [ true, %2585 ], [ %2607, %2606 ]
  br label %2610

2610:                                             ; preds = %2608, %2582
  %2611 = phi i1 [ false, %2582 ], [ %2609, %2608 ]
  br label %2612

2612:                                             ; preds = %2610, %2578
  %2613 = phi i1 [ true, %2578 ], [ %2611, %2610 ]
  %2614 = zext i1 %2613 to i8
  store i8 %2614, ptr %95, align 1, !tbaa !69
  %2615 = load ptr, ptr %9, align 8, !tbaa !5
  %2616 = load i8, ptr %95, align 1, !tbaa !69, !range !65, !noundef !66
  %2617 = trunc i8 %2616 to i1
  %2618 = load i8, ptr %67, align 1, !tbaa !69, !range !65, !noundef !66
  %2619 = trunc i8 %2618 to i1
  %2620 = load i32, ptr %70, align 4, !tbaa !9
  %2621 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %2622 = load float, ptr %71, align 4, !tbaa !121
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %2615, ptr noundef nonnull align 4 dereferenceable(16) %83, i1 noundef zeroext %2617, i1 noundef zeroext %2619, i32 noundef %2620, ptr noundef %2621, float noundef %2622)
  %2623 = load i8, ptr %93, align 1, !tbaa !69, !range !65, !noundef !66
  %2624 = trunc i8 %2623 to i1
  br i1 %2624, label %2625, label %2630

2625:                                             ; preds = %2612
  %2626 = load ptr, ptr %9, align 8, !tbaa !5
  %2627 = getelementptr inbounds %struct.ImGuiWindow, ptr %2626, i32 0, i32 79
  %2628 = load ptr, ptr %9, align 8, !tbaa !5
  %2629 = getelementptr inbounds %struct.ImGuiWindow, ptr %2628, i32 0, i32 78
  store ptr %2627, ptr %2629, align 8, !tbaa !138
  br label %2630

2630:                                             ; preds = %2625, %2612
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #13
  br label %2631

2631:                                             ; preds = %2630, %2521
  %2632 = load ptr, ptr %7, align 8, !tbaa !5
  %2633 = getelementptr inbounds %struct.ImGuiContext, ptr %2632, i32 0, i32 132
  %2634 = load ptr, ptr %2633, align 8, !tbaa !237
  %2635 = load ptr, ptr %9, align 8, !tbaa !5
  %2636 = icmp eq ptr %2634, %2635
  br i1 %2636, label %2637, label %2676

2637:                                             ; preds = %2631
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #13
  %2638 = load ptr, ptr %9, align 8, !tbaa !5
  %2639 = getelementptr inbounds %struct.ImGuiWindow, ptr %2638, i32 0, i32 15
  %2640 = load float, ptr %2639, align 8, !tbaa !199
  %2641 = load ptr, ptr %7, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.ImGuiContext, ptr %2641, i32 0, i32 5
  %2643 = getelementptr inbounds %struct.ImGuiStyle, ptr %2642, i32 0, i32 2
  %2644 = load float, ptr %2643, align 4, !tbaa !241
  %2645 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2640, float noundef %2644)
  store float %2645, ptr %96, align 4, !tbaa !121
  call void @llvm.lifetime.start.p0(i64 16, ptr %97) #13
  %2646 = load ptr, ptr %9, align 8, !tbaa !5
  %2647 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1163) %2646)
  %2648 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %97, i32 0, i32 0
  %2649 = extractvalue { <2 x float>, <2 x float> } %2647, 0
  store <2 x float> %2649, ptr %2648, align 4
  %2650 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %97, i32 0, i32 1
  %2651 = extractvalue { <2 x float>, <2 x float> } %2647, 1
  store <2 x float> %2651, ptr %2650, align 4
  %2652 = load ptr, ptr %7, align 8, !tbaa !5
  %2653 = getelementptr inbounds %struct.ImGuiContext, ptr %2652, i32 0, i32 10
  %2654 = load float, ptr %2653, align 8, !tbaa !204
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %97, float noundef %2654)
  %2655 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %97, ptr noundef nonnull align 4 dereferenceable(16) %54)
  br i1 %2655, label %2656, label %2665

2656:                                             ; preds = %2637
  %2657 = load ptr, ptr %7, align 8, !tbaa !5
  %2658 = getelementptr inbounds %struct.ImGuiContext, ptr %2657, i32 0, i32 10
  %2659 = load float, ptr %2658, align 8, !tbaa !204
  %2660 = fneg float %2659
  %2661 = fsub float %2660, 1.000000e+00
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %97, float noundef %2661)
  %2662 = load ptr, ptr %9, align 8, !tbaa !5
  %2663 = getelementptr inbounds %struct.ImGuiWindow, ptr %2662, i32 0, i32 15
  %2664 = load float, ptr %2663, align 8, !tbaa !199
  store float %2664, ptr %96, align 4, !tbaa !121
  br label %2665

2665:                                             ; preds = %2656, %2637
  %2666 = load ptr, ptr %9, align 8, !tbaa !5
  %2667 = getelementptr inbounds %struct.ImGuiWindow, ptr %2666, i32 0, i32 78
  %2668 = load ptr, ptr %2667, align 8, !tbaa !138
  %2669 = getelementptr inbounds %struct.ImRect, ptr %97, i32 0, i32 0
  %2670 = getelementptr inbounds %struct.ImRect, ptr %97, i32 0, i32 1
  %2671 = load ptr, ptr %7, align 8, !tbaa !5
  %2672 = getelementptr inbounds %struct.ImGuiContext, ptr %2671, i32 0, i32 135
  %2673 = load float, ptr %2672, align 4, !tbaa !240
  %2674 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %2673)
  %2675 = load float, ptr %96, align 4, !tbaa !121
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(224) %2668, ptr noundef nonnull align 4 dereferenceable(8) %2669, ptr noundef nonnull align 4 dereferenceable(8) %2670, i32 noundef %2674, float noundef %2675, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #13
  br label %2676

2676:                                             ; preds = %2665, %2631
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #13
  %2677 = load i32, ptr %6, align 4, !tbaa !9
  %2678 = and i32 %2677, 8
  %2679 = icmp ne i32 %2678, 0
  br i1 %2679, label %2684, label %2680

2680:                                             ; preds = %2676
  %2681 = load i32, ptr %6, align 4, !tbaa !9
  %2682 = and i32 %2681, 2048
  %2683 = icmp ne i32 %2682, 0
  br label %2684

2684:                                             ; preds = %2680, %2676
  %2685 = phi i1 [ false, %2676 ], [ %2683, %2680 ]
  %2686 = zext i1 %2685 to i8
  store i8 %2686, ptr %98, align 1, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #13
  %2687 = load i32, ptr %6, align 4, !tbaa !9
  %2688 = and i32 %2687, 8
  %2689 = icmp ne i32 %2688, 0
  %2690 = xor i1 %2689, true
  %2691 = zext i1 %2690 to i8
  store i8 %2691, ptr %99, align 1, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #13
  %2692 = load ptr, ptr %9, align 8, !tbaa !5
  %2693 = getelementptr inbounds %struct.ImGuiWindow, ptr %2692, i32 0, i32 13
  %2694 = getelementptr inbounds %struct.ImVec2, ptr %2693, i32 0, i32 0
  %2695 = load float, ptr %2694, align 8, !tbaa !246
  %2696 = fcmp une float %2695, 0.000000e+00
  br i1 %2696, label %2697, label %2702

2697:                                             ; preds = %2684
  %2698 = load ptr, ptr %9, align 8, !tbaa !5
  %2699 = getelementptr inbounds %struct.ImGuiWindow, ptr %2698, i32 0, i32 13
  %2700 = getelementptr inbounds %struct.ImVec2, ptr %2699, i32 0, i32 0
  %2701 = load float, ptr %2700, align 8, !tbaa !246
  br label %2729

2702:                                             ; preds = %2684
  %2703 = load i8, ptr %98, align 1, !tbaa !69, !range !65, !noundef !66
  %2704 = trunc i8 %2703 to i1
  br i1 %2704, label %2705, label %2710

2705:                                             ; preds = %2702
  %2706 = load ptr, ptr %9, align 8, !tbaa !5
  %2707 = getelementptr inbounds %struct.ImGuiWindow, ptr %2706, i32 0, i32 12
  %2708 = getelementptr inbounds %struct.ImVec2, ptr %2707, i32 0, i32 0
  %2709 = load float, ptr %2708, align 8, !tbaa !224
  br label %2711

2710:                                             ; preds = %2702
  br label %2711

2711:                                             ; preds = %2710, %2705
  %2712 = phi float [ %2709, %2705 ], [ 0.000000e+00, %2710 ]
  %2713 = load ptr, ptr %9, align 8, !tbaa !5
  %2714 = getelementptr inbounds %struct.ImGuiWindow, ptr %2713, i32 0, i32 10
  %2715 = getelementptr inbounds %struct.ImVec2, ptr %2714, i32 0, i32 0
  %2716 = load float, ptr %2715, align 8, !tbaa !153
  %2717 = load ptr, ptr %9, align 8, !tbaa !5
  %2718 = getelementptr inbounds %struct.ImGuiWindow, ptr %2717, i32 0, i32 14
  %2719 = getelementptr inbounds %struct.ImVec2, ptr %2718, i32 0, i32 0
  %2720 = load float, ptr %2719, align 8, !tbaa !164
  %2721 = fneg float %2720
  %2722 = call float @llvm.fmuladd.f32(float %2721, float 2.000000e+00, float %2716)
  %2723 = load ptr, ptr %9, align 8, !tbaa !5
  %2724 = getelementptr inbounds %struct.ImGuiWindow, ptr %2723, i32 0, i32 24
  %2725 = getelementptr inbounds %struct.ImVec2, ptr %2724, i32 0, i32 0
  %2726 = load float, ptr %2725, align 4, !tbaa !214
  %2727 = fsub float %2722, %2726
  %2728 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2712, float noundef %2727)
  br label %2729

2729:                                             ; preds = %2711, %2697
  %2730 = phi float [ %2701, %2697 ], [ %2728, %2711 ]
  store float %2730, ptr %100, align 4, !tbaa !121
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #13
  %2731 = load ptr, ptr %9, align 8, !tbaa !5
  %2732 = getelementptr inbounds %struct.ImGuiWindow, ptr %2731, i32 0, i32 13
  %2733 = getelementptr inbounds %struct.ImVec2, ptr %2732, i32 0, i32 1
  %2734 = load float, ptr %2733, align 4, !tbaa !247
  %2735 = fcmp une float %2734, 0.000000e+00
  br i1 %2735, label %2736, label %2741

2736:                                             ; preds = %2729
  %2737 = load ptr, ptr %9, align 8, !tbaa !5
  %2738 = getelementptr inbounds %struct.ImGuiWindow, ptr %2737, i32 0, i32 13
  %2739 = getelementptr inbounds %struct.ImVec2, ptr %2738, i32 0, i32 1
  %2740 = load float, ptr %2739, align 4, !tbaa !247
  br label %2770

2741:                                             ; preds = %2729
  %2742 = load i8, ptr %99, align 1, !tbaa !69, !range !65, !noundef !66
  %2743 = trunc i8 %2742 to i1
  br i1 %2743, label %2744, label %2749

2744:                                             ; preds = %2741
  %2745 = load ptr, ptr %9, align 8, !tbaa !5
  %2746 = getelementptr inbounds %struct.ImGuiWindow, ptr %2745, i32 0, i32 12
  %2747 = getelementptr inbounds %struct.ImVec2, ptr %2746, i32 0, i32 1
  %2748 = load float, ptr %2747, align 4, !tbaa !226
  br label %2750

2749:                                             ; preds = %2741
  br label %2750

2750:                                             ; preds = %2749, %2744
  %2751 = phi float [ %2748, %2744 ], [ 0.000000e+00, %2749 ]
  %2752 = load ptr, ptr %9, align 8, !tbaa !5
  %2753 = getelementptr inbounds %struct.ImGuiWindow, ptr %2752, i32 0, i32 10
  %2754 = getelementptr inbounds %struct.ImVec2, ptr %2753, i32 0, i32 1
  %2755 = load float, ptr %2754, align 4, !tbaa !155
  %2756 = load ptr, ptr %9, align 8, !tbaa !5
  %2757 = getelementptr inbounds %struct.ImGuiWindow, ptr %2756, i32 0, i32 14
  %2758 = getelementptr inbounds %struct.ImVec2, ptr %2757, i32 0, i32 1
  %2759 = load float, ptr %2758, align 4, !tbaa !227
  %2760 = fneg float %2759
  %2761 = call float @llvm.fmuladd.f32(float %2760, float 2.000000e+00, float %2755)
  %2762 = load float, ptr %41, align 4, !tbaa !121
  %2763 = fsub float %2761, %2762
  %2764 = load ptr, ptr %9, align 8, !tbaa !5
  %2765 = getelementptr inbounds %struct.ImGuiWindow, ptr %2764, i32 0, i32 24
  %2766 = getelementptr inbounds %struct.ImVec2, ptr %2765, i32 0, i32 1
  %2767 = load float, ptr %2766, align 4, !tbaa !216
  %2768 = fsub float %2763, %2767
  %2769 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2751, float noundef %2768)
  br label %2770

2770:                                             ; preds = %2750, %2736
  %2771 = phi float [ %2740, %2736 ], [ %2769, %2750 ]
  store float %2771, ptr %101, align 4, !tbaa !121
  %2772 = load ptr, ptr %9, align 8, !tbaa !5
  %2773 = getelementptr inbounds %struct.ImGuiWindow, ptr %2772, i32 0, i32 60
  %2774 = getelementptr inbounds %struct.ImRect, ptr %2773, i32 0, i32 0
  %2775 = getelementptr inbounds %struct.ImVec2, ptr %2774, i32 0, i32 0
  %2776 = load float, ptr %2775, align 8, !tbaa !211
  %2777 = load ptr, ptr %9, align 8, !tbaa !5
  %2778 = getelementptr inbounds %struct.ImGuiWindow, ptr %2777, i32 0, i32 20
  %2779 = getelementptr inbounds %struct.ImVec2, ptr %2778, i32 0, i32 0
  %2780 = load float, ptr %2779, align 4, !tbaa !248
  %2781 = fsub float %2776, %2780
  %2782 = load ptr, ptr %9, align 8, !tbaa !5
  %2783 = getelementptr inbounds %struct.ImGuiWindow, ptr %2782, i32 0, i32 14
  %2784 = getelementptr inbounds %struct.ImVec2, ptr %2783, i32 0, i32 0
  %2785 = load float, ptr %2784, align 8, !tbaa !164
  %2786 = load ptr, ptr %9, align 8, !tbaa !5
  %2787 = getelementptr inbounds %struct.ImGuiWindow, ptr %2786, i32 0, i32 16
  %2788 = load float, ptr %2787, align 4, !tbaa !160
  %2789 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2785, float noundef %2788)
  %2790 = fadd float %2781, %2789
  %2791 = call noundef float @_ZL7ImFloorf(float noundef %2790)
  %2792 = load ptr, ptr %9, align 8, !tbaa !5
  %2793 = getelementptr inbounds %struct.ImGuiWindow, ptr %2792, i32 0, i32 62
  %2794 = getelementptr inbounds %struct.ImRect, ptr %2793, i32 0, i32 0
  %2795 = getelementptr inbounds %struct.ImVec2, ptr %2794, i32 0, i32 0
  store float %2791, ptr %2795, align 8, !tbaa !249
  %2796 = load ptr, ptr %9, align 8, !tbaa !5
  %2797 = getelementptr inbounds %struct.ImGuiWindow, ptr %2796, i32 0, i32 60
  %2798 = getelementptr inbounds %struct.ImRect, ptr %2797, i32 0, i32 0
  %2799 = getelementptr inbounds %struct.ImVec2, ptr %2798, i32 0, i32 1
  %2800 = load float, ptr %2799, align 4, !tbaa !213
  %2801 = load ptr, ptr %9, align 8, !tbaa !5
  %2802 = getelementptr inbounds %struct.ImGuiWindow, ptr %2801, i32 0, i32 20
  %2803 = getelementptr inbounds %struct.ImVec2, ptr %2802, i32 0, i32 1
  %2804 = load float, ptr %2803, align 4, !tbaa !250
  %2805 = fsub float %2800, %2804
  %2806 = load ptr, ptr %9, align 8, !tbaa !5
  %2807 = getelementptr inbounds %struct.ImGuiWindow, ptr %2806, i32 0, i32 14
  %2808 = getelementptr inbounds %struct.ImVec2, ptr %2807, i32 0, i32 1
  %2809 = load float, ptr %2808, align 4, !tbaa !227
  %2810 = load ptr, ptr %9, align 8, !tbaa !5
  %2811 = getelementptr inbounds %struct.ImGuiWindow, ptr %2810, i32 0, i32 16
  %2812 = load float, ptr %2811, align 4, !tbaa !160
  %2813 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2809, float noundef %2812)
  %2814 = fadd float %2805, %2813
  %2815 = call noundef float @_ZL7ImFloorf(float noundef %2814)
  %2816 = load ptr, ptr %9, align 8, !tbaa !5
  %2817 = getelementptr inbounds %struct.ImGuiWindow, ptr %2816, i32 0, i32 62
  %2818 = getelementptr inbounds %struct.ImRect, ptr %2817, i32 0, i32 0
  %2819 = getelementptr inbounds %struct.ImVec2, ptr %2818, i32 0, i32 1
  store float %2815, ptr %2819, align 4, !tbaa !251
  %2820 = load ptr, ptr %9, align 8, !tbaa !5
  %2821 = getelementptr inbounds %struct.ImGuiWindow, ptr %2820, i32 0, i32 62
  %2822 = getelementptr inbounds %struct.ImRect, ptr %2821, i32 0, i32 0
  %2823 = getelementptr inbounds %struct.ImVec2, ptr %2822, i32 0, i32 0
  %2824 = load float, ptr %2823, align 8, !tbaa !249
  %2825 = load float, ptr %100, align 4, !tbaa !121
  %2826 = fadd float %2824, %2825
  %2827 = load ptr, ptr %9, align 8, !tbaa !5
  %2828 = getelementptr inbounds %struct.ImGuiWindow, ptr %2827, i32 0, i32 62
  %2829 = getelementptr inbounds %struct.ImRect, ptr %2828, i32 0, i32 1
  %2830 = getelementptr inbounds %struct.ImVec2, ptr %2829, i32 0, i32 0
  store float %2826, ptr %2830, align 8, !tbaa !252
  %2831 = load ptr, ptr %9, align 8, !tbaa !5
  %2832 = getelementptr inbounds %struct.ImGuiWindow, ptr %2831, i32 0, i32 62
  %2833 = getelementptr inbounds %struct.ImRect, ptr %2832, i32 0, i32 0
  %2834 = getelementptr inbounds %struct.ImVec2, ptr %2833, i32 0, i32 1
  %2835 = load float, ptr %2834, align 4, !tbaa !251
  %2836 = load float, ptr %101, align 4, !tbaa !121
  %2837 = fadd float %2835, %2836
  %2838 = load ptr, ptr %9, align 8, !tbaa !5
  %2839 = getelementptr inbounds %struct.ImGuiWindow, ptr %2838, i32 0, i32 62
  %2840 = getelementptr inbounds %struct.ImRect, ptr %2839, i32 0, i32 1
  %2841 = getelementptr inbounds %struct.ImVec2, ptr %2840, i32 0, i32 1
  store float %2837, ptr %2841, align 4, !tbaa !253
  %2842 = load ptr, ptr %9, align 8, !tbaa !5
  %2843 = getelementptr inbounds %struct.ImGuiWindow, ptr %2842, i32 0, i32 62
  %2844 = load ptr, ptr %9, align 8, !tbaa !5
  %2845 = getelementptr inbounds %struct.ImGuiWindow, ptr %2844, i32 0, i32 63
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2845, ptr align 8 %2843, i64 16, i1 false), !tbaa.struct !137
  %2846 = load ptr, ptr %9, align 8, !tbaa !5
  %2847 = getelementptr inbounds %struct.ImGuiWindow, ptr %2846, i32 0, i32 9
  %2848 = getelementptr inbounds %struct.ImVec2, ptr %2847, i32 0, i32 0
  %2849 = load float, ptr %2848, align 8, !tbaa !210
  %2850 = load ptr, ptr %9, align 8, !tbaa !5
  %2851 = getelementptr inbounds %struct.ImGuiWindow, ptr %2850, i32 0, i32 20
  %2852 = getelementptr inbounds %struct.ImVec2, ptr %2851, i32 0, i32 0
  %2853 = load float, ptr %2852, align 4, !tbaa !248
  %2854 = fsub float %2849, %2853
  %2855 = load ptr, ptr %9, align 8, !tbaa !5
  %2856 = getelementptr inbounds %struct.ImGuiWindow, ptr %2855, i32 0, i32 14
  %2857 = getelementptr inbounds %struct.ImVec2, ptr %2856, i32 0, i32 0
  %2858 = load float, ptr %2857, align 8, !tbaa !164
  %2859 = fadd float %2854, %2858
  %2860 = load ptr, ptr %9, align 8, !tbaa !5
  %2861 = getelementptr inbounds %struct.ImGuiWindow, ptr %2860, i32 0, i32 65
  %2862 = getelementptr inbounds %struct.ImRect, ptr %2861, i32 0, i32 0
  %2863 = getelementptr inbounds %struct.ImVec2, ptr %2862, i32 0, i32 0
  store float %2859, ptr %2863, align 8, !tbaa !254
  %2864 = load ptr, ptr %9, align 8, !tbaa !5
  %2865 = getelementptr inbounds %struct.ImGuiWindow, ptr %2864, i32 0, i32 9
  %2866 = getelementptr inbounds %struct.ImVec2, ptr %2865, i32 0, i32 1
  %2867 = load float, ptr %2866, align 4, !tbaa !212
  %2868 = load ptr, ptr %9, align 8, !tbaa !5
  %2869 = getelementptr inbounds %struct.ImGuiWindow, ptr %2868, i32 0, i32 20
  %2870 = getelementptr inbounds %struct.ImVec2, ptr %2869, i32 0, i32 1
  %2871 = load float, ptr %2870, align 4, !tbaa !250
  %2872 = fsub float %2867, %2871
  %2873 = load ptr, ptr %9, align 8, !tbaa !5
  %2874 = getelementptr inbounds %struct.ImGuiWindow, ptr %2873, i32 0, i32 14
  %2875 = getelementptr inbounds %struct.ImVec2, ptr %2874, i32 0, i32 1
  %2876 = load float, ptr %2875, align 4, !tbaa !227
  %2877 = fadd float %2872, %2876
  %2878 = load float, ptr %41, align 4, !tbaa !121
  %2879 = fadd float %2877, %2878
  %2880 = load ptr, ptr %9, align 8, !tbaa !5
  %2881 = getelementptr inbounds %struct.ImGuiWindow, ptr %2880, i32 0, i32 65
  %2882 = getelementptr inbounds %struct.ImRect, ptr %2881, i32 0, i32 0
  %2883 = getelementptr inbounds %struct.ImVec2, ptr %2882, i32 0, i32 1
  store float %2879, ptr %2883, align 4, !tbaa !255
  %2884 = load ptr, ptr %9, align 8, !tbaa !5
  %2885 = getelementptr inbounds %struct.ImGuiWindow, ptr %2884, i32 0, i32 65
  %2886 = getelementptr inbounds %struct.ImRect, ptr %2885, i32 0, i32 0
  %2887 = getelementptr inbounds %struct.ImVec2, ptr %2886, i32 0, i32 0
  %2888 = load float, ptr %2887, align 8, !tbaa !254
  %2889 = load ptr, ptr %9, align 8, !tbaa !5
  %2890 = getelementptr inbounds %struct.ImGuiWindow, ptr %2889, i32 0, i32 13
  %2891 = getelementptr inbounds %struct.ImVec2, ptr %2890, i32 0, i32 0
  %2892 = load float, ptr %2891, align 8, !tbaa !246
  %2893 = fcmp une float %2892, 0.000000e+00
  br i1 %2893, label %2894, label %2899

2894:                                             ; preds = %2770
  %2895 = load ptr, ptr %9, align 8, !tbaa !5
  %2896 = getelementptr inbounds %struct.ImGuiWindow, ptr %2895, i32 0, i32 13
  %2897 = getelementptr inbounds %struct.ImVec2, ptr %2896, i32 0, i32 0
  %2898 = load float, ptr %2897, align 8, !tbaa !246
  br label %2915

2899:                                             ; preds = %2770
  %2900 = load ptr, ptr %9, align 8, !tbaa !5
  %2901 = getelementptr inbounds %struct.ImGuiWindow, ptr %2900, i32 0, i32 10
  %2902 = getelementptr inbounds %struct.ImVec2, ptr %2901, i32 0, i32 0
  %2903 = load float, ptr %2902, align 8, !tbaa !153
  %2904 = load ptr, ptr %9, align 8, !tbaa !5
  %2905 = getelementptr inbounds %struct.ImGuiWindow, ptr %2904, i32 0, i32 14
  %2906 = getelementptr inbounds %struct.ImVec2, ptr %2905, i32 0, i32 0
  %2907 = load float, ptr %2906, align 8, !tbaa !164
  %2908 = fneg float %2907
  %2909 = call float @llvm.fmuladd.f32(float %2908, float 2.000000e+00, float %2903)
  %2910 = load ptr, ptr %9, align 8, !tbaa !5
  %2911 = getelementptr inbounds %struct.ImGuiWindow, ptr %2910, i32 0, i32 24
  %2912 = getelementptr inbounds %struct.ImVec2, ptr %2911, i32 0, i32 0
  %2913 = load float, ptr %2912, align 4, !tbaa !214
  %2914 = fsub float %2909, %2913
  br label %2915

2915:                                             ; preds = %2899, %2894
  %2916 = phi float [ %2898, %2894 ], [ %2914, %2899 ]
  %2917 = fadd float %2888, %2916
  %2918 = load ptr, ptr %9, align 8, !tbaa !5
  %2919 = getelementptr inbounds %struct.ImGuiWindow, ptr %2918, i32 0, i32 65
  %2920 = getelementptr inbounds %struct.ImRect, ptr %2919, i32 0, i32 1
  %2921 = getelementptr inbounds %struct.ImVec2, ptr %2920, i32 0, i32 0
  store float %2917, ptr %2921, align 8, !tbaa !256
  %2922 = load ptr, ptr %9, align 8, !tbaa !5
  %2923 = getelementptr inbounds %struct.ImGuiWindow, ptr %2922, i32 0, i32 65
  %2924 = getelementptr inbounds %struct.ImRect, ptr %2923, i32 0, i32 0
  %2925 = getelementptr inbounds %struct.ImVec2, ptr %2924, i32 0, i32 1
  %2926 = load float, ptr %2925, align 4, !tbaa !255
  %2927 = load ptr, ptr %9, align 8, !tbaa !5
  %2928 = getelementptr inbounds %struct.ImGuiWindow, ptr %2927, i32 0, i32 13
  %2929 = getelementptr inbounds %struct.ImVec2, ptr %2928, i32 0, i32 1
  %2930 = load float, ptr %2929, align 4, !tbaa !247
  %2931 = fcmp une float %2930, 0.000000e+00
  br i1 %2931, label %2932, label %2937

2932:                                             ; preds = %2915
  %2933 = load ptr, ptr %9, align 8, !tbaa !5
  %2934 = getelementptr inbounds %struct.ImGuiWindow, ptr %2933, i32 0, i32 13
  %2935 = getelementptr inbounds %struct.ImVec2, ptr %2934, i32 0, i32 1
  %2936 = load float, ptr %2935, align 4, !tbaa !247
  br label %2955

2937:                                             ; preds = %2915
  %2938 = load ptr, ptr %9, align 8, !tbaa !5
  %2939 = getelementptr inbounds %struct.ImGuiWindow, ptr %2938, i32 0, i32 10
  %2940 = getelementptr inbounds %struct.ImVec2, ptr %2939, i32 0, i32 1
  %2941 = load float, ptr %2940, align 4, !tbaa !155
  %2942 = load ptr, ptr %9, align 8, !tbaa !5
  %2943 = getelementptr inbounds %struct.ImGuiWindow, ptr %2942, i32 0, i32 14
  %2944 = getelementptr inbounds %struct.ImVec2, ptr %2943, i32 0, i32 1
  %2945 = load float, ptr %2944, align 4, !tbaa !227
  %2946 = fneg float %2945
  %2947 = call float @llvm.fmuladd.f32(float %2946, float 2.000000e+00, float %2941)
  %2948 = load float, ptr %41, align 4, !tbaa !121
  %2949 = fsub float %2947, %2948
  %2950 = load ptr, ptr %9, align 8, !tbaa !5
  %2951 = getelementptr inbounds %struct.ImGuiWindow, ptr %2950, i32 0, i32 24
  %2952 = getelementptr inbounds %struct.ImVec2, ptr %2951, i32 0, i32 1
  %2953 = load float, ptr %2952, align 4, !tbaa !216
  %2954 = fsub float %2949, %2953
  br label %2955

2955:                                             ; preds = %2937, %2932
  %2956 = phi float [ %2936, %2932 ], [ %2954, %2937 ]
  %2957 = fadd float %2926, %2956
  %2958 = load ptr, ptr %9, align 8, !tbaa !5
  %2959 = getelementptr inbounds %struct.ImGuiWindow, ptr %2958, i32 0, i32 65
  %2960 = getelementptr inbounds %struct.ImRect, ptr %2959, i32 0, i32 1
  %2961 = getelementptr inbounds %struct.ImVec2, ptr %2960, i32 0, i32 1
  store float %2957, ptr %2961, align 4, !tbaa !257
  %2962 = load ptr, ptr %9, align 8, !tbaa !5
  %2963 = getelementptr inbounds %struct.ImGuiWindow, ptr %2962, i32 0, i32 14
  %2964 = getelementptr inbounds %struct.ImVec2, ptr %2963, i32 0, i32 0
  %2965 = load float, ptr %2964, align 8, !tbaa !164
  %2966 = fadd float 0.000000e+00, %2965
  %2967 = load ptr, ptr %9, align 8, !tbaa !5
  %2968 = getelementptr inbounds %struct.ImGuiWindow, ptr %2967, i32 0, i32 20
  %2969 = getelementptr inbounds %struct.ImVec2, ptr %2968, i32 0, i32 0
  %2970 = load float, ptr %2969, align 4, !tbaa !248
  %2971 = fsub float %2966, %2970
  %2972 = load ptr, ptr %9, align 8, !tbaa !5
  %2973 = getelementptr inbounds %struct.ImGuiWindow, ptr %2972, i32 0, i32 58
  %2974 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2973, i32 0, i32 8
  %2975 = getelementptr inbounds %struct.ImVec1, ptr %2974, i32 0, i32 0
  store float %2971, ptr %2975, align 8, !tbaa !258
  %2976 = load ptr, ptr %9, align 8, !tbaa !5
  %2977 = getelementptr inbounds %struct.ImGuiWindow, ptr %2976, i32 0, i32 58
  %2978 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2977, i32 0, i32 10
  %2979 = getelementptr inbounds %struct.ImVec1, ptr %2978, i32 0, i32 0
  store float 0.000000e+00, ptr %2979, align 8, !tbaa !259
  %2980 = load ptr, ptr %9, align 8, !tbaa !5
  %2981 = getelementptr inbounds %struct.ImGuiWindow, ptr %2980, i32 0, i32 58
  %2982 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2981, i32 0, i32 9
  %2983 = getelementptr inbounds %struct.ImVec1, ptr %2982, i32 0, i32 0
  store float 0.000000e+00, ptr %2983, align 4, !tbaa !260
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #13
  %2984 = load ptr, ptr %9, align 8, !tbaa !5
  %2985 = getelementptr inbounds %struct.ImGuiWindow, ptr %2984, i32 0, i32 9
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #13
  %2986 = load ptr, ptr %9, align 8, !tbaa !5
  %2987 = getelementptr inbounds %struct.ImGuiWindow, ptr %2986, i32 0, i32 58
  %2988 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2987, i32 0, i32 8
  %2989 = getelementptr inbounds %struct.ImVec1, ptr %2988, i32 0, i32 0
  %2990 = load float, ptr %2989, align 8, !tbaa !258
  %2991 = load ptr, ptr %9, align 8, !tbaa !5
  %2992 = getelementptr inbounds %struct.ImGuiWindow, ptr %2991, i32 0, i32 58
  %2993 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2992, i32 0, i32 9
  %2994 = getelementptr inbounds %struct.ImVec1, ptr %2993, i32 0, i32 0
  %2995 = load float, ptr %2994, align 4, !tbaa !260
  %2996 = fadd float %2990, %2995
  %2997 = load float, ptr %41, align 4, !tbaa !121
  %2998 = load ptr, ptr %9, align 8, !tbaa !5
  %2999 = getelementptr inbounds %struct.ImGuiWindow, ptr %2998, i32 0, i32 14
  %3000 = getelementptr inbounds %struct.ImVec2, ptr %2999, i32 0, i32 1
  %3001 = load float, ptr %3000, align 4, !tbaa !227
  %3002 = fadd float %2997, %3001
  %3003 = load ptr, ptr %9, align 8, !tbaa !5
  %3004 = getelementptr inbounds %struct.ImGuiWindow, ptr %3003, i32 0, i32 20
  %3005 = getelementptr inbounds %struct.ImVec2, ptr %3004, i32 0, i32 1
  %3006 = load float, ptr %3005, align 4, !tbaa !250
  %3007 = fsub float %3002, %3006
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %103, float noundef %2996, float noundef %3007)
  %3008 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2985, ptr noundef nonnull align 4 dereferenceable(8) %103)
  store <2 x float> %3008, ptr %102, align 4
  %3009 = load ptr, ptr %9, align 8, !tbaa !5
  %3010 = getelementptr inbounds %struct.ImGuiWindow, ptr %3009, i32 0, i32 58
  %3011 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3010, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3011, ptr align 4 %102, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #13
  %3012 = load ptr, ptr %9, align 8, !tbaa !5
  %3013 = getelementptr inbounds %struct.ImGuiWindow, ptr %3012, i32 0, i32 58
  %3014 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3013, i32 0, i32 2
  %3015 = load ptr, ptr %9, align 8, !tbaa !5
  %3016 = getelementptr inbounds %struct.ImGuiWindow, ptr %3015, i32 0, i32 58
  %3017 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3016, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3017, ptr align 8 %3014, i64 8, i1 false), !tbaa.struct !120
  %3018 = load ptr, ptr %9, align 8, !tbaa !5
  %3019 = getelementptr inbounds %struct.ImGuiWindow, ptr %3018, i32 0, i32 58
  %3020 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3019, i32 0, i32 0
  %3021 = load ptr, ptr %9, align 8, !tbaa !5
  %3022 = getelementptr inbounds %struct.ImGuiWindow, ptr %3021, i32 0, i32 58
  %3023 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3022, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3023, ptr align 8 %3020, i64 8, i1 false), !tbaa.struct !120
  %3024 = load ptr, ptr %9, align 8, !tbaa !5
  %3025 = getelementptr inbounds %struct.ImGuiWindow, ptr %3024, i32 0, i32 58
  %3026 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3025, i32 0, i32 2
  %3027 = load ptr, ptr %9, align 8, !tbaa !5
  %3028 = getelementptr inbounds %struct.ImGuiWindow, ptr %3027, i32 0, i32 58
  %3029 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3028, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3029, ptr align 8 %3026, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %104, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %3030 = load ptr, ptr %9, align 8, !tbaa !5
  %3031 = getelementptr inbounds %struct.ImGuiWindow, ptr %3030, i32 0, i32 58
  %3032 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3031, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3032, ptr align 4 %104, i64 8, i1 false), !tbaa.struct !120
  %3033 = load ptr, ptr %9, align 8, !tbaa !5
  %3034 = getelementptr inbounds %struct.ImGuiWindow, ptr %3033, i32 0, i32 58
  %3035 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3034, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3035, ptr align 4 %3032, i64 8, i1 false), !tbaa.struct !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #13
  %3036 = load ptr, ptr %9, align 8, !tbaa !5
  %3037 = getelementptr inbounds %struct.ImGuiWindow, ptr %3036, i32 0, i32 58
  %3038 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3037, i32 0, i32 7
  store float 0.000000e+00, ptr %3038, align 4, !tbaa !261
  %3039 = load ptr, ptr %9, align 8, !tbaa !5
  %3040 = getelementptr inbounds %struct.ImGuiWindow, ptr %3039, i32 0, i32 58
  %3041 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3040, i32 0, i32 6
  store float 0.000000e+00, ptr %3041, align 8, !tbaa !262
  %3042 = load ptr, ptr %9, align 8, !tbaa !5
  %3043 = getelementptr inbounds %struct.ImGuiWindow, ptr %3042, i32 0, i32 58
  %3044 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3043, i32 0, i32 15
  store i32 0, ptr %3044, align 4, !tbaa !263
  %3045 = load ptr, ptr %9, align 8, !tbaa !5
  %3046 = getelementptr inbounds %struct.ImGuiWindow, ptr %3045, i32 0, i32 58
  %3047 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3046, i32 0, i32 16
  store i32 1, ptr %3047, align 8, !tbaa !264
  %3048 = load ptr, ptr %9, align 8, !tbaa !5
  %3049 = getelementptr inbounds %struct.ImGuiWindow, ptr %3048, i32 0, i32 58
  %3050 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3049, i32 0, i32 18
  %3051 = load i32, ptr %3050, align 8, !tbaa !265
  %3052 = load ptr, ptr %9, align 8, !tbaa !5
  %3053 = getelementptr inbounds %struct.ImGuiWindow, ptr %3052, i32 0, i32 58
  %3054 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3053, i32 0, i32 17
  store i32 %3051, ptr %3054, align 4, !tbaa !266
  %3055 = load ptr, ptr %9, align 8, !tbaa !5
  %3056 = getelementptr inbounds %struct.ImGuiWindow, ptr %3055, i32 0, i32 58
  %3057 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3056, i32 0, i32 18
  store i32 0, ptr %3057, align 8, !tbaa !265
  %3058 = load i32, ptr %6, align 4, !tbaa !9
  %3059 = and i32 %3058, 16777216
  %3060 = icmp ne i32 %3059, 0
  br i1 %3060, label %3061, label %3066

3061:                                             ; preds = %2955
  %3062 = load ptr, ptr %19, align 8, !tbaa !5
  %3063 = getelementptr inbounds %struct.ImGuiWindow, ptr %3062, i32 0, i32 58
  %3064 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3063, i32 0, i32 19
  %3065 = load i32, ptr %3064, align 4, !tbaa !267
  br label %3067

3066:                                             ; preds = %2955
  br label %3067

3067:                                             ; preds = %3066, %3061
  %3068 = phi i32 [ %3065, %3061 ], [ 0, %3066 ]
  %3069 = load ptr, ptr %9, align 8, !tbaa !5
  %3070 = getelementptr inbounds %struct.ImGuiWindow, ptr %3069, i32 0, i32 58
  %3071 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3070, i32 0, i32 19
  store i32 %3068, ptr %3071, align 4, !tbaa !267
  %3072 = load ptr, ptr %9, align 8, !tbaa !5
  %3073 = getelementptr inbounds %struct.ImGuiWindow, ptr %3072, i32 0, i32 58
  %3074 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3073, i32 0, i32 20
  store i8 0, ptr %3074, align 8, !tbaa !268
  %3075 = load ptr, ptr %9, align 8, !tbaa !5
  %3076 = getelementptr inbounds %struct.ImGuiWindow, ptr %3075, i32 0, i32 21
  %3077 = getelementptr inbounds %struct.ImVec2, ptr %3076, i32 0, i32 1
  %3078 = load float, ptr %3077, align 4, !tbaa !228
  %3079 = fcmp ogt float %3078, 0.000000e+00
  %3080 = load ptr, ptr %9, align 8, !tbaa !5
  %3081 = getelementptr inbounds %struct.ImGuiWindow, ptr %3080, i32 0, i32 58
  %3082 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3081, i32 0, i32 21
  %3083 = zext i1 %3079 to i8
  store i8 %3083, ptr %3082, align 1, !tbaa !269
  %3084 = load ptr, ptr %9, align 8, !tbaa !5
  %3085 = getelementptr inbounds %struct.ImGuiWindow, ptr %3084, i32 0, i32 58
  %3086 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3085, i32 0, i32 22
  store i8 0, ptr %3086, align 2, !tbaa !270
  %3087 = load ptr, ptr %9, align 8, !tbaa !5
  %3088 = getelementptr inbounds %struct.ImGuiWindow, ptr %3087, i32 0, i32 58
  %3089 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3088, i32 0, i32 25
  %3090 = load ptr, ptr %8, align 8, !tbaa !5
  %3091 = getelementptr inbounds %struct.ImGuiStyle, ptr %3090, i32 0, i32 14
  %3092 = getelementptr inbounds %struct.ImVec2, ptr %3091, i32 0, i32 0
  %3093 = load float, ptr %3092, align 4, !tbaa !165
  %3094 = load i8, ptr %13, align 1, !tbaa !69, !range !65, !noundef !66
  %3095 = trunc i8 %3094 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36) %3089, i32 noundef 3, float noundef %3093, i1 noundef zeroext %3095)
  %3096 = load ptr, ptr %9, align 8, !tbaa !5
  %3097 = getelementptr inbounds %struct.ImGuiWindow, ptr %3096, i32 0, i32 58
  %3098 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3097, i32 0, i32 26
  store i32 0, ptr %3098, align 8, !tbaa !271
  %3099 = load ptr, ptr %9, align 8, !tbaa !5
  %3100 = getelementptr inbounds %struct.ImGuiWindow, ptr %3099, i32 0, i32 58
  %3101 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3100, i32 0, i32 27
  store i32 0, ptr %3101, align 4, !tbaa !272
  %3102 = load ptr, ptr %9, align 8, !tbaa !5
  %3103 = getelementptr inbounds %struct.ImGuiWindow, ptr %3102, i32 0, i32 58
  %3104 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3103, i32 0, i32 28
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3104, i32 noundef 0)
  %3105 = load ptr, ptr %9, align 8, !tbaa !5
  %3106 = getelementptr inbounds %struct.ImGuiWindow, ptr %3105, i32 0, i32 72
  %3107 = load ptr, ptr %9, align 8, !tbaa !5
  %3108 = getelementptr inbounds %struct.ImGuiWindow, ptr %3107, i32 0, i32 58
  %3109 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3108, i32 0, i32 29
  store ptr %3106, ptr %3109, align 8, !tbaa !273
  %3110 = load ptr, ptr %9, align 8, !tbaa !5
  %3111 = getelementptr inbounds %struct.ImGuiWindow, ptr %3110, i32 0, i32 58
  %3112 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3111, i32 0, i32 30
  store ptr null, ptr %3112, align 8, !tbaa !274
  %3113 = load ptr, ptr %9, align 8, !tbaa !5
  %3114 = getelementptr inbounds %struct.ImGuiWindow, ptr %3113, i32 0, i32 58
  %3115 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3114, i32 0, i32 31
  store i32 1, ptr %3115, align 8, !tbaa !275
  %3116 = load ptr, ptr %19, align 8, !tbaa !5
  %3117 = icmp ne ptr %3116, null
  br i1 %3117, label %3118, label %3123

3118:                                             ; preds = %3067
  %3119 = load ptr, ptr %19, align 8, !tbaa !5
  %3120 = getelementptr inbounds %struct.ImGuiWindow, ptr %3119, i32 0, i32 58
  %3121 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3120, i32 0, i32 31
  %3122 = load i32, ptr %3121, align 8, !tbaa !275
  br label %3124

3123:                                             ; preds = %3067
  br label %3124

3124:                                             ; preds = %3123, %3118
  %3125 = phi i32 [ %3122, %3118 ], [ 1, %3123 ]
  %3126 = load ptr, ptr %9, align 8, !tbaa !5
  %3127 = getelementptr inbounds %struct.ImGuiWindow, ptr %3126, i32 0, i32 58
  %3128 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3127, i32 0, i32 32
  store i32 %3125, ptr %3128, align 4, !tbaa !276
  %3129 = load ptr, ptr %9, align 8, !tbaa !5
  %3130 = getelementptr inbounds %struct.ImGuiWindow, ptr %3129, i32 0, i32 58
  %3131 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3130, i32 0, i32 34
  store i32 -1, ptr %3131, align 4, !tbaa !277
  %3132 = load ptr, ptr %9, align 8, !tbaa !5
  %3133 = getelementptr inbounds %struct.ImGuiWindow, ptr %3132, i32 0, i32 58
  %3134 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3133, i32 0, i32 33
  store i32 -1, ptr %3134, align 8, !tbaa !278
  %3135 = load ptr, ptr %9, align 8, !tbaa !5
  %3136 = getelementptr inbounds %struct.ImGuiWindow, ptr %3135, i32 0, i32 71
  %3137 = load float, ptr %3136, align 4, !tbaa !223
  %3138 = load ptr, ptr %9, align 8, !tbaa !5
  %3139 = getelementptr inbounds %struct.ImGuiWindow, ptr %3138, i32 0, i32 58
  %3140 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3139, i32 0, i32 36
  store float %3137, ptr %3140, align 4, !tbaa !279
  %3141 = load ptr, ptr %9, align 8, !tbaa !5
  %3142 = getelementptr inbounds %struct.ImGuiWindow, ptr %3141, i32 0, i32 58
  %3143 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3142, i32 0, i32 37
  store float -1.000000e+00, ptr %3143, align 8, !tbaa !280
  %3144 = load ptr, ptr %9, align 8, !tbaa !5
  %3145 = getelementptr inbounds %struct.ImGuiWindow, ptr %3144, i32 0, i32 58
  %3146 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3145, i32 0, i32 39
  call void @_ZN8ImVectorIiE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3146, i32 noundef 0)
  %3147 = load ptr, ptr %9, align 8, !tbaa !5
  %3148 = getelementptr inbounds %struct.ImGuiWindow, ptr %3147, i32 0, i32 58
  %3149 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3148, i32 0, i32 40
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3149, i32 noundef 0)
  %3150 = load ptr, ptr %9, align 8, !tbaa !5
  %3151 = getelementptr inbounds %struct.ImGuiWindow, ptr %3150, i32 0, i32 58
  %3152 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3151, i32 0, i32 41
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3152, i32 noundef 0)
  %3153 = load ptr, ptr %9, align 8, !tbaa !5
  %3154 = getelementptr inbounds %struct.ImGuiWindow, ptr %3153, i32 0, i32 58
  %3155 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3154, i32 0, i32 42
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3155, i32 noundef 0)
  %3156 = load ptr, ptr %19, align 8, !tbaa !5
  %3157 = icmp ne ptr %3156, null
  br i1 %3157, label %3158, label %3163

3158:                                             ; preds = %3124
  %3159 = load ptr, ptr %19, align 8, !tbaa !5
  %3160 = getelementptr inbounds %struct.ImGuiWindow, ptr %3159, i32 0, i32 58
  %3161 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3160, i32 0, i32 35
  %3162 = load i32, ptr %3161, align 8, !tbaa !281
  br label %3164

3163:                                             ; preds = %3124
  br label %3164

3164:                                             ; preds = %3163, %3158
  %3165 = phi i32 [ %3162, %3158 ], [ 0, %3163 ]
  %3166 = load ptr, ptr %9, align 8, !tbaa !5
  %3167 = getelementptr inbounds %struct.ImGuiWindow, ptr %3166, i32 0, i32 58
  %3168 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3167, i32 0, i32 35
  store i32 %3165, ptr %3168, align 8, !tbaa !281
  %3169 = load ptr, ptr %19, align 8, !tbaa !5
  %3170 = icmp ne ptr %3169, null
  br i1 %3170, label %3171, label %3178

3171:                                             ; preds = %3164
  %3172 = load ptr, ptr %9, align 8, !tbaa !5
  %3173 = getelementptr inbounds %struct.ImGuiWindow, ptr %3172, i32 0, i32 58
  %3174 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3173, i32 0, i32 39
  %3175 = load ptr, ptr %9, align 8, !tbaa !5
  %3176 = getelementptr inbounds %struct.ImGuiWindow, ptr %3175, i32 0, i32 58
  %3177 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3176, i32 0, i32 35
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %3174, ptr noundef nonnull align 4 dereferenceable(4) %3177)
  br label %3178

3178:                                             ; preds = %3171, %3164
  %3179 = load ptr, ptr %9, align 8, !tbaa !5
  %3180 = getelementptr inbounds %struct.ImGuiWindow, ptr %3179, i32 0, i32 43
  %3181 = load i8, ptr %3180, align 4, !tbaa !177
  %3182 = sext i8 %3181 to i32
  %3183 = icmp sgt i32 %3182, 0
  br i1 %3183, label %3184, label %3189

3184:                                             ; preds = %3178
  %3185 = load ptr, ptr %9, align 8, !tbaa !5
  %3186 = getelementptr inbounds %struct.ImGuiWindow, ptr %3185, i32 0, i32 43
  %3187 = load i8, ptr %3186, align 4, !tbaa !177
  %3188 = add i8 %3187, -1
  store i8 %3188, ptr %3186, align 4, !tbaa !177
  br label %3189

3189:                                             ; preds = %3184, %3178
  %3190 = load ptr, ptr %9, align 8, !tbaa !5
  %3191 = getelementptr inbounds %struct.ImGuiWindow, ptr %3190, i32 0, i32 44
  %3192 = load i8, ptr %3191, align 1, !tbaa !178
  %3193 = sext i8 %3192 to i32
  %3194 = icmp sgt i32 %3193, 0
  br i1 %3194, label %3195, label %3200

3195:                                             ; preds = %3189
  %3196 = load ptr, ptr %9, align 8, !tbaa !5
  %3197 = getelementptr inbounds %struct.ImGuiWindow, ptr %3196, i32 0, i32 44
  %3198 = load i8, ptr %3197, align 1, !tbaa !178
  %3199 = add i8 %3198, -1
  store i8 %3199, ptr %3197, align 1, !tbaa !178
  br label %3200

3200:                                             ; preds = %3195, %3189
  %3201 = load i8, ptr %66, align 1, !tbaa !69, !range !65, !noundef !66
  %3202 = trunc i8 %3201 to i1
  br i1 %3202, label %3203, label %3206

3203:                                             ; preds = %3200
  %3204 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %3204)
  %3205 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %3205, i1 noundef zeroext false)
  br label %3206

3206:                                             ; preds = %3203, %3200
  %3207 = load ptr, ptr %5, align 8, !tbaa !5
  %3208 = icmp ne ptr %3207, null
  br i1 %3208, label %3209, label %3244

3209:                                             ; preds = %3206
  %3210 = load ptr, ptr %9, align 8, !tbaa !5
  %3211 = getelementptr inbounds %struct.ImGuiWindow, ptr %3210, i32 0, i32 5
  %3212 = load ptr, ptr %3211, align 8, !tbaa !140
  %3213 = getelementptr inbounds %struct.ImGuiViewport, ptr %3212, i32 0, i32 17
  %3214 = load i8, ptr %3213, align 2, !tbaa !282, !range !65, !noundef !66
  %3215 = trunc i8 %3214 to i1
  br i1 %3215, label %3216, label %3244

3216:                                             ; preds = %3209
  %3217 = load ptr, ptr %9, align 8, !tbaa !5
  %3218 = getelementptr inbounds %struct.ImGuiWindow, ptr %3217, i32 0, i32 5
  %3219 = load ptr, ptr %3218, align 8, !tbaa !140
  %3220 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %3221 = icmp ne ptr %3219, %3220
  br i1 %3221, label %3222, label %3244

3222:                                             ; preds = %3216
  %3223 = load ptr, ptr %9, align 8, !tbaa !5
  %3224 = getelementptr inbounds %struct.ImGuiWindow, ptr %3223, i32 0, i32 99
  %3225 = load i8, ptr %3224, align 2
  %3226 = and i8 %3225, 1
  %3227 = trunc i8 %3226 to i1
  br i1 %3227, label %3228, label %3235

3228:                                             ; preds = %3222
  %3229 = load ptr, ptr %9, align 8, !tbaa !5
  %3230 = getelementptr inbounds %struct.ImGuiWindow, ptr %3229, i32 0, i32 99
  %3231 = load i8, ptr %3230, align 2
  %3232 = lshr i8 %3231, 1
  %3233 = and i8 %3232, 1
  %3234 = trunc i8 %3233 to i1
  br i1 %3234, label %3235, label %3243

3235:                                             ; preds = %3228, %3222
  %3236 = load ptr, ptr %9, align 8, !tbaa !5
  %3237 = getelementptr inbounds %struct.ImGuiWindow, ptr %3236, i32 0, i32 5
  %3238 = load ptr, ptr %3237, align 8, !tbaa !140
  %3239 = getelementptr inbounds %struct.ImGuiViewport, ptr %3238, i32 0, i32 17
  store i8 0, ptr %3239, align 2, !tbaa !282
  %3240 = load ptr, ptr %7, align 8, !tbaa !5
  %3241 = getelementptr inbounds %struct.ImGuiContext, ptr %3240, i32 0, i32 136
  store i8 0, ptr %3241, align 8, !tbaa !283
  %3242 = load ptr, ptr %5, align 8, !tbaa !5
  store i8 0, ptr %3242, align 1, !tbaa !69
  br label %3243

3243:                                             ; preds = %3235, %3228
  br label %3244

3244:                                             ; preds = %3243, %3216, %3209, %3206
  %3245 = load i32, ptr %6, align 4, !tbaa !9
  %3246 = and i32 %3245, 1
  %3247 = icmp ne i32 %3246, 0
  br i1 %3247, label %3258, label %3248

3248:                                             ; preds = %3244
  %3249 = load ptr, ptr %9, align 8, !tbaa !5
  %3250 = getelementptr inbounds %struct.ImGuiWindow, ptr %3249, i32 0, i32 99
  %3251 = load i8, ptr %3250, align 2
  %3252 = and i8 %3251, 1
  %3253 = trunc i8 %3252 to i1
  br i1 %3253, label %3258, label %3254

3254:                                             ; preds = %3248
  %3255 = load ptr, ptr %9, align 8, !tbaa !5
  %3256 = load ptr, ptr %4, align 8, !tbaa !5
  %3257 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %3255, ptr noundef nonnull align 4 dereferenceable(16) %83, ptr noundef %3256, ptr noundef %3257)
  br label %3258

3258:                                             ; preds = %3254, %3248, %3244
  %3259 = load ptr, ptr %9, align 8, !tbaa !5
  %3260 = getelementptr inbounds %struct.ImGuiWindow, ptr %3259, i32 0, i32 66
  %3261 = getelementptr inbounds %struct.ImVec2ih, ptr %3260, i32 0, i32 1
  store i16 0, ptr %3261, align 2, !tbaa !284
  %3262 = load ptr, ptr %9, align 8, !tbaa !5
  %3263 = getelementptr inbounds %struct.ImGuiWindow, ptr %3262, i32 0, i32 66
  %3264 = getelementptr inbounds %struct.ImVec2ih, ptr %3263, i32 0, i32 0
  store i16 0, ptr %3264, align 8, !tbaa !285
  %3265 = load ptr, ptr %7, align 8, !tbaa !5
  %3266 = getelementptr inbounds %struct.ImGuiContext, ptr %3265, i32 0, i32 3
  %3267 = getelementptr inbounds %struct.ImGuiIO, ptr %3266, i32 0, i32 0
  %3268 = load i32, ptr %3267, align 8, !tbaa !156
  %3269 = and i32 %3268, 64
  %3270 = icmp ne i32 %3269, 0
  br i1 %3270, label %3271, label %3341

3271:                                             ; preds = %3258
  %3272 = load ptr, ptr %7, align 8, !tbaa !5
  %3273 = getelementptr inbounds %struct.ImGuiContext, ptr %3272, i32 0, i32 36
  %3274 = load ptr, ptr %3273, align 8, !tbaa !286
  %3275 = load ptr, ptr %9, align 8, !tbaa !5
  %3276 = icmp eq ptr %3274, %3275
  br i1 %3276, label %3277, label %3302

3277:                                             ; preds = %3271
  %3278 = load ptr, ptr %7, align 8, !tbaa !5
  %3279 = getelementptr inbounds %struct.ImGuiContext, ptr %3278, i32 0, i32 3
  %3280 = getelementptr inbounds %struct.ImGuiIO, ptr %3279, i32 0, i32 20
  %3281 = load i8, ptr %3280, align 1, !tbaa !287, !range !65, !noundef !66
  %3282 = trunc i8 %3281 to i1
  %3283 = zext i1 %3282 to i32
  %3284 = load ptr, ptr %7, align 8, !tbaa !5
  %3285 = getelementptr inbounds %struct.ImGuiContext, ptr %3284, i32 0, i32 3
  %3286 = getelementptr inbounds %struct.ImGuiIO, ptr %3285, i32 0, i32 48
  %3287 = load i8, ptr %3286, align 1, !tbaa !288, !range !65, !noundef !66
  %3288 = trunc i8 %3287 to i1
  %3289 = zext i1 %3288 to i32
  %3290 = icmp eq i32 %3283, %3289
  br i1 %3290, label %3291, label %3302

3291:                                             ; preds = %3277
  %3292 = load ptr, ptr %9, align 8, !tbaa !5
  %3293 = getelementptr inbounds %struct.ImGuiWindow, ptr %3292, i32 0, i32 81
  %3294 = load ptr, ptr %3293, align 8, !tbaa !238
  %3295 = getelementptr inbounds %struct.ImGuiWindow, ptr %3294, i32 0, i32 2
  %3296 = load i32, ptr %3295, align 4, !tbaa !98
  %3297 = and i32 %3296, 2097152
  %3298 = icmp eq i32 %3297, 0
  br i1 %3298, label %3299, label %3301

3299:                                             ; preds = %3291
  %3300 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef %3300)
  br label %3301

3301:                                             ; preds = %3299, %3291
  br label %3302

3302:                                             ; preds = %3301, %3277, %3271
  %3303 = load ptr, ptr %7, align 8, !tbaa !5
  %3304 = getelementptr inbounds %struct.ImGuiContext, ptr %3303, i32 0, i32 148
  %3305 = load i8, ptr %3304, align 4, !tbaa !289, !range !65, !noundef !66
  %3306 = trunc i8 %3305 to i1
  br i1 %3306, label %3307, label %3340

3307:                                             ; preds = %3302
  %3308 = load i32, ptr %6, align 4, !tbaa !9
  %3309 = and i32 %3308, 2097152
  %3310 = icmp ne i32 %3309, 0
  br i1 %3310, label %3340, label %3311

3311:                                             ; preds = %3307
  %3312 = load ptr, ptr %7, align 8, !tbaa !5
  %3313 = getelementptr inbounds %struct.ImGuiContext, ptr %3312, i32 0, i32 36
  %3314 = load ptr, ptr %3313, align 8, !tbaa !286
  %3315 = icmp eq ptr %3314, null
  br i1 %3315, label %3324, label %3316

3316:                                             ; preds = %3311
  %3317 = load ptr, ptr %7, align 8, !tbaa !5
  %3318 = getelementptr inbounds %struct.ImGuiContext, ptr %3317, i32 0, i32 36
  %3319 = load ptr, ptr %3318, align 8, !tbaa !286
  %3320 = getelementptr inbounds %struct.ImGuiWindow, ptr %3319, i32 0, i32 81
  %3321 = load ptr, ptr %3320, align 8, !tbaa !238
  %3322 = load ptr, ptr %9, align 8, !tbaa !5
  %3323 = icmp ne ptr %3321, %3322
  br i1 %3323, label %3324, label %3339

3324:                                             ; preds = %3316, %3311
  %3325 = load ptr, ptr %9, align 8, !tbaa !5
  %3326 = load ptr, ptr %9, align 8, !tbaa !5
  %3327 = getelementptr inbounds %struct.ImGuiWindow, ptr %3326, i32 0, i32 81
  %3328 = load ptr, ptr %3327, align 8, !tbaa !238
  %3329 = icmp eq ptr %3325, %3328
  br i1 %3329, label %3330, label %3338

3330:                                             ; preds = %3324
  %3331 = load ptr, ptr %9, align 8, !tbaa !5
  %3332 = getelementptr inbounds %struct.ImGuiWindow, ptr %3331, i32 0, i32 2
  %3333 = load i32, ptr %3332, align 4, !tbaa !98
  %3334 = and i32 %3333, 536870912
  %3335 = icmp ne i32 %3334, 0
  br i1 %3335, label %3338, label %3336

3336:                                             ; preds = %3330
  %3337 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef %3337)
  br label %3338

3338:                                             ; preds = %3336, %3330, %3324
  br label %3339

3339:                                             ; preds = %3338, %3316
  br label %3340

3340:                                             ; preds = %3339, %3307, %3302
  br label %3341

3341:                                             ; preds = %3340, %3258
  %3342 = load ptr, ptr %9, align 8, !tbaa !5
  %3343 = getelementptr inbounds %struct.ImGuiWindow, ptr %3342, i32 0, i32 99
  %3344 = load i8, ptr %3343, align 2
  %3345 = and i8 %3344, 1
  %3346 = trunc i8 %3345 to i1
  br i1 %3346, label %3347, label %3357

3347:                                             ; preds = %3341
  %3348 = load ptr, ptr %9, align 8, !tbaa !5
  %3349 = load ptr, ptr %9, align 8, !tbaa !5
  %3350 = getelementptr inbounds %struct.ImGuiWindow, ptr %3349, i32 0, i32 1
  %3351 = load i32, ptr %3350, align 8, !tbaa !186
  %3352 = load ptr, ptr %9, align 8, !tbaa !5
  %3353 = getelementptr inbounds %struct.ImGuiWindow, ptr %3352, i32 0, i32 96
  %3354 = load i32, ptr %3353, align 4, !tbaa !290
  %3355 = load ptr, ptr %9, align 8, !tbaa !5
  %3356 = getelementptr inbounds %struct.ImGuiWindow, ptr %3355, i32 0, i32 97
  call void @_ZN5ImGui15SetLastItemDataEP11ImGuiWindowjiRK6ImRect(ptr noundef %3348, i32 noundef %3351, i32 noundef %3354, ptr noundef nonnull align 4 dereferenceable(16) %3356)
  br label %3367

3357:                                             ; preds = %3341
  %3358 = load ptr, ptr %9, align 8, !tbaa !5
  %3359 = load ptr, ptr %9, align 8, !tbaa !5
  %3360 = getelementptr inbounds %struct.ImGuiWindow, ptr %3359, i32 0, i32 18
  %3361 = load i32, ptr %3360, align 4, !tbaa !291
  %3362 = getelementptr inbounds %struct.ImRect, ptr %83, i32 0, i32 0
  %3363 = getelementptr inbounds %struct.ImRect, ptr %83, i32 0, i32 1
  %3364 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %3362, ptr noundef nonnull align 4 dereferenceable(8) %3363, i1 noundef zeroext false)
  %3365 = zext i1 %3364 to i64
  %3366 = select i1 %3364, i32 1, i32 0
  call void @_ZN5ImGui15SetLastItemDataEP11ImGuiWindowjiRK6ImRect(ptr noundef %3358, i32 noundef %3361, i32 noundef %3366, ptr noundef nonnull align 4 dereferenceable(16) %83)
  br label %3367

3367:                                             ; preds = %3357, %3347
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #13
  br label %3374

3368:                                             ; preds = %715
  %3369 = load ptr, ptr %9, align 8, !tbaa !5
  %3370 = load ptr, ptr %9, align 8, !tbaa !5
  %3371 = getelementptr inbounds %struct.ImGuiWindow, ptr %3370, i32 0, i32 5
  %3372 = load ptr, ptr %3371, align 8, !tbaa !140
  call void @_ZN5ImGuiL18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %3369, ptr noundef %3372)
  %3373 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %3373)
  br label %3374

3374:                                             ; preds = %3368, %3367
  %3375 = load i32, ptr %6, align 4, !tbaa !9
  %3376 = and i32 %3375, 536870912
  %3377 = icmp ne i32 %3376, 0
  br i1 %3377, label %3385, label %3378

3378:                                             ; preds = %3374
  %3379 = load ptr, ptr %9, align 8, !tbaa !5
  %3380 = getelementptr inbounds %struct.ImGuiWindow, ptr %3379, i32 0, i32 61
  %3381 = getelementptr inbounds %struct.ImRect, ptr %3380, i32 0, i32 0
  %3382 = load ptr, ptr %9, align 8, !tbaa !5
  %3383 = getelementptr inbounds %struct.ImGuiWindow, ptr %3382, i32 0, i32 61
  %3384 = getelementptr inbounds %struct.ImRect, ptr %3383, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %3381, ptr noundef nonnull align 4 dereferenceable(8) %3384, i1 noundef zeroext true)
  br label %3385

3385:                                             ; preds = %3378, %3374
  %3386 = load i8, ptr %12, align 1, !tbaa !69, !range !65, !noundef !66
  %3387 = trunc i8 %3386 to i1
  br i1 %3387, label %3388, label %3391

3388:                                             ; preds = %3385
  %3389 = load ptr, ptr %9, align 8, !tbaa !5
  %3390 = getelementptr inbounds %struct.ImGuiWindow, ptr %3389, i32 0, i32 30
  store i8 0, ptr %3390, align 1, !tbaa !292
  br label %3391

3391:                                             ; preds = %3388, %3385
  %3392 = load ptr, ptr %9, align 8, !tbaa !5
  %3393 = getelementptr inbounds %struct.ImGuiWindow, ptr %3392, i32 0, i32 39
  %3394 = load i16, ptr %3393, align 2, !tbaa !293
  %3395 = add i16 %3394, 1
  store i16 %3395, ptr %3393, align 2, !tbaa !293
  %3396 = load ptr, ptr %7, align 8, !tbaa !5
  %3397 = getelementptr inbounds %struct.ImGuiContext, ptr %3396, i32 0, i32 72
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(144) %3397)
  %3398 = load ptr, ptr %9, align 8, !tbaa !5
  %3399 = getelementptr inbounds %struct.ImGuiWindow, ptr %3398, i32 0, i32 99
  %3400 = load i8, ptr %3399, align 2
  %3401 = and i8 %3400, 1
  %3402 = trunc i8 %3401 to i1
  br i1 %3402, label %3403, label %3425

3403:                                             ; preds = %3391
  %3404 = load ptr, ptr %9, align 8, !tbaa !5
  %3405 = getelementptr inbounds %struct.ImGuiWindow, ptr %3404, i32 0, i32 99
  %3406 = load i8, ptr %3405, align 2
  %3407 = lshr i8 %3406, 1
  %3408 = and i8 %3407, 1
  %3409 = trunc i8 %3408 to i1
  br i1 %3409, label %3425, label %3410

3410:                                             ; preds = %3403
  %3411 = load ptr, ptr %9, align 8, !tbaa !5
  %3412 = getelementptr inbounds %struct.ImGuiWindow, ptr %3411, i32 0, i32 69
  %3413 = load i32, ptr %3412, align 4, !tbaa !294
  %3414 = load ptr, ptr %7, align 8, !tbaa !5
  %3415 = getelementptr inbounds %struct.ImGuiContext, ptr %3414, i32 0, i32 14
  %3416 = load i32, ptr %3415, align 8, !tbaa !68
  %3417 = icmp eq i32 %3413, %3416
  br i1 %3417, label %3418, label %3421

3418:                                             ; preds = %3410
  %3419 = load ptr, ptr %9, align 8, !tbaa !5
  %3420 = getelementptr inbounds %struct.ImGuiWindow, ptr %3419, i32 0, i32 49
  store i32 1, ptr %3420, align 8, !tbaa !91
  br label %3424

3421:                                             ; preds = %3410
  %3422 = load ptr, ptr %9, align 8, !tbaa !5
  %3423 = getelementptr inbounds %struct.ImGuiWindow, ptr %3422, i32 0, i32 48
  store i32 1, ptr %3423, align 4, !tbaa !151
  br label %3424

3424:                                             ; preds = %3421, %3418
  br label %3425

3425:                                             ; preds = %3424, %3403, %3391
  %3426 = load i32, ptr %6, align 4, !tbaa !9
  %3427 = and i32 %3426, 16777216
  %3428 = icmp ne i32 %3427, 0
  br i1 %3428, label %3429, label %3521

3429:                                             ; preds = %3425
  %3430 = load i32, ptr %6, align 4, !tbaa !9
  %3431 = and i32 %3430, 1
  %3432 = icmp ne i32 %3431, 0
  br i1 %3432, label %3439, label %3433

3433:                                             ; preds = %3429
  %3434 = load ptr, ptr %9, align 8, !tbaa !5
  %3435 = getelementptr inbounds %struct.ImGuiWindow, ptr %3434, i32 0, i32 99
  %3436 = load i8, ptr %3435, align 2
  %3437 = and i8 %3436, 1
  %3438 = trunc i8 %3437 to i1
  br label %3439

3439:                                             ; preds = %3433, %3429
  %3440 = phi i1 [ true, %3429 ], [ %3438, %3433 ]
  br i1 %3440, label %3441, label %3442

3441:                                             ; preds = %3439
  br label %3444

3442:                                             ; preds = %3439
  call void @__assert_fail(ptr noundef @.str.109, ptr noundef @.str.3, i32 noundef 6644, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

3443:                                             ; No predecessors!
  br label %3444

3444:                                             ; preds = %3443, %3441
  %3445 = load i32, ptr %6, align 4, !tbaa !9
  %3446 = and i32 %3445, 64
  %3447 = icmp ne i32 %3446, 0
  br i1 %3447, label %3488, label %3448

3448:                                             ; preds = %3444
  %3449 = load ptr, ptr %9, align 8, !tbaa !5
  %3450 = getelementptr inbounds %struct.ImGuiWindow, ptr %3449, i32 0, i32 43
  %3451 = load i8, ptr %3450, align 4, !tbaa !177
  %3452 = sext i8 %3451 to i32
  %3453 = icmp sle i32 %3452, 0
  br i1 %3453, label %3454, label %3488

3454:                                             ; preds = %3448
  %3455 = load ptr, ptr %9, align 8, !tbaa !5
  %3456 = getelementptr inbounds %struct.ImGuiWindow, ptr %3455, i32 0, i32 44
  %3457 = load i8, ptr %3456, align 1, !tbaa !178
  %3458 = sext i8 %3457 to i32
  %3459 = icmp sle i32 %3458, 0
  br i1 %3459, label %3460, label %3488

3460:                                             ; preds = %3454
  %3461 = load ptr, ptr %9, align 8, !tbaa !5
  %3462 = getelementptr inbounds %struct.ImGuiWindow, ptr %3461, i32 0, i32 59
  %3463 = getelementptr inbounds %struct.ImRect, ptr %3462, i32 0, i32 0
  %3464 = getelementptr inbounds %struct.ImVec2, ptr %3463, i32 0, i32 0
  %3465 = load float, ptr %3464, align 8, !tbaa !295
  %3466 = load ptr, ptr %9, align 8, !tbaa !5
  %3467 = getelementptr inbounds %struct.ImGuiWindow, ptr %3466, i32 0, i32 59
  %3468 = getelementptr inbounds %struct.ImRect, ptr %3467, i32 0, i32 1
  %3469 = getelementptr inbounds %struct.ImVec2, ptr %3468, i32 0, i32 0
  %3470 = load float, ptr %3469, align 8, !tbaa !296
  %3471 = fcmp oge float %3465, %3470
  br i1 %3471, label %3484, label %3472

3472:                                             ; preds = %3460
  %3473 = load ptr, ptr %9, align 8, !tbaa !5
  %3474 = getelementptr inbounds %struct.ImGuiWindow, ptr %3473, i32 0, i32 59
  %3475 = getelementptr inbounds %struct.ImRect, ptr %3474, i32 0, i32 0
  %3476 = getelementptr inbounds %struct.ImVec2, ptr %3475, i32 0, i32 1
  %3477 = load float, ptr %3476, align 4, !tbaa !209
  %3478 = load ptr, ptr %9, align 8, !tbaa !5
  %3479 = getelementptr inbounds %struct.ImGuiWindow, ptr %3478, i32 0, i32 59
  %3480 = getelementptr inbounds %struct.ImRect, ptr %3479, i32 0, i32 1
  %3481 = getelementptr inbounds %struct.ImVec2, ptr %3480, i32 0, i32 1
  %3482 = load float, ptr %3481, align 4, !tbaa !297
  %3483 = fcmp oge float %3477, %3482
  br i1 %3483, label %3484, label %3487

3484:                                             ; preds = %3472, %3460
  %3485 = load ptr, ptr %9, align 8, !tbaa !5
  %3486 = getelementptr inbounds %struct.ImGuiWindow, ptr %3485, i32 0, i32 48
  store i32 1, ptr %3486, align 4, !tbaa !151
  br label %3487

3487:                                             ; preds = %3484, %3472
  br label %3488

3488:                                             ; preds = %3487, %3454, %3448, %3444
  %3489 = load ptr, ptr %19, align 8, !tbaa !5
  %3490 = icmp ne ptr %3489, null
  br i1 %3490, label %3491, label %3504

3491:                                             ; preds = %3488
  %3492 = load ptr, ptr %19, align 8, !tbaa !5
  %3493 = getelementptr inbounds %struct.ImGuiWindow, ptr %3492, i32 0, i32 31
  %3494 = load i8, ptr %3493, align 2, !tbaa !174, !range !65, !noundef !66
  %3495 = trunc i8 %3494 to i1
  br i1 %3495, label %3501, label %3496

3496:                                             ; preds = %3491
  %3497 = load ptr, ptr %19, align 8, !tbaa !5
  %3498 = getelementptr inbounds %struct.ImGuiWindow, ptr %3497, i32 0, i32 48
  %3499 = load i32, ptr %3498, align 4, !tbaa !151
  %3500 = icmp sgt i32 %3499, 0
  br i1 %3500, label %3501, label %3504

3501:                                             ; preds = %3496, %3491
  %3502 = load ptr, ptr %9, align 8, !tbaa !5
  %3503 = getelementptr inbounds %struct.ImGuiWindow, ptr %3502, i32 0, i32 48
  store i32 1, ptr %3503, align 4, !tbaa !151
  br label %3504

3504:                                             ; preds = %3501, %3496, %3488
  %3505 = load ptr, ptr %19, align 8, !tbaa !5
  %3506 = icmp ne ptr %3505, null
  br i1 %3506, label %3507, label %3520

3507:                                             ; preds = %3504
  %3508 = load ptr, ptr %19, align 8, !tbaa !5
  %3509 = getelementptr inbounds %struct.ImGuiWindow, ptr %3508, i32 0, i32 31
  %3510 = load i8, ptr %3509, align 2, !tbaa !174, !range !65, !noundef !66
  %3511 = trunc i8 %3510 to i1
  br i1 %3511, label %3517, label %3512

3512:                                             ; preds = %3507
  %3513 = load ptr, ptr %19, align 8, !tbaa !5
  %3514 = getelementptr inbounds %struct.ImGuiWindow, ptr %3513, i32 0, i32 49
  %3515 = load i32, ptr %3514, align 8, !tbaa !91
  %3516 = icmp sgt i32 %3515, 0
  br i1 %3516, label %3517, label %3520

3517:                                             ; preds = %3512, %3507
  %3518 = load ptr, ptr %9, align 8, !tbaa !5
  %3519 = getelementptr inbounds %struct.ImGuiWindow, ptr %3518, i32 0, i32 49
  store i32 1, ptr %3519, align 8, !tbaa !91
  br label %3520

3520:                                             ; preds = %3517, %3512, %3504
  br label %3521

3521:                                             ; preds = %3520, %3425
  %3522 = load ptr, ptr %8, align 8, !tbaa !5
  %3523 = getelementptr inbounds %struct.ImGuiStyle, ptr %3522, i32 0, i32 0
  %3524 = load float, ptr %3523, align 4, !tbaa !298
  %3525 = fcmp ole float %3524, 0.000000e+00
  br i1 %3525, label %3526, label %3529

3526:                                             ; preds = %3521
  %3527 = load ptr, ptr %9, align 8, !tbaa !5
  %3528 = getelementptr inbounds %struct.ImGuiWindow, ptr %3527, i32 0, i32 48
  store i32 1, ptr %3528, align 4, !tbaa !151
  br label %3529

3529:                                             ; preds = %3526, %3521
  %3530 = load ptr, ptr %9, align 8, !tbaa !5
  %3531 = getelementptr inbounds %struct.ImGuiWindow, ptr %3530, i32 0, i32 48
  %3532 = load i32, ptr %3531, align 4, !tbaa !151
  %3533 = icmp sgt i32 %3532, 0
  br i1 %3533, label %3539, label %3534

3534:                                             ; preds = %3529
  %3535 = load ptr, ptr %9, align 8, !tbaa !5
  %3536 = getelementptr inbounds %struct.ImGuiWindow, ptr %3535, i32 0, i32 49
  %3537 = load i32, ptr %3536, align 8, !tbaa !91
  %3538 = icmp sgt i32 %3537, 0
  br label %3539

3539:                                             ; preds = %3534, %3529
  %3540 = phi i1 [ true, %3529 ], [ %3538, %3534 ]
  %3541 = load ptr, ptr %9, align 8, !tbaa !5
  %3542 = getelementptr inbounds %struct.ImGuiWindow, ptr %3541, i32 0, i32 35
  %3543 = zext i1 %3540 to i8
  store i8 %3543, ptr %3542, align 2, !tbaa !299
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #13
  store i8 0, ptr %105, align 1, !tbaa !69
  %3544 = load ptr, ptr %9, align 8, !tbaa !5
  %3545 = getelementptr inbounds %struct.ImGuiWindow, ptr %3544, i32 0, i32 31
  %3546 = load i8, ptr %3545, align 2, !tbaa !174, !range !65, !noundef !66
  %3547 = trunc i8 %3546 to i1
  br i1 %3547, label %3558, label %3548

3548:                                             ; preds = %3539
  %3549 = load ptr, ptr %9, align 8, !tbaa !5
  %3550 = getelementptr inbounds %struct.ImGuiWindow, ptr %3549, i32 0, i32 28
  %3551 = load i8, ptr %3550, align 1, !tbaa !135, !range !65, !noundef !66
  %3552 = trunc i8 %3551 to i1
  br i1 %3552, label %3553, label %3558

3553:                                             ; preds = %3548
  %3554 = load ptr, ptr %9, align 8, !tbaa !5
  %3555 = getelementptr inbounds %struct.ImGuiWindow, ptr %3554, i32 0, i32 35
  %3556 = load i8, ptr %3555, align 2, !tbaa !299, !range !65, !noundef !66
  %3557 = trunc i8 %3556 to i1
  br i1 %3557, label %3558, label %3577

3558:                                             ; preds = %3553, %3548, %3539
  %3559 = load ptr, ptr %9, align 8, !tbaa !5
  %3560 = getelementptr inbounds %struct.ImGuiWindow, ptr %3559, i32 0, i32 43
  %3561 = load i8, ptr %3560, align 4, !tbaa !177
  %3562 = sext i8 %3561 to i32
  %3563 = icmp sle i32 %3562, 0
  br i1 %3563, label %3564, label %3576

3564:                                             ; preds = %3558
  %3565 = load ptr, ptr %9, align 8, !tbaa !5
  %3566 = getelementptr inbounds %struct.ImGuiWindow, ptr %3565, i32 0, i32 44
  %3567 = load i8, ptr %3566, align 1, !tbaa !178
  %3568 = sext i8 %3567 to i32
  %3569 = icmp sle i32 %3568, 0
  br i1 %3569, label %3570, label %3576

3570:                                             ; preds = %3564
  %3571 = load ptr, ptr %9, align 8, !tbaa !5
  %3572 = getelementptr inbounds %struct.ImGuiWindow, ptr %3571, i32 0, i32 49
  %3573 = load i32, ptr %3572, align 8, !tbaa !91
  %3574 = icmp sle i32 %3573, 0
  br i1 %3574, label %3575, label %3576

3575:                                             ; preds = %3570
  store i8 1, ptr %105, align 1, !tbaa !69
  br label %3576

3576:                                             ; preds = %3575, %3570, %3564, %3558
  br label %3577

3577:                                             ; preds = %3576, %3553
  %3578 = load i8, ptr %105, align 1, !tbaa !69, !range !65, !noundef !66
  %3579 = trunc i8 %3578 to i1
  %3580 = load ptr, ptr %9, align 8, !tbaa !5
  %3581 = getelementptr inbounds %struct.ImGuiWindow, ptr %3580, i32 0, i32 33
  %3582 = zext i1 %3579 to i8
  store i8 %3582, ptr %3581, align 4, !tbaa !300
  %3583 = load i8, ptr %105, align 1, !tbaa !69, !range !65, !noundef !66
  %3584 = trunc i8 %3583 to i1
  %3585 = xor i1 %3584, true
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  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 8, ptr %19) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #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 1, ptr %12) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 1, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #13
  ret i1 %3585
}

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

; 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 hidden void @_ZN5ImGuiL18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef, ptr noundef) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16)) #10 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 <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef) #10

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

; Function Attrs: mustprogress uwtable
declare hidden <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef, <2 x float>) #10

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(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: mustprogress nounwind uwtable
declare hidden void @_ZN5ImGuiL35ErrorCheckBeginEndCompareStacksSizeEP11ImGuiWindowb(ptr noundef, i1 noundef zeroext) #1

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL26UpdateSelectWindowViewportEP11ImGuiWindow(ptr noundef) #10

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 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) #10

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL29UpdateViewportPlatformMonitorEP14ImGuiViewportP(ptr noundef) #10

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

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

; Function Attrs: 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 @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16)) #3

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

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

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

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

; 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

declare void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef) #9

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

declare void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36), i32 noundef, float noundef, i1 noundef zeroext) #9

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(144)) #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 = { "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 = { 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 #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 6960}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !20, i64 5472, !23, i64 5704, !10, i64 6692, !10, i64 6696, !6, i64 6704, !17, i64 6712, !17, i64 6716, !24, i64 6720, !26, i64 6936, !10, i64 6944, !10, i64 6948, !10, i64 6952, !10, i64 6956, !14, i64 6960, !14, i64 6961, !14, i64 6962, !14, i64 6963, !10, i64 6964, !6, i64 6968, !27, i64 6976, !27, i64 6992, !27, i64 7008, !27, i64 7024, !28, i64 7040, !10, i64 7056, !6, i64 7064, !6, i64 7072, !6, i64 7080, !6, i64 7088, !6, i64 7096, !6, i64 7104, !6, i64 7112, !16, i64 7120, !17, i64 7128, !10, i64 7132, !10, i64 7136, !14, i64 7140, !14, i64 7141, !17, i64 7144, !17, i64 7148, !10, i64 7152, !10, i64 7156, !17, i64 7160, !14, i64 7164, !14, i64 7165, !14, i64 7166, !14, i64 7167, !14, i64 7168, !14, i64 7169, !10, i64 7172, !10, i64 7176, !30, i64 7184, !16, i64 7192, !6, i64 7200, !31, i64 7208, !10, i64 7212, !10, i64 7216, !14, i64 7220, !14, i64 7221, !6, i64 7224, !10, i64 7232, !17, i64 7236, !32, i64 7240, !35, i64 7384, !36, i64 7408, !37, i64 7424, !38, i64 7440, !39, i64 7456, !39, i64 7472, !40, i64 7488, !17, i64 7504, !6, i64 7512, !6, i64 7520, !6, i64 7528, !10, i64 7536, !10, i64 7540, !6, i64 7544, !10, i64 7552, !10, i64 7556, !10, i64 7560, !10, i64 7564, !10, i64 7568, !10, i64 7572, !10, i64 7576, !10, i64 7580, !10, i64 7584, !10, i64 7588, !10, i64 7592, !31, i64 7596, !33, i64 7600, !10, i64 7616, !41, i64 7620, !10, i64 7624, !14, i64 7628, !14, i64 7629, !14, i64 7630, !14, i64 7631, !14, i64 7632, !14, i64 7633, !14, i64 7634, !10, i64 7636, !33, i64 7640, !14, i64 7656, !14, i64 7657, !10, i64 7660, !42, i64 7664, !10, i64 7668, !10, i64 7672, !10, i64 7676, !10, i64 7680, !43, i64 7688, !43, i64 7736, !43, i64 7784, !6, i64 7832, !10, i64 7840, !6, i64 7848, !6, i64 7856, !6, i64 7864, !17, i64 7872, !17, i64 7876, !14, i64 7880, !6, i64 7888, !6, i64 7896, !10, i64 7904, !10, i64 7908, !10, i64 7912, !10, i64 7916, !14, i64 7920, !17, i64 7924, !10, i64 7928, !14, i64 7932, !14, i64 7933, !14, i64 7934, !10, i64 7936, !10, i64 7940, !10, i64 7944, !44, i64 7952, !33, i64 8016, !10, i64 8032, !10, i64 8036, !17, i64 8040, !10, i64 8044, !10, i64 8048, !10, i64 8052, !10, i64 8056, !45, i64 8064, !7, i64 8080, !6, i64 8096, !46, i64 8104, !48, i64 8144, !49, i64 8160, !16, i64 8176, !50, i64 8184, !54, i64 11912, !10, i64 12032, !10, i64 12036, !17, i64 12040, !17, i64 12044, !7, i64 12048, !25, i64 12060, !17, i64 12076, !14, i64 12080, !14, i64 12081, !17, i64 12084, !17, i64 12088, !17, i64 12092, !10, i64 12096, !51, i64 12104, !57, i64 12120, !16, i64 12136, !16, i64 12144, !6, i64 12152, !58, i64 12160, !14, i64 12216, !17, i64 12220, !61, i64 12224, !62, i64 12240, !63, i64 12256, !14, i64 12272, !64, i64 12276, !6, i64 12280, !61, i64 12288, !17, i64 12304, !14, i64 12308, !10, i64 12312, !10, i64 12316, !10, i64 12320, !14, i64 12324, !10, i64 12328, !7, i64 12332, !10, i64 12812, !17, i64 12816, !10, i64 12820, !10, i64 12824, !10, i64 12828, !7, i64 12832}
!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, !7, i64 52, !17, i64 140, !17, i64 144, !6, i64 152, !6, i64 160, !17, i64 168, !14, i64 172, !6, i64 176, !16, i64 184, !14, i64 192, !14, i64 193, !14, i64 194, !14, i64 195, !14, i64 196, !14, i64 197, !14, i64 198, !14, i64 199, !14, i64 200, !14, i64 201, !14, i64 202, !14, i64 203, !14, i64 204, !17, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !16, i64 288, !7, i64 296, !17, i64 304, !17, i64 308, !10, i64 312, !14, i64 316, !14, i64 317, !14, i64 318, !14, i64 319, !7, i64 320, !7, i64 832, !14, i64 916, !14, i64 917, !14, i64 918, !14, i64 919, !14, i64 920, !14, i64 921, !14, i64 922, !17, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !16, i64 948, !10, i64 956, !16, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !17, i64 5440, !18, i64 5444, !19, i64 5448}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!20 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !21, i64 192, !6, i64 208, !22, i64 216}
!21 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !10, i64 0, !10, i64 4, !6, i64 8}
!22 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS10ImGuiStyle", !17, i64 0, !16, i64 4, !17, i64 12, !17, i64 16, !16, i64 20, !16, i64 28, !10, i64 36, !17, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !16, i64 56, !17, i64 64, !17, i64 68, !16, i64 72, !16, i64 80, !16, i64 88, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !10, i64 136, !16, i64 140, !16, i64 148, !16, i64 156, !16, i64 164, !17, i64 172, !14, i64 176, !14, i64 177, !14, i64 178, !17, i64 180, !17, i64 184, !7, i64 188}
!24 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !25, i64 28, !10, i64 44, !7, i64 48, !7, i64 144, !6, i64 208}
!25 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!26 = !{!"double", !7, i64 0}
!27 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS12ImGuiStorage", !29, i64 0}
!29 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"long long", !7, i64 0}
!31 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!32 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !16, i64 20, !16, i64 28, !16, i64 36, !16, i64 44, !16, i64 52, !14, i64 60, !14, i64 61, !33, i64 64, !6, i64 80, !6, i64 88, !17, i64 96, !10, i64 100, !10, i64 104, !34, i64 108, !16, i64 136}
!33 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!34 = !{!"_ZTS16ImGuiWindowClass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !14, i64 24, !14, i64 25}
!35 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !17, i64 4, !10, i64 8, !10, i64 12, !14, i64 16}
!36 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!42 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!43 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !10, i64 8, !10, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !33, i64 28}
!44 = !{!"_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}
!45 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !47, i64 0, !28, i64 16, !10, i64 32}
!47 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!50 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !19, i64 16, !51, i64 32, !51, i64 48, !14, i64 64, !10, i64 68, !17, i64 72, !52, i64 76, !17, i64 3696, !14, i64 3700, !14, i64 3701, !14, i64 3702, !10, i64 3704, !6, i64 3712, !6, i64 3720}
!51 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !17, i64 20, !53, i64 24}
!53 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !10, i64 3588, !10, i64 3592}
!54 = !{!"_ZTS6ImFont", !55, i64 0, !17, i64 16, !17, i64 20, !19, i64 24, !56, i64 40, !6, i64 56, !16, i64 64, !6, i64 72, !6, i64 80, !18, i64 88, !18, i64 90, !18, i64 92, !14, i64 94, !17, i64 96, !17, i64 100, !17, i64 104, !10, i64 108, !7, i64 112}
!55 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS16ImGuiDockContext", !28, i64 0, !59, i64 16, !60, i64 32, !14, i64 48}
!59 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS15ImGuiTextBuffer", !51, i64 0}
!62 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !51, i64 0}
!64 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!65 = !{i8 0, i8 2}
!66 = !{}
!67 = !{!13, !10, i64 6948}
!68 = !{!13, !10, i64 6944}
!69 = !{!14, !14, i64 0}
!70 = !{!71, !10, i64 720}
!71 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !34, i64 20, !6, i64 48, !10, i64 56, !16, i64 60, !10, i64 68, !16, i64 72, !16, i64 80, !16, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !17, i64 120, !17, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !16, i64 140, !16, i64 148, !16, i64 156, !16, i64 164, !16, i64 172, !14, i64 180, !14, i64 181, !14, i64 182, !14, i64 183, !14, i64 184, !14, i64 185, !14, i64 186, !14, i64 187, !14, i64 188, !14, i64 189, !14, i64 190, !14, i64 191, !14, i64 192, !7, i64 193, !18, i64 194, !18, i64 196, !18, i64 198, !10, i64 200, !7, i64 204, !7, i64 205, !7, i64 206, !14, i64 207, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !16, i64 236, !16, i64 244, !57, i64 256, !72, i64 272, !33, i64 600, !33, i64 616, !33, i64 632, !33, i64 648, !33, i64 664, !33, i64 680, !33, i64 696, !77, i64 712, !77, i64 716, !10, i64 720, !10, i64 724, !17, i64 728, !17, i64 732, !28, i64 736, !78, i64 752, !17, i64 768, !17, i64 772, !10, i64 776, !6, i64 784, !79, i64 792, !6, i64 1016, !6, i64 1024, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056, !7, i64 1064, !7, i64 1072, !14, i64 1104, !10, i64 1108, !10, i64 1112, !6, i64 1120, !6, i64 1128, !10, i64 1136, !10, i64 1140, !33, i64 1144, !18, i64 1160, !14, i64 1162, !14, i64 1162, !14, i64 1162}
!72 = !{!"_ZTS19ImGuiWindowTempData", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !17, i64 48, !17, i64 52, !73, i64 56, !73, i64 60, !73, i64 64, !10, i64 68, !10, i64 72, !33, i64 76, !33, i64 92, !41, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !14, i64 128, !14, i64 129, !14, i64 130, !16, i64 132, !74, i64 140, !10, i64 176, !10, i64 180, !27, i64 184, !6, i64 200, !6, i64 208, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !17, i64 236, !17, i64 240, !75, i64 248, !55, i64 264, !55, i64 280, !76, i64 296, !7, i64 312}
!73 = !{!"_ZTS6ImVec1", !17, i64 0}
!74 = !{!"_ZTS16ImGuiMenuColumns", !17, i64 0, !17, i64 4, !17, i64 8, !7, i64 12, !7, i64 24}
!75 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!78 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!79 = !{!"_ZTS10ImDrawList", !80, i64 0, !19, i64 16, !81, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !6, i64 80, !6, i64 88, !82, i64 96, !83, i64 112, !84, i64 128, !85, i64 144, !86, i64 200}
!80 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!81 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!82 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!84 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!85 = !{!"_ZTS9ImDrawCmd", !25, i64 0, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48}
!86 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !87, i64 8}
!87 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!88 = !{!13, !10, i64 7024}
!89 = !{!13, !14, i64 6961}
!90 = !{!71, !14, i64 191}
!91 = !{!71, !10, i64 216}
!92 = !{!13, !10, i64 7472}
!93 = !{!71, !10, i64 200}
!94 = !{!95, !10, i64 0}
!95 = !{!"_ZTS14ImGuiPopupData", !10, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !16, i64 32, !16, i64 40}
!96 = !{!95, !6, i64 8}
!97 = !{!71, !14, i64 189}
!98 = !{!71, !10, i64 12}
!99 = !{!71, !10, i64 16}
!100 = !{!13, !26, i64 6936}
!101 = !{!71, !17, i64 728}
!102 = !{!71, !18, i64 196}
!103 = !{!13, !10, i64 7056}
!104 = !{!71, !18, i64 198}
!105 = !{!71, !6, i64 1120}
!106 = !{!71, !6, i64 1128}
!107 = !{!13, !10, i64 7240}
!108 = !{!13, !10, i64 7344}
!109 = !{!13, !10, i64 7256}
!110 = !{!71, !10, i64 1136}
!111 = !{!112, !6, i64 128}
!112 = !{!"_ZTS13ImGuiDockNode", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 16, !7, i64 24, !27, i64 40, !6, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !113, i64 88, !34, i64 92, !114, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 184, !10, i64 184, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 186, !14, i64 186, !14, i64 186, !14, i64 186}
!113 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!114 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!115 = !{!71, !6, i64 1016}
!116 = !{!71, !10, i64 256}
!117 = !{!13, !6, i64 7064}
!118 = !{!71, !10, i64 220}
!119 = !{!13, !10, i64 7244}
!120 = !{i64 0, i64 4, !121, i64 4, i64 4, !121}
!121 = !{!17, !17, i64 0}
!122 = !{!71, !10, i64 224}
!123 = !{!13, !10, i64 7248}
!124 = !{!13, !17, i64 7276}
!125 = !{!13, !17, i64 7280}
!126 = !{!13, !17, i64 7292}
!127 = !{!71, !17, i64 156}
!128 = !{!71, !17, i64 164}
!129 = !{!13, !17, i64 7296}
!130 = !{!71, !17, i64 160}
!131 = !{!71, !17, i64 168}
!132 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 1, !69, i64 25, i64 1, !69}
!133 = !{!13, !14, i64 7301}
!134 = !{!13, !10, i64 7252}
!135 = !{!71, !14, i64 183}
!136 = !{!71, !14, i64 192}
!137 = !{i64 0, i64 4, !121, i64 4, i64 4, !121, i64 8, i64 4, !121, i64 12, i64 4, !121}
!138 = !{!71, !6, i64 784}
!139 = !{!71, !14, i64 1104}
!140 = !{!71, !6, i64 48}
!141 = !{!142, !6, i64 144}
!142 = !{!"_ZTS14ImGuiViewportP", !143, i64 0, !10, i64 100, !10, i64 104, !7, i64 108, !10, i64 116, !10, i64 120, !16, i64 124, !17, i64 132, !17, i64 136, !18, i64 140, !14, i64 142, !6, i64 144, !7, i64 152, !144, i64 168, !145, i64 232, !16, i64 264, !16, i64 272, !16, i64 280, !16, i64 288, !16, i64 296}
!143 = !{!"_ZTS13ImGuiViewport", !10, i64 0, !10, i64 4, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !6, i64 48, !10, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !14, i64 96, !14, i64 97, !14, i64 98}
!144 = !{!"_ZTS10ImDrawData", !14, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !16, i64 28, !16, i64 36, !16, i64 44, !6, i64 56}
!145 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!146 = !{!13, !6, i64 7864}
!147 = !{!71, !6, i64 0}
!148 = !{!71, !10, i64 128}
!149 = !{!150, !150, i64 0}
!150 = !{!"long", !7, i64 0}
!151 = !{!71, !10, i64 212}
!152 = !{!71, !17, i64 88}
!153 = !{!71, !17, i64 80}
!154 = !{!71, !17, i64 92}
!155 = !{!71, !17, i64 84}
!156 = !{!13, !10, i64 8}
!157 = !{!143, !17, i64 40}
!158 = !{!71, !17, i64 772}
!159 = !{!23, !17, i64 44}
!160 = !{!71, !17, i64 124}
!161 = !{!23, !17, i64 52}
!162 = !{!23, !17, i64 16}
!163 = !{!23, !17, i64 8}
!164 = !{!71, !17, i64 112}
!165 = !{!23, !17, i64 72}
!166 = !{!13, !17, i64 7376}
!167 = !{!71, !17, i64 404}
!168 = !{!13, !17, i64 7380}
!169 = !{!71, !17, i64 408}
!170 = !{!13, !6, i64 7072}
!171 = !{!13, !10, i64 7132}
!172 = !{!13, !10, i64 7136}
!173 = !{!71, !14, i64 187}
!174 = !{!71, !14, i64 186}
!175 = !{!16, !17, i64 0}
!176 = !{!16, !17, i64 4}
!177 = !{!71, !7, i64 204}
!178 = !{!71, !7, i64 205}
!179 = !{!71, !14, i64 207}
!180 = !{!71, !10, i64 208}
!181 = !{!71, !10, i64 456}
!182 = !{!71, !17, i64 236}
!183 = !{!71, !10, i64 68}
!184 = !{!71, !14, i64 182}
!185 = !{!143, !10, i64 4}
!186 = !{!71, !10, i64 8}
!187 = !{!143, !14, i64 96}
!188 = !{!143, !14, i64 97}
!189 = !{!13, !14, i64 205}
!190 = !{!13, !14, i64 206}
!191 = !{!71, !10, i64 24}
!192 = !{!143, !10, i64 56}
!193 = !{!143, !10, i64 0}
!194 = !{!13, !14, i64 207}
!195 = !{!71, !10, i64 28}
!196 = !{!71, !10, i64 32}
!197 = !{!13, !10, i64 5664}
!198 = !{!142, !18, i64 140}
!199 = !{!71, !17, i64 120}
!200 = !{!23, !17, i64 40}
!201 = !{!23, !17, i64 48}
!202 = !{!23, !17, i64 12}
!203 = !{!13, !14, i64 211}
!204 = !{!13, !17, i64 6712}
!205 = !{!71, !7, i64 193}
!206 = !{!71, !14, i64 181}
!207 = !{!23, !17, i64 104}
!208 = !{!71, !14, i64 180}
!209 = !{!71, !17, i64 604}
!210 = !{!71, !17, i64 72}
!211 = !{!71, !17, i64 616}
!212 = !{!71, !17, i64 76}
!213 = !{!71, !17, i64 620}
!214 = !{!71, !17, i64 172}
!215 = !{!71, !17, i64 624}
!216 = !{!71, !17, i64 176}
!217 = !{!71, !17, i64 628}
!218 = !{!23, !17, i64 68}
!219 = !{!71, !17, i64 632}
!220 = !{!71, !17, i64 636}
!221 = !{!71, !17, i64 640}
!222 = !{!71, !17, i64 644}
!223 = !{!71, !17, i64 732}
!224 = !{!71, !17, i64 96}
!225 = !{!71, !17, i64 148}
!226 = !{!71, !17, i64 100}
!227 = !{!71, !17, i64 116}
!228 = !{!71, !17, i64 152}
!229 = !{!79, !10, i64 0}
!230 = !{!85, !10, i64 32}
!231 = !{!13, !6, i64 6704}
!232 = !{!54, !6, i64 72}
!233 = !{!234, !6, i64 8}
!234 = !{!"_ZTS11ImFontAtlas", !14, i64 0, !10, i64 4, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !16, i64 48, !16, i64 56, !38, i64 64, !235, i64 80, !236, i64 96, !7, i64 112, !10, i64 1136, !10, i64 1140}
!235 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!236 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!237 = !{!13, !6, i64 7856}
!238 = !{!71, !6, i64 1024}
!239 = !{!13, !17, i64 7924}
!240 = !{!13, !17, i64 7876}
!241 = !{!13, !17, i64 5716}
!242 = !{!79, !10, i64 32}
!243 = !{!13, !6, i64 7848}
!244 = !{!13, !6, i64 7544}
!245 = !{!71, !6, i64 1040}
!246 = !{!71, !17, i64 104}
!247 = !{!71, !17, i64 108}
!248 = !{!71, !17, i64 140}
!249 = !{!71, !17, i64 648}
!250 = !{!71, !17, i64 144}
!251 = !{!71, !17, i64 652}
!252 = !{!71, !17, i64 656}
!253 = !{!71, !17, i64 660}
!254 = !{!71, !17, i64 696}
!255 = !{!71, !17, i64 700}
!256 = !{!71, !17, i64 704}
!257 = !{!71, !17, i64 708}
!258 = !{!71, !17, i64 328}
!259 = !{!71, !17, i64 336}
!260 = !{!71, !17, i64 332}
!261 = !{!71, !17, i64 324}
!262 = !{!71, !17, i64 320}
!263 = !{!71, !41, i64 380}
!264 = !{!71, !10, i64 384}
!265 = !{!71, !10, i64 392}
!266 = !{!71, !10, i64 388}
!267 = !{!71, !10, i64 396}
!268 = !{!71, !14, i64 400}
!269 = !{!71, !14, i64 401}
!270 = !{!71, !14, i64 402}
!271 = !{!71, !10, i64 448}
!272 = !{!71, !10, i64 452}
!273 = !{!71, !6, i64 472}
!274 = !{!71, !6, i64 480}
!275 = !{!71, !10, i64 488}
!276 = !{!71, !10, i64 492}
!277 = !{!71, !10, i64 500}
!278 = !{!71, !10, i64 496}
!279 = !{!71, !17, i64 508}
!280 = !{!71, !17, i64 512}
!281 = !{!71, !10, i64 504}
!282 = !{!143, !14, i64 98}
!283 = !{!13, !14, i64 7880}
!284 = !{!71, !18, i64 714}
!285 = !{!71, !18, i64 712}
!286 = !{!13, !6, i64 7104}
!287 = !{!13, !14, i64 201}
!288 = !{!13, !14, i64 325}
!289 = !{!13, !14, i64 7932}
!290 = !{!71, !10, i64 1140}
!291 = !{!71, !10, i64 132}
!292 = !{!71, !14, i64 185}
!293 = !{!71, !18, i64 194}
!294 = !{!71, !10, i64 724}
!295 = !{!71, !17, i64 600}
!296 = !{!71, !17, i64 608}
!297 = !{!71, !17, i64 612}
!298 = !{!23, !17, i64 0}
!299 = !{!71, !14, i64 190}
!300 = !{!71, !14, i64 188}


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

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

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [69 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: 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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef, float noundef) local_unnamed_addr #8

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

declare void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) local_unnamed_addr #9

declare void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef, float noundef) local_unnamed_addr #9

; 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 #10 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(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 void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) local_unnamed_addr #10

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

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

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

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

44:                                               ; preds = %42
  %45 = getelementptr inbounds i8, ptr %40, i64 6960
  %46 = load i8, ptr %45, align 8, !tbaa !10, !range !64, !noundef !65
  %47 = trunc nuw i8 %46 to i1
  br i1 %47, label %49, label %48

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

49:                                               ; preds = %44
  %50 = getelementptr inbounds i8, ptr %40, i64 6948
  %51 = load i32, ptr %50, align 4, !tbaa !66
  %52 = getelementptr inbounds i8, ptr %40, i64 6944
  %53 = load i32, ptr %52, align 8, !tbaa !67
  %.not413 = icmp eq i32 %51, %53
  br i1 %.not413, label %54, label %55

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

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

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

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

66:                                               ; preds = %60
  tail call void @__assert_fail(ptr noundef nonnull @.str.103, ptr noundef nonnull @.str.3, i32 noundef 5853, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

67:                                               ; preds = %60
  %68 = load i32, ptr %52, align 8, !tbaa !67
  %69 = getelementptr inbounds i8, ptr %61, i64 720
  %70 = load i32, ptr %69, align 8, !tbaa !68
  %.not416 = icmp eq i32 %70, %68
  %71 = getelementptr inbounds i8, ptr %40, i64 7024
  %72 = load i32, ptr %71, align 8, !tbaa !86
  %73 = icmp eq i32 %72, 0
  br i1 %73, label %74, label %77

74:                                               ; preds = %67
  %75 = getelementptr inbounds i8, ptr %40, i64 6961
  %76 = load i8, ptr %75, align 1, !tbaa !87, !range !64, !noundef !65
  br label %77

77:                                               ; preds = %74, %67
  %78 = phi i8 [ 0, %67 ], [ %76, %74 ]
  %79 = getelementptr inbounds i8, ptr %61, i64 191
  store i8 %78, ptr %79, align 1, !tbaa !88
  %80 = add nsw i32 %68, -1
  %81 = icmp slt i32 %70, %80
  %82 = getelementptr inbounds i8, ptr %61, i64 216
  %83 = load i32, ptr %82, align 8, !tbaa !89
  %84 = icmp sgt i32 %83, 0
  %85 = and i32 %spec.select, 67108864
  %.not417 = icmp eq i32 %85, 0
  br i1 %.not417, label %100, label %86

86:                                               ; preds = %77
  %87 = getelementptr inbounds i8, ptr %40, i64 7456
  %88 = getelementptr inbounds i8, ptr %40, i64 7472
  %89 = load i32, ptr %88, align 8, !tbaa !90
  %90 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %87, i32 noundef %89)
  %91 = getelementptr inbounds i8, ptr %61, i64 200
  %92 = load i32, ptr %91, align 8, !tbaa !91
  %93 = load i32, ptr %90, align 8, !tbaa !92
  %94 = icmp ne i32 %92, %93
  %95 = getelementptr inbounds i8, ptr %90, i64 8
  %96 = load ptr, ptr %95, align 8, !tbaa !94
  %97 = icmp ne ptr %61, %96
  %98 = or i1 %94, %97
  %99 = or i1 %81, %98
  br label %100

100:                                              ; preds = %86, %77
  %.0357.in = phi i1 [ %99, %86 ], [ %81, %77 ]
  %101 = select i1 %.0357.in, i1 true, i1 %84
  %102 = getelementptr inbounds i8, ptr %61, i64 189
  %103 = zext i1 %101 to i8
  store i8 %103, ptr %102, align 1, !tbaa !95
  br i1 %101, label %104, label %105

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

105:                                              ; preds = %104, %100
  %106 = getelementptr inbounds i8, ptr %61, i64 12
  %107 = load i32, ptr %106, align 4, !tbaa !96
  br i1 %.not416, label %120, label %108

108:                                              ; preds = %105
  %109 = getelementptr inbounds i8, ptr %61, i64 16
  store i32 %107, ptr %109, align 8, !tbaa !97
  store i32 %spec.select, ptr %106, align 4, !tbaa !96
  store i32 %68, ptr %69, align 8, !tbaa !68
  %110 = getelementptr inbounds i8, ptr %40, i64 6936
  %111 = load double, ptr %110, align 8, !tbaa !98
  %112 = fptrunc double %111 to float
  %113 = getelementptr inbounds i8, ptr %61, i64 728
  store float %112, ptr %113, align 8, !tbaa !99
  %114 = getelementptr inbounds i8, ptr %61, i64 196
  store i16 0, ptr %114, align 4, !tbaa !100
  %115 = getelementptr inbounds i8, ptr %40, i64 7056
  %116 = load i32, ptr %115, align 8, !tbaa !101
  %117 = add nsw i32 %116, 1
  store i32 %117, ptr %115, align 8, !tbaa !101
  %118 = trunc i32 %116 to i16
  %119 = getelementptr inbounds i8, ptr %61, i64 198
  store i16 %118, ptr %119, align 2, !tbaa !102
  br label %120

120:                                              ; preds = %105, %108
  %.1 = phi i32 [ %spec.select, %108 ], [ %107, %105 ]
  %121 = getelementptr inbounds i8, ptr %61, i64 1120
  %122 = load ptr, ptr %121, align 8, !tbaa !103
  %123 = icmp eq ptr %122, null
  br i1 %123, label %.critedge2, label %124

124:                                              ; preds = %120
  %125 = getelementptr inbounds i8, ptr %61, i64 1128
  %126 = load ptr, ptr %125, align 8, !tbaa !104
  %127 = icmp eq ptr %126, null
  br i1 %127, label %.critedge2, label %128

128:                                              ; preds = %124
  tail call void @__assert_fail(ptr noundef nonnull @.str.104, ptr noundef nonnull @.str.3, i32 noundef 5889, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

.critedge2:                                       ; preds = %120, %124
  %129 = getelementptr inbounds i8, ptr %40, i64 7240
  %130 = load i32, ptr %129, align 8, !tbaa !105
  %131 = and i32 %130, 512
  %.not418 = icmp eq i32 %131, 0
  br i1 %.not418, label %137, label %132

132:                                              ; preds = %.critedge2
  %133 = getelementptr inbounds i8, ptr %40, i64 7344
  %134 = load i32, ptr %133, align 8, !tbaa !106
  %135 = getelementptr inbounds i8, ptr %40, i64 7256
  %136 = load i32, ptr %135, align 8, !tbaa !107
  tail call void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef nonnull %61, i32 noundef %134, i32 noundef %136)
  br label %137

137:                                              ; preds = %132, %.critedge2
  br i1 %.not416, label %156, label %138

138:                                              ; preds = %137
  %139 = getelementptr inbounds i8, ptr %61, i64 1136
  %140 = load i32, ptr %139, align 8, !tbaa !108
  %.not419 = icmp eq i32 %140, 0
  br i1 %.not419, label %141, label %.thread564

141:                                              ; preds = %138
  %142 = load ptr, ptr %121, align 8, !tbaa !103
  %.not610 = icmp eq ptr %142, null
  br i1 %.not610, label %143, label %.thread564

143:                                              ; preds = %141
  %144 = tail call noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef nonnull %61)
  br i1 %144, label %.thread564, label %156

.thread564:                                       ; preds = %138, %141, %143
  tail call void @_ZN5ImGui11BeginDockedEP11ImGuiWindowPb(ptr noundef nonnull %61, ptr noundef %1)
  %145 = getelementptr inbounds i8, ptr %61, i64 12
  %146 = load i32, ptr %145, align 4, !tbaa !96
  %147 = getelementptr inbounds i8, ptr %61, i64 1162
  %148 = load i8, ptr %147, align 2
  %149 = trunc i8 %148 to i1
  br i1 %149, label %150, label %153

150:                                              ; preds = %.thread564
  %151 = load ptr, ptr %121, align 8, !tbaa !103
  %.not420 = icmp eq ptr %151, null
  br i1 %.not420, label %152, label %153

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

153:                                              ; preds = %150, %.thread564
  %154 = load i32, ptr %129, align 8, !tbaa !105
  %155 = and i32 %154, -17
  store i32 %155, ptr %129, align 8, !tbaa !105
  br label %156

156:                                              ; preds = %153, %143, %137
  %.3 = phi i32 [ %.1, %137 ], [ %146, %153 ], [ %.1, %143 ]
  %157 = getelementptr inbounds i8, ptr %61, i64 1162
  %158 = load i8, ptr %157, align 2
  %159 = trunc i8 %158 to i1
  br i1 %159, label %160, label %164

160:                                              ; preds = %156
  %161 = load ptr, ptr %121, align 8, !tbaa !103
  %162 = getelementptr inbounds i8, ptr %161, i64 128
  %163 = load ptr, ptr %162, align 8, !tbaa !109
  br label %169

164:                                              ; preds = %156
  %165 = tail call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %71)
  br i1 %165, label %169, label %166

166:                                              ; preds = %164
  %167 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %71)
  %168 = load ptr, ptr %167, align 8, !tbaa !5
  br label %169

169:                                              ; preds = %166, %164, %160
  %170 = phi ptr [ %163, %160 ], [ %168, %166 ], [ null, %164 ]
  br i1 %.not416, label %174, label %171

171:                                              ; preds = %169
  %172 = and i32 %.3, 83886080
  %.not421 = icmp eq i32 %172, 0
  %173 = select i1 %.not421, ptr null, ptr %170
  br label %177

174:                                              ; preds = %169
  %175 = getelementptr inbounds i8, ptr %61, i64 1016
  %176 = load ptr, ptr %175, align 8, !tbaa !113
  br label %177

177:                                              ; preds = %174, %171
  %178 = phi ptr [ %173, %171 ], [ %176, %174 ]
  %179 = icmp eq ptr %178, null
  %180 = and i32 %.3, 16777216
  %181 = icmp ne i32 %180, 0
  %.not423 = select i1 %179, i1 %181, i1 false
  br i1 %.not423, label %182, label %183

182:                                              ; preds = %177
  tail call void @__assert_fail(ptr noundef nonnull @.str.106, ptr noundef nonnull @.str.3, i32 noundef 5911, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

183:                                              ; preds = %177
  %184 = getelementptr inbounds i8, ptr %61, i64 256
  %185 = load i32, ptr %184, align 8, !tbaa !114
  %186 = icmp eq i32 %185, 0
  br i1 %186, label %187, label %189

187:                                              ; preds = %183
  %188 = getelementptr inbounds i8, ptr %61, i64 8
  tail call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %184, ptr noundef nonnull align 4 dereferenceable(4) %188)
  br label %189

189:                                              ; preds = %187, %183
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %190 = getelementptr inbounds i8, ptr %40, i64 7064
  store ptr null, ptr %190, align 8, !tbaa !115
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGuiL35ErrorCheckBeginEndCompareStacksSizeEP11ImGuiWindowb(ptr noundef %191, i1 noundef zeroext true)
  %192 = and i32 %.3, 67108864
  %.not424 = icmp eq i32 %192, 0
  br i1 %.not424, label %203, label %193

193:                                              ; preds = %189
  %194 = getelementptr inbounds i8, ptr %40, i64 7456
  %195 = getelementptr inbounds i8, ptr %40, i64 7472
  %196 = load i32, ptr %195, align 8, !tbaa !90
  %197 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %194, i32 noundef %196)
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = getelementptr inbounds i8, ptr %197, i64 8
  store ptr %198, ptr %199, align 8, !tbaa !94
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %195, ptr noundef nonnull align 8 dereferenceable(48) %197)
  %200 = load i32, ptr %197, align 8, !tbaa !92
  %201 = load ptr, ptr %4, align 8, !tbaa !5
  %202 = getelementptr inbounds i8, ptr %201, i64 200
  store i32 %200, ptr %202, align 8, !tbaa !91
  br label %203

203:                                              ; preds = %193, %189
  %.not500 = xor i1 %84, true
  %brmerge501 = select i1 %.not500, i1 true, i1 %181
  br i1 %brmerge501, label %207, label %204

204:                                              ; preds = %203
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds i8, ptr %205, i64 1064
  store i32 0, ptr %206, align 8, !tbaa !116
  br label %207

207:                                              ; preds = %203, %204
  br i1 %.not416, label %210, label %208

208:                                              ; preds = %207
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %209, i32 noundef %.3, ptr noundef %178)
  br label %210

210:                                              ; preds = %208, %207
  %211 = load i32, ptr %129, align 8, !tbaa !105
  %212 = and i32 %211, 1
  %.not425 = icmp eq i32 %212, 0
  br i1 %.not425, label %238, label %213

213:                                              ; preds = %210
  %214 = load ptr, ptr %4, align 8, !tbaa !5
  %215 = getelementptr inbounds i8, ptr %214, i64 220
  %216 = load i32, ptr %215, align 4, !tbaa !117
  %217 = getelementptr inbounds i8, ptr %40, i64 7244
  %218 = load i32, ptr %217, align 4, !tbaa !118
  %219 = and i32 %218, %216
  %220 = icmp ne i32 %219, 0
  br i1 %220, label %221, label %234

221:                                              ; preds = %213
  %222 = getelementptr inbounds i8, ptr %40, i64 7268
  %223 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %222)
  %224 = fcmp ogt float %223, 0x3EE4F8B580000000
  %.pre = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %224, label %225, label %._crit_edge

._crit_edge:                                      ; preds = %221
  %.pre613 = load i32, ptr %217, align 4, !tbaa !118
  br label %234

225:                                              ; preds = %221
  %226 = getelementptr inbounds i8, ptr %40, i64 7260
  %227 = getelementptr inbounds i8, ptr %.pre, i64 236
  %228 = load i64, ptr %226, align 4
  store i64 %228, ptr %227, align 4
  %229 = getelementptr inbounds i8, ptr %.pre, i64 244
  %230 = load i64, ptr %222, align 4
  store i64 %230, ptr %229, align 4
  %231 = getelementptr inbounds i8, ptr %.pre, i64 220
  %232 = load i32, ptr %231, align 4, !tbaa !117
  %233 = and i32 %232, -15
  store i32 %233, ptr %231, align 4, !tbaa !117
  br label %238

234:                                              ; preds = %._crit_edge, %213
  %235 = phi i32 [ %.pre613, %._crit_edge ], [ %218, %213 ]
  %236 = phi ptr [ %.pre, %._crit_edge ], [ %214, %213 ]
  %237 = getelementptr inbounds i8, ptr %40, i64 7260
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %236, ptr noundef nonnull align 4 dereferenceable(8) %237, i32 noundef %235)
  br label %238

238:                                              ; preds = %225, %234, %210
  %.0358.shrunk = phi i1 [ true, %225 ], [ %220, %234 ], [ false, %210 ]
  %239 = load i32, ptr %129, align 8, !tbaa !105
  %240 = and i32 %239, 2
  %.not426 = icmp eq i32 %240, 0
  br i1 %.not426, label %258, label %241

241:                                              ; preds = %238
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = getelementptr inbounds i8, ptr %242, i64 224
  %244 = load i32, ptr %243, align 8, !tbaa !119
  %245 = getelementptr inbounds i8, ptr %40, i64 7248
  %246 = load i32, ptr %245, align 8, !tbaa !120
  %247 = and i32 %246, %244
  %.not427 = icmp eq i32 %247, 0
  br i1 %.not427, label %.thread566, label %248

248:                                              ; preds = %241
  %249 = getelementptr inbounds i8, ptr %40, i64 7276
  %250 = load float, ptr %249, align 4, !tbaa !121
  %251 = fcmp ogt float %250, 0.000000e+00
  %252 = getelementptr inbounds i8, ptr %40, i64 7280
  %253 = load float, ptr %252, align 4, !tbaa !122
  %254 = fcmp ogt float %253, 0.000000e+00
  br label %.thread566

.thread566:                                       ; preds = %241, %248
  %255 = phi i1 [ %251, %248 ], [ false, %241 ]
  %256 = phi i1 [ %254, %248 ], [ false, %241 ]
  %257 = getelementptr inbounds i8, ptr %40, i64 7276
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %242, ptr noundef nonnull align 4 dereferenceable(8) %257, i32 noundef %246)
  %.pre614 = load i32, ptr %129, align 8, !tbaa !105
  br label %258

258:                                              ; preds = %.thread566, %238
  %259 = phi i32 [ %.pre614, %.thread566 ], [ %239, %238 ]
  %.0360 = phi i1 [ %256, %.thread566 ], [ false, %238 ]
  %.0359 = phi i1 [ %255, %.thread566 ], [ false, %238 ]
  %260 = and i32 %259, 128
  %.not429 = icmp eq i32 %260, 0
  br i1 %.not429, label %277, label %261

261:                                              ; preds = %258
  %262 = getelementptr inbounds i8, ptr %40, i64 7292
  %263 = load float, ptr %262, align 4, !tbaa !123
  %264 = fcmp ult float %263, 0.000000e+00
  br i1 %264, label %269, label %265

265:                                              ; preds = %261
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  %267 = getelementptr inbounds i8, ptr %266, i64 156
  store float %263, ptr %267, align 4, !tbaa !124
  %268 = getelementptr inbounds i8, ptr %266, i64 164
  store float 0.000000e+00, ptr %268, align 4, !tbaa !125
  br label %269

269:                                              ; preds = %265, %261
  %270 = getelementptr inbounds i8, ptr %40, i64 7296
  %271 = load float, ptr %270, align 4, !tbaa !126
  %272 = fcmp ult float %271, 0.000000e+00
  br i1 %272, label %277, label %273

273:                                              ; preds = %269
  %274 = load ptr, ptr %4, align 8, !tbaa !5
  %275 = getelementptr inbounds i8, ptr %274, i64 160
  store float %271, ptr %275, align 4, !tbaa !127
  %276 = getelementptr inbounds i8, ptr %274, i64 168
  store float 0.000000e+00, ptr %276, align 4, !tbaa !128
  br label %277

277:                                              ; preds = %269, %273, %258
  %278 = and i32 %259, 4
  %.not430 = icmp eq i32 %278, 0
  br i1 %.not430, label %284, label %279

279:                                              ; preds = %277
  %280 = getelementptr inbounds i8, ptr %40, i64 7284
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds i8, ptr %281, i64 104
  %283 = load i64, ptr %280, align 4
  store i64 %283, ptr %282, align 8
  br label %289

284:                                              ; preds = %277
  br i1 %.not416, label %._crit_edge682, label %285

._crit_edge682:                                   ; preds = %284
  %.pre618.pre674.pre.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %289

285:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %5, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %286 = load ptr, ptr %4, align 8, !tbaa !5
  %287 = getelementptr inbounds i8, ptr %286, i64 104
  %288 = load i64, ptr %5, align 8
  store i64 %288, ptr %287, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #15
  br label %289

289:                                              ; preds = %._crit_edge682, %285, %279
  %.pre618.pre674.pre = phi ptr [ %.pre618.pre674.pre.pre, %._crit_edge682 ], [ %286, %285 ], [ %281, %279 ]
  %290 = load i32, ptr %129, align 8, !tbaa !105
  %291 = and i32 %290, 1024
  %.not431 = icmp eq i32 %291, 0
  br i1 %.not431, label %295, label %292

292:                                              ; preds = %289
  %293 = getelementptr inbounds i8, ptr %40, i64 7348
  %294 = getelementptr inbounds i8, ptr %.pre618.pre674.pre, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(26) %294, ptr noundef nonnull align 4 dereferenceable(26) %293, i64 26, i1 false), !tbaa.struct !129
  %.pre615 = load i32, ptr %129, align 8, !tbaa !105
  br label %295

295:                                              ; preds = %292, %289
  %296 = phi i32 [ %.pre615, %292 ], [ %290, %289 ]
  %297 = and i32 %296, 8
  %.not432 = icmp eq i32 %297, 0
  br i1 %.not432, label %304, label %298

298:                                              ; preds = %295
  %299 = getelementptr inbounds i8, ptr %40, i64 7301
  %300 = load i8, ptr %299, align 1, !tbaa !131, !range !64, !noundef !65
  %301 = trunc nuw i8 %300 to i1
  %302 = getelementptr inbounds i8, ptr %40, i64 7252
  %303 = load i32, ptr %302, align 4, !tbaa !132
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre618.pre674.pre, i1 noundef zeroext %301, i32 noundef %303)
  %.pre616 = load i32, ptr %129, align 8, !tbaa !105
  %.pre618.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %304

304:                                              ; preds = %298, %295
  %.pre618 = phi ptr [ %.pre618.pre, %298 ], [ %.pre618.pre674.pre, %295 ]
  %305 = phi i32 [ %.pre616, %298 ], [ %296, %295 ]
  %306 = and i32 %305, 32
  %.not433 = icmp eq i32 %306, 0
  br i1 %.not433, label %308, label %307

307:                                              ; preds = %304
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %.pre618)
  %.pre617 = load ptr, ptr %4, align 8, !tbaa !5
  br label %308

308:                                              ; preds = %307, %304
  %309 = phi ptr [ %.pre617, %307 ], [ %.pre618, %304 ]
  %310 = getelementptr inbounds i8, ptr %309, i64 189
  %311 = load i8, ptr %310, align 1, !tbaa !95, !range !64, !noundef !65
  %312 = trunc nuw i8 %311 to i1
  br i1 %312, label %313, label %314

313:                                              ; preds = %308
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %309, i32 noundef 8, i1 noundef zeroext false)
  br label %314

314:                                              ; preds = %313, %308
  br i1 %.not416, label %1648, label %315

315:                                              ; preds = %314
  %316 = and i32 %.3, 50331648
  %317 = icmp eq i32 %316, 50331648
  %318 = load ptr, ptr %4, align 8, !tbaa !5
  %319 = getelementptr inbounds i8, ptr %318, i64 183
  store i8 1, ptr %319, align 1, !tbaa !133
  %320 = icmp ne ptr %1, null
  %321 = getelementptr inbounds i8, ptr %318, i64 192
  %322 = zext i1 %320 to i8
  store i8 %322, ptr %321, align 8, !tbaa !134
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #15
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %7, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %6, ptr noundef nonnull align 4 dereferenceable(16) %7)
  %323 = load ptr, ptr %4, align 8, !tbaa !5
  %324 = getelementptr inbounds i8, ptr %323, i64 680
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %324, ptr noundef nonnull align 4 dereferenceable(16) %6, i64 16, i1 false), !tbaa.struct !135
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #15
  %325 = getelementptr inbounds i8, ptr %323, i64 256
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %325, i32 noundef 1)
  %326 = load ptr, ptr %4, align 8, !tbaa !5
  %327 = getelementptr inbounds i8, ptr %326, i64 784
  %328 = load ptr, ptr %327, align 8, !tbaa !137
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(224) %328)
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds i8, ptr %329, i64 1104
  %331 = load i8, ptr %330, align 8, !tbaa !138, !range !64, !noundef !65
  %332 = trunc nuw i8 %331 to i1
  br i1 %332, label %333, label %334

333:                                              ; preds = %315
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %329)
  %.pre619 = load ptr, ptr %4, align 8, !tbaa !5
  br label %334

334:                                              ; preds = %333, %315
  %335 = phi ptr [ %.pre619, %333 ], [ %329, %315 ]
  %336 = getelementptr inbounds i8, ptr %335, i64 48
  %337 = load ptr, ptr %336, align 8, !tbaa !139
  %.not434 = icmp eq ptr %337, null
  br i1 %.not434, label %342, label %338

338:                                              ; preds = %334
  %339 = getelementptr inbounds i8, ptr %337, i64 144
  %340 = load ptr, ptr %339, align 8, !tbaa !140
  %341 = icmp eq ptr %340, %335
  br i1 %341, label %.critedge506, label %342

342:                                              ; preds = %338, %334
  %343 = getelementptr inbounds i8, ptr %335, i64 1162
  %344 = load i8, ptr %343, align 2
  %345 = trunc i8 %344 to i1
  br i1 %345, label %.critedge506, label %346

346:                                              ; preds = %342
  %347 = getelementptr inbounds i8, ptr %40, i64 7864
  %348 = load ptr, ptr %347, align 8, !tbaa !145
  %.not435 = icmp eq ptr %348, null
  br i1 %.not435, label %.critedge504, label %349

349:                                              ; preds = %346
  %350 = getelementptr inbounds i8, ptr %335, i64 12
  %351 = load i32, ptr %350, align 4, !tbaa !96
  %352 = and i32 %351, 524288
  %353 = icmp ne i32 %352, 0
  %brmerge507 = or i1 %57, %353
  br i1 %brmerge507, label %.critedge504, label %354

.critedge506:                                     ; preds = %338, %342
  br i1 %57, label %.critedge504, label %354

354:                                              ; preds = %349, %.critedge506
  %355 = load ptr, ptr %335, align 8, !tbaa !146
  %356 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %355) #16
  %.not436 = icmp eq i32 %356, 0
  br i1 %.not436, label %.critedge504, label %357

357:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #15
  %358 = getelementptr inbounds i8, ptr %335, i64 128
  %359 = load i32, ptr %358, align 8, !tbaa !147
  %360 = sext i32 %359 to i64
  store i64 %360, ptr %8, align 8, !tbaa !148
  %361 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %355, ptr noundef nonnull %8, ptr noundef nonnull %0)
  %362 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %361, ptr %362, align 8, !tbaa !146
  %363 = load i64, ptr %8, align 8, !tbaa !148
  %364 = trunc i64 %363 to i32
  %365 = load ptr, ptr %4, align 8, !tbaa !5
  %366 = getelementptr inbounds i8, ptr %365, i64 128
  store i32 %364, ptr %366, align 8, !tbaa !147
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #15
  br label %.critedge504

.critedge504:                                     ; preds = %346, %349, %357, %354, %.critedge506
  %367 = phi ptr [ %335, %346 ], [ %335, %349 ], [ %365, %357 ], [ %335, %354 ], [ %335, %.critedge506 ]
  %368 = call <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef nonnull %367)
  %369 = load ptr, ptr %4, align 8, !tbaa !5
  %370 = getelementptr inbounds i8, ptr %369, i64 96
  store <2 x float> %368, ptr %370, align 8
  %371 = getelementptr inbounds i8, ptr %369, i64 212
  %372 = load i32, ptr %371, align 4, !tbaa !150
  %373 = icmp sgt i32 %372, 0
  br i1 %373, label %374, label %376

374:                                              ; preds = %.critedge504
  %375 = add nsw i32 %372, -1
  store i32 %375, ptr %371, align 4, !tbaa !150
  br label %376

376:                                              ; preds = %374, %.critedge504
  %377 = getelementptr inbounds i8, ptr %369, i64 216
  %378 = load i32, ptr %377, align 8, !tbaa !89
  %379 = icmp slt i32 %378, 1
  %.not607 = xor i1 %57, true
  %380 = select i1 %.0359, i1 %.0360, i1 false
  %or.cond608 = select i1 %.not607, i1 true, i1 %380
  %.not612 = and i1 %379, %or.cond608
  br i1 %.not612, label %383, label %381

381:                                              ; preds = %376
  %382 = add nsw i32 %378, -1
  %simplifycfg.merge609 = select i1 %or.cond608, i32 %382, i32 1
  store i32 %simplifycfg.merge609, ptr %377, align 8, !tbaa !89
  br label %383

383:                                              ; preds = %376, %381
  %384 = and i32 %.3, 100663296
  %.not437 = icmp ne i32 %384, 0
  %or.cond509.not = select i1 %.0357.in, i1 %.not437, i1 false
  br i1 %or.cond509.not, label %385, label %399

385:                                              ; preds = %383
  store i32 1, ptr %377, align 8, !tbaa !89
  %386 = and i32 %.3, 64
  %.not438 = icmp eq i32 %386, 0
  br i1 %.not438, label %399, label %387

387:                                              ; preds = %385
  br i1 %.0359, label %391, label %388

388:                                              ; preds = %387
  %389 = getelementptr inbounds i8, ptr %369, i64 88
  store float 0.000000e+00, ptr %389, align 8, !tbaa !151
  %390 = getelementptr inbounds i8, ptr %369, i64 80
  store float 0.000000e+00, ptr %390, align 8, !tbaa !152
  br label %391

391:                                              ; preds = %388, %387
  br i1 %.0360, label %395, label %392

392:                                              ; preds = %391
  %393 = getelementptr inbounds i8, ptr %369, i64 92
  store float 0.000000e+00, ptr %393, align 4, !tbaa !153
  %394 = getelementptr inbounds i8, ptr %369, i64 84
  store float 0.000000e+00, ptr %394, align 4, !tbaa !154
  br label %395

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

399:                                              ; preds = %385, %395, %383
  %400 = phi ptr [ %369, %385 ], [ %396, %395 ], [ %369, %383 ]
  call void @_ZN5ImGuiL26UpdateSelectWindowViewportEP11ImGuiWindow(ptr noundef nonnull %400)
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = getelementptr inbounds i8, ptr %401, i64 48
  %403 = load ptr, ptr %402, align 8, !tbaa !139
  call void @_ZN5ImGuiL18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %401, ptr noundef %403)
  %404 = getelementptr inbounds i8, ptr %40, i64 8
  %405 = load i32, ptr %404, align 8, !tbaa !155
  %406 = and i32 %405, 32768
  %.not439 = icmp eq i32 %406, 0
  %.pre620 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not439, label %412, label %407

407:                                              ; preds = %399
  %408 = getelementptr inbounds i8, ptr %.pre620, i64 48
  %409 = load ptr, ptr %408, align 8, !tbaa !139
  %410 = getelementptr inbounds i8, ptr %409, i64 40
  %411 = load float, ptr %410, align 8, !tbaa !156
  br label %412

412:                                              ; preds = %399, %407
  %413 = phi float [ %411, %407 ], [ 1.000000e+00, %399 ]
  %414 = getelementptr inbounds i8, ptr %.pre620, i64 772
  store float %413, ptr %414, align 4, !tbaa !157
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %.pre620)
  %415 = load ptr, ptr %4, align 8, !tbaa !5
  %416 = getelementptr inbounds i8, ptr %415, i64 12
  %417 = load i32, ptr %416, align 4, !tbaa !96
  %418 = and i32 %417, 16777216
  %.not440 = icmp eq i32 %418, 0
  br i1 %.not440, label %.thread567, label %423

.thread567:                                       ; preds = %412
  %419 = and i32 %417, 100663296
  %.not441 = icmp ne i32 %419, 0
  %420 = and i32 %417, 134217728
  %.not442 = icmp eq i32 %420, 0
  %or.cond510 = and i1 %.not441, %.not442
  %.in.v = select i1 %or.cond510, i64 5756, i64 5720
  %.in = getelementptr inbounds i8, ptr %40, i64 %.in.v
  %421 = load float, ptr %.in, align 4, !tbaa !136
  %422 = getelementptr inbounds i8, ptr %415, i64 124
  store float %421, ptr %422, align 4, !tbaa !158
  br label %443

423:                                              ; preds = %412
  %424 = getelementptr inbounds i8, ptr %40, i64 5748
  %425 = load float, ptr %424, align 4, !tbaa !159
  %426 = getelementptr inbounds i8, ptr %415, i64 124
  store float %425, ptr %426, align 4, !tbaa !158
  %427 = getelementptr inbounds i8, ptr %415, i64 1162
  %428 = load i8, ptr %427, align 2
  %429 = trunc i8 %428 to i1
  %430 = and i32 %417, 83951616
  %431 = icmp ne i32 %430, 16777216
  %or.cond512.not = or i1 %431, %429
  %432 = fcmp une float %425, 0.000000e+00
  %or.cond693.not = select i1 %or.cond512.not, i1 true, i1 %432
  br i1 %or.cond693.not, label %443, label %433

433:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #15
  %434 = and i32 %417, 1024
  %.not444 = icmp eq i32 %434, 0
  br i1 %.not444, label %438, label %435

435:                                              ; preds = %433
  %436 = getelementptr inbounds i8, ptr %40, i64 5712
  %437 = load float, ptr %436, align 4, !tbaa !160
  br label %438

438:                                              ; preds = %433, %435
  %439 = phi float [ %437, %435 ], [ 0.000000e+00, %433 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef %439)
  %440 = load ptr, ptr %4, align 8, !tbaa !5
  %441 = getelementptr inbounds i8, ptr %440, i64 112
  %442 = load i64, ptr %10, align 8
  store i64 %442, ptr %441, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  br label %447

443:                                              ; preds = %.thread567, %423
  %444 = getelementptr inbounds i8, ptr %40, i64 5708
  %445 = getelementptr inbounds i8, ptr %415, i64 112
  %446 = load i64, ptr %444, align 4
  store i64 %446, ptr %445, align 8
  br label %447

447:                                              ; preds = %443, %438
  %.in687.in = phi i64 [ %446, %443 ], [ %442, %438 ]
  %.in687 = trunc i64 %.in687.in to i32
  %448 = bitcast i32 %.in687 to float
  %449 = getelementptr inbounds i8, ptr %40, i64 5776
  %450 = load float, ptr %449, align 4, !tbaa !161
  %451 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %448, float noundef %450)
  %452 = getelementptr inbounds i8, ptr %40, i64 7376
  %453 = load float, ptr %452, align 8, !tbaa !162
  %454 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %451, float noundef %453)
  %455 = load ptr, ptr %4, align 8, !tbaa !5
  %456 = getelementptr inbounds i8, ptr %455, i64 404
  store float %454, ptr %456, align 4, !tbaa !163
  %457 = getelementptr inbounds i8, ptr %40, i64 7380
  %458 = load float, ptr %457, align 4, !tbaa !164
  %459 = getelementptr inbounds i8, ptr %455, i64 408
  store float %458, ptr %459, align 4, !tbaa !165
  %460 = and i32 %417, 1
  %.not445 = icmp eq i32 %460, 0
  %461 = and i32 %417, 33
  %or.cond513 = icmp eq i32 %461, 0
  br i1 %or.cond513, label %462, label %502

462:                                              ; preds = %447
  %463 = getelementptr inbounds i8, ptr %455, i64 1162
  %464 = load i8, ptr %463, align 2
  %465 = trunc i8 %464 to i1
  br i1 %465, label %502, label %466

466:                                              ; preds = %462
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #15
  %467 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1163) %455)
  %468 = extractvalue { <2 x float>, <2 x float> } %467, 0
  store <2 x float> %468, ptr %11, align 8
  %469 = getelementptr inbounds i8, ptr %11, i64 8
  %470 = extractvalue { <2 x float>, <2 x float> } %467, 1
  store <2 x float> %470, ptr %469, align 8
  %471 = getelementptr inbounds i8, ptr %40, i64 7072
  %472 = load ptr, ptr %471, align 8, !tbaa !166
  %473 = load ptr, ptr %4, align 8, !tbaa !5
  %474 = icmp eq ptr %472, %473
  br i1 %474, label %475, label %491

475:                                              ; preds = %466
  %476 = getelementptr inbounds i8, ptr %40, i64 7132
  %477 = load i32, ptr %476, align 4, !tbaa !167
  %478 = icmp eq i32 %477, 0
  br i1 %478, label %479, label %491

479:                                              ; preds = %475
  %480 = getelementptr inbounds i8, ptr %40, i64 7136
  %481 = load i32, ptr %480, align 8, !tbaa !168
  %482 = icmp eq i32 %481, 0
  br i1 %482, label %483, label %491

483:                                              ; preds = %479
  %484 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %469, i1 noundef zeroext true)
  br i1 %484, label %485, label %._crit_edge621

._crit_edge621:                                   ; preds = %483
  %.pre622 = load ptr, ptr %4, align 8, !tbaa !5
  br label %491

485:                                              ; preds = %483
  %486 = getelementptr inbounds i8, ptr %40, i64 1061
  %487 = load i8, ptr %486, align 1, !tbaa !130, !range !64, !noundef !65
  %488 = trunc nuw i8 %487 to i1
  %.pre623 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %488, label %489, label %491

489:                                              ; preds = %485
  %490 = getelementptr inbounds i8, ptr %.pre623, i64 187
  store i8 1, ptr %490, align 1, !tbaa !169
  br label %491

491:                                              ; preds = %._crit_edge621, %489, %485, %479, %475, %466
  %492 = phi ptr [ %.pre622, %._crit_edge621 ], [ %.pre623, %489 ], [ %.pre623, %485 ], [ %473, %479 ], [ %473, %475 ], [ %473, %466 ]
  %493 = getelementptr inbounds i8, ptr %492, i64 187
  %494 = load i8, ptr %493, align 1, !tbaa !169, !range !64, !noundef !65
  %495 = trunc nuw i8 %494 to i1
  br i1 %495, label %496, label %501

496:                                              ; preds = %491
  %497 = getelementptr inbounds i8, ptr %492, i64 186
  %498 = load i8, ptr %497, align 2, !tbaa !170, !range !64, !noundef !65
  %499 = xor i8 %498, 1
  store i8 %499, ptr %497, align 2, !tbaa !170
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %492)
  %500 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %500)
  %.pre624.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %501

501:                                              ; preds = %496, %491
  %.pre624 = phi ptr [ %.pre624.pre, %496 ], [ %492, %491 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  br label %504

502:                                              ; preds = %462, %447
  %503 = getelementptr inbounds i8, ptr %455, i64 186
  store i8 0, ptr %503, align 2, !tbaa !170
  br label %504

504:                                              ; preds = %502, %501
  %505 = phi ptr [ %455, %502 ], [ %.pre624, %501 ]
  %506 = getelementptr inbounds i8, ptr %505, i64 187
  store i8 0, ptr %506, align 1, !tbaa !169
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #15
  %507 = getelementptr inbounds i8, ptr %505, i64 96
  %508 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %505, ptr noundef nonnull align 4 dereferenceable(8) %507)
  store <2 x float> %508, ptr %12, align 8
  %509 = and i32 %417, 64
  %.not447.not = icmp eq i32 %509, 0
  %510 = extractelement <2 x float> %508, i64 0
  %511 = extractelement <2 x float> %508, i64 1
  %.pre625 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not447.not, label %522, label %512

512:                                              ; preds = %504
  %513 = getelementptr inbounds i8, ptr %.pre625, i64 186
  %514 = load i8, ptr %513, align 2, !tbaa !170, !range !64, !noundef !65
  %515 = trunc nuw i8 %514 to i1
  br i1 %515, label %522, label %516

516:                                              ; preds = %512
  br i1 %.0359, label %519, label %517

517:                                              ; preds = %516
  %518 = getelementptr inbounds i8, ptr %.pre625, i64 88
  store float %510, ptr %518, align 8, !tbaa !151
  br label %519

519:                                              ; preds = %517, %516
  %.0363 = phi i1 [ %57, %516 ], [ true, %517 ]
  br i1 %.0360, label %571, label %520

520:                                              ; preds = %519
  %521 = getelementptr inbounds i8, ptr %.pre625, i64 92
  store float %511, ptr %521, align 4, !tbaa !153
  br label %571

522:                                              ; preds = %512, %504
  %523 = getelementptr inbounds i8, ptr %.pre625, i64 204
  %524 = load i8, ptr %523, align 4, !tbaa !171
  %525 = icmp sgt i8 %524, 0
  br i1 %525, label %530, label %526

526:                                              ; preds = %522
  %527 = getelementptr inbounds i8, ptr %.pre625, i64 205
  %528 = load i8, ptr %527, align 1, !tbaa !172
  %529 = icmp sgt i8 %528, 0
  br i1 %529, label %.thread573, label %571

530:                                              ; preds = %522
  br i1 %.0359, label %.thread573, label %531

531:                                              ; preds = %530
  %532 = getelementptr inbounds i8, ptr %.pre625, i64 207
  %533 = load i8, ptr %532, align 1, !tbaa !173, !range !64, !noundef !65
  %534 = trunc nuw i8 %533 to i1
  br i1 %534, label %535, label %539

535:                                              ; preds = %531
  %536 = getelementptr inbounds i8, ptr %.pre625, i64 88
  %537 = load float, ptr %536, align 8, !tbaa !151
  %538 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %537, float noundef %510)
  %.pre626 = load ptr, ptr %4, align 8, !tbaa !5
  br label %539

539:                                              ; preds = %531, %535
  %540 = phi ptr [ %.pre626, %535 ], [ %.pre625, %531 ]
  %541 = phi float [ %538, %535 ], [ %510, %531 ]
  %542 = getelementptr inbounds i8, ptr %540, i64 88
  store float %541, ptr %542, align 8, !tbaa !151
  br label %.thread573

.thread573:                                       ; preds = %526, %539, %530
  %543 = phi ptr [ %.pre625, %530 ], [ %540, %539 ], [ %.pre625, %526 ]
  %.1364 = phi i1 [ %57, %530 ], [ true, %539 ], [ %57, %526 ]
  br i1 %.0360, label %565, label %544

544:                                              ; preds = %.thread573
  %545 = getelementptr inbounds i8, ptr %543, i64 205
  %546 = load i8, ptr %545, align 1, !tbaa !172
  %547 = icmp sgt i8 %546, 0
  br i1 %547, label %548, label %565

548:                                              ; preds = %544
  %549 = getelementptr inbounds i8, ptr %543, i64 207
  %550 = load i8, ptr %549, align 1, !tbaa !173, !range !64, !noundef !65
  %551 = trunc nuw i8 %550 to i1
  br i1 %551, label %552, label %558

552:                                              ; preds = %548
  %553 = getelementptr inbounds i8, ptr %543, i64 92
  %554 = load float, ptr %553, align 4, !tbaa !153
  %555 = getelementptr inbounds i8, ptr %12, i64 4
  %556 = load float, ptr %555, align 4, !tbaa !174
  %557 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %554, float noundef %556)
  %.pre627 = load ptr, ptr %4, align 8, !tbaa !5
  br label %561

558:                                              ; preds = %548
  %559 = getelementptr inbounds i8, ptr %12, i64 4
  %560 = load float, ptr %559, align 4, !tbaa !174
  br label %561

561:                                              ; preds = %558, %552
  %562 = phi ptr [ %.pre627, %552 ], [ %543, %558 ]
  %563 = phi float [ %557, %552 ], [ %560, %558 ]
  %564 = getelementptr inbounds i8, ptr %562, i64 92
  store float %563, ptr %564, align 4, !tbaa !153
  br label %565

565:                                              ; preds = %561, %544, %.thread573
  %566 = phi ptr [ %543, %.thread573 ], [ %562, %561 ], [ %543, %544 ]
  %.0368 = phi i1 [ %57, %.thread573 ], [ true, %561 ], [ %57, %544 ]
  %567 = getelementptr inbounds i8, ptr %566, i64 186
  %568 = load i8, ptr %567, align 2, !tbaa !170, !range !64, !noundef !65
  %569 = trunc nuw i8 %568 to i1
  br i1 %569, label %571, label %570

570:                                              ; preds = %565
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %566)
  %.pre628 = load ptr, ptr %4, align 8, !tbaa !5
  br label %571

571:                                              ; preds = %526, %570, %565, %519, %520
  %572 = phi ptr [ %566, %565 ], [ %.pre628, %570 ], [ %.pre625, %526 ], [ %.pre625, %519 ], [ %.pre625, %520 ]
  %.1369 = phi i1 [ %.0368, %565 ], [ %.0368, %570 ], [ %57, %526 ], [ %57, %519 ], [ true, %520 ]
  %.2365 = phi i1 [ %.1364, %565 ], [ %.1364, %570 ], [ %57, %526 ], [ %.0363, %519 ], [ %.0363, %520 ]
  %573 = getelementptr inbounds i8, ptr %572, i64 88
  %.sroa.075.0.copyload = load <2 x float>, ptr %573, align 8
  %574 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %572, <2 x float> %.sroa.075.0.copyload)
  %575 = load ptr, ptr %4, align 8, !tbaa !5
  %576 = getelementptr inbounds i8, ptr %575, i64 88
  store <2 x float> %574, ptr %576, align 8
  %577 = getelementptr inbounds i8, ptr %575, i64 186
  %578 = load i8, ptr %577, align 2, !tbaa !170, !range !64, !noundef !65
  %579 = trunc nuw i8 %578 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #15
  %.not440.not = xor i1 %.not440, true
  %brmerge515.not = and i1 %.not440, %579
  br i1 %brmerge515.not, label %580, label %586

580:                                              ; preds = %571
  %581 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1163) %575)
  %582 = extractvalue { <2 x float>, <2 x float> } %581, 0
  store <2 x float> %582, ptr %13, align 8
  %583 = getelementptr inbounds i8, ptr %13, i64 8
  %584 = extractvalue { <2 x float>, <2 x float> } %581, 1
  store <2 x float> %584, ptr %583, align 8
  %585 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %13)
  %.pre629 = load ptr, ptr %4, align 8, !tbaa !5
  br label %586

586:                                              ; preds = %571, %580
  %587 = phi ptr [ %.pre629, %580 ], [ %575, %571 ]
  %.sroa.073.0 = phi <2 x float> [ %585, %580 ], [ %574, %571 ]
  %588 = getelementptr inbounds i8, ptr %587, i64 80
  store <2 x float> %.sroa.073.0, ptr %588, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  %589 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1163) %587)
  %590 = load ptr, ptr %4, align 8, !tbaa !5
  %591 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1163) %590)
  %592 = fadd float %589, %591
  br i1 %.0357.in, label %593, label %604

593:                                              ; preds = %586
  %594 = load ptr, ptr %4, align 8, !tbaa !5
  %595 = getelementptr inbounds i8, ptr %594, i64 208
  store i32 -1, ptr %595, align 8, !tbaa !175
  %596 = and i32 %417, 201326592
  %or.cond516 = icmp ne i32 %596, 67108864
  %brmerge517 = or i1 %.0358.shrunk, %or.cond516
  br i1 %brmerge517, label %604, label %597

597:                                              ; preds = %593
  %598 = getelementptr inbounds i8, ptr %40, i64 7472
  %599 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %598)
  %600 = getelementptr inbounds i8, ptr %599, i64 32
  %601 = load ptr, ptr %4, align 8, !tbaa !5
  %602 = getelementptr inbounds i8, ptr %601, i64 72
  %603 = load i64, ptr %600, align 8
  store i64 %603, ptr %602, align 8
  br label %604

604:                                              ; preds = %593, %597, %586
  br i1 %.not440, label %._crit_edge630, label %605

._crit_edge630:                                   ; preds = %604
  %.pre631 = load ptr, ptr %4, align 8, !tbaa !5
  br label %621

605:                                              ; preds = %604
  br i1 %179, label %.critedge4, label %606

606:                                              ; preds = %605
  %607 = getelementptr inbounds i8, ptr %178, i64 183
  %608 = load i8, ptr %607, align 1, !tbaa !133, !range !64, !noundef !65
  %609 = trunc nuw i8 %608 to i1
  br i1 %609, label %610, label %.critedge4

.critedge4:                                       ; preds = %605, %606
  call void @__assert_fail(ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.3, i32 noundef 6150, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

610:                                              ; preds = %606
  %611 = getelementptr inbounds i8, ptr %178, i64 456
  %612 = load i32, ptr %611, align 8, !tbaa !176
  %613 = trunc i32 %612 to i16
  %614 = load ptr, ptr %4, align 8, !tbaa !5
  %615 = getelementptr inbounds i8, ptr %614, i64 196
  store i16 %613, ptr %615, align 4, !tbaa !100
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %611, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %616 = and i32 %417, 67108864
  %.not450 = icmp ne i32 %616, 0
  %brmerge518 = or i1 %.0358.shrunk, %.not450
  %brmerge519 = select i1 %brmerge518, i1 true, i1 %317
  %.pre632 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge519, label %621, label %617

617:                                              ; preds = %610
  %618 = getelementptr inbounds i8, ptr %178, i64 272
  %619 = getelementptr inbounds i8, ptr %.pre632, i64 72
  %620 = load i64, ptr %618, align 8
  store i64 %620, ptr %619, align 8
  br label %621

621:                                              ; preds = %._crit_edge630, %610, %617
  %622 = phi ptr [ %.pre631, %._crit_edge630 ], [ %.pre632, %610 ], [ %.pre632, %617 ]
  %623 = getelementptr inbounds i8, ptr %622, i64 236
  %624 = load float, ptr %623, align 4, !tbaa !177
  %625 = fcmp une float %624, 0x47EFFFFFE0000000
  br i1 %625, label %626, label %.critedge521

626:                                              ; preds = %621
  %627 = getelementptr inbounds i8, ptr %622, i64 216
  %628 = load i32, ptr %627, align 8, !tbaa !89
  %629 = icmp eq i32 %628, 0
  br i1 %629, label %630, label %.critedge521

630:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #15
  %631 = getelementptr inbounds i8, ptr %622, i64 88
  %632 = getelementptr inbounds i8, ptr %622, i64 244
  %633 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %631, ptr noundef nonnull align 4 dereferenceable(8) %632)
  store <2 x float> %633, ptr %15, align 8
  %634 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %623, ptr noundef nonnull align 4 dereferenceable(8) %15)
  store <2 x float> %634, ptr %14, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %622, ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #15
  %.pre633 = load ptr, ptr %4, align 8, !tbaa !5
  br label %652

.critedge521:                                     ; preds = %621, %626
  %635 = and i32 %417, 268435456
  %.not451 = icmp eq i32 %635, 0
  br i1 %.not451, label %640, label %636

636:                                              ; preds = %.critedge521
  %637 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %622)
  %638 = load ptr, ptr %4, align 8, !tbaa !5
  %639 = getelementptr inbounds i8, ptr %638, i64 72
  store <2 x float> %637, ptr %639, align 8
  br label %652

640:                                              ; preds = %.critedge521
  %641 = and i32 %417, 67108864
  %.not452 = icmp eq i32 %641, 0
  %brmerge522 = or i1 %.0358.shrunk, %.not452
  %brmerge524 = or i1 %brmerge522, %.not500
  br i1 %brmerge524, label %646, label %642

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

646:                                              ; preds = %640
  %647 = and i32 %417, 33554432
  %.not453 = icmp eq i32 %647, 0
  %brmerge525 = or i1 %.0358.shrunk, %.not453
  %brmerge526 = select i1 %brmerge525, i1 true, i1 %317
  br i1 %brmerge526, label %652, label %648

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

652:                                              ; preds = %646, %636, %648, %642, %630
  %653 = phi ptr [ %622, %646 ], [ %638, %636 ], [ %650, %648 ], [ %644, %642 ], [ %.pre633, %630 ]
  %654 = getelementptr inbounds i8, ptr %653, i64 68
  %655 = load i32, ptr %654, align 4, !tbaa !178
  %656 = icmp sgt i32 %655, -1
  br i1 %656, label %657, label %696

657:                                              ; preds = %652
  %658 = getelementptr inbounds i8, ptr %653, i64 182
  %659 = load i8, ptr %658, align 2, !tbaa !179, !range !64, !noundef !65
  %660 = trunc nuw i8 %659 to i1
  br i1 %660, label %696, label %661

661:                                              ; preds = %657
  %662 = getelementptr inbounds i8, ptr %653, i64 48
  %663 = load ptr, ptr %662, align 8, !tbaa !139
  %664 = getelementptr inbounds i8, ptr %663, i64 4
  %665 = load i32, ptr %664, align 4, !tbaa !180
  %666 = and i32 %665, 128
  %.not454 = icmp eq i32 %666, 0
  br i1 %.not454, label %667, label %696

667:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #15
  %668 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(304) %663)
  %669 = extractvalue { <2 x float>, <2 x float> } %668, 0
  store <2 x float> %669, ptr %16, align 8
  %670 = getelementptr inbounds i8, ptr %16, i64 8
  %671 = extractvalue { <2 x float>, <2 x float> } %668, 1
  store <2 x float> %671, ptr %670, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #15
  %672 = load ptr, ptr %4, align 8, !tbaa !5
  %673 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1163) %672)
  %674 = extractvalue { <2 x float>, <2 x float> } %673, 0
  store <2 x float> %674, ptr %17, align 8
  %675 = getelementptr inbounds i8, ptr %17, i64 8
  %676 = extractvalue { <2 x float>, <2 x float> } %673, 1
  store <2 x float> %676, ptr %675, align 8
  %677 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %16, ptr noundef nonnull align 4 dereferenceable(16) %17)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #15
  %.pre636 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %677, label %696, label %678

678:                                              ; preds = %667
  %679 = getelementptr inbounds i8, ptr %.pre636, i64 8
  %680 = load i32, ptr %679, align 8, !tbaa !181
  %681 = getelementptr inbounds i8, ptr %.pre636, i64 72
  %682 = getelementptr inbounds i8, ptr %.pre636, i64 80
  %683 = call noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef %.pre636, i32 noundef %680, ptr noundef nonnull align 4 dereferenceable(8) %681, ptr noundef nonnull align 4 dereferenceable(8) %682, i32 noundef 4)
  %684 = load ptr, ptr %4, align 8, !tbaa !5
  %685 = getelementptr inbounds i8, ptr %684, i64 48
  store ptr %683, ptr %685, align 8, !tbaa !139
  call void @_ZN5ImGuiL18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %684, ptr noundef %683)
  %686 = load i32, ptr %404, align 8, !tbaa !155
  %687 = and i32 %686, 32768
  %.not455 = icmp eq i32 %687, 0
  %.pre634 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not455, label %693, label %688

688:                                              ; preds = %678
  %689 = getelementptr inbounds i8, ptr %.pre634, i64 48
  %690 = load ptr, ptr %689, align 8, !tbaa !139
  %691 = getelementptr inbounds i8, ptr %690, i64 40
  %692 = load float, ptr %691, align 8, !tbaa !156
  br label %693

693:                                              ; preds = %678, %688
  %694 = phi float [ %692, %688 ], [ 1.000000e+00, %678 ]
  %695 = getelementptr inbounds i8, ptr %.pre634, i64 772
  store float %694, ptr %695, align 4, !tbaa !157
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %.pre634)
  %.pre635 = load ptr, ptr %4, align 8, !tbaa !5
  br label %696

696:                                              ; preds = %667, %693, %661, %657, %652
  %697 = phi ptr [ %.pre636, %667 ], [ %.pre635, %693 ], [ %653, %661 ], [ %653, %657 ], [ %653, %652 ]
  %698 = getelementptr inbounds i8, ptr %697, i64 182
  %699 = load i8, ptr %698, align 2, !tbaa !179, !range !64, !noundef !65
  %700 = trunc nuw i8 %699 to i1
  %701 = getelementptr inbounds i8, ptr %697, i64 48
  %702 = load ptr, ptr %701, align 8, !tbaa !139
  br i1 %700, label %703, label %._crit_edge642

703:                                              ; preds = %696
  %704 = getelementptr inbounds i8, ptr %702, i64 96
  %705 = load i8, ptr %704, align 8, !tbaa !182, !range !64, !noundef !65
  %706 = trunc nuw i8 %705 to i1
  %707 = getelementptr inbounds i8, ptr %702, i64 8
  %708 = getelementptr inbounds i8, ptr %697, i64 72
  br i1 %706, label %709, label %711

709:                                              ; preds = %703
  %710 = load i64, ptr %707, align 8
  store i64 %710, ptr %708, align 8
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %697)
  %.pre637 = load ptr, ptr %4, align 8, !tbaa !5
  br label %714

711:                                              ; preds = %703
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(8) %707, ptr noundef nonnull dereferenceable(8) %708, i64 8)
  %.not456 = icmp eq i32 %bcmp, 0
  br i1 %.not456, label %714, label %712

712:                                              ; preds = %711
  %713 = load i64, ptr %708, align 8
  store i64 %713, ptr %707, align 8
  br label %714

714:                                              ; preds = %711, %712, %709
  %715 = phi ptr [ %.pre637, %709 ], [ %697, %712 ], [ %697, %711 ]
  %.0371 = phi i1 [ false, %709 ], [ true, %712 ], [ false, %711 ]
  %716 = getelementptr inbounds i8, ptr %715, i64 48
  %717 = load ptr, ptr %716, align 8, !tbaa !139
  %718 = getelementptr inbounds i8, ptr %717, i64 97
  %719 = load i8, ptr %718, align 1, !tbaa !183, !range !64, !noundef !65
  %720 = trunc nuw i8 %719 to i1
  %721 = getelementptr inbounds i8, ptr %717, i64 16
  br i1 %720, label %722, label %726

722:                                              ; preds = %714
  %723 = getelementptr inbounds i8, ptr %715, i64 88
  %724 = load i64, ptr %721, align 8
  store i64 %724, ptr %723, align 8
  %725 = getelementptr inbounds i8, ptr %715, i64 80
  store i64 %724, ptr %725, align 8
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %715)
  %.pre641.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %729

726:                                              ; preds = %714
  %727 = getelementptr inbounds i8, ptr %715, i64 80
  %bcmp457 = call i32 @bcmp(ptr noundef nonnull dereferenceable(8) %721, ptr noundef nonnull dereferenceable(8) %727, i64 8)
  %.not458 = icmp eq i32 %bcmp457, 0
  br i1 %.not458, label %729, label %.thread574

.thread574:                                       ; preds = %726
  %728 = load i64, ptr %727, align 8
  store i64 %728, ptr %721, align 8
  br label %._crit_edge638

729:                                              ; preds = %726, %722
  %.pre641 = phi ptr [ %715, %726 ], [ %.pre641.pre, %722 ]
  br i1 %.0371, label %._crit_edge638, label %733

._crit_edge638:                                   ; preds = %729, %.thread574
  %730 = phi ptr [ %715, %.thread574 ], [ %.pre641, %729 ]
  %731 = getelementptr inbounds i8, ptr %730, i64 48
  %732 = load ptr, ptr %731, align 8, !tbaa !139
  call void @_ZN5ImGuiL29UpdateViewportPlatformMonitorEP14ImGuiViewportP(ptr noundef %732)
  %.pre640 = load ptr, ptr %4, align 8, !tbaa !5
  br label %733

733:                                              ; preds = %._crit_edge638, %729
  %734 = phi ptr [ %.pre640, %._crit_edge638 ], [ %.pre641, %729 ]
  %735 = getelementptr inbounds i8, ptr %734, i64 48
  %736 = load ptr, ptr %735, align 8, !tbaa !139
  %737 = getelementptr inbounds i8, ptr %736, i64 4
  %738 = load i32, ptr %737, align 4, !tbaa !180
  %739 = and i32 %738, -100
  %740 = and i32 %417, 369098752
  %.not459 = icmp ne i32 %740, 0
  %741 = lshr i32 %417, 19
  %742 = and i32 %741, 64
  %spec.select527 = or disjoint i32 %739, %742
  %743 = getelementptr inbounds i8, ptr %40, i64 205
  %744 = load i8, ptr %743, align 1, !tbaa !184, !range !64, !noundef !65
  %745 = trunc nuw i8 %744 to i1
  %brmerge528 = or i1 %.not459, %745
  %746 = or disjoint i32 %spec.select527, 2
  %.1374 = select i1 %brmerge528, i32 %746, i32 %spec.select527
  %747 = getelementptr inbounds i8, ptr %40, i64 206
  %748 = load i8, ptr %747, align 2, !tbaa !185, !range !64, !noundef !65
  %749 = trunc nuw i8 %748 to i1
  %brmerge530 = or i1 %.not459, %749
  %750 = zext i1 %brmerge530 to i32
  %.2375 = or disjoint i32 %.1374, %750
  %751 = and i32 %417, 134217728
  %752 = icmp eq i32 %751, 0
  %or.cond533 = and i1 %.not459, %752
  %753 = or i32 %.2375, 12
  %.3376 = select i1 %or.cond533, i32 %753, i32 %.2375
  %754 = getelementptr inbounds i8, ptr %734, i64 24
  %755 = load i32, ptr %754, align 4, !tbaa !186
  %.not461 = icmp eq i32 %755, 0
  br i1 %.not461, label %756, label %769

756:                                              ; preds = %733
  %757 = and i32 %417, 100663296
  %758 = icmp ne i32 %757, 0
  %759 = icmp ne ptr %170, null
  %or.cond = select i1 %758, i1 %759, i1 false
  br i1 %or.cond, label %760, label %764

760:                                              ; preds = %756
  %761 = getelementptr inbounds i8, ptr %170, i64 48
  %762 = load ptr, ptr %761, align 8, !tbaa !139
  %763 = load i32, ptr %762, align 8, !tbaa !187
  br label %769

764:                                              ; preds = %756
  %765 = getelementptr inbounds i8, ptr %40, i64 207
  %766 = load i8, ptr %765, align 1, !tbaa !188, !range !64, !noundef !65
  %767 = trunc nuw i8 %766 to i1
  %768 = select i1 %767, i32 0, i32 286331153
  br label %769

769:                                              ; preds = %733, %760, %764
  %.sink = phi i32 [ %763, %760 ], [ %768, %764 ], [ %755, %733 ]
  %770 = getelementptr inbounds i8, ptr %736, i64 56
  store i32 %.sink, ptr %770, align 8, !tbaa !189
  %771 = getelementptr inbounds i8, ptr %734, i64 28
  %772 = load i32, ptr %771, align 4, !tbaa !190
  %773 = or i32 %772, %.3376
  %774 = getelementptr inbounds i8, ptr %734, i64 32
  %775 = load i32, ptr %774, align 4, !tbaa !191
  %776 = xor i32 %775, -1
  %777 = and i32 %773, %776
  %778 = and i32 %417, 128
  %.not464 = icmp eq i32 %778, 0
  %779 = and i32 %777, -33
  %.6 = select i1 %.not464, i32 %779, i32 %777
  store i32 %.6, ptr %737, align 4, !tbaa !180
  br label %._crit_edge642

._crit_edge642:                                   ; preds = %696, %769
  %780 = phi ptr [ %736, %769 ], [ %702, %696 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #15
  %781 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(304) %780)
  %782 = extractvalue { <2 x float>, <2 x float> } %781, 0
  store <2 x float> %782, ptr %18, align 8
  %783 = getelementptr inbounds i8, ptr %18, i64 8
  %784 = extractvalue { <2 x float>, <2 x float> } %781, 1
  store <2 x float> %784, ptr %783, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #15
  %785 = load ptr, ptr %4, align 8, !tbaa !5
  %786 = getelementptr inbounds i8, ptr %785, i64 48
  %787 = load ptr, ptr %786, align 8, !tbaa !139
  %788 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(304) %787)
  %789 = extractvalue { <2 x float>, <2 x float> } %788, 0
  store <2 x float> %789, ptr %19, align 8
  %790 = getelementptr inbounds i8, ptr %19, i64 8
  %791 = extractvalue { <2 x float>, <2 x float> } %788, 1
  store <2 x float> %791, ptr %790, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #15
  %792 = getelementptr inbounds i8, ptr %40, i64 5860
  %793 = getelementptr inbounds i8, ptr %40, i64 5868
  %794 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %792, ptr noundef nonnull align 4 dereferenceable(8) %793)
  store <2 x float> %794, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #15
  %795 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %19, ptr noundef nonnull align 4 dereferenceable(8) %20)
  store <2 x float> %795, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #15
  %796 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %790, ptr noundef nonnull align 4 dereferenceable(8) %20)
  store <2 x float> %796, ptr %23, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %21, ptr noundef nonnull align 4 dereferenceable(8) %22, ptr noundef nonnull align 4 dereferenceable(8) %23)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #15
  %brmerge536 = or i1 %.0358.shrunk, %.not440.not
  br i1 %brmerge536, label %848, label %797

797:                                              ; preds = %._crit_edge642
  %798 = load ptr, ptr %4, align 8, !tbaa !5
  %799 = getelementptr inbounds i8, ptr %798, i64 204
  %800 = load i8, ptr %799, align 4, !tbaa !171
  %801 = icmp slt i8 %800, 1
  br i1 %801, label %802, label %848

802:                                              ; preds = %797
  %803 = getelementptr inbounds i8, ptr %798, i64 205
  %804 = load i8, ptr %803, align 1, !tbaa !172
  %805 = icmp slt i8 %804, 1
  br i1 %805, label %806, label %848

806:                                              ; preds = %802
  %807 = getelementptr inbounds i8, ptr %798, i64 182
  %808 = load i8, ptr %807, align 2, !tbaa !179, !range !64, !noundef !65
  %809 = trunc nuw i8 %808 to i1
  br i1 %809, label %817, label %810

810:                                              ; preds = %806
  %811 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %18)
  %812 = fcmp ogt float %811, 0.000000e+00
  br i1 %812, label %813, label %._crit_edge644

._crit_edge644:                                   ; preds = %810
  %.pre645 = load ptr, ptr %4, align 8, !tbaa !5
  br label %817

813:                                              ; preds = %810
  %814 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %18)
  %815 = fcmp ogt float %814, 0.000000e+00
  %.pre646 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %815, label %816, label %817

816:                                              ; preds = %813
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRect(ptr noundef %.pre646, ptr noundef nonnull align 4 dereferenceable(16) %21)
  br label %848

817:                                              ; preds = %._crit_edge644, %813, %806
  %818 = phi ptr [ %.pre645, %._crit_edge644 ], [ %.pre646, %813 ], [ %798, %806 ]
  %819 = getelementptr inbounds i8, ptr %818, i64 182
  %820 = load i8, ptr %819, align 2, !tbaa !179, !range !64, !noundef !65
  %821 = trunc nuw i8 %820 to i1
  br i1 %821, label %822, label %848

822:                                              ; preds = %817
  %823 = getelementptr inbounds i8, ptr %40, i64 5664
  %824 = load i32, ptr %823, align 8, !tbaa !192
  %825 = icmp sgt i32 %824, 0
  br i1 %825, label %826, label %848

826:                                              ; preds = %822
  %827 = getelementptr inbounds i8, ptr %818, i64 48
  %828 = load ptr, ptr %827, align 8, !tbaa !139
  %829 = getelementptr inbounds i8, ptr %828, i64 140
  %830 = load i16, ptr %829, align 4, !tbaa !193
  %831 = icmp eq i16 %830, -1
  br i1 %831, label %832, label %838

832:                                              ; preds = %826
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #15
  %833 = getelementptr inbounds i8, ptr %40, i64 7488
  %834 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP14ImGuiViewportPEixEi(ptr noundef nonnull align 8 dereferenceable(16) %833, i32 noundef 0)
  %835 = load ptr, ptr %834, align 8, !tbaa !5
  %836 = getelementptr inbounds i8, ptr %835, i64 8
  %837 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %836, ptr noundef nonnull align 4 dereferenceable(8) %792)
  store <2 x float> %837, ptr %24, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %818, ptr noundef nonnull align 4 dereferenceable(8) %24, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #15
  br label %848

838:                                              ; preds = %826
  %839 = sext i16 %830 to i32
  %840 = call noundef nonnull align 4 dereferenceable(36) ptr @_ZN8ImVectorI20ImGuiPlatformMonitorEixEi(ptr noundef nonnull align 8 dereferenceable(16) %823, i32 noundef %839)
  %841 = getelementptr inbounds i8, ptr %840, i64 16
  %842 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %841, ptr noundef nonnull align 4 dereferenceable(8) %20)
  store <2 x float> %842, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #15
  %843 = getelementptr inbounds i8, ptr %840, i64 24
  %844 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %841, ptr noundef nonnull align 4 dereferenceable(8) %843)
  store <2 x float> %844, ptr %25, align 8
  %845 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(8) %20)
  %846 = getelementptr inbounds i8, ptr %21, i64 8
  store <2 x float> %845, ptr %846, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #15
  %847 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRect(ptr noundef %847, ptr noundef nonnull align 4 dereferenceable(16) %21)
  br label %848

848:                                              ; preds = %._crit_edge642, %816, %832, %838, %822, %817, %802, %797
  %849 = load ptr, ptr %4, align 8, !tbaa !5
  %850 = getelementptr inbounds i8, ptr %849, i64 72
  %851 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %850)
  %852 = load ptr, ptr %4, align 8, !tbaa !5
  %853 = getelementptr inbounds i8, ptr %852, i64 72
  store <2 x float> %851, ptr %853, align 8
  %854 = getelementptr inbounds i8, ptr %852, i64 182
  %855 = load i8, ptr %854, align 2, !tbaa !179, !range !64, !noundef !65
  %856 = trunc nuw i8 %855 to i1
  br i1 %856, label %865, label %857

857:                                              ; preds = %848
  %858 = getelementptr inbounds i8, ptr %852, i64 1162
  %859 = load i8, ptr %858, align 2
  %860 = trunc i8 %859 to i1
  br i1 %860, label %865, label %861

861:                                              ; preds = %857
  %862 = and i32 %417, 201326592
  %or.cond537 = icmp eq i32 %862, 67108864
  %. = select i1 %or.cond537, i64 5752, i64 5716
  %.sink695 = select i1 %.not440, i64 %., i64 5744
  %863 = getelementptr inbounds i8, ptr %40, i64 %.sink695
  %864 = load float, ptr %863, align 4, !tbaa !136
  br label %865

865:                                              ; preds = %848, %857, %861
  %.sink696 = phi float [ %864, %861 ], [ 0.000000e+00, %857 ], [ 0.000000e+00, %848 ]
  %866 = getelementptr inbounds i8, ptr %852, i64 120
  store float %.sink696, ptr %866, align 8, !tbaa !194
  %867 = and i32 %417, 4096
  %.not468 = icmp eq i32 %867, 0
  %or.cond538 = and i1 %.0357.in, %.not468
  br i1 %or.cond538, label %868, label %875

868:                                              ; preds = %865
  %869 = and i32 %417, 67108864
  %.not469 = icmp eq i32 %869, 0
  br i1 %.not469, label %870, label %875

870:                                              ; preds = %868
  %871 = getelementptr inbounds i8, ptr %852, i64 1162
  %872 = load i8, ptr %871, align 2
  %873 = trunc i8 %872 to i1
  %or.cond539 = or i1 %.not440, %873
  %874 = and i32 %417, 33554432
  %.not470 = icmp eq i32 %874, 0
  %or.cond540 = and i1 %.not470, %or.cond539
  br label %875

875:                                              ; preds = %870, %868, %865
  %.0378 = phi i1 [ false, %865 ], [ true, %868 ], [ %or.cond540, %870 ]
  %876 = getelementptr inbounds i8, ptr %852, i64 1128
  %877 = load ptr, ptr %876, align 8, !tbaa !104
  %.not471 = icmp eq ptr %877, null
  br i1 %.not471, label %878, label %883

878:                                              ; preds = %875
  %879 = getelementptr inbounds i8, ptr %852, i64 1162
  %880 = load i8, ptr %879, align 2
  %881 = trunc i8 %880 to i1
  %882 = xor i1 %881, true
  br label %883

883:                                              ; preds = %878, %875
  %884 = phi i1 [ true, %875 ], [ %882, %878 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #15
  store i32 -1, ptr %26, align 4, !tbaa !116
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #15
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %27, i8 0, i64 16, i1 false)
  %885 = getelementptr inbounds i8, ptr %40, i64 211
  %886 = load i8, ptr %885, align 1, !tbaa !195, !range !64, !noundef !65
  %887 = trunc nuw i8 %886 to i1
  %888 = select i1 %887, i32 2, i32 1
  %889 = getelementptr inbounds i8, ptr %40, i64 6712
  %890 = load float, ptr %889, align 8, !tbaa !196
  %891 = fmul float %890, 0x3FF59999A0000000
  %892 = fadd float %.sink696, 1.000000e+00
  %893 = call float @llvm.fmuladd.f32(float %890, float 0x3FC99999A0000000, float %892)
  %894 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %891, float noundef %893)
  %895 = fptosi float %894 to i32
  %896 = sitofp i32 %895 to float
  %.pre648 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %884, label %897, label %903

897:                                              ; preds = %883
  %898 = getelementptr inbounds i8, ptr %.pre648, i64 186
  %899 = load i8, ptr %898, align 2, !tbaa !170, !range !64, !noundef !65
  %900 = trunc nuw i8 %899 to i1
  br i1 %900, label %903, label %901

901:                                              ; preds = %897
  %902 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef nonnull %.pre648, ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull %26, i32 noundef %888, ptr noundef nonnull %27, ptr noundef nonnull align 4 dereferenceable(16) %21)
  %spec.select541 = or i1 %902, %.1369
  %spec.select542 = or i1 %902, %.2365
  %.pre647 = load ptr, ptr %4, align 8, !tbaa !5
  br label %903

903:                                              ; preds = %901, %897, %883
  %904 = phi ptr [ %.pre648, %897 ], [ %.pre648, %883 ], [ %.pre647, %901 ]
  %.2370 = phi i1 [ %.1369, %897 ], [ %.1369, %883 ], [ %spec.select541, %901 ]
  %.3366 = phi i1 [ %.2365, %897 ], [ %.2365, %883 ], [ %spec.select542, %901 ]
  %905 = load i32, ptr %26, align 4, !tbaa !116
  %906 = trunc i32 %905 to i8
  %907 = getelementptr inbounds i8, ptr %904, i64 193
  store i8 %906, ptr %907, align 1, !tbaa !197
  %908 = getelementptr inbounds i8, ptr %904, i64 182
  %909 = load i8, ptr %908, align 2, !tbaa !179, !range !64, !noundef !65
  %910 = trunc nuw i8 %909 to i1
  br i1 %910, label %911, label %935

911:                                              ; preds = %903
  %912 = getelementptr inbounds i8, ptr %904, i64 48
  %913 = load ptr, ptr %912, align 8, !tbaa !139
  %914 = getelementptr inbounds i8, ptr %913, i64 96
  %915 = load i8, ptr %914, align 8, !tbaa !182, !range !64, !noundef !65
  %916 = trunc nuw i8 %915 to i1
  br i1 %916, label %921, label %917

917:                                              ; preds = %911
  %918 = getelementptr inbounds i8, ptr %904, i64 72
  %919 = getelementptr inbounds i8, ptr %913, i64 8
  %920 = load i64, ptr %918, align 8
  store i64 %920, ptr %919, align 8
  %.pre649 = load ptr, ptr %912, align 8, !tbaa !139
  br label %921

921:                                              ; preds = %917, %911
  %922 = phi ptr [ %.pre649, %917 ], [ %913, %911 ]
  %923 = getelementptr inbounds i8, ptr %922, i64 97
  %924 = load i8, ptr %923, align 1, !tbaa !183, !range !64, !noundef !65
  %925 = trunc nuw i8 %924 to i1
  br i1 %925, label %930, label %926

926:                                              ; preds = %921
  %927 = getelementptr inbounds i8, ptr %904, i64 80
  %928 = getelementptr inbounds i8, ptr %922, i64 16
  %929 = load i64, ptr %927, align 8
  store i64 %929, ptr %928, align 8
  %.pre650 = load ptr, ptr %912, align 8, !tbaa !139
  br label %930

930:                                              ; preds = %926, %921
  %931 = phi ptr [ %.pre650, %926 ], [ %922, %921 ]
  %932 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(304) %931)
  %933 = extractvalue { <2 x float>, <2 x float> } %932, 0
  %934 = extractvalue { <2 x float>, <2 x float> } %932, 1
  store <2 x float> %933, ptr %18, align 8
  store <2 x float> %934, ptr %783, align 8
  %.pre651 = load ptr, ptr %4, align 8, !tbaa !5
  br label %935

935:                                              ; preds = %930, %903
  %936 = phi ptr [ %.pre651, %930 ], [ %904, %903 ]
  %937 = getelementptr inbounds i8, ptr %936, i64 48
  %938 = load ptr, ptr %937, align 8, !tbaa !139
  %939 = getelementptr inbounds i8, ptr %938, i64 8
  %940 = getelementptr inbounds i8, ptr %936, i64 60
  %941 = load i64, ptr %939, align 8
  store i64 %941, ptr %940, align 4
  %942 = getelementptr inbounds i8, ptr %936, i64 186
  %943 = load i8, ptr %942, align 2, !tbaa !170, !range !64, !noundef !65
  %944 = trunc nuw i8 %943 to i1
  br i1 %944, label %1035, label %945

945:                                              ; preds = %935
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #15
  %946 = getelementptr inbounds i8, ptr %936, i64 88
  %947 = load float, ptr %946, align 8, !tbaa !151
  %948 = getelementptr inbounds i8, ptr %936, i64 92
  %949 = load float, ptr %948, align 4, !tbaa !153
  %950 = fsub float %949, %592
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef %947, float noundef %950)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #15
  %951 = load ptr, ptr %4, align 8, !tbaa !5
  %952 = getelementptr inbounds i8, ptr %951, i64 616
  %953 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %952)
  store <2 x float> %953, ptr %29, align 8
  %954 = load ptr, ptr %4, align 8, !tbaa !5
  %955 = getelementptr inbounds i8, ptr %954, i64 172
  %956 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %955)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #15
  br i1 %57, label %957, label %958

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

958:                                              ; preds = %945
  %959 = load ptr, ptr %4, align 8, !tbaa !5
  %960 = getelementptr inbounds i8, ptr %959, i64 96
  %961 = getelementptr inbounds i8, ptr %959, i64 112
  %962 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %961, float noundef 2.000000e+00)
  store <2 x float> %962, ptr %31, align 8
  %963 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %960, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %963, ptr %30, align 8
  br label %964

964:                                              ; preds = %958, %957
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #15
  %965 = load float, ptr %28, align 4
  %.sroa.035.0.vec.extract = extractelement <2 x float> %956, i64 0
  %966 = select i1 %.3366, float %965, float %.sroa.035.0.vec.extract
  %967 = getelementptr inbounds i8, ptr %28, i64 4
  %968 = load float, ptr %967, align 4
  %.sroa.035.4.vec.extract = extractelement <2 x float> %956, i64 1
  %969 = select i1 %.2370, float %968, float %.sroa.035.4.vec.extract
  %970 = and i32 %417, 16384
  %.not472 = icmp eq i32 %970, 0
  br i1 %.not472, label %971, label %.thread576

971:                                              ; preds = %964
  %972 = getelementptr inbounds i8, ptr %30, i64 4
  %973 = load float, ptr %972, align 4, !tbaa !174
  %974 = fcmp ogt float %973, %969
  %975 = and i32 %417, 8
  %.not473 = icmp eq i32 %975, 0
  %976 = and i1 %.not473, %974
  %977 = load ptr, ptr %4, align 8, !tbaa !5
  %978 = getelementptr inbounds i8, ptr %977, i64 181
  %979 = zext i1 %976 to i8
  store i8 %979, ptr %978, align 1, !tbaa !198
  %980 = and i32 %417, 32768
  %.not474 = icmp eq i32 %980, 0
  br i1 %.not474, label %986, label %.thread582

.thread576:                                       ; preds = %964
  %981 = load ptr, ptr %4, align 8, !tbaa !5
  %982 = getelementptr inbounds i8, ptr %981, i64 181
  store i8 1, ptr %982, align 1, !tbaa !198
  %983 = and i32 %417, 32768
  %.not474577 = icmp eq i32 %983, 0
  br i1 %.not474577, label %.thread578, label %.thread582.thread

.thread582.thread:                                ; preds = %.thread576
  %984 = getelementptr inbounds i8, ptr %981, i64 180
  store i8 1, ptr %984, align 4, !tbaa !199
  br label %.thread692

.thread578:                                       ; preds = %.thread576
  %985 = load float, ptr %30, align 8, !tbaa !200
  %.pre686 = and i32 %417, 8
  br label %988

986:                                              ; preds = %971
  %987 = load float, ptr %30, align 8, !tbaa !200
  br i1 %976, label %988, label %994

988:                                              ; preds = %.thread578, %986
  %.pre684.pre-phi = phi i32 [ %.pre686, %.thread578 ], [ 0, %986 ]
  %989 = phi float [ %985, %.thread578 ], [ %987, %986 ]
  %990 = phi ptr [ %981, %.thread578 ], [ %977, %986 ]
  %991 = phi ptr [ %982, %.thread578 ], [ %978, %986 ]
  %992 = getelementptr inbounds i8, ptr %40, i64 5808
  %993 = load float, ptr %992, align 4, !tbaa !201
  br label %994

994:                                              ; preds = %986, %988
  %.pre-phi = phi i32 [ %975, %986 ], [ %.pre684.pre-phi, %988 ]
  %995 = phi i8 [ 0, %986 ], [ 1, %988 ]
  %996 = phi float [ %987, %986 ], [ %989, %988 ]
  %997 = phi i1 [ false, %986 ], [ true, %988 ]
  %998 = phi ptr [ %977, %986 ], [ %990, %988 ]
  %999 = phi ptr [ %978, %986 ], [ %991, %988 ]
  %1000 = phi float [ 0.000000e+00, %986 ], [ %993, %988 ]
  %1001 = fsub float %966, %1000
  %1002 = fcmp ogt float %996, %1001
  %.not475 = icmp eq i32 %.pre-phi, 0
  %or.cond543 = and i1 %.not475, %1002
  br i1 %or.cond543, label %1005, label %.thread583

.thread583:                                       ; preds = %994
  %1003 = getelementptr inbounds i8, ptr %998, i64 180
  store i8 0, ptr %1003, align 4, !tbaa !199
  br label %1017

.thread582:                                       ; preds = %971
  %1004 = getelementptr inbounds i8, ptr %977, i64 180
  store i8 1, ptr %1004, align 4, !tbaa !199
  br i1 %976, label %.thread692, label %1009

1005:                                             ; preds = %994
  %1006 = and i32 %417, 2048
  %.not602 = icmp eq i32 %1006, 0
  %1007 = getelementptr inbounds i8, ptr %998, i64 180
  %.lobit = lshr exact i32 %1006, 11
  %1008 = trunc nuw nsw i32 %.lobit to i8
  store i8 %1008, ptr %1007, align 4, !tbaa !199
  %brmerge598 = or i1 %.not602, %997
  %not..not602 = xor i1 %.not602, true
  br i1 %brmerge598, label %1017, label %._crit_edge652

._crit_edge652:                                   ; preds = %1005
  %.phi.trans.insert653 = getelementptr inbounds i8, ptr %30, i64 4
  %.pre654 = load float, ptr %.phi.trans.insert653, align 4, !tbaa !174
  br label %1009

1009:                                             ; preds = %._crit_edge652, %.thread582
  %.pre-phi685 = phi i32 [ 0, %._crit_edge652 ], [ %975, %.thread582 ]
  %1010 = phi float [ %.pre654, %._crit_edge652 ], [ %973, %.thread582 ]
  %1011 = phi ptr [ %999, %._crit_edge652 ], [ %978, %.thread582 ]
  %1012 = fcmp ogt float %1010, %969
  %.not476 = icmp eq i32 %.pre-phi685, 0
  %1013 = and i1 %.not476, %1012
  %1014 = zext i1 %1013 to i8
  store i8 %1014, ptr %1011, align 1, !tbaa !198
  br label %1017

.thread692:                                       ; preds = %.thread582.thread, %.thread582
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #15
  %1015 = getelementptr inbounds i8, ptr %40, i64 5808
  %1016 = load float, ptr %1015, align 4, !tbaa !201
  br label %1025

1017:                                             ; preds = %1005, %.thread583, %1009
  %1018 = phi i8 [ %1014, %1009 ], [ %995, %1005 ], [ %995, %.thread583 ]
  %1019 = phi i1 [ true, %1009 ], [ %not..not602, %1005 ], [ false, %.thread583 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #15
  %1020 = trunc nuw i8 %1018 to i1
  br i1 %1020, label %1021, label %1024

1021:                                             ; preds = %1017
  %1022 = getelementptr inbounds i8, ptr %40, i64 5808
  %1023 = load float, ptr %1022, align 4, !tbaa !201
  br i1 %1019, label %1025, label %1029

1024:                                             ; preds = %1017
  br i1 %1019, label %1025, label %1029

1025:                                             ; preds = %.thread692, %1021, %1024
  %1026 = phi float [ %1023, %1021 ], [ 0.000000e+00, %1024 ], [ %1016, %.thread692 ]
  %1027 = getelementptr inbounds i8, ptr %40, i64 5808
  %1028 = load float, ptr %1027, align 4, !tbaa !201
  br label %1029

1029:                                             ; preds = %1021, %1024, %1025
  %1030 = phi float [ %1026, %1025 ], [ 0.000000e+00, %1024 ], [ %1023, %1021 ]
  %1031 = phi float [ %1028, %1025 ], [ 0.000000e+00, %1024 ], [ 0.000000e+00, %1021 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %1030, float noundef %1031)
  %1032 = load ptr, ptr %4, align 8, !tbaa !5
  %1033 = getelementptr inbounds i8, ptr %1032, i64 172
  %1034 = load i64, ptr %32, align 8
  store i64 %1034, ptr %1033, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #15
  br label %1035

1035:                                             ; preds = %1029, %935
  %1036 = phi ptr [ %1032, %1029 ], [ %936, %935 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #15
  %1037 = and i32 %417, 83886080
  %or.cond545.not = icmp ne i32 %1037, 16777216
  %1038 = getelementptr inbounds i8, ptr %178, i64 680
  %1039 = select i1 %or.cond545.not, i1 true, i1 %317
  %1040 = select i1 %1039, ptr %18, ptr %1038
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %33, ptr noundef nonnull align 4 dereferenceable(16) %1040, i64 16, i1 false), !tbaa.struct !135
  %1041 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1163) %1036)
  %1042 = extractvalue { <2 x float>, <2 x float> } %1041, 0
  %1043 = extractvalue { <2 x float>, <2 x float> } %1041, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #15
  %1044 = load ptr, ptr %4, align 8, !tbaa !5
  %1045 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1163) %1044)
  %1046 = extractvalue { <2 x float>, <2 x float> } %1045, 0
  store <2 x float> %1046, ptr %34, align 8
  %1047 = getelementptr inbounds i8, ptr %34, i64 8
  %1048 = extractvalue { <2 x float>, <2 x float> } %1045, 1
  store <2 x float> %1048, ptr %1047, align 8
  %1049 = load ptr, ptr %4, align 8, !tbaa !5
  %1050 = getelementptr inbounds i8, ptr %1049, i64 600
  store <2 x float> %1042, ptr %1050, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %1049, i64 608
  store <2 x float> %1043, ptr %.sroa.4.0..sroa_idx, align 8
  %1051 = getelementptr inbounds i8, ptr %1049, i64 1162
  %1052 = load i8, ptr %1051, align 2
  %1053 = trunc i8 %1052 to i1
  br i1 %1053, label %1054, label %1060

1054:                                             ; preds = %1035
  %1055 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1163) %1049)
  %1056 = load ptr, ptr %4, align 8, !tbaa !5
  %1057 = getelementptr inbounds i8, ptr %1056, i64 604
  %1058 = load float, ptr %1057, align 4, !tbaa !202
  %1059 = fadd float %1055, %1058
  store float %1059, ptr %1057, align 4, !tbaa !202
  br label %1060

1060:                                             ; preds = %1054, %1035
  %1061 = phi ptr [ %1056, %1054 ], [ %1049, %1035 ]
  %1062 = getelementptr inbounds i8, ptr %1061, i64 600
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1062, ptr noundef nonnull align 4 dereferenceable(16) %33)
  %1063 = load ptr, ptr %4, align 8
  %1064 = getelementptr inbounds i8, ptr %1063, i64 72
  %1065 = getelementptr inbounds i8, ptr %1063, i64 616
  %1066 = getelementptr inbounds i8, ptr %1063, i64 620
  %1067 = getelementptr inbounds i8, ptr %1063, i64 80
  %1068 = getelementptr inbounds i8, ptr %1063, i64 172
  %1069 = getelementptr inbounds i8, ptr %1063, i64 624
  %1070 = load <2 x float>, ptr %1064, align 8, !tbaa !136
  %1071 = extractelement <2 x float> %1070, i64 0
  store float %1071, ptr %1065, align 8, !tbaa !203
  %1072 = extractelement <2 x float> %1070, i64 1
  %1073 = fadd float %592, %1072
  store float %1073, ptr %1066, align 4, !tbaa !204
  %1074 = load <2 x float>, ptr %1067, align 8, !tbaa !136
  %1075 = fadd <2 x float> %1070, %1074
  %1076 = load <2 x float>, ptr %1068, align 4, !tbaa !136
  %1077 = fsub <2 x float> %1075, %1076
  store <2 x float> %1077, ptr %1069, align 8, !tbaa !136
  %1078 = and i32 %417, 1025
  %brmerge547.not = icmp eq i32 %1078, 1
  %1079 = getelementptr inbounds i8, ptr %40, i64 5772
  %1080 = getelementptr inbounds i8, ptr %1063, i64 124
  %.in479 = select i1 %brmerge547.not, ptr %1080, ptr %1079
  %1081 = load float, ptr %.in479, align 4, !tbaa !136
  %1082 = fadd float %1071, 5.000000e-01
  %1083 = getelementptr inbounds i8, ptr %1063, i64 112
  %1084 = load float, ptr %1083, align 8, !tbaa !205
  %1085 = fmul float %1084, 5.000000e-01
  %1086 = call noundef float @_ZL7ImFloorf(float noundef %1085)
  %1087 = load ptr, ptr %4, align 8, !tbaa !5
  %1088 = getelementptr inbounds i8, ptr %1087, i64 124
  %1089 = load float, ptr %1088, align 4, !tbaa !158
  %1090 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1086, float noundef %1089)
  %1091 = fadd float %1082, %1090
  %1092 = call noundef float @_ZL7ImFloorf(float noundef %1091)
  %1093 = load ptr, ptr %4, align 8, !tbaa !5
  %1094 = getelementptr inbounds i8, ptr %1093, i64 632
  store float %1092, ptr %1094, align 8, !tbaa !206
  %1095 = getelementptr inbounds i8, ptr %1093, i64 620
  %1096 = load float, ptr %1095, align 4, !tbaa !204
  %1097 = fadd float %1096, 5.000000e-01
  %1098 = fadd float %1081, %1097
  %1099 = call noundef float @_ZL7ImFloorf(float noundef %1098)
  %1100 = load ptr, ptr %4, align 8, !tbaa !5
  %1101 = getelementptr inbounds i8, ptr %1100, i64 636
  store float %1099, ptr %1101, align 4, !tbaa !207
  %1102 = getelementptr inbounds i8, ptr %1100, i64 624
  %1103 = load float, ptr %1102, align 8, !tbaa !208
  %1104 = fadd float %1103, 5.000000e-01
  %1105 = getelementptr inbounds i8, ptr %1100, i64 112
  %1106 = load float, ptr %1105, align 8, !tbaa !205
  %1107 = fmul float %1106, 5.000000e-01
  %1108 = call noundef float @_ZL7ImFloorf(float noundef %1107)
  %1109 = load ptr, ptr %4, align 8, !tbaa !5
  %1110 = getelementptr inbounds i8, ptr %1109, i64 124
  %1111 = load float, ptr %1110, align 4, !tbaa !158
  %1112 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1108, float noundef %1111)
  %1113 = fsub float %1104, %1112
  %1114 = call noundef float @_ZL7ImFloorf(float noundef %1113)
  %1115 = load ptr, ptr %4, align 8, !tbaa !5
  %1116 = getelementptr inbounds i8, ptr %1115, i64 640
  store float %1114, ptr %1116, align 8, !tbaa !209
  %1117 = getelementptr inbounds i8, ptr %1115, i64 628
  %1118 = load float, ptr %1117, align 4, !tbaa !210
  %1119 = fadd float %1118, 5.000000e-01
  %1120 = getelementptr inbounds i8, ptr %1115, i64 124
  %1121 = load float, ptr %1120, align 4, !tbaa !158
  %1122 = fsub float %1119, %1121
  %1123 = call noundef float @_ZL7ImFloorf(float noundef %1122)
  %1124 = load ptr, ptr %4, align 8, !tbaa !5
  %1125 = getelementptr inbounds i8, ptr %1124, i64 644
  store float %1123, ptr %1125, align 4, !tbaa !211
  %1126 = getelementptr inbounds i8, ptr %1124, i64 632
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1126, ptr noundef nonnull align 4 dereferenceable(16) %33)
  %1127 = load ptr, ptr %4, align 8, !tbaa !5
  %1128 = getelementptr inbounds i8, ptr %1127, i64 80
  %1129 = load float, ptr %1128, align 8, !tbaa !152
  %1130 = fcmp ule float %1129, 0.000000e+00
  %1131 = and i32 %417, 33554496
  %1132 = icmp ne i32 %1131, 0
  %brmerge549 = or i1 %1132, %1130
  br i1 %brmerge549, label %1135, label %1133

1133:                                             ; preds = %1060
  %1134 = fmul float %1129, 0x3FE4CCCCC0000000
  br label %1138

1135:                                             ; preds = %1060
  %1136 = load float, ptr %889, align 8, !tbaa !196
  %1137 = fmul float %1136, 1.600000e+01
  br label %1138

1138:                                             ; preds = %1135, %1133
  %.sink702 = phi float [ %1137, %1135 ], [ %1134, %1133 ]
  %1139 = call noundef float @_ZL7ImFloorf(float noundef %.sink702)
  %.sink700 = load ptr, ptr %4, align 8, !tbaa !5
  %1140 = getelementptr inbounds i8, ptr %.sink700, i64 732
  store float %1139, ptr %1140, align 4, !tbaa !212
  %1141 = getelementptr inbounds i8, ptr %.sink700, i64 96
  %1142 = load float, ptr %1141, align 8, !tbaa !213
  %1143 = getelementptr inbounds i8, ptr %.sink700, i64 112
  %1144 = load float, ptr %1143, align 8, !tbaa !205
  %1145 = call float @llvm.fmuladd.f32(float %1144, float 2.000000e+00, float %1142)
  %1146 = getelementptr inbounds i8, ptr %.sink700, i64 616
  %1147 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1146)
  %1148 = fsub float %1145, %1147
  %1149 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1148)
  %1150 = load ptr, ptr %4, align 8, !tbaa !5
  %1151 = getelementptr inbounds i8, ptr %1150, i64 148
  store float %1149, ptr %1151, align 4, !tbaa !214
  %1152 = getelementptr inbounds i8, ptr %1150, i64 100
  %1153 = load float, ptr %1152, align 4, !tbaa !215
  %1154 = getelementptr inbounds i8, ptr %1150, i64 116
  %1155 = load float, ptr %1154, align 4, !tbaa !216
  %1156 = call float @llvm.fmuladd.f32(float %1155, float 2.000000e+00, float %1153)
  %1157 = getelementptr inbounds i8, ptr %1150, i64 616
  %1158 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1157)
  %1159 = fsub float %1156, %1158
  %1160 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1159)
  %1161 = load ptr, ptr %4, align 8, !tbaa !5
  %1162 = getelementptr inbounds i8, ptr %1161, i64 152
  store float %1160, ptr %1162, align 4, !tbaa !217
  %1163 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %1161)
  %1164 = load ptr, ptr %4, align 8, !tbaa !5
  %1165 = getelementptr inbounds i8, ptr %1164, i64 140
  store <2 x float> %1163, ptr %1165, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %1166 = load ptr, ptr %4, align 8, !tbaa !5
  %1167 = getelementptr inbounds i8, ptr %1166, i64 156
  %1168 = load i64, ptr %35, align 8
  store i64 %1168, ptr %1167, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #15
  %1169 = getelementptr inbounds i8, ptr %1166, i64 784
  %1170 = load ptr, ptr %1169, align 8, !tbaa !137
  %1171 = load i32, ptr %1170, align 8, !tbaa !218
  %1172 = icmp eq i32 %1171, 1
  br i1 %1172, label %1173, label %.critedge7

1173:                                             ; preds = %1138
  %1174 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1170, i32 noundef 0)
  %1175 = getelementptr inbounds i8, ptr %1174, i64 32
  %1176 = load i32, ptr %1175, align 8, !tbaa !219
  %1177 = icmp eq i32 %1176, 0
  br i1 %1177, label %1178, label %.critedge7

.critedge7:                                       ; preds = %1138, %1173
  call void @__assert_fail(ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.3, i32 noundef 6416, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1178:                                             ; preds = %1173
  %1179 = load ptr, ptr %4, align 8, !tbaa !5
  %1180 = getelementptr inbounds i8, ptr %1179, i64 784
  %1181 = load ptr, ptr %1180, align 8, !tbaa !137
  %1182 = getelementptr inbounds i8, ptr %40, i64 6704
  %1183 = load ptr, ptr %1182, align 8, !tbaa !220
  %1184 = getelementptr inbounds i8, ptr %1183, i64 72
  %1185 = load ptr, ptr %1184, align 8, !tbaa !221
  %1186 = getelementptr inbounds i8, ptr %1185, i64 8
  %1187 = load ptr, ptr %1186, align 8, !tbaa !222
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(224) %1181, ptr noundef %1187)
  %1188 = getelementptr inbounds i8, ptr %33, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %1188, i1 noundef zeroext false)
  %1189 = getelementptr inbounds i8, ptr %40, i64 7864
  %1190 = load ptr, ptr %1189, align 8, !tbaa !145
  %1191 = and i32 %417, 134217728
  %.not481 = icmp eq i32 %1191, 0
  br i1 %.not481, label %1201, label %1192

1192:                                             ; preds = %1178
  %1193 = load ptr, ptr %4, align 8, !tbaa !5
  %1194 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  %1195 = icmp eq ptr %1193, %1194
  br i1 %1195, label %1196, label %1201

1196:                                             ; preds = %1192
  %1197 = load ptr, ptr %4, align 8, !tbaa !5
  %1198 = getelementptr inbounds i8, ptr %1197, i64 216
  %1199 = load i32, ptr %1198, align 8, !tbaa !89
  %1200 = icmp slt i32 %1199, 1
  br label %1201

1201:                                             ; preds = %1196, %1192, %1178
  %1202 = phi i1 [ false, %1192 ], [ false, %1178 ], [ %1200, %1196 ]
  %1203 = getelementptr inbounds i8, ptr %40, i64 7856
  %1204 = load ptr, ptr %1203, align 8, !tbaa !226
  %.not482 = icmp eq ptr %1204, null
  br i1 %.not482, label %1224, label %1205

1205:                                             ; preds = %1201
  %1206 = load ptr, ptr %4, align 8, !tbaa !5
  %1207 = getelementptr inbounds i8, ptr %1204, i64 1024
  %1208 = load ptr, ptr %1207, align 8, !tbaa !227
  %1209 = icmp eq ptr %1206, %1208
  br i1 %1209, label %.thread584, label %1216

.thread584:                                       ; preds = %1205
  %.mux586 = select i1 %1202, i32 49, i32 48
  %1210 = getelementptr inbounds i8, ptr %40, i64 7924
  %1211 = load float, ptr %1210, align 4, !tbaa !228
  %1212 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %.mux586, float noundef %1211)
  %1213 = load ptr, ptr %4, align 8, !tbaa !5
  %1214 = getelementptr inbounds i8, ptr %1213, i64 784
  %1215 = load ptr, ptr %1214, align 8, !tbaa !137
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %1215, ptr noundef nonnull align 4 dereferenceable(8) %18, ptr noundef nonnull align 4 dereferenceable(8) %783, i32 noundef %1212, float noundef 0.000000e+00, i32 noundef 15)
  br label %1233

1216:                                             ; preds = %1205
  %1217 = icmp eq ptr %1206, %1190
  br i1 %1217, label %1218, label %1224

1218:                                             ; preds = %1216
  %1219 = getelementptr inbounds i8, ptr %1190, i64 48
  %1220 = load ptr, ptr %1219, align 8, !tbaa !139
  %1221 = getelementptr inbounds i8, ptr %1204, i64 48
  %1222 = load ptr, ptr %1221, align 8, !tbaa !139
  %1223 = icmp ne ptr %1220, %1222
  br label %1224

1224:                                             ; preds = %1218, %1216, %1201
  %1225 = phi i1 [ false, %1201 ], [ false, %1216 ], [ %1223, %1218 ]
  %brmerge550 = select i1 %1202, i1 true, i1 %1225
  br i1 %brmerge550, label %1226, label %1255

1226:                                             ; preds = %1224
  %.mux = select i1 %1202, i32 49, i32 48
  %1227 = getelementptr inbounds i8, ptr %40, i64 7924
  %1228 = load float, ptr %1227, align 4, !tbaa !228
  %1229 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %.mux, float noundef %1228)
  %1230 = load ptr, ptr %4, align 8, !tbaa !5
  %1231 = getelementptr inbounds i8, ptr %1230, i64 784
  %1232 = load ptr, ptr %1231, align 8, !tbaa !137
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %1232, ptr noundef nonnull align 4 dereferenceable(8) %18, ptr noundef nonnull align 4 dereferenceable(8) %783, i32 noundef %1229, float noundef 0.000000e+00, i32 noundef 15)
  br i1 %1225, label %1233, label %1255

1233:                                             ; preds = %.thread584, %1226
  %1234 = load ptr, ptr %4, align 8, !tbaa !5
  %1235 = load ptr, ptr %1203, align 8, !tbaa !226
  %1236 = icmp eq ptr %1234, %1235
  br i1 %1236, label %1237, label %1255

1237:                                             ; preds = %1233
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #15
  %1238 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1163) %1234)
  %1239 = extractvalue { <2 x float>, <2 x float> } %1238, 0
  store <2 x float> %1239, ptr %36, align 8
  %1240 = getelementptr inbounds i8, ptr %36, i64 8
  %1241 = extractvalue { <2 x float>, <2 x float> } %1238, 1
  store <2 x float> %1241, ptr %1240, align 8
  %1242 = load float, ptr %889, align 8, !tbaa !196
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef %1242)
  %1243 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(16) %18)
  br i1 %1243, label %1254, label %1244

1244:                                             ; preds = %1237
  %1245 = load ptr, ptr %4, align 8, !tbaa !5
  %1246 = getelementptr inbounds i8, ptr %1245, i64 784
  %1247 = load ptr, ptr %1246, align 8, !tbaa !137
  %1248 = getelementptr inbounds i8, ptr %40, i64 7876
  %1249 = load float, ptr %1248, align 4, !tbaa !229
  %1250 = fmul float %1249, 2.500000e-01
  %1251 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1250)
  %1252 = getelementptr inbounds i8, ptr %40, i64 5716
  %1253 = load float, ptr %1252, align 4, !tbaa !230
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %1247, ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %1240, i32 noundef %1251, float noundef %1253, i32 noundef 15)
  br label %1254

1254:                                             ; preds = %1244, %1237
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #15
  br label %1255

1255:                                             ; preds = %1224, %1226, %1254, %1233
  %1256 = load ptr, ptr %4, align 8, !tbaa !5
  %1257 = getelementptr inbounds i8, ptr %1256, i64 1162
  %1258 = load i8, ptr %1257, align 2
  %1259 = trunc i8 %1258 to i1
  %1260 = and i8 %1258, 2
  %1261 = icmp eq i8 %1260, 0
  %.not606 = and i1 %1261, %1259
  br i1 %.not606, label %1306, label %1262

1262:                                             ; preds = %1255
  br i1 %1039, label %.thread589, label %1263

1263:                                             ; preds = %1262
  %1264 = getelementptr inbounds i8, ptr %1256, i64 784
  %1265 = load ptr, ptr %1264, align 8, !tbaa !137
  %1266 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1265)
  %1267 = getelementptr inbounds i8, ptr %1266, i64 32
  %1268 = load i32, ptr %1267, align 8, !tbaa !219
  %1269 = icmp eq i32 %1268, 0
  br i1 %1269, label %1270, label %.thread589

1270:                                             ; preds = %1263
  %1271 = getelementptr inbounds i8, ptr %178, i64 784
  %1272 = load ptr, ptr %1271, align 8, !tbaa !137
  %1273 = getelementptr inbounds i8, ptr %1272, i64 32
  %1274 = load i32, ptr %1273, align 8, !tbaa !231
  %1275 = icmp sgt i32 %1274, 0
  br i1 %1275, label %1276, label %.thread589

1276:                                             ; preds = %1270
  %1277 = load ptr, ptr %4, align 8, !tbaa !5
  %1278 = getelementptr inbounds i8, ptr %1277, i64 784
  store ptr %1272, ptr %1278, align 8, !tbaa !137
  br label %.thread589

.thread589:                                       ; preds = %1262, %1263, %1276, %1270
  %.0367591 = phi i1 [ true, %1276 ], [ false, %1270 ], [ false, %1263 ], [ false, %1262 ]
  %1279 = getelementptr inbounds i8, ptr %40, i64 7848
  %1280 = load ptr, ptr %1279, align 8, !tbaa !232
  %.not484 = icmp eq ptr %1280, null
  br i1 %.not484, label %1281, label %1284

1281:                                             ; preds = %.thread589
  %1282 = getelementptr inbounds i8, ptr %40, i64 7544
  %1283 = load ptr, ptr %1282, align 8, !tbaa !233
  br label %1284

1284:                                             ; preds = %.thread589, %1281
  %1285 = phi ptr [ %1283, %1281 ], [ %1280, %.thread589 ]
  br i1 %.0378, label %._crit_edge656, label %1286

._crit_edge656:                                   ; preds = %1284
  %.pre657 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1300

1286:                                             ; preds = %1284
  %.not485 = icmp eq ptr %1285, null
  %.pre658 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not485, label %1300, label %1287

1287:                                             ; preds = %1286
  %1288 = getelementptr inbounds i8, ptr %.pre658, i64 1040
  %1289 = load ptr, ptr %1288, align 8, !tbaa !234
  %1290 = getelementptr inbounds i8, ptr %1285, i64 1040
  %1291 = load ptr, ptr %1290, align 8, !tbaa !234
  %1292 = icmp eq ptr %1289, %1291
  br i1 %1292, label %1300, label %1293

1293:                                             ; preds = %1287
  %1294 = getelementptr inbounds i8, ptr %.pre658, i64 1120
  %1295 = load ptr, ptr %1294, align 8, !tbaa !103
  %.not486 = icmp eq ptr %1295, null
  br i1 %.not486, label %1300, label %1296

1296:                                             ; preds = %1293
  %1297 = getelementptr inbounds i8, ptr %1285, i64 1120
  %1298 = load ptr, ptr %1297, align 8, !tbaa !103
  %1299 = icmp eq ptr %1295, %1298
  br label %1300

1300:                                             ; preds = %._crit_edge656, %1286, %1293, %1296, %1287
  %1301 = phi ptr [ %.pre657, %._crit_edge656 ], [ %.pre658, %1286 ], [ %.pre658, %1287 ], [ %.pre658, %1293 ], [ %.pre658, %1296 ]
  %1302 = phi i1 [ true, %._crit_edge656 ], [ false, %1286 ], [ true, %1287 ], [ false, %1293 ], [ %1299, %1296 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %1301, ptr noundef nonnull align 4 dereferenceable(16) %34, i1 noundef zeroext %1302, i1 noundef zeroext %884, i32 noundef %888, ptr noundef nonnull %27, float noundef %896)
  %.pre659 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.0367591, label %1303, label %1306

1303:                                             ; preds = %1300
  %1304 = getelementptr inbounds i8, ptr %.pre659, i64 792
  %1305 = getelementptr inbounds i8, ptr %.pre659, i64 784
  store ptr %1304, ptr %1305, align 8, !tbaa !137
  br label %1306

1306:                                             ; preds = %1300, %1303, %1255
  %1307 = phi ptr [ %.pre659, %1300 ], [ %.pre659, %1303 ], [ %1256, %1255 ]
  %1308 = load ptr, ptr %1203, align 8, !tbaa !226
  %1309 = icmp eq ptr %1308, %1307
  br i1 %1309, label %1310, label %1336

1310:                                             ; preds = %1306
  %1311 = getelementptr inbounds i8, ptr %1307, i64 120
  %1312 = load float, ptr %1311, align 8, !tbaa !194
  %1313 = getelementptr inbounds i8, ptr %40, i64 5716
  %1314 = load float, ptr %1313, align 4, !tbaa !230
  %1315 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1312, float noundef %1314)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #15
  %1316 = load ptr, ptr %4, align 8, !tbaa !5
  %1317 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1163) %1316)
  %1318 = extractvalue { <2 x float>, <2 x float> } %1317, 0
  store <2 x float> %1318, ptr %37, align 8
  %1319 = getelementptr inbounds i8, ptr %37, i64 8
  %1320 = extractvalue { <2 x float>, <2 x float> } %1317, 1
  store <2 x float> %1320, ptr %1319, align 8
  %1321 = load float, ptr %889, align 8, !tbaa !196
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %37, float noundef %1321)
  %1322 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %18)
  br i1 %1322, label %1323, label %._crit_edge660

._crit_edge660:                                   ; preds = %1310
  %.pre661 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1329

1323:                                             ; preds = %1310
  %1324 = load float, ptr %889, align 8, !tbaa !196
  %1325 = fsub float -1.000000e+00, %1324
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %37, float noundef %1325)
  %1326 = load ptr, ptr %4, align 8, !tbaa !5
  %1327 = getelementptr inbounds i8, ptr %1326, i64 120
  %1328 = load float, ptr %1327, align 8, !tbaa !194
  br label %1329

1329:                                             ; preds = %._crit_edge660, %1323
  %1330 = phi ptr [ %1326, %1323 ], [ %.pre661, %._crit_edge660 ]
  %.0361 = phi float [ %1328, %1323 ], [ %1315, %._crit_edge660 ]
  %1331 = getelementptr inbounds i8, ptr %1330, i64 784
  %1332 = load ptr, ptr %1331, align 8, !tbaa !137
  %1333 = getelementptr inbounds i8, ptr %40, i64 7876
  %1334 = load float, ptr %1333, align 4, !tbaa !229
  %1335 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1334)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(224) %1332, ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %1319, i32 noundef %1335, float noundef %.0361, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #15
  %.pre662 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1336

1336:                                             ; preds = %1329, %1306
  %1337 = phi ptr [ %.pre662, %1329 ], [ %1307, %1306 ]
  %1338 = and i32 %417, 8
  %.not487 = icmp eq i32 %1338, 0
  %1339 = getelementptr inbounds i8, ptr %1337, i64 104
  %1340 = load float, ptr %1339, align 8, !tbaa !235
  %1341 = fcmp une float %1340, 0.000000e+00
  br i1 %1341, label %1360, label %1342

1342:                                             ; preds = %1336
  %1343 = and i32 %417, 2056
  %1344 = icmp eq i32 %1343, 2048
  br i1 %1344, label %1345, label %1348

1345:                                             ; preds = %1342
  %1346 = getelementptr inbounds i8, ptr %1337, i64 96
  %1347 = load float, ptr %1346, align 8, !tbaa !213
  br label %1348

1348:                                             ; preds = %1342, %1345
  %1349 = phi float [ %1347, %1345 ], [ 0.000000e+00, %1342 ]
  %1350 = getelementptr inbounds i8, ptr %1337, i64 80
  %1351 = load float, ptr %1350, align 8, !tbaa !152
  %1352 = getelementptr inbounds i8, ptr %1337, i64 112
  %1353 = load float, ptr %1352, align 8, !tbaa !205
  %1354 = fneg float %1353
  %1355 = call float @llvm.fmuladd.f32(float %1354, float 2.000000e+00, float %1351)
  %1356 = getelementptr inbounds i8, ptr %1337, i64 172
  %1357 = load float, ptr %1356, align 4, !tbaa !236
  %1358 = fsub float %1355, %1357
  %1359 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1349, float noundef %1358)
  %.pre663 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1360

1360:                                             ; preds = %1336, %1348
  %1361 = phi ptr [ %.pre663, %1348 ], [ %1337, %1336 ]
  %1362 = phi float [ %1359, %1348 ], [ %1340, %1336 ]
  %1363 = getelementptr inbounds i8, ptr %1361, i64 108
  %1364 = load float, ptr %1363, align 4, !tbaa !237
  %1365 = fcmp une float %1364, 0.000000e+00
  br i1 %1365, label %1383, label %1366

1366:                                             ; preds = %1360
  br i1 %.not487, label %1367, label %1370

1367:                                             ; preds = %1366
  %1368 = getelementptr inbounds i8, ptr %1361, i64 100
  %1369 = load float, ptr %1368, align 4, !tbaa !215
  br label %1370

1370:                                             ; preds = %1366, %1367
  %1371 = phi float [ %1369, %1367 ], [ 0.000000e+00, %1366 ]
  %1372 = getelementptr inbounds i8, ptr %1361, i64 84
  %1373 = load float, ptr %1372, align 4, !tbaa !154
  %1374 = getelementptr inbounds i8, ptr %1361, i64 116
  %1375 = load float, ptr %1374, align 4, !tbaa !216
  %1376 = fneg float %1375
  %1377 = call float @llvm.fmuladd.f32(float %1376, float 2.000000e+00, float %1373)
  %1378 = fsub float %1377, %592
  %1379 = getelementptr inbounds i8, ptr %1361, i64 176
  %1380 = load float, ptr %1379, align 4, !tbaa !238
  %1381 = fsub float %1378, %1380
  %1382 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1371, float noundef %1381)
  %.pre664 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1383

1383:                                             ; preds = %1360, %1370
  %1384 = phi ptr [ %.pre664, %1370 ], [ %1361, %1360 ]
  %1385 = phi float [ %1382, %1370 ], [ %1364, %1360 ]
  %1386 = getelementptr inbounds i8, ptr %1384, i64 616
  %1387 = load float, ptr %1386, align 8, !tbaa !203
  %1388 = getelementptr inbounds i8, ptr %1384, i64 140
  %1389 = load float, ptr %1388, align 4, !tbaa !239
  %1390 = fsub float %1387, %1389
  %1391 = getelementptr inbounds i8, ptr %1384, i64 112
  %1392 = load float, ptr %1391, align 8, !tbaa !205
  %1393 = getelementptr inbounds i8, ptr %1384, i64 124
  %1394 = load float, ptr %1393, align 4, !tbaa !158
  %1395 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1392, float noundef %1394)
  %1396 = fadd float %1390, %1395
  %1397 = call noundef float @_ZL7ImFloorf(float noundef %1396)
  %1398 = load ptr, ptr %4, align 8, !tbaa !5
  %1399 = getelementptr inbounds i8, ptr %1398, i64 648
  store float %1397, ptr %1399, align 8, !tbaa !240
  %1400 = getelementptr inbounds i8, ptr %1398, i64 620
  %1401 = load float, ptr %1400, align 4, !tbaa !204
  %1402 = getelementptr inbounds i8, ptr %1398, i64 144
  %1403 = load float, ptr %1402, align 4, !tbaa !241
  %1404 = fsub float %1401, %1403
  %1405 = getelementptr inbounds i8, ptr %1398, i64 116
  %1406 = load float, ptr %1405, align 4, !tbaa !216
  %1407 = getelementptr inbounds i8, ptr %1398, i64 124
  %1408 = load float, ptr %1407, align 4, !tbaa !158
  %1409 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1406, float noundef %1408)
  %1410 = fadd float %1404, %1409
  %1411 = call noundef float @_ZL7ImFloorf(float noundef %1410)
  %1412 = load ptr, ptr %4, align 8, !tbaa !5
  %1413 = getelementptr inbounds i8, ptr %1412, i64 652
  store float %1411, ptr %1413, align 4, !tbaa !242
  %1414 = getelementptr inbounds i8, ptr %1412, i64 648
  %1415 = load float, ptr %1414, align 8, !tbaa !240
  %1416 = getelementptr inbounds i8, ptr %1412, i64 656
  %1417 = insertelement <2 x float> poison, float %1362, i64 0
  %1418 = insertelement <2 x float> %1417, float %1385, i64 1
  %1419 = insertelement <2 x float> poison, float %1415, i64 0
  %1420 = insertelement <2 x float> %1419, float %1411, i64 1
  %1421 = fadd <2 x float> %1418, %1420
  store <2 x float> %1421, ptr %1416, align 8, !tbaa !136
  %1422 = getelementptr inbounds i8, ptr %1412, i64 664
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1422, ptr noundef nonnull align 8 dereferenceable(16) %1414, i64 16, i1 false), !tbaa.struct !135
  %1423 = getelementptr inbounds i8, ptr %1412, i64 72
  %1424 = load float, ptr %1423, align 8, !tbaa !243
  %1425 = getelementptr inbounds i8, ptr %1412, i64 140
  %1426 = load float, ptr %1425, align 4, !tbaa !239
  %1427 = fsub float %1424, %1426
  %1428 = getelementptr inbounds i8, ptr %1412, i64 112
  %1429 = load float, ptr %1428, align 8, !tbaa !205
  %1430 = fadd float %1427, %1429
  %1431 = getelementptr inbounds i8, ptr %1412, i64 696
  store float %1430, ptr %1431, align 8, !tbaa !244
  %1432 = getelementptr inbounds i8, ptr %1412, i64 76
  %1433 = load float, ptr %1432, align 4, !tbaa !245
  %1434 = getelementptr inbounds i8, ptr %1412, i64 144
  %1435 = load float, ptr %1434, align 4, !tbaa !241
  %1436 = fsub float %1433, %1435
  %1437 = getelementptr inbounds i8, ptr %1412, i64 116
  %1438 = load float, ptr %1437, align 4, !tbaa !216
  %1439 = fadd float %1436, %1438
  %1440 = fadd float %592, %1439
  %1441 = getelementptr inbounds i8, ptr %1412, i64 700
  store float %1440, ptr %1441, align 4, !tbaa !246
  %1442 = getelementptr inbounds i8, ptr %1412, i64 104
  %1443 = load float, ptr %1442, align 8, !tbaa !235
  %1444 = fcmp une float %1443, 0.000000e+00
  br i1 %1444, label %1453, label %1445

1445:                                             ; preds = %1383
  %1446 = getelementptr inbounds i8, ptr %1412, i64 80
  %1447 = load float, ptr %1446, align 8, !tbaa !152
  %1448 = fneg float %1429
  %1449 = call float @llvm.fmuladd.f32(float %1448, float 2.000000e+00, float %1447)
  %1450 = getelementptr inbounds i8, ptr %1412, i64 172
  %1451 = load float, ptr %1450, align 4, !tbaa !236
  %1452 = fsub float %1449, %1451
  br label %1453

1453:                                             ; preds = %1383, %1445
  %1454 = phi float [ %1452, %1445 ], [ %1443, %1383 ]
  %1455 = fadd float %1430, %1454
  %1456 = getelementptr inbounds i8, ptr %1412, i64 704
  store float %1455, ptr %1456, align 8, !tbaa !247
  %1457 = getelementptr inbounds i8, ptr %1412, i64 108
  %1458 = load float, ptr %1457, align 4, !tbaa !237
  %1459 = fcmp une float %1458, 0.000000e+00
  br i1 %1459, label %1469, label %1460

1460:                                             ; preds = %1453
  %1461 = getelementptr inbounds i8, ptr %1412, i64 84
  %1462 = load float, ptr %1461, align 4, !tbaa !154
  %1463 = fneg float %1438
  %1464 = call float @llvm.fmuladd.f32(float %1463, float 2.000000e+00, float %1462)
  %1465 = fsub float %1464, %592
  %1466 = getelementptr inbounds i8, ptr %1412, i64 176
  %1467 = load float, ptr %1466, align 4, !tbaa !238
  %1468 = fsub float %1465, %1467
  br label %1469

1469:                                             ; preds = %1453, %1460
  %1470 = phi float [ %1468, %1460 ], [ %1458, %1453 ]
  %1471 = fadd float %1440, %1470
  %1472 = getelementptr inbounds i8, ptr %1412, i64 708
  store float %1471, ptr %1472, align 4, !tbaa !248
  %1473 = fadd float %1429, 0.000000e+00
  %1474 = fsub float %1473, %1426
  %1475 = getelementptr inbounds i8, ptr %1412, i64 328
  store float %1474, ptr %1475, align 8, !tbaa !249
  %1476 = getelementptr inbounds i8, ptr %1412, i64 332
  store <2 x float> zeroinitializer, ptr %1476, align 4, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #15
  %1477 = fadd float %592, %1438
  %1478 = fsub float %1477, %1435
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef %1474, float noundef %1478)
  %1479 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1423, ptr noundef nonnull align 4 dereferenceable(8) %38)
  %1480 = load ptr, ptr %4, align 8, !tbaa !5
  %1481 = getelementptr inbounds i8, ptr %1480, i64 288
  store <2 x float> %1479, ptr %1481, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #15
  %1482 = getelementptr inbounds i8, ptr %1480, i64 272
  store <2 x float> %1479, ptr %1482, align 8
  %1483 = getelementptr inbounds i8, ptr %1480, i64 280
  store <2 x float> %1479, ptr %1483, align 8
  %1484 = getelementptr inbounds i8, ptr %1480, i64 296
  store <2 x float> %1479, ptr %1484, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1485 = load ptr, ptr %4, align 8, !tbaa !5
  %1486 = getelementptr inbounds i8, ptr %1485, i64 312
  %1487 = load i64, ptr %39, align 8
  store i64 %1487, ptr %1486, align 8
  %1488 = getelementptr inbounds i8, ptr %1485, i64 304
  store i64 %1487, ptr %1488, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #15
  %1489 = getelementptr inbounds i8, ptr %1485, i64 320
  store <2 x float> zeroinitializer, ptr %1489, align 8, !tbaa !136
  %1490 = getelementptr inbounds i8, ptr %1485, i64 380
  store i32 0, ptr %1490, align 4, !tbaa !250
  %1491 = getelementptr inbounds i8, ptr %1485, i64 384
  store i32 1, ptr %1491, align 8, !tbaa !251
  %1492 = getelementptr inbounds i8, ptr %1485, i64 392
  %1493 = load i32, ptr %1492, align 8, !tbaa !252
  %1494 = getelementptr inbounds i8, ptr %1485, i64 388
  store i32 %1493, ptr %1494, align 4, !tbaa !253
  store i32 0, ptr %1492, align 8, !tbaa !252
  br i1 %.not440, label %1498, label %1495

1495:                                             ; preds = %1469
  %1496 = getelementptr inbounds i8, ptr %178, i64 396
  %1497 = load i32, ptr %1496, align 4, !tbaa !254
  br label %1498

1498:                                             ; preds = %1469, %1495
  %1499 = phi i32 [ %1497, %1495 ], [ 0, %1469 ]
  %1500 = getelementptr inbounds i8, ptr %1485, i64 396
  store i32 %1499, ptr %1500, align 4, !tbaa !254
  %1501 = getelementptr inbounds i8, ptr %1485, i64 400
  store i8 0, ptr %1501, align 8, !tbaa !255
  %1502 = getelementptr inbounds i8, ptr %1485, i64 152
  %1503 = load float, ptr %1502, align 4, !tbaa !217
  %1504 = fcmp ogt float %1503, 0.000000e+00
  %1505 = getelementptr inbounds i8, ptr %1485, i64 401
  %1506 = zext i1 %1504 to i8
  store i8 %1506, ptr %1505, align 1, !tbaa !256
  %1507 = getelementptr inbounds i8, ptr %1485, i64 402
  store i8 0, ptr %1507, align 2, !tbaa !257
  %1508 = getelementptr inbounds i8, ptr %1485, i64 412
  %1509 = load float, ptr %449, align 4, !tbaa !161
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36) %1508, i32 noundef 3, float noundef %1509, i1 noundef zeroext %.0357.in)
  %1510 = load ptr, ptr %4, align 8, !tbaa !5
  %1511 = getelementptr inbounds i8, ptr %1510, i64 448
  store i32 0, ptr %1511, align 8, !tbaa !258
  %1512 = getelementptr inbounds i8, ptr %1510, i64 452
  store i32 0, ptr %1512, align 4, !tbaa !259
  %1513 = getelementptr inbounds i8, ptr %1510, i64 456
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1513, i32 noundef 0)
  %1514 = load ptr, ptr %4, align 8, !tbaa !5
  %1515 = getelementptr inbounds i8, ptr %1514, i64 736
  %1516 = getelementptr inbounds i8, ptr %1514, i64 472
  store ptr %1515, ptr %1516, align 8, !tbaa !260
  %1517 = getelementptr inbounds i8, ptr %1514, i64 480
  store ptr null, ptr %1517, align 8, !tbaa !261
  %1518 = getelementptr inbounds i8, ptr %1514, i64 488
  store i32 1, ptr %1518, align 8, !tbaa !262
  br i1 %179, label %1522, label %1519

1519:                                             ; preds = %1498
  %1520 = getelementptr inbounds i8, ptr %178, i64 488
  %1521 = load i32, ptr %1520, align 8, !tbaa !262
  br label %1522

1522:                                             ; preds = %1498, %1519
  %1523 = phi i32 [ %1521, %1519 ], [ 1, %1498 ]
  %1524 = getelementptr inbounds i8, ptr %1514, i64 492
  store i32 %1523, ptr %1524, align 4, !tbaa !263
  %1525 = getelementptr inbounds i8, ptr %1514, i64 500
  store i32 -1, ptr %1525, align 4, !tbaa !264
  %1526 = getelementptr inbounds i8, ptr %1514, i64 496
  store i32 -1, ptr %1526, align 8, !tbaa !265
  %1527 = getelementptr inbounds i8, ptr %1514, i64 732
  %1528 = load float, ptr %1527, align 4, !tbaa !212
  %1529 = getelementptr inbounds i8, ptr %1514, i64 508
  store float %1528, ptr %1529, align 4, !tbaa !266
  %1530 = getelementptr inbounds i8, ptr %1514, i64 512
  store float -1.000000e+00, ptr %1530, align 8, !tbaa !267
  %1531 = getelementptr inbounds i8, ptr %1514, i64 520
  call void @_ZN8ImVectorIiE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1531, i32 noundef 0)
  %1532 = load ptr, ptr %4, align 8, !tbaa !5
  %1533 = getelementptr inbounds i8, ptr %1532, i64 536
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1533, i32 noundef 0)
  %1534 = load ptr, ptr %4, align 8, !tbaa !5
  %1535 = getelementptr inbounds i8, ptr %1534, i64 552
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1535, i32 noundef 0)
  %1536 = load ptr, ptr %4, align 8, !tbaa !5
  %1537 = getelementptr inbounds i8, ptr %1536, i64 568
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1537, i32 noundef 0)
  br i1 %179, label %.critedge556, label %1538

1538:                                             ; preds = %1522
  %1539 = getelementptr inbounds i8, ptr %178, i64 504
  %1540 = load i32, ptr %1539, align 8, !tbaa !268
  %1541 = load ptr, ptr %4, align 8, !tbaa !5
  %1542 = getelementptr inbounds i8, ptr %1541, i64 504
  store i32 %1540, ptr %1542, align 8, !tbaa !268
  %1543 = getelementptr inbounds i8, ptr %1541, i64 520
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %1543, ptr noundef nonnull align 4 dereferenceable(4) %1542)
  %.pre665 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1546

.critedge556:                                     ; preds = %1522
  %1544 = load ptr, ptr %4, align 8, !tbaa !5
  %1545 = getelementptr inbounds i8, ptr %1544, i64 504
  store i32 0, ptr %1545, align 8, !tbaa !268
  br label %1546

1546:                                             ; preds = %.critedge556, %1538
  %1547 = phi ptr [ %1544, %.critedge556 ], [ %.pre665, %1538 ]
  %1548 = getelementptr inbounds i8, ptr %1547, i64 204
  %1549 = load i8, ptr %1548, align 4, !tbaa !171
  %1550 = icmp sgt i8 %1549, 0
  br i1 %1550, label %1551, label %1553

1551:                                             ; preds = %1546
  %1552 = add nsw i8 %1549, -1
  store i8 %1552, ptr %1548, align 4, !tbaa !171
  br label %1553

1553:                                             ; preds = %1551, %1546
  %1554 = getelementptr inbounds i8, ptr %1547, i64 205
  %1555 = load i8, ptr %1554, align 1, !tbaa !172
  %1556 = icmp sgt i8 %1555, 0
  br i1 %1556, label %1557, label %1559

1557:                                             ; preds = %1553
  %1558 = add nsw i8 %1555, -1
  store i8 %1558, ptr %1554, align 1, !tbaa !172
  br label %1559

1559:                                             ; preds = %1557, %1553
  br i1 %.0378, label %1560, label %1562

1560:                                             ; preds = %1559
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %1547)
  %1561 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1561, i1 noundef zeroext false)
  %.pre667.pre678.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1562

1562:                                             ; preds = %1560, %1559
  %.pre667.pre678 = phi ptr [ %.pre667.pre678.pre, %1560 ], [ %1547, %1559 ]
  br i1 %320, label %1563, label %1581

1563:                                             ; preds = %1562
  %1564 = getelementptr inbounds i8, ptr %.pre667.pre678, i64 48
  %1565 = load ptr, ptr %1564, align 8, !tbaa !139
  %1566 = getelementptr inbounds i8, ptr %1565, i64 98
  %1567 = load i8, ptr %1566, align 2, !tbaa !269, !range !64, !noundef !65
  %1568 = trunc nuw i8 %1567 to i1
  br i1 %1568, label %1569, label %1581

1569:                                             ; preds = %1563
  %1570 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %.not488 = icmp eq ptr %1565, %1570
  %.pre667.pre = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not488, label %1581, label %1571

1571:                                             ; preds = %1569
  %1572 = getelementptr inbounds i8, ptr %.pre667.pre, i64 1162
  %1573 = load i8, ptr %1572, align 2
  %1574 = trunc i8 %1573 to i1
  %1575 = and i8 %1573, 2
  %.not489 = icmp eq i8 %1575, 0
  %or.cond557 = and i1 %.not489, %1574
  br i1 %or.cond557, label %1581, label %1576

1576:                                             ; preds = %1571
  %1577 = getelementptr inbounds i8, ptr %.pre667.pre, i64 48
  %1578 = load ptr, ptr %1577, align 8, !tbaa !139
  %1579 = getelementptr inbounds i8, ptr %1578, i64 98
  store i8 0, ptr %1579, align 2, !tbaa !269
  %1580 = getelementptr inbounds i8, ptr %40, i64 7880
  store i8 0, ptr %1580, align 8, !tbaa !270
  store i8 0, ptr %1, align 1, !tbaa !130
  br label %1581

1581:                                             ; preds = %1571, %1576, %1569, %1563, %1562
  %.pre667 = phi ptr [ %.pre667.pre, %1571 ], [ %.pre667.pre, %1576 ], [ %.pre667.pre, %1569 ], [ %.pre667.pre678, %1563 ], [ %.pre667.pre678, %1562 ]
  br i1 %.not445, label %1582, label %1587

1582:                                             ; preds = %1581
  %1583 = getelementptr inbounds i8, ptr %.pre667, i64 1162
  %1584 = load i8, ptr %1583, align 2
  %1585 = trunc i8 %1584 to i1
  br i1 %1585, label %1587, label %1586

1586:                                             ; preds = %1582
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef nonnull %.pre667, ptr noundef nonnull align 4 dereferenceable(16) %34, ptr noundef nonnull %0, ptr noundef %1)
  %.pre666 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1587

1587:                                             ; preds = %1586, %1582, %1581
  %1588 = phi ptr [ %.pre666, %1586 ], [ %.pre667, %1582 ], [ %.pre667, %1581 ]
  %1589 = getelementptr inbounds i8, ptr %1588, i64 714
  store i16 0, ptr %1589, align 2, !tbaa !271
  %1590 = getelementptr inbounds i8, ptr %1588, i64 712
  store i16 0, ptr %1590, align 8, !tbaa !272
  %1591 = load i32, ptr %404, align 8, !tbaa !155
  %1592 = and i32 %1591, 64
  %.not490 = icmp eq i32 %1592, 0
  br i1 %.not490, label %1631, label %1593

1593:                                             ; preds = %1587
  %1594 = getelementptr inbounds i8, ptr %40, i64 7104
  %1595 = load ptr, ptr %1594, align 8, !tbaa !273
  %1596 = icmp eq ptr %1595, %1588
  br i1 %1596, label %1597, label %1611

1597:                                             ; preds = %1593
  %1598 = getelementptr inbounds i8, ptr %40, i64 201
  %1599 = load i8, ptr %1598, align 1, !tbaa !274, !range !64, !noundef !65
  %1600 = getelementptr inbounds i8, ptr %40, i64 325
  %1601 = load i8, ptr %1600, align 1, !tbaa !275, !range !64, !noundef !65
  %1602 = icmp eq i8 %1599, %1601
  br i1 %1602, label %1603, label %1611

1603:                                             ; preds = %1597
  %1604 = getelementptr inbounds i8, ptr %1588, i64 1024
  %1605 = load ptr, ptr %1604, align 8, !tbaa !227
  %1606 = getelementptr inbounds i8, ptr %1605, i64 12
  %1607 = load i32, ptr %1606, align 4, !tbaa !96
  %1608 = and i32 %1607, 2097152
  %1609 = icmp eq i32 %1608, 0
  br i1 %1609, label %1610, label %1611

1610:                                             ; preds = %1603
  call void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef nonnull %1588)
  %.pre670.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1611

1611:                                             ; preds = %1603, %1610, %1597, %1593
  %.pre670 = phi ptr [ %1588, %1603 ], [ %.pre670.pre, %1610 ], [ %1588, %1597 ], [ %1588, %1593 ]
  %1612 = getelementptr inbounds i8, ptr %40, i64 7932
  %1613 = load i8, ptr %1612, align 4, !tbaa !276, !range !64, !noundef !65
  %1614 = trunc nuw i8 %1613 to i1
  %1615 = and i32 %417, 2097152
  %.not491 = icmp eq i32 %1615, 0
  %or.cond558 = and i1 %.not491, %1614
  br i1 %or.cond558, label %1616, label %1631

1616:                                             ; preds = %1611
  %1617 = load ptr, ptr %1594, align 8, !tbaa !273
  %1618 = icmp eq ptr %1617, null
  br i1 %1618, label %1622, label %1619

1619:                                             ; preds = %1616
  %1620 = getelementptr inbounds i8, ptr %1617, i64 1024
  %1621 = load ptr, ptr %1620, align 8, !tbaa !227
  %.not492 = icmp eq ptr %1621, %.pre670
  br i1 %.not492, label %1631, label %1622

1622:                                             ; preds = %1619, %1616
  %1623 = getelementptr inbounds i8, ptr %.pre670, i64 1024
  %1624 = load ptr, ptr %1623, align 8, !tbaa !227
  %1625 = icmp eq ptr %.pre670, %1624
  br i1 %1625, label %1626, label %1631

1626:                                             ; preds = %1622
  %1627 = getelementptr inbounds i8, ptr %.pre670, i64 12
  %1628 = load i32, ptr %1627, align 4, !tbaa !96
  %1629 = and i32 %1628, 536870912
  %.not493 = icmp eq i32 %1629, 0
  br i1 %.not493, label %1630, label %1631

1630:                                             ; preds = %1626
  call void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef nonnull %.pre670)
  %.pre669 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1631

1631:                                             ; preds = %1611, %1622, %1626, %1630, %1619, %1587
  %1632 = phi ptr [ %.pre670, %1611 ], [ %.pre670, %1622 ], [ %.pre670, %1626 ], [ %.pre669, %1630 ], [ %.pre670, %1619 ], [ %1588, %1587 ]
  %1633 = getelementptr inbounds i8, ptr %1632, i64 1162
  %1634 = load i8, ptr %1633, align 2
  %1635 = trunc i8 %1634 to i1
  br i1 %1635, label %1636, label %1642

1636:                                             ; preds = %1631
  %1637 = getelementptr inbounds i8, ptr %1632, i64 8
  %1638 = load i32, ptr %1637, align 8, !tbaa !181
  %1639 = getelementptr inbounds i8, ptr %1632, i64 1140
  %1640 = load i32, ptr %1639, align 4, !tbaa !277
  %1641 = getelementptr inbounds i8, ptr %1632, i64 1144
  call void @_ZN5ImGui15SetLastItemDataEP11ImGuiWindowjiRK6ImRect(ptr noundef nonnull %1632, i32 noundef %1638, i32 noundef %1640, ptr noundef nonnull align 4 dereferenceable(16) %1641)
  br label %1647

1642:                                             ; preds = %1631
  %1643 = getelementptr inbounds i8, ptr %1632, i64 132
  %1644 = load i32, ptr %1643, align 4, !tbaa !278
  %1645 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %1047, i1 noundef zeroext false)
  %1646 = zext i1 %1645 to i32
  call void @_ZN5ImGui15SetLastItemDataEP11ImGuiWindowjiRK6ImRect(ptr noundef nonnull %1632, i32 noundef %1644, i32 noundef %1646, ptr noundef nonnull align 4 dereferenceable(16) %34)
  br label %1647

1647:                                             ; preds = %1642, %1636
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #15
  br label %1653

1648:                                             ; preds = %314
  %1649 = load ptr, ptr %4, align 8, !tbaa !5
  %1650 = getelementptr inbounds i8, ptr %1649, i64 48
  %1651 = load ptr, ptr %1650, align 8, !tbaa !139
  call void @_ZN5ImGuiL18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1649, ptr noundef %1651)
  %1652 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1652)
  br label %1653

1653:                                             ; preds = %1648, %1647
  %.4 = phi i32 [ %417, %1647 ], [ %.3, %1648 ]
  %1654 = and i32 %.4, 536870912
  %.not494 = icmp eq i32 %1654, 0
  br i1 %.not494, label %1655, label %1659

1655:                                             ; preds = %1653
  %1656 = load ptr, ptr %4, align 8, !tbaa !5
  %1657 = getelementptr inbounds i8, ptr %1656, i64 632
  %1658 = getelementptr inbounds i8, ptr %1656, i64 640
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1657, ptr noundef nonnull align 4 dereferenceable(8) %1658, i1 noundef zeroext true)
  br label %1659

1659:                                             ; preds = %1655, %1653
  %.pre671 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not416, label %1662, label %1660

1660:                                             ; preds = %1659
  %1661 = getelementptr inbounds i8, ptr %.pre671, i64 185
  store i8 0, ptr %1661, align 1, !tbaa !279
  br label %1662

1662:                                             ; preds = %1660, %1659
  %1663 = getelementptr inbounds i8, ptr %.pre671, i64 194
  %1664 = load i16, ptr %1663, align 2, !tbaa !280
  %1665 = add i16 %1664, 1
  store i16 %1665, ptr %1663, align 2, !tbaa !280
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(144) %129)
  %1666 = load ptr, ptr %4, align 8, !tbaa !5
  %1667 = getelementptr inbounds i8, ptr %1666, i64 1162
  %1668 = load i8, ptr %1667, align 2
  %1669 = trunc i8 %1668 to i1
  %1670 = and i8 %1668, 2
  %.not495 = icmp eq i8 %1670, 0
  %or.cond559 = and i1 %.not495, %1669
  br i1 %or.cond559, label %1671, label %1680

1671:                                             ; preds = %1662
  %1672 = getelementptr inbounds i8, ptr %1666, i64 724
  %1673 = load i32, ptr %1672, align 4, !tbaa !281
  %1674 = load i32, ptr %52, align 8, !tbaa !67
  %1675 = icmp eq i32 %1673, %1674
  br i1 %1675, label %1676, label %1678

1676:                                             ; preds = %1671
  %1677 = getelementptr inbounds i8, ptr %1666, i64 216
  store i32 1, ptr %1677, align 8, !tbaa !89
  br label %1680

1678:                                             ; preds = %1671
  %1679 = getelementptr inbounds i8, ptr %1666, i64 212
  store i32 1, ptr %1679, align 4, !tbaa !150
  br label %1680

1680:                                             ; preds = %1676, %1678, %1662
  %1681 = and i32 %.4, 16777216
  %.not496 = icmp eq i32 %1681, 0
  br i1 %.not496, label %.critedge561, label %1682

1682:                                             ; preds = %1680
  %1683 = and i32 %.4, 1
  %.not497 = icmp ne i32 %1683, 0
  %brmerge = or i1 %.not497, %1669
  br i1 %brmerge, label %.critedge9, label %1684

1684:                                             ; preds = %1682
  call void @__assert_fail(ptr noundef nonnull @.str.109, ptr noundef nonnull @.str.3, i32 noundef 6644, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

.critedge9:                                       ; preds = %1682
  %1685 = and i32 %.4, 64
  %.not498 = icmp eq i32 %1685, 0
  br i1 %.not498, label %1686, label %1708

1686:                                             ; preds = %.critedge9
  %1687 = getelementptr inbounds i8, ptr %1666, i64 204
  %1688 = load i8, ptr %1687, align 4, !tbaa !171
  %1689 = icmp slt i8 %1688, 1
  br i1 %1689, label %1690, label %1708

1690:                                             ; preds = %1686
  %1691 = getelementptr inbounds i8, ptr %1666, i64 205
  %1692 = load i8, ptr %1691, align 1, !tbaa !172
  %1693 = icmp slt i8 %1692, 1
  br i1 %1693, label %1694, label %1708

1694:                                             ; preds = %1690
  %1695 = getelementptr inbounds i8, ptr %1666, i64 600
  %1696 = load float, ptr %1695, align 8, !tbaa !282
  %1697 = getelementptr inbounds i8, ptr %1666, i64 608
  %1698 = load float, ptr %1697, align 8, !tbaa !283
  %1699 = fcmp ult float %1696, %1698
  br i1 %1699, label %1700, label %1706

1700:                                             ; preds = %1694
  %1701 = getelementptr inbounds i8, ptr %1666, i64 604
  %1702 = load float, ptr %1701, align 4, !tbaa !202
  %1703 = getelementptr inbounds i8, ptr %1666, i64 612
  %1704 = load float, ptr %1703, align 4, !tbaa !284
  %1705 = fcmp ult float %1702, %1704
  br i1 %1705, label %1708, label %1706

1706:                                             ; preds = %1700, %1694
  %1707 = getelementptr inbounds i8, ptr %1666, i64 212
  store i32 1, ptr %1707, align 4, !tbaa !150
  br label %1708

1708:                                             ; preds = %1700, %1706, %1690, %1686, %.critedge9
  br i1 %179, label %.critedge561, label %1709

1709:                                             ; preds = %1708
  %1710 = getelementptr inbounds i8, ptr %178, i64 186
  %1711 = load i8, ptr %1710, align 2, !tbaa !170, !range !64, !noundef !65
  %1712 = trunc nuw i8 %1711 to i1
  br i1 %1712, label %.thread593, label %1714

.thread593:                                       ; preds = %1709
  %1713 = getelementptr inbounds i8, ptr %1666, i64 212
  store i32 1, ptr %1713, align 4, !tbaa !150
  br label %1723

1714:                                             ; preds = %1709
  %1715 = getelementptr inbounds i8, ptr %178, i64 212
  %1716 = load i32, ptr %1715, align 4, !tbaa !150
  %1717 = icmp sgt i32 %1716, 0
  br i1 %1717, label %1718, label %.thread592

1718:                                             ; preds = %1714
  %1719 = getelementptr inbounds i8, ptr %1666, i64 212
  store i32 1, ptr %1719, align 4, !tbaa !150
  br label %.thread592

.thread592:                                       ; preds = %1714, %1718
  %1720 = getelementptr inbounds i8, ptr %178, i64 216
  %1721 = load i32, ptr %1720, align 8, !tbaa !89
  %1722 = icmp sgt i32 %1721, 0
  br i1 %1722, label %1723, label %.critedge561

1723:                                             ; preds = %.thread593, %.thread592
  %1724 = getelementptr inbounds i8, ptr %1666, i64 216
  store i32 1, ptr %1724, align 8, !tbaa !89
  br label %.critedge561

.critedge561:                                     ; preds = %1708, %.thread592, %1723, %1680
  %1725 = load float, ptr %41, align 4, !tbaa !285
  %1726 = fcmp ugt float %1725, 0.000000e+00
  %.phi.trans.insert672 = getelementptr inbounds i8, ptr %1666, i64 212
  br i1 %1726, label %1727, label %.thread691

.thread691:                                       ; preds = %.critedge561
  store i32 1, ptr %.phi.trans.insert672, align 4, !tbaa !150
  br label %1734

1727:                                             ; preds = %.critedge561
  %.pre673 = load i32, ptr %.phi.trans.insert672, align 4, !tbaa !150
  %1728 = icmp sgt i32 %.pre673, 0
  br i1 %1728, label %1734, label %1729

1729:                                             ; preds = %1727
  %1730 = getelementptr inbounds i8, ptr %1666, i64 216
  %1731 = load i32, ptr %1730, align 8, !tbaa !89
  %1732 = icmp sgt i32 %1731, 0
  %1733 = zext i1 %1732 to i8
  br label %1734

1734:                                             ; preds = %.thread691, %1729, %1727
  %1735 = phi i8 [ 1, %1727 ], [ %1733, %1729 ], [ 1, %.thread691 ]
  %1736 = getelementptr inbounds i8, ptr %1666, i64 190
  store i8 %1735, ptr %1736, align 2, !tbaa !286
  %1737 = getelementptr inbounds i8, ptr %1666, i64 186
  %1738 = load i8, ptr %1737, align 2, !tbaa !170, !range !64, !noundef !65
  %1739 = trunc nuw i8 %1738 to i1
  br i1 %1739, label %1746, label %1740

1740:                                             ; preds = %1734
  %1741 = getelementptr inbounds i8, ptr %1666, i64 183
  %1742 = load i8, ptr %1741, align 1, !tbaa !133, !range !64, !noundef !65
  %1743 = trunc nuw i8 %1742 to i1
  br i1 %1743, label %1744, label %1746

1744:                                             ; preds = %1740
  %1745 = trunc nuw i8 %1735 to i1
  br i1 %1745, label %1746, label %1758

1746:                                             ; preds = %1744, %1740, %1734
  %1747 = getelementptr inbounds i8, ptr %1666, i64 204
  %1748 = load i8, ptr %1747, align 4, !tbaa !171
  %1749 = icmp slt i8 %1748, 1
  br i1 %1749, label %1750, label %1758

1750:                                             ; preds = %1746
  %1751 = getelementptr inbounds i8, ptr %1666, i64 205
  %1752 = load i8, ptr %1751, align 1, !tbaa !172
  %1753 = icmp slt i8 %1752, 1
  br i1 %1753, label %1754, label %1758

1754:                                             ; preds = %1750
  %1755 = getelementptr inbounds i8, ptr %1666, i64 216
  %1756 = load i32, ptr %1755, align 8, !tbaa !89
  %1757 = icmp slt i32 %1756, 1
  br label %1758

1758:                                             ; preds = %1754, %1746, %1750, %1744
  %.0 = phi i1 [ false, %1750 ], [ false, %1746 ], [ false, %1744 ], [ %1757, %1754 ]
  %1759 = getelementptr inbounds i8, ptr %1666, i64 188
  %1760 = zext i1 %.0 to i8
  store i8 %1760, ptr %1759, align 4, !tbaa !287
  %1761 = xor i1 %.0, true
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #15
  ret i1 %1761
}

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

; 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 hidden void @_ZN5ImGuiL18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef, ptr noundef) local_unnamed_addr #8

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #10 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 <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef) local_unnamed_addr #10

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(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(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(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: mustprogress nounwind uwtable
declare hidden void @_ZN5ImGuiL35ErrorCheckBeginEndCompareStacksSizeEP11ImGuiWindowb(ptr noundef, i1 noundef zeroext) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(48)) 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(224)) local_unnamed_addr #9

; 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 uwtable
declare hidden void @_ZN5ImGuiL26UpdateSelectWindowViewportEP11ImGuiWindow(ptr noundef) local_unnamed_addr #10

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 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 #10

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

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

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

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

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

; Function Attrs: 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 @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #3

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

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

; 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 #10 align 2

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

; 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

declare void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef) local_unnamed_addr #9

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

declare void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36), i32 noundef, float noundef, i1 noundef zeroext) local_unnamed_addr #9

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

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

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

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

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

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

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

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

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #13

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 = { "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 = { 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 #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 = { nofree nounwind willreturn memory(argmem: read) }
attributes #14 = { noreturn nounwind }
attributes #15 = { nounwind }
attributes #16 = { 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 6960}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !19, i64 5472, !22, i64 5704, !14, i64 6692, !14, i64 6696, !6, i64 6704, !16, i64 6712, !16, i64 6716, !23, i64 6720, !25, i64 6936, !14, i64 6944, !14, i64 6948, !14, i64 6952, !14, i64 6956, !12, i64 6960, !12, i64 6961, !12, i64 6962, !12, i64 6963, !14, i64 6964, !6, i64 6968, !26, i64 6976, !26, i64 6992, !26, i64 7008, !26, i64 7024, !27, i64 7040, !14, i64 7056, !6, i64 7064, !6, i64 7072, !6, i64 7080, !6, i64 7088, !6, i64 7096, !6, i64 7104, !6, i64 7112, !15, i64 7120, !16, i64 7128, !14, i64 7132, !14, i64 7136, !12, i64 7140, !12, i64 7141, !16, i64 7144, !16, i64 7148, !14, i64 7152, !14, i64 7156, !16, i64 7160, !12, i64 7164, !12, i64 7165, !12, i64 7166, !12, i64 7167, !12, i64 7168, !12, i64 7169, !14, i64 7172, !14, i64 7176, !29, i64 7184, !15, i64 7192, !6, i64 7200, !30, i64 7208, !14, i64 7212, !14, i64 7216, !12, i64 7220, !12, i64 7221, !6, i64 7224, !14, i64 7232, !16, i64 7236, !31, i64 7240, !34, i64 7384, !35, i64 7408, !36, i64 7424, !37, i64 7440, !38, i64 7456, !38, i64 7472, !39, i64 7488, !16, i64 7504, !6, i64 7512, !6, i64 7520, !6, i64 7528, !14, i64 7536, !14, i64 7540, !6, i64 7544, !14, i64 7552, !14, i64 7556, !14, i64 7560, !14, i64 7564, !14, i64 7568, !14, i64 7572, !14, i64 7576, !14, i64 7580, !14, i64 7584, !14, i64 7588, !14, i64 7592, !30, i64 7596, !32, i64 7600, !14, i64 7616, !40, i64 7620, !14, i64 7624, !12, i64 7628, !12, i64 7629, !12, i64 7630, !12, i64 7631, !12, i64 7632, !12, i64 7633, !12, i64 7634, !14, i64 7636, !32, i64 7640, !12, i64 7656, !12, i64 7657, !14, i64 7660, !41, i64 7664, !14, i64 7668, !14, i64 7672, !14, i64 7676, !14, i64 7680, !42, i64 7688, !42, i64 7736, !42, i64 7784, !6, i64 7832, !14, i64 7840, !6, i64 7848, !6, i64 7856, !6, i64 7864, !16, i64 7872, !16, i64 7876, !12, i64 7880, !6, i64 7888, !6, i64 7896, !14, i64 7904, !14, i64 7908, !14, i64 7912, !14, i64 7916, !12, i64 7920, !16, i64 7924, !14, i64 7928, !12, i64 7932, !12, i64 7933, !12, i64 7934, !14, i64 7936, !14, i64 7940, !14, i64 7944, !43, i64 7952, !32, i64 8016, !14, i64 8032, !14, i64 8036, !16, i64 8040, !14, i64 8044, !14, i64 8048, !14, i64 8052, !14, i64 8056, !44, i64 8064, !7, i64 8080, !6, i64 8096, !45, i64 8104, !47, i64 8144, !48, i64 8160, !15, i64 8176, !49, i64 8184, !53, i64 11912, !14, i64 12032, !14, i64 12036, !16, i64 12040, !16, i64 12044, !7, i64 12048, !24, i64 12060, !16, i64 12076, !12, i64 12080, !12, i64 12081, !16, i64 12084, !16, i64 12088, !16, i64 12092, !14, i64 12096, !50, i64 12104, !56, i64 12120, !15, i64 12136, !15, i64 12144, !6, i64 12152, !57, i64 12160, !12, i64 12216, !16, i64 12220, !60, i64 12224, !61, i64 12240, !62, i64 12256, !12, i64 12272, !63, i64 12276, !6, i64 12280, !60, i64 12288, !16, i64 12304, !12, i64 12308, !14, i64 12312, !14, i64 12316, !14, i64 12320, !12, i64 12324, !14, i64 12328, !7, i64 12332, !14, i64 12812, !16, i64 12816, !14, i64 12820, !14, i64 12824, !14, i64 12828, !7, i64 12832}
!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, !7, i64 52, !16, i64 140, !16, i64 144, !6, i64 152, !6, i64 160, !16, i64 168, !12, i64 172, !6, i64 176, !15, i64 184, !12, i64 192, !12, i64 193, !12, i64 194, !12, i64 195, !12, i64 196, !12, i64 197, !12, i64 198, !12, i64 199, !12, i64 200, !12, i64 201, !12, i64 202, !12, i64 203, !12, i64 204, !16, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !15, i64 288, !7, i64 296, !16, i64 304, !16, i64 308, !14, i64 312, !12, i64 316, !12, i64 317, !12, i64 318, !12, i64 319, !7, i64 320, !7, i64 832, !12, i64 916, !12, i64 917, !12, i64 918, !12, i64 919, !12, i64 920, !12, i64 921, !12, i64 922, !16, i64 924, !14, i64 928, !14, i64 932, !14, i64 936, !14, i64 940, !14, i64 944, !15, i64 948, !14, i64 956, !15, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !16, i64 5440, !17, i64 5444, !18, i64 5448}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!"_ZTS8ImVectorItE", !14, i64 0, !14, i64 4, !6, i64 8}
!19 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !20, i64 192, !6, i64 208, !21, i64 216}
!20 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !14, i64 0, !14, i64 4, !6, i64 8}
!21 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !14, i64 0, !14, i64 4, !6, i64 8}
!22 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !15, i64 4, !16, i64 12, !16, i64 16, !15, i64 20, !15, i64 28, !14, i64 36, !16, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !15, i64 56, !16, i64 64, !16, i64 68, !15, i64 72, !15, i64 80, !15, i64 88, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !14, i64 136, !15, i64 140, !15, i64 148, !15, i64 156, !15, i64 164, !16, i64 172, !12, i64 176, !12, i64 177, !12, i64 178, !16, i64 180, !16, i64 184, !7, i64 188}
!23 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !24, i64 28, !14, i64 44, !7, i64 48, !7, i64 144, !6, i64 208}
!24 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!25 = !{!"double", !7, i64 0}
!26 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!27 = !{!"_ZTS12ImGuiStorage", !28, i64 0}
!28 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !14, i64 0, !14, i64 4, !6, i64 8}
!29 = !{!"long long", !7, i64 0}
!30 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!31 = !{!"_ZTS19ImGuiNextWindowData", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !15, i64 20, !15, i64 28, !15, i64 36, !15, i64 44, !15, i64 52, !12, i64 60, !12, i64 61, !32, i64 64, !6, i64 80, !6, i64 88, !16, i64 96, !14, i64 100, !14, i64 104, !33, i64 108, !15, i64 136}
!32 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!33 = !{!"_ZTS16ImGuiWindowClass", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !12, i64 24, !12, i64 25}
!34 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !16, i64 4, !14, i64 8, !14, i64 12, !12, i64 16}
!35 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !14, i64 0, !14, i64 4, !6, i64 8}
!40 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!41 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!42 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !14, i64 8, !14, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !32, i64 28}
!43 = !{!"_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}
!44 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !46, i64 0, !27, i64 16, !14, i64 32}
!46 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!49 = !{!"_ZTS19ImGuiInputTextState", !14, i64 0, !14, i64 4, !14, i64 8, !18, i64 16, !50, i64 32, !50, i64 48, !12, i64 64, !14, i64 68, !16, i64 72, !51, i64 76, !16, i64 3696, !12, i64 3700, !12, i64 3701, !12, i64 3702, !14, i64 3704, !6, i64 3712, !6, i64 3720}
!50 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!51 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !14, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !16, i64 20, !52, i64 24}
!52 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !14, i64 3588, !14, i64 3592}
!53 = !{!"_ZTS6ImFont", !54, i64 0, !16, i64 16, !16, i64 20, !18, i64 24, !55, i64 40, !6, i64 56, !15, i64 64, !6, i64 72, !6, i64 80, !17, i64 88, !17, i64 90, !17, i64 92, !12, i64 94, !16, i64 96, !16, i64 100, !16, i64 104, !14, i64 108, !7, i64 112}
!54 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!57 = !{!"_ZTS16ImGuiDockContext", !27, i64 0, !58, i64 16, !59, i64 32, !12, i64 48}
!58 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !14, i64 0, !14, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !14, i64 0, !14, i64 4, !6, i64 8}
!60 = !{!"_ZTS15ImGuiTextBuffer", !50, i64 0}
!61 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!62 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !50, i64 0}
!63 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!64 = !{i8 0, i8 2}
!65 = !{}
!66 = !{!11, !14, i64 6948}
!67 = !{!11, !14, i64 6944}
!68 = !{!69, !14, i64 720}
!69 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !33, i64 20, !6, i64 48, !14, i64 56, !15, i64 60, !14, i64 68, !15, i64 72, !15, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !16, i64 120, !16, i64 124, !14, i64 128, !14, i64 132, !14, i64 136, !15, i64 140, !15, i64 148, !15, i64 156, !15, i64 164, !15, i64 172, !12, i64 180, !12, i64 181, !12, i64 182, !12, i64 183, !12, i64 184, !12, i64 185, !12, i64 186, !12, i64 187, !12, i64 188, !12, i64 189, !12, i64 190, !12, i64 191, !12, i64 192, !7, i64 193, !17, i64 194, !17, i64 196, !17, i64 198, !14, i64 200, !7, i64 204, !7, i64 205, !7, i64 206, !12, i64 207, !14, i64 208, !14, i64 212, !14, i64 216, !14, i64 220, !14, i64 224, !14, i64 228, !14, i64 232, !15, i64 236, !15, i64 244, !56, i64 256, !70, i64 272, !32, i64 600, !32, i64 616, !32, i64 632, !32, i64 648, !32, i64 664, !32, i64 680, !32, i64 696, !75, i64 712, !75, i64 716, !14, i64 720, !14, i64 724, !16, i64 728, !16, i64 732, !27, i64 736, !76, i64 752, !16, i64 768, !16, i64 772, !14, i64 776, !6, i64 784, !77, i64 792, !6, i64 1016, !6, i64 1024, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056, !7, i64 1064, !7, i64 1072, !12, i64 1104, !14, i64 1108, !14, i64 1112, !6, i64 1120, !6, i64 1128, !14, i64 1136, !14, i64 1140, !32, i64 1144, !17, i64 1160, !12, i64 1162, !12, i64 1162, !12, i64 1162}
!70 = !{!"_ZTS19ImGuiWindowTempData", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !16, i64 48, !16, i64 52, !71, i64 56, !71, i64 60, !71, i64 64, !14, i64 68, !14, i64 72, !32, i64 76, !32, i64 92, !40, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !12, i64 128, !12, i64 129, !12, i64 130, !15, i64 132, !72, i64 140, !14, i64 176, !14, i64 180, !26, i64 184, !6, i64 200, !6, i64 208, !14, i64 216, !14, i64 220, !14, i64 224, !14, i64 228, !14, i64 232, !16, i64 236, !16, i64 240, !73, i64 248, !54, i64 264, !54, i64 280, !74, i64 296, !7, i64 312}
!71 = !{!"_ZTS6ImVec1", !16, i64 0}
!72 = !{!"_ZTS16ImGuiMenuColumns", !16, i64 0, !16, i64 4, !16, i64 8, !7, i64 12, !7, i64 24}
!73 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!75 = !{!"_ZTS8ImVec2ih", !17, i64 0, !17, i64 2}
!76 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!77 = !{!"_ZTS10ImDrawList", !78, i64 0, !18, i64 16, !79, i64 32, !14, i64 48, !6, i64 56, !6, i64 64, !14, i64 72, !6, i64 80, !6, i64 88, !80, i64 96, !81, i64 112, !82, i64 128, !83, i64 144, !84, i64 200}
!78 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!79 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!80 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!81 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!82 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!83 = !{!"_ZTS9ImDrawCmd", !24, i64 0, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48}
!84 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !85, i64 8}
!85 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!86 = !{!11, !14, i64 7024}
!87 = !{!11, !12, i64 6961}
!88 = !{!69, !12, i64 191}
!89 = !{!69, !14, i64 216}
!90 = !{!11, !14, i64 7472}
!91 = !{!69, !14, i64 200}
!92 = !{!93, !14, i64 0}
!93 = !{!"_ZTS14ImGuiPopupData", !14, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !14, i64 28, !15, i64 32, !15, i64 40}
!94 = !{!93, !6, i64 8}
!95 = !{!69, !12, i64 189}
!96 = !{!69, !14, i64 12}
!97 = !{!69, !14, i64 16}
!98 = !{!11, !25, i64 6936}
!99 = !{!69, !16, i64 728}
!100 = !{!69, !17, i64 196}
!101 = !{!11, !14, i64 7056}
!102 = !{!69, !17, i64 198}
!103 = !{!69, !6, i64 1120}
!104 = !{!69, !6, i64 1128}
!105 = !{!11, !14, i64 7240}
!106 = !{!11, !14, i64 7344}
!107 = !{!11, !14, i64 7256}
!108 = !{!69, !14, i64 1136}
!109 = !{!110, !6, i64 128}
!110 = !{!"_ZTS13ImGuiDockNode", !14, i64 0, !14, i64 4, !14, i64 8, !6, i64 16, !7, i64 24, !26, i64 40, !6, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !111, i64 88, !33, i64 92, !112, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !14, i64 160, !14, i64 164, !14, i64 168, !14, i64 172, !14, i64 176, !14, i64 180, !14, i64 184, !14, i64 184, !14, i64 184, !12, i64 185, !12, i64 185, !12, i64 185, !12, i64 185, !12, i64 185, !12, i64 185, !12, i64 185, !12, i64 186, !12, i64 186, !12, i64 186, !12, i64 186}
!111 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!112 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!113 = !{!69, !6, i64 1016}
!114 = !{!69, !14, i64 256}
!115 = !{!11, !6, i64 7064}
!116 = !{!14, !14, i64 0}
!117 = !{!69, !14, i64 220}
!118 = !{!11, !14, i64 7244}
!119 = !{!69, !14, i64 224}
!120 = !{!11, !14, i64 7248}
!121 = !{!11, !16, i64 7276}
!122 = !{!11, !16, i64 7280}
!123 = !{!11, !16, i64 7292}
!124 = !{!69, !16, i64 156}
!125 = !{!69, !16, i64 164}
!126 = !{!11, !16, i64 7296}
!127 = !{!69, !16, i64 160}
!128 = !{!69, !16, i64 168}
!129 = !{i64 0, i64 4, !116, i64 4, i64 4, !116, i64 8, i64 4, !116, i64 12, i64 4, !116, i64 16, i64 4, !116, i64 20, i64 4, !116, i64 24, i64 1, !130, i64 25, i64 1, !130}
!130 = !{!12, !12, i64 0}
!131 = !{!11, !12, i64 7301}
!132 = !{!11, !14, i64 7252}
!133 = !{!69, !12, i64 183}
!134 = !{!69, !12, i64 192}
!135 = !{i64 0, i64 4, !136, i64 4, i64 4, !136, i64 8, i64 4, !136, i64 12, i64 4, !136}
!136 = !{!16, !16, i64 0}
!137 = !{!69, !6, i64 784}
!138 = !{!69, !12, i64 1104}
!139 = !{!69, !6, i64 48}
!140 = !{!141, !6, i64 144}
!141 = !{!"_ZTS14ImGuiViewportP", !142, i64 0, !14, i64 100, !14, i64 104, !7, i64 108, !14, i64 116, !14, i64 120, !15, i64 124, !16, i64 132, !16, i64 136, !17, i64 140, !12, i64 142, !6, i64 144, !7, i64 152, !143, i64 168, !144, i64 232, !15, i64 264, !15, i64 272, !15, i64 280, !15, i64 288, !15, i64 296}
!142 = !{!"_ZTS13ImGuiViewport", !14, i64 0, !14, i64 4, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !6, i64 48, !14, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !12, i64 96, !12, i64 97, !12, i64 98}
!143 = !{!"_ZTS10ImDrawData", !12, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !15, i64 28, !15, i64 36, !15, i64 44, !6, i64 56}
!144 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!145 = !{!11, !6, i64 7864}
!146 = !{!69, !6, i64 0}
!147 = !{!69, !14, i64 128}
!148 = !{!149, !149, i64 0}
!149 = !{!"long", !7, i64 0}
!150 = !{!69, !14, i64 212}
!151 = !{!69, !16, i64 88}
!152 = !{!69, !16, i64 80}
!153 = !{!69, !16, i64 92}
!154 = !{!69, !16, i64 84}
!155 = !{!11, !14, i64 8}
!156 = !{!142, !16, i64 40}
!157 = !{!69, !16, i64 772}
!158 = !{!69, !16, i64 124}
!159 = !{!22, !16, i64 44}
!160 = !{!22, !16, i64 8}
!161 = !{!22, !16, i64 72}
!162 = !{!11, !16, i64 7376}
!163 = !{!69, !16, i64 404}
!164 = !{!11, !16, i64 7380}
!165 = !{!69, !16, i64 408}
!166 = !{!11, !6, i64 7072}
!167 = !{!11, !14, i64 7132}
!168 = !{!11, !14, i64 7136}
!169 = !{!69, !12, i64 187}
!170 = !{!69, !12, i64 186}
!171 = !{!69, !7, i64 204}
!172 = !{!69, !7, i64 205}
!173 = !{!69, !12, i64 207}
!174 = !{!15, !16, i64 4}
!175 = !{!69, !14, i64 208}
!176 = !{!69, !14, i64 456}
!177 = !{!69, !16, i64 236}
!178 = !{!69, !14, i64 68}
!179 = !{!69, !12, i64 182}
!180 = !{!142, !14, i64 4}
!181 = !{!69, !14, i64 8}
!182 = !{!142, !12, i64 96}
!183 = !{!142, !12, i64 97}
!184 = !{!11, !12, i64 205}
!185 = !{!11, !12, i64 206}
!186 = !{!69, !14, i64 24}
!187 = !{!142, !14, i64 0}
!188 = !{!11, !12, i64 207}
!189 = !{!142, !14, i64 56}
!190 = !{!69, !14, i64 28}
!191 = !{!69, !14, i64 32}
!192 = !{!11, !14, i64 5664}
!193 = !{!141, !17, i64 140}
!194 = !{!69, !16, i64 120}
!195 = !{!11, !12, i64 211}
!196 = !{!11, !16, i64 6712}
!197 = !{!69, !7, i64 193}
!198 = !{!69, !12, i64 181}
!199 = !{!69, !12, i64 180}
!200 = !{!15, !16, i64 0}
!201 = !{!22, !16, i64 104}
!202 = !{!69, !16, i64 604}
!203 = !{!69, !16, i64 616}
!204 = !{!69, !16, i64 620}
!205 = !{!69, !16, i64 112}
!206 = !{!69, !16, i64 632}
!207 = !{!69, !16, i64 636}
!208 = !{!69, !16, i64 624}
!209 = !{!69, !16, i64 640}
!210 = !{!69, !16, i64 628}
!211 = !{!69, !16, i64 644}
!212 = !{!69, !16, i64 732}
!213 = !{!69, !16, i64 96}
!214 = !{!69, !16, i64 148}
!215 = !{!69, !16, i64 100}
!216 = !{!69, !16, i64 116}
!217 = !{!69, !16, i64 152}
!218 = !{!77, !14, i64 0}
!219 = !{!83, !14, i64 32}
!220 = !{!11, !6, i64 6704}
!221 = !{!53, !6, i64 72}
!222 = !{!223, !6, i64 8}
!223 = !{!"_ZTS11ImFontAtlas", !12, i64 0, !14, i64 4, !6, i64 8, !14, i64 16, !14, i64 20, !6, i64 24, !6, i64 32, !14, i64 40, !14, i64 44, !15, i64 48, !15, i64 56, !37, i64 64, !224, i64 80, !225, i64 96, !7, i64 112, !14, i64 1136, !14, i64 1140}
!224 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!225 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!226 = !{!11, !6, i64 7856}
!227 = !{!69, !6, i64 1024}
!228 = !{!11, !16, i64 7924}
!229 = !{!11, !16, i64 7876}
!230 = !{!11, !16, i64 5716}
!231 = !{!77, !14, i64 32}
!232 = !{!11, !6, i64 7848}
!233 = !{!11, !6, i64 7544}
!234 = !{!69, !6, i64 1040}
!235 = !{!69, !16, i64 104}
!236 = !{!69, !16, i64 172}
!237 = !{!69, !16, i64 108}
!238 = !{!69, !16, i64 176}
!239 = !{!69, !16, i64 140}
!240 = !{!69, !16, i64 648}
!241 = !{!69, !16, i64 144}
!242 = !{!69, !16, i64 652}
!243 = !{!69, !16, i64 72}
!244 = !{!69, !16, i64 696}
!245 = !{!69, !16, i64 76}
!246 = !{!69, !16, i64 700}
!247 = !{!69, !16, i64 704}
!248 = !{!69, !16, i64 708}
!249 = !{!69, !16, i64 328}
!250 = !{!69, !40, i64 380}
!251 = !{!69, !14, i64 384}
!252 = !{!69, !14, i64 392}
!253 = !{!69, !14, i64 388}
!254 = !{!69, !14, i64 396}
!255 = !{!69, !12, i64 400}
!256 = !{!69, !12, i64 401}
!257 = !{!69, !12, i64 402}
!258 = !{!69, !14, i64 448}
!259 = !{!69, !14, i64 452}
!260 = !{!69, !6, i64 472}
!261 = !{!69, !6, i64 480}
!262 = !{!69, !14, i64 488}
!263 = !{!69, !14, i64 492}
!264 = !{!69, !14, i64 500}
!265 = !{!69, !14, i64 496}
!266 = !{!69, !16, i64 508}
!267 = !{!69, !16, i64 512}
!268 = !{!69, !14, i64 504}
!269 = !{!142, !12, i64 98}
!270 = !{!11, !12, i64 7880}
!271 = !{!69, !17, i64 714}
!272 = !{!69, !17, i64 712}
!273 = !{!11, !6, i64 7104}
!274 = !{!11, !12, i64 201}
!275 = !{!11, !12, i64 325}
!276 = !{!11, !12, i64 7932}
!277 = !{!69, !14, i64 1140}
!278 = !{!69, !14, i64 132}
!279 = !{!69, !12, i64 185}
!280 = !{!69, !17, i64 194}
!281 = !{!69, !14, i64 724}
!282 = !{!69, !16, i64 600}
!283 = !{!69, !16, i64 608}
!284 = !{!69, !16, i64 612}
!285 = !{!22, !16, i64 0}
!286 = !{!69, !12, i64 190}
!287 = !{!69, !12, i64 188}


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