; LLVM IR from Devaniti/BoolkaEngine :: ThirdParty/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.ImGuiStyle, [4 x i8], ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, [3 x i8], i32, ptr, %struct.ImVector.3, %struct.ImVector.3, %struct.ImVector.3, %struct.ImVector.3, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i32, i8, i8, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, i8, 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.4, %struct.ImVector.5, %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.10, 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, [3 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, [7 x i8], %struct.ImDrawData, %struct.ImDrawDataBuilder, float, [4 x i8], %struct.ImDrawList, %struct.ImDrawList, 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.18, [16 x i8], ptr, %struct.ImPool, %struct.ImVector.20, %struct.ImVector.21, %struct.ImVector.17, ptr, %struct.ImPool.22, %struct.ImVector.20, %struct.ImVector.25, %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, float, %struct.ImVector.2, %struct.ImVector.7, %struct.ImVec2, %struct.ImVec2, i8, i8, [2 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.27, %struct.ImChunkStream, %struct.ImChunkStream.28, %struct.ImVector.29, i8, [3 x i8], i32, ptr, %struct.ImGuiTextBuffer, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, %struct.ImGuiMetricsConfig, [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, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, 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.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, %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, [53 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.3 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.0 }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, [4 x i8], ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiNextItemData = type <{ i32, float, i32, i32, i8, [3 x i8] }>
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImVector.6 = 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.ImDrawData = type <{ i8, [7 x i8], ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImDrawDataBuilder = type { [2 x %struct.ImVector.11] }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.12, %struct.ImVector, %struct.ImVector.13, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.14, %struct.ImVector.15, %struct.ImVector.16, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [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.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.17 }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImPool = type <{ %struct.ImVector.19, %struct.ImGuiStorage, i32, [4 x i8] }>
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImPool.22 = type <{ %struct.ImVector.23, %struct.ImGuiStorage, i32, [4 x i8] }>
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.25 = 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, i32, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type <{ %struct.ImVector.21, float, float, %struct.ImVector, %struct.ImVector.26, ptr, ptr, ptr, i16, i16, i16, i8, i8, float, float, float, i32, [2 x i8], [6 x i8] }>
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.2 }
%struct.ImChunkStream.28 = type { %struct.ImVector.2 }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.2 }
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiWindow = type <{ ptr, i32, i32, %struct.ImVec2, %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, %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, i8, i8, i8, i32, i8, %struct.ImVec2, %struct.ImVec2, [4 x i8], %struct.ImVector.7, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, float, float, [4 x i8], %struct.ImGuiStorage, %struct.ImVector.30, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i32, i32, i8, [7 x i8] }>
%struct.ImGuiWindowTempData = type <{ %struct.ImVec2, %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, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, [4 x i8], %struct.ImVector.3, ptr, ptr, i32, i32, i32, i32, i32, i32, float, float, %struct.ImVector.21, %struct.ImVector.21, %struct.ImGuiStackSizes, [2 x i8] }>
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type { float, float, float, [3 x float], [3 x float] }
%struct.ImGuiStackSizes = type { i16, i16, i16, i16, i16, i16, i16 }
%struct.ImVec2ih = type { i16, i16 }
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImGuiPopupData = type { i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2 }
%struct.ImDrawCmd = type { %struct.ImVec4, ptr, i32, i32, i32, ptr, ptr }
%struct.ImFontAtlas = type { i8, i32, ptr, i32, i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.6, %struct.ImVector.36, %struct.ImVector.37, [64 x %struct.ImVec4], i32, i32 }
%struct.ImVector.36 = type { i32, i32, ptr }
%struct.ImVector.37 = type { i32, i32, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: 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(196), 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(196), 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: 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(993)) #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

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

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

; 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 ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca i8, align 1
  %22 = alloca %struct.ImVec2, align 4
  %23 = alloca i8, align 1
  %24 = alloca %struct.ImRect, align 4
  %25 = alloca %struct.ImVec4, align 4
  %26 = alloca i8, align 1
  %27 = alloca i64, align 8
  %28 = alloca %struct.ImVec2, align 4
  %29 = alloca %struct.ImVec2, align 4
  %30 = alloca %struct.ImRect, align 4
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca %struct.ImVec2, align 4
  %35 = alloca %struct.ImVec2, align 4
  %36 = alloca %struct.ImVec2, align 4
  %37 = alloca %struct.ImRect, align 4
  %38 = alloca float, align 4
  %39 = alloca i8, align 1
  %40 = alloca %struct.ImVec2, align 4
  %41 = alloca %struct.ImVec2, align 4
  %42 = alloca %struct.ImVec2, align 4
  %43 = alloca %struct.ImVec2, align 4
  %44 = alloca %struct.ImVec2, align 4
  %45 = alloca %struct.ImRect, align 4
  %46 = alloca %struct.ImVec2, align 4
  %47 = alloca %struct.ImRect, align 4
  %48 = alloca %struct.ImVec2, align 4
  %49 = alloca %struct.ImVec2, align 4
  %50 = alloca %struct.ImVec2, align 4
  %51 = alloca i8, align 1
  %52 = alloca i32, align 4
  %53 = alloca [4 x i32], align 16
  %54 = alloca i32, align 4
  %55 = alloca float, align 4
  %56 = alloca %struct.ImVec2, align 4
  %57 = alloca %struct.ImVec2, align 4
  %58 = alloca %struct.ImVec2, align 4
  %59 = alloca %struct.ImVec2, align 4
  %60 = alloca %struct.ImVec2, align 4
  %61 = alloca float, align 4
  %62 = alloca float, align 4
  %63 = alloca %struct.ImVec2, align 4
  %64 = alloca %struct.ImRect, align 4
  %65 = alloca %struct.ImRect, align 4
  %66 = alloca %struct.ImRect, align 4
  %67 = alloca float, align 4
  %68 = alloca %struct.ImVec2, align 4
  %69 = alloca %struct.ImVec2, align 4
  %70 = alloca i8, align 1
  %71 = alloca i8, align 1
  %72 = alloca i32, align 4
  %73 = alloca %struct.ImRect, align 4
  %74 = alloca i8, align 1
  %75 = alloca ptr, align 8
  %76 = alloca i8, align 1
  %77 = alloca float, align 4
  %78 = alloca %struct.ImRect, align 4
  %79 = alloca i8, align 1
  %80 = alloca i8, align 1
  %81 = alloca float, align 4
  %82 = alloca float, align 4
  %83 = alloca %struct.ImVec2, align 4
  %84 = alloca %struct.ImVec2, align 4
  %85 = alloca %struct.ImVec2, align 4
  %86 = 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
  %87 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %87, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #13
  %88 = load ptr, ptr %7, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.ImGuiContext, ptr %88, i32 0, i32 4
  store ptr %89, ptr %8, align 8, !tbaa !5
  %90 = load ptr, ptr %4, align 8, !tbaa !5
  %91 = icmp ne ptr %90, null
  br i1 %91, label %92, label %98

92:                                               ; preds = %3
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  %94 = getelementptr inbounds i8, ptr %93, i64 0
  %95 = load i8, ptr %94, align 1, !tbaa !11
  %96 = sext i8 %95 to i32
  %97 = icmp ne i32 %96, 0
  br label %98

98:                                               ; preds = %92, %3
  %99 = phi i1 [ false, %3 ], [ %97, %92 ]
  br i1 %99, label %100, label %101

100:                                              ; preds = %98
  br label %103

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

102:                                              ; No predecessors!
  br label %103

103:                                              ; preds = %102, %100
  %104 = load ptr, ptr %7, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.ImGuiContext, ptr %104, i32 0, i32 14
  %106 = load i8, ptr %105, align 4, !tbaa !12, !range !75, !noundef !76
  %107 = trunc i8 %106 to i1
  br i1 %107, label %108, label %109

108:                                              ; preds = %103
  br label %111

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

110:                                              ; No predecessors!
  br label %111

111:                                              ; preds = %110, %108
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.ImGuiContext, ptr %112, i32 0, i32 12
  %114 = load i32, ptr %113, align 4, !tbaa !77
  %115 = load ptr, ptr %7, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.ImGuiContext, ptr %115, i32 0, i32 11
  %117 = load i32, ptr %116, align 8, !tbaa !78
  %118 = icmp ne i32 %114, %117
  br i1 %118, label %119, label %120

119:                                              ; preds = %111
  br label %122

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

121:                                              ; No predecessors!
  br label %122

122:                                              ; preds = %121, %119
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #13
  %123 = load ptr, ptr %4, align 8, !tbaa !5
  %124 = call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef %123)
  store ptr %124, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #13
  %125 = load ptr, ptr %9, align 8, !tbaa !5
  %126 = icmp eq ptr %125, null
  %127 = zext i1 %126 to i8
  store i8 %127, ptr %10, align 1, !tbaa !79
  %128 = load i8, ptr %10, align 1, !tbaa !79, !range !75, !noundef !76
  %129 = trunc i8 %128 to i1
  br i1 %129, label %130, label %134

130:                                              ; preds = %122
  %131 = load ptr, ptr %4, align 8, !tbaa !5
  %132 = load i32, ptr %6, align 4, !tbaa !9
  %133 = call noundef ptr @_ZL15CreateNewWindowPKci(ptr noundef %131, i32 noundef %132)
  store ptr %133, ptr %9, align 8, !tbaa !5
  br label %134

134:                                              ; preds = %130, %122
  %135 = load i32, ptr %6, align 4, !tbaa !9
  %136 = and i32 %135, 786944
  %137 = icmp eq i32 %136, 786944
  br i1 %137, label %138, label %141

138:                                              ; preds = %134
  %139 = load i32, ptr %6, align 4, !tbaa !9
  %140 = or i32 %139, 6
  store i32 %140, ptr %6, align 4, !tbaa !9
  br label %141

141:                                              ; preds = %138, %134
  %142 = load i32, ptr %6, align 4, !tbaa !9
  %143 = and i32 %142, 8388608
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %153

145:                                              ; preds = %141
  %146 = load i32, ptr %6, align 4, !tbaa !9
  %147 = and i32 %146, 16777216
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %149, label %150

149:                                              ; preds = %145
  br label %152

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

151:                                              ; No predecessors!
  br label %152

152:                                              ; preds = %151, %149
  br label %153

153:                                              ; preds = %152, %141
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #13
  %154 = load ptr, ptr %7, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.ImGuiContext, ptr %154, i32 0, i32 11
  %156 = load i32, ptr %155, align 8, !tbaa !78
  store i32 %156, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #13
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.ImGuiWindow, ptr %157, i32 0, i32 63
  %159 = load i32, ptr %158, align 8, !tbaa !80
  %160 = load i32, ptr %11, align 4, !tbaa !9
  %161 = icmp ne i32 %159, %160
  %162 = zext i1 %161 to i8
  store i8 %162, ptr %12, align 1, !tbaa !79
  %163 = load ptr, ptr %7, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.ImGuiContext, ptr %163, i32 0, i32 25
  %165 = getelementptr inbounds %struct.ImVector.3, ptr %164, i32 0, i32 0
  %166 = load i32, ptr %165, align 8, !tbaa !88
  %167 = icmp eq i32 %166, 0
  br i1 %167, label %168, label %173

168:                                              ; preds = %153
  %169 = load ptr, ptr %7, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.ImGuiContext, ptr %169, i32 0, i32 15
  %171 = load i8, ptr %170, align 1, !tbaa !89, !range !75, !noundef !76
  %172 = trunc i8 %171 to i1
  br label %173

173:                                              ; preds = %168, %153
  %174 = phi i1 [ false, %153 ], [ %172, %168 ]
  %175 = load ptr, ptr %9, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.ImGuiWindow, ptr %175, i32 0, i32 31
  %177 = zext i1 %174 to i8
  store i8 %177, ptr %176, align 2, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #13
  %178 = load ptr, ptr %9, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.ImGuiWindow, ptr %178, i32 0, i32 63
  %180 = load i32, ptr %179, align 8, !tbaa !80
  %181 = load i32, ptr %11, align 4, !tbaa !9
  %182 = sub nsw i32 %181, 1
  %183 = icmp slt i32 %180, %182
  %184 = zext i1 %183 to i8
  store i8 %184, ptr %13, align 1, !tbaa !79
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #13
  %185 = load ptr, ptr %9, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.ImGuiWindow, ptr %185, i32 0, i32 45
  %187 = load i8, ptr %186, align 1, !tbaa !91
  %188 = sext i8 %187 to i32
  %189 = icmp sgt i32 %188, 0
  %190 = zext i1 %189 to i8
  store i8 %190, ptr %14, align 1, !tbaa !79
  %191 = load i32, ptr %6, align 4, !tbaa !9
  %192 = and i32 %191, 67108864
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %194, label %228

194:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #13
  %195 = load ptr, ptr %7, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.ImGuiContext, ptr %195, i32 0, i32 80
  %197 = load ptr, ptr %7, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.ImGuiContext, ptr %197, i32 0, i32 81
  %199 = getelementptr inbounds %struct.ImVector.10, ptr %198, i32 0, i32 0
  %200 = load i32, ptr %199, align 8, !tbaa !92
  %201 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %196, i32 noundef %200)
  store ptr %201, ptr %15, align 8, !tbaa !5
  %202 = load ptr, ptr %9, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.ImGuiWindow, ptr %202, i32 0, i32 38
  %204 = load i32, ptr %203, align 8, !tbaa !93
  %205 = load ptr, ptr %15, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.ImGuiPopupData, ptr %205, i32 0, i32 0
  %207 = load i32, ptr %206, align 8, !tbaa !94
  %208 = icmp ne i32 %204, %207
  %209 = zext i1 %208 to i32
  %210 = load i8, ptr %13, align 1, !tbaa !79, !range !75, !noundef !76
  %211 = trunc i8 %210 to i1
  %212 = zext i1 %211 to i32
  %213 = or i32 %212, %209
  %214 = icmp ne i32 %213, 0
  %215 = zext i1 %214 to i8
  store i8 %215, ptr %13, align 1, !tbaa !79
  %216 = load ptr, ptr %9, align 8, !tbaa !5
  %217 = load ptr, ptr %15, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.ImGuiPopupData, ptr %217, i32 0, i32 1
  %219 = load ptr, ptr %218, align 8, !tbaa !96
  %220 = icmp ne ptr %216, %219
  %221 = zext i1 %220 to i32
  %222 = load i8, ptr %13, align 1, !tbaa !79, !range !75, !noundef !76
  %223 = trunc i8 %222 to i1
  %224 = zext i1 %223 to i32
  %225 = or i32 %224, %221
  %226 = icmp ne i32 %225, 0
  %227 = zext i1 %226 to i8
  store i8 %227, ptr %13, align 1, !tbaa !79
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #13
  br label %228

228:                                              ; preds = %194, %173
  %229 = load i8, ptr %13, align 1, !tbaa !79, !range !75, !noundef !76
  %230 = trunc i8 %229 to i1
  br i1 %230, label %234, label %231

231:                                              ; preds = %228
  %232 = load i8, ptr %14, align 1, !tbaa !79, !range !75, !noundef !76
  %233 = trunc i8 %232 to i1
  br label %234

234:                                              ; preds = %231, %228
  %235 = phi i1 [ true, %228 ], [ %233, %231 ]
  %236 = load ptr, ptr %9, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.ImGuiWindow, ptr %236, i32 0, i32 29
  %238 = zext i1 %235 to i8
  store i8 %238, ptr %237, align 4, !tbaa !97
  %239 = load ptr, ptr %9, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.ImGuiWindow, ptr %239, i32 0, i32 29
  %241 = load i8, ptr %240, align 4, !tbaa !97, !range !75, !noundef !76
  %242 = trunc i8 %241 to i1
  br i1 %242, label %243, label %245

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

245:                                              ; preds = %243, %234
  %246 = load i8, ptr %12, align 1, !tbaa !79, !range !75, !noundef !76
  %247 = trunc i8 %246 to i1
  br i1 %247, label %248, label %270

248:                                              ; preds = %245
  %249 = load i32, ptr %6, align 4, !tbaa !9
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.ImGuiWindow, ptr %250, i32 0, i32 2
  store i32 %249, ptr %251, align 4, !tbaa !98
  %252 = load i32, ptr %11, align 4, !tbaa !9
  %253 = load ptr, ptr %9, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.ImGuiWindow, ptr %253, i32 0, i32 63
  store i32 %252, ptr %254, align 8, !tbaa !80
  %255 = load ptr, ptr %7, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.ImGuiContext, ptr %255, i32 0, i32 10
  %257 = load double, ptr %256, align 8, !tbaa !99
  %258 = fptrunc double %257 to float
  %259 = load ptr, ptr %9, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.ImGuiWindow, ptr %259, i32 0, i32 64
  store float %258, ptr %260, align 4, !tbaa !100
  %261 = load ptr, ptr %9, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.ImGuiWindow, ptr %261, i32 0, i32 36
  store i16 0, ptr %262, align 4, !tbaa !101
  %263 = load ptr, ptr %7, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.ImGuiContext, ptr %263, i32 0, i32 27
  %265 = load i32, ptr %264, align 8, !tbaa !102
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %264, align 8, !tbaa !102
  %267 = trunc i32 %265 to i16
  %268 = load ptr, ptr %9, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.ImGuiWindow, ptr %268, i32 0, i32 37
  store i16 %267, ptr %269, align 2, !tbaa !103
  br label %274

270:                                              ; preds = %245
  %271 = load ptr, ptr %9, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.ImGuiWindow, ptr %271, i32 0, i32 2
  %273 = load i32, ptr %272, align 4, !tbaa !98
  store i32 %273, ptr %6, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %270, %248
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #13
  %275 = load ptr, ptr %7, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.ImGuiContext, ptr %275, i32 0, i32 25
  %277 = call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %276)
  br i1 %277, label %278, label %279

278:                                              ; preds = %274
  br label %284

279:                                              ; preds = %274
  %280 = load ptr, ptr %7, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ImGuiContext, ptr %280, i32 0, i32 25
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %281)
  %283 = load ptr, ptr %282, align 8, !tbaa !5
  br label %284

284:                                              ; preds = %279, %278
  %285 = phi ptr [ null, %278 ], [ %283, %279 ]
  store ptr %285, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #13
  %286 = load i8, ptr %12, align 1, !tbaa !79, !range !75, !noundef !76
  %287 = trunc i8 %286 to i1
  br i1 %287, label %288, label %297

288:                                              ; preds = %284
  %289 = load i32, ptr %6, align 4, !tbaa !9
  %290 = and i32 %289, 83886080
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %292, label %294

292:                                              ; preds = %288
  %293 = load ptr, ptr %16, align 8, !tbaa !5
  br label %295

294:                                              ; preds = %288
  br label %295

295:                                              ; preds = %294, %292
  %296 = phi ptr [ %293, %292 ], [ null, %294 ]
  br label %301

297:                                              ; preds = %284
  %298 = load ptr, ptr %9, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.ImGuiWindow, ptr %298, i32 0, i32 73
  %300 = load ptr, ptr %299, align 8, !tbaa !104
  br label %301

301:                                              ; preds = %297, %295
  %302 = phi ptr [ %296, %295 ], [ %300, %297 ]
  store ptr %302, ptr %17, align 8, !tbaa !5
  %303 = load ptr, ptr %17, align 8, !tbaa !5
  %304 = icmp ne ptr %303, null
  br i1 %304, label %310, label %305

305:                                              ; preds = %301
  %306 = load i32, ptr %6, align 4, !tbaa !9
  %307 = and i32 %306, 16777216
  %308 = icmp ne i32 %307, 0
  %309 = xor i1 %308, true
  br label %310

310:                                              ; preds = %305, %301
  %311 = phi i1 [ true, %301 ], [ %309, %305 ]
  br i1 %311, label %312, label %313

312:                                              ; preds = %310
  br label %315

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

314:                                              ; No predecessors!
  br label %315

315:                                              ; preds = %314, %312
  %316 = load ptr, ptr %9, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.ImGuiWindow, ptr %316, i32 0, i32 52
  %318 = getelementptr inbounds %struct.ImVector.7, ptr %317, i32 0, i32 0
  %319 = load i32, ptr %318, align 8, !tbaa !105
  %320 = icmp eq i32 %319, 0
  br i1 %320, label %321, label %326

321:                                              ; preds = %315
  %322 = load ptr, ptr %9, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.ImGuiWindow, ptr %322, i32 0, i32 52
  %324 = load ptr, ptr %9, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.ImGuiWindow, ptr %324, i32 0, i32 1
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %323, ptr noundef nonnull align 4 dereferenceable(4) %325)
  br label %326

326:                                              ; preds = %321, %315
  %327 = load ptr, ptr %7, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.ImGuiContext, ptr %327, i32 0, i32 25
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %328, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %329 = load ptr, ptr %9, align 8, !tbaa !5
  %330 = load ptr, ptr %7, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.ImGuiContext, ptr %330, i32 0, i32 29
  store ptr %329, ptr %331, align 8, !tbaa !106
  %332 = load ptr, ptr %9, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.ImGuiWindow, ptr %332, i32 0, i32 53
  %334 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %333, i32 0, i32 42
  call void @_ZN15ImGuiStackSizes17SetToCurrentStateEv(ptr noundef nonnull align 2 dereferenceable(14) %334)
  %335 = load ptr, ptr %7, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.ImGuiContext, ptr %335, i32 0, i32 29
  store ptr null, ptr %336, align 8, !tbaa !106
  %337 = load i32, ptr %6, align 4, !tbaa !9
  %338 = and i32 %337, 67108864
  %339 = icmp ne i32 %338, 0
  br i1 %339, label %340, label %359

340:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #13
  %341 = load ptr, ptr %7, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImGuiContext, ptr %341, i32 0, i32 80
  %343 = load ptr, ptr %7, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.ImGuiContext, ptr %343, i32 0, i32 81
  %345 = getelementptr inbounds %struct.ImVector.10, ptr %344, i32 0, i32 0
  %346 = load i32, ptr %345, align 8, !tbaa !92
  %347 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %342, i32 noundef %346)
  store ptr %347, ptr %18, align 8, !tbaa !5
  %348 = load ptr, ptr %9, align 8, !tbaa !5
  %349 = load ptr, ptr %18, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.ImGuiPopupData, ptr %349, i32 0, i32 1
  store ptr %348, ptr %350, align 8, !tbaa !96
  %351 = load ptr, ptr %7, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.ImGuiContext, ptr %351, i32 0, i32 81
  %353 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %352, ptr noundef nonnull align 8 dereferenceable(48) %353)
  %354 = load ptr, ptr %18, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.ImGuiPopupData, ptr %354, i32 0, i32 0
  %356 = load i32, ptr %355, align 8, !tbaa !94
  %357 = load ptr, ptr %9, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.ImGuiWindow, ptr %357, i32 0, i32 38
  store i32 %356, ptr %358, align 8, !tbaa !93
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  br label %359

359:                                              ; preds = %340, %326
  %360 = load i8, ptr %14, align 1, !tbaa !79, !range !75, !noundef !76
  %361 = trunc i8 %360 to i1
  br i1 %361, label %362, label %370

362:                                              ; preds = %359
  %363 = load i32, ptr %6, align 4, !tbaa !9
  %364 = and i32 %363, 16777216
  %365 = icmp ne i32 %364, 0
  br i1 %365, label %370, label %366

366:                                              ; preds = %362
  %367 = load ptr, ptr %9, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.ImGuiWindow, ptr %367, i32 0, i32 78
  %369 = getelementptr inbounds [2 x i32], ptr %368, i64 0, i64 0
  store i32 0, ptr %369, align 8, !tbaa !9
  br label %370

370:                                              ; preds = %366, %362, %359
  %371 = load i8, ptr %12, align 1, !tbaa !79, !range !75, !noundef !76
  %372 = trunc i8 %371 to i1
  br i1 %372, label %373, label %377

373:                                              ; preds = %370
  %374 = load ptr, ptr %9, align 8, !tbaa !5
  %375 = load i32, ptr %6, align 4, !tbaa !9
  %376 = load ptr, ptr %17, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %374, i32 noundef %375, ptr noundef %376)
  br label %377

377:                                              ; preds = %373, %370
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #13
  store i8 0, ptr %19, align 1, !tbaa !79
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #13
  store i8 0, ptr %20, align 1, !tbaa !79
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  store i8 0, ptr %21, align 1, !tbaa !79
  %378 = load ptr, ptr %7, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.ImGuiContext, ptr %378, i32 0, i32 71
  %380 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %379, i32 0, i32 0
  %381 = load i32, ptr %380, align 8, !tbaa !107
  %382 = and i32 %381, 1
  %383 = icmp ne i32 %382, 0
  br i1 %383, label %384, label %438

384:                                              ; preds = %377
  %385 = load ptr, ptr %9, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.ImGuiWindow, ptr %385, i32 0, i32 47
  %387 = load i32, ptr %386, align 1
  %388 = shl i32 %387, 24
  %389 = ashr i32 %388, 24
  %390 = load ptr, ptr %7, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.ImGuiContext, ptr %390, i32 0, i32 71
  %392 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %391, i32 0, i32 1
  %393 = load i32, ptr %392, align 4, !tbaa !108
  %394 = and i32 %389, %393
  %395 = icmp ne i32 %394, 0
  %396 = zext i1 %395 to i8
  store i8 %396, ptr %19, align 1, !tbaa !79
  %397 = load i8, ptr %19, align 1, !tbaa !79, !range !75, !noundef !76
  %398 = trunc i8 %397 to i1
  br i1 %398, label %399, label %428

399:                                              ; preds = %384
  %400 = load ptr, ptr %7, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.ImGuiContext, ptr %400, i32 0, i32 71
  %402 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %401, i32 0, i32 5
  %403 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %402)
  %404 = fcmp ogt float %403, 0x3EE4F8B580000000
  br i1 %404, label %405, label %428

405:                                              ; preds = %399
  %406 = load ptr, ptr %7, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.ImGuiContext, ptr %406, i32 0, i32 71
  %408 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %407, i32 0, i32 4
  %409 = load ptr, ptr %9, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.ImGuiWindow, ptr %409, i32 0, i32 49
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %410, ptr align 8 %408, i64 8, i1 false), !tbaa.struct !109
  %411 = load ptr, ptr %7, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.ImGuiContext, ptr %411, i32 0, i32 71
  %413 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %412, i32 0, i32 5
  %414 = load ptr, ptr %9, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.ImGuiWindow, ptr %414, i32 0, i32 50
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %415, ptr align 8 %413, i64 8, i1 false), !tbaa.struct !109
  %416 = load ptr, ptr %9, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.ImGuiWindow, ptr %416, i32 0, i32 47
  %418 = load i32, ptr %417, align 1
  %419 = shl i32 %418, 24
  %420 = ashr i32 %419, 24
  %421 = and i32 %420, -15
  %422 = load i32, ptr %417, align 1
  %423 = and i32 %421, 255
  %424 = and i32 %422, -256
  %425 = or i32 %424, %423
  store i32 %425, ptr %417, align 1
  %426 = shl i32 %423, 24
  %427 = ashr i32 %426, 24
  br label %437

428:                                              ; preds = %399, %384
  %429 = load ptr, ptr %9, align 8, !tbaa !5
  %430 = load ptr, ptr %7, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.ImGuiContext, ptr %430, i32 0, i32 71
  %432 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %431, i32 0, i32 4
  %433 = load ptr, ptr %7, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.ImGuiContext, ptr %433, i32 0, i32 71
  %435 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %434, i32 0, i32 1
  %436 = load i32, ptr %435, align 4, !tbaa !108
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %429, ptr noundef nonnull align 4 dereferenceable(8) %432, i32 noundef %436)
  br label %437

437:                                              ; preds = %428, %405
  br label %438

438:                                              ; preds = %437, %377
  %439 = load ptr, ptr %7, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.ImGuiContext, ptr %439, i32 0, i32 71
  %441 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %440, i32 0, i32 0
  %442 = load i32, ptr %441, align 8, !tbaa !107
  %443 = and i32 %442, 2
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %445, label %496

445:                                              ; preds = %438
  %446 = load ptr, ptr %9, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.ImGuiWindow, ptr %446, i32 0, i32 47
  %448 = load i32, ptr %447, align 1
  %449 = shl i32 %448, 16
  %450 = ashr i32 %449, 24
  %451 = load ptr, ptr %7, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.ImGuiContext, ptr %451, i32 0, i32 71
  %453 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %452, i32 0, i32 2
  %454 = load i32, ptr %453, align 8, !tbaa !111
  %455 = and i32 %450, %454
  %456 = icmp ne i32 %455, 0
  br i1 %456, label %457, label %464

457:                                              ; preds = %445
  %458 = load ptr, ptr %7, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.ImGuiContext, ptr %458, i32 0, i32 71
  %460 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %459, i32 0, i32 6
  %461 = getelementptr inbounds %struct.ImVec2, ptr %460, i32 0, i32 0
  %462 = load float, ptr %461, align 8, !tbaa !112
  %463 = fcmp ogt float %462, 0.000000e+00
  br label %464

464:                                              ; preds = %457, %445
  %465 = phi i1 [ false, %445 ], [ %463, %457 ]
  %466 = zext i1 %465 to i8
  store i8 %466, ptr %20, align 1, !tbaa !79
  %467 = load ptr, ptr %9, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.ImGuiWindow, ptr %467, i32 0, i32 47
  %469 = load i32, ptr %468, align 1
  %470 = shl i32 %469, 16
  %471 = ashr i32 %470, 24
  %472 = load ptr, ptr %7, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.ImGuiContext, ptr %472, i32 0, i32 71
  %474 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %473, i32 0, i32 2
  %475 = load i32, ptr %474, align 8, !tbaa !111
  %476 = and i32 %471, %475
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %478, label %485

478:                                              ; preds = %464
  %479 = load ptr, ptr %7, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.ImGuiContext, ptr %479, i32 0, i32 71
  %481 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %480, i32 0, i32 6
  %482 = getelementptr inbounds %struct.ImVec2, ptr %481, i32 0, i32 1
  %483 = load float, ptr %482, align 4, !tbaa !113
  %484 = fcmp ogt float %483, 0.000000e+00
  br label %485

485:                                              ; preds = %478, %464
  %486 = phi i1 [ false, %464 ], [ %484, %478 ]
  %487 = zext i1 %486 to i8
  store i8 %487, ptr %21, align 1, !tbaa !79
  %488 = load ptr, ptr %9, align 8, !tbaa !5
  %489 = load ptr, ptr %7, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.ImGuiContext, ptr %489, i32 0, i32 71
  %491 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %490, i32 0, i32 6
  %492 = load ptr, ptr %7, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.ImGuiContext, ptr %492, i32 0, i32 71
  %494 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %493, i32 0, i32 2
  %495 = load i32, ptr %494, align 8, !tbaa !111
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %488, ptr noundef nonnull align 4 dereferenceable(8) %491, i32 noundef %495)
  br label %496

496:                                              ; preds = %485, %438
  %497 = load ptr, ptr %7, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.ImGuiContext, ptr %497, i32 0, i32 71
  %499 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %498, i32 0, i32 0
  %500 = load i32, ptr %499, align 8, !tbaa !107
  %501 = and i32 %500, 128
  %502 = icmp ne i32 %501, 0
  br i1 %502, label %503, label %542

503:                                              ; preds = %496
  %504 = load ptr, ptr %7, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.ImGuiContext, ptr %504, i32 0, i32 71
  %506 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %505, i32 0, i32 8
  %507 = getelementptr inbounds %struct.ImVec2, ptr %506, i32 0, i32 0
  %508 = load float, ptr %507, align 8, !tbaa !114
  %509 = fcmp oge float %508, 0.000000e+00
  br i1 %509, label %510, label %522

510:                                              ; preds = %503
  %511 = load ptr, ptr %7, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.ImGuiContext, ptr %511, i32 0, i32 71
  %513 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %512, i32 0, i32 8
  %514 = getelementptr inbounds %struct.ImVec2, ptr %513, i32 0, i32 0
  %515 = load float, ptr %514, align 8, !tbaa !114
  %516 = load ptr, ptr %9, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.ImGuiWindow, ptr %516, i32 0, i32 17
  %518 = getelementptr inbounds %struct.ImVec2, ptr %517, i32 0, i32 0
  store float %515, ptr %518, align 4, !tbaa !115
  %519 = load ptr, ptr %9, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.ImGuiWindow, ptr %519, i32 0, i32 18
  %521 = getelementptr inbounds %struct.ImVec2, ptr %520, i32 0, i32 0
  store float 0.000000e+00, ptr %521, align 4, !tbaa !116
  br label %522

522:                                              ; preds = %510, %503
  %523 = load ptr, ptr %7, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.ImGuiContext, ptr %523, i32 0, i32 71
  %525 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %524, i32 0, i32 8
  %526 = getelementptr inbounds %struct.ImVec2, ptr %525, i32 0, i32 1
  %527 = load float, ptr %526, align 4, !tbaa !117
  %528 = fcmp oge float %527, 0.000000e+00
  br i1 %528, label %529, label %541

529:                                              ; preds = %522
  %530 = load ptr, ptr %7, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.ImGuiContext, ptr %530, i32 0, i32 71
  %532 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %531, i32 0, i32 8
  %533 = getelementptr inbounds %struct.ImVec2, ptr %532, i32 0, i32 1
  %534 = load float, ptr %533, align 4, !tbaa !117
  %535 = load ptr, ptr %9, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.ImGuiWindow, ptr %535, i32 0, i32 17
  %537 = getelementptr inbounds %struct.ImVec2, ptr %536, i32 0, i32 1
  store float %534, ptr %537, align 4, !tbaa !118
  %538 = load ptr, ptr %9, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.ImGuiWindow, ptr %538, i32 0, i32 18
  %540 = getelementptr inbounds %struct.ImVec2, ptr %539, i32 0, i32 1
  store float 0.000000e+00, ptr %540, align 4, !tbaa !119
  br label %541

541:                                              ; preds = %529, %522
  br label %542

542:                                              ; preds = %541, %496
  %543 = load ptr, ptr %7, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.ImGuiContext, ptr %543, i32 0, i32 71
  %545 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %544, i32 0, i32 0
  %546 = load i32, ptr %545, align 8, !tbaa !107
  %547 = and i32 %546, 4
  %548 = icmp ne i32 %547, 0
  br i1 %548, label %549, label %555

549:                                              ; preds = %542
  %550 = load ptr, ptr %7, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.ImGuiContext, ptr %550, i32 0, i32 71
  %552 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %551, i32 0, i32 7
  %553 = load ptr, ptr %9, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.ImGuiWindow, ptr %553, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %554, ptr align 8 %552, i64 8, i1 false), !tbaa.struct !109
  br label %562

555:                                              ; preds = %542
  %556 = load i8, ptr %12, align 1, !tbaa !79, !range !75, !noundef !76
  %557 = trunc i8 %556 to i1
  br i1 %557, label %558, label %561

558:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %22, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %559 = load ptr, ptr %9, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.ImGuiWindow, ptr %559, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %560, ptr align 4 %22, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #13
  br label %561

561:                                              ; preds = %558, %555
  br label %562

562:                                              ; preds = %561, %549
  %563 = load ptr, ptr %7, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.ImGuiContext, ptr %563, i32 0, i32 71
  %565 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %564, i32 0, i32 0
  %566 = load i32, ptr %565, align 8, !tbaa !107
  %567 = and i32 %566, 8
  %568 = icmp ne i32 %567, 0
  br i1 %568, label %569, label %580

569:                                              ; preds = %562
  %570 = load ptr, ptr %9, align 8, !tbaa !5
  %571 = load ptr, ptr %7, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.ImGuiContext, ptr %571, i32 0, i32 71
  %573 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %572, i32 0, i32 9
  %574 = load i8, ptr %573, align 8, !tbaa !120, !range !75, !noundef !76
  %575 = trunc i8 %574 to i1
  %576 = load ptr, ptr %7, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.ImGuiContext, ptr %576, i32 0, i32 71
  %578 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %577, i32 0, i32 3
  %579 = load i32, ptr %578, align 4, !tbaa !121
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %570, i1 noundef zeroext %575, i32 noundef %579)
  br label %580

580:                                              ; preds = %569, %562
  %581 = load ptr, ptr %7, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.ImGuiContext, ptr %581, i32 0, i32 71
  %583 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %582, i32 0, i32 0
  %584 = load i32, ptr %583, align 8, !tbaa !107
  %585 = and i32 %584, 32
  %586 = icmp ne i32 %585, 0
  br i1 %586, label %587, label %589

587:                                              ; preds = %580
  %588 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %588)
  br label %589

589:                                              ; preds = %587, %580
  %590 = load ptr, ptr %9, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.ImGuiWindow, ptr %590, i32 0, i32 29
  %592 = load i8, ptr %591, align 4, !tbaa !97, !range !75, !noundef !76
  %593 = trunc i8 %592 to i1
  br i1 %593, label %594, label %596

594:                                              ; preds = %589
  %595 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %595, i32 noundef 8, i1 noundef zeroext false)
  br label %596

596:                                              ; preds = %594, %589
  %597 = load i8, ptr %12, align 1, !tbaa !79, !range !75, !noundef !76
  %598 = trunc i8 %597 to i1
  br i1 %598, label %599, label %2514

599:                                              ; preds = %596
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  %600 = load i32, ptr %6, align 4, !tbaa !9
  %601 = and i32 %600, 16777216
  %602 = icmp ne i32 %601, 0
  br i1 %602, label %603, label %607

603:                                              ; preds = %599
  %604 = load i32, ptr %6, align 4, !tbaa !9
  %605 = and i32 %604, 33554432
  %606 = icmp ne i32 %605, 0
  br label %607

607:                                              ; preds = %603, %599
  %608 = phi i1 [ false, %599 ], [ %606, %603 ]
  %609 = zext i1 %608 to i8
  store i8 %609, ptr %23, align 1, !tbaa !79
  %610 = load ptr, ptr %9, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.ImGuiWindow, ptr %610, i32 0, i32 23
  store i8 1, ptr %611, align 2, !tbaa !122
  %612 = load ptr, ptr %5, align 8, !tbaa !5
  %613 = icmp ne ptr %612, null
  %614 = load ptr, ptr %9, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.ImGuiWindow, ptr %614, i32 0, i32 32
  %616 = zext i1 %613 to i8
  store i8 %616, ptr %615, align 1, !tbaa !123
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #13
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %25, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %24, ptr noundef nonnull align 4 dereferenceable(16) %25)
  %617 = load ptr, ptr %9, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.ImGuiWindow, ptr %617, i32 0, i32 59
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %618, ptr align 4 %24, i64 16, i1 false), !tbaa.struct !124
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #13
  %619 = load ptr, ptr %9, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.ImGuiWindow, ptr %619, i32 0, i32 52
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %620, i32 noundef 1)
  %621 = load ptr, ptr %9, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.ImGuiWindow, ptr %621, i32 0, i32 71
  %623 = load ptr, ptr %622, align 8, !tbaa !125
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %623)
  %624 = load ptr, ptr %9, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.ImGuiWindow, ptr %624, i32 0, i32 53
  %626 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %625, i32 0, i32 32
  store i32 -1, ptr %626, align 8, !tbaa !126
  %627 = load ptr, ptr %9, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.ImGuiWindow, ptr %627, i32 0, i32 82
  %629 = load i8, ptr %628, align 8, !tbaa !127, !range !75, !noundef !76
  %630 = trunc i8 %629 to i1
  br i1 %630, label %631, label %633

631:                                              ; preds = %607
  %632 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %632)
  br label %633

633:                                              ; preds = %631, %607
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #13
  store i8 0, ptr %26, align 1, !tbaa !79
  %634 = load ptr, ptr %7, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.ImGuiContext, ptr %634, i32 0, i32 126
  %636 = load ptr, ptr %635, align 8, !tbaa !128
  %637 = icmp ne ptr %636, null
  br i1 %637, label %638, label %645

638:                                              ; preds = %633
  %639 = load ptr, ptr %9, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.ImGuiWindow, ptr %639, i32 0, i32 2
  %641 = load i32, ptr %640, align 4, !tbaa !98
  %642 = and i32 %641, 524288
  %643 = icmp eq i32 %642, 0
  br i1 %643, label %644, label %645

644:                                              ; preds = %638
  store i8 1, ptr %26, align 1, !tbaa !79
  br label %645

645:                                              ; preds = %644, %638, %633
  %646 = load i8, ptr %26, align 1, !tbaa !79, !range !75, !noundef !76
  %647 = trunc i8 %646 to i1
  br i1 %647, label %648, label %674

648:                                              ; preds = %645
  %649 = load i8, ptr %10, align 1, !tbaa !79, !range !75, !noundef !76
  %650 = trunc i8 %649 to i1
  br i1 %650, label %674, label %651

651:                                              ; preds = %648
  %652 = load ptr, ptr %4, align 8, !tbaa !5
  %653 = load ptr, ptr %9, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.ImGuiWindow, ptr %653, i32 0, i32 0
  %655 = load ptr, ptr %654, align 8, !tbaa !129
  %656 = call i32 @strcmp(ptr noundef %652, ptr noundef %655) #15
  %657 = icmp ne i32 %656, 0
  br i1 %657, label %658, label %674

658:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #13
  %659 = load ptr, ptr %9, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.ImGuiWindow, ptr %659, i32 0, i32 12
  %661 = load i32, ptr %660, align 8, !tbaa !130
  %662 = sext i32 %661 to i64
  store i64 %662, ptr %27, align 8, !tbaa !131
  %663 = load ptr, ptr %9, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.ImGuiWindow, ptr %663, i32 0, i32 0
  %665 = load ptr, ptr %664, align 8, !tbaa !129
  %666 = load ptr, ptr %4, align 8, !tbaa !5
  %667 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %665, ptr noundef %27, ptr noundef %666)
  %668 = load ptr, ptr %9, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.ImGuiWindow, ptr %668, i32 0, i32 0
  store ptr %667, ptr %669, align 8, !tbaa !129
  %670 = load i64, ptr %27, align 8, !tbaa !131
  %671 = trunc i64 %670 to i32
  %672 = load ptr, ptr %9, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.ImGuiWindow, ptr %672, i32 0, i32 12
  store i32 %671, ptr %673, align 8, !tbaa !130
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #13
  br label %674

674:                                              ; preds = %658, %651, %648, %645
  %675 = load ptr, ptr %9, align 8, !tbaa !5
  %676 = load ptr, ptr %9, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.ImGuiWindow, ptr %676, i32 0, i32 6
  %678 = load ptr, ptr %9, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.ImGuiWindow, ptr %678, i32 0, i32 7
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %675, ptr noundef %677, ptr noundef %679)
  %680 = load ptr, ptr %9, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.ImGuiWindow, ptr %680, i32 0, i32 44
  %682 = load i8, ptr %681, align 4, !tbaa !133
  %683 = sext i8 %682 to i32
  %684 = icmp sgt i32 %683, 0
  br i1 %684, label %685, label %690

685:                                              ; preds = %674
  %686 = load ptr, ptr %9, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.ImGuiWindow, ptr %686, i32 0, i32 44
  %688 = load i8, ptr %687, align 4, !tbaa !133
  %689 = add i8 %688, -1
  store i8 %689, ptr %687, align 4, !tbaa !133
  br label %690

690:                                              ; preds = %685, %674
  %691 = load ptr, ptr %9, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.ImGuiWindow, ptr %691, i32 0, i32 45
  %693 = load i8, ptr %692, align 1, !tbaa !91
  %694 = sext i8 %693 to i32
  %695 = icmp sgt i32 %694, 0
  br i1 %695, label %696, label %701

696:                                              ; preds = %690
  %697 = load ptr, ptr %9, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.ImGuiWindow, ptr %697, i32 0, i32 45
  %699 = load i8, ptr %698, align 1, !tbaa !91
  %700 = add i8 %699, -1
  store i8 %700, ptr %698, align 1, !tbaa !91
  br label %701

701:                                              ; preds = %696, %690
  %702 = load ptr, ptr %9, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.ImGuiWindow, ptr %702, i32 0, i32 46
  %704 = load i8, ptr %703, align 2, !tbaa !134
  %705 = sext i8 %704 to i32
  %706 = icmp sgt i32 %705, 0
  br i1 %706, label %707, label %712

707:                                              ; preds = %701
  %708 = load ptr, ptr %9, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.ImGuiWindow, ptr %708, i32 0, i32 46
  %710 = load i8, ptr %709, align 2, !tbaa !134
  %711 = add i8 %710, -1
  store i8 %711, ptr %709, align 2, !tbaa !134
  br label %712

712:                                              ; preds = %707, %701
  %713 = load i8, ptr %10, align 1, !tbaa !79, !range !75, !noundef !76
  %714 = trunc i8 %713 to i1
  br i1 %714, label %715, label %724

715:                                              ; preds = %712
  %716 = load i8, ptr %20, align 1, !tbaa !79, !range !75, !noundef !76
  %717 = trunc i8 %716 to i1
  br i1 %717, label %718, label %721

718:                                              ; preds = %715
  %719 = load i8, ptr %21, align 1, !tbaa !79, !range !75, !noundef !76
  %720 = trunc i8 %719 to i1
  br i1 %720, label %724, label %721

721:                                              ; preds = %718, %715
  %722 = load ptr, ptr %9, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.ImGuiWindow, ptr %722, i32 0, i32 45
  store i8 1, ptr %723, align 1, !tbaa !91
  br label %724

724:                                              ; preds = %721, %718, %712
  %725 = load i8, ptr %13, align 1, !tbaa !79, !range !75, !noundef !76
  %726 = trunc i8 %725 to i1
  br i1 %726, label %727, label %763

727:                                              ; preds = %724
  %728 = load i32, ptr %6, align 4, !tbaa !9
  %729 = and i32 %728, 100663296
  %730 = icmp ne i32 %729, 0
  br i1 %730, label %731, label %763

731:                                              ; preds = %727
  %732 = load ptr, ptr %9, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.ImGuiWindow, ptr %732, i32 0, i32 45
  store i8 1, ptr %733, align 1, !tbaa !91
  %734 = load i32, ptr %6, align 4, !tbaa !9
  %735 = and i32 %734, 64
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %737, label %762

737:                                              ; preds = %731
  %738 = load i8, ptr %20, align 1, !tbaa !79, !range !75, !noundef !76
  %739 = trunc i8 %738 to i1
  br i1 %739, label %747, label %740

740:                                              ; preds = %737
  %741 = load ptr, ptr %9, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.ImGuiWindow, ptr %741, i32 0, i32 5
  %743 = getelementptr inbounds %struct.ImVec2, ptr %742, i32 0, i32 0
  store float 0.000000e+00, ptr %743, align 8, !tbaa !135
  %744 = load ptr, ptr %9, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.ImGuiWindow, ptr %744, i32 0, i32 4
  %746 = getelementptr inbounds %struct.ImVec2, ptr %745, i32 0, i32 0
  store float 0.000000e+00, ptr %746, align 8, !tbaa !136
  br label %747

747:                                              ; preds = %740, %737
  %748 = load i8, ptr %21, align 1, !tbaa !79, !range !75, !noundef !76
  %749 = trunc i8 %748 to i1
  br i1 %749, label %757, label %750

750:                                              ; preds = %747
  %751 = load ptr, ptr %9, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.ImGuiWindow, ptr %751, i32 0, i32 5
  %753 = getelementptr inbounds %struct.ImVec2, ptr %752, i32 0, i32 1
  store float 0.000000e+00, ptr %753, align 4, !tbaa !137
  %754 = load ptr, ptr %9, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.ImGuiWindow, ptr %754, i32 0, i32 4
  %756 = getelementptr inbounds %struct.ImVec2, ptr %755, i32 0, i32 1
  store float 0.000000e+00, ptr %756, align 4, !tbaa !138
  br label %757

757:                                              ; preds = %750, %747
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %758 = load ptr, ptr %9, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.ImGuiWindow, ptr %758, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %759, ptr align 4 %28, i64 8, i1 false), !tbaa.struct !109
  %760 = load ptr, ptr %9, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.ImGuiWindow, ptr %760, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %761, ptr align 4 %759, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  br label %762

762:                                              ; preds = %757, %731
  br label %763

763:                                              ; preds = %762, %727, %724
  %764 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %764)
  %765 = load i32, ptr %6, align 4, !tbaa !9
  %766 = and i32 %765, 16777216
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %774

768:                                              ; preds = %763
  %769 = load ptr, ptr %8, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.ImGuiStyle, ptr %769, i32 0, i32 8
  %771 = load float, ptr %770, align 4, !tbaa !139
  %772 = load ptr, ptr %9, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.ImGuiWindow, ptr %772, i32 0, i32 11
  store float %771, ptr %773, align 4, !tbaa !140
  br label %794

774:                                              ; preds = %763
  %775 = load i32, ptr %6, align 4, !tbaa !9
  %776 = and i32 %775, 100663296
  %777 = icmp ne i32 %776, 0
  br i1 %777, label %778, label %786

778:                                              ; preds = %774
  %779 = load i32, ptr %6, align 4, !tbaa !9
  %780 = and i32 %779, 134217728
  %781 = icmp ne i32 %780, 0
  br i1 %781, label %786, label %782

782:                                              ; preds = %778
  %783 = load ptr, ptr %8, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.ImGuiStyle, ptr %783, i32 0, i32 10
  %785 = load float, ptr %784, align 4, !tbaa !141
  br label %790

786:                                              ; preds = %778, %774
  %787 = load ptr, ptr %8, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.ImGuiStyle, ptr %787, i32 0, i32 3
  %789 = load float, ptr %788, align 4, !tbaa !142
  br label %790

790:                                              ; preds = %786, %782
  %791 = phi float [ %785, %782 ], [ %789, %786 ]
  %792 = load ptr, ptr %9, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.ImGuiWindow, ptr %792, i32 0, i32 11
  store float %791, ptr %793, align 4, !tbaa !140
  br label %794

794:                                              ; preds = %790, %768
  %795 = load ptr, ptr %8, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.ImGuiStyle, ptr %795, i32 0, i32 1
  %797 = load ptr, ptr %9, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.ImGuiWindow, ptr %797, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %798, ptr align 4 %796, i64 8, i1 false), !tbaa.struct !109
  %799 = load i32, ptr %6, align 4, !tbaa !9
  %800 = and i32 %799, 16777216
  %801 = icmp ne i32 %800, 0
  br i1 %801, label %802, label %825

802:                                              ; preds = %794
  %803 = load i32, ptr %6, align 4, !tbaa !9
  %804 = and i32 %803, 67174400
  %805 = icmp ne i32 %804, 0
  br i1 %805, label %825, label %806

806:                                              ; preds = %802
  %807 = load ptr, ptr %9, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.ImGuiWindow, ptr %807, i32 0, i32 11
  %809 = load float, ptr %808, align 4, !tbaa !140
  %810 = fcmp oeq float %809, 0.000000e+00
  br i1 %810, label %811, label %825

811:                                              ; preds = %806
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #13
  %812 = load i32, ptr %6, align 4, !tbaa !9
  %813 = and i32 %812, 1024
  %814 = icmp ne i32 %813, 0
  br i1 %814, label %815, label %820

815:                                              ; preds = %811
  %816 = load ptr, ptr %8, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.ImGuiStyle, ptr %816, i32 0, i32 1
  %818 = getelementptr inbounds %struct.ImVec2, ptr %817, i32 0, i32 1
  %819 = load float, ptr %818, align 4, !tbaa !143
  br label %821

820:                                              ; preds = %811
  br label %821

821:                                              ; preds = %820, %815
  %822 = phi float [ %819, %815 ], [ 0.000000e+00, %820 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef 0.000000e+00, float noundef %822)
  %823 = load ptr, ptr %9, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.ImGuiWindow, ptr %823, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %824, ptr align 4 %29, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  br label %825

825:                                              ; preds = %821, %806, %802, %794
  %826 = load ptr, ptr %9, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.ImGuiWindow, ptr %826, i32 0, i32 9
  %828 = getelementptr inbounds %struct.ImVec2, ptr %827, i32 0, i32 0
  %829 = load float, ptr %828, align 8, !tbaa !144
  %830 = load ptr, ptr %8, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.ImGuiStyle, ptr %830, i32 0, i32 14
  %832 = getelementptr inbounds %struct.ImVec2, ptr %831, i32 0, i32 0
  %833 = load float, ptr %832, align 4, !tbaa !145
  %834 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %829, float noundef %833)
  %835 = load ptr, ptr %7, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.ImGuiContext, ptr %835, i32 0, i32 71
  %837 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %836, i32 0, i32 16
  %838 = getelementptr inbounds %struct.ImVec2, ptr %837, i32 0, i32 0
  %839 = load float, ptr %838, align 4, !tbaa !146
  %840 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %834, float noundef %839)
  %841 = load ptr, ptr %9, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.ImGuiWindow, ptr %841, i32 0, i32 53
  %843 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %842, i32 0, i32 24
  %844 = getelementptr inbounds %struct.ImVec2, ptr %843, i32 0, i32 0
  store float %840, ptr %844, align 8, !tbaa !147
  %845 = load ptr, ptr %7, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiContext, ptr %845, i32 0, i32 71
  %847 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %846, i32 0, i32 16
  %848 = getelementptr inbounds %struct.ImVec2, ptr %847, i32 0, i32 1
  %849 = load float, ptr %848, align 4, !tbaa !148
  %850 = load ptr, ptr %9, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.ImGuiWindow, ptr %850, i32 0, i32 53
  %852 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %851, i32 0, i32 24
  %853 = getelementptr inbounds %struct.ImVec2, ptr %852, i32 0, i32 1
  store float %849, ptr %853, align 4, !tbaa !149
  %854 = load i32, ptr %6, align 4, !tbaa !9
  %855 = and i32 %854, 1
  %856 = icmp ne i32 %855, 0
  br i1 %856, label %914, label %857

857:                                              ; preds = %825
  %858 = load i32, ptr %6, align 4, !tbaa !9
  %859 = and i32 %858, 32
  %860 = icmp ne i32 %859, 0
  br i1 %860, label %914, label %861

861:                                              ; preds = %857
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #13
  %862 = load ptr, ptr %9, align 8, !tbaa !5
  %863 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(993) %862)
  %864 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %30, i32 0, i32 0
  %865 = extractvalue { <2 x float>, <2 x float> } %863, 0
  store <2 x float> %865, ptr %864, align 4
  %866 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %30, i32 0, i32 1
  %867 = extractvalue { <2 x float>, <2 x float> } %863, 1
  store <2 x float> %867, ptr %866, align 4
  %868 = load ptr, ptr %7, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.ImGuiContext, ptr %868, i32 0, i32 30
  %870 = load ptr, ptr %869, align 8, !tbaa !150
  %871 = load ptr, ptr %9, align 8, !tbaa !5
  %872 = icmp eq ptr %870, %871
  br i1 %872, label %873, label %897

873:                                              ; preds = %861
  %874 = load ptr, ptr %7, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.ImGuiContext, ptr %874, i32 0, i32 37
  %876 = load i32, ptr %875, align 4, !tbaa !151
  %877 = icmp eq i32 %876, 0
  br i1 %877, label %878, label %897

878:                                              ; preds = %873
  %879 = load ptr, ptr %7, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.ImGuiContext, ptr %879, i32 0, i32 38
  %881 = load i32, ptr %880, align 8, !tbaa !152
  %882 = icmp eq i32 %881, 0
  br i1 %882, label %883, label %897

883:                                              ; preds = %878
  %884 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %885 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  %886 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %884, ptr noundef nonnull align 4 dereferenceable(8) %885, i1 noundef zeroext true)
  br i1 %886, label %887, label %897

887:                                              ; preds = %883
  %888 = load ptr, ptr %7, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.ImGuiContext, ptr %888, i32 0, i32 3
  %890 = getelementptr inbounds %struct.ImGuiIO, ptr %889, i32 0, i32 65
  %891 = getelementptr inbounds [5 x i8], ptr %890, i64 0, i64 0
  %892 = load i8, ptr %891, align 1, !tbaa !79, !range !75, !noundef !76
  %893 = trunc i8 %892 to i1
  br i1 %893, label %894, label %897

894:                                              ; preds = %887
  %895 = load ptr, ptr %9, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.ImGuiWindow, ptr %895, i32 0, i32 27
  store i8 1, ptr %896, align 2, !tbaa !153
  br label %897

897:                                              ; preds = %894, %887, %883, %878, %873, %861
  %898 = load ptr, ptr %9, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.ImGuiWindow, ptr %898, i32 0, i32 27
  %900 = load i8, ptr %899, align 2, !tbaa !153, !range !75, !noundef !76
  %901 = trunc i8 %900 to i1
  br i1 %901, label %902, label %913

902:                                              ; preds = %897
  %903 = load ptr, ptr %9, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.ImGuiWindow, ptr %903, i32 0, i32 26
  %905 = load i8, ptr %904, align 1, !tbaa !154, !range !75, !noundef !76
  %906 = trunc i8 %905 to i1
  %907 = xor i1 %906, true
  %908 = load ptr, ptr %9, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.ImGuiWindow, ptr %908, i32 0, i32 26
  %910 = zext i1 %907 to i8
  store i8 %910, ptr %909, align 1, !tbaa !154
  %911 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %911)
  %912 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %912)
  br label %913

913:                                              ; preds = %902, %897
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #13
  br label %917

914:                                              ; preds = %857, %825
  %915 = load ptr, ptr %9, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.ImGuiWindow, ptr %915, i32 0, i32 26
  store i8 0, ptr %916, align 1, !tbaa !154
  br label %917

917:                                              ; preds = %914, %913
  %918 = load ptr, ptr %9, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.ImGuiWindow, ptr %918, i32 0, i32 27
  store i8 0, ptr %919, align 2, !tbaa !153
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #13
  %920 = load ptr, ptr %9, align 8, !tbaa !5
  %921 = load ptr, ptr %9, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.ImGuiWindow, ptr %921, i32 0, i32 7
  %923 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %920, ptr noundef nonnull align 4 dereferenceable(8) %922)
  store <2 x float> %923, ptr %31, align 4
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #13
  %924 = load i8, ptr %10, align 1, !tbaa !79, !range !75, !noundef !76
  %925 = trunc i8 %924 to i1
  %926 = zext i1 %925 to i8
  store i8 %926, ptr %32, align 1, !tbaa !79
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #13
  %927 = load i8, ptr %10, align 1, !tbaa !79, !range !75, !noundef !76
  %928 = trunc i8 %927 to i1
  %929 = zext i1 %928 to i8
  store i8 %929, ptr %33, align 1, !tbaa !79
  %930 = load i32, ptr %6, align 4, !tbaa !9
  %931 = and i32 %930, 64
  %932 = icmp ne i32 %931, 0
  br i1 %932, label %933, label %957

933:                                              ; preds = %917
  %934 = load ptr, ptr %9, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.ImGuiWindow, ptr %934, i32 0, i32 26
  %936 = load i8, ptr %935, align 1, !tbaa !154, !range !75, !noundef !76
  %937 = trunc i8 %936 to i1
  br i1 %937, label %957, label %938

938:                                              ; preds = %933
  %939 = load i8, ptr %20, align 1, !tbaa !79, !range !75, !noundef !76
  %940 = trunc i8 %939 to i1
  br i1 %940, label %947, label %941

941:                                              ; preds = %938
  %942 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 0
  %943 = load float, ptr %942, align 4, !tbaa !155
  %944 = load ptr, ptr %9, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.ImGuiWindow, ptr %944, i32 0, i32 5
  %946 = getelementptr inbounds %struct.ImVec2, ptr %945, i32 0, i32 0
  store float %943, ptr %946, align 8, !tbaa !135
  store i8 1, ptr %32, align 1, !tbaa !79
  br label %947

947:                                              ; preds = %941, %938
  %948 = load i8, ptr %21, align 1, !tbaa !79, !range !75, !noundef !76
  %949 = trunc i8 %948 to i1
  br i1 %949, label %956, label %950

950:                                              ; preds = %947
  %951 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 1
  %952 = load float, ptr %951, align 4, !tbaa !156
  %953 = load ptr, ptr %9, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.ImGuiWindow, ptr %953, i32 0, i32 5
  %955 = getelementptr inbounds %struct.ImVec2, ptr %954, i32 0, i32 1
  store float %952, ptr %955, align 4, !tbaa !137
  store i8 1, ptr %33, align 1, !tbaa !79
  br label %956

956:                                              ; preds = %950, %947
  br label %1038

957:                                              ; preds = %933, %917
  %958 = load ptr, ptr %9, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.ImGuiWindow, ptr %958, i32 0, i32 39
  %960 = load i8, ptr %959, align 4, !tbaa !157
  %961 = sext i8 %960 to i32
  %962 = icmp sgt i32 %961, 0
  br i1 %962, label %969, label %963

963:                                              ; preds = %957
  %964 = load ptr, ptr %9, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.ImGuiWindow, ptr %964, i32 0, i32 40
  %966 = load i8, ptr %965, align 1, !tbaa !158
  %967 = sext i8 %966 to i32
  %968 = icmp sgt i32 %967, 0
  br i1 %968, label %969, label %1037

969:                                              ; preds = %963, %957
  %970 = load i8, ptr %20, align 1, !tbaa !79, !range !75, !noundef !76
  %971 = trunc i8 %970 to i1
  br i1 %971, label %999, label %972

972:                                              ; preds = %969
  %973 = load ptr, ptr %9, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.ImGuiWindow, ptr %973, i32 0, i32 39
  %975 = load i8, ptr %974, align 4, !tbaa !157
  %976 = sext i8 %975 to i32
  %977 = icmp sgt i32 %976, 0
  br i1 %977, label %978, label %999

978:                                              ; preds = %972
  %979 = load ptr, ptr %9, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.ImGuiWindow, ptr %979, i32 0, i32 42
  %981 = load i8, ptr %980, align 1, !tbaa !159, !range !75, !noundef !76
  %982 = trunc i8 %981 to i1
  br i1 %982, label %983, label %991

983:                                              ; preds = %978
  %984 = load ptr, ptr %9, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.ImGuiWindow, ptr %984, i32 0, i32 5
  %986 = getelementptr inbounds %struct.ImVec2, ptr %985, i32 0, i32 0
  %987 = load float, ptr %986, align 8, !tbaa !135
  %988 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 0
  %989 = load float, ptr %988, align 4, !tbaa !155
  %990 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %987, float noundef %989)
  br label %994

991:                                              ; preds = %978
  %992 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 0
  %993 = load float, ptr %992, align 4, !tbaa !155
  br label %994

994:                                              ; preds = %991, %983
  %995 = phi float [ %990, %983 ], [ %993, %991 ]
  %996 = load ptr, ptr %9, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.ImGuiWindow, ptr %996, i32 0, i32 5
  %998 = getelementptr inbounds %struct.ImVec2, ptr %997, i32 0, i32 0
  store float %995, ptr %998, align 8, !tbaa !135
  store i8 1, ptr %32, align 1, !tbaa !79
  br label %999

999:                                              ; preds = %994, %972, %969
  %1000 = load i8, ptr %21, align 1, !tbaa !79, !range !75, !noundef !76
  %1001 = trunc i8 %1000 to i1
  br i1 %1001, label %1029, label %1002

1002:                                             ; preds = %999
  %1003 = load ptr, ptr %9, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.ImGuiWindow, ptr %1003, i32 0, i32 40
  %1005 = load i8, ptr %1004, align 1, !tbaa !158
  %1006 = sext i8 %1005 to i32
  %1007 = icmp sgt i32 %1006, 0
  br i1 %1007, label %1008, label %1029

1008:                                             ; preds = %1002
  %1009 = load ptr, ptr %9, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.ImGuiWindow, ptr %1009, i32 0, i32 42
  %1011 = load i8, ptr %1010, align 1, !tbaa !159, !range !75, !noundef !76
  %1012 = trunc i8 %1011 to i1
  br i1 %1012, label %1013, label %1021

1013:                                             ; preds = %1008
  %1014 = load ptr, ptr %9, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.ImGuiWindow, ptr %1014, i32 0, i32 5
  %1016 = getelementptr inbounds %struct.ImVec2, ptr %1015, i32 0, i32 1
  %1017 = load float, ptr %1016, align 4, !tbaa !137
  %1018 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 1
  %1019 = load float, ptr %1018, align 4, !tbaa !156
  %1020 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1017, float noundef %1019)
  br label %1024

1021:                                             ; preds = %1008
  %1022 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 1
  %1023 = load float, ptr %1022, align 4, !tbaa !156
  br label %1024

1024:                                             ; preds = %1021, %1013
  %1025 = phi float [ %1020, %1013 ], [ %1023, %1021 ]
  %1026 = load ptr, ptr %9, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.ImGuiWindow, ptr %1026, i32 0, i32 5
  %1028 = getelementptr inbounds %struct.ImVec2, ptr %1027, i32 0, i32 1
  store float %1025, ptr %1028, align 4, !tbaa !137
  store i8 1, ptr %33, align 1, !tbaa !79
  br label %1029

1029:                                             ; preds = %1024, %1002, %999
  %1030 = load ptr, ptr %9, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.ImGuiWindow, ptr %1030, i32 0, i32 26
  %1032 = load i8, ptr %1031, align 1, !tbaa !154, !range !75, !noundef !76
  %1033 = trunc i8 %1032 to i1
  br i1 %1033, label %1036, label %1034

1034:                                             ; preds = %1029
  %1035 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1035)
  br label %1036

1036:                                             ; preds = %1034, %1029
  br label %1037

1037:                                             ; preds = %1036, %963
  br label %1038

1038:                                             ; preds = %1037, %956
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %1039 = load ptr, ptr %9, align 8, !tbaa !5
  %1040 = load ptr, ptr %9, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.ImGuiWindow, ptr %1040, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 8 %1041, i64 8, i1 false), !tbaa.struct !109
  %1042 = load <2 x float>, ptr %35, align 4
  %1043 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %1039, <2 x float> %1042)
  store <2 x float> %1043, ptr %34, align 4
  %1044 = load ptr, ptr %9, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.ImGuiWindow, ptr %1044, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1045, ptr align 4 %34, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #13
  %1046 = load ptr, ptr %9, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.ImGuiWindow, ptr %1046, i32 0, i32 26
  %1048 = load i8, ptr %1047, align 1, !tbaa !154, !range !75, !noundef !76
  %1049 = trunc i8 %1048 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #13
  br i1 %1049, label %1050, label %1062

1050:                                             ; preds = %1038
  %1051 = load i32, ptr %6, align 4, !tbaa !9
  %1052 = and i32 %1051, 16777216
  %1053 = icmp ne i32 %1052, 0
  br i1 %1053, label %1062, label %1054

1054:                                             ; preds = %1050
  %1055 = load ptr, ptr %9, align 8, !tbaa !5
  %1056 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(993) %1055)
  %1057 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %37, i32 0, i32 0
  %1058 = extractvalue { <2 x float>, <2 x float> } %1056, 0
  store <2 x float> %1058, ptr %1057, align 4
  %1059 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %37, i32 0, i32 1
  %1060 = extractvalue { <2 x float>, <2 x float> } %1056, 1
  store <2 x float> %1060, ptr %1059, align 4
  %1061 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %1061, ptr %36, align 4
  br label %1065

1062:                                             ; preds = %1050, %1038
  %1063 = load ptr, ptr %9, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.ImGuiWindow, ptr %1063, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 8 %1064, i64 8, i1 false), !tbaa.struct !109
  br label %1065

1065:                                             ; preds = %1062, %1054
  %1066 = load ptr, ptr %9, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ImGuiWindow, ptr %1066, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1067, ptr align 4 %36, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #13
  %1068 = load ptr, ptr %9, align 8, !tbaa !5
  %1069 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(993) %1068)
  %1070 = load ptr, ptr %9, align 8, !tbaa !5
  %1071 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(993) %1070)
  %1072 = fadd float %1069, %1071
  store float %1072, ptr %38, align 4, !tbaa !110
  %1073 = load i8, ptr %13, align 1, !tbaa !79, !range !75, !noundef !76
  %1074 = trunc i8 %1073 to i1
  br i1 %1074, label %1075, label %1096

1075:                                             ; preds = %1065
  %1076 = load ptr, ptr %9, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ImGuiWindow, ptr %1076, i32 0, i32 43
  store i32 -1, ptr %1077, align 8, !tbaa !160
  %1078 = load i32, ptr %6, align 4, !tbaa !9
  %1079 = and i32 %1078, 67108864
  %1080 = icmp ne i32 %1079, 0
  br i1 %1080, label %1081, label %1095

1081:                                             ; preds = %1075
  %1082 = load i32, ptr %6, align 4, !tbaa !9
  %1083 = and i32 %1082, 134217728
  %1084 = icmp ne i32 %1083, 0
  br i1 %1084, label %1095, label %1085

1085:                                             ; preds = %1081
  %1086 = load i8, ptr %19, align 1, !tbaa !79, !range !75, !noundef !76
  %1087 = trunc i8 %1086 to i1
  br i1 %1087, label %1095, label %1088

1088:                                             ; preds = %1085
  %1089 = load ptr, ptr %7, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.ImGuiContext, ptr %1089, i32 0, i32 81
  %1091 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1090)
  %1092 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1091, i32 0, i32 5
  %1093 = load ptr, ptr %9, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.ImGuiWindow, ptr %1093, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1094, ptr align 8 %1092, i64 8, i1 false), !tbaa.struct !109
  br label %1095

1095:                                             ; preds = %1088, %1085, %1081, %1075
  br label %1096

1096:                                             ; preds = %1095, %1065
  %1097 = load i32, ptr %6, align 4, !tbaa !9
  %1098 = and i32 %1097, 16777216
  %1099 = icmp ne i32 %1098, 0
  br i1 %1099, label %1100, label %1141

1100:                                             ; preds = %1096
  %1101 = load ptr, ptr %17, align 8, !tbaa !5
  %1102 = icmp ne ptr %1101, null
  br i1 %1102, label %1103, label %1108

1103:                                             ; preds = %1100
  %1104 = load ptr, ptr %17, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.ImGuiWindow, ptr %1104, i32 0, i32 23
  %1106 = load i8, ptr %1105, align 2, !tbaa !122, !range !75, !noundef !76
  %1107 = trunc i8 %1106 to i1
  br label %1108

1108:                                             ; preds = %1103, %1100
  %1109 = phi i1 [ false, %1100 ], [ %1107, %1103 ]
  br i1 %1109, label %1110, label %1111

1110:                                             ; preds = %1108
  br label %1113

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

1112:                                             ; No predecessors!
  br label %1113

1113:                                             ; preds = %1112, %1110
  %1114 = load ptr, ptr %17, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.ImGuiWindow, ptr %1114, i32 0, i32 53
  %1116 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1115, i32 0, i32 29
  %1117 = getelementptr inbounds %struct.ImVector.3, ptr %1116, i32 0, i32 0
  %1118 = load i32, ptr %1117, align 8, !tbaa !161
  %1119 = trunc i32 %1118 to i16
  %1120 = load ptr, ptr %9, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.ImGuiWindow, ptr %1120, i32 0, i32 36
  store i16 %1119, ptr %1121, align 4, !tbaa !101
  %1122 = load ptr, ptr %17, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.ImGuiWindow, ptr %1122, i32 0, i32 53
  %1124 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1123, i32 0, i32 29
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1124, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %1125 = load i32, ptr %6, align 4, !tbaa !9
  %1126 = and i32 %1125, 67108864
  %1127 = icmp ne i32 %1126, 0
  br i1 %1127, label %1140, label %1128

1128:                                             ; preds = %1113
  %1129 = load i8, ptr %19, align 1, !tbaa !79, !range !75, !noundef !76
  %1130 = trunc i8 %1129 to i1
  br i1 %1130, label %1140, label %1131

1131:                                             ; preds = %1128
  %1132 = load i8, ptr %23, align 1, !tbaa !79, !range !75, !noundef !76
  %1133 = trunc i8 %1132 to i1
  br i1 %1133, label %1140, label %1134

1134:                                             ; preds = %1131
  %1135 = load ptr, ptr %17, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.ImGuiWindow, ptr %1135, i32 0, i32 53
  %1137 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1136, i32 0, i32 0
  %1138 = load ptr, ptr %9, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.ImGuiWindow, ptr %1138, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1139, ptr align 8 %1137, i64 8, i1 false), !tbaa.struct !109
  br label %1140

1140:                                             ; preds = %1134, %1131, %1128, %1113
  br label %1141

1141:                                             ; preds = %1140, %1096
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #13
  %1142 = load ptr, ptr %9, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.ImGuiWindow, ptr %1142, i32 0, i32 49
  %1144 = getelementptr inbounds %struct.ImVec2, ptr %1143, i32 0, i32 0
  %1145 = load float, ptr %1144, align 4, !tbaa !162
  %1146 = fcmp une float %1145, 0x47EFFFFFE0000000
  br i1 %1146, label %1147, label %1153

1147:                                             ; preds = %1141
  %1148 = load ptr, ptr %9, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.ImGuiWindow, ptr %1148, i32 0, i32 45
  %1150 = load i8, ptr %1149, align 1, !tbaa !91
  %1151 = sext i8 %1150 to i32
  %1152 = icmp eq i32 %1151, 0
  br label %1153

1153:                                             ; preds = %1147, %1141
  %1154 = phi i1 [ false, %1141 ], [ %1152, %1147 ]
  %1155 = zext i1 %1154 to i8
  store i8 %1155, ptr %39, align 1, !tbaa !79
  %1156 = load i8, ptr %39, align 1, !tbaa !79, !range !75, !noundef !76
  %1157 = trunc i8 %1156 to i1
  br i1 %1157, label %1158, label %1168

1158:                                             ; preds = %1153
  %1159 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  %1160 = load ptr, ptr %9, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.ImGuiWindow, ptr %1160, i32 0, i32 49
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #13
  %1162 = load ptr, ptr %9, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiWindow, ptr %1162, i32 0, i32 4
  %1164 = load ptr, ptr %9, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.ImGuiWindow, ptr %1164, i32 0, i32 50
  %1166 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1163, ptr noundef nonnull align 4 dereferenceable(8) %1165)
  store <2 x float> %1166, ptr %41, align 4
  %1167 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1161, ptr noundef nonnull align 4 dereferenceable(8) %41)
  store <2 x float> %1167, ptr %40, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1159, ptr noundef nonnull align 4 dereferenceable(8) %40, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #13
  br label %1210

1168:                                             ; preds = %1153
  %1169 = load i32, ptr %6, align 4, !tbaa !9
  %1170 = and i32 %1169, 268435456
  %1171 = icmp ne i32 %1170, 0
  br i1 %1171, label %1172, label %1177

1172:                                             ; preds = %1168
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #13
  %1173 = load ptr, ptr %9, align 8, !tbaa !5
  %1174 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1173)
  store <2 x float> %1174, ptr %42, align 4
  %1175 = load ptr, ptr %9, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.ImGuiWindow, ptr %1175, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1176, ptr align 4 %42, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #13
  br label %1209

1177:                                             ; preds = %1168
  %1178 = load i32, ptr %6, align 4, !tbaa !9
  %1179 = and i32 %1178, 67108864
  %1180 = icmp ne i32 %1179, 0
  br i1 %1180, label %1181, label %1192

1181:                                             ; preds = %1177
  %1182 = load i8, ptr %19, align 1, !tbaa !79, !range !75, !noundef !76
  %1183 = trunc i8 %1182 to i1
  br i1 %1183, label %1192, label %1184

1184:                                             ; preds = %1181
  %1185 = load i8, ptr %14, align 1, !tbaa !79, !range !75, !noundef !76
  %1186 = trunc i8 %1185 to i1
  br i1 %1186, label %1187, label %1192

1187:                                             ; preds = %1184
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %1188 = load ptr, ptr %9, align 8, !tbaa !5
  %1189 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1188)
  store <2 x float> %1189, ptr %43, align 4
  %1190 = load ptr, ptr %9, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.ImGuiWindow, ptr %1190, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1191, ptr align 4 %43, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  br label %1208

1192:                                             ; preds = %1184, %1181, %1177
  %1193 = load i32, ptr %6, align 4, !tbaa !9
  %1194 = and i32 %1193, 33554432
  %1195 = icmp ne i32 %1194, 0
  br i1 %1195, label %1196, label %1207

1196:                                             ; preds = %1192
  %1197 = load i8, ptr %19, align 1, !tbaa !79, !range !75, !noundef !76
  %1198 = trunc i8 %1197 to i1
  br i1 %1198, label %1207, label %1199

1199:                                             ; preds = %1196
  %1200 = load i8, ptr %23, align 1, !tbaa !79, !range !75, !noundef !76
  %1201 = trunc i8 %1200 to i1
  br i1 %1201, label %1207, label %1202

1202:                                             ; preds = %1199
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %1203 = load ptr, ptr %9, align 8, !tbaa !5
  %1204 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1203)
  store <2 x float> %1204, ptr %44, align 4
  %1205 = load ptr, ptr %9, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.ImGuiWindow, ptr %1205, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1206, ptr align 4 %44, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  br label %1207

1207:                                             ; preds = %1202, %1199, %1196, %1192
  br label %1208

1208:                                             ; preds = %1207, %1187
  br label %1209

1209:                                             ; preds = %1208, %1172
  br label %1210

1210:                                             ; preds = %1209, %1158
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #13
  %1211 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %1212 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %45, i32 0, i32 0
  %1213 = extractvalue { <2 x float>, <2 x float> } %1211, 0
  store <2 x float> %1213, ptr %1212, align 4
  %1214 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %45, i32 0, i32 1
  %1215 = extractvalue { <2 x float>, <2 x float> } %1211, 1
  store <2 x float> %1215, ptr %1214, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #13
  %1216 = load ptr, ptr %8, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.ImGuiStyle, ptr %1216, i32 0, i32 31
  %1218 = load ptr, ptr %8, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.ImGuiStyle, ptr %1218, i32 0, i32 32
  %1220 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1217, ptr noundef nonnull align 4 dereferenceable(8) %1219)
  store <2 x float> %1220, ptr %46, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #13
  %1221 = getelementptr inbounds %struct.ImRect, ptr %45, i32 0, i32 0
  %1222 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1221, ptr noundef nonnull align 4 dereferenceable(8) %46)
  store <2 x float> %1222, ptr %48, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #13
  %1223 = getelementptr inbounds %struct.ImRect, ptr %45, i32 0, i32 1
  %1224 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1223, ptr noundef nonnull align 4 dereferenceable(8) %46)
  store <2 x float> %1224, ptr %49, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %47, ptr noundef nonnull align 4 dereferenceable(8) %48, ptr noundef nonnull align 4 dereferenceable(8) %49)
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #13
  %1225 = load i8, ptr %19, align 1, !tbaa !79, !range !75, !noundef !76
  %1226 = trunc i8 %1225 to i1
  br i1 %1226, label %1252, label %1227

1227:                                             ; preds = %1210
  %1228 = load i32, ptr %6, align 4, !tbaa !9
  %1229 = and i32 %1228, 16777216
  %1230 = icmp ne i32 %1229, 0
  br i1 %1230, label %1252, label %1231

1231:                                             ; preds = %1227
  %1232 = load ptr, ptr %9, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.ImGuiWindow, ptr %1232, i32 0, i32 39
  %1234 = load i8, ptr %1233, align 4, !tbaa !157
  %1235 = sext i8 %1234 to i32
  %1236 = icmp sle i32 %1235, 0
  br i1 %1236, label %1237, label %1252

1237:                                             ; preds = %1231
  %1238 = load ptr, ptr %9, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.ImGuiWindow, ptr %1238, i32 0, i32 40
  %1240 = load i8, ptr %1239, align 1, !tbaa !158
  %1241 = sext i8 %1240 to i32
  %1242 = icmp sle i32 %1241, 0
  br i1 %1242, label %1243, label %1252

1243:                                             ; preds = %1237
  %1244 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %45)
  %1245 = fcmp ogt float %1244, 0.000000e+00
  br i1 %1245, label %1246, label %1251

1246:                                             ; preds = %1243
  %1247 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %45)
  %1248 = fcmp ogt float %1247, 0.000000e+00
  br i1 %1248, label %1249, label %1251

1249:                                             ; preds = %1246
  %1250 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRect(ptr noundef %1250, ptr noundef nonnull align 4 dereferenceable(16) %47)
  br label %1251

1251:                                             ; preds = %1249, %1246, %1243
  br label %1252

1252:                                             ; preds = %1251, %1237, %1231, %1227, %1210
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #13
  %1253 = load ptr, ptr %9, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct.ImGuiWindow, ptr %1253, i32 0, i32 3
  %1255 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1254)
  store <2 x float> %1255, ptr %50, align 4
  %1256 = load ptr, ptr %9, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.ImGuiWindow, ptr %1256, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1257, ptr align 4 %50, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  %1258 = load i32, ptr %6, align 4, !tbaa !9
  %1259 = and i32 %1258, 16777216
  %1260 = icmp ne i32 %1259, 0
  br i1 %1260, label %1261, label %1265

1261:                                             ; preds = %1252
  %1262 = load ptr, ptr %8, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.ImGuiStyle, ptr %1262, i32 0, i32 7
  %1264 = load float, ptr %1263, align 4, !tbaa !163
  br label %1283

1265:                                             ; preds = %1252
  %1266 = load i32, ptr %6, align 4, !tbaa !9
  %1267 = and i32 %1266, 67108864
  %1268 = icmp ne i32 %1267, 0
  br i1 %1268, label %1269, label %1277

1269:                                             ; preds = %1265
  %1270 = load i32, ptr %6, align 4, !tbaa !9
  %1271 = and i32 %1270, 134217728
  %1272 = icmp ne i32 %1271, 0
  br i1 %1272, label %1277, label %1273

1273:                                             ; preds = %1269
  %1274 = load ptr, ptr %8, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.ImGuiStyle, ptr %1274, i32 0, i32 9
  %1276 = load float, ptr %1275, align 4, !tbaa !164
  br label %1281

1277:                                             ; preds = %1269, %1265
  %1278 = load ptr, ptr %8, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.ImGuiStyle, ptr %1278, i32 0, i32 2
  %1280 = load float, ptr %1279, align 4, !tbaa !165
  br label %1281

1281:                                             ; preds = %1277, %1273
  %1282 = phi float [ %1276, %1273 ], [ %1280, %1277 ]
  br label %1283

1283:                                             ; preds = %1281, %1261
  %1284 = phi float [ %1264, %1261 ], [ %1282, %1281 ]
  %1285 = load ptr, ptr %9, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.ImGuiWindow, ptr %1285, i32 0, i32 10
  store float %1284, ptr %1286, align 8, !tbaa !166
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #13
  store i8 0, ptr %51, align 1, !tbaa !79
  %1287 = load i8, ptr %13, align 1, !tbaa !79, !range !75, !noundef !76
  %1288 = trunc i8 %1287 to i1
  br i1 %1288, label %1289, label %1305

1289:                                             ; preds = %1283
  %1290 = load i32, ptr %6, align 4, !tbaa !9
  %1291 = and i32 %1290, 4096
  %1292 = icmp ne i32 %1291, 0
  br i1 %1292, label %1305, label %1293

1293:                                             ; preds = %1289
  %1294 = load i32, ptr %6, align 4, !tbaa !9
  %1295 = and i32 %1294, 67108864
  %1296 = icmp ne i32 %1295, 0
  br i1 %1296, label %1297, label %1298

1297:                                             ; preds = %1293
  store i8 1, ptr %51, align 1, !tbaa !79
  br label %1304

1298:                                             ; preds = %1293
  %1299 = load i32, ptr %6, align 4, !tbaa !9
  %1300 = and i32 %1299, 50331648
  %1301 = icmp eq i32 %1300, 0
  br i1 %1301, label %1302, label %1303

1302:                                             ; preds = %1298
  store i8 1, ptr %51, align 1, !tbaa !79
  br label %1303

1303:                                             ; preds = %1302, %1298
  br label %1304

1304:                                             ; preds = %1303, %1297
  br label %1305

1305:                                             ; preds = %1304, %1289, %1283
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #13
  store i32 -1, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #13
  call void @llvm.memset.p0.i64(ptr align 16 %53, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #13
  %1306 = load ptr, ptr %7, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.ImGuiContext, ptr %1306, i32 0, i32 3
  %1308 = getelementptr inbounds %struct.ImGuiIO, ptr %1307, i32 0, i32 23
  %1309 = load i8, ptr %1308, align 4, !tbaa !167, !range !75, !noundef !76
  %1310 = trunc i8 %1309 to i1
  %1311 = zext i1 %1310 to i64
  %1312 = select i1 %1310, i32 2, i32 1
  store i32 %1312, ptr %54, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #13
  %1313 = load ptr, ptr %7, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.ImGuiContext, ptr %1313, i32 0, i32 7
  %1315 = load float, ptr %1314, align 8, !tbaa !168
  %1316 = fmul float %1315, 0x3FF19999A0000000
  %1317 = load ptr, ptr %9, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.ImGuiWindow, ptr %1317, i32 0, i32 10
  %1319 = load float, ptr %1318, align 8, !tbaa !166
  %1320 = fadd float %1319, 1.000000e+00
  %1321 = load ptr, ptr %7, align 8, !tbaa !5
  %1322 = getelementptr inbounds %struct.ImGuiContext, ptr %1321, i32 0, i32 7
  %1323 = load float, ptr %1322, align 8, !tbaa !168
  %1324 = call float @llvm.fmuladd.f32(float %1323, float 0x3FC99999A0000000, float %1320)
  %1325 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1316, float noundef %1324)
  %1326 = fptosi float %1325 to i32
  %1327 = sitofp i32 %1326 to float
  store float %1327, ptr %55, align 4, !tbaa !110
  %1328 = load ptr, ptr %9, align 8, !tbaa !5
  %1329 = getelementptr inbounds %struct.ImGuiWindow, ptr %1328, i32 0, i32 26
  %1330 = load i8, ptr %1329, align 1, !tbaa !154, !range !75, !noundef !76
  %1331 = trunc i8 %1330 to i1
  br i1 %1331, label %1339, label %1332

1332:                                             ; preds = %1305
  %1333 = load ptr, ptr %9, align 8, !tbaa !5
  %1334 = load i32, ptr %54, align 4, !tbaa !9
  %1335 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 0
  %1336 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef %1333, ptr noundef nonnull align 4 dereferenceable(8) %31, ptr noundef %52, i32 noundef %1334, ptr noundef %1335, ptr noundef nonnull align 4 dereferenceable(16) %47)
  br i1 %1336, label %1337, label %1338

1337:                                             ; preds = %1332
  store i8 1, ptr %33, align 1, !tbaa !79
  store i8 1, ptr %32, align 1, !tbaa !79
  br label %1338

1338:                                             ; preds = %1337, %1332
  br label %1339

1339:                                             ; preds = %1338, %1305
  %1340 = load i32, ptr %52, align 4, !tbaa !9
  %1341 = trunc i32 %1340 to i8
  %1342 = load ptr, ptr %9, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.ImGuiWindow, ptr %1342, i32 0, i32 33
  store i8 %1341, ptr %1343, align 8, !tbaa !169
  %1344 = load ptr, ptr %9, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.ImGuiWindow, ptr %1344, i32 0, i32 26
  %1346 = load i8, ptr %1345, align 1, !tbaa !154, !range !75, !noundef !76
  %1347 = trunc i8 %1346 to i1
  br i1 %1347, label %1500, label %1348

1348:                                             ; preds = %1339
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %1349 = load ptr, ptr %9, align 8, !tbaa !5
  %1350 = getelementptr inbounds %struct.ImGuiWindow, ptr %1349, i32 0, i32 5
  %1351 = getelementptr inbounds %struct.ImVec2, ptr %1350, i32 0, i32 0
  %1352 = load float, ptr %1351, align 8, !tbaa !135
  %1353 = load ptr, ptr %9, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.ImGuiWindow, ptr %1353, i32 0, i32 5
  %1355 = getelementptr inbounds %struct.ImVec2, ptr %1354, i32 0, i32 1
  %1356 = load float, ptr %1355, align 4, !tbaa !137
  %1357 = load float, ptr %38, align 4, !tbaa !110
  %1358 = fsub float %1356, %1357
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %56, float noundef %1352, float noundef %1358)
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %1359 = load ptr, ptr %9, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.ImGuiWindow, ptr %1359, i32 0, i32 55
  %1361 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1360)
  store <2 x float> %1361, ptr %58, align 4
  %1362 = load ptr, ptr %9, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.ImGuiWindow, ptr %1362, i32 0, i32 20
  %1364 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %58, ptr noundef nonnull align 4 dereferenceable(8) %1363)
  store <2 x float> %1364, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #13
  %1365 = load i8, ptr %10, align 1, !tbaa !79, !range !75, !noundef !76
  %1366 = trunc i8 %1365 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #13
  br i1 %1366, label %1367, label %1368

1367:                                             ; preds = %1348
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %59, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %1375

1368:                                             ; preds = %1348
  %1369 = load ptr, ptr %9, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.ImGuiWindow, ptr %1369, i32 0, i32 6
  %1371 = load ptr, ptr %9, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.ImGuiWindow, ptr %1371, i32 0, i32 9
  %1373 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1372, float noundef 2.000000e+00)
  store <2 x float> %1373, ptr %60, align 4
  %1374 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1370, ptr noundef nonnull align 4 dereferenceable(8) %60)
  store <2 x float> %1374, ptr %59, align 4
  br label %1375

1375:                                             ; preds = %1368, %1367
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  %1376 = load i8, ptr %32, align 1, !tbaa !79, !range !75, !noundef !76
  %1377 = trunc i8 %1376 to i1
  br i1 %1377, label %1378, label %1381

1378:                                             ; preds = %1375
  %1379 = getelementptr inbounds %struct.ImVec2, ptr %56, i32 0, i32 0
  %1380 = load float, ptr %1379, align 4, !tbaa !155
  br label %1384

1381:                                             ; preds = %1375
  %1382 = getelementptr inbounds %struct.ImVec2, ptr %57, i32 0, i32 0
  %1383 = load float, ptr %1382, align 4, !tbaa !155
  br label %1384

1384:                                             ; preds = %1381, %1378
  %1385 = phi float [ %1380, %1378 ], [ %1383, %1381 ]
  store float %1385, ptr %61, align 4, !tbaa !110
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #13
  %1386 = load i8, ptr %33, align 1, !tbaa !79, !range !75, !noundef !76
  %1387 = trunc i8 %1386 to i1
  br i1 %1387, label %1388, label %1391

1388:                                             ; preds = %1384
  %1389 = getelementptr inbounds %struct.ImVec2, ptr %56, i32 0, i32 1
  %1390 = load float, ptr %1389, align 4, !tbaa !156
  br label %1394

1391:                                             ; preds = %1384
  %1392 = getelementptr inbounds %struct.ImVec2, ptr %57, i32 0, i32 1
  %1393 = load float, ptr %1392, align 4, !tbaa !156
  br label %1394

1394:                                             ; preds = %1391, %1388
  %1395 = phi float [ %1390, %1388 ], [ %1393, %1391 ]
  store float %1395, ptr %62, align 4, !tbaa !110
  %1396 = load i32, ptr %6, align 4, !tbaa !9
  %1397 = and i32 %1396, 16384
  %1398 = icmp ne i32 %1397, 0
  br i1 %1398, label %1411, label %1399

1399:                                             ; preds = %1394
  %1400 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 1
  %1401 = load float, ptr %1400, align 4, !tbaa !156
  %1402 = load float, ptr %62, align 4, !tbaa !110
  %1403 = fcmp ogt float %1401, %1402
  br i1 %1403, label %1404, label %1409

1404:                                             ; preds = %1399
  %1405 = load i32, ptr %6, align 4, !tbaa !9
  %1406 = and i32 %1405, 8
  %1407 = icmp ne i32 %1406, 0
  %1408 = xor i1 %1407, true
  br label %1409

1409:                                             ; preds = %1404, %1399
  %1410 = phi i1 [ false, %1399 ], [ %1408, %1404 ]
  br label %1411

1411:                                             ; preds = %1409, %1394
  %1412 = phi i1 [ true, %1394 ], [ %1410, %1409 ]
  %1413 = load ptr, ptr %9, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.ImGuiWindow, ptr %1413, i32 0, i32 22
  %1415 = zext i1 %1412 to i8
  store i8 %1415, ptr %1414, align 1, !tbaa !170
  %1416 = load i32, ptr %6, align 4, !tbaa !9
  %1417 = and i32 %1416, 32768
  %1418 = icmp ne i32 %1417, 0
  br i1 %1418, label %1446, label %1419

1419:                                             ; preds = %1411
  %1420 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 0
  %1421 = load float, ptr %1420, align 4, !tbaa !155
  %1422 = load float, ptr %61, align 4, !tbaa !110
  %1423 = load ptr, ptr %9, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.ImGuiWindow, ptr %1423, i32 0, i32 22
  %1425 = load i8, ptr %1424, align 1, !tbaa !170, !range !75, !noundef !76
  %1426 = trunc i8 %1425 to i1
  br i1 %1426, label %1427, label %1431

1427:                                             ; preds = %1419
  %1428 = load ptr, ptr %8, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.ImGuiStyle, ptr %1428, i32 0, i32 20
  %1430 = load float, ptr %1429, align 4, !tbaa !171
  br label %1432

1431:                                             ; preds = %1419
  br label %1432

1432:                                             ; preds = %1431, %1427
  %1433 = phi float [ %1430, %1427 ], [ 0.000000e+00, %1431 ]
  %1434 = fsub float %1422, %1433
  %1435 = fcmp ogt float %1421, %1434
  br i1 %1435, label %1436, label %1444

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

1440:                                             ; preds = %1436
  %1441 = load i32, ptr %6, align 4, !tbaa !9
  %1442 = and i32 %1441, 2048
  %1443 = icmp ne i32 %1442, 0
  br label %1444

1444:                                             ; preds = %1440, %1436, %1432
  %1445 = phi i1 [ false, %1436 ], [ false, %1432 ], [ %1443, %1440 ]
  br label %1446

1446:                                             ; preds = %1444, %1411
  %1447 = phi i1 [ true, %1411 ], [ %1445, %1444 ]
  %1448 = load ptr, ptr %9, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.ImGuiWindow, ptr %1448, i32 0, i32 21
  %1450 = zext i1 %1447 to i8
  store i8 %1450, ptr %1449, align 4, !tbaa !172
  %1451 = load ptr, ptr %9, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.ImGuiWindow, ptr %1451, i32 0, i32 21
  %1453 = load i8, ptr %1452, align 4, !tbaa !172, !range !75, !noundef !76
  %1454 = trunc i8 %1453 to i1
  br i1 %1454, label %1455, label %1475

1455:                                             ; preds = %1446
  %1456 = load ptr, ptr %9, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.ImGuiWindow, ptr %1456, i32 0, i32 22
  %1458 = load i8, ptr %1457, align 1, !tbaa !170, !range !75, !noundef !76
  %1459 = trunc i8 %1458 to i1
  br i1 %1459, label %1475, label %1460

1460:                                             ; preds = %1455
  %1461 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 1
  %1462 = load float, ptr %1461, align 4, !tbaa !156
  %1463 = load float, ptr %62, align 4, !tbaa !110
  %1464 = fcmp ogt float %1462, %1463
  br i1 %1464, label %1465, label %1470

1465:                                             ; preds = %1460
  %1466 = load i32, ptr %6, align 4, !tbaa !9
  %1467 = and i32 %1466, 8
  %1468 = icmp ne i32 %1467, 0
  %1469 = xor i1 %1468, true
  br label %1470

1470:                                             ; preds = %1465, %1460
  %1471 = phi i1 [ false, %1460 ], [ %1469, %1465 ]
  %1472 = load ptr, ptr %9, align 8, !tbaa !5
  %1473 = getelementptr inbounds %struct.ImGuiWindow, ptr %1472, i32 0, i32 22
  %1474 = zext i1 %1471 to i8
  store i8 %1474, ptr %1473, align 1, !tbaa !170
  br label %1475

1475:                                             ; preds = %1470, %1455, %1446
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  %1476 = load ptr, ptr %9, align 8, !tbaa !5
  %1477 = getelementptr inbounds %struct.ImGuiWindow, ptr %1476, i32 0, i32 22
  %1478 = load i8, ptr %1477, align 1, !tbaa !170, !range !75, !noundef !76
  %1479 = trunc i8 %1478 to i1
  br i1 %1479, label %1480, label %1484

1480:                                             ; preds = %1475
  %1481 = load ptr, ptr %8, align 8, !tbaa !5
  %1482 = getelementptr inbounds %struct.ImGuiStyle, ptr %1481, i32 0, i32 20
  %1483 = load float, ptr %1482, align 4, !tbaa !171
  br label %1485

1484:                                             ; preds = %1475
  br label %1485

1485:                                             ; preds = %1484, %1480
  %1486 = phi float [ %1483, %1480 ], [ 0.000000e+00, %1484 ]
  %1487 = load ptr, ptr %9, align 8, !tbaa !5
  %1488 = getelementptr inbounds %struct.ImGuiWindow, ptr %1487, i32 0, i32 21
  %1489 = load i8, ptr %1488, align 4, !tbaa !172, !range !75, !noundef !76
  %1490 = trunc i8 %1489 to i1
  br i1 %1490, label %1491, label %1495

1491:                                             ; preds = %1485
  %1492 = load ptr, ptr %8, align 8, !tbaa !5
  %1493 = getelementptr inbounds %struct.ImGuiStyle, ptr %1492, i32 0, i32 20
  %1494 = load float, ptr %1493, align 4, !tbaa !171
  br label %1496

1495:                                             ; preds = %1485
  br label %1496

1496:                                             ; preds = %1495, %1491
  %1497 = phi float [ %1494, %1491 ], [ 0.000000e+00, %1495 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %63, float noundef %1486, float noundef %1497)
  %1498 = load ptr, ptr %9, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.ImGuiWindow, ptr %1498, i32 0, i32 20
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1499, ptr align 4 %63, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  br label %1500

1500:                                             ; preds = %1496, %1339
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #13
  %1501 = load i32, ptr %6, align 4, !tbaa !9
  %1502 = and i32 %1501, 16777216
  %1503 = icmp ne i32 %1502, 0
  br i1 %1503, label %1504, label %1514

1504:                                             ; preds = %1500
  %1505 = load i32, ptr %6, align 4, !tbaa !9
  %1506 = and i32 %1505, 67108864
  %1507 = icmp ne i32 %1506, 0
  br i1 %1507, label %1514, label %1508

1508:                                             ; preds = %1504
  %1509 = load i8, ptr %23, align 1, !tbaa !79, !range !75, !noundef !76
  %1510 = trunc i8 %1509 to i1
  br i1 %1510, label %1514, label %1511

1511:                                             ; preds = %1508
  %1512 = load ptr, ptr %17, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.ImGuiWindow, ptr %1512, i32 0, i32 59
  br label %1515

1514:                                             ; preds = %1508, %1504, %1500
  br label %1515

1515:                                             ; preds = %1514, %1511
  %1516 = phi ptr [ %1513, %1511 ], [ %45, %1514 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %1516, i64 16, i1 false), !tbaa.struct !124
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #13
  %1517 = load ptr, ptr %9, align 8, !tbaa !5
  %1518 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(993) %1517)
  %1519 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %65, i32 0, i32 0
  %1520 = extractvalue { <2 x float>, <2 x float> } %1518, 0
  store <2 x float> %1520, ptr %1519, align 4
  %1521 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %65, i32 0, i32 1
  %1522 = extractvalue { <2 x float>, <2 x float> } %1518, 1
  store <2 x float> %1522, ptr %1521, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #13
  %1523 = load ptr, ptr %9, align 8, !tbaa !5
  %1524 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(993) %1523)
  %1525 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %66, i32 0, i32 0
  %1526 = extractvalue { <2 x float>, <2 x float> } %1524, 0
  store <2 x float> %1526, ptr %1525, align 4
  %1527 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %66, i32 0, i32 1
  %1528 = extractvalue { <2 x float>, <2 x float> } %1524, 1
  store <2 x float> %1528, ptr %1527, align 4
  %1529 = load ptr, ptr %9, align 8, !tbaa !5
  %1530 = getelementptr inbounds %struct.ImGuiWindow, ptr %1529, i32 0, i32 54
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1530, ptr align 4 %65, i64 16, i1 false), !tbaa.struct !124
  %1531 = load ptr, ptr %9, align 8, !tbaa !5
  %1532 = getelementptr inbounds %struct.ImGuiWindow, ptr %1531, i32 0, i32 54
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1532, ptr noundef nonnull align 4 dereferenceable(16) %64)
  %1533 = load ptr, ptr %9, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct.ImGuiWindow, ptr %1533, i32 0, i32 3
  %1535 = getelementptr inbounds %struct.ImVec2, ptr %1534, i32 0, i32 0
  %1536 = load float, ptr %1535, align 8, !tbaa !173
  %1537 = load ptr, ptr %9, align 8, !tbaa !5
  %1538 = getelementptr inbounds %struct.ImGuiWindow, ptr %1537, i32 0, i32 55
  %1539 = getelementptr inbounds %struct.ImRect, ptr %1538, i32 0, i32 0
  %1540 = getelementptr inbounds %struct.ImVec2, ptr %1539, i32 0, i32 0
  store float %1536, ptr %1540, align 8, !tbaa !174
  %1541 = load ptr, ptr %9, align 8, !tbaa !5
  %1542 = getelementptr inbounds %struct.ImGuiWindow, ptr %1541, i32 0, i32 3
  %1543 = getelementptr inbounds %struct.ImVec2, ptr %1542, i32 0, i32 1
  %1544 = load float, ptr %1543, align 4, !tbaa !175
  %1545 = load float, ptr %38, align 4, !tbaa !110
  %1546 = fadd float %1544, %1545
  %1547 = load ptr, ptr %9, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.ImGuiWindow, ptr %1547, i32 0, i32 55
  %1549 = getelementptr inbounds %struct.ImRect, ptr %1548, i32 0, i32 0
  %1550 = getelementptr inbounds %struct.ImVec2, ptr %1549, i32 0, i32 1
  store float %1546, ptr %1550, align 4, !tbaa !176
  %1551 = load ptr, ptr %9, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.ImGuiWindow, ptr %1551, i32 0, i32 3
  %1553 = getelementptr inbounds %struct.ImVec2, ptr %1552, i32 0, i32 0
  %1554 = load float, ptr %1553, align 8, !tbaa !173
  %1555 = load ptr, ptr %9, align 8, !tbaa !5
  %1556 = getelementptr inbounds %struct.ImGuiWindow, ptr %1555, i32 0, i32 4
  %1557 = getelementptr inbounds %struct.ImVec2, ptr %1556, i32 0, i32 0
  %1558 = load float, ptr %1557, align 8, !tbaa !136
  %1559 = fadd float %1554, %1558
  %1560 = load ptr, ptr %9, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.ImGuiWindow, ptr %1560, i32 0, i32 20
  %1562 = getelementptr inbounds %struct.ImVec2, ptr %1561, i32 0, i32 0
  %1563 = load float, ptr %1562, align 4, !tbaa !177
  %1564 = fsub float %1559, %1563
  %1565 = load ptr, ptr %9, align 8, !tbaa !5
  %1566 = getelementptr inbounds %struct.ImGuiWindow, ptr %1565, i32 0, i32 55
  %1567 = getelementptr inbounds %struct.ImRect, ptr %1566, i32 0, i32 1
  %1568 = getelementptr inbounds %struct.ImVec2, ptr %1567, i32 0, i32 0
  store float %1564, ptr %1568, align 8, !tbaa !178
  %1569 = load ptr, ptr %9, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.ImGuiWindow, ptr %1569, i32 0, i32 3
  %1571 = getelementptr inbounds %struct.ImVec2, ptr %1570, i32 0, i32 1
  %1572 = load float, ptr %1571, align 4, !tbaa !175
  %1573 = load ptr, ptr %9, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.ImGuiWindow, ptr %1573, i32 0, i32 4
  %1575 = getelementptr inbounds %struct.ImVec2, ptr %1574, i32 0, i32 1
  %1576 = load float, ptr %1575, align 4, !tbaa !138
  %1577 = fadd float %1572, %1576
  %1578 = load ptr, ptr %9, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.ImGuiWindow, ptr %1578, i32 0, i32 20
  %1580 = getelementptr inbounds %struct.ImVec2, ptr %1579, i32 0, i32 1
  %1581 = load float, ptr %1580, align 4, !tbaa !179
  %1582 = fsub float %1577, %1581
  %1583 = load ptr, ptr %9, align 8, !tbaa !5
  %1584 = getelementptr inbounds %struct.ImGuiWindow, ptr %1583, i32 0, i32 55
  %1585 = getelementptr inbounds %struct.ImRect, ptr %1584, i32 0, i32 1
  %1586 = getelementptr inbounds %struct.ImVec2, ptr %1585, i32 0, i32 1
  store float %1582, ptr %1586, align 4, !tbaa !180
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #13
  %1587 = load i32, ptr %6, align 4, !tbaa !9
  %1588 = and i32 %1587, 1024
  %1589 = icmp ne i32 %1588, 0
  br i1 %1589, label %1594, label %1590

1590:                                             ; preds = %1515
  %1591 = load i32, ptr %6, align 4, !tbaa !9
  %1592 = and i32 %1591, 1
  %1593 = icmp ne i32 %1592, 0
  br i1 %1593, label %1598, label %1594

1594:                                             ; preds = %1590, %1515
  %1595 = load ptr, ptr %8, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.ImGuiStyle, ptr %1595, i32 0, i32 13
  %1597 = load float, ptr %1596, align 4, !tbaa !181
  br label %1602

1598:                                             ; preds = %1590
  %1599 = load ptr, ptr %9, align 8, !tbaa !5
  %1600 = getelementptr inbounds %struct.ImGuiWindow, ptr %1599, i32 0, i32 11
  %1601 = load float, ptr %1600, align 4, !tbaa !140
  br label %1602

1602:                                             ; preds = %1598, %1594
  %1603 = phi float [ %1597, %1594 ], [ %1601, %1598 ]
  store float %1603, ptr %67, align 4, !tbaa !110
  %1604 = load ptr, ptr %9, align 8, !tbaa !5
  %1605 = getelementptr inbounds %struct.ImGuiWindow, ptr %1604, i32 0, i32 55
  %1606 = getelementptr inbounds %struct.ImRect, ptr %1605, i32 0, i32 0
  %1607 = getelementptr inbounds %struct.ImVec2, ptr %1606, i32 0, i32 0
  %1608 = load float, ptr %1607, align 8, !tbaa !174
  %1609 = fadd float 5.000000e-01, %1608
  %1610 = load ptr, ptr %9, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.ImGuiWindow, ptr %1610, i32 0, i32 9
  %1612 = getelementptr inbounds %struct.ImVec2, ptr %1611, i32 0, i32 0
  %1613 = load float, ptr %1612, align 8, !tbaa !144
  %1614 = fmul float %1613, 5.000000e-01
  %1615 = call noundef float @_ZL7ImFloorf(float noundef %1614)
  %1616 = load ptr, ptr %9, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.ImGuiWindow, ptr %1616, i32 0, i32 11
  %1618 = load float, ptr %1617, align 4, !tbaa !140
  %1619 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1615, float noundef %1618)
  %1620 = fadd float %1609, %1619
  %1621 = call noundef float @_ZL7ImFloorf(float noundef %1620)
  %1622 = load ptr, ptr %9, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct.ImGuiWindow, ptr %1622, i32 0, i32 56
  %1624 = getelementptr inbounds %struct.ImRect, ptr %1623, i32 0, i32 0
  %1625 = getelementptr inbounds %struct.ImVec2, ptr %1624, i32 0, i32 0
  store float %1621, ptr %1625, align 8, !tbaa !182
  %1626 = load ptr, ptr %9, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.ImGuiWindow, ptr %1626, i32 0, i32 55
  %1628 = getelementptr inbounds %struct.ImRect, ptr %1627, i32 0, i32 0
  %1629 = getelementptr inbounds %struct.ImVec2, ptr %1628, i32 0, i32 1
  %1630 = load float, ptr %1629, align 4, !tbaa !176
  %1631 = fadd float 5.000000e-01, %1630
  %1632 = load float, ptr %67, align 4, !tbaa !110
  %1633 = fadd float %1631, %1632
  %1634 = call noundef float @_ZL7ImFloorf(float noundef %1633)
  %1635 = load ptr, ptr %9, align 8, !tbaa !5
  %1636 = getelementptr inbounds %struct.ImGuiWindow, ptr %1635, i32 0, i32 56
  %1637 = getelementptr inbounds %struct.ImRect, ptr %1636, i32 0, i32 0
  %1638 = getelementptr inbounds %struct.ImVec2, ptr %1637, i32 0, i32 1
  store float %1634, ptr %1638, align 4, !tbaa !183
  %1639 = load ptr, ptr %9, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct.ImGuiWindow, ptr %1639, i32 0, i32 55
  %1641 = getelementptr inbounds %struct.ImRect, ptr %1640, i32 0, i32 1
  %1642 = getelementptr inbounds %struct.ImVec2, ptr %1641, i32 0, i32 0
  %1643 = load float, ptr %1642, align 8, !tbaa !178
  %1644 = fadd float 5.000000e-01, %1643
  %1645 = load ptr, ptr %9, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.ImGuiWindow, ptr %1645, i32 0, i32 9
  %1647 = getelementptr inbounds %struct.ImVec2, ptr %1646, i32 0, i32 0
  %1648 = load float, ptr %1647, align 8, !tbaa !144
  %1649 = fmul float %1648, 5.000000e-01
  %1650 = call noundef float @_ZL7ImFloorf(float noundef %1649)
  %1651 = load ptr, ptr %9, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.ImGuiWindow, ptr %1651, i32 0, i32 11
  %1653 = load float, ptr %1652, align 4, !tbaa !140
  %1654 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1650, float noundef %1653)
  %1655 = fsub float %1644, %1654
  %1656 = call noundef float @_ZL7ImFloorf(float noundef %1655)
  %1657 = load ptr, ptr %9, align 8, !tbaa !5
  %1658 = getelementptr inbounds %struct.ImGuiWindow, ptr %1657, i32 0, i32 56
  %1659 = getelementptr inbounds %struct.ImRect, ptr %1658, i32 0, i32 1
  %1660 = getelementptr inbounds %struct.ImVec2, ptr %1659, i32 0, i32 0
  store float %1656, ptr %1660, align 8, !tbaa !184
  %1661 = load ptr, ptr %9, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.ImGuiWindow, ptr %1661, i32 0, i32 55
  %1663 = getelementptr inbounds %struct.ImRect, ptr %1662, i32 0, i32 1
  %1664 = getelementptr inbounds %struct.ImVec2, ptr %1663, i32 0, i32 1
  %1665 = load float, ptr %1664, align 4, !tbaa !180
  %1666 = fadd float 5.000000e-01, %1665
  %1667 = load ptr, ptr %9, align 8, !tbaa !5
  %1668 = getelementptr inbounds %struct.ImGuiWindow, ptr %1667, i32 0, i32 11
  %1669 = load float, ptr %1668, align 4, !tbaa !140
  %1670 = fsub float %1666, %1669
  %1671 = call noundef float @_ZL7ImFloorf(float noundef %1670)
  %1672 = load ptr, ptr %9, align 8, !tbaa !5
  %1673 = getelementptr inbounds %struct.ImGuiWindow, ptr %1672, i32 0, i32 56
  %1674 = getelementptr inbounds %struct.ImRect, ptr %1673, i32 0, i32 1
  %1675 = getelementptr inbounds %struct.ImVec2, ptr %1674, i32 0, i32 1
  store float %1671, ptr %1675, align 4, !tbaa !185
  %1676 = load ptr, ptr %9, align 8, !tbaa !5
  %1677 = getelementptr inbounds %struct.ImGuiWindow, ptr %1676, i32 0, i32 56
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1677, ptr noundef nonnull align 4 dereferenceable(16) %64)
  %1678 = load ptr, ptr %9, align 8, !tbaa !5
  %1679 = getelementptr inbounds %struct.ImGuiWindow, ptr %1678, i32 0, i32 4
  %1680 = getelementptr inbounds %struct.ImVec2, ptr %1679, i32 0, i32 0
  %1681 = load float, ptr %1680, align 8, !tbaa !136
  %1682 = fcmp ogt float %1681, 0.000000e+00
  br i1 %1682, label %1683, label %1700

1683:                                             ; preds = %1602
  %1684 = load i32, ptr %6, align 4, !tbaa !9
  %1685 = and i32 %1684, 33554432
  %1686 = icmp ne i32 %1685, 0
  br i1 %1686, label %1700, label %1687

1687:                                             ; preds = %1683
  %1688 = load i32, ptr %6, align 4, !tbaa !9
  %1689 = and i32 %1688, 64
  %1690 = icmp ne i32 %1689, 0
  br i1 %1690, label %1700, label %1691

1691:                                             ; preds = %1687
  %1692 = load ptr, ptr %9, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.ImGuiWindow, ptr %1692, i32 0, i32 4
  %1694 = getelementptr inbounds %struct.ImVec2, ptr %1693, i32 0, i32 0
  %1695 = load float, ptr %1694, align 8, !tbaa !136
  %1696 = fmul float %1695, 0x3FE4CCCCC0000000
  %1697 = call noundef float @_ZL7ImFloorf(float noundef %1696)
  %1698 = load ptr, ptr %9, align 8, !tbaa !5
  %1699 = getelementptr inbounds %struct.ImGuiWindow, ptr %1698, i32 0, i32 65
  store float %1697, ptr %1699, align 8, !tbaa !186
  br label %1708

1700:                                             ; preds = %1687, %1683, %1602
  %1701 = load ptr, ptr %7, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.ImGuiContext, ptr %1701, i32 0, i32 7
  %1703 = load float, ptr %1702, align 8, !tbaa !168
  %1704 = fmul float %1703, 1.600000e+01
  %1705 = call noundef float @_ZL7ImFloorf(float noundef %1704)
  %1706 = load ptr, ptr %9, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.ImGuiWindow, ptr %1706, i32 0, i32 65
  store float %1705, ptr %1707, align 8, !tbaa !186
  br label %1708

1708:                                             ; preds = %1700, %1691
  %1709 = load ptr, ptr %9, align 8, !tbaa !5
  %1710 = getelementptr inbounds %struct.ImGuiWindow, ptr %1709, i32 0, i32 6
  %1711 = getelementptr inbounds %struct.ImVec2, ptr %1710, i32 0, i32 0
  %1712 = load float, ptr %1711, align 8, !tbaa !187
  %1713 = load ptr, ptr %9, align 8, !tbaa !5
  %1714 = getelementptr inbounds %struct.ImGuiWindow, ptr %1713, i32 0, i32 9
  %1715 = getelementptr inbounds %struct.ImVec2, ptr %1714, i32 0, i32 0
  %1716 = load float, ptr %1715, align 8, !tbaa !144
  %1717 = call float @llvm.fmuladd.f32(float %1716, float 2.000000e+00, float %1712)
  %1718 = load ptr, ptr %9, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.ImGuiWindow, ptr %1718, i32 0, i32 55
  %1720 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1719)
  %1721 = fsub float %1717, %1720
  %1722 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1721)
  %1723 = load ptr, ptr %9, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.ImGuiWindow, ptr %1723, i32 0, i32 16
  %1725 = getelementptr inbounds %struct.ImVec2, ptr %1724, i32 0, i32 0
  store float %1722, ptr %1725, align 4, !tbaa !188
  %1726 = load ptr, ptr %9, align 8, !tbaa !5
  %1727 = getelementptr inbounds %struct.ImGuiWindow, ptr %1726, i32 0, i32 6
  %1728 = getelementptr inbounds %struct.ImVec2, ptr %1727, i32 0, i32 1
  %1729 = load float, ptr %1728, align 4, !tbaa !189
  %1730 = load ptr, ptr %9, align 8, !tbaa !5
  %1731 = getelementptr inbounds %struct.ImGuiWindow, ptr %1730, i32 0, i32 9
  %1732 = getelementptr inbounds %struct.ImVec2, ptr %1731, i32 0, i32 1
  %1733 = load float, ptr %1732, align 4, !tbaa !190
  %1734 = call float @llvm.fmuladd.f32(float %1733, float 2.000000e+00, float %1729)
  %1735 = load ptr, ptr %9, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.ImGuiWindow, ptr %1735, i32 0, i32 55
  %1737 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1736)
  %1738 = fsub float %1734, %1737
  %1739 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1738)
  %1740 = load ptr, ptr %9, align 8, !tbaa !5
  %1741 = getelementptr inbounds %struct.ImGuiWindow, ptr %1740, i32 0, i32 16
  %1742 = getelementptr inbounds %struct.ImVec2, ptr %1741, i32 0, i32 1
  store float %1739, ptr %1742, align 4, !tbaa !191
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #13
  %1743 = load ptr, ptr %9, align 8, !tbaa !5
  %1744 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %1743)
  store <2 x float> %1744, ptr %68, align 4
  %1745 = load ptr, ptr %9, align 8, !tbaa !5
  %1746 = getelementptr inbounds %struct.ImGuiWindow, ptr %1745, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1746, ptr align 4 %68, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %69, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %1747 = load ptr, ptr %9, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.ImGuiWindow, ptr %1747, i32 0, i32 17
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1748, ptr align 4 %69, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #13
  %1749 = load ptr, ptr %9, align 8, !tbaa !5
  %1750 = getelementptr inbounds %struct.ImGuiWindow, ptr %1749, i32 0, i32 71
  %1751 = load ptr, ptr %1750, align 8, !tbaa !125
  %1752 = getelementptr inbounds %struct.ImDrawList, ptr %1751, i32 0, i32 0
  %1753 = getelementptr inbounds %struct.ImVector.12, ptr %1752, i32 0, i32 0
  %1754 = load i32, ptr %1753, align 8, !tbaa !192
  %1755 = icmp eq i32 %1754, 1
  br i1 %1755, label %1756, label %1765

1756:                                             ; preds = %1708
  %1757 = load ptr, ptr %9, align 8, !tbaa !5
  %1758 = getelementptr inbounds %struct.ImGuiWindow, ptr %1757, i32 0, i32 71
  %1759 = load ptr, ptr %1758, align 8, !tbaa !125
  %1760 = getelementptr inbounds %struct.ImDrawList, ptr %1759, i32 0, i32 0
  %1761 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1760, i32 noundef 0)
  %1762 = getelementptr inbounds %struct.ImDrawCmd, ptr %1761, i32 0, i32 4
  %1763 = load i32, ptr %1762, align 8, !tbaa !193
  %1764 = icmp eq i32 %1763, 0
  br label %1765

1765:                                             ; preds = %1756, %1708
  %1766 = phi i1 [ false, %1708 ], [ %1764, %1756 ]
  br i1 %1766, label %1767, label %1768

1767:                                             ; preds = %1765
  br label %1770

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

1769:                                             ; No predecessors!
  br label %1770

1770:                                             ; preds = %1769, %1767
  %1771 = load ptr, ptr %9, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.ImGuiWindow, ptr %1771, i32 0, i32 71
  %1773 = load ptr, ptr %1772, align 8, !tbaa !125
  %1774 = load ptr, ptr %7, align 8, !tbaa !5
  %1775 = getelementptr inbounds %struct.ImGuiContext, ptr %1774, i32 0, i32 6
  %1776 = load ptr, ptr %1775, align 8, !tbaa !195
  %1777 = getelementptr inbounds %struct.ImFont, ptr %1776, i32 0, i32 6
  %1778 = load ptr, ptr %1777, align 8, !tbaa !196
  %1779 = getelementptr inbounds %struct.ImFontAtlas, ptr %1778, i32 0, i32 2
  %1780 = load ptr, ptr %1779, align 8, !tbaa !197
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %1773, ptr noundef %1780)
  %1781 = getelementptr inbounds %struct.ImRect, ptr %64, i32 0, i32 0
  %1782 = getelementptr inbounds %struct.ImRect, ptr %64, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1781, ptr noundef nonnull align 4 dereferenceable(8) %1782, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #13
  %1783 = load i32, ptr %6, align 4, !tbaa !9
  %1784 = and i32 %1783, 134217728
  %1785 = icmp ne i32 %1784, 0
  br i1 %1785, label %1786, label %1796

1786:                                             ; preds = %1770
  %1787 = load ptr, ptr %9, align 8, !tbaa !5
  %1788 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  %1789 = icmp eq ptr %1787, %1788
  br i1 %1789, label %1790, label %1796

1790:                                             ; preds = %1786
  %1791 = load ptr, ptr %9, align 8, !tbaa !5
  %1792 = getelementptr inbounds %struct.ImGuiWindow, ptr %1791, i32 0, i32 45
  %1793 = load i8, ptr %1792, align 1, !tbaa !91
  %1794 = sext i8 %1793 to i32
  %1795 = icmp sle i32 %1794, 0
  br label %1796

1796:                                             ; preds = %1790, %1786, %1770
  %1797 = phi i1 [ false, %1786 ], [ false, %1770 ], [ %1795, %1790 ]
  %1798 = zext i1 %1797 to i8
  store i8 %1798, ptr %70, align 1, !tbaa !79
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #13
  %1799 = load ptr, ptr %7, align 8, !tbaa !5
  %1800 = getelementptr inbounds %struct.ImGuiContext, ptr %1799, i32 0, i32 125
  %1801 = load ptr, ptr %1800, align 8, !tbaa !201
  %1802 = icmp ne ptr %1801, null
  br i1 %1802, label %1803, label %1811

1803:                                             ; preds = %1796
  %1804 = load ptr, ptr %9, align 8, !tbaa !5
  %1805 = load ptr, ptr %7, align 8, !tbaa !5
  %1806 = getelementptr inbounds %struct.ImGuiContext, ptr %1805, i32 0, i32 125
  %1807 = load ptr, ptr %1806, align 8, !tbaa !201
  %1808 = getelementptr inbounds %struct.ImGuiWindow, ptr %1807, i32 0, i32 74
  %1809 = load ptr, ptr %1808, align 8, !tbaa !202
  %1810 = icmp eq ptr %1804, %1809
  br label %1811

1811:                                             ; preds = %1803, %1796
  %1812 = phi i1 [ false, %1796 ], [ %1810, %1803 ]
  %1813 = zext i1 %1812 to i8
  store i8 %1813, ptr %71, align 1, !tbaa !79
  %1814 = load i8, ptr %70, align 1, !tbaa !79, !range !75, !noundef !76
  %1815 = trunc i8 %1814 to i1
  br i1 %1815, label %1819, label %1816

1816:                                             ; preds = %1811
  %1817 = load i8, ptr %71, align 1, !tbaa !79, !range !75, !noundef !76
  %1818 = trunc i8 %1817 to i1
  br i1 %1818, label %1819, label %1834

1819:                                             ; preds = %1816, %1811
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #13
  %1820 = load i8, ptr %70, align 1, !tbaa !79, !range !75, !noundef !76
  %1821 = trunc i8 %1820 to i1
  %1822 = zext i1 %1821 to i64
  %1823 = select i1 %1821, i32 52, i32 51
  %1824 = load ptr, ptr %7, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.ImGuiContext, ptr %1824, i32 0, i32 141
  %1826 = load float, ptr %1825, align 8, !tbaa !203
  %1827 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1823, float noundef %1826)
  store i32 %1827, ptr %72, align 4, !tbaa !9
  %1828 = load ptr, ptr %9, align 8, !tbaa !5
  %1829 = getelementptr inbounds %struct.ImGuiWindow, ptr %1828, i32 0, i32 71
  %1830 = load ptr, ptr %1829, align 8, !tbaa !125
  %1831 = getelementptr inbounds %struct.ImRect, ptr %45, i32 0, i32 0
  %1832 = getelementptr inbounds %struct.ImRect, ptr %45, i32 0, i32 1
  %1833 = load i32, ptr %72, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1830, ptr noundef nonnull align 4 dereferenceable(8) %1831, ptr noundef nonnull align 4 dereferenceable(8) %1832, i32 noundef %1833, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #13
  br label %1834

1834:                                             ; preds = %1819, %1816
  %1835 = load i8, ptr %71, align 1, !tbaa !79, !range !75, !noundef !76
  %1836 = trunc i8 %1835 to i1
  br i1 %1836, label %1837, label %1870

1837:                                             ; preds = %1834
  %1838 = load ptr, ptr %9, align 8, !tbaa !5
  %1839 = load ptr, ptr %7, align 8, !tbaa !5
  %1840 = getelementptr inbounds %struct.ImGuiContext, ptr %1839, i32 0, i32 125
  %1841 = load ptr, ptr %1840, align 8, !tbaa !201
  %1842 = icmp eq ptr %1838, %1841
  br i1 %1842, label %1843, label %1870

1843:                                             ; preds = %1837
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #13
  %1844 = load ptr, ptr %9, align 8, !tbaa !5
  %1845 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(993) %1844)
  %1846 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 0
  %1847 = extractvalue { <2 x float>, <2 x float> } %1845, 0
  store <2 x float> %1847, ptr %1846, align 4
  %1848 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 1
  %1849 = extractvalue { <2 x float>, <2 x float> } %1845, 1
  store <2 x float> %1849, ptr %1848, align 4
  %1850 = load ptr, ptr %7, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.ImGuiContext, ptr %1850, i32 0, i32 7
  %1852 = load float, ptr %1851, align 8, !tbaa !168
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %73, float noundef %1852)
  %1853 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %73, ptr noundef nonnull align 4 dereferenceable(16) %45)
  br i1 %1853, label %1869, label %1854

1854:                                             ; preds = %1843
  %1855 = load ptr, ptr %9, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.ImGuiWindow, ptr %1855, i32 0, i32 71
  %1857 = load ptr, ptr %1856, align 8, !tbaa !125
  %1858 = getelementptr inbounds %struct.ImRect, ptr %73, i32 0, i32 0
  %1859 = getelementptr inbounds %struct.ImRect, ptr %73, i32 0, i32 1
  %1860 = load ptr, ptr %7, align 8, !tbaa !5
  %1861 = getelementptr inbounds %struct.ImGuiContext, ptr %1860, i32 0, i32 128
  %1862 = load float, ptr %1861, align 4, !tbaa !204
  %1863 = fmul float %1862, 2.500000e-01
  %1864 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 50, float noundef %1863)
  %1865 = load ptr, ptr %7, align 8, !tbaa !5
  %1866 = getelementptr inbounds %struct.ImGuiContext, ptr %1865, i32 0, i32 4
  %1867 = getelementptr inbounds %struct.ImGuiStyle, ptr %1866, i32 0, i32 2
  %1868 = load float, ptr %1867, align 4, !tbaa !205
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1857, ptr noundef nonnull align 4 dereferenceable(8) %1858, ptr noundef nonnull align 4 dereferenceable(8) %1859, i32 noundef %1864, float noundef %1868, i32 noundef 15)
  br label %1869

1869:                                             ; preds = %1854, %1843
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #13
  br label %1870

1870:                                             ; preds = %1869, %1837, %1834
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #13
  store i8 0, ptr %74, align 1, !tbaa !79
  %1871 = load i32, ptr %6, align 4, !tbaa !9
  %1872 = and i32 %1871, 16777216
  %1873 = icmp ne i32 %1872, 0
  br i1 %1873, label %1874, label %1900

1874:                                             ; preds = %1870
  %1875 = load i32, ptr %6, align 4, !tbaa !9
  %1876 = and i32 %1875, 67108864
  %1877 = icmp ne i32 %1876, 0
  br i1 %1877, label %1900, label %1878

1878:                                             ; preds = %1874
  %1879 = load i8, ptr %23, align 1, !tbaa !79, !range !75, !noundef !76
  %1880 = trunc i8 %1879 to i1
  br i1 %1880, label %1900, label %1881

1881:                                             ; preds = %1878
  %1882 = load ptr, ptr %9, align 8, !tbaa !5
  %1883 = getelementptr inbounds %struct.ImGuiWindow, ptr %1882, i32 0, i32 71
  %1884 = load ptr, ptr %1883, align 8, !tbaa !125
  %1885 = getelementptr inbounds %struct.ImDrawList, ptr %1884, i32 0, i32 0
  %1886 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1885)
  %1887 = getelementptr inbounds %struct.ImDrawCmd, ptr %1886, i32 0, i32 4
  %1888 = load i32, ptr %1887, align 8, !tbaa !193
  %1889 = icmp eq i32 %1888, 0
  br i1 %1889, label %1890, label %1899

1890:                                             ; preds = %1881
  %1891 = load ptr, ptr %17, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.ImGuiWindow, ptr %1891, i32 0, i32 71
  %1893 = load ptr, ptr %1892, align 8, !tbaa !125
  %1894 = getelementptr inbounds %struct.ImDrawList, ptr %1893, i32 0, i32 2
  %1895 = getelementptr inbounds %struct.ImVector.13, ptr %1894, i32 0, i32 0
  %1896 = load i32, ptr %1895, align 8, !tbaa !206
  %1897 = icmp sgt i32 %1896, 0
  br i1 %1897, label %1898, label %1899

1898:                                             ; preds = %1890
  store i8 1, ptr %74, align 1, !tbaa !79
  br label %1899

1899:                                             ; preds = %1898, %1890, %1881
  br label %1900

1900:                                             ; preds = %1899, %1878, %1874, %1870
  %1901 = load i8, ptr %74, align 1, !tbaa !79, !range !75, !noundef !76
  %1902 = trunc i8 %1901 to i1
  br i1 %1902, label %1903, label %1909

1903:                                             ; preds = %1900
  %1904 = load ptr, ptr %17, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.ImGuiWindow, ptr %1904, i32 0, i32 71
  %1906 = load ptr, ptr %1905, align 8, !tbaa !125
  %1907 = load ptr, ptr %9, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.ImGuiWindow, ptr %1907, i32 0, i32 71
  store ptr %1906, ptr %1908, align 8, !tbaa !125
  br label %1909

1909:                                             ; preds = %1903, %1900
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  %1910 = load ptr, ptr %7, align 8, !tbaa !5
  %1911 = getelementptr inbounds %struct.ImGuiContext, ptr %1910, i32 0, i32 124
  %1912 = load ptr, ptr %1911, align 8, !tbaa !207
  %1913 = icmp ne ptr %1912, null
  br i1 %1913, label %1914, label %1918

1914:                                             ; preds = %1909
  %1915 = load ptr, ptr %7, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.ImGuiContext, ptr %1915, i32 0, i32 124
  %1917 = load ptr, ptr %1916, align 8, !tbaa !207
  br label %1922

1918:                                             ; preds = %1909
  %1919 = load ptr, ptr %7, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct.ImGuiContext, ptr %1919, i32 0, i32 82
  %1921 = load ptr, ptr %1920, align 8, !tbaa !208
  br label %1922

1922:                                             ; preds = %1918, %1914
  %1923 = phi ptr [ %1917, %1914 ], [ %1921, %1918 ]
  store ptr %1923, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #13
  %1924 = load i8, ptr %51, align 1, !tbaa !79, !range !75, !noundef !76
  %1925 = trunc i8 %1924 to i1
  br i1 %1925, label %1939, label %1926

1926:                                             ; preds = %1922
  %1927 = load ptr, ptr %75, align 8, !tbaa !5
  %1928 = icmp ne ptr %1927, null
  br i1 %1928, label %1929, label %1937

1929:                                             ; preds = %1926
  %1930 = load ptr, ptr %9, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.ImGuiWindow, ptr %1930, i32 0, i32 75
  %1932 = load ptr, ptr %1931, align 8, !tbaa !209
  %1933 = load ptr, ptr %75, align 8, !tbaa !5
  %1934 = getelementptr inbounds %struct.ImGuiWindow, ptr %1933, i32 0, i32 75
  %1935 = load ptr, ptr %1934, align 8, !tbaa !209
  %1936 = icmp eq ptr %1932, %1935
  br label %1937

1937:                                             ; preds = %1929, %1926
  %1938 = phi i1 [ false, %1926 ], [ %1936, %1929 ]
  br label %1939

1939:                                             ; preds = %1937, %1922
  %1940 = phi i1 [ true, %1922 ], [ %1938, %1937 ]
  %1941 = zext i1 %1940 to i8
  store i8 %1941, ptr %76, align 1, !tbaa !79
  %1942 = load ptr, ptr %9, align 8, !tbaa !5
  %1943 = load i8, ptr %76, align 1, !tbaa !79, !range !75, !noundef !76
  %1944 = trunc i8 %1943 to i1
  %1945 = load i32, ptr %54, align 4, !tbaa !9
  %1946 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 0
  %1947 = load float, ptr %55, align 4, !tbaa !110
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef %1942, ptr noundef nonnull align 4 dereferenceable(16) %66, i1 noundef zeroext %1944, i32 noundef %1945, ptr noundef %1946, float noundef %1947)
  %1948 = load i8, ptr %74, align 1, !tbaa !79, !range !75, !noundef !76
  %1949 = trunc i8 %1948 to i1
  br i1 %1949, label %1950, label %1955

1950:                                             ; preds = %1939
  %1951 = load ptr, ptr %9, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.ImGuiWindow, ptr %1951, i32 0, i32 72
  %1953 = load ptr, ptr %9, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.ImGuiWindow, ptr %1953, i32 0, i32 71
  store ptr %1952, ptr %1954, align 8, !tbaa !125
  br label %1955

1955:                                             ; preds = %1950, %1939
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #13
  %1956 = load ptr, ptr %7, align 8, !tbaa !5
  %1957 = getelementptr inbounds %struct.ImGuiContext, ptr %1956, i32 0, i32 125
  %1958 = load ptr, ptr %1957, align 8, !tbaa !201
  %1959 = load ptr, ptr %9, align 8, !tbaa !5
  %1960 = icmp eq ptr %1958, %1959
  br i1 %1960, label %1961, label %2000

1961:                                             ; preds = %1955
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #13
  %1962 = load ptr, ptr %9, align 8, !tbaa !5
  %1963 = getelementptr inbounds %struct.ImGuiWindow, ptr %1962, i32 0, i32 10
  %1964 = load float, ptr %1963, align 8, !tbaa !166
  %1965 = load ptr, ptr %7, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.ImGuiContext, ptr %1965, i32 0, i32 4
  %1967 = getelementptr inbounds %struct.ImGuiStyle, ptr %1966, i32 0, i32 2
  %1968 = load float, ptr %1967, align 4, !tbaa !205
  %1969 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1964, float noundef %1968)
  store float %1969, ptr %77, align 4, !tbaa !110
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #13
  %1970 = load ptr, ptr %9, align 8, !tbaa !5
  %1971 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(993) %1970)
  %1972 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %78, i32 0, i32 0
  %1973 = extractvalue { <2 x float>, <2 x float> } %1971, 0
  store <2 x float> %1973, ptr %1972, align 4
  %1974 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %78, i32 0, i32 1
  %1975 = extractvalue { <2 x float>, <2 x float> } %1971, 1
  store <2 x float> %1975, ptr %1974, align 4
  %1976 = load ptr, ptr %7, align 8, !tbaa !5
  %1977 = getelementptr inbounds %struct.ImGuiContext, ptr %1976, i32 0, i32 7
  %1978 = load float, ptr %1977, align 8, !tbaa !168
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %78, float noundef %1978)
  %1979 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %78, ptr noundef nonnull align 4 dereferenceable(16) %45)
  br i1 %1979, label %1980, label %1989

1980:                                             ; preds = %1961
  %1981 = load ptr, ptr %7, align 8, !tbaa !5
  %1982 = getelementptr inbounds %struct.ImGuiContext, ptr %1981, i32 0, i32 7
  %1983 = load float, ptr %1982, align 8, !tbaa !168
  %1984 = fneg float %1983
  %1985 = fsub float %1984, 1.000000e+00
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %78, float noundef %1985)
  %1986 = load ptr, ptr %9, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.ImGuiWindow, ptr %1986, i32 0, i32 10
  %1988 = load float, ptr %1987, align 8, !tbaa !166
  store float %1988, ptr %77, align 4, !tbaa !110
  br label %1989

1989:                                             ; preds = %1980, %1961
  %1990 = load ptr, ptr %9, align 8, !tbaa !5
  %1991 = getelementptr inbounds %struct.ImGuiWindow, ptr %1990, i32 0, i32 71
  %1992 = load ptr, ptr %1991, align 8, !tbaa !125
  %1993 = getelementptr inbounds %struct.ImRect, ptr %78, i32 0, i32 0
  %1994 = getelementptr inbounds %struct.ImRect, ptr %78, i32 0, i32 1
  %1995 = load ptr, ptr %7, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.ImGuiContext, ptr %1995, i32 0, i32 128
  %1997 = load float, ptr %1996, align 4, !tbaa !204
  %1998 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 50, float noundef %1997)
  %1999 = load float, ptr %77, align 4, !tbaa !110
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %1992, ptr noundef nonnull align 4 dereferenceable(8) %1993, ptr noundef nonnull align 4 dereferenceable(8) %1994, i32 noundef %1998, float noundef %1999, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #13
  br label %2000

2000:                                             ; preds = %1989, %1955
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #13
  %2001 = load i32, ptr %6, align 4, !tbaa !9
  %2002 = and i32 %2001, 8
  %2003 = icmp ne i32 %2002, 0
  br i1 %2003, label %2008, label %2004

2004:                                             ; preds = %2000
  %2005 = load i32, ptr %6, align 4, !tbaa !9
  %2006 = and i32 %2005, 2048
  %2007 = icmp ne i32 %2006, 0
  br label %2008

2008:                                             ; preds = %2004, %2000
  %2009 = phi i1 [ false, %2000 ], [ %2007, %2004 ]
  %2010 = zext i1 %2009 to i8
  store i8 %2010, ptr %79, align 1, !tbaa !79
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #13
  %2011 = load i32, ptr %6, align 4, !tbaa !9
  %2012 = and i32 %2011, 8
  %2013 = icmp ne i32 %2012, 0
  %2014 = xor i1 %2013, true
  %2015 = zext i1 %2014 to i8
  store i8 %2015, ptr %80, align 1, !tbaa !79
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #13
  %2016 = load ptr, ptr %9, align 8, !tbaa !5
  %2017 = getelementptr inbounds %struct.ImGuiWindow, ptr %2016, i32 0, i32 8
  %2018 = getelementptr inbounds %struct.ImVec2, ptr %2017, i32 0, i32 0
  %2019 = load float, ptr %2018, align 8, !tbaa !210
  %2020 = fcmp une float %2019, 0.000000e+00
  br i1 %2020, label %2021, label %2026

2021:                                             ; preds = %2008
  %2022 = load ptr, ptr %9, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.ImGuiWindow, ptr %2022, i32 0, i32 8
  %2024 = getelementptr inbounds %struct.ImVec2, ptr %2023, i32 0, i32 0
  %2025 = load float, ptr %2024, align 8, !tbaa !210
  br label %2053

2026:                                             ; preds = %2008
  %2027 = load i8, ptr %79, align 1, !tbaa !79, !range !75, !noundef !76
  %2028 = trunc i8 %2027 to i1
  br i1 %2028, label %2029, label %2034

2029:                                             ; preds = %2026
  %2030 = load ptr, ptr %9, align 8, !tbaa !5
  %2031 = getelementptr inbounds %struct.ImGuiWindow, ptr %2030, i32 0, i32 6
  %2032 = getelementptr inbounds %struct.ImVec2, ptr %2031, i32 0, i32 0
  %2033 = load float, ptr %2032, align 8, !tbaa !187
  br label %2035

2034:                                             ; preds = %2026
  br label %2035

2035:                                             ; preds = %2034, %2029
  %2036 = phi float [ %2033, %2029 ], [ 0.000000e+00, %2034 ]
  %2037 = load ptr, ptr %9, align 8, !tbaa !5
  %2038 = getelementptr inbounds %struct.ImGuiWindow, ptr %2037, i32 0, i32 4
  %2039 = getelementptr inbounds %struct.ImVec2, ptr %2038, i32 0, i32 0
  %2040 = load float, ptr %2039, align 8, !tbaa !136
  %2041 = load ptr, ptr %9, align 8, !tbaa !5
  %2042 = getelementptr inbounds %struct.ImGuiWindow, ptr %2041, i32 0, i32 9
  %2043 = getelementptr inbounds %struct.ImVec2, ptr %2042, i32 0, i32 0
  %2044 = load float, ptr %2043, align 8, !tbaa !144
  %2045 = fneg float %2044
  %2046 = call float @llvm.fmuladd.f32(float %2045, float 2.000000e+00, float %2040)
  %2047 = load ptr, ptr %9, align 8, !tbaa !5
  %2048 = getelementptr inbounds %struct.ImGuiWindow, ptr %2047, i32 0, i32 20
  %2049 = getelementptr inbounds %struct.ImVec2, ptr %2048, i32 0, i32 0
  %2050 = load float, ptr %2049, align 4, !tbaa !177
  %2051 = fsub float %2046, %2050
  %2052 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2036, float noundef %2051)
  br label %2053

2053:                                             ; preds = %2035, %2021
  %2054 = phi float [ %2025, %2021 ], [ %2052, %2035 ]
  store float %2054, ptr %81, align 4, !tbaa !110
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #13
  %2055 = load ptr, ptr %9, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.ImGuiWindow, ptr %2055, i32 0, i32 8
  %2057 = getelementptr inbounds %struct.ImVec2, ptr %2056, i32 0, i32 1
  %2058 = load float, ptr %2057, align 4, !tbaa !211
  %2059 = fcmp une float %2058, 0.000000e+00
  br i1 %2059, label %2060, label %2065

2060:                                             ; preds = %2053
  %2061 = load ptr, ptr %9, align 8, !tbaa !5
  %2062 = getelementptr inbounds %struct.ImGuiWindow, ptr %2061, i32 0, i32 8
  %2063 = getelementptr inbounds %struct.ImVec2, ptr %2062, i32 0, i32 1
  %2064 = load float, ptr %2063, align 4, !tbaa !211
  br label %2094

2065:                                             ; preds = %2053
  %2066 = load i8, ptr %80, align 1, !tbaa !79, !range !75, !noundef !76
  %2067 = trunc i8 %2066 to i1
  br i1 %2067, label %2068, label %2073

2068:                                             ; preds = %2065
  %2069 = load ptr, ptr %9, align 8, !tbaa !5
  %2070 = getelementptr inbounds %struct.ImGuiWindow, ptr %2069, i32 0, i32 6
  %2071 = getelementptr inbounds %struct.ImVec2, ptr %2070, i32 0, i32 1
  %2072 = load float, ptr %2071, align 4, !tbaa !189
  br label %2074

2073:                                             ; preds = %2065
  br label %2074

2074:                                             ; preds = %2073, %2068
  %2075 = phi float [ %2072, %2068 ], [ 0.000000e+00, %2073 ]
  %2076 = load ptr, ptr %9, align 8, !tbaa !5
  %2077 = getelementptr inbounds %struct.ImGuiWindow, ptr %2076, i32 0, i32 4
  %2078 = getelementptr inbounds %struct.ImVec2, ptr %2077, i32 0, i32 1
  %2079 = load float, ptr %2078, align 4, !tbaa !138
  %2080 = load ptr, ptr %9, align 8, !tbaa !5
  %2081 = getelementptr inbounds %struct.ImGuiWindow, ptr %2080, i32 0, i32 9
  %2082 = getelementptr inbounds %struct.ImVec2, ptr %2081, i32 0, i32 1
  %2083 = load float, ptr %2082, align 4, !tbaa !190
  %2084 = fneg float %2083
  %2085 = call float @llvm.fmuladd.f32(float %2084, float 2.000000e+00, float %2079)
  %2086 = load float, ptr %38, align 4, !tbaa !110
  %2087 = fsub float %2085, %2086
  %2088 = load ptr, ptr %9, align 8, !tbaa !5
  %2089 = getelementptr inbounds %struct.ImGuiWindow, ptr %2088, i32 0, i32 20
  %2090 = getelementptr inbounds %struct.ImVec2, ptr %2089, i32 0, i32 1
  %2091 = load float, ptr %2090, align 4, !tbaa !179
  %2092 = fsub float %2087, %2091
  %2093 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2075, float noundef %2092)
  br label %2094

2094:                                             ; preds = %2074, %2060
  %2095 = phi float [ %2064, %2060 ], [ %2093, %2074 ]
  store float %2095, ptr %82, align 4, !tbaa !110
  %2096 = load ptr, ptr %9, align 8, !tbaa !5
  %2097 = getelementptr inbounds %struct.ImGuiWindow, ptr %2096, i32 0, i32 55
  %2098 = getelementptr inbounds %struct.ImRect, ptr %2097, i32 0, i32 0
  %2099 = getelementptr inbounds %struct.ImVec2, ptr %2098, i32 0, i32 0
  %2100 = load float, ptr %2099, align 8, !tbaa !174
  %2101 = load ptr, ptr %9, align 8, !tbaa !5
  %2102 = getelementptr inbounds %struct.ImGuiWindow, ptr %2101, i32 0, i32 15
  %2103 = getelementptr inbounds %struct.ImVec2, ptr %2102, i32 0, i32 0
  %2104 = load float, ptr %2103, align 4, !tbaa !212
  %2105 = fsub float %2100, %2104
  %2106 = load ptr, ptr %9, align 8, !tbaa !5
  %2107 = getelementptr inbounds %struct.ImGuiWindow, ptr %2106, i32 0, i32 9
  %2108 = getelementptr inbounds %struct.ImVec2, ptr %2107, i32 0, i32 0
  %2109 = load float, ptr %2108, align 8, !tbaa !144
  %2110 = load ptr, ptr %9, align 8, !tbaa !5
  %2111 = getelementptr inbounds %struct.ImGuiWindow, ptr %2110, i32 0, i32 11
  %2112 = load float, ptr %2111, align 4, !tbaa !140
  %2113 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2109, float noundef %2112)
  %2114 = fadd float %2105, %2113
  %2115 = call noundef float @_ZL7ImFloorf(float noundef %2114)
  %2116 = load ptr, ptr %9, align 8, !tbaa !5
  %2117 = getelementptr inbounds %struct.ImGuiWindow, ptr %2116, i32 0, i32 57
  %2118 = getelementptr inbounds %struct.ImRect, ptr %2117, i32 0, i32 0
  %2119 = getelementptr inbounds %struct.ImVec2, ptr %2118, i32 0, i32 0
  store float %2115, ptr %2119, align 8, !tbaa !213
  %2120 = load ptr, ptr %9, align 8, !tbaa !5
  %2121 = getelementptr inbounds %struct.ImGuiWindow, ptr %2120, i32 0, i32 55
  %2122 = getelementptr inbounds %struct.ImRect, ptr %2121, i32 0, i32 0
  %2123 = getelementptr inbounds %struct.ImVec2, ptr %2122, i32 0, i32 1
  %2124 = load float, ptr %2123, align 4, !tbaa !176
  %2125 = load ptr, ptr %9, align 8, !tbaa !5
  %2126 = getelementptr inbounds %struct.ImGuiWindow, ptr %2125, i32 0, i32 15
  %2127 = getelementptr inbounds %struct.ImVec2, ptr %2126, i32 0, i32 1
  %2128 = load float, ptr %2127, align 4, !tbaa !214
  %2129 = fsub float %2124, %2128
  %2130 = load ptr, ptr %9, align 8, !tbaa !5
  %2131 = getelementptr inbounds %struct.ImGuiWindow, ptr %2130, i32 0, i32 9
  %2132 = getelementptr inbounds %struct.ImVec2, ptr %2131, i32 0, i32 1
  %2133 = load float, ptr %2132, align 4, !tbaa !190
  %2134 = load ptr, ptr %9, align 8, !tbaa !5
  %2135 = getelementptr inbounds %struct.ImGuiWindow, ptr %2134, i32 0, i32 11
  %2136 = load float, ptr %2135, align 4, !tbaa !140
  %2137 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2133, float noundef %2136)
  %2138 = fadd float %2129, %2137
  %2139 = call noundef float @_ZL7ImFloorf(float noundef %2138)
  %2140 = load ptr, ptr %9, align 8, !tbaa !5
  %2141 = getelementptr inbounds %struct.ImGuiWindow, ptr %2140, i32 0, i32 57
  %2142 = getelementptr inbounds %struct.ImRect, ptr %2141, i32 0, i32 0
  %2143 = getelementptr inbounds %struct.ImVec2, ptr %2142, i32 0, i32 1
  store float %2139, ptr %2143, align 4, !tbaa !215
  %2144 = load ptr, ptr %9, align 8, !tbaa !5
  %2145 = getelementptr inbounds %struct.ImGuiWindow, ptr %2144, i32 0, i32 57
  %2146 = getelementptr inbounds %struct.ImRect, ptr %2145, i32 0, i32 0
  %2147 = getelementptr inbounds %struct.ImVec2, ptr %2146, i32 0, i32 0
  %2148 = load float, ptr %2147, align 8, !tbaa !213
  %2149 = load float, ptr %81, align 4, !tbaa !110
  %2150 = fadd float %2148, %2149
  %2151 = load ptr, ptr %9, align 8, !tbaa !5
  %2152 = getelementptr inbounds %struct.ImGuiWindow, ptr %2151, i32 0, i32 57
  %2153 = getelementptr inbounds %struct.ImRect, ptr %2152, i32 0, i32 1
  %2154 = getelementptr inbounds %struct.ImVec2, ptr %2153, i32 0, i32 0
  store float %2150, ptr %2154, align 8, !tbaa !216
  %2155 = load ptr, ptr %9, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.ImGuiWindow, ptr %2155, i32 0, i32 57
  %2157 = getelementptr inbounds %struct.ImRect, ptr %2156, i32 0, i32 0
  %2158 = getelementptr inbounds %struct.ImVec2, ptr %2157, i32 0, i32 1
  %2159 = load float, ptr %2158, align 4, !tbaa !215
  %2160 = load float, ptr %82, align 4, !tbaa !110
  %2161 = fadd float %2159, %2160
  %2162 = load ptr, ptr %9, align 8, !tbaa !5
  %2163 = getelementptr inbounds %struct.ImGuiWindow, ptr %2162, i32 0, i32 57
  %2164 = getelementptr inbounds %struct.ImRect, ptr %2163, i32 0, i32 1
  %2165 = getelementptr inbounds %struct.ImVec2, ptr %2164, i32 0, i32 1
  store float %2161, ptr %2165, align 4, !tbaa !217
  %2166 = load ptr, ptr %9, align 8, !tbaa !5
  %2167 = getelementptr inbounds %struct.ImGuiWindow, ptr %2166, i32 0, i32 57
  %2168 = load ptr, ptr %9, align 8, !tbaa !5
  %2169 = getelementptr inbounds %struct.ImGuiWindow, ptr %2168, i32 0, i32 58
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2169, ptr align 8 %2167, i64 16, i1 false), !tbaa.struct !124
  %2170 = load ptr, ptr %9, align 8, !tbaa !5
  %2171 = getelementptr inbounds %struct.ImGuiWindow, ptr %2170, i32 0, i32 3
  %2172 = getelementptr inbounds %struct.ImVec2, ptr %2171, i32 0, i32 0
  %2173 = load float, ptr %2172, align 8, !tbaa !173
  %2174 = load ptr, ptr %9, align 8, !tbaa !5
  %2175 = getelementptr inbounds %struct.ImGuiWindow, ptr %2174, i32 0, i32 15
  %2176 = getelementptr inbounds %struct.ImVec2, ptr %2175, i32 0, i32 0
  %2177 = load float, ptr %2176, align 4, !tbaa !212
  %2178 = fsub float %2173, %2177
  %2179 = load ptr, ptr %9, align 8, !tbaa !5
  %2180 = getelementptr inbounds %struct.ImGuiWindow, ptr %2179, i32 0, i32 9
  %2181 = getelementptr inbounds %struct.ImVec2, ptr %2180, i32 0, i32 0
  %2182 = load float, ptr %2181, align 8, !tbaa !144
  %2183 = fadd float %2178, %2182
  %2184 = load ptr, ptr %9, align 8, !tbaa !5
  %2185 = getelementptr inbounds %struct.ImGuiWindow, ptr %2184, i32 0, i32 60
  %2186 = getelementptr inbounds %struct.ImRect, ptr %2185, i32 0, i32 0
  %2187 = getelementptr inbounds %struct.ImVec2, ptr %2186, i32 0, i32 0
  store float %2183, ptr %2187, align 8, !tbaa !218
  %2188 = load ptr, ptr %9, align 8, !tbaa !5
  %2189 = getelementptr inbounds %struct.ImGuiWindow, ptr %2188, i32 0, i32 3
  %2190 = getelementptr inbounds %struct.ImVec2, ptr %2189, i32 0, i32 1
  %2191 = load float, ptr %2190, align 4, !tbaa !175
  %2192 = load ptr, ptr %9, align 8, !tbaa !5
  %2193 = getelementptr inbounds %struct.ImGuiWindow, ptr %2192, i32 0, i32 15
  %2194 = getelementptr inbounds %struct.ImVec2, ptr %2193, i32 0, i32 1
  %2195 = load float, ptr %2194, align 4, !tbaa !214
  %2196 = fsub float %2191, %2195
  %2197 = load ptr, ptr %9, align 8, !tbaa !5
  %2198 = getelementptr inbounds %struct.ImGuiWindow, ptr %2197, i32 0, i32 9
  %2199 = getelementptr inbounds %struct.ImVec2, ptr %2198, i32 0, i32 1
  %2200 = load float, ptr %2199, align 4, !tbaa !190
  %2201 = fadd float %2196, %2200
  %2202 = load float, ptr %38, align 4, !tbaa !110
  %2203 = fadd float %2201, %2202
  %2204 = load ptr, ptr %9, align 8, !tbaa !5
  %2205 = getelementptr inbounds %struct.ImGuiWindow, ptr %2204, i32 0, i32 60
  %2206 = getelementptr inbounds %struct.ImRect, ptr %2205, i32 0, i32 0
  %2207 = getelementptr inbounds %struct.ImVec2, ptr %2206, i32 0, i32 1
  store float %2203, ptr %2207, align 4, !tbaa !219
  %2208 = load ptr, ptr %9, align 8, !tbaa !5
  %2209 = getelementptr inbounds %struct.ImGuiWindow, ptr %2208, i32 0, i32 60
  %2210 = getelementptr inbounds %struct.ImRect, ptr %2209, i32 0, i32 0
  %2211 = getelementptr inbounds %struct.ImVec2, ptr %2210, i32 0, i32 0
  %2212 = load float, ptr %2211, align 8, !tbaa !218
  %2213 = load ptr, ptr %9, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.ImGuiWindow, ptr %2213, i32 0, i32 8
  %2215 = getelementptr inbounds %struct.ImVec2, ptr %2214, i32 0, i32 0
  %2216 = load float, ptr %2215, align 8, !tbaa !210
  %2217 = fcmp une float %2216, 0.000000e+00
  br i1 %2217, label %2218, label %2223

2218:                                             ; preds = %2094
  %2219 = load ptr, ptr %9, align 8, !tbaa !5
  %2220 = getelementptr inbounds %struct.ImGuiWindow, ptr %2219, i32 0, i32 8
  %2221 = getelementptr inbounds %struct.ImVec2, ptr %2220, i32 0, i32 0
  %2222 = load float, ptr %2221, align 8, !tbaa !210
  br label %2239

2223:                                             ; preds = %2094
  %2224 = load ptr, ptr %9, align 8, !tbaa !5
  %2225 = getelementptr inbounds %struct.ImGuiWindow, ptr %2224, i32 0, i32 4
  %2226 = getelementptr inbounds %struct.ImVec2, ptr %2225, i32 0, i32 0
  %2227 = load float, ptr %2226, align 8, !tbaa !136
  %2228 = load ptr, ptr %9, align 8, !tbaa !5
  %2229 = getelementptr inbounds %struct.ImGuiWindow, ptr %2228, i32 0, i32 9
  %2230 = getelementptr inbounds %struct.ImVec2, ptr %2229, i32 0, i32 0
  %2231 = load float, ptr %2230, align 8, !tbaa !144
  %2232 = fneg float %2231
  %2233 = call float @llvm.fmuladd.f32(float %2232, float 2.000000e+00, float %2227)
  %2234 = load ptr, ptr %9, align 8, !tbaa !5
  %2235 = getelementptr inbounds %struct.ImGuiWindow, ptr %2234, i32 0, i32 20
  %2236 = getelementptr inbounds %struct.ImVec2, ptr %2235, i32 0, i32 0
  %2237 = load float, ptr %2236, align 4, !tbaa !177
  %2238 = fsub float %2233, %2237
  br label %2239

2239:                                             ; preds = %2223, %2218
  %2240 = phi float [ %2222, %2218 ], [ %2238, %2223 ]
  %2241 = fadd float %2212, %2240
  %2242 = load ptr, ptr %9, align 8, !tbaa !5
  %2243 = getelementptr inbounds %struct.ImGuiWindow, ptr %2242, i32 0, i32 60
  %2244 = getelementptr inbounds %struct.ImRect, ptr %2243, i32 0, i32 1
  %2245 = getelementptr inbounds %struct.ImVec2, ptr %2244, i32 0, i32 0
  store float %2241, ptr %2245, align 8, !tbaa !220
  %2246 = load ptr, ptr %9, align 8, !tbaa !5
  %2247 = getelementptr inbounds %struct.ImGuiWindow, ptr %2246, i32 0, i32 60
  %2248 = getelementptr inbounds %struct.ImRect, ptr %2247, i32 0, i32 0
  %2249 = getelementptr inbounds %struct.ImVec2, ptr %2248, i32 0, i32 1
  %2250 = load float, ptr %2249, align 4, !tbaa !219
  %2251 = load ptr, ptr %9, align 8, !tbaa !5
  %2252 = getelementptr inbounds %struct.ImGuiWindow, ptr %2251, i32 0, i32 8
  %2253 = getelementptr inbounds %struct.ImVec2, ptr %2252, i32 0, i32 1
  %2254 = load float, ptr %2253, align 4, !tbaa !211
  %2255 = fcmp une float %2254, 0.000000e+00
  br i1 %2255, label %2256, label %2261

2256:                                             ; preds = %2239
  %2257 = load ptr, ptr %9, align 8, !tbaa !5
  %2258 = getelementptr inbounds %struct.ImGuiWindow, ptr %2257, i32 0, i32 8
  %2259 = getelementptr inbounds %struct.ImVec2, ptr %2258, i32 0, i32 1
  %2260 = load float, ptr %2259, align 4, !tbaa !211
  br label %2279

2261:                                             ; preds = %2239
  %2262 = load ptr, ptr %9, align 8, !tbaa !5
  %2263 = getelementptr inbounds %struct.ImGuiWindow, ptr %2262, i32 0, i32 4
  %2264 = getelementptr inbounds %struct.ImVec2, ptr %2263, i32 0, i32 1
  %2265 = load float, ptr %2264, align 4, !tbaa !138
  %2266 = load ptr, ptr %9, align 8, !tbaa !5
  %2267 = getelementptr inbounds %struct.ImGuiWindow, ptr %2266, i32 0, i32 9
  %2268 = getelementptr inbounds %struct.ImVec2, ptr %2267, i32 0, i32 1
  %2269 = load float, ptr %2268, align 4, !tbaa !190
  %2270 = fneg float %2269
  %2271 = call float @llvm.fmuladd.f32(float %2270, float 2.000000e+00, float %2265)
  %2272 = load float, ptr %38, align 4, !tbaa !110
  %2273 = fsub float %2271, %2272
  %2274 = load ptr, ptr %9, align 8, !tbaa !5
  %2275 = getelementptr inbounds %struct.ImGuiWindow, ptr %2274, i32 0, i32 20
  %2276 = getelementptr inbounds %struct.ImVec2, ptr %2275, i32 0, i32 1
  %2277 = load float, ptr %2276, align 4, !tbaa !179
  %2278 = fsub float %2273, %2277
  br label %2279

2279:                                             ; preds = %2261, %2256
  %2280 = phi float [ %2260, %2256 ], [ %2278, %2261 ]
  %2281 = fadd float %2250, %2280
  %2282 = load ptr, ptr %9, align 8, !tbaa !5
  %2283 = getelementptr inbounds %struct.ImGuiWindow, ptr %2282, i32 0, i32 60
  %2284 = getelementptr inbounds %struct.ImRect, ptr %2283, i32 0, i32 1
  %2285 = getelementptr inbounds %struct.ImVec2, ptr %2284, i32 0, i32 1
  store float %2281, ptr %2285, align 4, !tbaa !221
  %2286 = load ptr, ptr %9, align 8, !tbaa !5
  %2287 = getelementptr inbounds %struct.ImGuiWindow, ptr %2286, i32 0, i32 9
  %2288 = getelementptr inbounds %struct.ImVec2, ptr %2287, i32 0, i32 0
  %2289 = load float, ptr %2288, align 8, !tbaa !144
  %2290 = fadd float 0.000000e+00, %2289
  %2291 = load ptr, ptr %9, align 8, !tbaa !5
  %2292 = getelementptr inbounds %struct.ImGuiWindow, ptr %2291, i32 0, i32 15
  %2293 = getelementptr inbounds %struct.ImVec2, ptr %2292, i32 0, i32 0
  %2294 = load float, ptr %2293, align 4, !tbaa !212
  %2295 = fsub float %2290, %2294
  %2296 = load ptr, ptr %9, align 8, !tbaa !5
  %2297 = getelementptr inbounds %struct.ImGuiWindow, ptr %2296, i32 0, i32 53
  %2298 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2297, i32 0, i32 9
  %2299 = getelementptr inbounds %struct.ImVec1, ptr %2298, i32 0, i32 0
  store float %2295, ptr %2299, align 8, !tbaa !222
  %2300 = load ptr, ptr %9, align 8, !tbaa !5
  %2301 = getelementptr inbounds %struct.ImGuiWindow, ptr %2300, i32 0, i32 53
  %2302 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2301, i32 0, i32 11
  %2303 = getelementptr inbounds %struct.ImVec1, ptr %2302, i32 0, i32 0
  store float 0.000000e+00, ptr %2303, align 8, !tbaa !223
  %2304 = load ptr, ptr %9, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.ImGuiWindow, ptr %2304, i32 0, i32 53
  %2306 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2305, i32 0, i32 10
  %2307 = getelementptr inbounds %struct.ImVec1, ptr %2306, i32 0, i32 0
  store float 0.000000e+00, ptr %2307, align 4, !tbaa !224
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #13
  %2308 = load ptr, ptr %9, align 8, !tbaa !5
  %2309 = getelementptr inbounds %struct.ImGuiWindow, ptr %2308, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #13
  %2310 = load ptr, ptr %9, align 8, !tbaa !5
  %2311 = getelementptr inbounds %struct.ImGuiWindow, ptr %2310, i32 0, i32 53
  %2312 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2311, i32 0, i32 9
  %2313 = getelementptr inbounds %struct.ImVec1, ptr %2312, i32 0, i32 0
  %2314 = load float, ptr %2313, align 8, !tbaa !222
  %2315 = load ptr, ptr %9, align 8, !tbaa !5
  %2316 = getelementptr inbounds %struct.ImGuiWindow, ptr %2315, i32 0, i32 53
  %2317 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2316, i32 0, i32 10
  %2318 = getelementptr inbounds %struct.ImVec1, ptr %2317, i32 0, i32 0
  %2319 = load float, ptr %2318, align 4, !tbaa !224
  %2320 = fadd float %2314, %2319
  %2321 = load float, ptr %38, align 4, !tbaa !110
  %2322 = load ptr, ptr %9, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.ImGuiWindow, ptr %2322, i32 0, i32 9
  %2324 = getelementptr inbounds %struct.ImVec2, ptr %2323, i32 0, i32 1
  %2325 = load float, ptr %2324, align 4, !tbaa !190
  %2326 = fadd float %2321, %2325
  %2327 = load ptr, ptr %9, align 8, !tbaa !5
  %2328 = getelementptr inbounds %struct.ImGuiWindow, ptr %2327, i32 0, i32 15
  %2329 = getelementptr inbounds %struct.ImVec2, ptr %2328, i32 0, i32 1
  %2330 = load float, ptr %2329, align 4, !tbaa !214
  %2331 = fsub float %2326, %2330
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %84, float noundef %2320, float noundef %2331)
  %2332 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2309, ptr noundef nonnull align 4 dereferenceable(8) %84)
  store <2 x float> %2332, ptr %83, align 4
  %2333 = load ptr, ptr %9, align 8, !tbaa !5
  %2334 = getelementptr inbounds %struct.ImGuiWindow, ptr %2333, i32 0, i32 53
  %2335 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2334, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2335, ptr align 4 %83, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #13
  %2336 = load ptr, ptr %9, align 8, !tbaa !5
  %2337 = getelementptr inbounds %struct.ImGuiWindow, ptr %2336, i32 0, i32 53
  %2338 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2337, i32 0, i32 2
  %2339 = load ptr, ptr %9, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.ImGuiWindow, ptr %2339, i32 0, i32 53
  %2341 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2340, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2341, ptr align 8 %2338, i64 8, i1 false), !tbaa.struct !109
  %2342 = load ptr, ptr %9, align 8, !tbaa !5
  %2343 = getelementptr inbounds %struct.ImGuiWindow, ptr %2342, i32 0, i32 53
  %2344 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2343, i32 0, i32 0
  %2345 = load ptr, ptr %9, align 8, !tbaa !5
  %2346 = getelementptr inbounds %struct.ImGuiWindow, ptr %2345, i32 0, i32 53
  %2347 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2346, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2347, ptr align 8 %2344, i64 8, i1 false), !tbaa.struct !109
  %2348 = load ptr, ptr %9, align 8, !tbaa !5
  %2349 = getelementptr inbounds %struct.ImGuiWindow, ptr %2348, i32 0, i32 53
  %2350 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2349, i32 0, i32 2
  %2351 = load ptr, ptr %9, align 8, !tbaa !5
  %2352 = getelementptr inbounds %struct.ImGuiWindow, ptr %2351, i32 0, i32 53
  %2353 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2352, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2353, ptr align 8 %2350, i64 8, i1 false), !tbaa.struct !109
  %2354 = load ptr, ptr %9, align 8, !tbaa !5
  %2355 = getelementptr inbounds %struct.ImGuiWindow, ptr %2354, i32 0, i32 53
  %2356 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2355, i32 0, i32 2
  %2357 = load ptr, ptr %9, align 8, !tbaa !5
  %2358 = getelementptr inbounds %struct.ImGuiWindow, ptr %2357, i32 0, i32 53
  %2359 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2358, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2359, ptr align 8 %2356, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %85, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %2360 = load ptr, ptr %9, align 8, !tbaa !5
  %2361 = getelementptr inbounds %struct.ImGuiWindow, ptr %2360, i32 0, i32 53
  %2362 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2361, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2362, ptr align 4 %85, i64 8, i1 false), !tbaa.struct !109
  %2363 = load ptr, ptr %9, align 8, !tbaa !5
  %2364 = getelementptr inbounds %struct.ImGuiWindow, ptr %2363, i32 0, i32 53
  %2365 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2364, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2365, ptr align 4 %2362, i64 8, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #13
  %2366 = load ptr, ptr %9, align 8, !tbaa !5
  %2367 = getelementptr inbounds %struct.ImGuiWindow, ptr %2366, i32 0, i32 53
  %2368 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2367, i32 0, i32 8
  store float 0.000000e+00, ptr %2368, align 4, !tbaa !225
  %2369 = load ptr, ptr %9, align 8, !tbaa !5
  %2370 = getelementptr inbounds %struct.ImGuiWindow, ptr %2369, i32 0, i32 53
  %2371 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2370, i32 0, i32 7
  store float 0.000000e+00, ptr %2371, align 8, !tbaa !226
  %2372 = load ptr, ptr %9, align 8, !tbaa !5
  %2373 = getelementptr inbounds %struct.ImGuiWindow, ptr %2372, i32 0, i32 53
  %2374 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2373, i32 0, i32 16
  store i32 0, ptr %2374, align 4, !tbaa !227
  %2375 = load ptr, ptr %9, align 8, !tbaa !5
  %2376 = getelementptr inbounds %struct.ImGuiWindow, ptr %2375, i32 0, i32 53
  %2377 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2376, i32 0, i32 18
  %2378 = load i32, ptr %2377, align 4, !tbaa !228
  %2379 = load ptr, ptr %9, align 8, !tbaa !5
  %2380 = getelementptr inbounds %struct.ImGuiWindow, ptr %2379, i32 0, i32 53
  %2381 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2380, i32 0, i32 17
  store i32 %2378, ptr %2381, align 8, !tbaa !229
  %2382 = load ptr, ptr %9, align 8, !tbaa !5
  %2383 = getelementptr inbounds %struct.ImGuiWindow, ptr %2382, i32 0, i32 53
  %2384 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2383, i32 0, i32 18
  store i32 0, ptr %2384, align 4, !tbaa !228
  %2385 = load ptr, ptr %9, align 8, !tbaa !5
  %2386 = getelementptr inbounds %struct.ImGuiWindow, ptr %2385, i32 0, i32 53
  %2387 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2386, i32 0, i32 20
  store i8 0, ptr %2387, align 4, !tbaa !230
  %2388 = load ptr, ptr %9, align 8, !tbaa !5
  %2389 = getelementptr inbounds %struct.ImGuiWindow, ptr %2388, i32 0, i32 16
  %2390 = getelementptr inbounds %struct.ImVec2, ptr %2389, i32 0, i32 1
  %2391 = load float, ptr %2390, align 4, !tbaa !191
  %2392 = fcmp ogt float %2391, 0.000000e+00
  %2393 = load ptr, ptr %9, align 8, !tbaa !5
  %2394 = getelementptr inbounds %struct.ImGuiWindow, ptr %2393, i32 0, i32 53
  %2395 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2394, i32 0, i32 21
  %2396 = zext i1 %2392 to i8
  store i8 %2396, ptr %2395, align 1, !tbaa !231
  %2397 = load ptr, ptr %9, align 8, !tbaa !5
  %2398 = getelementptr inbounds %struct.ImGuiWindow, ptr %2397, i32 0, i32 53
  %2399 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2398, i32 0, i32 22
  store i8 0, ptr %2399, align 2, !tbaa !232
  %2400 = load ptr, ptr %9, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct.ImGuiWindow, ptr %2400, i32 0, i32 53
  %2402 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2401, i32 0, i32 25
  %2403 = load ptr, ptr %8, align 8, !tbaa !5
  %2404 = getelementptr inbounds %struct.ImGuiStyle, ptr %2403, i32 0, i32 14
  %2405 = getelementptr inbounds %struct.ImVec2, ptr %2404, i32 0, i32 0
  %2406 = load float, ptr %2405, align 4, !tbaa !145
  %2407 = load i8, ptr %13, align 1, !tbaa !79, !range !75, !noundef !76
  %2408 = trunc i8 %2407 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36) %2402, i32 noundef 3, float noundef %2406, i1 noundef zeroext %2408)
  %2409 = load ptr, ptr %9, align 8, !tbaa !5
  %2410 = getelementptr inbounds %struct.ImGuiWindow, ptr %2409, i32 0, i32 53
  %2411 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2410, i32 0, i32 26
  store i32 0, ptr %2411, align 4, !tbaa !233
  %2412 = load ptr, ptr %9, align 8, !tbaa !5
  %2413 = getelementptr inbounds %struct.ImGuiWindow, ptr %2412, i32 0, i32 53
  %2414 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2413, i32 0, i32 27
  store i32 0, ptr %2414, align 8, !tbaa !234
  %2415 = load ptr, ptr %9, align 8, !tbaa !5
  %2416 = getelementptr inbounds %struct.ImGuiWindow, ptr %2415, i32 0, i32 53
  %2417 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2416, i32 0, i32 29
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2417, i32 noundef 0)
  %2418 = load ptr, ptr %9, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.ImGuiWindow, ptr %2418, i32 0, i32 67
  %2420 = load ptr, ptr %9, align 8, !tbaa !5
  %2421 = getelementptr inbounds %struct.ImGuiWindow, ptr %2420, i32 0, i32 53
  %2422 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2421, i32 0, i32 30
  store ptr %2419, ptr %2422, align 8, !tbaa !235
  %2423 = load ptr, ptr %9, align 8, !tbaa !5
  %2424 = getelementptr inbounds %struct.ImGuiWindow, ptr %2423, i32 0, i32 53
  %2425 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2424, i32 0, i32 31
  store ptr null, ptr %2425, align 8, !tbaa !236
  %2426 = load ptr, ptr %9, align 8, !tbaa !5
  %2427 = getelementptr inbounds %struct.ImGuiWindow, ptr %2426, i32 0, i32 53
  %2428 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2427, i32 0, i32 33
  store i32 1, ptr %2428, align 4, !tbaa !237
  %2429 = load ptr, ptr %17, align 8, !tbaa !5
  %2430 = icmp ne ptr %2429, null
  br i1 %2430, label %2431, label %2436

2431:                                             ; preds = %2279
  %2432 = load ptr, ptr %17, align 8, !tbaa !5
  %2433 = getelementptr inbounds %struct.ImGuiWindow, ptr %2432, i32 0, i32 53
  %2434 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2433, i32 0, i32 33
  %2435 = load i32, ptr %2434, align 4, !tbaa !237
  br label %2437

2436:                                             ; preds = %2279
  br label %2437

2437:                                             ; preds = %2436, %2431
  %2438 = phi i32 [ %2435, %2431 ], [ 1, %2436 ]
  %2439 = load ptr, ptr %9, align 8, !tbaa !5
  %2440 = getelementptr inbounds %struct.ImGuiWindow, ptr %2439, i32 0, i32 53
  %2441 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2440, i32 0, i32 34
  store i32 %2438, ptr %2441, align 8, !tbaa !238
  %2442 = load ptr, ptr %9, align 8, !tbaa !5
  %2443 = getelementptr inbounds %struct.ImGuiWindow, ptr %2442, i32 0, i32 53
  %2444 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2443, i32 0, i32 36
  store i32 -1, ptr %2444, align 8, !tbaa !239
  %2445 = load ptr, ptr %9, align 8, !tbaa !5
  %2446 = getelementptr inbounds %struct.ImGuiWindow, ptr %2445, i32 0, i32 53
  %2447 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2446, i32 0, i32 35
  store i32 -1, ptr %2447, align 4, !tbaa !240
  %2448 = load ptr, ptr %9, align 8, !tbaa !5
  %2449 = getelementptr inbounds %struct.ImGuiWindow, ptr %2448, i32 0, i32 65
  %2450 = load float, ptr %2449, align 8, !tbaa !186
  %2451 = load ptr, ptr %9, align 8, !tbaa !5
  %2452 = getelementptr inbounds %struct.ImGuiWindow, ptr %2451, i32 0, i32 53
  %2453 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2452, i32 0, i32 38
  store float %2450, ptr %2453, align 8, !tbaa !241
  %2454 = load ptr, ptr %9, align 8, !tbaa !5
  %2455 = getelementptr inbounds %struct.ImGuiWindow, ptr %2454, i32 0, i32 53
  %2456 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2455, i32 0, i32 39
  store float -1.000000e+00, ptr %2456, align 4, !tbaa !242
  %2457 = load ptr, ptr %9, align 8, !tbaa !5
  %2458 = getelementptr inbounds %struct.ImGuiWindow, ptr %2457, i32 0, i32 53
  %2459 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2458, i32 0, i32 40
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2459, i32 noundef 0)
  %2460 = load ptr, ptr %9, align 8, !tbaa !5
  %2461 = getelementptr inbounds %struct.ImGuiWindow, ptr %2460, i32 0, i32 53
  %2462 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2461, i32 0, i32 41
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2462, i32 noundef 0)
  %2463 = load ptr, ptr %9, align 8, !tbaa !5
  %2464 = getelementptr inbounds %struct.ImGuiWindow, ptr %2463, i32 0, i32 39
  %2465 = load i8, ptr %2464, align 4, !tbaa !157
  %2466 = sext i8 %2465 to i32
  %2467 = icmp sgt i32 %2466, 0
  br i1 %2467, label %2468, label %2473

2468:                                             ; preds = %2437
  %2469 = load ptr, ptr %9, align 8, !tbaa !5
  %2470 = getelementptr inbounds %struct.ImGuiWindow, ptr %2469, i32 0, i32 39
  %2471 = load i8, ptr %2470, align 4, !tbaa !157
  %2472 = add i8 %2471, -1
  store i8 %2472, ptr %2470, align 4, !tbaa !157
  br label %2473

2473:                                             ; preds = %2468, %2437
  %2474 = load ptr, ptr %9, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.ImGuiWindow, ptr %2474, i32 0, i32 40
  %2476 = load i8, ptr %2475, align 1, !tbaa !158
  %2477 = sext i8 %2476 to i32
  %2478 = icmp sgt i32 %2477, 0
  br i1 %2478, label %2479, label %2484

2479:                                             ; preds = %2473
  %2480 = load ptr, ptr %9, align 8, !tbaa !5
  %2481 = getelementptr inbounds %struct.ImGuiWindow, ptr %2480, i32 0, i32 40
  %2482 = load i8, ptr %2481, align 1, !tbaa !158
  %2483 = add i8 %2482, -1
  store i8 %2483, ptr %2481, align 1, !tbaa !158
  br label %2484

2484:                                             ; preds = %2479, %2473
  %2485 = load i8, ptr %51, align 1, !tbaa !79, !range !75, !noundef !76
  %2486 = trunc i8 %2485 to i1
  br i1 %2486, label %2487, label %2490

2487:                                             ; preds = %2484
  %2488 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %2488)
  %2489 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %2489, i1 noundef zeroext false)
  br label %2490

2490:                                             ; preds = %2487, %2484
  %2491 = load i32, ptr %6, align 4, !tbaa !9
  %2492 = and i32 %2491, 1
  %2493 = icmp ne i32 %2492, 0
  br i1 %2493, label %2498, label %2494

2494:                                             ; preds = %2490
  %2495 = load ptr, ptr %9, align 8, !tbaa !5
  %2496 = load ptr, ptr %4, align 8, !tbaa !5
  %2497 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %2495, ptr noundef nonnull align 4 dereferenceable(16) %66, ptr noundef %2496, ptr noundef %2497)
  br label %2498

2498:                                             ; preds = %2494, %2490
  %2499 = load ptr, ptr %9, align 8, !tbaa !5
  %2500 = getelementptr inbounds %struct.ImGuiWindow, ptr %2499, i32 0, i32 61
  %2501 = getelementptr inbounds %struct.ImVec2ih, ptr %2500, i32 0, i32 1
  store i16 0, ptr %2501, align 2, !tbaa !243
  %2502 = load ptr, ptr %9, align 8, !tbaa !5
  %2503 = getelementptr inbounds %struct.ImGuiWindow, ptr %2502, i32 0, i32 61
  %2504 = getelementptr inbounds %struct.ImVec2ih, ptr %2503, i32 0, i32 0
  store i16 0, ptr %2504, align 8, !tbaa !244
  %2505 = load ptr, ptr %9, align 8, !tbaa !5
  %2506 = load ptr, ptr %9, align 8, !tbaa !5
  %2507 = getelementptr inbounds %struct.ImGuiWindow, ptr %2506, i32 0, i32 13
  %2508 = load i32, ptr %2507, align 4, !tbaa !245
  %2509 = getelementptr inbounds %struct.ImRect, ptr %66, i32 0, i32 0
  %2510 = getelementptr inbounds %struct.ImRect, ptr %66, i32 0, i32 1
  %2511 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2509, ptr noundef nonnull align 4 dereferenceable(8) %2510, i1 noundef zeroext false)
  %2512 = zext i1 %2511 to i64
  %2513 = select i1 %2511, i32 1, i32 0
  call void @_ZN5ImGui15SetLastItemDataEP11ImGuiWindowjiRK6ImRect(ptr noundef %2505, i32 noundef %2508, i32 noundef %2513, ptr noundef nonnull align 4 dereferenceable(16) %66)
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  br label %2516

2514:                                             ; preds = %596
  %2515 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %2515)
  br label %2516

2516:                                             ; preds = %2514, %2498
  %2517 = load ptr, ptr %7, align 8, !tbaa !5
  %2518 = getelementptr inbounds %struct.ImGuiContext, ptr %2517, i32 0, i32 78
  %2519 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8ImVectorIiE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %2518)
  %2520 = load i32, ptr %2519, align 4, !tbaa !9
  %2521 = load ptr, ptr %9, align 8, !tbaa !5
  %2522 = getelementptr inbounds %struct.ImGuiWindow, ptr %2521, i32 0, i32 53
  %2523 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2522, i32 0, i32 37
  store i32 %2520, ptr %2523, align 4, !tbaa !246
  %2524 = load i32, ptr %6, align 4, !tbaa !9
  %2525 = and i32 %2524, 16777216
  %2526 = icmp ne i32 %2525, 0
  br i1 %2526, label %2527, label %2532

2527:                                             ; preds = %2516
  %2528 = load ptr, ptr %17, align 8, !tbaa !5
  %2529 = getelementptr inbounds %struct.ImGuiWindow, ptr %2528, i32 0, i32 53
  %2530 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2529, i32 0, i32 19
  %2531 = load i32, ptr %2530, align 8, !tbaa !247
  br label %2533

2532:                                             ; preds = %2516
  br label %2533

2533:                                             ; preds = %2532, %2527
  %2534 = phi i32 [ %2531, %2527 ], [ 0, %2532 ]
  %2535 = load ptr, ptr %9, align 8, !tbaa !5
  %2536 = getelementptr inbounds %struct.ImGuiWindow, ptr %2535, i32 0, i32 53
  %2537 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2536, i32 0, i32 19
  store i32 %2534, ptr %2537, align 8, !tbaa !247
  %2538 = load ptr, ptr %9, align 8, !tbaa !5
  %2539 = getelementptr inbounds %struct.ImGuiWindow, ptr %2538, i32 0, i32 56
  %2540 = getelementptr inbounds %struct.ImRect, ptr %2539, i32 0, i32 0
  %2541 = load ptr, ptr %9, align 8, !tbaa !5
  %2542 = getelementptr inbounds %struct.ImGuiWindow, ptr %2541, i32 0, i32 56
  %2543 = getelementptr inbounds %struct.ImRect, ptr %2542, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2540, ptr noundef nonnull align 4 dereferenceable(8) %2543, i1 noundef zeroext true)
  %2544 = load ptr, ptr %9, align 8, !tbaa !5
  %2545 = getelementptr inbounds %struct.ImGuiWindow, ptr %2544, i32 0, i32 25
  store i8 0, ptr %2545, align 8, !tbaa !248
  %2546 = load ptr, ptr %9, align 8, !tbaa !5
  %2547 = getelementptr inbounds %struct.ImGuiWindow, ptr %2546, i32 0, i32 35
  %2548 = load i16, ptr %2547, align 2, !tbaa !249
  %2549 = add i16 %2548, 1
  store i16 %2549, ptr %2547, align 2, !tbaa !249
  %2550 = load ptr, ptr %7, align 8, !tbaa !5
  %2551 = getelementptr inbounds %struct.ImGuiContext, ptr %2550, i32 0, i32 71
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(108) %2551)
  %2552 = load i8, ptr %12, align 1, !tbaa !79, !range !75, !noundef !76
  %2553 = trunc i8 %2552 to i1
  br i1 %2553, label %2554, label %2721

2554:                                             ; preds = %2533
  %2555 = load i32, ptr %6, align 4, !tbaa !9
  %2556 = and i32 %2555, 16777216
  %2557 = icmp ne i32 %2556, 0
  br i1 %2557, label %2558, label %2650

2558:                                             ; preds = %2554
  %2559 = load i32, ptr %6, align 4, !tbaa !9
  %2560 = and i32 %2559, 1
  %2561 = icmp ne i32 %2560, 0
  br i1 %2561, label %2562, label %2563

2562:                                             ; preds = %2558
  br label %2565

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

2564:                                             ; No predecessors!
  br label %2565

2565:                                             ; preds = %2564, %2562
  %2566 = load i32, ptr %6, align 4, !tbaa !9
  %2567 = and i32 %2566, 64
  %2568 = icmp ne i32 %2567, 0
  br i1 %2568, label %2615, label %2569

2569:                                             ; preds = %2565
  %2570 = load ptr, ptr %9, align 8, !tbaa !5
  %2571 = getelementptr inbounds %struct.ImGuiWindow, ptr %2570, i32 0, i32 39
  %2572 = load i8, ptr %2571, align 4, !tbaa !157
  %2573 = sext i8 %2572 to i32
  %2574 = icmp sle i32 %2573, 0
  br i1 %2574, label %2575, label %2615

2575:                                             ; preds = %2569
  %2576 = load ptr, ptr %9, align 8, !tbaa !5
  %2577 = getelementptr inbounds %struct.ImGuiWindow, ptr %2576, i32 0, i32 40
  %2578 = load i8, ptr %2577, align 1, !tbaa !158
  %2579 = sext i8 %2578 to i32
  %2580 = icmp sle i32 %2579, 0
  br i1 %2580, label %2581, label %2615

2581:                                             ; preds = %2575
  %2582 = load ptr, ptr %7, align 8, !tbaa !5
  %2583 = getelementptr inbounds %struct.ImGuiContext, ptr %2582, i32 0, i32 206
  %2584 = load i8, ptr %2583, align 8, !tbaa !250, !range !75, !noundef !76
  %2585 = trunc i8 %2584 to i1
  br i1 %2585, label %2614, label %2586

2586:                                             ; preds = %2581
  %2587 = load ptr, ptr %9, align 8, !tbaa !5
  %2588 = getelementptr inbounds %struct.ImGuiWindow, ptr %2587, i32 0, i32 54
  %2589 = getelementptr inbounds %struct.ImRect, ptr %2588, i32 0, i32 0
  %2590 = getelementptr inbounds %struct.ImVec2, ptr %2589, i32 0, i32 0
  %2591 = load float, ptr %2590, align 8, !tbaa !251
  %2592 = load ptr, ptr %9, align 8, !tbaa !5
  %2593 = getelementptr inbounds %struct.ImGuiWindow, ptr %2592, i32 0, i32 54
  %2594 = getelementptr inbounds %struct.ImRect, ptr %2593, i32 0, i32 1
  %2595 = getelementptr inbounds %struct.ImVec2, ptr %2594, i32 0, i32 0
  %2596 = load float, ptr %2595, align 8, !tbaa !252
  %2597 = fcmp oge float %2591, %2596
  br i1 %2597, label %2610, label %2598

2598:                                             ; preds = %2586
  %2599 = load ptr, ptr %9, align 8, !tbaa !5
  %2600 = getelementptr inbounds %struct.ImGuiWindow, ptr %2599, i32 0, i32 54
  %2601 = getelementptr inbounds %struct.ImRect, ptr %2600, i32 0, i32 0
  %2602 = getelementptr inbounds %struct.ImVec2, ptr %2601, i32 0, i32 1
  %2603 = load float, ptr %2602, align 4, !tbaa !253
  %2604 = load ptr, ptr %9, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.ImGuiWindow, ptr %2604, i32 0, i32 54
  %2606 = getelementptr inbounds %struct.ImRect, ptr %2605, i32 0, i32 1
  %2607 = getelementptr inbounds %struct.ImVec2, ptr %2606, i32 0, i32 1
  %2608 = load float, ptr %2607, align 4, !tbaa !254
  %2609 = fcmp oge float %2603, %2608
  br i1 %2609, label %2610, label %2613

2610:                                             ; preds = %2598, %2586
  %2611 = load ptr, ptr %9, align 8, !tbaa !5
  %2612 = getelementptr inbounds %struct.ImGuiWindow, ptr %2611, i32 0, i32 44
  store i8 1, ptr %2612, align 4, !tbaa !133
  br label %2613

2613:                                             ; preds = %2610, %2598
  br label %2614

2614:                                             ; preds = %2613, %2581
  br label %2615

2615:                                             ; preds = %2614, %2575, %2569, %2565
  %2616 = load ptr, ptr %17, align 8, !tbaa !5
  %2617 = icmp ne ptr %2616, null
  br i1 %2617, label %2618, label %2632

2618:                                             ; preds = %2615
  %2619 = load ptr, ptr %17, align 8, !tbaa !5
  %2620 = getelementptr inbounds %struct.ImGuiWindow, ptr %2619, i32 0, i32 26
  %2621 = load i8, ptr %2620, align 1, !tbaa !154, !range !75, !noundef !76
  %2622 = trunc i8 %2621 to i1
  br i1 %2622, label %2629, label %2623

2623:                                             ; preds = %2618
  %2624 = load ptr, ptr %17, align 8, !tbaa !5
  %2625 = getelementptr inbounds %struct.ImGuiWindow, ptr %2624, i32 0, i32 44
  %2626 = load i8, ptr %2625, align 4, !tbaa !133
  %2627 = sext i8 %2626 to i32
  %2628 = icmp sgt i32 %2627, 0
  br i1 %2628, label %2629, label %2632

2629:                                             ; preds = %2623, %2618
  %2630 = load ptr, ptr %9, align 8, !tbaa !5
  %2631 = getelementptr inbounds %struct.ImGuiWindow, ptr %2630, i32 0, i32 44
  store i8 1, ptr %2631, align 4, !tbaa !133
  br label %2632

2632:                                             ; preds = %2629, %2623, %2615
  %2633 = load ptr, ptr %17, align 8, !tbaa !5
  %2634 = icmp ne ptr %2633, null
  br i1 %2634, label %2635, label %2649

2635:                                             ; preds = %2632
  %2636 = load ptr, ptr %17, align 8, !tbaa !5
  %2637 = getelementptr inbounds %struct.ImGuiWindow, ptr %2636, i32 0, i32 26
  %2638 = load i8, ptr %2637, align 1, !tbaa !154, !range !75, !noundef !76
  %2639 = trunc i8 %2638 to i1
  br i1 %2639, label %2646, label %2640

2640:                                             ; preds = %2635
  %2641 = load ptr, ptr %17, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.ImGuiWindow, ptr %2641, i32 0, i32 45
  %2643 = load i8, ptr %2642, align 1, !tbaa !91
  %2644 = sext i8 %2643 to i32
  %2645 = icmp sgt i32 %2644, 0
  br i1 %2645, label %2646, label %2649

2646:                                             ; preds = %2640, %2635
  %2647 = load ptr, ptr %9, align 8, !tbaa !5
  %2648 = getelementptr inbounds %struct.ImGuiWindow, ptr %2647, i32 0, i32 45
  store i8 1, ptr %2648, align 1, !tbaa !91
  br label %2649

2649:                                             ; preds = %2646, %2640, %2632
  br label %2650

2650:                                             ; preds = %2649, %2554
  %2651 = load ptr, ptr %8, align 8, !tbaa !5
  %2652 = getelementptr inbounds %struct.ImGuiStyle, ptr %2651, i32 0, i32 0
  %2653 = load float, ptr %2652, align 4, !tbaa !255
  %2654 = fcmp ole float %2653, 0.000000e+00
  br i1 %2654, label %2655, label %2658

2655:                                             ; preds = %2650
  %2656 = load ptr, ptr %9, align 8, !tbaa !5
  %2657 = getelementptr inbounds %struct.ImGuiWindow, ptr %2656, i32 0, i32 44
  store i8 1, ptr %2657, align 4, !tbaa !133
  br label %2658

2658:                                             ; preds = %2655, %2650
  %2659 = load ptr, ptr %9, align 8, !tbaa !5
  %2660 = getelementptr inbounds %struct.ImGuiWindow, ptr %2659, i32 0, i32 44
  %2661 = load i8, ptr %2660, align 4, !tbaa !133
  %2662 = sext i8 %2661 to i32
  %2663 = icmp sgt i32 %2662, 0
  br i1 %2663, label %2676, label %2664

2664:                                             ; preds = %2658
  %2665 = load ptr, ptr %9, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.ImGuiWindow, ptr %2665, i32 0, i32 45
  %2667 = load i8, ptr %2666, align 1, !tbaa !91
  %2668 = sext i8 %2667 to i32
  %2669 = icmp sgt i32 %2668, 0
  br i1 %2669, label %2676, label %2670

2670:                                             ; preds = %2664
  %2671 = load ptr, ptr %9, align 8, !tbaa !5
  %2672 = getelementptr inbounds %struct.ImGuiWindow, ptr %2671, i32 0, i32 46
  %2673 = load i8, ptr %2672, align 2, !tbaa !134
  %2674 = sext i8 %2673 to i32
  %2675 = icmp sgt i32 %2674, 0
  br label %2676

2676:                                             ; preds = %2670, %2664, %2658
  %2677 = phi i1 [ true, %2664 ], [ true, %2658 ], [ %2675, %2670 ]
  %2678 = load ptr, ptr %9, align 8, !tbaa !5
  %2679 = getelementptr inbounds %struct.ImGuiWindow, ptr %2678, i32 0, i32 30
  %2680 = zext i1 %2677 to i8
  store i8 %2680, ptr %2679, align 1, !tbaa !256
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #13
  store i8 0, ptr %86, align 1, !tbaa !79
  %2681 = load ptr, ptr %9, align 8, !tbaa !5
  %2682 = getelementptr inbounds %struct.ImGuiWindow, ptr %2681, i32 0, i32 26
  %2683 = load i8, ptr %2682, align 1, !tbaa !154, !range !75, !noundef !76
  %2684 = trunc i8 %2683 to i1
  br i1 %2684, label %2695, label %2685

2685:                                             ; preds = %2676
  %2686 = load ptr, ptr %9, align 8, !tbaa !5
  %2687 = getelementptr inbounds %struct.ImGuiWindow, ptr %2686, i32 0, i32 23
  %2688 = load i8, ptr %2687, align 2, !tbaa !122, !range !75, !noundef !76
  %2689 = trunc i8 %2688 to i1
  br i1 %2689, label %2690, label %2695

2690:                                             ; preds = %2685
  %2691 = load ptr, ptr %9, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.ImGuiWindow, ptr %2691, i32 0, i32 30
  %2693 = load i8, ptr %2692, align 1, !tbaa !256, !range !75, !noundef !76
  %2694 = trunc i8 %2693 to i1
  br i1 %2694, label %2695, label %2715

2695:                                             ; preds = %2690, %2685, %2676
  %2696 = load ptr, ptr %9, align 8, !tbaa !5
  %2697 = getelementptr inbounds %struct.ImGuiWindow, ptr %2696, i32 0, i32 39
  %2698 = load i8, ptr %2697, align 4, !tbaa !157
  %2699 = sext i8 %2698 to i32
  %2700 = icmp sle i32 %2699, 0
  br i1 %2700, label %2701, label %2714

2701:                                             ; preds = %2695
  %2702 = load ptr, ptr %9, align 8, !tbaa !5
  %2703 = getelementptr inbounds %struct.ImGuiWindow, ptr %2702, i32 0, i32 40
  %2704 = load i8, ptr %2703, align 1, !tbaa !158
  %2705 = sext i8 %2704 to i32
  %2706 = icmp sle i32 %2705, 0
  br i1 %2706, label %2707, label %2714

2707:                                             ; preds = %2701
  %2708 = load ptr, ptr %9, align 8, !tbaa !5
  %2709 = getelementptr inbounds %struct.ImGuiWindow, ptr %2708, i32 0, i32 45
  %2710 = load i8, ptr %2709, align 1, !tbaa !91
  %2711 = sext i8 %2710 to i32
  %2712 = icmp sle i32 %2711, 0
  br i1 %2712, label %2713, label %2714

2713:                                             ; preds = %2707
  store i8 1, ptr %86, align 1, !tbaa !79
  br label %2714

2714:                                             ; preds = %2713, %2707, %2701, %2695
  br label %2715

2715:                                             ; preds = %2714, %2690
  %2716 = load i8, ptr %86, align 1, !tbaa !79, !range !75, !noundef !76
  %2717 = trunc i8 %2716 to i1
  %2718 = load ptr, ptr %9, align 8, !tbaa !5
  %2719 = getelementptr inbounds %struct.ImGuiWindow, ptr %2718, i32 0, i32 28
  %2720 = zext i1 %2717 to i8
  store i8 %2720, ptr %2719, align 1, !tbaa !257
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #13
  br label %2721

2721:                                             ; preds = %2715, %2533
  %2722 = load ptr, ptr %9, align 8, !tbaa !5
  %2723 = getelementptr inbounds %struct.ImGuiWindow, ptr %2722, i32 0, i32 28
  %2724 = load i8, ptr %2723, align 1, !tbaa !257, !range !75, !noundef !76
  %2725 = trunc i8 %2724 to i1
  %2726 = xor i1 %2725, true
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #13
  call void @llvm.lifetime.end.p0(i64 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 %2726
}

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

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

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

; 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 dso_local void @_ZN15ImGuiStackSizes17SetToCurrentStateEv(ptr noundef nonnull align 2 dereferenceable(14)) #1 align 2

; 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

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

; 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(993)) #8 align 2

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

; 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: 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 { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(993)) #8 align 2

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

; 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 @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), 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 @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #11 align 2

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { "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 6772}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !20, i64 5472, !6, i64 6520, !17, i64 6528, !17, i64 6532, !21, i64 6536, !23, i64 6752, !10, i64 6760, !10, i64 6764, !10, i64 6768, !14, i64 6772, !14, i64 6773, !14, i64 6774, !14, i64 6775, !14, i64 6776, !10, i64 6780, !6, i64 6784, !24, i64 6792, !24, i64 6808, !24, i64 6824, !24, i64 6840, !25, i64 6856, !10, i64 6872, !6, i64 6880, !6, i64 6888, !6, i64 6896, !6, i64 6904, !6, i64 6912, !6, i64 6920, !16, i64 6928, !17, i64 6936, !10, i64 6940, !10, i64 6944, !14, i64 6948, !14, i64 6949, !14, i64 6950, !14, i64 6951, !17, i64 6952, !17, i64 6956, !10, i64 6960, !10, i64 6964, !17, i64 6968, !14, i64 6972, !14, i64 6973, !14, i64 6974, !14, i64 6975, !14, i64 6976, !14, i64 6977, !14, i64 6978, !10, i64 6980, !10, i64 6984, !27, i64 6992, !16, i64 7000, !6, i64 7008, !28, i64 7016, !10, i64 7020, !10, i64 7024, !14, i64 7028, !14, i64 7029, !6, i64 7032, !10, i64 7040, !17, i64 7044, !29, i64 7048, !31, i64 7160, !32, i64 7184, !33, i64 7200, !34, i64 7216, !35, i64 7232, !36, i64 7248, !37, i64 7264, !38, i64 7280, !38, i64 7296, !6, i64 7312, !10, i64 7320, !10, i64 7324, !10, i64 7328, !10, i64 7332, !10, i64 7336, !10, i64 7340, !10, i64 7344, !10, i64 7348, !10, i64 7352, !10, i64 7356, !10, i64 7360, !28, i64 7364, !30, i64 7368, !10, i64 7384, !39, i64 7388, !10, i64 7392, !14, i64 7396, !14, i64 7397, !14, i64 7398, !14, i64 7399, !14, i64 7400, !14, i64 7401, !14, i64 7402, !10, i64 7404, !30, i64 7408, !14, i64 7424, !10, i64 7428, !40, i64 7432, !10, i64 7436, !10, i64 7440, !10, i64 7444, !10, i64 7448, !41, i64 7456, !41, i64 7504, !41, i64 7552, !6, i64 7600, !10, i64 7608, !6, i64 7616, !6, i64 7624, !6, i64 7632, !17, i64 7640, !17, i64 7644, !14, i64 7648, !6, i64 7656, !6, i64 7664, !10, i64 7672, !10, i64 7676, !10, i64 7680, !10, i64 7684, !14, i64 7688, !42, i64 7696, !43, i64 7752, !17, i64 7784, !44, i64 7792, !44, i64 7992, !10, i64 8192, !14, i64 8196, !14, i64 8197, !14, i64 8198, !10, i64 8200, !10, i64 8204, !10, i64 8208, !53, i64 8216, !30, i64 8280, !10, i64 8296, !10, i64 8300, !17, i64 8304, !10, i64 8308, !10, i64 8312, !10, i64 8316, !10, i64 8320, !54, i64 8328, !7, i64 8344, !6, i64 8360, !55, i64 8368, !57, i64 8408, !58, i64 8424, !52, i64 8440, !6, i64 8456, !59, i64 8464, !57, i64 8504, !61, i64 8520, !16, i64 8536, !62, i64 8544, !66, i64 12280, !10, i64 12392, !10, i64 12396, !17, i64 12400, !17, i64 12404, !7, i64 12408, !22, i64 12420, !17, i64 12436, !14, i64 12440, !14, i64 12441, !17, i64 12444, !17, i64 12448, !17, i64 12452, !10, i64 12456, !17, i64 12460, !63, i64 12464, !35, i64 12480, !16, i64 12496, !16, i64 12504, !7, i64 12512, !14, i64 12513, !17, i64 12516, !68, i64 12520, !69, i64 12536, !70, i64 12552, !71, i64 12568, !72, i64 12584, !14, i64 12600, !73, i64 12604, !6, i64 12608, !68, i64 12616, !17, i64 12632, !14, i64 12636, !10, i64 12640, !10, i64 12644, !10, i64 12648, !14, i64 12652, !10, i64 12656, !74, i64 12660, !7, i64 12676, !10, i64 13156, !17, i64 13160, !10, i64 13164, !10, i64 13168, !10, i64 13172, !7, i64 13176}
!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, !17, i64 200, !6, 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, !14, i64 312, !14, i64 313, !14, i64 314, !14, i64 315, !7, i64 316, !7, i64 828, !14, i64 912, !14, i64 913, !14, i64 914, !14, i64 915, !14, i64 916, !14, i64 917, !14, i64 918, !17, i64 920, !10, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !16, i64 944, !10, i64 952, !16, i64 956, !7, i64 964, !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 = !{!"_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, !16, i64 96, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !17, i64 136, !17, i64 140, !10, i64 144, !16, i64 148, !16, i64 156, !16, i64 164, !16, i64 172, !17, i64 180, !14, i64 184, !14, i64 185, !14, i64 186, !17, i64 188, !17, i64 192, !7, i64 196}
!21 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !22, i64 28, !10, i64 44, !7, i64 48, !7, i64 144, !6, i64 208}
!22 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!23 = !{!"double", !7, i64 0}
!24 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"_ZTS12ImGuiStorage", !26, i64 0}
!26 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"long long", !7, i64 0}
!28 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!29 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !14, i64 56, !30, i64 60, !6, i64 80, !6, i64 88, !17, i64 96, !16, i64 100}
!30 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!31 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !17, i64 4, !10, i64 8, !10, i64 12, !14, i64 16}
!32 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!39 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!40 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!41 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !10, i64 8, !10, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !30, i64 28}
!42 = !{!"_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}
!43 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!44 = !{!"_ZTS10ImDrawList", !45, i64 0, !19, i64 16, !46, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !47, i64 88, !48, i64 104, !49, i64 120, !50, i64 136, !51, i64 168, !17, i64 192}
!45 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!50 = !{!"_ZTS15ImDrawCmdHeader", !22, i64 0, !6, i64 16, !10, i64 24}
!51 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !52, i64 8}
!52 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_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}
!54 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS6ImPoolI10ImGuiTableE", !56, i64 0, !25, i64 16, !10, i64 32}
!56 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !60, i64 0, !25, i64 16, !10, i64 32}
!60 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !19, i64 16, !63, i64 32, !63, i64 48, !14, i64 64, !10, i64 68, !17, i64 72, !64, i64 76, !17, i64 3704, !14, i64 3708, !14, i64 3709, !14, i64 3710, !10, i64 3712, !6, i64 3720, !6, i64 3728}
!63 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !17, i64 28, !65, i64 32}
!65 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !10, i64 3588, !10, i64 3592}
!66 = !{!"_ZTS6ImFont", !58, i64 0, !17, i64 16, !17, i64 20, !19, i64 24, !67, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !18, i64 80, !18, i64 82, !18, i64 84, !14, i64 86, !17, i64 88, !17, i64 92, !17, i64 96, !10, i64 100, !7, i64 104}
!67 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS15ImGuiTextBuffer", !63, i64 0}
!69 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !63, i64 0}
!71 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !63, i64 0}
!72 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!74 = !{!"_ZTS18ImGuiMetricsConfig", !14, i64 0, !14, i64 1, !14, i64 2, !14, i64 3, !14, i64 4, !10, i64 8, !10, i64 12}
!75 = !{i8 0, i8 2}
!76 = !{}
!77 = !{!13, !10, i64 6764}
!78 = !{!13, !10, i64 6760}
!79 = !{!14, !14, i64 0}
!80 = !{!81, !10, i64 640}
!81 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !17, i64 72, !17, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !16, i64 92, !16, i64 100, !16, i64 108, !16, i64 116, !16, i64 124, !16, i64 132, !14, i64 140, !14, i64 141, !14, i64 142, !14, i64 143, !14, i64 144, !14, i64 145, !14, i64 146, !14, i64 147, !14, i64 148, !14, i64 149, !14, i64 150, !14, i64 151, !7, i64 152, !18, i64 154, !18, i64 156, !18, i64 158, !10, i64 160, !7, i64 164, !7, i64 165, !7, i64 166, !14, i64 167, !10, i64 168, !7, i64 172, !7, i64 173, !7, i64 174, !10, i64 175, !10, i64 176, !10, i64 177, !16, i64 180, !16, i64 188, !35, i64 200, !82, i64 216, !30, i64 520, !30, i64 536, !30, i64 552, !30, i64 568, !30, i64 584, !30, i64 600, !30, i64 616, !86, i64 632, !86, i64 636, !10, i64 640, !17, i64 644, !17, i64 648, !25, i64 656, !87, i64 672, !17, i64 688, !10, i64 692, !6, i64 696, !44, i64 704, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !7, i64 944, !7, i64 952, !10, i64 984, !10, i64 988, !14, i64 992}
!82 = !{!"_ZTS19ImGuiWindowTempData", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !17, i64 56, !17, i64 60, !83, i64 64, !83, i64 68, !83, i64 72, !10, i64 76, !10, i64 80, !30, i64 84, !30, i64 100, !39, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !14, i64 132, !14, i64 133, !14, i64 134, !16, i64 136, !84, i64 144, !10, i64 180, !10, i64 184, !24, i64 192, !6, i64 208, !6, i64 216, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !17, i64 248, !17, i64 252, !58, i64 256, !58, i64 272, !85, i64 288}
!83 = !{!"_ZTS6ImVec1", !17, i64 0}
!84 = !{!"_ZTS16ImGuiMenuColumns", !17, i64 0, !17, i64 4, !17, i64 8, !7, i64 12, !7, i64 24}
!85 = !{!"_ZTS15ImGuiStackSizes", !18, i64 0, !18, i64 2, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !18, i64 12}
!86 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!87 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!88 = !{!13, !10, i64 6840}
!89 = !{!13, !14, i64 6773}
!90 = !{!81, !14, i64 150}
!91 = !{!81, !7, i64 173}
!92 = !{!13, !10, i64 7296}
!93 = !{!81, !10, i64 160}
!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 = !{!81, !14, i64 148}
!98 = !{!81, !10, i64 12}
!99 = !{!13, !23, i64 6752}
!100 = !{!81, !17, i64 644}
!101 = !{!81, !18, i64 156}
!102 = !{!13, !10, i64 6872}
!103 = !{!81, !18, i64 158}
!104 = !{!81, !6, i64 904}
!105 = !{!81, !10, i64 200}
!106 = !{!13, !6, i64 6880}
!107 = !{!13, !10, i64 7048}
!108 = !{!13, !10, i64 7052}
!109 = !{i64 0, i64 4, !110, i64 4, i64 4, !110}
!110 = !{!17, !17, i64 0}
!111 = !{!13, !10, i64 7056}
!112 = !{!13, !17, i64 7080}
!113 = !{!13, !17, i64 7084}
!114 = !{!13, !17, i64 7096}
!115 = !{!81, !17, i64 108}
!116 = !{!81, !17, i64 116}
!117 = !{!13, !17, i64 7100}
!118 = !{!81, !17, i64 112}
!119 = !{!81, !17, i64 120}
!120 = !{!13, !14, i64 7104}
!121 = !{!13, !10, i64 7060}
!122 = !{!81, !14, i64 142}
!123 = !{!81, !14, i64 151}
!124 = !{i64 0, i64 4, !110, i64 4, i64 4, !110, i64 8, i64 4, !110, i64 12, i64 4, !110}
!125 = !{!81, !6, i64 696}
!126 = !{!81, !10, i64 440}
!127 = !{!81, !14, i64 992}
!128 = !{!13, !6, i64 7632}
!129 = !{!81, !6, i64 0}
!130 = !{!81, !10, i64 80}
!131 = !{!132, !132, i64 0}
!132 = !{!"long", !7, i64 0}
!133 = !{!81, !7, i64 172}
!134 = !{!81, !7, i64 174}
!135 = !{!81, !17, i64 32}
!136 = !{!81, !17, i64 24}
!137 = !{!81, !17, i64 36}
!138 = !{!81, !17, i64 28}
!139 = !{!20, !17, i64 44}
!140 = !{!81, !17, i64 76}
!141 = !{!20, !17, i64 52}
!142 = !{!20, !17, i64 16}
!143 = !{!20, !17, i64 8}
!144 = !{!81, !17, i64 64}
!145 = !{!20, !17, i64 72}
!146 = !{!13, !17, i64 7148}
!147 = !{!81, !17, i64 352}
!148 = !{!13, !17, i64 7152}
!149 = !{!81, !17, i64 356}
!150 = !{!13, !6, i64 6888}
!151 = !{!13, !10, i64 6940}
!152 = !{!13, !10, i64 6944}
!153 = !{!81, !14, i64 146}
!154 = !{!81, !14, i64 145}
!155 = !{!16, !17, i64 0}
!156 = !{!16, !17, i64 4}
!157 = !{!81, !7, i64 164}
!158 = !{!81, !7, i64 165}
!159 = !{!81, !14, i64 167}
!160 = !{!81, !10, i64 168}
!161 = !{!81, !10, i64 408}
!162 = !{!81, !17, i64 180}
!163 = !{!20, !17, i64 40}
!164 = !{!20, !17, i64 48}
!165 = !{!20, !17, i64 12}
!166 = !{!81, !17, i64 72}
!167 = !{!13, !14, i64 204}
!168 = !{!13, !17, i64 6528}
!169 = !{!81, !7, i64 152}
!170 = !{!81, !14, i64 141}
!171 = !{!20, !17, i64 112}
!172 = !{!81, !14, i64 140}
!173 = !{!81, !17, i64 16}
!174 = !{!81, !17, i64 536}
!175 = !{!81, !17, i64 20}
!176 = !{!81, !17, i64 540}
!177 = !{!81, !17, i64 132}
!178 = !{!81, !17, i64 544}
!179 = !{!81, !17, i64 136}
!180 = !{!81, !17, i64 548}
!181 = !{!20, !17, i64 68}
!182 = !{!81, !17, i64 552}
!183 = !{!81, !17, i64 556}
!184 = !{!81, !17, i64 560}
!185 = !{!81, !17, i64 564}
!186 = !{!81, !17, i64 648}
!187 = !{!81, !17, i64 40}
!188 = !{!81, !17, i64 100}
!189 = !{!81, !17, i64 44}
!190 = !{!81, !17, i64 68}
!191 = !{!81, !17, i64 104}
!192 = !{!44, !10, i64 0}
!193 = !{!194, !10, i64 32}
!194 = !{!"_ZTS9ImDrawCmd", !22, i64 0, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48}
!195 = !{!13, !6, i64 6520}
!196 = !{!66, !6, i64 64}
!197 = !{!198, !6, i64 8}
!198 = !{!"_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, !34, i64 64, !199, i64 80, !200, i64 96, !7, i64 112, !10, i64 1136, !10, i64 1140}
!199 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!200 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!201 = !{!13, !6, i64 7624}
!202 = !{!81, !6, i64 912}
!203 = !{!13, !17, i64 7784}
!204 = !{!13, !17, i64 7644}
!205 = !{!13, !17, i64 5484}
!206 = !{!44, !10, i64 32}
!207 = !{!13, !6, i64 7616}
!208 = !{!13, !6, i64 7312}
!209 = !{!81, !6, i64 920}
!210 = !{!81, !17, i64 56}
!211 = !{!81, !17, i64 60}
!212 = !{!81, !17, i64 92}
!213 = !{!81, !17, i64 568}
!214 = !{!81, !17, i64 96}
!215 = !{!81, !17, i64 572}
!216 = !{!81, !17, i64 576}
!217 = !{!81, !17, i64 580}
!218 = !{!81, !17, i64 616}
!219 = !{!81, !17, i64 620}
!220 = !{!81, !17, i64 624}
!221 = !{!81, !17, i64 628}
!222 = !{!81, !17, i64 280}
!223 = !{!81, !17, i64 288}
!224 = !{!81, !17, i64 284}
!225 = !{!81, !17, i64 276}
!226 = !{!81, !17, i64 272}
!227 = !{!81, !39, i64 332}
!228 = !{!81, !10, i64 340}
!229 = !{!81, !10, i64 336}
!230 = !{!81, !14, i64 348}
!231 = !{!81, !14, i64 349}
!232 = !{!81, !14, i64 350}
!233 = !{!81, !10, i64 396}
!234 = !{!81, !10, i64 400}
!235 = !{!81, !6, i64 424}
!236 = !{!81, !6, i64 432}
!237 = !{!81, !10, i64 444}
!238 = !{!81, !10, i64 448}
!239 = !{!81, !10, i64 456}
!240 = !{!81, !10, i64 452}
!241 = !{!81, !17, i64 464}
!242 = !{!81, !17, i64 468}
!243 = !{!81, !18, i64 634}
!244 = !{!81, !18, i64 632}
!245 = !{!81, !10, i64 84}
!246 = !{!81, !10, i64 460}
!247 = !{!81, !10, i64 344}
!248 = !{!81, !14, i64 144}
!249 = !{!81, !18, i64 154}
!250 = !{!13, !14, i64 12600}
!251 = !{!81, !17, i64 520}
!252 = !{!81, !17, i64 528}
!253 = !{!81, !17, i64 524}
!254 = !{!81, !17, i64 532}
!255 = !{!20, !17, i64 0}
!256 = !{!81, !14, i64 149}
!257 = !{!81, !14, i64 147}


; 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 [82 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: 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(196), 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(196), 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: 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(993)) 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

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

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

; 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.ImVec2, align 8
  %18 = alloca %struct.ImRect, align 4
  %19 = alloca %struct.ImVec2, align 8
  %20 = alloca %struct.ImVec2, align 8
  %21 = alloca i32, align 4
  %22 = alloca [4 x i32], align 16
  %23 = alloca %struct.ImVec2, align 4
  %24 = alloca %struct.ImVec2, align 8
  %25 = alloca %struct.ImVec2, align 8
  %26 = alloca %struct.ImVec2, align 8
  %27 = alloca %struct.ImVec2, align 8
  %28 = alloca %struct.ImRect, align 4
  %29 = alloca %struct.ImRect, align 8
  %30 = alloca %struct.ImVec2, align 8
  %31 = alloca %struct.ImRect, align 8
  %32 = alloca %struct.ImRect, align 8
  %33 = alloca %struct.ImVec2, align 4
  %34 = alloca %struct.ImVec2, align 8
  %35 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %36 = getelementptr inbounds i8, ptr %35, i64 5472
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %.critedge, label %37

37:                                               ; preds = %3
  %38 = load i8, ptr %0, align 1, !tbaa !9
  %.not312 = icmp eq i8 %38, 0
  br i1 %.not312, label %.critedge, label %39

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

39:                                               ; preds = %37
  %40 = getelementptr inbounds i8, ptr %35, i64 6772
  %41 = load i8, ptr %40, align 4, !tbaa !10, !range !74, !noundef !75
  %42 = trunc nuw i8 %41 to i1
  br i1 %42, label %44, label %43

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

44:                                               ; preds = %39
  %45 = getelementptr inbounds i8, ptr %35, i64 6764
  %46 = load i32, ptr %45, align 4, !tbaa !76
  %47 = getelementptr inbounds i8, ptr %35, i64 6760
  %48 = load i32, ptr %47, align 8, !tbaa !77
  %.not313 = icmp eq i32 %46, %48
  br i1 %.not313, label %49, label %50

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

50:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #14
  %51 = tail call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef nonnull %0)
  store ptr %51, ptr %4, align 8, !tbaa !5
  %52 = icmp eq ptr %51, null
  br i1 %52, label %53, label %55

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

55:                                               ; preds = %53, %50
  %56 = phi ptr [ %54, %53 ], [ %51, %50 ]
  %57 = and i32 %2, 786944
  %58 = icmp eq i32 %57, 786944
  %59 = or i32 %2, 6
  %spec.select = select i1 %58, i32 %59, i32 %2
  %60 = and i32 %spec.select, 25165824
  %or.cond = icmp eq i32 %60, 8388608
  br i1 %or.cond, label %61, label %62

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

62:                                               ; preds = %55
  %63 = load i32, ptr %47, align 8, !tbaa !77
  %64 = getelementptr inbounds i8, ptr %56, i64 640
  %65 = load i32, ptr %64, align 8, !tbaa !78
  %.not316 = icmp eq i32 %65, %63
  %66 = getelementptr inbounds i8, ptr %35, i64 6840
  %67 = load i32, ptr %66, align 8, !tbaa !86
  %68 = icmp eq i32 %67, 0
  br i1 %68, label %69, label %72

69:                                               ; preds = %62
  %70 = getelementptr inbounds i8, ptr %35, i64 6773
  %71 = load i8, ptr %70, align 1, !tbaa !87, !range !74, !noundef !75
  br label %72

72:                                               ; preds = %69, %62
  %73 = phi i8 [ 0, %62 ], [ %71, %69 ]
  %74 = getelementptr inbounds i8, ptr %56, i64 150
  store i8 %73, ptr %74, align 2, !tbaa !88
  %75 = add nsw i32 %63, -1
  %76 = icmp slt i32 %65, %75
  %77 = getelementptr inbounds i8, ptr %56, i64 173
  %78 = load i8, ptr %77, align 1, !tbaa !89
  %79 = icmp sgt i8 %78, 0
  %80 = and i32 %spec.select, 67108864
  %.not317 = icmp eq i32 %80, 0
  br i1 %.not317, label %95, label %81

81:                                               ; preds = %72
  %82 = getelementptr inbounds i8, ptr %35, i64 7280
  %83 = getelementptr inbounds i8, ptr %35, i64 7296
  %84 = load i32, ptr %83, align 8, !tbaa !90
  %85 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %82, i32 noundef %84)
  %86 = getelementptr inbounds i8, ptr %56, i64 160
  %87 = load i32, ptr %86, align 8, !tbaa !91
  %88 = load i32, ptr %85, align 8, !tbaa !92
  %89 = icmp ne i32 %87, %88
  %90 = getelementptr inbounds i8, ptr %85, i64 8
  %91 = load ptr, ptr %90, align 8, !tbaa !94
  %92 = icmp ne ptr %56, %91
  %93 = or i1 %89, %92
  %94 = or i1 %76, %93
  br label %95

95:                                               ; preds = %81, %72
  %.0282.in = phi i1 [ %94, %81 ], [ %76, %72 ]
  %96 = select i1 %.0282.in, i1 true, i1 %79
  %97 = getelementptr inbounds i8, ptr %56, i64 148
  %98 = zext i1 %96 to i8
  store i8 %98, ptr %97, align 4, !tbaa !95
  br i1 %96, label %99, label %100

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

100:                                              ; preds = %99, %95
  %101 = getelementptr inbounds i8, ptr %56, i64 12
  br i1 %.not316, label %113, label %102

102:                                              ; preds = %100
  store i32 %spec.select, ptr %101, align 4, !tbaa !96
  store i32 %63, ptr %64, align 8, !tbaa !78
  %103 = getelementptr inbounds i8, ptr %35, i64 6752
  %104 = load double, ptr %103, align 8, !tbaa !97
  %105 = fptrunc double %104 to float
  %106 = getelementptr inbounds i8, ptr %56, i64 644
  store float %105, ptr %106, align 4, !tbaa !98
  %107 = getelementptr inbounds i8, ptr %56, i64 156
  store i16 0, ptr %107, align 4, !tbaa !99
  %108 = getelementptr inbounds i8, ptr %35, i64 6872
  %109 = load i32, ptr %108, align 8, !tbaa !100
  %110 = add nsw i32 %109, 1
  store i32 %110, ptr %108, align 8, !tbaa !100
  %111 = trunc i32 %109 to i16
  %112 = getelementptr inbounds i8, ptr %56, i64 158
  store i16 %111, ptr %112, align 2, !tbaa !101
  br label %115

113:                                              ; preds = %100
  %114 = load i32, ptr %101, align 4, !tbaa !96
  br label %115

115:                                              ; preds = %113, %102
  %.1 = phi i32 [ %spec.select, %102 ], [ %114, %113 ]
  %116 = tail call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %66)
  br i1 %116, label %120, label %117

117:                                              ; preds = %115
  %118 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %66)
  %119 = load ptr, ptr %118, align 8, !tbaa !5
  br label %120

120:                                              ; preds = %115, %117
  %121 = phi ptr [ %119, %117 ], [ null, %115 ]
  br i1 %.not316, label %125, label %122

122:                                              ; preds = %120
  %123 = and i32 %.1, 83886080
  %.not318 = icmp eq i32 %123, 0
  %124 = select i1 %.not318, ptr null, ptr %121
  br label %128

125:                                              ; preds = %120
  %126 = getelementptr inbounds i8, ptr %56, i64 904
  %127 = load ptr, ptr %126, align 8, !tbaa !102
  br label %128

128:                                              ; preds = %125, %122
  %129 = phi ptr [ %124, %122 ], [ %127, %125 ]
  %130 = icmp eq ptr %129, null
  %131 = and i32 %.1, 16777216
  %132 = icmp ne i32 %131, 0
  %.not320 = select i1 %130, i1 %132, i1 false
  br i1 %.not320, label %133, label %134

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

134:                                              ; preds = %128
  %135 = getelementptr inbounds i8, ptr %56, i64 200
  %136 = load i32, ptr %135, align 8, !tbaa !103
  %137 = icmp eq i32 %136, 0
  br i1 %137, label %138, label %140

138:                                              ; preds = %134
  %139 = getelementptr inbounds i8, ptr %56, i64 8
  tail call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %135, ptr noundef nonnull align 4 dereferenceable(4) %139)
  br label %140

140:                                              ; preds = %138, %134
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %141 = load ptr, ptr %4, align 8, !tbaa !5
  %142 = getelementptr inbounds i8, ptr %35, i64 6880
  store ptr %141, ptr %142, align 8, !tbaa !104
  %143 = getelementptr inbounds i8, ptr %141, i64 504
  call void @_ZN15ImGuiStackSizes17SetToCurrentStateEv(ptr noundef nonnull align 2 dereferenceable(14) %143)
  store ptr null, ptr %142, align 8, !tbaa !104
  %144 = and i32 %.1, 67108864
  %.not321 = icmp eq i32 %144, 0
  br i1 %.not321, label %155, label %145

145:                                              ; preds = %140
  %146 = getelementptr inbounds i8, ptr %35, i64 7280
  %147 = getelementptr inbounds i8, ptr %35, i64 7296
  %148 = load i32, ptr %147, align 8, !tbaa !90
  %149 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %146, i32 noundef %148)
  %150 = load ptr, ptr %4, align 8, !tbaa !5
  %151 = getelementptr inbounds i8, ptr %149, i64 8
  store ptr %150, ptr %151, align 8, !tbaa !94
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %147, ptr noundef nonnull align 8 dereferenceable(48) %149)
  %152 = load i32, ptr %149, align 8, !tbaa !92
  %153 = load ptr, ptr %4, align 8, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %153, i64 160
  store i32 %152, ptr %154, align 8, !tbaa !91
  br label %155

155:                                              ; preds = %145, %140
  %.not361 = xor i1 %79, true
  %brmerge = select i1 %.not361, i1 true, i1 %132
  br i1 %brmerge, label %159, label %156

156:                                              ; preds = %155
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  %158 = getelementptr inbounds i8, ptr %157, i64 944
  store i32 0, ptr %158, align 8, !tbaa !105
  br label %159

159:                                              ; preds = %155, %156
  br i1 %.not316, label %162, label %160

160:                                              ; preds = %159
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %161, i32 noundef %.1, ptr noundef %129)
  br label %162

162:                                              ; preds = %160, %159
  %163 = getelementptr inbounds i8, ptr %35, i64 7048
  %164 = load i32, ptr %163, align 8, !tbaa !106
  %165 = and i32 %164, 1
  %.not322 = icmp eq i32 %165, 0
  br i1 %.not322, label %193, label %166

166:                                              ; preds = %162
  %167 = load ptr, ptr %4, align 8, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %167, i64 175
  %169 = load i32, ptr %168, align 1
  %170 = shl i32 %169, 24
  %171 = ashr exact i32 %170, 24
  %172 = getelementptr inbounds i8, ptr %35, i64 7052
  %173 = load i32, ptr %172, align 4, !tbaa !107
  %174 = and i32 %171, %173
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %189

176:                                              ; preds = %166
  %177 = getelementptr inbounds i8, ptr %35, i64 7072
  %178 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %177)
  %179 = fcmp ogt float %178, 0x3EE4F8B580000000
  %.pre = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %179, label %180, label %._crit_edge

._crit_edge:                                      ; preds = %176
  %.pre442 = load i32, ptr %172, align 4, !tbaa !107
  br label %189

180:                                              ; preds = %176
  %181 = getelementptr inbounds i8, ptr %35, i64 7064
  %182 = getelementptr inbounds i8, ptr %.pre, i64 180
  %183 = load i64, ptr %181, align 8
  store i64 %183, ptr %182, align 4
  %184 = getelementptr inbounds i8, ptr %.pre, i64 188
  %185 = load i64, ptr %177, align 8
  store i64 %185, ptr %184, align 4
  %186 = getelementptr inbounds i8, ptr %.pre, i64 175
  %187 = load i32, ptr %186, align 1
  %188 = and i32 %187, -15
  store i32 %188, ptr %186, align 1
  br label %193

189:                                              ; preds = %._crit_edge, %166
  %190 = phi i32 [ %.pre442, %._crit_edge ], [ %173, %166 ]
  %191 = phi ptr [ %.pre, %._crit_edge ], [ %167, %166 ]
  %192 = getelementptr inbounds i8, ptr %35, i64 7064
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %191, ptr noundef nonnull align 4 dereferenceable(8) %192, i32 noundef %190)
  br label %193

193:                                              ; preds = %180, %189, %162
  %.0283.shrunk = phi i1 [ true, %180 ], [ %175, %189 ], [ false, %162 ]
  %194 = load i32, ptr %163, align 8, !tbaa !106
  %195 = and i32 %194, 2
  %.not323 = icmp eq i32 %195, 0
  br i1 %.not323, label %215, label %196

196:                                              ; preds = %193
  %197 = load ptr, ptr %4, align 8, !tbaa !5
  %198 = getelementptr inbounds i8, ptr %197, i64 175
  %199 = load i32, ptr %198, align 1
  %200 = shl i32 %199, 16
  %201 = ashr i32 %200, 24
  %202 = getelementptr inbounds i8, ptr %35, i64 7056
  %203 = load i32, ptr %202, align 8, !tbaa !108
  %204 = and i32 %201, %203
  %.not324 = icmp eq i32 %204, 0
  br i1 %.not324, label %.thread, label %205

205:                                              ; preds = %196
  %206 = getelementptr inbounds i8, ptr %35, i64 7080
  %207 = load float, ptr %206, align 8, !tbaa !109
  %208 = fcmp ogt float %207, 0.000000e+00
  %209 = getelementptr inbounds i8, ptr %35, i64 7084
  %210 = load float, ptr %209, align 4, !tbaa !110
  %211 = fcmp ogt float %210, 0.000000e+00
  br label %.thread

.thread:                                          ; preds = %196, %205
  %212 = phi i1 [ %208, %205 ], [ false, %196 ]
  %213 = phi i1 [ %211, %205 ], [ false, %196 ]
  %214 = getelementptr inbounds i8, ptr %35, i64 7080
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %197, ptr noundef nonnull align 4 dereferenceable(8) %214, i32 noundef %203)
  %.pre443 = load i32, ptr %163, align 8, !tbaa !106
  br label %215

215:                                              ; preds = %.thread, %193
  %216 = phi i32 [ %.pre443, %.thread ], [ %194, %193 ]
  %.0285 = phi i1 [ %213, %.thread ], [ false, %193 ]
  %.0284 = phi i1 [ %212, %.thread ], [ false, %193 ]
  %217 = and i32 %216, 128
  %.not326 = icmp eq i32 %217, 0
  br i1 %.not326, label %234, label %218

218:                                              ; preds = %215
  %219 = getelementptr inbounds i8, ptr %35, i64 7096
  %220 = load float, ptr %219, align 8, !tbaa !111
  %221 = fcmp ult float %220, 0.000000e+00
  br i1 %221, label %226, label %222

222:                                              ; preds = %218
  %223 = load ptr, ptr %4, align 8, !tbaa !5
  %224 = getelementptr inbounds i8, ptr %223, i64 108
  store float %220, ptr %224, align 4, !tbaa !112
  %225 = getelementptr inbounds i8, ptr %223, i64 116
  store float 0.000000e+00, ptr %225, align 4, !tbaa !113
  br label %226

226:                                              ; preds = %222, %218
  %227 = getelementptr inbounds i8, ptr %35, i64 7100
  %228 = load float, ptr %227, align 4, !tbaa !114
  %229 = fcmp ult float %228, 0.000000e+00
  br i1 %229, label %234, label %230

230:                                              ; preds = %226
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  %232 = getelementptr inbounds i8, ptr %231, i64 112
  store float %228, ptr %232, align 4, !tbaa !115
  %233 = getelementptr inbounds i8, ptr %231, i64 120
  store float 0.000000e+00, ptr %233, align 4, !tbaa !116
  br label %234

234:                                              ; preds = %226, %230, %215
  %235 = and i32 %216, 4
  %.not327 = icmp eq i32 %235, 0
  br i1 %.not327, label %241, label %236

236:                                              ; preds = %234
  %237 = getelementptr inbounds i8, ptr %35, i64 7088
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = getelementptr inbounds i8, ptr %238, i64 56
  %240 = load i64, ptr %237, align 8
  store i64 %240, ptr %239, align 8
  br label %246

241:                                              ; preds = %234
  br i1 %.not316, label %._crit_edge489, label %242

._crit_edge489:                                   ; preds = %241
  %.pre446.pre484.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %246

242:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %5, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %243 = load ptr, ptr %4, align 8, !tbaa !5
  %244 = getelementptr inbounds i8, ptr %243, i64 56
  %245 = load i64, ptr %5, align 8
  store i64 %245, ptr %244, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #14
  br label %246

246:                                              ; preds = %._crit_edge489, %242, %236
  %.pre446.pre484 = phi ptr [ %.pre446.pre484.pre, %._crit_edge489 ], [ %243, %242 ], [ %238, %236 ]
  %247 = load i32, ptr %163, align 8, !tbaa !106
  %248 = and i32 %247, 8
  %.not328 = icmp eq i32 %248, 0
  br i1 %.not328, label %255, label %249

249:                                              ; preds = %246
  %250 = getelementptr inbounds i8, ptr %35, i64 7104
  %251 = load i8, ptr %250, align 8, !tbaa !117, !range !74, !noundef !75
  %252 = trunc nuw i8 %251 to i1
  %253 = getelementptr inbounds i8, ptr %35, i64 7060
  %254 = load i32, ptr %253, align 4, !tbaa !118
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre446.pre484, i1 noundef zeroext %252, i32 noundef %254)
  %.pre444 = load i32, ptr %163, align 8, !tbaa !106
  %.pre446.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %255

255:                                              ; preds = %249, %246
  %.pre446 = phi ptr [ %.pre446.pre, %249 ], [ %.pre446.pre484, %246 ]
  %256 = phi i32 [ %.pre444, %249 ], [ %247, %246 ]
  %257 = and i32 %256, 32
  %.not329 = icmp eq i32 %257, 0
  br i1 %.not329, label %259, label %258

258:                                              ; preds = %255
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %.pre446)
  %.pre445 = load ptr, ptr %4, align 8, !tbaa !5
  br label %259

259:                                              ; preds = %258, %255
  %260 = phi ptr [ %.pre445, %258 ], [ %.pre446, %255 ]
  %261 = getelementptr inbounds i8, ptr %260, i64 148
  %262 = load i8, ptr %261, align 4, !tbaa !95, !range !74, !noundef !75
  %263 = trunc nuw i8 %262 to i1
  br i1 %263, label %264, label %265

264:                                              ; preds = %259
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %260, i32 noundef 8, i1 noundef zeroext false)
  br label %265

265:                                              ; preds = %264, %259
  br i1 %.not316, label %1205, label %266

266:                                              ; preds = %265
  %267 = and i32 %.1, 33554432
  %.not330 = icmp eq i32 %267, 0
  %268 = and i32 %.1, 50331648
  %269 = icmp eq i32 %268, 50331648
  %270 = load ptr, ptr %4, align 8, !tbaa !5
  %271 = getelementptr inbounds i8, ptr %270, i64 142
  store i8 1, ptr %271, align 2, !tbaa !119
  %272 = icmp ne ptr %1, null
  %273 = getelementptr inbounds i8, ptr %270, i64 151
  %274 = zext i1 %272 to i8
  store i8 %274, ptr %273, align 1, !tbaa !120
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #14
  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)
  %275 = load ptr, ptr %4, align 8, !tbaa !5
  %276 = getelementptr inbounds i8, ptr %275, i64 600
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %276, ptr noundef nonnull align 4 dereferenceable(16) %6, i64 16, i1 false), !tbaa.struct !121
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #14
  %277 = getelementptr inbounds i8, ptr %275, i64 200
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %277, i32 noundef 1)
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = getelementptr inbounds i8, ptr %278, i64 696
  %280 = load ptr, ptr %279, align 8, !tbaa !123
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %280)
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds i8, ptr %281, i64 440
  store i32 -1, ptr %282, align 8, !tbaa !124
  %283 = getelementptr inbounds i8, ptr %281, i64 992
  %284 = load i8, ptr %283, align 8, !tbaa !125, !range !74, !noundef !75
  %285 = trunc nuw i8 %284 to i1
  br i1 %285, label %286, label %287

286:                                              ; preds = %266
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %281)
  %.pre447.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %287

287:                                              ; preds = %286, %266
  %.pre447 = phi ptr [ %.pre447.pre, %286 ], [ %281, %266 ]
  %288 = getelementptr inbounds i8, ptr %35, i64 7632
  %289 = load ptr, ptr %288, align 8, !tbaa !126
  %.not331 = icmp eq ptr %289, null
  br i1 %.not331, label %.critedge364, label %290

290:                                              ; preds = %287
  %291 = getelementptr inbounds i8, ptr %.pre447, i64 12
  %292 = load i32, ptr %291, align 4, !tbaa !96
  %293 = and i32 %292, 524288
  %294 = icmp ne i32 %293, 0
  %brmerge365 = or i1 %52, %294
  br i1 %brmerge365, label %.critedge364, label %295

295:                                              ; preds = %290
  %296 = load ptr, ptr %.pre447, align 8, !tbaa !127
  %297 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %296) #15
  %.not332 = icmp eq i32 %297, 0
  br i1 %.not332, label %.critedge364, label %298

298:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #14
  %299 = getelementptr inbounds i8, ptr %.pre447, i64 80
  %300 = load i32, ptr %299, align 8, !tbaa !128
  %301 = sext i32 %300 to i64
  store i64 %301, ptr %8, align 8, !tbaa !129
  %302 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %296, ptr noundef nonnull %8, ptr noundef nonnull %0)
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %302, ptr %303, align 8, !tbaa !127
  %304 = load i64, ptr %8, align 8, !tbaa !129
  %305 = trunc i64 %304 to i32
  %306 = load ptr, ptr %4, align 8, !tbaa !5
  %307 = getelementptr inbounds i8, ptr %306, i64 80
  store i32 %305, ptr %307, align 8, !tbaa !128
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #14
  br label %.critedge364

.critedge364:                                     ; preds = %287, %290, %298, %295
  %308 = phi ptr [ %.pre447, %287 ], [ %.pre447, %290 ], [ %306, %298 ], [ %.pre447, %295 ]
  %309 = getelementptr inbounds i8, ptr %308, i64 40
  %310 = getelementptr inbounds i8, ptr %308, i64 48
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %308, ptr noundef nonnull %309, ptr noundef nonnull %310)
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  %312 = getelementptr inbounds i8, ptr %311, i64 172
  %313 = load i8, ptr %312, align 4, !tbaa !131
  %314 = icmp sgt i8 %313, 0
  br i1 %314, label %315, label %317

315:                                              ; preds = %.critedge364
  %316 = add nsw i8 %313, -1
  store i8 %316, ptr %312, align 4, !tbaa !131
  br label %317

317:                                              ; preds = %315, %.critedge364
  %318 = getelementptr inbounds i8, ptr %311, i64 173
  %319 = load i8, ptr %318, align 1, !tbaa !89
  %320 = icmp sgt i8 %319, 0
  br i1 %320, label %321, label %323

321:                                              ; preds = %317
  %322 = add nsw i8 %319, -1
  store i8 %322, ptr %318, align 1, !tbaa !89
  br label %323

323:                                              ; preds = %321, %317
  %324 = getelementptr inbounds i8, ptr %311, i64 174
  %325 = load i8, ptr %324, align 2, !tbaa !132
  %326 = icmp sgt i8 %325, 0
  br i1 %326, label %327, label %329

327:                                              ; preds = %323
  %328 = add nsw i8 %325, -1
  store i8 %328, ptr %324, align 2, !tbaa !132
  br label %329

329:                                              ; preds = %327, %323
  %.not440 = xor i1 %52, true
  %330 = select i1 %.0284, i1 %.0285, i1 false
  %or.cond441 = select i1 %.not440, i1 true, i1 %330
  br i1 %or.cond441, label %332, label %331

331:                                              ; preds = %329
  store i8 1, ptr %318, align 1, !tbaa !89
  br label %332

332:                                              ; preds = %331, %329
  %333 = and i32 %.1, 100663296
  %.not333 = icmp ne i32 %333, 0
  %or.cond367.not = select i1 %.0282.in, i1 %.not333, i1 false
  br i1 %or.cond367.not, label %334, label %349

334:                                              ; preds = %332
  store i8 1, ptr %318, align 1, !tbaa !89
  %335 = and i32 %.1, 64
  %.not334 = icmp eq i32 %335, 0
  br i1 %.not334, label %349, label %336

336:                                              ; preds = %334
  br i1 %.0284, label %340, label %337

337:                                              ; preds = %336
  %338 = getelementptr inbounds i8, ptr %311, i64 32
  store float 0.000000e+00, ptr %338, align 8, !tbaa !133
  %339 = getelementptr inbounds i8, ptr %311, i64 24
  store float 0.000000e+00, ptr %339, align 8, !tbaa !134
  br label %340

340:                                              ; preds = %337, %336
  br i1 %.0285, label %344, label %341

341:                                              ; preds = %340
  %342 = getelementptr inbounds i8, ptr %311, i64 36
  store float 0.000000e+00, ptr %342, align 4, !tbaa !135
  %343 = getelementptr inbounds i8, ptr %311, i64 28
  store float 0.000000e+00, ptr %343, align 4, !tbaa !136
  br label %344

344:                                              ; preds = %341, %340
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %9, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %345 = load ptr, ptr %4, align 8, !tbaa !5
  %346 = getelementptr inbounds i8, ptr %345, i64 48
  %347 = load i64, ptr %9, align 8
  store i64 %347, ptr %346, align 8
  %348 = getelementptr inbounds i8, ptr %345, i64 40
  store i64 %347, ptr %348, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %349

349:                                              ; preds = %334, %344, %332
  %350 = phi ptr [ %311, %334 ], [ %345, %344 ], [ %311, %332 ]
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef nonnull %350)
  br i1 %132, label %358, label %.thread413

.thread413:                                       ; preds = %349
  %351 = and i32 %.1, 134217728
  %.not336 = icmp eq i32 %351, 0
  %or.cond368 = and i1 %.not333, %.not336
  %.in.v = select i1 %or.cond368, i64 5524, i64 5488
  %.in = getelementptr inbounds i8, ptr %35, i64 %.in.v
  %352 = load float, ptr %.in, align 4, !tbaa !122
  %353 = load ptr, ptr %4, align 8, !tbaa !5
  %354 = getelementptr inbounds i8, ptr %353, i64 76
  store float %352, ptr %354, align 4, !tbaa !137
  %355 = getelementptr inbounds i8, ptr %35, i64 5476
  %356 = getelementptr inbounds i8, ptr %353, i64 64
  %357 = load i64, ptr %355, align 4
  store i64 %357, ptr %356, align 8
  br label %378

358:                                              ; preds = %349
  %359 = getelementptr inbounds i8, ptr %35, i64 5516
  %360 = load float, ptr %359, align 4, !tbaa !138
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = getelementptr inbounds i8, ptr %361, i64 76
  store float %360, ptr %362, align 4, !tbaa !137
  %363 = getelementptr inbounds i8, ptr %35, i64 5476
  %364 = getelementptr inbounds i8, ptr %361, i64 64
  %365 = load i64, ptr %363, align 4
  store i64 %365, ptr %364, align 8
  %366 = and i32 %.1, 83951616
  %or.cond369 = icmp eq i32 %366, 16777216
  %367 = fcmp oeq float %360, 0.000000e+00
  %or.cond501 = select i1 %or.cond369, i1 %367, i1 false
  br i1 %or.cond501, label %368, label %378

368:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  %369 = and i32 %.1, 1024
  %.not338 = icmp eq i32 %369, 0
  br i1 %.not338, label %373, label %370

370:                                              ; preds = %368
  %371 = getelementptr inbounds i8, ptr %35, i64 5480
  %372 = load float, ptr %371, align 4, !tbaa !139
  br label %373

373:                                              ; preds = %368, %370
  %374 = phi float [ %372, %370 ], [ 0.000000e+00, %368 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef %374)
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  %376 = getelementptr inbounds i8, ptr %375, i64 64
  %377 = load i64, ptr %10, align 8
  store i64 %377, ptr %376, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  br label %378

378:                                              ; preds = %.thread413, %373, %358
  %.in494.in = phi i64 [ %357, %.thread413 ], [ %377, %373 ], [ %365, %358 ]
  %.in494 = trunc i64 %.in494.in to i32
  %379 = bitcast i32 %.in494 to float
  %380 = getelementptr inbounds i8, ptr %35, i64 5544
  %381 = load float, ptr %380, align 4, !tbaa !140
  %382 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %379, float noundef %381)
  %383 = getelementptr inbounds i8, ptr %35, i64 7148
  %384 = load float, ptr %383, align 4, !tbaa !141
  %385 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %382, float noundef %384)
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = getelementptr inbounds i8, ptr %386, i64 352
  store float %385, ptr %387, align 8, !tbaa !142
  %388 = getelementptr inbounds i8, ptr %35, i64 7152
  %389 = load float, ptr %388, align 4, !tbaa !143
  %390 = getelementptr inbounds i8, ptr %386, i64 356
  store float %389, ptr %390, align 4, !tbaa !144
  %391 = and i32 %.1, 1
  %.not339 = icmp eq i32 %391, 0
  %392 = and i32 %.1, 33
  %or.cond370 = icmp eq i32 %392, 0
  br i1 %or.cond370, label %393, label %429

393:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #14
  %394 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(993) %386)
  %395 = extractvalue { <2 x float>, <2 x float> } %394, 0
  store <2 x float> %395, ptr %11, align 8
  %396 = getelementptr inbounds i8, ptr %11, i64 8
  %397 = extractvalue { <2 x float>, <2 x float> } %394, 1
  store <2 x float> %397, ptr %396, align 8
  %398 = getelementptr inbounds i8, ptr %35, i64 6888
  %399 = load ptr, ptr %398, align 8, !tbaa !145
  %400 = load ptr, ptr %4, align 8, !tbaa !5
  %401 = icmp eq ptr %399, %400
  br i1 %401, label %402, label %418

402:                                              ; preds = %393
  %403 = getelementptr inbounds i8, ptr %35, i64 6940
  %404 = load i32, ptr %403, align 4, !tbaa !146
  %405 = icmp eq i32 %404, 0
  br i1 %405, label %406, label %418

406:                                              ; preds = %402
  %407 = getelementptr inbounds i8, ptr %35, i64 6944
  %408 = load i32, ptr %407, align 8, !tbaa !147
  %409 = icmp eq i32 %408, 0
  br i1 %409, label %410, label %418

410:                                              ; preds = %406
  %411 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %396, i1 noundef zeroext true)
  br i1 %411, label %412, label %._crit_edge448

._crit_edge448:                                   ; preds = %410
  %.pre449 = load ptr, ptr %4, align 8, !tbaa !5
  br label %418

412:                                              ; preds = %410
  %413 = getelementptr inbounds i8, ptr %35, i64 1061
  %414 = load i8, ptr %413, align 1, !tbaa !148, !range !74, !noundef !75
  %415 = trunc nuw i8 %414 to i1
  %.pre450 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %415, label %416, label %418

416:                                              ; preds = %412
  %417 = getelementptr inbounds i8, ptr %.pre450, i64 146
  store i8 1, ptr %417, align 2, !tbaa !149
  br label %418

418:                                              ; preds = %._crit_edge448, %416, %412, %406, %402, %393
  %419 = phi ptr [ %.pre449, %._crit_edge448 ], [ %.pre450, %416 ], [ %.pre450, %412 ], [ %400, %406 ], [ %400, %402 ], [ %400, %393 ]
  %420 = getelementptr inbounds i8, ptr %419, i64 146
  %421 = load i8, ptr %420, align 2, !tbaa !149, !range !74, !noundef !75
  %422 = trunc nuw i8 %421 to i1
  br i1 %422, label %423, label %428

423:                                              ; preds = %418
  %424 = getelementptr inbounds i8, ptr %419, i64 145
  %425 = load i8, ptr %424, align 1, !tbaa !150, !range !74, !noundef !75
  %426 = xor i8 %425, 1
  store i8 %426, ptr %424, align 1, !tbaa !150
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %419)
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %427)
  %.pre451.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %428

428:                                              ; preds = %423, %418
  %.pre451 = phi ptr [ %.pre451.pre, %423 ], [ %419, %418 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #14
  br label %431

429:                                              ; preds = %378
  %430 = getelementptr inbounds i8, ptr %386, i64 145
  store i8 0, ptr %430, align 1, !tbaa !150
  br label %431

431:                                              ; preds = %429, %428
  %432 = phi ptr [ %386, %429 ], [ %.pre451, %428 ]
  %433 = getelementptr inbounds i8, ptr %432, i64 146
  store i8 0, ptr %433, align 2, !tbaa !149
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #14
  %434 = getelementptr inbounds i8, ptr %432, i64 48
  %435 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %432, ptr noundef nonnull align 4 dereferenceable(8) %434)
  store <2 x float> %435, ptr %12, align 8
  %436 = and i32 %.1, 64
  %.not341 = icmp ne i32 %436, 0
  %437 = extractelement <2 x float> %435, i64 0
  %438 = extractelement <2 x float> %435, i64 1
  %.pre452 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not341, label %439, label %449

439:                                              ; preds = %431
  %440 = getelementptr inbounds i8, ptr %.pre452, i64 145
  %441 = load i8, ptr %440, align 1, !tbaa !150, !range !74, !noundef !75
  %442 = trunc nuw i8 %441 to i1
  br i1 %442, label %449, label %443

443:                                              ; preds = %439
  br i1 %.0284, label %446, label %444

444:                                              ; preds = %443
  %445 = getelementptr inbounds i8, ptr %.pre452, i64 32
  store float %437, ptr %445, align 8, !tbaa !133
  br label %446

446:                                              ; preds = %444, %443
  %.0288 = phi i1 [ %52, %443 ], [ true, %444 ]
  br i1 %.0285, label %498, label %447

447:                                              ; preds = %446
  %448 = getelementptr inbounds i8, ptr %.pre452, i64 36
  store float %438, ptr %448, align 4, !tbaa !135
  br label %498

449:                                              ; preds = %439, %431
  %450 = getelementptr inbounds i8, ptr %.pre452, i64 164
  %451 = load i8, ptr %450, align 4, !tbaa !151
  %452 = icmp sgt i8 %451, 0
  br i1 %452, label %457, label %453

453:                                              ; preds = %449
  %454 = getelementptr inbounds i8, ptr %.pre452, i64 165
  %455 = load i8, ptr %454, align 1, !tbaa !152
  %456 = icmp sgt i8 %455, 0
  br i1 %456, label %.thread417, label %498

457:                                              ; preds = %449
  br i1 %.0284, label %.thread417, label %458

458:                                              ; preds = %457
  %459 = getelementptr inbounds i8, ptr %.pre452, i64 167
  %460 = load i8, ptr %459, align 1, !tbaa !153, !range !74, !noundef !75
  %461 = trunc nuw i8 %460 to i1
  br i1 %461, label %462, label %466

462:                                              ; preds = %458
  %463 = getelementptr inbounds i8, ptr %.pre452, i64 32
  %464 = load float, ptr %463, align 8, !tbaa !133
  %465 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %464, float noundef %437)
  %.pre453 = load ptr, ptr %4, align 8, !tbaa !5
  br label %466

466:                                              ; preds = %458, %462
  %467 = phi ptr [ %.pre453, %462 ], [ %.pre452, %458 ]
  %468 = phi float [ %465, %462 ], [ %437, %458 ]
  %469 = getelementptr inbounds i8, ptr %467, i64 32
  store float %468, ptr %469, align 8, !tbaa !133
  br label %.thread417

.thread417:                                       ; preds = %453, %466, %457
  %470 = phi ptr [ %.pre452, %457 ], [ %467, %466 ], [ %.pre452, %453 ]
  %.1289 = phi i1 [ %52, %457 ], [ true, %466 ], [ %52, %453 ]
  br i1 %.0285, label %492, label %471

471:                                              ; preds = %.thread417
  %472 = getelementptr inbounds i8, ptr %470, i64 165
  %473 = load i8, ptr %472, align 1, !tbaa !152
  %474 = icmp sgt i8 %473, 0
  br i1 %474, label %475, label %492

475:                                              ; preds = %471
  %476 = getelementptr inbounds i8, ptr %470, i64 167
  %477 = load i8, ptr %476, align 1, !tbaa !153, !range !74, !noundef !75
  %478 = trunc nuw i8 %477 to i1
  br i1 %478, label %479, label %485

479:                                              ; preds = %475
  %480 = getelementptr inbounds i8, ptr %470, i64 36
  %481 = load float, ptr %480, align 4, !tbaa !135
  %482 = getelementptr inbounds i8, ptr %12, i64 4
  %483 = load float, ptr %482, align 4, !tbaa !154
  %484 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %481, float noundef %483)
  %.pre454 = load ptr, ptr %4, align 8, !tbaa !5
  br label %488

485:                                              ; preds = %475
  %486 = getelementptr inbounds i8, ptr %12, i64 4
  %487 = load float, ptr %486, align 4, !tbaa !154
  br label %488

488:                                              ; preds = %485, %479
  %489 = phi ptr [ %.pre454, %479 ], [ %470, %485 ]
  %490 = phi float [ %484, %479 ], [ %487, %485 ]
  %491 = getelementptr inbounds i8, ptr %489, i64 36
  store float %490, ptr %491, align 4, !tbaa !135
  br label %492

492:                                              ; preds = %488, %471, %.thread417
  %493 = phi ptr [ %470, %.thread417 ], [ %489, %488 ], [ %470, %471 ]
  %.0291 = phi i1 [ %52, %.thread417 ], [ true, %488 ], [ %52, %471 ]
  %494 = getelementptr inbounds i8, ptr %493, i64 145
  %495 = load i8, ptr %494, align 1, !tbaa !150, !range !74, !noundef !75
  %496 = trunc nuw i8 %495 to i1
  br i1 %496, label %498, label %497

497:                                              ; preds = %492
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %493)
  %.pre455 = load ptr, ptr %4, align 8, !tbaa !5
  br label %498

498:                                              ; preds = %453, %497, %492, %446, %447
  %499 = phi ptr [ %493, %492 ], [ %.pre455, %497 ], [ %.pre452, %453 ], [ %.pre452, %446 ], [ %.pre452, %447 ]
  %.1292 = phi i1 [ %.0291, %492 ], [ %.0291, %497 ], [ %52, %453 ], [ %52, %446 ], [ true, %447 ]
  %.2 = phi i1 [ %.1289, %492 ], [ %.1289, %497 ], [ %52, %453 ], [ %.0288, %446 ], [ %.0288, %447 ]
  %500 = getelementptr inbounds i8, ptr %499, i64 32
  %.sroa.044.0.copyload = load <2 x float>, ptr %500, align 8
  %501 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %499, <2 x float> %.sroa.044.0.copyload)
  %502 = load ptr, ptr %4, align 8, !tbaa !5
  %503 = getelementptr inbounds i8, ptr %502, i64 32
  store <2 x float> %501, ptr %503, align 8
  %504 = getelementptr inbounds i8, ptr %502, i64 145
  %505 = load i8, ptr %504, align 1, !tbaa !150, !range !74, !noundef !75
  %506 = trunc nuw i8 %505 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #14
  %.not371 = xor i1 %506, true
  %brmerge372 = select i1 %.not371, i1 true, i1 %132
  br i1 %brmerge372, label %513, label %507

507:                                              ; preds = %498
  %508 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(993) %502)
  %509 = extractvalue { <2 x float>, <2 x float> } %508, 0
  store <2 x float> %509, ptr %13, align 8
  %510 = getelementptr inbounds i8, ptr %13, i64 8
  %511 = extractvalue { <2 x float>, <2 x float> } %508, 1
  store <2 x float> %511, ptr %510, align 8
  %512 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %13)
  %.pre456 = load ptr, ptr %4, align 8, !tbaa !5
  br label %513

513:                                              ; preds = %498, %507
  %514 = phi ptr [ %.pre456, %507 ], [ %502, %498 ]
  %.sroa.042.0 = phi <2 x float> [ %512, %507 ], [ %501, %498 ]
  %515 = getelementptr inbounds i8, ptr %514, i64 24
  store <2 x float> %.sroa.042.0, ptr %515, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #14
  %516 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(993) %514)
  %517 = load ptr, ptr %4, align 8, !tbaa !5
  %518 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(993) %517)
  %519 = fadd float %516, %518
  br i1 %.0282.in, label %520, label %531

520:                                              ; preds = %513
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds i8, ptr %521, i64 168
  store i32 -1, ptr %522, align 8, !tbaa !155
  %523 = and i32 %.1, 201326592
  %or.cond373.not438 = icmp ne i32 %523, 67108864
  %brmerge374 = or i1 %or.cond373.not438, %.0283.shrunk
  br i1 %brmerge374, label %531, label %524

524:                                              ; preds = %520
  %525 = getelementptr inbounds i8, ptr %35, i64 7296
  %526 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %525)
  %527 = getelementptr inbounds i8, ptr %526, i64 32
  %528 = load ptr, ptr %4, align 8, !tbaa !5
  %529 = getelementptr inbounds i8, ptr %528, i64 16
  %530 = load i64, ptr %527, align 8
  store i64 %530, ptr %529, align 8
  br label %531

531:                                              ; preds = %520, %524, %513
  br i1 %132, label %532, label %._crit_edge457

._crit_edge457:                                   ; preds = %531
  %.pre458 = load ptr, ptr %4, align 8, !tbaa !5
  br label %547

532:                                              ; preds = %531
  br i1 %130, label %.critedge2, label %533

533:                                              ; preds = %532
  %534 = getelementptr inbounds i8, ptr %129, i64 142
  %535 = load i8, ptr %534, align 2, !tbaa !119, !range !74, !noundef !75
  %536 = trunc nuw i8 %535 to i1
  br i1 %536, label %537, label %.critedge2

.critedge2:                                       ; preds = %532, %533
  call void @__assert_fail(ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.3, i32 noundef 5831, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

537:                                              ; preds = %533
  %538 = getelementptr inbounds i8, ptr %129, i64 408
  %539 = load i32, ptr %538, align 8, !tbaa !156
  %540 = trunc i32 %539 to i16
  %541 = load ptr, ptr %4, align 8, !tbaa !5
  %542 = getelementptr inbounds i8, ptr %541, i64 156
  store i16 %540, ptr %542, align 4, !tbaa !99
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %538, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %.not321.not375 = xor i1 %.not321, true
  %brmerge376 = or i1 %.0283.shrunk, %.not321.not375
  %brmerge377 = select i1 %brmerge376, i1 true, i1 %269
  %.pre459 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge377, label %547, label %543

543:                                              ; preds = %537
  %544 = getelementptr inbounds i8, ptr %129, i64 216
  %545 = getelementptr inbounds i8, ptr %.pre459, i64 16
  %546 = load i64, ptr %544, align 8
  store i64 %546, ptr %545, align 8
  br label %547

547:                                              ; preds = %._crit_edge457, %537, %543
  %548 = phi ptr [ %.pre458, %._crit_edge457 ], [ %.pre459, %537 ], [ %.pre459, %543 ]
  %549 = getelementptr inbounds i8, ptr %548, i64 180
  %550 = load float, ptr %549, align 4, !tbaa !157
  %551 = fcmp une float %550, 0x47EFFFFFE0000000
  br i1 %551, label %552, label %.critedge379

552:                                              ; preds = %547
  %553 = getelementptr inbounds i8, ptr %548, i64 173
  %554 = load i8, ptr %553, align 1, !tbaa !89
  %555 = icmp eq i8 %554, 0
  br i1 %555, label %556, label %.critedge379

556:                                              ; preds = %552
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  %557 = getelementptr inbounds i8, ptr %548, i64 24
  %558 = getelementptr inbounds i8, ptr %548, i64 188
  %559 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %557, ptr noundef nonnull align 4 dereferenceable(8) %558)
  store <2 x float> %559, ptr %15, align 8
  %560 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %549, ptr noundef nonnull align 4 dereferenceable(8) %15)
  store <2 x float> %560, ptr %14, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %548, ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #14
  br label %576

.critedge379:                                     ; preds = %547, %552
  %561 = and i32 %.1, 268435456
  %.not343 = icmp eq i32 %561, 0
  br i1 %.not343, label %566, label %562

562:                                              ; preds = %.critedge379
  %563 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %548)
  %564 = load ptr, ptr %4, align 8, !tbaa !5
  %565 = getelementptr inbounds i8, ptr %564, i64 16
  store <2 x float> %563, ptr %565, align 8
  br label %576

566:                                              ; preds = %.critedge379
  %brmerge380 = or i1 %.not321, %.0283.shrunk
  %brmerge382 = or i1 %brmerge380, %.not361
  br i1 %brmerge382, label %571, label %567

567:                                              ; preds = %566
  %568 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %548)
  %569 = load ptr, ptr %4, align 8, !tbaa !5
  %570 = getelementptr inbounds i8, ptr %569, i64 16
  store <2 x float> %568, ptr %570, align 8
  br label %576

571:                                              ; preds = %566
  %brmerge383 = or i1 %.not330, %.0283.shrunk
  %brmerge384 = select i1 %brmerge383, i1 true, i1 %269
  br i1 %brmerge384, label %576, label %572

572:                                              ; preds = %571
  %573 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %548)
  %574 = load ptr, ptr %4, align 8, !tbaa !5
  %575 = getelementptr inbounds i8, ptr %574, i64 16
  store <2 x float> %573, ptr %575, align 8
  br label %576

576:                                              ; preds = %571, %562, %572, %567, %556
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #14
  %577 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %578 = extractvalue { <2 x float>, <2 x float> } %577, 0
  store <2 x float> %578, ptr %16, align 8
  %579 = getelementptr inbounds i8, ptr %16, i64 8
  %580 = extractvalue { <2 x float>, <2 x float> } %577, 1
  store <2 x float> %580, ptr %579, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #14
  %581 = getelementptr inbounds i8, ptr %35, i64 5636
  %582 = getelementptr inbounds i8, ptr %35, i64 5644
  %583 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %581, ptr noundef nonnull align 4 dereferenceable(8) %582)
  store <2 x float> %583, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #14
  %584 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %17)
  store <2 x float> %584, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #14
  %585 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %579, ptr noundef nonnull align 4 dereferenceable(8) %17)
  store <2 x float> %585, ptr %20, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %18, ptr noundef nonnull align 4 dereferenceable(8) %19, ptr noundef nonnull align 4 dereferenceable(8) %20)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #14
  %brmerge385 = select i1 %.0283.shrunk, i1 true, i1 %132
  br i1 %brmerge385, label %603, label %586

586:                                              ; preds = %576
  %587 = load ptr, ptr %4, align 8, !tbaa !5
  %588 = getelementptr inbounds i8, ptr %587, i64 164
  %589 = load i8, ptr %588, align 4, !tbaa !151
  %590 = icmp slt i8 %589, 1
  br i1 %590, label %591, label %603

591:                                              ; preds = %586
  %592 = getelementptr inbounds i8, ptr %587, i64 165
  %593 = load i8, ptr %592, align 1, !tbaa !152
  %594 = icmp slt i8 %593, 1
  br i1 %594, label %595, label %603

595:                                              ; preds = %591
  %596 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %597 = fcmp ogt float %596, 0.000000e+00
  br i1 %597, label %598, label %603

598:                                              ; preds = %595
  %599 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %600 = fcmp ogt float %599, 0.000000e+00
  br i1 %600, label %601, label %603

601:                                              ; preds = %598
  %602 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRect(ptr noundef %602, ptr noundef nonnull align 4 dereferenceable(16) %18)
  br label %603

603:                                              ; preds = %576, %595, %598, %601, %591, %586
  %604 = load ptr, ptr %4, align 8, !tbaa !5
  %605 = getelementptr inbounds i8, ptr %604, i64 16
  %606 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %605)
  %607 = load ptr, ptr %4, align 8, !tbaa !5
  %608 = getelementptr inbounds i8, ptr %607, i64 16
  store <2 x float> %606, ptr %608, align 8
  %609 = and i32 %.1, 201326592
  %or.cond387.not.not = icmp eq i32 %609, 67108864
  %. = select i1 %or.cond387.not.not, i64 5520, i64 5484
  %.sink = select i1 %132, i64 5512, i64 %.
  %610 = getelementptr inbounds i8, ptr %35, i64 %.sink
  %611 = load float, ptr %610, align 4, !tbaa !122
  %612 = getelementptr inbounds i8, ptr %607, i64 72
  store float %611, ptr %612, align 8, !tbaa !158
  %613 = and i32 %.1, 4096
  %.not346 = icmp eq i32 %613, 0
  %or.cond388.not = select i1 %.0282.in, i1 %.not346, i1 false
  %brmerge411.not = and i1 %.not321, %or.cond388.not
  %614 = icmp eq i32 %268, 0
  %spec.select434 = select i1 %brmerge411.not, i1 %614, i1 %or.cond388.not
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #14
  store i32 -1, ptr %21, align 4, !tbaa !105
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %22, i8 0, i64 16, i1 false)
  %615 = getelementptr inbounds i8, ptr %35, i64 204
  %616 = load i8, ptr %615, align 4, !tbaa !159, !range !74, !noundef !75
  %617 = trunc nuw i8 %616 to i1
  %618 = select i1 %617, i32 2, i32 1
  %619 = getelementptr inbounds i8, ptr %35, i64 6528
  %620 = load float, ptr %619, align 8, !tbaa !160
  %621 = fmul float %620, 0x3FF19999A0000000
  %622 = fadd float %611, 1.000000e+00
  %623 = call float @llvm.fmuladd.f32(float %620, float 0x3FC99999A0000000, float %622)
  %624 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %621, float noundef %623)
  %625 = fptosi float %624 to i32
  %626 = sitofp i32 %625 to float
  %627 = load ptr, ptr %4, align 8, !tbaa !5
  %628 = getelementptr inbounds i8, ptr %627, i64 145
  %629 = load i8, ptr %628, align 1, !tbaa !150, !range !74, !noundef !75
  %630 = trunc nuw i8 %629 to i1
  br i1 %630, label %633, label %631

631:                                              ; preds = %603
  %632 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef nonnull %627, ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull %21, i32 noundef %618, ptr noundef nonnull %22, ptr noundef nonnull align 4 dereferenceable(16) %18)
  %spec.select390 = or i1 %632, %.1292
  %spec.select391 = or i1 %632, %.2
  %.pre460 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre460, i64 145
  %.pre461 = load i8, ptr %.phi.trans.insert, align 1, !tbaa !150, !range !74
  br label %633

633:                                              ; preds = %631, %603
  %634 = phi i8 [ %629, %603 ], [ %.pre461, %631 ]
  %635 = phi ptr [ %627, %603 ], [ %.pre460, %631 ]
  %.2293 = phi i1 [ %.1292, %603 ], [ %spec.select390, %631 ]
  %.3 = phi i1 [ %.2, %603 ], [ %spec.select391, %631 ]
  %636 = load i32, ptr %21, align 4, !tbaa !105
  %637 = trunc i32 %636 to i8
  %638 = getelementptr inbounds i8, ptr %635, i64 152
  store i8 %637, ptr %638, align 8, !tbaa !161
  %639 = trunc nuw i8 %634 to i1
  br i1 %639, label %730, label %640

640:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #14
  %641 = getelementptr inbounds i8, ptr %635, i64 32
  %642 = load float, ptr %641, align 8, !tbaa !133
  %643 = getelementptr inbounds i8, ptr %635, i64 36
  %644 = load float, ptr %643, align 4, !tbaa !135
  %645 = fsub float %644, %519
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef %642, float noundef %645)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #14
  %646 = load ptr, ptr %4, align 8, !tbaa !5
  %647 = getelementptr inbounds i8, ptr %646, i64 536
  %648 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %647)
  store <2 x float> %648, ptr %24, align 8
  %649 = load ptr, ptr %4, align 8, !tbaa !5
  %650 = getelementptr inbounds i8, ptr %649, i64 132
  %651 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %650)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #14
  br i1 %52, label %652, label %653

652:                                              ; preds = %640
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %25, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %659

653:                                              ; preds = %640
  %654 = load ptr, ptr %4, align 8, !tbaa !5
  %655 = getelementptr inbounds i8, ptr %654, i64 40
  %656 = getelementptr inbounds i8, ptr %654, i64 64
  %657 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %656, float noundef 2.000000e+00)
  store <2 x float> %657, ptr %26, align 8
  %658 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %655, ptr noundef nonnull align 4 dereferenceable(8) %26)
  store <2 x float> %658, ptr %25, align 8
  br label %659

659:                                              ; preds = %653, %652
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #14
  %660 = load float, ptr %23, align 4
  %.sroa.025.0.vec.extract = extractelement <2 x float> %651, i64 0
  %661 = select i1 %.3, float %660, float %.sroa.025.0.vec.extract
  %662 = getelementptr inbounds i8, ptr %23, i64 4
  %663 = load float, ptr %662, align 4
  %.sroa.025.4.vec.extract = extractelement <2 x float> %651, i64 1
  %664 = select i1 %.2293, float %663, float %.sroa.025.4.vec.extract
  %665 = and i32 %.1, 16384
  %.not347 = icmp eq i32 %665, 0
  br i1 %.not347, label %666, label %.thread418

666:                                              ; preds = %659
  %667 = getelementptr inbounds i8, ptr %25, i64 4
  %668 = load float, ptr %667, align 4, !tbaa !154
  %669 = fcmp ogt float %668, %664
  %670 = and i32 %.1, 8
  %.not348 = icmp eq i32 %670, 0
  %671 = select i1 %669, i1 %.not348, i1 false
  %672 = load ptr, ptr %4, align 8, !tbaa !5
  %673 = getelementptr inbounds i8, ptr %672, i64 141
  %674 = zext i1 %671 to i8
  store i8 %674, ptr %673, align 1, !tbaa !162
  %675 = and i32 %.1, 32768
  %.not349 = icmp eq i32 %675, 0
  br i1 %.not349, label %681, label %.thread423

.thread418:                                       ; preds = %659
  %676 = load ptr, ptr %4, align 8, !tbaa !5
  %677 = getelementptr inbounds i8, ptr %676, i64 141
  store i8 1, ptr %677, align 1, !tbaa !162
  %678 = and i32 %.1, 32768
  %.not349419 = icmp eq i32 %678, 0
  br i1 %.not349419, label %.thread420, label %.thread423.thread

.thread423.thread:                                ; preds = %.thread418
  %679 = getelementptr inbounds i8, ptr %676, i64 140
  store i8 1, ptr %679, align 4, !tbaa !163
  br label %.thread500

.thread420:                                       ; preds = %.thread418
  %680 = load float, ptr %25, align 8, !tbaa !164
  %.pre493 = and i32 %.1, 8
  br label %683

681:                                              ; preds = %666
  %682 = load float, ptr %25, align 8, !tbaa !164
  br i1 %671, label %683, label %689

683:                                              ; preds = %.thread420, %681
  %.pre491.pre-phi = phi i32 [ %.pre493, %.thread420 ], [ 0, %681 ]
  %684 = phi float [ %680, %.thread420 ], [ %682, %681 ]
  %685 = phi ptr [ %676, %.thread420 ], [ %672, %681 ]
  %686 = phi ptr [ %677, %.thread420 ], [ %673, %681 ]
  %687 = getelementptr inbounds i8, ptr %35, i64 5584
  %688 = load float, ptr %687, align 4, !tbaa !165
  br label %689

689:                                              ; preds = %681, %683
  %.pre-phi = phi i32 [ %670, %681 ], [ %.pre491.pre-phi, %683 ]
  %690 = phi i8 [ 0, %681 ], [ 1, %683 ]
  %691 = phi float [ %682, %681 ], [ %684, %683 ]
  %692 = phi i1 [ false, %681 ], [ true, %683 ]
  %693 = phi ptr [ %672, %681 ], [ %685, %683 ]
  %694 = phi ptr [ %673, %681 ], [ %686, %683 ]
  %695 = phi float [ 0.000000e+00, %681 ], [ %688, %683 ]
  %696 = fsub float %661, %695
  %697 = fcmp ogt float %691, %696
  %.not350 = icmp eq i32 %.pre-phi, 0
  %or.cond392 = select i1 %697, i1 %.not350, i1 false
  br i1 %or.cond392, label %700, label %.thread424

.thread424:                                       ; preds = %689
  %698 = getelementptr inbounds i8, ptr %693, i64 140
  store i8 0, ptr %698, align 4, !tbaa !163
  br label %712

.thread423:                                       ; preds = %666
  %699 = getelementptr inbounds i8, ptr %672, i64 140
  store i8 1, ptr %699, align 4, !tbaa !163
  br i1 %671, label %.thread500, label %704

700:                                              ; preds = %689
  %701 = and i32 %.1, 2048
  %.not439 = icmp eq i32 %701, 0
  %702 = getelementptr inbounds i8, ptr %693, i64 140
  %.lobit = lshr exact i32 %701, 11
  %703 = trunc nuw nsw i32 %.lobit to i8
  store i8 %703, ptr %702, align 4, !tbaa !163
  %brmerge436 = or i1 %.not439, %692
  %not..not439 = xor i1 %.not439, true
  br i1 %brmerge436, label %712, label %._crit_edge462

._crit_edge462:                                   ; preds = %700
  %.phi.trans.insert463 = getelementptr inbounds i8, ptr %25, i64 4
  %.pre464 = load float, ptr %.phi.trans.insert463, align 4, !tbaa !154
  br label %704

704:                                              ; preds = %._crit_edge462, %.thread423
  %.pre-phi492 = phi i32 [ 0, %._crit_edge462 ], [ %670, %.thread423 ]
  %705 = phi float [ %.pre464, %._crit_edge462 ], [ %668, %.thread423 ]
  %706 = phi ptr [ %694, %._crit_edge462 ], [ %673, %.thread423 ]
  %707 = fcmp ogt float %705, %664
  %.not351 = icmp eq i32 %.pre-phi492, 0
  %708 = select i1 %707, i1 %.not351, i1 false
  %709 = zext i1 %708 to i8
  store i8 %709, ptr %706, align 1, !tbaa !162
  br label %712

.thread500:                                       ; preds = %.thread423.thread, %.thread423
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #14
  %710 = getelementptr inbounds i8, ptr %35, i64 5584
  %711 = load float, ptr %710, align 4, !tbaa !165
  br label %720

712:                                              ; preds = %700, %.thread424, %704
  %713 = phi i8 [ %709, %704 ], [ %690, %700 ], [ %690, %.thread424 ]
  %714 = phi i1 [ true, %704 ], [ %not..not439, %700 ], [ false, %.thread424 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #14
  %715 = trunc nuw i8 %713 to i1
  br i1 %715, label %716, label %719

716:                                              ; preds = %712
  %717 = getelementptr inbounds i8, ptr %35, i64 5584
  %718 = load float, ptr %717, align 4, !tbaa !165
  br i1 %714, label %720, label %724

719:                                              ; preds = %712
  br i1 %714, label %720, label %724

720:                                              ; preds = %.thread500, %716, %719
  %721 = phi float [ %718, %716 ], [ 0.000000e+00, %719 ], [ %711, %.thread500 ]
  %722 = getelementptr inbounds i8, ptr %35, i64 5584
  %723 = load float, ptr %722, align 4, !tbaa !165
  br label %724

724:                                              ; preds = %716, %719, %720
  %725 = phi float [ %721, %720 ], [ 0.000000e+00, %719 ], [ %718, %716 ]
  %726 = phi float [ %723, %720 ], [ 0.000000e+00, %719 ], [ 0.000000e+00, %716 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, float noundef %725, float noundef %726)
  %727 = load ptr, ptr %4, align 8, !tbaa !5
  %728 = getelementptr inbounds i8, ptr %727, i64 132
  %729 = load i64, ptr %27, align 8
  store i64 %729, ptr %728, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #14
  br label %730

730:                                              ; preds = %724, %633
  %731 = phi ptr [ %727, %724 ], [ %635, %633 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #14
  %732 = and i32 %.1, 83886080
  %brmerge395.demorgan = icmp ne i32 %732, 16777216
  %733 = getelementptr inbounds i8, ptr %129, i64 600
  %734 = or i1 %brmerge395.demorgan, %269
  %735 = select i1 %734, ptr %16, ptr %733
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %28, ptr noundef nonnull align 4 dereferenceable(16) %735, i64 16, i1 false), !tbaa.struct !121
  %736 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(993) %731)
  %737 = extractvalue { <2 x float>, <2 x float> } %736, 0
  %738 = extractvalue { <2 x float>, <2 x float> } %736, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #14
  %739 = load ptr, ptr %4, align 8, !tbaa !5
  %740 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(993) %739)
  %741 = extractvalue { <2 x float>, <2 x float> } %740, 0
  store <2 x float> %741, ptr %29, align 8
  %742 = getelementptr inbounds i8, ptr %29, i64 8
  %743 = extractvalue { <2 x float>, <2 x float> } %740, 1
  store <2 x float> %743, ptr %742, align 8
  %744 = load ptr, ptr %4, align 8, !tbaa !5
  %745 = getelementptr inbounds i8, ptr %744, i64 520
  store <2 x float> %737, ptr %745, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %744, i64 528
  store <2 x float> %738, ptr %.sroa.4.0..sroa_idx, align 8
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %745, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %746 = load ptr, ptr %4, align 8
  %747 = getelementptr inbounds i8, ptr %746, i64 16
  %748 = getelementptr inbounds i8, ptr %746, i64 536
  %749 = getelementptr inbounds i8, ptr %746, i64 540
  %750 = getelementptr inbounds i8, ptr %746, i64 24
  %751 = getelementptr inbounds i8, ptr %746, i64 132
  %752 = getelementptr inbounds i8, ptr %746, i64 544
  %753 = load <2 x float>, ptr %747, align 8, !tbaa !122
  %754 = extractelement <2 x float> %753, i64 0
  store float %754, ptr %748, align 8, !tbaa !166
  %755 = extractelement <2 x float> %753, i64 1
  %756 = fadd float %519, %755
  store float %756, ptr %749, align 4, !tbaa !167
  %757 = load <2 x float>, ptr %750, align 8, !tbaa !122
  %758 = fadd <2 x float> %753, %757
  %759 = load <2 x float>, ptr %751, align 4, !tbaa !122
  %760 = fsub <2 x float> %758, %759
  store <2 x float> %760, ptr %752, align 8, !tbaa !122
  %761 = and i32 %.1, 1025
  %brmerge397.not = icmp eq i32 %761, 1
  %762 = getelementptr inbounds i8, ptr %35, i64 5540
  %763 = getelementptr inbounds i8, ptr %746, i64 76
  %.in353 = select i1 %brmerge397.not, ptr %763, ptr %762
  %764 = load float, ptr %.in353, align 4, !tbaa !122
  %765 = fadd float %754, 5.000000e-01
  %766 = getelementptr inbounds i8, ptr %746, i64 64
  %767 = load float, ptr %766, align 8, !tbaa !168
  %768 = fmul float %767, 5.000000e-01
  %769 = call noundef float @_ZL7ImFloorf(float noundef %768)
  %770 = load ptr, ptr %4, align 8, !tbaa !5
  %771 = getelementptr inbounds i8, ptr %770, i64 76
  %772 = load float, ptr %771, align 4, !tbaa !137
  %773 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %769, float noundef %772)
  %774 = fadd float %765, %773
  %775 = call noundef float @_ZL7ImFloorf(float noundef %774)
  %776 = load ptr, ptr %4, align 8, !tbaa !5
  %777 = getelementptr inbounds i8, ptr %776, i64 552
  store float %775, ptr %777, align 8, !tbaa !169
  %778 = getelementptr inbounds i8, ptr %776, i64 540
  %779 = load float, ptr %778, align 4, !tbaa !167
  %780 = fadd float %779, 5.000000e-01
  %781 = fadd float %764, %780
  %782 = call noundef float @_ZL7ImFloorf(float noundef %781)
  %783 = load ptr, ptr %4, align 8, !tbaa !5
  %784 = getelementptr inbounds i8, ptr %783, i64 556
  store float %782, ptr %784, align 4, !tbaa !170
  %785 = getelementptr inbounds i8, ptr %783, i64 544
  %786 = load float, ptr %785, align 8, !tbaa !171
  %787 = fadd float %786, 5.000000e-01
  %788 = getelementptr inbounds i8, ptr %783, i64 64
  %789 = load float, ptr %788, align 8, !tbaa !168
  %790 = fmul float %789, 5.000000e-01
  %791 = call noundef float @_ZL7ImFloorf(float noundef %790)
  %792 = load ptr, ptr %4, align 8, !tbaa !5
  %793 = getelementptr inbounds i8, ptr %792, i64 76
  %794 = load float, ptr %793, align 4, !tbaa !137
  %795 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %791, float noundef %794)
  %796 = fsub float %787, %795
  %797 = call noundef float @_ZL7ImFloorf(float noundef %796)
  %798 = load ptr, ptr %4, align 8, !tbaa !5
  %799 = getelementptr inbounds i8, ptr %798, i64 560
  store float %797, ptr %799, align 8, !tbaa !172
  %800 = getelementptr inbounds i8, ptr %798, i64 548
  %801 = load float, ptr %800, align 4, !tbaa !173
  %802 = fadd float %801, 5.000000e-01
  %803 = getelementptr inbounds i8, ptr %798, i64 76
  %804 = load float, ptr %803, align 4, !tbaa !137
  %805 = fsub float %802, %804
  %806 = call noundef float @_ZL7ImFloorf(float noundef %805)
  %807 = load ptr, ptr %4, align 8, !tbaa !5
  %808 = getelementptr inbounds i8, ptr %807, i64 564
  store float %806, ptr %808, align 4, !tbaa !174
  %809 = getelementptr inbounds i8, ptr %807, i64 552
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %809, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %810 = load ptr, ptr %4, align 8, !tbaa !5
  %811 = getelementptr inbounds i8, ptr %810, i64 24
  %812 = load float, ptr %811, align 8, !tbaa !134
  %813 = fcmp ule float %812, 0.000000e+00
  %.not330.not = xor i1 %.not330, true
  %brmerge399 = select i1 %813, i1 true, i1 %.not330.not
  %brmerge400 = or i1 %.not341, %brmerge399
  br i1 %brmerge400, label %816, label %814

814:                                              ; preds = %730
  %815 = fmul float %812, 0x3FE4CCCCC0000000
  br label %819

816:                                              ; preds = %730
  %817 = load float, ptr %619, align 8, !tbaa !160
  %818 = fmul float %817, 1.600000e+01
  br label %819

819:                                              ; preds = %816, %814
  %.sink505 = phi float [ %818, %816 ], [ %815, %814 ]
  %820 = call noundef float @_ZL7ImFloorf(float noundef %.sink505)
  %.sink504 = load ptr, ptr %4, align 8, !tbaa !5
  %821 = getelementptr inbounds i8, ptr %.sink504, i64 648
  store float %820, ptr %821, align 8, !tbaa !175
  %822 = getelementptr inbounds i8, ptr %.sink504, i64 40
  %823 = load float, ptr %822, align 8, !tbaa !176
  %824 = getelementptr inbounds i8, ptr %.sink504, i64 64
  %825 = load float, ptr %824, align 8, !tbaa !168
  %826 = call float @llvm.fmuladd.f32(float %825, float 2.000000e+00, float %823)
  %827 = getelementptr inbounds i8, ptr %.sink504, i64 536
  %828 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %827)
  %829 = fsub float %826, %828
  %830 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %829)
  %831 = load ptr, ptr %4, align 8, !tbaa !5
  %832 = getelementptr inbounds i8, ptr %831, i64 100
  store float %830, ptr %832, align 4, !tbaa !177
  %833 = getelementptr inbounds i8, ptr %831, i64 44
  %834 = load float, ptr %833, align 4, !tbaa !178
  %835 = getelementptr inbounds i8, ptr %831, i64 68
  %836 = load float, ptr %835, align 4, !tbaa !179
  %837 = call float @llvm.fmuladd.f32(float %836, float 2.000000e+00, float %834)
  %838 = getelementptr inbounds i8, ptr %831, i64 536
  %839 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %838)
  %840 = fsub float %837, %839
  %841 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %840)
  %842 = load ptr, ptr %4, align 8, !tbaa !5
  %843 = getelementptr inbounds i8, ptr %842, i64 104
  store float %841, ptr %843, align 4, !tbaa !180
  %844 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %842)
  %845 = load ptr, ptr %4, align 8, !tbaa !5
  %846 = getelementptr inbounds i8, ptr %845, i64 92
  store <2 x float> %844, ptr %846, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %847 = load ptr, ptr %4, align 8, !tbaa !5
  %848 = getelementptr inbounds i8, ptr %847, i64 108
  %849 = load i64, ptr %30, align 8
  store i64 %849, ptr %848, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #14
  %850 = getelementptr inbounds i8, ptr %847, i64 696
  %851 = load ptr, ptr %850, align 8, !tbaa !123
  %852 = load i32, ptr %851, align 8, !tbaa !181
  %853 = icmp eq i32 %852, 1
  br i1 %853, label %854, label %.critedge4

854:                                              ; preds = %819
  %855 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %851, i32 noundef 0)
  %856 = getelementptr inbounds i8, ptr %855, i64 32
  %857 = load i32, ptr %856, align 8, !tbaa !182
  %858 = icmp eq i32 %857, 0
  br i1 %858, label %859, label %.critedge4

.critedge4:                                       ; preds = %819, %854
  call void @__assert_fail(ptr noundef nonnull @.str.109, ptr noundef nonnull @.str.3, i32 noundef 5970, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

859:                                              ; preds = %854
  %860 = load ptr, ptr %4, align 8, !tbaa !5
  %861 = getelementptr inbounds i8, ptr %860, i64 696
  %862 = load ptr, ptr %861, align 8, !tbaa !123
  %863 = getelementptr inbounds i8, ptr %35, i64 6520
  %864 = load ptr, ptr %863, align 8, !tbaa !184
  %865 = getelementptr inbounds i8, ptr %864, i64 64
  %866 = load ptr, ptr %865, align 8, !tbaa !185
  %867 = getelementptr inbounds i8, ptr %866, i64 8
  %868 = load ptr, ptr %867, align 8, !tbaa !186
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %862, ptr noundef %868)
  %869 = getelementptr inbounds i8, ptr %28, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %869, i1 noundef zeroext false)
  %870 = and i32 %.1, 134217728
  %.not354 = icmp eq i32 %870, 0
  br i1 %.not354, label %880, label %871

871:                                              ; preds = %859
  %872 = load ptr, ptr %4, align 8, !tbaa !5
  %873 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  %874 = icmp eq ptr %872, %873
  br i1 %874, label %875, label %880

875:                                              ; preds = %871
  %876 = load ptr, ptr %4, align 8, !tbaa !5
  %877 = getelementptr inbounds i8, ptr %876, i64 173
  %878 = load i8, ptr %877, align 1, !tbaa !89
  %879 = icmp slt i8 %878, 1
  br label %880

880:                                              ; preds = %875, %871, %859
  %881 = phi i1 [ false, %871 ], [ false, %859 ], [ %879, %875 ]
  %882 = getelementptr inbounds i8, ptr %35, i64 7624
  %883 = load ptr, ptr %882, align 8, !tbaa !190
  %.not355 = icmp eq ptr %883, null
  br i1 %.not355, label %889, label %884

884:                                              ; preds = %880
  %885 = load ptr, ptr %4, align 8, !tbaa !5
  %886 = getelementptr inbounds i8, ptr %883, i64 912
  %887 = load ptr, ptr %886, align 8, !tbaa !191
  %888 = icmp eq ptr %885, %887
  br label %889

889:                                              ; preds = %884, %880
  %890 = phi i1 [ false, %880 ], [ %888, %884 ]
  %brmerge401 = select i1 %881, i1 true, i1 %890
  br i1 %brmerge401, label %891, label %898

891:                                              ; preds = %889
  %.mux = select i1 %881, i32 52, i32 51
  %892 = getelementptr inbounds i8, ptr %35, i64 7784
  %893 = load float, ptr %892, align 8, !tbaa !192
  %894 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %.mux, float noundef %893)
  %895 = load ptr, ptr %4, align 8, !tbaa !5
  %896 = getelementptr inbounds i8, ptr %895, i64 696
  %897 = load ptr, ptr %896, align 8, !tbaa !123
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %897, ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %579, i32 noundef %894, float noundef 0.000000e+00, i32 noundef 15)
  br label %898

898:                                              ; preds = %889, %891
  br i1 %890, label %899, label %921

899:                                              ; preds = %898
  %900 = load ptr, ptr %4, align 8, !tbaa !5
  %901 = load ptr, ptr %882, align 8, !tbaa !190
  %902 = icmp eq ptr %900, %901
  br i1 %902, label %903, label %921

903:                                              ; preds = %899
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #14
  %904 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(993) %900)
  %905 = extractvalue { <2 x float>, <2 x float> } %904, 0
  store <2 x float> %905, ptr %31, align 8
  %906 = getelementptr inbounds i8, ptr %31, i64 8
  %907 = extractvalue { <2 x float>, <2 x float> } %904, 1
  store <2 x float> %907, ptr %906, align 8
  %908 = load float, ptr %619, align 8, !tbaa !160
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %31, float noundef %908)
  %909 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %31, ptr noundef nonnull align 4 dereferenceable(16) %16)
  br i1 %909, label %920, label %910

910:                                              ; preds = %903
  %911 = load ptr, ptr %4, align 8, !tbaa !5
  %912 = getelementptr inbounds i8, ptr %911, i64 696
  %913 = load ptr, ptr %912, align 8, !tbaa !123
  %914 = getelementptr inbounds i8, ptr %35, i64 7644
  %915 = load float, ptr %914, align 4, !tbaa !193
  %916 = fmul float %915, 2.500000e-01
  %917 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 50, float noundef %916)
  %918 = getelementptr inbounds i8, ptr %35, i64 5484
  %919 = load float, ptr %918, align 4, !tbaa !194
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %913, ptr noundef nonnull align 4 dereferenceable(8) %31, ptr noundef nonnull align 4 dereferenceable(8) %906, i32 noundef %917, float noundef %919, i32 noundef 15)
  br label %920

920:                                              ; preds = %910, %903
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #14
  br label %921

921:                                              ; preds = %920, %899, %898
  br i1 %734, label %.thread426, label %922

922:                                              ; preds = %921
  %923 = load ptr, ptr %4, align 8, !tbaa !5
  %924 = getelementptr inbounds i8, ptr %923, i64 696
  %925 = load ptr, ptr %924, align 8, !tbaa !123
  %926 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %925)
  %927 = getelementptr inbounds i8, ptr %926, i64 32
  %928 = load i32, ptr %927, align 8, !tbaa !182
  %929 = icmp eq i32 %928, 0
  br i1 %929, label %930, label %.thread426

930:                                              ; preds = %922
  %931 = getelementptr inbounds i8, ptr %129, i64 696
  %932 = load ptr, ptr %931, align 8, !tbaa !123
  %933 = getelementptr inbounds i8, ptr %932, i64 32
  %934 = load i32, ptr %933, align 8, !tbaa !195
  %935 = icmp sgt i32 %934, 0
  br i1 %935, label %936, label %.thread426

936:                                              ; preds = %930
  %937 = load ptr, ptr %4, align 8, !tbaa !5
  %938 = getelementptr inbounds i8, ptr %937, i64 696
  store ptr %932, ptr %938, align 8, !tbaa !123
  br label %.thread426

.thread426:                                       ; preds = %921, %922, %936, %930
  %.0290428 = phi i1 [ true, %936 ], [ false, %930 ], [ false, %922 ], [ false, %921 ]
  %939 = getelementptr inbounds i8, ptr %35, i64 7616
  %940 = load ptr, ptr %939, align 8, !tbaa !196
  %.not356 = icmp eq ptr %940, null
  br i1 %.not356, label %941, label %944

941:                                              ; preds = %.thread426
  %942 = getelementptr inbounds i8, ptr %35, i64 7312
  %943 = load ptr, ptr %942, align 8, !tbaa !197
  br label %944

944:                                              ; preds = %.thread426, %941
  %945 = phi ptr [ %943, %941 ], [ %940, %.thread426 ]
  br i1 %spec.select434, label %._crit_edge465, label %946

._crit_edge465:                                   ; preds = %944
  %.pre466 = load ptr, ptr %4, align 8, !tbaa !5
  br label %953

946:                                              ; preds = %944
  %.not357 = icmp eq ptr %945, null
  %.pre467 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not357, label %953, label %947

947:                                              ; preds = %946
  %948 = getelementptr inbounds i8, ptr %.pre467, i64 920
  %949 = load ptr, ptr %948, align 8, !tbaa !198
  %950 = getelementptr inbounds i8, ptr %945, i64 920
  %951 = load ptr, ptr %950, align 8, !tbaa !198
  %952 = icmp eq ptr %949, %951
  br label %953

953:                                              ; preds = %._crit_edge465, %946, %947
  %954 = phi ptr [ %.pre466, %._crit_edge465 ], [ %.pre467, %946 ], [ %.pre467, %947 ]
  %955 = phi i1 [ true, %._crit_edge465 ], [ false, %946 ], [ %952, %947 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef %954, ptr noundef nonnull align 4 dereferenceable(16) %29, i1 noundef zeroext %955, i32 noundef %618, ptr noundef nonnull %22, float noundef %626)
  %.pre468 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.0290428, label %956, label %959

956:                                              ; preds = %953
  %957 = getelementptr inbounds i8, ptr %.pre468, i64 704
  %958 = getelementptr inbounds i8, ptr %.pre468, i64 696
  store ptr %957, ptr %958, align 8, !tbaa !123
  br label %959

959:                                              ; preds = %956, %953
  %960 = load ptr, ptr %882, align 8, !tbaa !190
  %961 = icmp eq ptr %960, %.pre468
  br i1 %961, label %962, label %988

962:                                              ; preds = %959
  %963 = getelementptr inbounds i8, ptr %.pre468, i64 72
  %964 = load float, ptr %963, align 8, !tbaa !158
  %965 = getelementptr inbounds i8, ptr %35, i64 5484
  %966 = load float, ptr %965, align 4, !tbaa !194
  %967 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %964, float noundef %966)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #14
  %968 = load ptr, ptr %4, align 8, !tbaa !5
  %969 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(993) %968)
  %970 = extractvalue { <2 x float>, <2 x float> } %969, 0
  store <2 x float> %970, ptr %32, align 8
  %971 = getelementptr inbounds i8, ptr %32, i64 8
  %972 = extractvalue { <2 x float>, <2 x float> } %969, 1
  store <2 x float> %972, ptr %971, align 8
  %973 = load float, ptr %619, align 8, !tbaa !160
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %32, float noundef %973)
  %974 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(16) %16)
  br i1 %974, label %975, label %._crit_edge469

._crit_edge469:                                   ; preds = %962
  %.pre470 = load ptr, ptr %4, align 8, !tbaa !5
  br label %981

975:                                              ; preds = %962
  %976 = load float, ptr %619, align 8, !tbaa !160
  %977 = fsub float -1.000000e+00, %976
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %32, float noundef %977)
  %978 = load ptr, ptr %4, align 8, !tbaa !5
  %979 = getelementptr inbounds i8, ptr %978, i64 72
  %980 = load float, ptr %979, align 8, !tbaa !158
  br label %981

981:                                              ; preds = %._crit_edge469, %975
  %982 = phi ptr [ %978, %975 ], [ %.pre470, %._crit_edge469 ]
  %.0286 = phi float [ %980, %975 ], [ %967, %._crit_edge469 ]
  %983 = getelementptr inbounds i8, ptr %982, i64 696
  %984 = load ptr, ptr %983, align 8, !tbaa !123
  %985 = getelementptr inbounds i8, ptr %35, i64 7644
  %986 = load float, ptr %985, align 4, !tbaa !193
  %987 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 50, float noundef %986)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %984, ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef nonnull align 4 dereferenceable(8) %971, i32 noundef %987, float noundef %.0286, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #14
  %.pre471 = load ptr, ptr %4, align 8, !tbaa !5
  br label %988

988:                                              ; preds = %981, %959
  %989 = phi ptr [ %.pre471, %981 ], [ %.pre468, %959 ]
  %990 = and i32 %.1, 8
  %.not358 = icmp eq i32 %990, 0
  %991 = getelementptr inbounds i8, ptr %989, i64 56
  %992 = load float, ptr %991, align 8, !tbaa !199
  %993 = fcmp une float %992, 0.000000e+00
  br i1 %993, label %1012, label %994

994:                                              ; preds = %988
  %995 = and i32 %.1, 2056
  %996 = icmp eq i32 %995, 2048
  br i1 %996, label %997, label %1000

997:                                              ; preds = %994
  %998 = getelementptr inbounds i8, ptr %989, i64 40
  %999 = load float, ptr %998, align 8, !tbaa !176
  br label %1000

1000:                                             ; preds = %994, %997
  %1001 = phi float [ %999, %997 ], [ 0.000000e+00, %994 ]
  %1002 = getelementptr inbounds i8, ptr %989, i64 24
  %1003 = load float, ptr %1002, align 8, !tbaa !134
  %1004 = getelementptr inbounds i8, ptr %989, i64 64
  %1005 = load float, ptr %1004, align 8, !tbaa !168
  %1006 = fneg float %1005
  %1007 = call float @llvm.fmuladd.f32(float %1006, float 2.000000e+00, float %1003)
  %1008 = getelementptr inbounds i8, ptr %989, i64 132
  %1009 = load float, ptr %1008, align 4, !tbaa !200
  %1010 = fsub float %1007, %1009
  %1011 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1001, float noundef %1010)
  %.pre472 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1012

1012:                                             ; preds = %988, %1000
  %1013 = phi ptr [ %.pre472, %1000 ], [ %989, %988 ]
  %1014 = phi float [ %1011, %1000 ], [ %992, %988 ]
  %1015 = getelementptr inbounds i8, ptr %1013, i64 60
  %1016 = load float, ptr %1015, align 4, !tbaa !201
  %1017 = fcmp une float %1016, 0.000000e+00
  br i1 %1017, label %1035, label %1018

1018:                                             ; preds = %1012
  br i1 %.not358, label %1019, label %1022

1019:                                             ; preds = %1018
  %1020 = getelementptr inbounds i8, ptr %1013, i64 44
  %1021 = load float, ptr %1020, align 4, !tbaa !178
  br label %1022

1022:                                             ; preds = %1018, %1019
  %1023 = phi float [ %1021, %1019 ], [ 0.000000e+00, %1018 ]
  %1024 = getelementptr inbounds i8, ptr %1013, i64 28
  %1025 = load float, ptr %1024, align 4, !tbaa !136
  %1026 = getelementptr inbounds i8, ptr %1013, i64 68
  %1027 = load float, ptr %1026, align 4, !tbaa !179
  %1028 = fneg float %1027
  %1029 = call float @llvm.fmuladd.f32(float %1028, float 2.000000e+00, float %1025)
  %1030 = fsub float %1029, %519
  %1031 = getelementptr inbounds i8, ptr %1013, i64 136
  %1032 = load float, ptr %1031, align 4, !tbaa !202
  %1033 = fsub float %1030, %1032
  %1034 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1023, float noundef %1033)
  %.pre473 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1035

1035:                                             ; preds = %1012, %1022
  %1036 = phi ptr [ %.pre473, %1022 ], [ %1013, %1012 ]
  %1037 = phi float [ %1034, %1022 ], [ %1016, %1012 ]
  %1038 = getelementptr inbounds i8, ptr %1036, i64 536
  %1039 = load float, ptr %1038, align 8, !tbaa !166
  %1040 = getelementptr inbounds i8, ptr %1036, i64 92
  %1041 = load float, ptr %1040, align 4, !tbaa !203
  %1042 = fsub float %1039, %1041
  %1043 = getelementptr inbounds i8, ptr %1036, i64 64
  %1044 = load float, ptr %1043, align 8, !tbaa !168
  %1045 = getelementptr inbounds i8, ptr %1036, i64 76
  %1046 = load float, ptr %1045, align 4, !tbaa !137
  %1047 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1044, float noundef %1046)
  %1048 = fadd float %1042, %1047
  %1049 = call noundef float @_ZL7ImFloorf(float noundef %1048)
  %1050 = load ptr, ptr %4, align 8, !tbaa !5
  %1051 = getelementptr inbounds i8, ptr %1050, i64 568
  store float %1049, ptr %1051, align 8, !tbaa !204
  %1052 = getelementptr inbounds i8, ptr %1050, i64 540
  %1053 = load float, ptr %1052, align 4, !tbaa !167
  %1054 = getelementptr inbounds i8, ptr %1050, i64 96
  %1055 = load float, ptr %1054, align 4, !tbaa !205
  %1056 = fsub float %1053, %1055
  %1057 = getelementptr inbounds i8, ptr %1050, i64 68
  %1058 = load float, ptr %1057, align 4, !tbaa !179
  %1059 = getelementptr inbounds i8, ptr %1050, i64 76
  %1060 = load float, ptr %1059, align 4, !tbaa !137
  %1061 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1058, float noundef %1060)
  %1062 = fadd float %1056, %1061
  %1063 = call noundef float @_ZL7ImFloorf(float noundef %1062)
  %1064 = load ptr, ptr %4, align 8, !tbaa !5
  %1065 = getelementptr inbounds i8, ptr %1064, i64 572
  store float %1063, ptr %1065, align 4, !tbaa !206
  %1066 = getelementptr inbounds i8, ptr %1064, i64 568
  %1067 = load float, ptr %1066, align 8, !tbaa !204
  %1068 = getelementptr inbounds i8, ptr %1064, i64 576
  %1069 = insertelement <2 x float> poison, float %1014, i64 0
  %1070 = insertelement <2 x float> %1069, float %1037, i64 1
  %1071 = insertelement <2 x float> poison, float %1067, i64 0
  %1072 = insertelement <2 x float> %1071, float %1063, i64 1
  %1073 = fadd <2 x float> %1070, %1072
  store <2 x float> %1073, ptr %1068, align 8, !tbaa !122
  %1074 = getelementptr inbounds i8, ptr %1064, i64 584
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1074, ptr noundef nonnull align 8 dereferenceable(16) %1066, i64 16, i1 false), !tbaa.struct !121
  %1075 = getelementptr inbounds i8, ptr %1064, i64 16
  %1076 = load float, ptr %1075, align 8, !tbaa !207
  %1077 = getelementptr inbounds i8, ptr %1064, i64 92
  %1078 = load float, ptr %1077, align 4, !tbaa !203
  %1079 = fsub float %1076, %1078
  %1080 = getelementptr inbounds i8, ptr %1064, i64 64
  %1081 = load float, ptr %1080, align 8, !tbaa !168
  %1082 = fadd float %1079, %1081
  %1083 = getelementptr inbounds i8, ptr %1064, i64 616
  store float %1082, ptr %1083, align 8, !tbaa !208
  %1084 = getelementptr inbounds i8, ptr %1064, i64 20
  %1085 = load float, ptr %1084, align 4, !tbaa !209
  %1086 = getelementptr inbounds i8, ptr %1064, i64 96
  %1087 = load float, ptr %1086, align 4, !tbaa !205
  %1088 = fsub float %1085, %1087
  %1089 = getelementptr inbounds i8, ptr %1064, i64 68
  %1090 = load float, ptr %1089, align 4, !tbaa !179
  %1091 = fadd float %1088, %1090
  %1092 = fadd float %519, %1091
  %1093 = getelementptr inbounds i8, ptr %1064, i64 620
  store float %1092, ptr %1093, align 4, !tbaa !210
  %1094 = getelementptr inbounds i8, ptr %1064, i64 56
  %1095 = load float, ptr %1094, align 8, !tbaa !199
  %1096 = fcmp une float %1095, 0.000000e+00
  br i1 %1096, label %1105, label %1097

1097:                                             ; preds = %1035
  %1098 = getelementptr inbounds i8, ptr %1064, i64 24
  %1099 = load float, ptr %1098, align 8, !tbaa !134
  %1100 = fneg float %1081
  %1101 = call float @llvm.fmuladd.f32(float %1100, float 2.000000e+00, float %1099)
  %1102 = getelementptr inbounds i8, ptr %1064, i64 132
  %1103 = load float, ptr %1102, align 4, !tbaa !200
  %1104 = fsub float %1101, %1103
  br label %1105

1105:                                             ; preds = %1035, %1097
  %1106 = phi float [ %1104, %1097 ], [ %1095, %1035 ]
  %1107 = fadd float %1082, %1106
  %1108 = getelementptr inbounds i8, ptr %1064, i64 624
  store float %1107, ptr %1108, align 8, !tbaa !211
  %1109 = getelementptr inbounds i8, ptr %1064, i64 60
  %1110 = load float, ptr %1109, align 4, !tbaa !201
  %1111 = fcmp une float %1110, 0.000000e+00
  br i1 %1111, label %1121, label %1112

1112:                                             ; preds = %1105
  %1113 = getelementptr inbounds i8, ptr %1064, i64 28
  %1114 = load float, ptr %1113, align 4, !tbaa !136
  %1115 = fneg float %1090
  %1116 = call float @llvm.fmuladd.f32(float %1115, float 2.000000e+00, float %1114)
  %1117 = fsub float %1116, %519
  %1118 = getelementptr inbounds i8, ptr %1064, i64 136
  %1119 = load float, ptr %1118, align 4, !tbaa !202
  %1120 = fsub float %1117, %1119
  br label %1121

1121:                                             ; preds = %1105, %1112
  %1122 = phi float [ %1120, %1112 ], [ %1110, %1105 ]
  %1123 = fadd float %1092, %1122
  %1124 = getelementptr inbounds i8, ptr %1064, i64 628
  store float %1123, ptr %1124, align 4, !tbaa !212
  %1125 = fadd float %1081, 0.000000e+00
  %1126 = fsub float %1125, %1078
  %1127 = getelementptr inbounds i8, ptr %1064, i64 280
  store float %1126, ptr %1127, align 8, !tbaa !213
  %1128 = getelementptr inbounds i8, ptr %1064, i64 284
  store <2 x float> zeroinitializer, ptr %1128, align 4, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #14
  %1129 = fadd float %519, %1090
  %1130 = fsub float %1129, %1087
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %1126, float noundef %1130)
  %1131 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1075, ptr noundef nonnull align 4 dereferenceable(8) %33)
  %1132 = load ptr, ptr %4, align 8, !tbaa !5
  %1133 = getelementptr inbounds i8, ptr %1132, i64 232
  store <2 x float> %1131, ptr %1133, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #14
  %1134 = getelementptr inbounds i8, ptr %1132, i64 216
  store <2 x float> %1131, ptr %1134, align 8
  %1135 = getelementptr inbounds i8, ptr %1132, i64 224
  store <2 x float> %1131, ptr %1135, align 8
  %1136 = getelementptr inbounds i8, ptr %1132, i64 240
  store <2 x float> %1131, ptr %1136, align 8
  %1137 = getelementptr inbounds i8, ptr %1132, i64 248
  store <2 x float> %1131, ptr %1137, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1138 = load ptr, ptr %4, align 8, !tbaa !5
  %1139 = getelementptr inbounds i8, ptr %1138, i64 264
  %1140 = load i64, ptr %34, align 8
  store i64 %1140, ptr %1139, align 8
  %1141 = getelementptr inbounds i8, ptr %1138, i64 256
  store i64 %1140, ptr %1141, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  %1142 = getelementptr inbounds i8, ptr %1138, i64 272
  store <2 x float> zeroinitializer, ptr %1142, align 8, !tbaa !122
  %1143 = getelementptr inbounds i8, ptr %1138, i64 332
  store i32 0, ptr %1143, align 4, !tbaa !214
  %1144 = getelementptr inbounds i8, ptr %1138, i64 340
  %1145 = load i32, ptr %1144, align 4, !tbaa !215
  %1146 = getelementptr inbounds i8, ptr %1138, i64 336
  store i32 %1145, ptr %1146, align 8, !tbaa !216
  store i32 0, ptr %1144, align 4, !tbaa !215
  %1147 = getelementptr inbounds i8, ptr %1138, i64 348
  store i8 0, ptr %1147, align 4, !tbaa !217
  %1148 = getelementptr inbounds i8, ptr %1138, i64 104
  %1149 = load float, ptr %1148, align 4, !tbaa !180
  %1150 = fcmp ogt float %1149, 0.000000e+00
  %1151 = getelementptr inbounds i8, ptr %1138, i64 349
  %1152 = zext i1 %1150 to i8
  store i8 %1152, ptr %1151, align 1, !tbaa !218
  %1153 = getelementptr inbounds i8, ptr %1138, i64 350
  store i8 0, ptr %1153, align 2, !tbaa !219
  %1154 = getelementptr inbounds i8, ptr %1138, i64 360
  %1155 = load float, ptr %380, align 4, !tbaa !140
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36) %1154, i32 noundef 3, float noundef %1155, i1 noundef zeroext %.0282.in)
  %1156 = load ptr, ptr %4, align 8, !tbaa !5
  %1157 = getelementptr inbounds i8, ptr %1156, i64 396
  store i32 0, ptr %1157, align 4, !tbaa !220
  %1158 = getelementptr inbounds i8, ptr %1156, i64 400
  store i32 0, ptr %1158, align 8, !tbaa !221
  %1159 = getelementptr inbounds i8, ptr %1156, i64 408
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1159, i32 noundef 0)
  %1160 = load ptr, ptr %4, align 8, !tbaa !5
  %1161 = getelementptr inbounds i8, ptr %1160, i64 656
  %1162 = getelementptr inbounds i8, ptr %1160, i64 424
  store ptr %1161, ptr %1162, align 8, !tbaa !222
  %1163 = getelementptr inbounds i8, ptr %1160, i64 432
  store ptr null, ptr %1163, align 8, !tbaa !223
  %1164 = getelementptr inbounds i8, ptr %1160, i64 444
  store i32 1, ptr %1164, align 4, !tbaa !224
  br i1 %130, label %1168, label %1165

1165:                                             ; preds = %1121
  %1166 = getelementptr inbounds i8, ptr %129, i64 444
  %1167 = load i32, ptr %1166, align 4, !tbaa !224
  br label %1168

1168:                                             ; preds = %1121, %1165
  %1169 = phi i32 [ %1167, %1165 ], [ 1, %1121 ]
  %1170 = getelementptr inbounds i8, ptr %1160, i64 448
  store i32 %1169, ptr %1170, align 8, !tbaa !225
  %1171 = getelementptr inbounds i8, ptr %1160, i64 456
  store i32 -1, ptr %1171, align 8, !tbaa !226
  %1172 = getelementptr inbounds i8, ptr %1160, i64 452
  store i32 -1, ptr %1172, align 4, !tbaa !227
  %1173 = getelementptr inbounds i8, ptr %1160, i64 648
  %1174 = load float, ptr %1173, align 8, !tbaa !175
  %1175 = getelementptr inbounds i8, ptr %1160, i64 464
  store float %1174, ptr %1175, align 8, !tbaa !228
  %1176 = getelementptr inbounds i8, ptr %1160, i64 468
  store float -1.000000e+00, ptr %1176, align 4, !tbaa !229
  %1177 = getelementptr inbounds i8, ptr %1160, i64 472
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1177, i32 noundef 0)
  %1178 = load ptr, ptr %4, align 8, !tbaa !5
  %1179 = getelementptr inbounds i8, ptr %1178, i64 488
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1179, i32 noundef 0)
  %1180 = load ptr, ptr %4, align 8, !tbaa !5
  %1181 = getelementptr inbounds i8, ptr %1180, i64 164
  %1182 = load i8, ptr %1181, align 4, !tbaa !151
  %1183 = icmp sgt i8 %1182, 0
  br i1 %1183, label %1184, label %1186

1184:                                             ; preds = %1168
  %1185 = add nsw i8 %1182, -1
  store i8 %1185, ptr %1181, align 4, !tbaa !151
  br label %1186

1186:                                             ; preds = %1184, %1168
  %1187 = getelementptr inbounds i8, ptr %1180, i64 165
  %1188 = load i8, ptr %1187, align 1, !tbaa !152
  %1189 = icmp sgt i8 %1188, 0
  br i1 %1189, label %1190, label %1192

1190:                                             ; preds = %1186
  %1191 = add nsw i8 %1188, -1
  store i8 %1191, ptr %1187, align 1, !tbaa !152
  br label %1192

1192:                                             ; preds = %1190, %1186
  br i1 %spec.select434, label %1193, label %1195

1193:                                             ; preds = %1192
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %1180)
  %1194 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1194, i1 noundef zeroext false)
  %.pre475.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1195

1195:                                             ; preds = %1193, %1192
  %.pre475 = phi ptr [ %.pre475.pre, %1193 ], [ %1180, %1192 ]
  br i1 %.not339, label %1196, label %1197

1196:                                             ; preds = %1195
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %.pre475, ptr noundef nonnull align 4 dereferenceable(16) %29, ptr noundef nonnull %0, ptr noundef %1)
  %.pre474 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1197

1197:                                             ; preds = %1196, %1195
  %1198 = phi ptr [ %.pre474, %1196 ], [ %.pre475, %1195 ]
  %1199 = getelementptr inbounds i8, ptr %1198, i64 634
  store i16 0, ptr %1199, align 2, !tbaa !230
  %1200 = getelementptr inbounds i8, ptr %1198, i64 632
  store i16 0, ptr %1200, align 8, !tbaa !231
  %1201 = getelementptr inbounds i8, ptr %1198, i64 84
  %1202 = load i32, ptr %1201, align 4, !tbaa !232
  %1203 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %742, i1 noundef zeroext false)
  %1204 = zext i1 %1203 to i32
  call void @_ZN5ImGui15SetLastItemDataEP11ImGuiWindowjiRK6ImRect(ptr noundef %1198, i32 noundef %1202, i32 noundef %1204, ptr noundef nonnull align 4 dereferenceable(16) %29)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #14
  br label %1207

1205:                                             ; preds = %265
  %1206 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1206)
  br label %1207

1207:                                             ; preds = %1205, %1197
  %1208 = getelementptr inbounds i8, ptr %35, i64 7248
  %1209 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8ImVectorIiE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1208)
  %1210 = load i32, ptr %1209, align 4, !tbaa !105
  %1211 = load ptr, ptr %4, align 8, !tbaa !5
  %1212 = getelementptr inbounds i8, ptr %1211, i64 460
  store i32 %1210, ptr %1212, align 4, !tbaa !233
  br i1 %132, label %1213, label %1216

1213:                                             ; preds = %1207
  %1214 = getelementptr inbounds i8, ptr %129, i64 344
  %1215 = load i32, ptr %1214, align 8, !tbaa !234
  br label %1216

1216:                                             ; preds = %1207, %1213
  %1217 = phi i32 [ %1215, %1213 ], [ 0, %1207 ]
  %1218 = getelementptr inbounds i8, ptr %1211, i64 344
  store i32 %1217, ptr %1218, align 8, !tbaa !234
  %1219 = getelementptr inbounds i8, ptr %1211, i64 552
  %1220 = getelementptr inbounds i8, ptr %1211, i64 560
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1219, ptr noundef nonnull align 4 dereferenceable(8) %1220, i1 noundef zeroext true)
  %1221 = load ptr, ptr %4, align 8, !tbaa !5
  %1222 = getelementptr inbounds i8, ptr %1221, i64 144
  store i8 0, ptr %1222, align 8, !tbaa !235
  %1223 = getelementptr inbounds i8, ptr %1221, i64 154
  %1224 = load i16, ptr %1223, align 2, !tbaa !236
  %1225 = add i16 %1224, 1
  store i16 %1225, ptr %1223, align 2, !tbaa !236
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(108) %163)
  br i1 %.not316, label %._crit_edge480, label %1226

._crit_edge480:                                   ; preds = %1216
  %.pre481 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert482 = getelementptr inbounds i8, ptr %.pre481, i64 147
  %.pre483 = load i8, ptr %.phi.trans.insert482, align 1, !tbaa !237, !range !74
  br label %1318

1226:                                             ; preds = %1216
  br i1 %132, label %1227, label %.critedge408

1227:                                             ; preds = %1226
  %1228 = and i32 %.1, 1
  %.not359 = icmp eq i32 %1228, 0
  br i1 %.not359, label %1229, label %1230

1229:                                             ; preds = %1227
  call void @__assert_fail(ptr noundef nonnull @.str.110, ptr noundef nonnull @.str.3, i32 noundef 6151, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

1230:                                             ; preds = %1227
  %1231 = and i32 %.1, 64
  %.not360 = icmp eq i32 %1231, 0
  br i1 %.not360, label %1232, label %1259

1232:                                             ; preds = %1230
  %1233 = load ptr, ptr %4, align 8, !tbaa !5
  %1234 = getelementptr inbounds i8, ptr %1233, i64 164
  %1235 = load i8, ptr %1234, align 4, !tbaa !151
  %1236 = icmp slt i8 %1235, 1
  br i1 %1236, label %1237, label %1259

1237:                                             ; preds = %1232
  %1238 = getelementptr inbounds i8, ptr %1233, i64 165
  %1239 = load i8, ptr %1238, align 1, !tbaa !152
  %1240 = icmp slt i8 %1239, 1
  br i1 %1240, label %1241, label %1259

1241:                                             ; preds = %1237
  %1242 = getelementptr inbounds i8, ptr %35, i64 12600
  %1243 = load i8, ptr %1242, align 8, !tbaa !238, !range !74, !noundef !75
  %1244 = trunc nuw i8 %1243 to i1
  br i1 %1244, label %1259, label %1245

1245:                                             ; preds = %1241
  %1246 = getelementptr inbounds i8, ptr %1233, i64 520
  %1247 = load float, ptr %1246, align 8, !tbaa !239
  %1248 = getelementptr inbounds i8, ptr %1233, i64 528
  %1249 = load float, ptr %1248, align 8, !tbaa !240
  %1250 = fcmp ult float %1247, %1249
  br i1 %1250, label %1251, label %1257

1251:                                             ; preds = %1245
  %1252 = getelementptr inbounds i8, ptr %1233, i64 524
  %1253 = load float, ptr %1252, align 4, !tbaa !241
  %1254 = getelementptr inbounds i8, ptr %1233, i64 532
  %1255 = load float, ptr %1254, align 4, !tbaa !242
  %1256 = fcmp ult float %1253, %1255
  br i1 %1256, label %1259, label %1257

1257:                                             ; preds = %1251, %1245
  %1258 = getelementptr inbounds i8, ptr %1233, i64 172
  store i8 1, ptr %1258, align 4, !tbaa !131
  br label %1259

1259:                                             ; preds = %1241, %1257, %1251, %1237, %1232, %1230
  br i1 %130, label %.critedge408, label %1260

1260:                                             ; preds = %1259
  %1261 = getelementptr inbounds i8, ptr %129, i64 145
  %1262 = load i8, ptr %1261, align 1, !tbaa !150, !range !74, !noundef !75
  %1263 = trunc nuw i8 %1262 to i1
  br i1 %1263, label %.thread430, label %1266

.thread430:                                       ; preds = %1260
  %1264 = load ptr, ptr %4, align 8, !tbaa !5
  %1265 = getelementptr inbounds i8, ptr %1264, i64 172
  store i8 1, ptr %1265, align 4, !tbaa !131
  br label %1276

1266:                                             ; preds = %1260
  %1267 = getelementptr inbounds i8, ptr %129, i64 172
  %1268 = load i8, ptr %1267, align 4, !tbaa !131
  %1269 = icmp sgt i8 %1268, 0
  br i1 %1269, label %1270, label %.thread429

1270:                                             ; preds = %1266
  %1271 = load ptr, ptr %4, align 8, !tbaa !5
  %1272 = getelementptr inbounds i8, ptr %1271, i64 172
  store i8 1, ptr %1272, align 4, !tbaa !131
  br label %.thread429

.thread429:                                       ; preds = %1266, %1270
  %1273 = getelementptr inbounds i8, ptr %129, i64 173
  %1274 = load i8, ptr %1273, align 1, !tbaa !89
  %1275 = icmp sgt i8 %1274, 0
  br i1 %1275, label %.thread429._crit_edge, label %.critedge408

.thread429._crit_edge:                            ; preds = %.thread429
  %.pre476 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1276

1276:                                             ; preds = %.thread429._crit_edge, %.thread430
  %1277 = phi ptr [ %.pre476, %.thread429._crit_edge ], [ %1264, %.thread430 ]
  %1278 = getelementptr inbounds i8, ptr %1277, i64 173
  store i8 1, ptr %1278, align 1, !tbaa !89
  br label %.critedge408

.critedge408:                                     ; preds = %1259, %.thread429, %1276, %1226
  %1279 = load float, ptr %36, align 4, !tbaa !243
  %1280 = fcmp ugt float %1279, 0.000000e+00
  %.pre477 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert478 = getelementptr inbounds i8, ptr %.pre477, i64 172
  br i1 %1280, label %1281, label %.thread499

.thread499:                                       ; preds = %.critedge408
  store i8 1, ptr %.phi.trans.insert478, align 4, !tbaa !131
  br label %1292

1281:                                             ; preds = %.critedge408
  %.pre479 = load i8, ptr %.phi.trans.insert478, align 4, !tbaa !131
  %1282 = icmp sgt i8 %.pre479, 0
  br i1 %1282, label %1292, label %1283

1283:                                             ; preds = %1281
  %1284 = getelementptr inbounds i8, ptr %.pre477, i64 173
  %1285 = load i8, ptr %1284, align 1, !tbaa !89
  %1286 = icmp sgt i8 %1285, 0
  br i1 %1286, label %1292, label %1287

1287:                                             ; preds = %1283
  %1288 = getelementptr inbounds i8, ptr %.pre477, i64 174
  %1289 = load i8, ptr %1288, align 2, !tbaa !132
  %1290 = icmp sgt i8 %1289, 0
  %1291 = zext i1 %1290 to i8
  br label %1292

1292:                                             ; preds = %.thread499, %1287, %1283, %1281
  %1293 = phi i8 [ 1, %1283 ], [ 1, %1281 ], [ %1291, %1287 ], [ 1, %.thread499 ]
  %1294 = getelementptr inbounds i8, ptr %.pre477, i64 149
  store i8 %1293, ptr %1294, align 1, !tbaa !244
  %1295 = getelementptr inbounds i8, ptr %.pre477, i64 145
  %1296 = load i8, ptr %1295, align 1, !tbaa !150, !range !74, !noundef !75
  %1297 = trunc nuw i8 %1296 to i1
  br i1 %1297, label %1304, label %1298

1298:                                             ; preds = %1292
  %1299 = getelementptr inbounds i8, ptr %.pre477, i64 142
  %1300 = load i8, ptr %1299, align 2, !tbaa !119, !range !74, !noundef !75
  %1301 = trunc nuw i8 %1300 to i1
  br i1 %1301, label %1302, label %1304

1302:                                             ; preds = %1298
  %1303 = trunc nuw i8 %1293 to i1
  br i1 %1303, label %1304, label %1316

1304:                                             ; preds = %1302, %1298, %1292
  %1305 = getelementptr inbounds i8, ptr %.pre477, i64 164
  %1306 = load i8, ptr %1305, align 4, !tbaa !151
  %1307 = icmp slt i8 %1306, 1
  br i1 %1307, label %1308, label %1316

1308:                                             ; preds = %1304
  %1309 = getelementptr inbounds i8, ptr %.pre477, i64 165
  %1310 = load i8, ptr %1309, align 1, !tbaa !152
  %1311 = icmp slt i8 %1310, 1
  br i1 %1311, label %1312, label %1316

1312:                                             ; preds = %1308
  %1313 = getelementptr inbounds i8, ptr %.pre477, i64 173
  %1314 = load i8, ptr %1313, align 1, !tbaa !89
  %1315 = icmp slt i8 %1314, 1
  %spec.select409 = zext i1 %1315 to i8
  br label %1316

1316:                                             ; preds = %1312, %1304, %1308, %1302
  %.0 = phi i8 [ 0, %1308 ], [ 0, %1304 ], [ 0, %1302 ], [ %spec.select409, %1312 ]
  %1317 = getelementptr inbounds i8, ptr %.pre477, i64 147
  store i8 %.0, ptr %1317, align 1, !tbaa !237
  br label %1318

1318:                                             ; preds = %._crit_edge480, %1316
  %1319 = phi i8 [ %.pre483, %._crit_edge480 ], [ %.0, %1316 ]
  %1320 = trunc nuw i8 %1319 to i1
  %1321 = xor i1 %1320, true
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14
  ret i1 %1321
}

; 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: 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 void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #8

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

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

; 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 dso_local void @_ZN15ImGuiStackSizes17SetToCurrentStateEv(ptr noundef nonnull align 2 dereferenceable(14)) local_unnamed_addr #1 align 2

; 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

; 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 @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef) local_unnamed_addr #8

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

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

; 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: 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 { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(993)) local_unnamed_addr #8 align 2

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

; 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 @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), 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 @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #11 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 6772}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !19, i64 5472, !6, i64 6520, !16, i64 6528, !16, i64 6532, !20, i64 6536, !22, i64 6752, !14, i64 6760, !14, i64 6764, !14, i64 6768, !12, i64 6772, !12, i64 6773, !12, i64 6774, !12, i64 6775, !12, i64 6776, !14, i64 6780, !6, i64 6784, !23, i64 6792, !23, i64 6808, !23, i64 6824, !23, i64 6840, !24, i64 6856, !14, i64 6872, !6, i64 6880, !6, i64 6888, !6, i64 6896, !6, i64 6904, !6, i64 6912, !6, i64 6920, !15, i64 6928, !16, i64 6936, !14, i64 6940, !14, i64 6944, !12, i64 6948, !12, i64 6949, !12, i64 6950, !12, i64 6951, !16, i64 6952, !16, i64 6956, !14, i64 6960, !14, i64 6964, !16, i64 6968, !12, i64 6972, !12, i64 6973, !12, i64 6974, !12, i64 6975, !12, i64 6976, !12, i64 6977, !12, i64 6978, !14, i64 6980, !14, i64 6984, !26, i64 6992, !15, i64 7000, !6, i64 7008, !27, i64 7016, !14, i64 7020, !14, i64 7024, !12, i64 7028, !12, i64 7029, !6, i64 7032, !14, i64 7040, !16, i64 7044, !28, i64 7048, !30, i64 7160, !31, i64 7184, !32, i64 7200, !33, i64 7216, !34, i64 7232, !35, i64 7248, !36, i64 7264, !37, i64 7280, !37, i64 7296, !6, i64 7312, !14, i64 7320, !14, i64 7324, !14, i64 7328, !14, i64 7332, !14, i64 7336, !14, i64 7340, !14, i64 7344, !14, i64 7348, !14, i64 7352, !14, i64 7356, !14, i64 7360, !27, i64 7364, !29, i64 7368, !14, i64 7384, !38, i64 7388, !14, i64 7392, !12, i64 7396, !12, i64 7397, !12, i64 7398, !12, i64 7399, !12, i64 7400, !12, i64 7401, !12, i64 7402, !14, i64 7404, !29, i64 7408, !12, i64 7424, !14, i64 7428, !39, i64 7432, !14, i64 7436, !14, i64 7440, !14, i64 7444, !14, i64 7448, !40, i64 7456, !40, i64 7504, !40, i64 7552, !6, i64 7600, !14, i64 7608, !6, i64 7616, !6, i64 7624, !6, i64 7632, !16, i64 7640, !16, i64 7644, !12, i64 7648, !6, i64 7656, !6, i64 7664, !14, i64 7672, !14, i64 7676, !14, i64 7680, !14, i64 7684, !12, i64 7688, !41, i64 7696, !42, i64 7752, !16, i64 7784, !43, i64 7792, !43, i64 7992, !14, i64 8192, !12, i64 8196, !12, i64 8197, !12, i64 8198, !14, i64 8200, !14, i64 8204, !14, i64 8208, !52, i64 8216, !29, i64 8280, !14, i64 8296, !14, i64 8300, !16, i64 8304, !14, i64 8308, !14, i64 8312, !14, i64 8316, !14, i64 8320, !53, i64 8328, !7, i64 8344, !6, i64 8360, !54, i64 8368, !56, i64 8408, !57, i64 8424, !51, i64 8440, !6, i64 8456, !58, i64 8464, !56, i64 8504, !60, i64 8520, !15, i64 8536, !61, i64 8544, !65, i64 12280, !14, i64 12392, !14, i64 12396, !16, i64 12400, !16, i64 12404, !7, i64 12408, !21, i64 12420, !16, i64 12436, !12, i64 12440, !12, i64 12441, !16, i64 12444, !16, i64 12448, !16, i64 12452, !14, i64 12456, !16, i64 12460, !62, i64 12464, !34, i64 12480, !15, i64 12496, !15, i64 12504, !7, i64 12512, !12, i64 12513, !16, i64 12516, !67, i64 12520, !68, i64 12536, !69, i64 12552, !70, i64 12568, !71, i64 12584, !12, i64 12600, !72, i64 12604, !6, i64 12608, !67, i64 12616, !16, i64 12632, !12, i64 12636, !14, i64 12640, !14, i64 12644, !14, i64 12648, !12, i64 12652, !14, i64 12656, !73, i64 12660, !7, i64 12676, !14, i64 13156, !16, i64 13160, !14, i64 13164, !14, i64 13168, !14, i64 13172, !7, i64 13176}
!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, !16, i64 200, !6, 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, !12, i64 312, !12, i64 313, !12, i64 314, !12, i64 315, !7, i64 316, !7, i64 828, !12, i64 912, !12, i64 913, !12, i64 914, !12, i64 915, !12, i64 916, !12, i64 917, !12, i64 918, !16, i64 920, !14, i64 924, !14, i64 928, !14, i64 932, !14, i64 936, !14, i64 940, !15, i64 944, !14, i64 952, !15, i64 956, !7, i64 964, !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 = !{!"_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, !15, i64 96, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !14, i64 144, !15, i64 148, !15, i64 156, !15, i64 164, !15, i64 172, !16, i64 180, !12, i64 184, !12, i64 185, !12, i64 186, !16, i64 188, !16, i64 192, !7, i64 196}
!20 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !21, i64 28, !14, i64 44, !7, i64 48, !7, i64 144, !6, i64 208}
!21 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!22 = !{!"double", !7, i64 0}
!23 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !14, i64 0, !14, i64 4, !6, i64 8}
!26 = !{!"long long", !7, i64 0}
!27 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!28 = !{!"_ZTS19ImGuiNextWindowData", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !12, i64 56, !29, i64 60, !6, i64 80, !6, i64 88, !16, i64 96, !15, i64 100}
!29 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!30 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !16, i64 4, !14, i64 8, !14, i64 12, !12, i64 16}
!31 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!38 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!39 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!40 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !14, i64 8, !14, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !29, i64 28}
!41 = !{!"_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}
!42 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!43 = !{!"_ZTS10ImDrawList", !44, i64 0, !18, i64 16, !45, i64 32, !14, i64 48, !14, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !46, i64 88, !47, i64 104, !48, i64 120, !49, i64 136, !50, i64 168, !16, i64 192}
!44 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!49 = !{!"_ZTS15ImDrawCmdHeader", !21, i64 0, !6, i64 16, !14, i64 24}
!50 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !51, i64 8}
!51 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!52 = !{!"_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}
!53 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!54 = !{!"_ZTS6ImPoolI10ImGuiTableE", !55, i64 0, !24, i64 16, !14, i64 32}
!55 = !{!"_ZTS8ImVectorI10ImGuiTableE", !14, i64 0, !14, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!58 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !59, i64 0, !24, i64 16, !14, i64 32}
!59 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!61 = !{!"_ZTS19ImGuiInputTextState", !14, i64 0, !14, i64 4, !14, i64 8, !18, i64 16, !62, i64 32, !62, i64 48, !12, i64 64, !14, i64 68, !16, i64 72, !63, i64 76, !16, i64 3704, !12, i64 3708, !12, i64 3709, !12, i64 3710, !14, i64 3712, !6, i64 3720, !6, i64 3728}
!62 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!63 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !14, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !14, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !16, i64 28, !64, i64 32}
!64 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !14, i64 3588, !14, i64 3592}
!65 = !{!"_ZTS6ImFont", !57, i64 0, !16, i64 16, !16, i64 20, !18, i64 24, !66, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !17, i64 80, !17, i64 82, !17, i64 84, !12, i64 86, !16, i64 88, !16, i64 92, !16, i64 96, !14, i64 100, !7, i64 104}
!66 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!67 = !{!"_ZTS15ImGuiTextBuffer", !62, i64 0}
!68 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!69 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !62, i64 0}
!70 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !62, i64 0}
!71 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !14, i64 0, !14, i64 4, !6, i64 8}
!72 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!73 = !{!"_ZTS18ImGuiMetricsConfig", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !14, i64 8, !14, i64 12}
!74 = !{i8 0, i8 2}
!75 = !{}
!76 = !{!11, !14, i64 6764}
!77 = !{!11, !14, i64 6760}
!78 = !{!79, !14, i64 640}
!79 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !14, i64 8, !14, i64 12, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !16, i64 72, !16, i64 76, !14, i64 80, !14, i64 84, !14, i64 88, !15, i64 92, !15, i64 100, !15, i64 108, !15, i64 116, !15, i64 124, !15, i64 132, !12, i64 140, !12, i64 141, !12, i64 142, !12, i64 143, !12, i64 144, !12, i64 145, !12, i64 146, !12, i64 147, !12, i64 148, !12, i64 149, !12, i64 150, !12, i64 151, !7, i64 152, !17, i64 154, !17, i64 156, !17, i64 158, !14, i64 160, !7, i64 164, !7, i64 165, !7, i64 166, !12, i64 167, !14, i64 168, !7, i64 172, !7, i64 173, !7, i64 174, !14, i64 175, !14, i64 176, !14, i64 177, !15, i64 180, !15, i64 188, !34, i64 200, !80, i64 216, !29, i64 520, !29, i64 536, !29, i64 552, !29, i64 568, !29, i64 584, !29, i64 600, !29, i64 616, !84, i64 632, !84, i64 636, !14, i64 640, !16, i64 644, !16, i64 648, !24, i64 656, !85, i64 672, !16, i64 688, !14, i64 692, !6, i64 696, !43, i64 704, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !7, i64 944, !7, i64 952, !14, i64 984, !14, i64 988, !12, i64 992}
!80 = !{!"_ZTS19ImGuiWindowTempData", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !16, i64 56, !16, i64 60, !81, i64 64, !81, i64 68, !81, i64 72, !14, i64 76, !14, i64 80, !29, i64 84, !29, i64 100, !38, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !12, i64 132, !12, i64 133, !12, i64 134, !15, i64 136, !82, i64 144, !14, i64 180, !14, i64 184, !23, i64 192, !6, i64 208, !6, i64 216, !14, i64 224, !14, i64 228, !14, i64 232, !14, i64 236, !14, i64 240, !14, i64 244, !16, i64 248, !16, i64 252, !57, i64 256, !57, i64 272, !83, i64 288}
!81 = !{!"_ZTS6ImVec1", !16, i64 0}
!82 = !{!"_ZTS16ImGuiMenuColumns", !16, i64 0, !16, i64 4, !16, i64 8, !7, i64 12, !7, i64 24}
!83 = !{!"_ZTS15ImGuiStackSizes", !17, i64 0, !17, i64 2, !17, i64 4, !17, i64 6, !17, i64 8, !17, i64 10, !17, i64 12}
!84 = !{!"_ZTS8ImVec2ih", !17, i64 0, !17, i64 2}
!85 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!86 = !{!11, !14, i64 6840}
!87 = !{!11, !12, i64 6773}
!88 = !{!79, !12, i64 150}
!89 = !{!79, !7, i64 173}
!90 = !{!11, !14, i64 7296}
!91 = !{!79, !14, i64 160}
!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 = !{!79, !12, i64 148}
!96 = !{!79, !14, i64 12}
!97 = !{!11, !22, i64 6752}
!98 = !{!79, !16, i64 644}
!99 = !{!79, !17, i64 156}
!100 = !{!11, !14, i64 6872}
!101 = !{!79, !17, i64 158}
!102 = !{!79, !6, i64 904}
!103 = !{!79, !14, i64 200}
!104 = !{!11, !6, i64 6880}
!105 = !{!14, !14, i64 0}
!106 = !{!11, !14, i64 7048}
!107 = !{!11, !14, i64 7052}
!108 = !{!11, !14, i64 7056}
!109 = !{!11, !16, i64 7080}
!110 = !{!11, !16, i64 7084}
!111 = !{!11, !16, i64 7096}
!112 = !{!79, !16, i64 108}
!113 = !{!79, !16, i64 116}
!114 = !{!11, !16, i64 7100}
!115 = !{!79, !16, i64 112}
!116 = !{!79, !16, i64 120}
!117 = !{!11, !12, i64 7104}
!118 = !{!11, !14, i64 7060}
!119 = !{!79, !12, i64 142}
!120 = !{!79, !12, i64 151}
!121 = !{i64 0, i64 4, !122, i64 4, i64 4, !122, i64 8, i64 4, !122, i64 12, i64 4, !122}
!122 = !{!16, !16, i64 0}
!123 = !{!79, !6, i64 696}
!124 = !{!79, !14, i64 440}
!125 = !{!79, !12, i64 992}
!126 = !{!11, !6, i64 7632}
!127 = !{!79, !6, i64 0}
!128 = !{!79, !14, i64 80}
!129 = !{!130, !130, i64 0}
!130 = !{!"long", !7, i64 0}
!131 = !{!79, !7, i64 172}
!132 = !{!79, !7, i64 174}
!133 = !{!79, !16, i64 32}
!134 = !{!79, !16, i64 24}
!135 = !{!79, !16, i64 36}
!136 = !{!79, !16, i64 28}
!137 = !{!79, !16, i64 76}
!138 = !{!19, !16, i64 44}
!139 = !{!19, !16, i64 8}
!140 = !{!19, !16, i64 72}
!141 = !{!11, !16, i64 7148}
!142 = !{!79, !16, i64 352}
!143 = !{!11, !16, i64 7152}
!144 = !{!79, !16, i64 356}
!145 = !{!11, !6, i64 6888}
!146 = !{!11, !14, i64 6940}
!147 = !{!11, !14, i64 6944}
!148 = !{!12, !12, i64 0}
!149 = !{!79, !12, i64 146}
!150 = !{!79, !12, i64 145}
!151 = !{!79, !7, i64 164}
!152 = !{!79, !7, i64 165}
!153 = !{!79, !12, i64 167}
!154 = !{!15, !16, i64 4}
!155 = !{!79, !14, i64 168}
!156 = !{!79, !14, i64 408}
!157 = !{!79, !16, i64 180}
!158 = !{!79, !16, i64 72}
!159 = !{!11, !12, i64 204}
!160 = !{!11, !16, i64 6528}
!161 = !{!79, !7, i64 152}
!162 = !{!79, !12, i64 141}
!163 = !{!79, !12, i64 140}
!164 = !{!15, !16, i64 0}
!165 = !{!19, !16, i64 112}
!166 = !{!79, !16, i64 536}
!167 = !{!79, !16, i64 540}
!168 = !{!79, !16, i64 64}
!169 = !{!79, !16, i64 552}
!170 = !{!79, !16, i64 556}
!171 = !{!79, !16, i64 544}
!172 = !{!79, !16, i64 560}
!173 = !{!79, !16, i64 548}
!174 = !{!79, !16, i64 564}
!175 = !{!79, !16, i64 648}
!176 = !{!79, !16, i64 40}
!177 = !{!79, !16, i64 100}
!178 = !{!79, !16, i64 44}
!179 = !{!79, !16, i64 68}
!180 = !{!79, !16, i64 104}
!181 = !{!43, !14, i64 0}
!182 = !{!183, !14, i64 32}
!183 = !{!"_ZTS9ImDrawCmd", !21, i64 0, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48}
!184 = !{!11, !6, i64 6520}
!185 = !{!65, !6, i64 64}
!186 = !{!187, !6, i64 8}
!187 = !{!"_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, !33, i64 64, !188, i64 80, !189, i64 96, !7, i64 112, !14, i64 1136, !14, i64 1140}
!188 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!189 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!190 = !{!11, !6, i64 7624}
!191 = !{!79, !6, i64 912}
!192 = !{!11, !16, i64 7784}
!193 = !{!11, !16, i64 7644}
!194 = !{!11, !16, i64 5484}
!195 = !{!43, !14, i64 32}
!196 = !{!11, !6, i64 7616}
!197 = !{!11, !6, i64 7312}
!198 = !{!79, !6, i64 920}
!199 = !{!79, !16, i64 56}
!200 = !{!79, !16, i64 132}
!201 = !{!79, !16, i64 60}
!202 = !{!79, !16, i64 136}
!203 = !{!79, !16, i64 92}
!204 = !{!79, !16, i64 568}
!205 = !{!79, !16, i64 96}
!206 = !{!79, !16, i64 572}
!207 = !{!79, !16, i64 16}
!208 = !{!79, !16, i64 616}
!209 = !{!79, !16, i64 20}
!210 = !{!79, !16, i64 620}
!211 = !{!79, !16, i64 624}
!212 = !{!79, !16, i64 628}
!213 = !{!79, !16, i64 280}
!214 = !{!79, !38, i64 332}
!215 = !{!79, !14, i64 340}
!216 = !{!79, !14, i64 336}
!217 = !{!79, !12, i64 348}
!218 = !{!79, !12, i64 349}
!219 = !{!79, !12, i64 350}
!220 = !{!79, !14, i64 396}
!221 = !{!79, !14, i64 400}
!222 = !{!79, !6, i64 424}
!223 = !{!79, !6, i64 432}
!224 = !{!79, !14, i64 444}
!225 = !{!79, !14, i64 448}
!226 = !{!79, !14, i64 456}
!227 = !{!79, !14, i64 452}
!228 = !{!79, !16, i64 464}
!229 = !{!79, !16, i64 468}
!230 = !{!79, !17, i64 634}
!231 = !{!79, !17, i64 632}
!232 = !{!79, !14, i64 84}
!233 = !{!79, !14, i64 460}
!234 = !{!79, !14, i64 344}
!235 = !{!79, !12, i64 144}
!236 = !{!79, !17, i64 154}
!237 = !{!79, !12, i64 147}
!238 = !{!11, !12, i64 12600}
!239 = !{!79, !16, i64 520}
!240 = !{!79, !16, i64 528}
!241 = !{!79, !16, i64 524}
!242 = !{!79, !16, i64 532}
!243 = !{!19, !16, i64 0}
!244 = !{!79, !12, i64 149}


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