; LLVM IR from Illurin/VulkanGraphicsEngine :: Third-Party/Include/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, %struct.ImVector.3, %struct.ImVector.3, %struct.ImVector.3, %struct.ImVector.3, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i8, [3 x i8], i32, float, float, i32, i32, float, i8, i8, i8, i8, i8, [3 x i8], i32, i32, [4 x i8], i64, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, [2 x i8], ptr, i32, float, %struct.ImGuiNextWindowData, %struct.ImGuiNextItemData, [4 x i8], %struct.ImVector.4, %struct.ImVector.5, %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.7, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, [2 x i8], i32, i32, i32, i32, i32, [4 x i8], %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, 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, [2 x i8], i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, %struct.ImVector.15, [16 x i8], ptr, %struct.ImPool, %struct.ImVector.17, %struct.ImVector.18, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, float, [3 x float], %struct.ImVec4, i8, [3 x i8], float, float, float, i32, %struct.ImVector.2, %struct.ImVector.21, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.22, %struct.ImChunkStream, i8, [3 x i8], i32, ptr, %struct.ImGuiTextBuffer, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, [120 x float], i32, float, i32, i32, i32, [3073 x i8], [7 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, [22 x i32], float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, float, ptr, 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, %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], 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, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, float, float, [48 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, [12 x %struct.ImVec2], [64 x i8] }
%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, 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.7 = 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.8] }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImDrawList = type { %struct.ImVector.9, %struct.ImVector, %struct.ImVector.10, i32, ptr, ptr, i32, i32, ptr, ptr, %struct.ImVector.11, %struct.ImVector.12, %struct.ImVector.13, %struct.ImDrawListSplitter }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.14 }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImPool = type <{ %struct.ImVector.16, %struct.ImGuiStorage, i32, [4 x i8] }>
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = 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, i32, ptr, ptr }
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type <{ %struct.ImVector.19, float, float, %struct.ImVector, %struct.ImVector.20, ptr, %struct.ImVec2, ptr, ptr, i16, i16, i16, i8, i8, float, float, float, i32, [2 x i8], [6 x i8] }>
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.2 }
%struct.ImGuiTextBuffer = type { %struct.ImVector.2 }
%struct.ImGuiWindow = type <{ ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.21, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32, float, float, [4 x i8], %struct.ImGuiStorage, %struct.ImVector.25, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i8, [3 x i8], i32, i32, [4 x i8] }>
%struct.ImGuiWindowTempData = type <{ %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, i32, i32, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.3, ptr, ptr, i32, i32, i32, i32, i32, float, float, [4 x i8], %struct.ImVector.23, %struct.ImVector.19, %struct.ImVector.19, %struct.ImVector.24, [6 x i16], [4 x i8] }>
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type { float, float, float, [3 x float], [3 x float] }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImGuiPopupData = type { i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2 }
%struct.ImFontAtlas = type <{ i8, [3 x i8], i32, ptr, i32, i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.6, %struct.ImVector.28, %struct.ImVector.29, [1 x i32], [4 x i8] }>
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImDrawCmd = type { i32, %struct.ImVec4, ptr, i32, i32, ptr, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.98 = 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 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(168), 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(168), 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 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(956)) #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 @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168)) #9

declare void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168), 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 %struct.ImVec2, align 4
  %12 = alloca %struct.ImVec2, align 4
  %13 = alloca i32, align 4
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca %struct.ImVec2, align 4
  %25 = alloca i8, align 1
  %26 = alloca %struct.ImRect, align 4
  %27 = alloca %struct.ImVec4, align 4
  %28 = alloca i8, align 1
  %29 = alloca i64, align 8
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 4
  %33 = alloca %struct.ImRect, align 4
  %34 = alloca %struct.ImVec2, align 4
  %35 = alloca i8, align 1
  %36 = alloca i8, align 1
  %37 = alloca %struct.ImVec2, align 4
  %38 = alloca %struct.ImVec2, align 4
  %39 = alloca %struct.ImVec2, align 4
  %40 = alloca %struct.ImRect, align 4
  %41 = alloca float, align 4
  %42 = alloca i8, align 1
  %43 = alloca %struct.ImVec2, align 4
  %44 = alloca %struct.ImVec2, align 4
  %45 = alloca %struct.ImVec2, align 4
  %46 = alloca %struct.ImVec2, align 4
  %47 = alloca %struct.ImVec2, align 4
  %48 = alloca %struct.ImRect, align 4
  %49 = alloca %struct.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.92, ptr noundef @.str.3, i32 noundef 5459, 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 !67, !noundef !68
  %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.93, ptr noundef @.str.3, i32 noundef 5460, 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 !69
  %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 !70
  %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.94, ptr noundef @.str.3, i32 noundef 5461, 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 !71
  %128 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %129 = trunc i8 %128 to i1
  br i1 %129, label %130, label %147

130:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #13
  %131 = load ptr, ptr %7, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.ImGuiContext, ptr %131, i32 0, i32 62
  %133 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %132, i32 0, i32 0
  %134 = load i32, ptr %133, align 8, !tbaa !72
  %135 = and i32 %134, 2
  %136 = icmp ne i32 %135, 0
  br i1 %136, label %137, label %141

137:                                              ; preds = %130
  %138 = load ptr, ptr %7, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.ImGuiContext, ptr %138, i32 0, i32 62
  %140 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %139, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %11, ptr align 8 %140, i64 8, i1 false), !tbaa.struct !73
  br label %142

141:                                              ; preds = %130
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %142

142:                                              ; preds = %141, %137
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %12, ptr align 4 %11, i64 8, i1 false), !tbaa.struct !73
  %144 = load i32, ptr %6, align 4, !tbaa !9
  %145 = load <2 x float>, ptr %12, align 4
  %146 = call noundef ptr @_ZL15CreateNewWindowPKc6ImVec2i(ptr noundef %143, <2 x float> %145, i32 noundef %144)
  store ptr %146, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #13
  br label %147

147:                                              ; preds = %142, %122
  %148 = load i32, ptr %6, align 4, !tbaa !9
  %149 = and i32 %148, 786944
  %150 = icmp eq i32 %149, 786944
  br i1 %150, label %151, label %154

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

154:                                              ; preds = %151, %147
  %155 = load i32, ptr %6, align 4, !tbaa !9
  %156 = and i32 %155, 8388608
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %158, label %166

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

162:                                              ; preds = %158
  br label %165

163:                                              ; preds = %158
  call void @__assert_fail(ptr noundef @.str.95, ptr noundef @.str.3, i32 noundef 5477, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

164:                                              ; No predecessors!
  br label %165

165:                                              ; preds = %164, %162
  br label %166

166:                                              ; preds = %165, %154
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #13
  %167 = load ptr, ptr %7, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.ImGuiContext, ptr %167, i32 0, i32 11
  %169 = load i32, ptr %168, align 8, !tbaa !70
  store i32 %169, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #13
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.ImGuiWindow, ptr %170, i32 0, i32 57
  %172 = load i32, ptr %171, align 8, !tbaa !75
  %173 = load i32, ptr %13, align 4, !tbaa !9
  %174 = icmp ne i32 %172, %173
  %175 = zext i1 %174 to i8
  store i8 %175, ptr %14, align 1, !tbaa !71
  %176 = load ptr, ptr %7, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.ImGuiContext, ptr %176, i32 0, i32 21
  %178 = getelementptr inbounds %struct.ImVector.3, ptr %177, i32 0, i32 0
  %179 = load i32, ptr %178, align 8, !tbaa !83
  %180 = icmp eq i32 %179, 0
  br i1 %180, label %181, label %186

181:                                              ; preds = %166
  %182 = load ptr, ptr %7, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.ImGuiContext, ptr %182, i32 0, i32 15
  %184 = load i8, ptr %183, align 1, !tbaa !84, !range !67, !noundef !68
  %185 = trunc i8 %184 to i1
  br label %186

186:                                              ; preds = %181, %166
  %187 = phi i1 [ false, %166 ], [ %185, %181 ]
  %188 = load ptr, ptr %9, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.ImGuiWindow, ptr %188, i32 0, i32 29
  %190 = zext i1 %187 to i8
  store i8 %190, ptr %189, align 2, !tbaa !85
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #13
  %191 = load ptr, ptr %9, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.ImGuiWindow, ptr %191, i32 0, i32 57
  %193 = load i32, ptr %192, align 8, !tbaa !75
  %194 = load i32, ptr %13, align 4, !tbaa !9
  %195 = sub nsw i32 %194, 1
  %196 = icmp slt i32 %193, %195
  %197 = zext i1 %196 to i8
  store i8 %197, ptr %15, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #13
  %198 = load ptr, ptr %9, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.ImGuiWindow, ptr %198, i32 0, i32 43
  %200 = load i32, ptr %199, align 8, !tbaa !86
  %201 = icmp sgt i32 %200, 0
  %202 = zext i1 %201 to i8
  store i8 %202, ptr %16, align 1, !tbaa !71
  %203 = load i32, ptr %6, align 4, !tbaa !9
  %204 = and i32 %203, 67108864
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %240

206:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #13
  %207 = load ptr, ptr %7, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.ImGuiContext, ptr %207, i32 0, i32 68
  %209 = load ptr, ptr %7, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.ImGuiContext, ptr %209, i32 0, i32 69
  %211 = getelementptr inbounds %struct.ImVector.7, ptr %210, i32 0, i32 0
  %212 = load i32, ptr %211, align 8, !tbaa !87
  %213 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %208, i32 noundef %212)
  store ptr %213, ptr %17, align 8, !tbaa !5
  %214 = load ptr, ptr %9, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.ImGuiWindow, ptr %214, i32 0, i32 36
  %216 = load i32, ptr %215, align 8, !tbaa !88
  %217 = load ptr, ptr %17, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.ImGuiPopupData, ptr %217, i32 0, i32 0
  %219 = load i32, ptr %218, align 8, !tbaa !89
  %220 = icmp ne i32 %216, %219
  %221 = zext i1 %220 to i32
  %222 = load i8, ptr %15, align 1, !tbaa !71, !range !67, !noundef !68
  %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 %15, align 1, !tbaa !71
  %228 = load ptr, ptr %9, align 8, !tbaa !5
  %229 = load ptr, ptr %17, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.ImGuiPopupData, ptr %229, i32 0, i32 1
  %231 = load ptr, ptr %230, align 8, !tbaa !91
  %232 = icmp ne ptr %228, %231
  %233 = zext i1 %232 to i32
  %234 = load i8, ptr %15, align 1, !tbaa !71, !range !67, !noundef !68
  %235 = trunc i8 %234 to i1
  %236 = zext i1 %235 to i32
  %237 = or i32 %236, %233
  %238 = icmp ne i32 %237, 0
  %239 = zext i1 %238 to i8
  store i8 %239, ptr %15, align 1, !tbaa !71
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #13
  br label %240

240:                                              ; preds = %206, %186
  %241 = load i8, ptr %15, align 1, !tbaa !71, !range !67, !noundef !68
  %242 = trunc i8 %241 to i1
  br i1 %242, label %246, label %243

243:                                              ; preds = %240
  %244 = load i8, ptr %16, align 1, !tbaa !71, !range !67, !noundef !68
  %245 = trunc i8 %244 to i1
  br label %246

246:                                              ; preds = %243, %240
  %247 = phi i1 [ true, %240 ], [ %245, %243 ]
  %248 = load ptr, ptr %9, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.ImGuiWindow, ptr %248, i32 0, i32 27
  %250 = zext i1 %247 to i8
  store i8 %250, ptr %249, align 4, !tbaa !92
  %251 = load ptr, ptr %9, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.ImGuiWindow, ptr %251, i32 0, i32 27
  %253 = load i8, ptr %252, align 4, !tbaa !92, !range !67, !noundef !68
  %254 = trunc i8 %253 to i1
  br i1 %254, label %255, label %257

255:                                              ; preds = %246
  %256 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %256, i32 noundef 8, i1 noundef zeroext true)
  br label %257

257:                                              ; preds = %255, %246
  %258 = load i8, ptr %14, align 1, !tbaa !71, !range !67, !noundef !68
  %259 = trunc i8 %258 to i1
  br i1 %259, label %260, label %282

260:                                              ; preds = %257
  %261 = load i32, ptr %6, align 4, !tbaa !9
  %262 = load ptr, ptr %9, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.ImGuiWindow, ptr %262, i32 0, i32 2
  store i32 %261, ptr %263, align 4, !tbaa !93
  %264 = load i32, ptr %13, align 4, !tbaa !9
  %265 = load ptr, ptr %9, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.ImGuiWindow, ptr %265, i32 0, i32 57
  store i32 %264, ptr %266, align 8, !tbaa !75
  %267 = load ptr, ptr %7, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.ImGuiContext, ptr %267, i32 0, i32 10
  %269 = load double, ptr %268, align 8, !tbaa !94
  %270 = fptrunc double %269 to float
  %271 = load ptr, ptr %9, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.ImGuiWindow, ptr %271, i32 0, i32 58
  store float %270, ptr %272, align 4, !tbaa !95
  %273 = load ptr, ptr %9, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.ImGuiWindow, ptr %273, i32 0, i32 34
  store i16 0, ptr %274, align 4, !tbaa !96
  %275 = load ptr, ptr %7, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.ImGuiContext, ptr %275, i32 0, i32 23
  %277 = load i32, ptr %276, align 8, !tbaa !97
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %276, align 8, !tbaa !97
  %279 = trunc i32 %277 to i16
  %280 = load ptr, ptr %9, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ImGuiWindow, ptr %280, i32 0, i32 35
  store i16 %279, ptr %281, align 2, !tbaa !98
  br label %286

282:                                              ; preds = %257
  %283 = load ptr, ptr %9, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.ImGuiWindow, ptr %283, i32 0, i32 2
  %285 = load i32, ptr %284, align 4, !tbaa !93
  store i32 %285, ptr %6, align 4, !tbaa !9
  br label %286

286:                                              ; preds = %282, %260
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #13
  %287 = load ptr, ptr %7, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.ImGuiContext, ptr %287, i32 0, i32 21
  %289 = call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %288)
  br i1 %289, label %290, label %291

290:                                              ; preds = %286
  br label %296

291:                                              ; preds = %286
  %292 = load ptr, ptr %7, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.ImGuiContext, ptr %292, i32 0, i32 21
  %294 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %293)
  %295 = load ptr, ptr %294, align 8, !tbaa !5
  br label %296

296:                                              ; preds = %291, %290
  %297 = phi ptr [ null, %290 ], [ %295, %291 ]
  store ptr %297, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  %298 = load i8, ptr %14, align 1, !tbaa !71, !range !67, !noundef !68
  %299 = trunc i8 %298 to i1
  br i1 %299, label %300, label %309

300:                                              ; preds = %296
  %301 = load i32, ptr %6, align 4, !tbaa !9
  %302 = and i32 %301, 83886080
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %306

304:                                              ; preds = %300
  %305 = load ptr, ptr %18, align 8, !tbaa !5
  br label %307

306:                                              ; preds = %300
  br label %307

307:                                              ; preds = %306, %304
  %308 = phi ptr [ %305, %304 ], [ null, %306 ]
  br label %313

309:                                              ; preds = %296
  %310 = load ptr, ptr %9, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.ImGuiWindow, ptr %310, i32 0, i32 67
  %312 = load ptr, ptr %311, align 8, !tbaa !99
  br label %313

313:                                              ; preds = %309, %307
  %314 = phi ptr [ %308, %307 ], [ %312, %309 ]
  store ptr %314, ptr %19, align 8, !tbaa !5
  %315 = load ptr, ptr %19, align 8, !tbaa !5
  %316 = icmp ne ptr %315, null
  br i1 %316, label %322, label %317

317:                                              ; preds = %313
  %318 = load i32, ptr %6, align 4, !tbaa !9
  %319 = and i32 %318, 16777216
  %320 = icmp ne i32 %319, 0
  %321 = xor i1 %320, true
  br label %322

322:                                              ; preds = %317, %313
  %323 = phi i1 [ true, %313 ], [ %321, %317 ]
  br i1 %323, label %324, label %325

324:                                              ; preds = %322
  br label %327

325:                                              ; preds = %322
  call void @__assert_fail(ptr noundef @.str.96, ptr noundef @.str.3, i32 noundef 5513, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

326:                                              ; No predecessors!
  br label %327

327:                                              ; preds = %326, %324
  %328 = load ptr, ptr %9, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.ImGuiWindow, ptr %328, i32 0, i32 49
  %330 = getelementptr inbounds %struct.ImVector.21, ptr %329, i32 0, i32 0
  %331 = load i32, ptr %330, align 8, !tbaa !100
  %332 = icmp eq i32 %331, 0
  br i1 %332, label %333, label %338

333:                                              ; preds = %327
  %334 = load ptr, ptr %9, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.ImGuiWindow, ptr %334, i32 0, i32 49
  %336 = load ptr, ptr %9, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.ImGuiWindow, ptr %336, i32 0, i32 1
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %335, ptr noundef nonnull align 4 dereferenceable(4) %337)
  br label %338

338:                                              ; preds = %333, %327
  %339 = load ptr, ptr %7, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.ImGuiContext, ptr %339, i32 0, i32 21
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %340, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %341 = load ptr, ptr %7, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImGuiContext, ptr %341, i32 0, i32 25
  store ptr null, ptr %342, align 8, !tbaa !101
  %343 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGuiL35ErrorCheckBeginEndCompareStacksSizeEP11ImGuiWindowb(ptr noundef %343, i1 noundef zeroext true)
  %344 = load i32, ptr %6, align 4, !tbaa !9
  %345 = and i32 %344, 67108864
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %366

347:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  %348 = load ptr, ptr %7, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.ImGuiContext, ptr %348, i32 0, i32 68
  %350 = load ptr, ptr %7, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.ImGuiContext, ptr %350, i32 0, i32 69
  %352 = getelementptr inbounds %struct.ImVector.7, ptr %351, i32 0, i32 0
  %353 = load i32, ptr %352, align 8, !tbaa !87
  %354 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %349, i32 noundef %353)
  store ptr %354, ptr %20, align 8, !tbaa !5
  %355 = load ptr, ptr %9, align 8, !tbaa !5
  %356 = load ptr, ptr %20, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.ImGuiPopupData, ptr %356, i32 0, i32 1
  store ptr %355, ptr %357, align 8, !tbaa !91
  %358 = load ptr, ptr %7, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.ImGuiContext, ptr %358, i32 0, i32 69
  %360 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %359, ptr noundef nonnull align 8 dereferenceable(48) %360)
  %361 = load ptr, ptr %20, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.ImGuiPopupData, ptr %361, i32 0, i32 0
  %363 = load i32, ptr %362, align 8, !tbaa !89
  %364 = load ptr, ptr %9, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.ImGuiWindow, ptr %364, i32 0, i32 36
  store i32 %363, ptr %365, align 8, !tbaa !88
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %366

366:                                              ; preds = %347, %338
  %367 = load i8, ptr %16, align 1, !tbaa !71, !range !67, !noundef !68
  %368 = trunc i8 %367 to i1
  br i1 %368, label %369, label %377

369:                                              ; preds = %366
  %370 = load i32, ptr %6, align 4, !tbaa !9
  %371 = and i32 %370, 16777216
  %372 = icmp ne i32 %371, 0
  br i1 %372, label %377, label %373

373:                                              ; preds = %369
  %374 = load ptr, ptr %9, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.ImGuiWindow, ptr %374, i32 0, i32 72
  %376 = getelementptr inbounds [2 x i32], ptr %375, i64 0, i64 0
  store i32 0, ptr %376, align 8, !tbaa !9
  br label %377

377:                                              ; preds = %373, %369, %366
  %378 = load i8, ptr %14, align 1, !tbaa !71, !range !67, !noundef !68
  %379 = trunc i8 %378 to i1
  br i1 %379, label %380, label %384

380:                                              ; preds = %377
  %381 = load ptr, ptr %9, align 8, !tbaa !5
  %382 = load i32, ptr %6, align 4, !tbaa !9
  %383 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %381, i32 noundef %382, ptr noundef %383)
  br label %384

384:                                              ; preds = %380, %377
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  store i8 0, ptr %21, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #13
  store i8 0, ptr %22, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  store i8 0, ptr %23, align 1, !tbaa !71
  %385 = load ptr, ptr %7, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.ImGuiContext, ptr %385, i32 0, i32 62
  %387 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %386, i32 0, i32 0
  %388 = load i32, ptr %387, align 8, !tbaa !72
  %389 = and i32 %388, 1
  %390 = icmp ne i32 %389, 0
  br i1 %390, label %391, label %435

391:                                              ; preds = %384
  %392 = load ptr, ptr %9, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.ImGuiWindow, ptr %392, i32 0, i32 44
  %394 = load i32, ptr %393, align 4, !tbaa !102
  %395 = load ptr, ptr %7, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.ImGuiContext, ptr %395, i32 0, i32 62
  %397 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %396, i32 0, i32 1
  %398 = load i32, ptr %397, align 4, !tbaa !103
  %399 = and i32 %394, %398
  %400 = icmp ne i32 %399, 0
  %401 = zext i1 %400 to i8
  store i8 %401, ptr %21, align 1, !tbaa !71
  %402 = load i8, ptr %21, align 1, !tbaa !71, !range !67, !noundef !68
  %403 = trunc i8 %402 to i1
  br i1 %403, label %404, label %425

404:                                              ; preds = %391
  %405 = load ptr, ptr %7, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.ImGuiContext, ptr %405, i32 0, i32 62
  %407 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %406, i32 0, i32 5
  %408 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %407)
  %409 = fcmp ogt float %408, 0x3EE4F8B580000000
  br i1 %409, label %410, label %425

410:                                              ; preds = %404
  %411 = load ptr, ptr %7, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.ImGuiContext, ptr %411, i32 0, i32 62
  %413 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %412, i32 0, i32 4
  %414 = load ptr, ptr %9, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.ImGuiWindow, ptr %414, i32 0, i32 47
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %415, ptr align 8 %413, i64 8, i1 false), !tbaa.struct !73
  %416 = load ptr, ptr %7, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.ImGuiContext, ptr %416, i32 0, i32 62
  %418 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %417, i32 0, i32 5
  %419 = load ptr, ptr %9, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.ImGuiWindow, ptr %419, i32 0, i32 48
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %420, ptr align 8 %418, i64 8, i1 false), !tbaa.struct !73
  %421 = load ptr, ptr %9, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.ImGuiWindow, ptr %421, i32 0, i32 44
  %423 = load i32, ptr %422, align 4, !tbaa !102
  %424 = and i32 %423, -15
  store i32 %424, ptr %422, align 4, !tbaa !102
  br label %434

425:                                              ; preds = %404, %391
  %426 = load ptr, ptr %9, align 8, !tbaa !5
  %427 = load ptr, ptr %7, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.ImGuiContext, ptr %427, i32 0, i32 62
  %429 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %428, i32 0, i32 4
  %430 = load ptr, ptr %7, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.ImGuiContext, ptr %430, i32 0, i32 62
  %432 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %431, i32 0, i32 1
  %433 = load i32, ptr %432, align 4, !tbaa !103
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %426, ptr noundef nonnull align 4 dereferenceable(8) %429, i32 noundef %433)
  br label %434

434:                                              ; preds = %425, %410
  br label %435

435:                                              ; preds = %434, %384
  %436 = load ptr, ptr %7, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.ImGuiContext, ptr %436, i32 0, i32 62
  %438 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %437, i32 0, i32 0
  %439 = load i32, ptr %438, align 8, !tbaa !72
  %440 = and i32 %439, 2
  %441 = icmp ne i32 %440, 0
  br i1 %441, label %442, label %489

442:                                              ; preds = %435
  %443 = load ptr, ptr %9, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.ImGuiWindow, ptr %443, i32 0, i32 45
  %445 = load i32, ptr %444, align 8, !tbaa !104
  %446 = load ptr, ptr %7, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.ImGuiContext, ptr %446, i32 0, i32 62
  %448 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %447, i32 0, i32 2
  %449 = load i32, ptr %448, align 8, !tbaa !105
  %450 = and i32 %445, %449
  %451 = icmp ne i32 %450, 0
  br i1 %451, label %452, label %459

452:                                              ; preds = %442
  %453 = load ptr, ptr %7, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.ImGuiContext, ptr %453, i32 0, i32 62
  %455 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %454, i32 0, i32 6
  %456 = getelementptr inbounds %struct.ImVec2, ptr %455, i32 0, i32 0
  %457 = load float, ptr %456, align 8, !tbaa !106
  %458 = fcmp ogt float %457, 0.000000e+00
  br label %459

459:                                              ; preds = %452, %442
  %460 = phi i1 [ false, %442 ], [ %458, %452 ]
  %461 = zext i1 %460 to i8
  store i8 %461, ptr %22, align 1, !tbaa !71
  %462 = load ptr, ptr %9, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.ImGuiWindow, ptr %462, i32 0, i32 45
  %464 = load i32, ptr %463, align 8, !tbaa !104
  %465 = load ptr, ptr %7, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.ImGuiContext, ptr %465, i32 0, i32 62
  %467 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %466, i32 0, i32 2
  %468 = load i32, ptr %467, align 8, !tbaa !105
  %469 = and i32 %464, %468
  %470 = icmp ne i32 %469, 0
  br i1 %470, label %471, label %478

471:                                              ; preds = %459
  %472 = load ptr, ptr %7, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.ImGuiContext, ptr %472, i32 0, i32 62
  %474 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %473, i32 0, i32 6
  %475 = getelementptr inbounds %struct.ImVec2, ptr %474, i32 0, i32 1
  %476 = load float, ptr %475, align 4, !tbaa !107
  %477 = fcmp ogt float %476, 0.000000e+00
  br label %478

478:                                              ; preds = %471, %459
  %479 = phi i1 [ false, %459 ], [ %477, %471 ]
  %480 = zext i1 %479 to i8
  store i8 %480, ptr %23, align 1, !tbaa !71
  %481 = load ptr, ptr %9, align 8, !tbaa !5
  %482 = load ptr, ptr %7, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.ImGuiContext, ptr %482, i32 0, i32 62
  %484 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %483, i32 0, i32 6
  %485 = load ptr, ptr %7, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.ImGuiContext, ptr %485, i32 0, i32 62
  %487 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %486, i32 0, i32 2
  %488 = load i32, ptr %487, align 8, !tbaa !105
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %481, ptr noundef nonnull align 4 dereferenceable(8) %484, i32 noundef %488)
  br label %489

489:                                              ; preds = %478, %435
  %490 = load ptr, ptr %7, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.ImGuiContext, ptr %490, i32 0, i32 62
  %492 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %491, i32 0, i32 0
  %493 = load i32, ptr %492, align 8, !tbaa !72
  %494 = and i32 %493, 4
  %495 = icmp ne i32 %494, 0
  br i1 %495, label %496, label %502

496:                                              ; preds = %489
  %497 = load ptr, ptr %7, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.ImGuiContext, ptr %497, i32 0, i32 62
  %499 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %498, i32 0, i32 7
  %500 = load ptr, ptr %9, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.ImGuiWindow, ptr %500, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %501, ptr align 8 %499, i64 8, i1 false), !tbaa.struct !73
  br label %509

502:                                              ; preds = %489
  %503 = load i8, ptr %14, align 1, !tbaa !71, !range !67, !noundef !68
  %504 = trunc i8 %503 to i1
  br i1 %504, label %505, label %508

505:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %24, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %506 = load ptr, ptr %9, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.ImGuiWindow, ptr %506, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %507, ptr align 4 %24, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #13
  br label %508

508:                                              ; preds = %505, %502
  br label %509

509:                                              ; preds = %508, %496
  %510 = load ptr, ptr %7, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.ImGuiContext, ptr %510, i32 0, i32 62
  %512 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %511, i32 0, i32 0
  %513 = load i32, ptr %512, align 8, !tbaa !72
  %514 = and i32 %513, 8
  %515 = icmp ne i32 %514, 0
  br i1 %515, label %516, label %527

516:                                              ; preds = %509
  %517 = load ptr, ptr %9, align 8, !tbaa !5
  %518 = load ptr, ptr %7, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ImGuiContext, ptr %518, i32 0, i32 62
  %520 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %519, i32 0, i32 8
  %521 = load i8, ptr %520, align 8, !tbaa !108, !range !67, !noundef !68
  %522 = trunc i8 %521 to i1
  %523 = load ptr, ptr %7, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.ImGuiContext, ptr %523, i32 0, i32 62
  %525 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %524, i32 0, i32 3
  %526 = load i32, ptr %525, align 4, !tbaa !109
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %517, i1 noundef zeroext %522, i32 noundef %526)
  br label %527

527:                                              ; preds = %516, %509
  %528 = load ptr, ptr %7, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.ImGuiContext, ptr %528, i32 0, i32 62
  %530 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %529, i32 0, i32 0
  %531 = load i32, ptr %530, align 8, !tbaa !72
  %532 = and i32 %531, 32
  %533 = icmp ne i32 %532, 0
  br i1 %533, label %534, label %536

534:                                              ; preds = %527
  %535 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %535)
  br label %536

536:                                              ; preds = %534, %527
  %537 = load ptr, ptr %9, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.ImGuiWindow, ptr %537, i32 0, i32 27
  %539 = load i8, ptr %538, align 4, !tbaa !92, !range !67, !noundef !68
  %540 = trunc i8 %539 to i1
  br i1 %540, label %541, label %543

541:                                              ; preds = %536
  %542 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %542, i32 noundef 8, i1 noundef zeroext false)
  br label %543

543:                                              ; preds = %541, %536
  %544 = load i8, ptr %14, align 1, !tbaa !71, !range !67, !noundef !68
  %545 = trunc i8 %544 to i1
  br i1 %545, label %546, label %2437

546:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #13
  %547 = load i32, ptr %6, align 4, !tbaa !9
  %548 = and i32 %547, 16777216
  %549 = icmp ne i32 %548, 0
  br i1 %549, label %550, label %554

550:                                              ; preds = %546
  %551 = load i32, ptr %6, align 4, !tbaa !9
  %552 = and i32 %551, 33554432
  %553 = icmp ne i32 %552, 0
  br label %554

554:                                              ; preds = %550, %546
  %555 = phi i1 [ false, %546 ], [ %553, %550 ]
  %556 = zext i1 %555 to i8
  store i8 %556, ptr %25, align 1, !tbaa !71
  %557 = load ptr, ptr %9, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.ImGuiWindow, ptr %557, i32 0, i32 21
  store i8 1, ptr %558, align 2, !tbaa !110
  %559 = load ptr, ptr %5, align 8, !tbaa !5
  %560 = icmp ne ptr %559, null
  %561 = load ptr, ptr %9, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.ImGuiWindow, ptr %561, i32 0, i32 30
  %563 = zext i1 %560 to i8
  store i8 %563, ptr %562, align 1, !tbaa !111
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #13
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %27, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull align 4 dereferenceable(16) %27)
  %564 = load ptr, ptr %9, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.ImGuiWindow, ptr %564, i32 0, i32 55
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %565, ptr align 4 %26, i64 16, i1 false), !tbaa.struct !112
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #13
  %566 = load ptr, ptr %9, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.ImGuiWindow, ptr %566, i32 0, i32 49
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %567, i32 noundef 1)
  %568 = load ptr, ptr %9, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.ImGuiWindow, ptr %568, i32 0, i32 74
  %570 = load i8, ptr %569, align 8, !tbaa !113, !range !67, !noundef !68
  %571 = trunc i8 %570 to i1
  br i1 %571, label %572, label %574

572:                                              ; preds = %554
  %573 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %573)
  br label %574

574:                                              ; preds = %572, %554
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #13
  store i8 0, ptr %28, align 1, !tbaa !71
  %575 = load ptr, ptr %7, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiContext, ptr %575, i32 0, i32 110
  %577 = load ptr, ptr %576, align 8, !tbaa !114
  %578 = icmp ne ptr %577, null
  br i1 %578, label %579, label %586

579:                                              ; preds = %574
  %580 = load ptr, ptr %9, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.ImGuiWindow, ptr %580, i32 0, i32 2
  %582 = load i32, ptr %581, align 4, !tbaa !93
  %583 = and i32 %582, 524288
  %584 = icmp eq i32 %583, 0
  br i1 %584, label %585, label %586

585:                                              ; preds = %579
  store i8 1, ptr %28, align 1, !tbaa !71
  br label %586

586:                                              ; preds = %585, %579, %574
  %587 = load i8, ptr %28, align 1, !tbaa !71, !range !67, !noundef !68
  %588 = trunc i8 %587 to i1
  br i1 %588, label %589, label %615

589:                                              ; preds = %586
  %590 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %591 = trunc i8 %590 to i1
  br i1 %591, label %615, label %592

592:                                              ; preds = %589
  %593 = load ptr, ptr %4, align 8, !tbaa !5
  %594 = load ptr, ptr %9, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.ImGuiWindow, ptr %594, i32 0, i32 0
  %596 = load ptr, ptr %595, align 8, !tbaa !115
  %597 = call i32 @strcmp(ptr noundef %593, ptr noundef %596) #15
  %598 = icmp ne i32 %597, 0
  br i1 %598, label %599, label %615

599:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #13
  %600 = load ptr, ptr %9, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.ImGuiWindow, ptr %600, i32 0, i32 11
  %602 = load i32, ptr %601, align 8, !tbaa !116
  %603 = sext i32 %602 to i64
  store i64 %603, ptr %29, align 8, !tbaa !117
  %604 = load ptr, ptr %9, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.ImGuiWindow, ptr %604, i32 0, i32 0
  %606 = load ptr, ptr %605, align 8, !tbaa !115
  %607 = load ptr, ptr %4, align 8, !tbaa !5
  %608 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %606, ptr noundef %29, ptr noundef %607)
  %609 = load ptr, ptr %9, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.ImGuiWindow, ptr %609, i32 0, i32 0
  store ptr %608, ptr %610, align 8, !tbaa !115
  %611 = load i64, ptr %29, align 8, !tbaa !117
  %612 = trunc i64 %611 to i32
  %613 = load ptr, ptr %9, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.ImGuiWindow, ptr %613, i32 0, i32 11
  store i32 %612, ptr %614, align 8, !tbaa !116
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  br label %615

615:                                              ; preds = %599, %592, %589, %586
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #13
  %616 = load ptr, ptr %9, align 8, !tbaa !5
  %617 = call <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef %616)
  store <2 x float> %617, ptr %30, align 4
  %618 = load ptr, ptr %9, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.ImGuiWindow, ptr %618, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %619, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  %620 = load ptr, ptr %9, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.ImGuiWindow, ptr %620, i32 0, i32 42
  %622 = load i32, ptr %621, align 4, !tbaa !119
  %623 = icmp sgt i32 %622, 0
  br i1 %623, label %624, label %629

624:                                              ; preds = %615
  %625 = load ptr, ptr %9, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImGuiWindow, ptr %625, i32 0, i32 42
  %627 = load i32, ptr %626, align 4, !tbaa !119
  %628 = add nsw i32 %627, -1
  store i32 %628, ptr %626, align 4, !tbaa !119
  br label %629

629:                                              ; preds = %624, %615
  %630 = load ptr, ptr %9, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.ImGuiWindow, ptr %630, i32 0, i32 43
  %632 = load i32, ptr %631, align 8, !tbaa !86
  %633 = icmp sgt i32 %632, 0
  br i1 %633, label %634, label %639

634:                                              ; preds = %629
  %635 = load ptr, ptr %9, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.ImGuiWindow, ptr %635, i32 0, i32 43
  %637 = load i32, ptr %636, align 8, !tbaa !86
  %638 = add nsw i32 %637, -1
  store i32 %638, ptr %636, align 8, !tbaa !86
  br label %639

639:                                              ; preds = %634, %629
  %640 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %641 = trunc i8 %640 to i1
  br i1 %641, label %642, label %651

642:                                              ; preds = %639
  %643 = load i8, ptr %22, align 1, !tbaa !71, !range !67, !noundef !68
  %644 = trunc i8 %643 to i1
  br i1 %644, label %645, label %648

645:                                              ; preds = %642
  %646 = load i8, ptr %23, align 1, !tbaa !71, !range !67, !noundef !68
  %647 = trunc i8 %646 to i1
  br i1 %647, label %651, label %648

648:                                              ; preds = %645, %642
  %649 = load ptr, ptr %9, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiWindow, ptr %649, i32 0, i32 43
  store i32 1, ptr %650, align 8, !tbaa !86
  br label %651

651:                                              ; preds = %648, %645, %639
  %652 = load i8, ptr %15, align 1, !tbaa !71, !range !67, !noundef !68
  %653 = trunc i8 %652 to i1
  br i1 %653, label %654, label %688

654:                                              ; preds = %651
  %655 = load i32, ptr %6, align 4, !tbaa !9
  %656 = and i32 %655, 100663296
  %657 = icmp ne i32 %656, 0
  br i1 %657, label %658, label %688

658:                                              ; preds = %654
  %659 = load ptr, ptr %9, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.ImGuiWindow, ptr %659, i32 0, i32 43
  store i32 1, ptr %660, align 8, !tbaa !86
  %661 = load i32, ptr %6, align 4, !tbaa !9
  %662 = and i32 %661, 64
  %663 = icmp ne i32 %662, 0
  br i1 %663, label %664, label %687

664:                                              ; preds = %658
  %665 = load i8, ptr %22, align 1, !tbaa !71, !range !67, !noundef !68
  %666 = trunc i8 %665 to i1
  br i1 %666, label %674, label %667

667:                                              ; preds = %664
  %668 = load ptr, ptr %9, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.ImGuiWindow, ptr %668, i32 0, i32 5
  %670 = getelementptr inbounds %struct.ImVec2, ptr %669, i32 0, i32 0
  store float 0.000000e+00, ptr %670, align 8, !tbaa !120
  %671 = load ptr, ptr %9, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.ImGuiWindow, ptr %671, i32 0, i32 4
  %673 = getelementptr inbounds %struct.ImVec2, ptr %672, i32 0, i32 0
  store float 0.000000e+00, ptr %673, align 8, !tbaa !121
  br label %674

674:                                              ; preds = %667, %664
  %675 = load i8, ptr %23, align 1, !tbaa !71, !range !67, !noundef !68
  %676 = trunc i8 %675 to i1
  br i1 %676, label %684, label %677

677:                                              ; preds = %674
  %678 = load ptr, ptr %9, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.ImGuiWindow, ptr %678, i32 0, i32 5
  %680 = getelementptr inbounds %struct.ImVec2, ptr %679, i32 0, i32 1
  store float 0.000000e+00, ptr %680, align 4, !tbaa !122
  %681 = load ptr, ptr %9, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.ImGuiWindow, ptr %681, i32 0, i32 4
  %683 = getelementptr inbounds %struct.ImVec2, ptr %682, i32 0, i32 1
  store float 0.000000e+00, ptr %683, align 4, !tbaa !123
  br label %684

684:                                              ; preds = %677, %674
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %685 = load ptr, ptr %9, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.ImGuiWindow, ptr %685, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %686, ptr align 4 %31, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #13
  br label %687

687:                                              ; preds = %684, %658
  br label %688

688:                                              ; preds = %687, %654, %651
  %689 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %689)
  %690 = load i32, ptr %6, align 4, !tbaa !9
  %691 = and i32 %690, 16777216
  %692 = icmp ne i32 %691, 0
  br i1 %692, label %693, label %699

693:                                              ; preds = %688
  %694 = load ptr, ptr %8, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.ImGuiStyle, ptr %694, i32 0, i32 8
  %696 = load float, ptr %695, align 4, !tbaa !124
  %697 = load ptr, ptr %9, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.ImGuiWindow, ptr %697, i32 0, i32 10
  store float %696, ptr %698, align 4, !tbaa !125
  br label %719

699:                                              ; preds = %688
  %700 = load i32, ptr %6, align 4, !tbaa !9
  %701 = and i32 %700, 100663296
  %702 = icmp ne i32 %701, 0
  br i1 %702, label %703, label %711

703:                                              ; preds = %699
  %704 = load i32, ptr %6, align 4, !tbaa !9
  %705 = and i32 %704, 134217728
  %706 = icmp ne i32 %705, 0
  br i1 %706, label %711, label %707

707:                                              ; preds = %703
  %708 = load ptr, ptr %8, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.ImGuiStyle, ptr %708, i32 0, i32 10
  %710 = load float, ptr %709, align 4, !tbaa !126
  br label %715

711:                                              ; preds = %703, %699
  %712 = load ptr, ptr %8, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.ImGuiStyle, ptr %712, i32 0, i32 3
  %714 = load float, ptr %713, align 4, !tbaa !127
  br label %715

715:                                              ; preds = %711, %707
  %716 = phi float [ %710, %707 ], [ %714, %711 ]
  %717 = load ptr, ptr %9, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.ImGuiWindow, ptr %717, i32 0, i32 10
  store float %716, ptr %718, align 4, !tbaa !125
  br label %719

719:                                              ; preds = %715, %693
  %720 = load ptr, ptr %8, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.ImGuiStyle, ptr %720, i32 0, i32 1
  %722 = load ptr, ptr %9, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.ImGuiWindow, ptr %722, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %723, ptr align 4 %721, i64 8, i1 false), !tbaa.struct !73
  %724 = load i32, ptr %6, align 4, !tbaa !9
  %725 = and i32 %724, 16777216
  %726 = icmp ne i32 %725, 0
  br i1 %726, label %727, label %750

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

731:                                              ; preds = %727
  %732 = load ptr, ptr %9, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.ImGuiWindow, ptr %732, i32 0, i32 10
  %734 = load float, ptr %733, align 4, !tbaa !125
  %735 = fcmp oeq float %734, 0.000000e+00
  br i1 %735, label %736, label %750

736:                                              ; preds = %731
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %737 = load i32, ptr %6, align 4, !tbaa !9
  %738 = and i32 %737, 1024
  %739 = icmp ne i32 %738, 0
  br i1 %739, label %740, label %745

740:                                              ; preds = %736
  %741 = load ptr, ptr %8, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.ImGuiStyle, ptr %741, i32 0, i32 1
  %743 = getelementptr inbounds %struct.ImVec2, ptr %742, i32 0, i32 1
  %744 = load float, ptr %743, align 4, !tbaa !128
  br label %746

745:                                              ; preds = %736
  br label %746

746:                                              ; preds = %745, %740
  %747 = phi float [ %744, %740 ], [ 0.000000e+00, %745 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef 0.000000e+00, float noundef %747)
  %748 = load ptr, ptr %9, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.ImGuiWindow, ptr %748, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %749, ptr align 4 %32, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  br label %750

750:                                              ; preds = %746, %731, %727, %719
  %751 = load i32, ptr %6, align 4, !tbaa !9
  %752 = and i32 %751, 1
  %753 = icmp ne i32 %752, 0
  br i1 %753, label %811, label %754

754:                                              ; preds = %750
  %755 = load i32, ptr %6, align 4, !tbaa !9
  %756 = and i32 %755, 32
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %811, label %758

758:                                              ; preds = %754
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #13
  %759 = load ptr, ptr %9, align 8, !tbaa !5
  %760 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(956) %759)
  %761 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %33, i32 0, i32 0
  %762 = extractvalue { <2 x float>, <2 x float> } %760, 0
  store <2 x float> %762, ptr %761, align 4
  %763 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %33, i32 0, i32 1
  %764 = extractvalue { <2 x float>, <2 x float> } %760, 1
  store <2 x float> %764, ptr %763, align 4
  %765 = load ptr, ptr %7, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.ImGuiContext, ptr %765, i32 0, i32 26
  %767 = load ptr, ptr %766, align 8, !tbaa !129
  %768 = load ptr, ptr %9, align 8, !tbaa !5
  %769 = icmp eq ptr %767, %768
  br i1 %769, label %770, label %794

770:                                              ; preds = %758
  %771 = load ptr, ptr %7, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.ImGuiContext, ptr %771, i32 0, i32 32
  %773 = load i32, ptr %772, align 4, !tbaa !130
  %774 = icmp eq i32 %773, 0
  br i1 %774, label %775, label %794

775:                                              ; preds = %770
  %776 = load ptr, ptr %7, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.ImGuiContext, ptr %776, i32 0, i32 35
  %778 = load i32, ptr %777, align 4, !tbaa !131
  %779 = icmp eq i32 %778, 0
  br i1 %779, label %780, label %794

780:                                              ; preds = %775
  %781 = getelementptr inbounds %struct.ImRect, ptr %33, i32 0, i32 0
  %782 = getelementptr inbounds %struct.ImRect, ptr %33, i32 0, i32 1
  %783 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %781, ptr noundef nonnull align 4 dereferenceable(8) %782, i1 noundef zeroext true)
  br i1 %783, label %784, label %794

784:                                              ; preds = %780
  %785 = load ptr, ptr %7, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.ImGuiContext, ptr %785, i32 0, i32 3
  %787 = getelementptr inbounds %struct.ImGuiIO, ptr %786, i32 0, i32 64
  %788 = getelementptr inbounds [5 x i8], ptr %787, i64 0, i64 0
  %789 = load i8, ptr %788, align 1, !tbaa !71, !range !67, !noundef !68
  %790 = trunc i8 %789 to i1
  br i1 %790, label %791, label %794

791:                                              ; preds = %784
  %792 = load ptr, ptr %9, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.ImGuiWindow, ptr %792, i32 0, i32 25
  store i8 1, ptr %793, align 2, !tbaa !132
  br label %794

794:                                              ; preds = %791, %784, %780, %775, %770, %758
  %795 = load ptr, ptr %9, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.ImGuiWindow, ptr %795, i32 0, i32 25
  %797 = load i8, ptr %796, align 2, !tbaa !132, !range !67, !noundef !68
  %798 = trunc i8 %797 to i1
  br i1 %798, label %799, label %810

799:                                              ; preds = %794
  %800 = load ptr, ptr %9, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.ImGuiWindow, ptr %800, i32 0, i32 24
  %802 = load i8, ptr %801, align 1, !tbaa !133, !range !67, !noundef !68
  %803 = trunc i8 %802 to i1
  %804 = xor i1 %803, true
  %805 = load ptr, ptr %9, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.ImGuiWindow, ptr %805, i32 0, i32 24
  %807 = zext i1 %804 to i8
  store i8 %807, ptr %806, align 1, !tbaa !133
  %808 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %808)
  %809 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %809)
  br label %810

810:                                              ; preds = %799, %794
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #13
  br label %814

811:                                              ; preds = %754, %750
  %812 = load ptr, ptr %9, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.ImGuiWindow, ptr %812, i32 0, i32 24
  store i8 0, ptr %813, align 1, !tbaa !133
  br label %814

814:                                              ; preds = %811, %810
  %815 = load ptr, ptr %9, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.ImGuiWindow, ptr %815, i32 0, i32 25
  store i8 0, ptr %816, align 2, !tbaa !132
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %817 = load ptr, ptr %9, align 8, !tbaa !5
  %818 = load ptr, ptr %9, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.ImGuiWindow, ptr %818, i32 0, i32 6
  %820 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %817, ptr noundef nonnull align 4 dereferenceable(8) %819)
  store <2 x float> %820, ptr %34, align 4
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #13
  %821 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %822 = trunc i8 %821 to i1
  %823 = zext i1 %822 to i8
  store i8 %823, ptr %35, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #13
  %824 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %825 = trunc i8 %824 to i1
  %826 = zext i1 %825 to i8
  store i8 %826, ptr %36, align 1, !tbaa !71
  %827 = load i32, ptr %6, align 4, !tbaa !9
  %828 = and i32 %827, 64
  %829 = icmp ne i32 %828, 0
  br i1 %829, label %830, label %854

830:                                              ; preds = %814
  %831 = load ptr, ptr %9, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImGuiWindow, ptr %831, i32 0, i32 24
  %833 = load i8, ptr %832, align 1, !tbaa !133, !range !67, !noundef !68
  %834 = trunc i8 %833 to i1
  br i1 %834, label %854, label %835

835:                                              ; preds = %830
  %836 = load i8, ptr %22, align 1, !tbaa !71, !range !67, !noundef !68
  %837 = trunc i8 %836 to i1
  br i1 %837, label %844, label %838

838:                                              ; preds = %835
  %839 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 0
  %840 = load float, ptr %839, align 4, !tbaa !134
  %841 = load ptr, ptr %9, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.ImGuiWindow, ptr %841, i32 0, i32 5
  %843 = getelementptr inbounds %struct.ImVec2, ptr %842, i32 0, i32 0
  store float %840, ptr %843, align 8, !tbaa !120
  store i8 1, ptr %35, align 1, !tbaa !71
  br label %844

844:                                              ; preds = %838, %835
  %845 = load i8, ptr %23, align 1, !tbaa !71, !range !67, !noundef !68
  %846 = trunc i8 %845 to i1
  br i1 %846, label %853, label %847

847:                                              ; preds = %844
  %848 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 1
  %849 = load float, ptr %848, align 4, !tbaa !135
  %850 = load ptr, ptr %9, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.ImGuiWindow, ptr %850, i32 0, i32 5
  %852 = getelementptr inbounds %struct.ImVec2, ptr %851, i32 0, i32 1
  store float %849, ptr %852, align 4, !tbaa !122
  store i8 1, ptr %36, align 1, !tbaa !71
  br label %853

853:                                              ; preds = %847, %844
  br label %935

854:                                              ; preds = %830, %814
  %855 = load ptr, ptr %9, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.ImGuiWindow, ptr %855, i32 0, i32 37
  %857 = load i8, ptr %856, align 4, !tbaa !136
  %858 = sext i8 %857 to i32
  %859 = icmp sgt i32 %858, 0
  br i1 %859, label %866, label %860

860:                                              ; preds = %854
  %861 = load ptr, ptr %9, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.ImGuiWindow, ptr %861, i32 0, i32 38
  %863 = load i8, ptr %862, align 1, !tbaa !137
  %864 = sext i8 %863 to i32
  %865 = icmp sgt i32 %864, 0
  br i1 %865, label %866, label %934

866:                                              ; preds = %860, %854
  %867 = load i8, ptr %22, align 1, !tbaa !71, !range !67, !noundef !68
  %868 = trunc i8 %867 to i1
  br i1 %868, label %896, label %869

869:                                              ; preds = %866
  %870 = load ptr, ptr %9, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.ImGuiWindow, ptr %870, i32 0, i32 37
  %872 = load i8, ptr %871, align 4, !tbaa !136
  %873 = sext i8 %872 to i32
  %874 = icmp sgt i32 %873, 0
  br i1 %874, label %875, label %896

875:                                              ; preds = %869
  %876 = load ptr, ptr %9, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.ImGuiWindow, ptr %876, i32 0, i32 40
  %878 = load i8, ptr %877, align 1, !tbaa !138, !range !67, !noundef !68
  %879 = trunc i8 %878 to i1
  br i1 %879, label %880, label %888

880:                                              ; preds = %875
  %881 = load ptr, ptr %9, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.ImGuiWindow, ptr %881, i32 0, i32 5
  %883 = getelementptr inbounds %struct.ImVec2, ptr %882, i32 0, i32 0
  %884 = load float, ptr %883, align 8, !tbaa !120
  %885 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 0
  %886 = load float, ptr %885, align 4, !tbaa !134
  %887 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %884, float noundef %886)
  br label %891

888:                                              ; preds = %875
  %889 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 0
  %890 = load float, ptr %889, align 4, !tbaa !134
  br label %891

891:                                              ; preds = %888, %880
  %892 = phi float [ %887, %880 ], [ %890, %888 ]
  %893 = load ptr, ptr %9, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.ImGuiWindow, ptr %893, i32 0, i32 5
  %895 = getelementptr inbounds %struct.ImVec2, ptr %894, i32 0, i32 0
  store float %892, ptr %895, align 8, !tbaa !120
  store i8 1, ptr %35, align 1, !tbaa !71
  br label %896

896:                                              ; preds = %891, %869, %866
  %897 = load i8, ptr %23, align 1, !tbaa !71, !range !67, !noundef !68
  %898 = trunc i8 %897 to i1
  br i1 %898, label %926, label %899

899:                                              ; preds = %896
  %900 = load ptr, ptr %9, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.ImGuiWindow, ptr %900, i32 0, i32 38
  %902 = load i8, ptr %901, align 1, !tbaa !137
  %903 = sext i8 %902 to i32
  %904 = icmp sgt i32 %903, 0
  br i1 %904, label %905, label %926

905:                                              ; preds = %899
  %906 = load ptr, ptr %9, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.ImGuiWindow, ptr %906, i32 0, i32 40
  %908 = load i8, ptr %907, align 1, !tbaa !138, !range !67, !noundef !68
  %909 = trunc i8 %908 to i1
  br i1 %909, label %910, label %918

910:                                              ; preds = %905
  %911 = load ptr, ptr %9, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.ImGuiWindow, ptr %911, i32 0, i32 5
  %913 = getelementptr inbounds %struct.ImVec2, ptr %912, i32 0, i32 1
  %914 = load float, ptr %913, align 4, !tbaa !122
  %915 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 1
  %916 = load float, ptr %915, align 4, !tbaa !135
  %917 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %914, float noundef %916)
  br label %921

918:                                              ; preds = %905
  %919 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 1
  %920 = load float, ptr %919, align 4, !tbaa !135
  br label %921

921:                                              ; preds = %918, %910
  %922 = phi float [ %917, %910 ], [ %920, %918 ]
  %923 = load ptr, ptr %9, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.ImGuiWindow, ptr %923, i32 0, i32 5
  %925 = getelementptr inbounds %struct.ImVec2, ptr %924, i32 0, i32 1
  store float %922, ptr %925, align 4, !tbaa !122
  store i8 1, ptr %36, align 1, !tbaa !71
  br label %926

926:                                              ; preds = %921, %899, %896
  %927 = load ptr, ptr %9, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.ImGuiWindow, ptr %927, i32 0, i32 24
  %929 = load i8, ptr %928, align 1, !tbaa !133, !range !67, !noundef !68
  %930 = trunc i8 %929 to i1
  br i1 %930, label %933, label %931

931:                                              ; preds = %926
  %932 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %932)
  br label %933

933:                                              ; preds = %931, %926
  br label %934

934:                                              ; preds = %933, %860
  br label %935

935:                                              ; preds = %934, %853
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  %936 = load ptr, ptr %9, align 8, !tbaa !5
  %937 = load ptr, ptr %9, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.ImGuiWindow, ptr %937, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %38, ptr align 8 %938, i64 8, i1 false), !tbaa.struct !73
  %939 = load <2 x float>, ptr %38, align 4
  %940 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %936, <2 x float> %939)
  store <2 x float> %940, ptr %37, align 4
  %941 = load ptr, ptr %9, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.ImGuiWindow, ptr %941, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %942, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #13
  %943 = load ptr, ptr %9, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.ImGuiWindow, ptr %943, i32 0, i32 24
  %945 = load i8, ptr %944, align 1, !tbaa !133, !range !67, !noundef !68
  %946 = trunc i8 %945 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #13
  br i1 %946, label %947, label %959

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

951:                                              ; preds = %947
  %952 = load ptr, ptr %9, align 8, !tbaa !5
  %953 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(956) %952)
  %954 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %40, i32 0, i32 0
  %955 = extractvalue { <2 x float>, <2 x float> } %953, 0
  store <2 x float> %955, ptr %954, align 4
  %956 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %40, i32 0, i32 1
  %957 = extractvalue { <2 x float>, <2 x float> } %953, 1
  store <2 x float> %957, ptr %956, align 4
  %958 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %40)
  store <2 x float> %958, ptr %39, align 4
  br label %962

959:                                              ; preds = %947, %935
  %960 = load ptr, ptr %9, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.ImGuiWindow, ptr %960, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 8 %961, i64 8, i1 false), !tbaa.struct !73
  br label %962

962:                                              ; preds = %959, %951
  %963 = load ptr, ptr %9, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.ImGuiWindow, ptr %963, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %964, ptr align 4 %39, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #13
  %965 = load ptr, ptr %9, align 8, !tbaa !5
  %966 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(956) %965)
  %967 = load ptr, ptr %9, align 8, !tbaa !5
  %968 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(956) %967)
  %969 = fadd float %966, %968
  store float %969, ptr %41, align 4, !tbaa !74
  %970 = load i8, ptr %15, align 1, !tbaa !71, !range !67, !noundef !68
  %971 = trunc i8 %970 to i1
  br i1 %971, label %972, label %989

972:                                              ; preds = %962
  %973 = load ptr, ptr %9, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.ImGuiWindow, ptr %973, i32 0, i32 41
  store i32 -1, ptr %974, align 8, !tbaa !139
  %975 = load i32, ptr %6, align 4, !tbaa !9
  %976 = and i32 %975, 67108864
  %977 = icmp ne i32 %976, 0
  br i1 %977, label %978, label %988

978:                                              ; preds = %972
  %979 = load i8, ptr %21, align 1, !tbaa !71, !range !67, !noundef !68
  %980 = trunc i8 %979 to i1
  br i1 %980, label %988, label %981

981:                                              ; preds = %978
  %982 = load ptr, ptr %7, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.ImGuiContext, ptr %982, i32 0, i32 69
  %984 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %983)
  %985 = getelementptr inbounds %struct.ImGuiPopupData, ptr %984, i32 0, i32 5
  %986 = load ptr, ptr %9, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.ImGuiWindow, ptr %986, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %987, ptr align 8 %985, i64 8, i1 false), !tbaa.struct !73
  br label %988

988:                                              ; preds = %981, %978, %972
  br label %989

989:                                              ; preds = %988, %962
  %990 = load i32, ptr %6, align 4, !tbaa !9
  %991 = and i32 %990, 16777216
  %992 = icmp ne i32 %991, 0
  br i1 %992, label %993, label %1034

993:                                              ; preds = %989
  %994 = load ptr, ptr %19, align 8, !tbaa !5
  %995 = icmp ne ptr %994, null
  br i1 %995, label %996, label %1001

996:                                              ; preds = %993
  %997 = load ptr, ptr %19, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.ImGuiWindow, ptr %997, i32 0, i32 21
  %999 = load i8, ptr %998, align 2, !tbaa !110, !range !67, !noundef !68
  %1000 = trunc i8 %999 to i1
  br label %1001

1001:                                             ; preds = %996, %993
  %1002 = phi i1 [ false, %993 ], [ %1000, %996 ]
  br i1 %1002, label %1003, label %1004

1003:                                             ; preds = %1001
  br label %1006

1004:                                             ; preds = %1001
  call void @__assert_fail(ptr noundef @.str.97, ptr noundef @.str.3, i32 noundef 5722, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1005:                                             ; No predecessors!
  br label %1006

1006:                                             ; preds = %1005, %1003
  %1007 = load ptr, ptr %19, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.ImGuiWindow, ptr %1007, i32 0, i32 50
  %1009 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1008, i32 0, i32 28
  %1010 = getelementptr inbounds %struct.ImVector.3, ptr %1009, i32 0, i32 0
  %1011 = load i32, ptr %1010, align 8, !tbaa !140
  %1012 = trunc i32 %1011 to i16
  %1013 = load ptr, ptr %9, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.ImGuiWindow, ptr %1013, i32 0, i32 34
  store i16 %1012, ptr %1014, align 4, !tbaa !96
  %1015 = load ptr, ptr %19, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.ImGuiWindow, ptr %1015, i32 0, i32 50
  %1017 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1016, i32 0, i32 28
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1017, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %1018 = load i32, ptr %6, align 4, !tbaa !9
  %1019 = and i32 %1018, 67108864
  %1020 = icmp ne i32 %1019, 0
  br i1 %1020, label %1033, label %1021

1021:                                             ; preds = %1006
  %1022 = load i8, ptr %21, align 1, !tbaa !71, !range !67, !noundef !68
  %1023 = trunc i8 %1022 to i1
  br i1 %1023, label %1033, label %1024

1024:                                             ; preds = %1021
  %1025 = load i8, ptr %25, align 1, !tbaa !71, !range !67, !noundef !68
  %1026 = trunc i8 %1025 to i1
  br i1 %1026, label %1033, label %1027

1027:                                             ; preds = %1024
  %1028 = load ptr, ptr %19, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.ImGuiWindow, ptr %1028, i32 0, i32 50
  %1030 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1029, i32 0, i32 0
  %1031 = load ptr, ptr %9, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.ImGuiWindow, ptr %1031, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1032, ptr align 8 %1030, i64 8, i1 false), !tbaa.struct !73
  br label %1033

1033:                                             ; preds = %1027, %1024, %1021, %1006
  br label %1034

1034:                                             ; preds = %1033, %989
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #13
  %1035 = load ptr, ptr %9, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.ImGuiWindow, ptr %1035, i32 0, i32 47
  %1037 = getelementptr inbounds %struct.ImVec2, ptr %1036, i32 0, i32 0
  %1038 = load float, ptr %1037, align 8, !tbaa !141
  %1039 = fcmp une float %1038, 0x47EFFFFFE0000000
  br i1 %1039, label %1040, label %1045

1040:                                             ; preds = %1034
  %1041 = load ptr, ptr %9, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.ImGuiWindow, ptr %1041, i32 0, i32 43
  %1043 = load i32, ptr %1042, align 8, !tbaa !86
  %1044 = icmp eq i32 %1043, 0
  br label %1045

1045:                                             ; preds = %1040, %1034
  %1046 = phi i1 [ false, %1034 ], [ %1044, %1040 ]
  %1047 = zext i1 %1046 to i8
  store i8 %1047, ptr %42, align 1, !tbaa !71
  %1048 = load i8, ptr %42, align 1, !tbaa !71, !range !67, !noundef !68
  %1049 = trunc i8 %1048 to i1
  br i1 %1049, label %1050, label %1060

1050:                                             ; preds = %1045
  %1051 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %1052 = load ptr, ptr %9, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.ImGuiWindow, ptr %1052, i32 0, i32 47
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %1054 = load ptr, ptr %9, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.ImGuiWindow, ptr %1054, i32 0, i32 5
  %1056 = load ptr, ptr %9, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.ImGuiWindow, ptr %1056, i32 0, i32 48
  %1058 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1055, ptr noundef nonnull align 4 dereferenceable(8) %1057)
  store <2 x float> %1058, ptr %44, align 4
  %1059 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1053, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %1059, ptr %43, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1051, ptr noundef nonnull align 4 dereferenceable(8) %43, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  br label %1102

1060:                                             ; preds = %1045
  %1061 = load i32, ptr %6, align 4, !tbaa !9
  %1062 = and i32 %1061, 268435456
  %1063 = icmp ne i32 %1062, 0
  br i1 %1063, label %1064, label %1069

1064:                                             ; preds = %1060
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #13
  %1065 = load ptr, ptr %9, align 8, !tbaa !5
  %1066 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1065)
  store <2 x float> %1066, ptr %45, align 4
  %1067 = load ptr, ptr %9, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ImGuiWindow, ptr %1067, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1068, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #13
  br label %1101

1069:                                             ; preds = %1060
  %1070 = load i32, ptr %6, align 4, !tbaa !9
  %1071 = and i32 %1070, 67108864
  %1072 = icmp ne i32 %1071, 0
  br i1 %1072, label %1073, label %1084

1073:                                             ; preds = %1069
  %1074 = load i8, ptr %21, align 1, !tbaa !71, !range !67, !noundef !68
  %1075 = trunc i8 %1074 to i1
  br i1 %1075, label %1084, label %1076

1076:                                             ; preds = %1073
  %1077 = load i8, ptr %16, align 1, !tbaa !71, !range !67, !noundef !68
  %1078 = trunc i8 %1077 to i1
  br i1 %1078, label %1079, label %1084

1079:                                             ; preds = %1076
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #13
  %1080 = load ptr, ptr %9, align 8, !tbaa !5
  %1081 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1080)
  store <2 x float> %1081, ptr %46, align 4
  %1082 = load ptr, ptr %9, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.ImGuiWindow, ptr %1082, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1083, ptr align 4 %46, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  br label %1100

1084:                                             ; preds = %1076, %1073, %1069
  %1085 = load i32, ptr %6, align 4, !tbaa !9
  %1086 = and i32 %1085, 33554432
  %1087 = icmp ne i32 %1086, 0
  br i1 %1087, label %1088, label %1099

1088:                                             ; preds = %1084
  %1089 = load i8, ptr %21, align 1, !tbaa !71, !range !67, !noundef !68
  %1090 = trunc i8 %1089 to i1
  br i1 %1090, label %1099, label %1091

1091:                                             ; preds = %1088
  %1092 = load i8, ptr %25, align 1, !tbaa !71, !range !67, !noundef !68
  %1093 = trunc i8 %1092 to i1
  br i1 %1093, label %1099, label %1094

1094:                                             ; preds = %1091
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  %1095 = load ptr, ptr %9, align 8, !tbaa !5
  %1096 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1095)
  store <2 x float> %1096, ptr %47, align 4
  %1097 = load ptr, ptr %9, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.ImGuiWindow, ptr %1097, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1098, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  br label %1099

1099:                                             ; preds = %1094, %1091, %1088, %1084
  br label %1100

1100:                                             ; preds = %1099, %1079
  br label %1101

1101:                                             ; preds = %1100, %1064
  br label %1102

1102:                                             ; preds = %1101, %1050
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #13
  %1103 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %1104 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 0
  %1105 = extractvalue { <2 x float>, <2 x float> } %1103, 0
  store <2 x float> %1105, ptr %1104, align 4
  %1106 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 1
  %1107 = extractvalue { <2 x float>, <2 x float> } %1103, 1
  store <2 x float> %1107, ptr %1106, align 4
  %1108 = load i8, ptr %21, align 1, !tbaa !71, !range !67, !noundef !68
  %1109 = trunc i8 %1108 to i1
  br i1 %1109, label %1140, label %1110

1110:                                             ; preds = %1102
  %1111 = load i32, ptr %6, align 4, !tbaa !9
  %1112 = and i32 %1111, 16777216
  %1113 = icmp ne i32 %1112, 0
  br i1 %1113, label %1140, label %1114

1114:                                             ; preds = %1110
  %1115 = load ptr, ptr %9, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.ImGuiWindow, ptr %1115, i32 0, i32 37
  %1117 = load i8, ptr %1116, align 4, !tbaa !136
  %1118 = sext i8 %1117 to i32
  %1119 = icmp sle i32 %1118, 0
  br i1 %1119, label %1120, label %1140

1120:                                             ; preds = %1114
  %1121 = load ptr, ptr %9, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.ImGuiWindow, ptr %1121, i32 0, i32 38
  %1123 = load i8, ptr %1122, align 1, !tbaa !137
  %1124 = sext i8 %1123 to i32
  %1125 = icmp sle i32 %1124, 0
  br i1 %1125, label %1126, label %1140

1126:                                             ; preds = %1120
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #13
  %1127 = load ptr, ptr %8, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.ImGuiStyle, ptr %1127, i32 0, i32 28
  %1129 = load ptr, ptr %8, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.ImGuiStyle, ptr %1129, i32 0, i32 29
  %1131 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1128, ptr noundef nonnull align 4 dereferenceable(8) %1130)
  store <2 x float> %1131, ptr %49, align 4
  %1132 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %48)
  %1133 = fcmp ogt float %1132, 0.000000e+00
  br i1 %1133, label %1134, label %1139

1134:                                             ; preds = %1126
  %1135 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %48)
  %1136 = fcmp ogt float %1135, 0.000000e+00
  br i1 %1136, label %1137, label %1139

1137:                                             ; preds = %1134
  %1138 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRectRK6ImVec2(ptr noundef %1138, ptr noundef nonnull align 4 dereferenceable(16) %48, ptr noundef nonnull align 4 dereferenceable(8) %49)
  br label %1139

1139:                                             ; preds = %1137, %1134, %1126
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #13
  br label %1140

1140:                                             ; preds = %1139, %1120, %1114, %1110, %1102
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #13
  %1141 = load ptr, ptr %9, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.ImGuiWindow, ptr %1141, i32 0, i32 3
  %1143 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1142)
  store <2 x float> %1143, ptr %50, align 4
  %1144 = load ptr, ptr %9, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.ImGuiWindow, ptr %1144, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1145, ptr align 4 %50, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  %1146 = load i32, ptr %6, align 4, !tbaa !9
  %1147 = and i32 %1146, 16777216
  %1148 = icmp ne i32 %1147, 0
  br i1 %1148, label %1149, label %1153

1149:                                             ; preds = %1140
  %1150 = load ptr, ptr %8, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.ImGuiStyle, ptr %1150, i32 0, i32 7
  %1152 = load float, ptr %1151, align 4, !tbaa !142
  br label %1171

1153:                                             ; preds = %1140
  %1154 = load i32, ptr %6, align 4, !tbaa !9
  %1155 = and i32 %1154, 67108864
  %1156 = icmp ne i32 %1155, 0
  br i1 %1156, label %1157, label %1165

1157:                                             ; preds = %1153
  %1158 = load i32, ptr %6, align 4, !tbaa !9
  %1159 = and i32 %1158, 134217728
  %1160 = icmp ne i32 %1159, 0
  br i1 %1160, label %1165, label %1161

1161:                                             ; preds = %1157
  %1162 = load ptr, ptr %8, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiStyle, ptr %1162, i32 0, i32 9
  %1164 = load float, ptr %1163, align 4, !tbaa !143
  br label %1169

1165:                                             ; preds = %1157, %1153
  %1166 = load ptr, ptr %8, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.ImGuiStyle, ptr %1166, i32 0, i32 2
  %1168 = load float, ptr %1167, align 4, !tbaa !144
  br label %1169

1169:                                             ; preds = %1165, %1161
  %1170 = phi float [ %1164, %1161 ], [ %1168, %1165 ]
  br label %1171

1171:                                             ; preds = %1169, %1149
  %1172 = phi float [ %1152, %1149 ], [ %1170, %1169 ]
  %1173 = load ptr, ptr %9, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.ImGuiWindow, ptr %1173, i32 0, i32 9
  store float %1172, ptr %1174, align 8, !tbaa !145
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #13
  store i8 0, ptr %51, align 1, !tbaa !71
  %1175 = load i8, ptr %15, align 1, !tbaa !71, !range !67, !noundef !68
  %1176 = trunc i8 %1175 to i1
  br i1 %1176, label %1177, label %1193

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

1181:                                             ; preds = %1177
  %1182 = load i32, ptr %6, align 4, !tbaa !9
  %1183 = and i32 %1182, 67108864
  %1184 = icmp ne i32 %1183, 0
  br i1 %1184, label %1185, label %1186

1185:                                             ; preds = %1181
  store i8 1, ptr %51, align 1, !tbaa !71
  br label %1192

1186:                                             ; preds = %1181
  %1187 = load i32, ptr %6, align 4, !tbaa !9
  %1188 = and i32 %1187, 50331648
  %1189 = icmp eq i32 %1188, 0
  br i1 %1189, label %1190, label %1191

1190:                                             ; preds = %1186
  store i8 1, ptr %51, align 1, !tbaa !71
  br label %1191

1191:                                             ; preds = %1190, %1186
  br label %1192

1192:                                             ; preds = %1191, %1185
  br label %1193

1193:                                             ; preds = %1192, %1177, %1171
  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
  %1194 = load ptr, ptr %7, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.ImGuiContext, ptr %1194, i32 0, i32 3
  %1196 = getelementptr inbounds %struct.ImGuiIO, ptr %1195, i32 0, i32 22
  %1197 = load i8, ptr %1196, align 1, !tbaa !146, !range !67, !noundef !68
  %1198 = trunc i8 %1197 to i1
  %1199 = zext i1 %1198 to i64
  %1200 = select i1 %1198, i32 2, i32 1
  store i32 %1200, ptr %54, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #13
  %1201 = load ptr, ptr %7, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.ImGuiContext, ptr %1201, i32 0, i32 7
  %1203 = load float, ptr %1202, align 8, !tbaa !147
  %1204 = fmul float %1203, 0x3FF59999A0000000
  %1205 = load ptr, ptr %9, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.ImGuiWindow, ptr %1205, i32 0, i32 9
  %1207 = load float, ptr %1206, align 8, !tbaa !145
  %1208 = fadd float %1207, 1.000000e+00
  %1209 = load ptr, ptr %7, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.ImGuiContext, ptr %1209, i32 0, i32 7
  %1211 = load float, ptr %1210, align 8, !tbaa !147
  %1212 = call float @llvm.fmuladd.f32(float %1211, float 0x3FC99999A0000000, float %1208)
  %1213 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1204, float noundef %1212)
  %1214 = fptosi float %1213 to i32
  %1215 = sitofp i32 %1214 to float
  store float %1215, ptr %55, align 4, !tbaa !74
  %1216 = load ptr, ptr %9, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.ImGuiWindow, ptr %1216, i32 0, i32 24
  %1218 = load i8, ptr %1217, align 1, !tbaa !133, !range !67, !noundef !68
  %1219 = trunc i8 %1218 to i1
  br i1 %1219, label %1227, label %1220

1220:                                             ; preds = %1193
  %1221 = load ptr, ptr %9, align 8, !tbaa !5
  %1222 = load i32, ptr %54, align 4, !tbaa !9
  %1223 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 0
  %1224 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(ptr noundef %1221, ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef %52, i32 noundef %1222, ptr noundef %1223)
  br i1 %1224, label %1225, label %1226

1225:                                             ; preds = %1220
  store i8 1, ptr %36, align 1, !tbaa !71
  store i8 1, ptr %35, align 1, !tbaa !71
  br label %1226

1226:                                             ; preds = %1225, %1220
  br label %1227

1227:                                             ; preds = %1226, %1193
  %1228 = load i32, ptr %52, align 4, !tbaa !9
  %1229 = trunc i32 %1228 to i8
  %1230 = load ptr, ptr %9, align 8, !tbaa !5
  %1231 = getelementptr inbounds %struct.ImGuiWindow, ptr %1230, i32 0, i32 31
  store i8 %1229, ptr %1231, align 8, !tbaa !148
  %1232 = load ptr, ptr %9, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.ImGuiWindow, ptr %1232, i32 0, i32 24
  %1234 = load i8, ptr %1233, align 1, !tbaa !133, !range !67, !noundef !68
  %1235 = trunc i8 %1234 to i1
  br i1 %1235, label %1388, label %1236

1236:                                             ; preds = %1227
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %1237 = load ptr, ptr %9, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.ImGuiWindow, ptr %1237, i32 0, i32 5
  %1239 = getelementptr inbounds %struct.ImVec2, ptr %1238, i32 0, i32 0
  %1240 = load float, ptr %1239, align 8, !tbaa !120
  %1241 = load ptr, ptr %9, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.ImGuiWindow, ptr %1241, i32 0, i32 5
  %1243 = getelementptr inbounds %struct.ImVec2, ptr %1242, i32 0, i32 1
  %1244 = load float, ptr %1243, align 4, !tbaa !122
  %1245 = load float, ptr %41, align 4, !tbaa !74
  %1246 = fsub float %1244, %1245
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %56, float noundef %1240, float noundef %1246)
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %1247 = load ptr, ptr %9, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.ImGuiWindow, ptr %1247, i32 0, i32 52
  %1249 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1248)
  store <2 x float> %1249, ptr %58, align 4
  %1250 = load ptr, ptr %9, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.ImGuiWindow, ptr %1250, i32 0, i32 18
  %1252 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %58, ptr noundef nonnull align 4 dereferenceable(8) %1251)
  store <2 x float> %1252, 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
  %1253 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %1254 = trunc i8 %1253 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #13
  br i1 %1254, label %1255, label %1256

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

1256:                                             ; preds = %1236
  %1257 = load ptr, ptr %9, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.ImGuiWindow, ptr %1257, i32 0, i32 6
  %1259 = load ptr, ptr %9, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.ImGuiWindow, ptr %1259, i32 0, i32 8
  %1261 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1260, float noundef 2.000000e+00)
  store <2 x float> %1261, ptr %60, align 4
  %1262 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1258, ptr noundef nonnull align 4 dereferenceable(8) %60)
  store <2 x float> %1262, ptr %59, align 4
  br label %1263

1263:                                             ; preds = %1256, %1255
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  %1264 = load i8, ptr %35, align 1, !tbaa !71, !range !67, !noundef !68
  %1265 = trunc i8 %1264 to i1
  br i1 %1265, label %1266, label %1269

1266:                                             ; preds = %1263
  %1267 = getelementptr inbounds %struct.ImVec2, ptr %56, i32 0, i32 0
  %1268 = load float, ptr %1267, align 4, !tbaa !134
  br label %1272

1269:                                             ; preds = %1263
  %1270 = getelementptr inbounds %struct.ImVec2, ptr %57, i32 0, i32 0
  %1271 = load float, ptr %1270, align 4, !tbaa !134
  br label %1272

1272:                                             ; preds = %1269, %1266
  %1273 = phi float [ %1268, %1266 ], [ %1271, %1269 ]
  store float %1273, ptr %61, align 4, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #13
  %1274 = load i8, ptr %36, align 1, !tbaa !71, !range !67, !noundef !68
  %1275 = trunc i8 %1274 to i1
  br i1 %1275, label %1276, label %1279

1276:                                             ; preds = %1272
  %1277 = getelementptr inbounds %struct.ImVec2, ptr %56, i32 0, i32 1
  %1278 = load float, ptr %1277, align 4, !tbaa !135
  br label %1282

1279:                                             ; preds = %1272
  %1280 = getelementptr inbounds %struct.ImVec2, ptr %57, i32 0, i32 1
  %1281 = load float, ptr %1280, align 4, !tbaa !135
  br label %1282

1282:                                             ; preds = %1279, %1276
  %1283 = phi float [ %1278, %1276 ], [ %1281, %1279 ]
  store float %1283, ptr %62, align 4, !tbaa !74
  %1284 = load i32, ptr %6, align 4, !tbaa !9
  %1285 = and i32 %1284, 16384
  %1286 = icmp ne i32 %1285, 0
  br i1 %1286, label %1299, label %1287

1287:                                             ; preds = %1282
  %1288 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 1
  %1289 = load float, ptr %1288, align 4, !tbaa !135
  %1290 = load float, ptr %62, align 4, !tbaa !74
  %1291 = fcmp ogt float %1289, %1290
  br i1 %1291, label %1292, label %1297

1292:                                             ; preds = %1287
  %1293 = load i32, ptr %6, align 4, !tbaa !9
  %1294 = and i32 %1293, 8
  %1295 = icmp ne i32 %1294, 0
  %1296 = xor i1 %1295, true
  br label %1297

1297:                                             ; preds = %1292, %1287
  %1298 = phi i1 [ false, %1287 ], [ %1296, %1292 ]
  br label %1299

1299:                                             ; preds = %1297, %1282
  %1300 = phi i1 [ true, %1282 ], [ %1298, %1297 ]
  %1301 = load ptr, ptr %9, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.ImGuiWindow, ptr %1301, i32 0, i32 20
  %1303 = zext i1 %1300 to i8
  store i8 %1303, ptr %1302, align 1, !tbaa !149
  %1304 = load i32, ptr %6, align 4, !tbaa !9
  %1305 = and i32 %1304, 32768
  %1306 = icmp ne i32 %1305, 0
  br i1 %1306, label %1334, label %1307

1307:                                             ; preds = %1299
  %1308 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 0
  %1309 = load float, ptr %1308, align 4, !tbaa !134
  %1310 = load float, ptr %61, align 4, !tbaa !74
  %1311 = load ptr, ptr %9, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.ImGuiWindow, ptr %1311, i32 0, i32 20
  %1313 = load i8, ptr %1312, align 1, !tbaa !149, !range !67, !noundef !68
  %1314 = trunc i8 %1313 to i1
  br i1 %1314, label %1315, label %1319

1315:                                             ; preds = %1307
  %1316 = load ptr, ptr %8, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.ImGuiStyle, ptr %1316, i32 0, i32 19
  %1318 = load float, ptr %1317, align 4, !tbaa !150
  br label %1320

1319:                                             ; preds = %1307
  br label %1320

1320:                                             ; preds = %1319, %1315
  %1321 = phi float [ %1318, %1315 ], [ 0.000000e+00, %1319 ]
  %1322 = fsub float %1310, %1321
  %1323 = fcmp ogt float %1309, %1322
  br i1 %1323, label %1324, label %1332

1324:                                             ; preds = %1320
  %1325 = load i32, ptr %6, align 4, !tbaa !9
  %1326 = and i32 %1325, 8
  %1327 = icmp ne i32 %1326, 0
  br i1 %1327, label %1332, label %1328

1328:                                             ; preds = %1324
  %1329 = load i32, ptr %6, align 4, !tbaa !9
  %1330 = and i32 %1329, 2048
  %1331 = icmp ne i32 %1330, 0
  br label %1332

1332:                                             ; preds = %1328, %1324, %1320
  %1333 = phi i1 [ false, %1324 ], [ false, %1320 ], [ %1331, %1328 ]
  br label %1334

1334:                                             ; preds = %1332, %1299
  %1335 = phi i1 [ true, %1299 ], [ %1333, %1332 ]
  %1336 = load ptr, ptr %9, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.ImGuiWindow, ptr %1336, i32 0, i32 19
  %1338 = zext i1 %1335 to i8
  store i8 %1338, ptr %1337, align 4, !tbaa !151
  %1339 = load ptr, ptr %9, align 8, !tbaa !5
  %1340 = getelementptr inbounds %struct.ImGuiWindow, ptr %1339, i32 0, i32 19
  %1341 = load i8, ptr %1340, align 4, !tbaa !151, !range !67, !noundef !68
  %1342 = trunc i8 %1341 to i1
  br i1 %1342, label %1343, label %1363

1343:                                             ; preds = %1334
  %1344 = load ptr, ptr %9, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.ImGuiWindow, ptr %1344, i32 0, i32 20
  %1346 = load i8, ptr %1345, align 1, !tbaa !149, !range !67, !noundef !68
  %1347 = trunc i8 %1346 to i1
  br i1 %1347, label %1363, label %1348

1348:                                             ; preds = %1343
  %1349 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 1
  %1350 = load float, ptr %1349, align 4, !tbaa !135
  %1351 = load float, ptr %62, align 4, !tbaa !74
  %1352 = fcmp ogt float %1350, %1351
  br i1 %1352, label %1353, label %1358

1353:                                             ; preds = %1348
  %1354 = load i32, ptr %6, align 4, !tbaa !9
  %1355 = and i32 %1354, 8
  %1356 = icmp ne i32 %1355, 0
  %1357 = xor i1 %1356, true
  br label %1358

1358:                                             ; preds = %1353, %1348
  %1359 = phi i1 [ false, %1348 ], [ %1357, %1353 ]
  %1360 = load ptr, ptr %9, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.ImGuiWindow, ptr %1360, i32 0, i32 20
  %1362 = zext i1 %1359 to i8
  store i8 %1362, ptr %1361, align 1, !tbaa !149
  br label %1363

1363:                                             ; preds = %1358, %1343, %1334
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  %1364 = load ptr, ptr %9, align 8, !tbaa !5
  %1365 = getelementptr inbounds %struct.ImGuiWindow, ptr %1364, i32 0, i32 20
  %1366 = load i8, ptr %1365, align 1, !tbaa !149, !range !67, !noundef !68
  %1367 = trunc i8 %1366 to i1
  br i1 %1367, label %1368, label %1372

1368:                                             ; preds = %1363
  %1369 = load ptr, ptr %8, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.ImGuiStyle, ptr %1369, i32 0, i32 19
  %1371 = load float, ptr %1370, align 4, !tbaa !150
  br label %1373

1372:                                             ; preds = %1363
  br label %1373

1373:                                             ; preds = %1372, %1368
  %1374 = phi float [ %1371, %1368 ], [ 0.000000e+00, %1372 ]
  %1375 = load ptr, ptr %9, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.ImGuiWindow, ptr %1375, i32 0, i32 19
  %1377 = load i8, ptr %1376, align 4, !tbaa !151, !range !67, !noundef !68
  %1378 = trunc i8 %1377 to i1
  br i1 %1378, label %1379, label %1383

1379:                                             ; preds = %1373
  %1380 = load ptr, ptr %8, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.ImGuiStyle, ptr %1380, i32 0, i32 19
  %1382 = load float, ptr %1381, align 4, !tbaa !150
  br label %1384

1383:                                             ; preds = %1373
  br label %1384

1384:                                             ; preds = %1383, %1379
  %1385 = phi float [ %1382, %1379 ], [ 0.000000e+00, %1383 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %63, float noundef %1374, float noundef %1385)
  %1386 = load ptr, ptr %9, align 8, !tbaa !5
  %1387 = getelementptr inbounds %struct.ImGuiWindow, ptr %1386, i32 0, i32 18
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1387, ptr align 4 %63, i64 8, i1 false), !tbaa.struct !73
  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 %1388

1388:                                             ; preds = %1384, %1227
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #13
  %1389 = load i32, ptr %6, align 4, !tbaa !9
  %1390 = and i32 %1389, 16777216
  %1391 = icmp ne i32 %1390, 0
  br i1 %1391, label %1392, label %1402

1392:                                             ; preds = %1388
  %1393 = load i32, ptr %6, align 4, !tbaa !9
  %1394 = and i32 %1393, 67108864
  %1395 = icmp ne i32 %1394, 0
  br i1 %1395, label %1402, label %1396

1396:                                             ; preds = %1392
  %1397 = load i8, ptr %25, align 1, !tbaa !71, !range !67, !noundef !68
  %1398 = trunc i8 %1397 to i1
  br i1 %1398, label %1402, label %1399

1399:                                             ; preds = %1396
  %1400 = load ptr, ptr %19, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.ImGuiWindow, ptr %1400, i32 0, i32 55
  br label %1403

1402:                                             ; preds = %1396, %1392, %1388
  br label %1403

1403:                                             ; preds = %1402, %1399
  %1404 = phi ptr [ %1401, %1399 ], [ %48, %1402 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %1404, i64 16, i1 false), !tbaa.struct !112
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #13
  %1405 = load ptr, ptr %9, align 8, !tbaa !5
  %1406 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %1405)
  %1407 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %65, i32 0, i32 0
  %1408 = extractvalue { <2 x float>, <2 x float> } %1406, 0
  store <2 x float> %1408, ptr %1407, align 4
  %1409 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %65, i32 0, i32 1
  %1410 = extractvalue { <2 x float>, <2 x float> } %1406, 1
  store <2 x float> %1410, ptr %1409, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #13
  %1411 = load ptr, ptr %9, align 8, !tbaa !5
  %1412 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(956) %1411)
  %1413 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %66, i32 0, i32 0
  %1414 = extractvalue { <2 x float>, <2 x float> } %1412, 0
  store <2 x float> %1414, ptr %1413, align 4
  %1415 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %66, i32 0, i32 1
  %1416 = extractvalue { <2 x float>, <2 x float> } %1412, 1
  store <2 x float> %1416, ptr %1415, align 4
  %1417 = load ptr, ptr %9, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.ImGuiWindow, ptr %1417, i32 0, i32 51
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1418, ptr align 4 %65, i64 16, i1 false), !tbaa.struct !112
  %1419 = load ptr, ptr %9, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.ImGuiWindow, ptr %1419, i32 0, i32 51
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1420, ptr noundef nonnull align 4 dereferenceable(16) %64)
  %1421 = load ptr, ptr %9, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.ImGuiWindow, ptr %1421, i32 0, i32 3
  %1423 = getelementptr inbounds %struct.ImVec2, ptr %1422, i32 0, i32 0
  %1424 = load float, ptr %1423, align 8, !tbaa !152
  %1425 = load ptr, ptr %9, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.ImGuiWindow, ptr %1425, i32 0, i32 52
  %1427 = getelementptr inbounds %struct.ImRect, ptr %1426, i32 0, i32 0
  %1428 = getelementptr inbounds %struct.ImVec2, ptr %1427, i32 0, i32 0
  store float %1424, ptr %1428, align 8, !tbaa !153
  %1429 = load ptr, ptr %9, align 8, !tbaa !5
  %1430 = getelementptr inbounds %struct.ImGuiWindow, ptr %1429, i32 0, i32 3
  %1431 = getelementptr inbounds %struct.ImVec2, ptr %1430, i32 0, i32 1
  %1432 = load float, ptr %1431, align 4, !tbaa !154
  %1433 = load float, ptr %41, align 4, !tbaa !74
  %1434 = fadd float %1432, %1433
  %1435 = load ptr, ptr %9, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.ImGuiWindow, ptr %1435, i32 0, i32 52
  %1437 = getelementptr inbounds %struct.ImRect, ptr %1436, i32 0, i32 0
  %1438 = getelementptr inbounds %struct.ImVec2, ptr %1437, i32 0, i32 1
  store float %1434, ptr %1438, align 4, !tbaa !155
  %1439 = load ptr, ptr %9, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.ImGuiWindow, ptr %1439, i32 0, i32 3
  %1441 = getelementptr inbounds %struct.ImVec2, ptr %1440, i32 0, i32 0
  %1442 = load float, ptr %1441, align 8, !tbaa !152
  %1443 = load ptr, ptr %9, align 8, !tbaa !5
  %1444 = getelementptr inbounds %struct.ImGuiWindow, ptr %1443, i32 0, i32 4
  %1445 = getelementptr inbounds %struct.ImVec2, ptr %1444, i32 0, i32 0
  %1446 = load float, ptr %1445, align 8, !tbaa !121
  %1447 = fadd float %1442, %1446
  %1448 = load ptr, ptr %9, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.ImGuiWindow, ptr %1448, i32 0, i32 18
  %1450 = getelementptr inbounds %struct.ImVec2, ptr %1449, i32 0, i32 0
  %1451 = load float, ptr %1450, align 4, !tbaa !156
  %1452 = fsub float %1447, %1451
  %1453 = load ptr, ptr %9, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.ImGuiWindow, ptr %1453, i32 0, i32 52
  %1455 = getelementptr inbounds %struct.ImRect, ptr %1454, i32 0, i32 1
  %1456 = getelementptr inbounds %struct.ImVec2, ptr %1455, i32 0, i32 0
  store float %1452, ptr %1456, align 8, !tbaa !157
  %1457 = load ptr, ptr %9, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.ImGuiWindow, ptr %1457, i32 0, i32 3
  %1459 = getelementptr inbounds %struct.ImVec2, ptr %1458, i32 0, i32 1
  %1460 = load float, ptr %1459, align 4, !tbaa !154
  %1461 = load ptr, ptr %9, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.ImGuiWindow, ptr %1461, i32 0, i32 4
  %1463 = getelementptr inbounds %struct.ImVec2, ptr %1462, i32 0, i32 1
  %1464 = load float, ptr %1463, align 4, !tbaa !123
  %1465 = fadd float %1460, %1464
  %1466 = load ptr, ptr %9, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.ImGuiWindow, ptr %1466, i32 0, i32 18
  %1468 = getelementptr inbounds %struct.ImVec2, ptr %1467, i32 0, i32 1
  %1469 = load float, ptr %1468, align 4, !tbaa !158
  %1470 = fsub float %1465, %1469
  %1471 = load ptr, ptr %9, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.ImGuiWindow, ptr %1471, i32 0, i32 52
  %1473 = getelementptr inbounds %struct.ImRect, ptr %1472, i32 0, i32 1
  %1474 = getelementptr inbounds %struct.ImVec2, ptr %1473, i32 0, i32 1
  store float %1470, ptr %1474, align 4, !tbaa !159
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #13
  %1475 = load i32, ptr %6, align 4, !tbaa !9
  %1476 = and i32 %1475, 1024
  %1477 = icmp ne i32 %1476, 0
  br i1 %1477, label %1482, label %1478

1478:                                             ; preds = %1403
  %1479 = load i32, ptr %6, align 4, !tbaa !9
  %1480 = and i32 %1479, 1
  %1481 = icmp ne i32 %1480, 0
  br i1 %1481, label %1486, label %1482

1482:                                             ; preds = %1478, %1403
  %1483 = load ptr, ptr %8, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.ImGuiStyle, ptr %1483, i32 0, i32 13
  %1485 = load float, ptr %1484, align 4, !tbaa !160
  br label %1490

1486:                                             ; preds = %1478
  %1487 = load ptr, ptr %9, align 8, !tbaa !5
  %1488 = getelementptr inbounds %struct.ImGuiWindow, ptr %1487, i32 0, i32 10
  %1489 = load float, ptr %1488, align 4, !tbaa !125
  br label %1490

1490:                                             ; preds = %1486, %1482
  %1491 = phi float [ %1485, %1482 ], [ %1489, %1486 ]
  store float %1491, ptr %67, align 4, !tbaa !74
  %1492 = load ptr, ptr %9, align 8, !tbaa !5
  %1493 = getelementptr inbounds %struct.ImGuiWindow, ptr %1492, i32 0, i32 52
  %1494 = getelementptr inbounds %struct.ImRect, ptr %1493, i32 0, i32 0
  %1495 = getelementptr inbounds %struct.ImVec2, ptr %1494, i32 0, i32 0
  %1496 = load float, ptr %1495, align 8, !tbaa !153
  %1497 = fadd float 5.000000e-01, %1496
  %1498 = load ptr, ptr %9, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.ImGuiWindow, ptr %1498, i32 0, i32 8
  %1500 = getelementptr inbounds %struct.ImVec2, ptr %1499, i32 0, i32 0
  %1501 = load float, ptr %1500, align 8, !tbaa !161
  %1502 = fmul float %1501, 5.000000e-01
  %1503 = call noundef float @_ZL7ImFloorf(float noundef %1502)
  %1504 = load ptr, ptr %9, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.ImGuiWindow, ptr %1504, i32 0, i32 10
  %1506 = load float, ptr %1505, align 4, !tbaa !125
  %1507 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1503, float noundef %1506)
  %1508 = fadd float %1497, %1507
  %1509 = call noundef float @_ZL7ImFloorf(float noundef %1508)
  %1510 = load ptr, ptr %9, align 8, !tbaa !5
  %1511 = getelementptr inbounds %struct.ImGuiWindow, ptr %1510, i32 0, i32 53
  %1512 = getelementptr inbounds %struct.ImRect, ptr %1511, i32 0, i32 0
  %1513 = getelementptr inbounds %struct.ImVec2, ptr %1512, i32 0, i32 0
  store float %1509, ptr %1513, align 8, !tbaa !162
  %1514 = load ptr, ptr %9, align 8, !tbaa !5
  %1515 = getelementptr inbounds %struct.ImGuiWindow, ptr %1514, i32 0, i32 52
  %1516 = getelementptr inbounds %struct.ImRect, ptr %1515, i32 0, i32 0
  %1517 = getelementptr inbounds %struct.ImVec2, ptr %1516, i32 0, i32 1
  %1518 = load float, ptr %1517, align 4, !tbaa !155
  %1519 = fadd float 5.000000e-01, %1518
  %1520 = load float, ptr %67, align 4, !tbaa !74
  %1521 = fadd float %1519, %1520
  %1522 = call noundef float @_ZL7ImFloorf(float noundef %1521)
  %1523 = load ptr, ptr %9, align 8, !tbaa !5
  %1524 = getelementptr inbounds %struct.ImGuiWindow, ptr %1523, i32 0, i32 53
  %1525 = getelementptr inbounds %struct.ImRect, ptr %1524, i32 0, i32 0
  %1526 = getelementptr inbounds %struct.ImVec2, ptr %1525, i32 0, i32 1
  store float %1522, ptr %1526, align 4, !tbaa !163
  %1527 = load ptr, ptr %9, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.ImGuiWindow, ptr %1527, i32 0, i32 52
  %1529 = getelementptr inbounds %struct.ImRect, ptr %1528, i32 0, i32 1
  %1530 = getelementptr inbounds %struct.ImVec2, ptr %1529, i32 0, i32 0
  %1531 = load float, ptr %1530, align 8, !tbaa !157
  %1532 = fadd float 5.000000e-01, %1531
  %1533 = load ptr, ptr %9, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct.ImGuiWindow, ptr %1533, i32 0, i32 8
  %1535 = getelementptr inbounds %struct.ImVec2, ptr %1534, i32 0, i32 0
  %1536 = load float, ptr %1535, align 8, !tbaa !161
  %1537 = fmul float %1536, 5.000000e-01
  %1538 = call noundef float @_ZL7ImFloorf(float noundef %1537)
  %1539 = load ptr, ptr %9, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.ImGuiWindow, ptr %1539, i32 0, i32 10
  %1541 = load float, ptr %1540, align 4, !tbaa !125
  %1542 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1538, float noundef %1541)
  %1543 = fsub float %1532, %1542
  %1544 = call noundef float @_ZL7ImFloorf(float noundef %1543)
  %1545 = load ptr, ptr %9, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.ImGuiWindow, ptr %1545, i32 0, i32 53
  %1547 = getelementptr inbounds %struct.ImRect, ptr %1546, i32 0, i32 1
  %1548 = getelementptr inbounds %struct.ImVec2, ptr %1547, i32 0, i32 0
  store float %1544, ptr %1548, align 8, !tbaa !164
  %1549 = load ptr, ptr %9, align 8, !tbaa !5
  %1550 = getelementptr inbounds %struct.ImGuiWindow, ptr %1549, i32 0, i32 52
  %1551 = getelementptr inbounds %struct.ImRect, ptr %1550, i32 0, i32 1
  %1552 = getelementptr inbounds %struct.ImVec2, ptr %1551, i32 0, i32 1
  %1553 = load float, ptr %1552, align 4, !tbaa !159
  %1554 = fadd float 5.000000e-01, %1553
  %1555 = load ptr, ptr %9, align 8, !tbaa !5
  %1556 = getelementptr inbounds %struct.ImGuiWindow, ptr %1555, i32 0, i32 10
  %1557 = load float, ptr %1556, align 4, !tbaa !125
  %1558 = fsub float %1554, %1557
  %1559 = call noundef float @_ZL7ImFloorf(float noundef %1558)
  %1560 = load ptr, ptr %9, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.ImGuiWindow, ptr %1560, i32 0, i32 53
  %1562 = getelementptr inbounds %struct.ImRect, ptr %1561, i32 0, i32 1
  %1563 = getelementptr inbounds %struct.ImVec2, ptr %1562, i32 0, i32 1
  store float %1559, ptr %1563, align 4, !tbaa !165
  %1564 = load ptr, ptr %9, align 8, !tbaa !5
  %1565 = getelementptr inbounds %struct.ImGuiWindow, ptr %1564, i32 0, i32 53
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1565, ptr noundef nonnull align 4 dereferenceable(16) %64)
  %1566 = load ptr, ptr %9, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.ImGuiWindow, ptr %1566, i32 0, i32 4
  %1568 = getelementptr inbounds %struct.ImVec2, ptr %1567, i32 0, i32 0
  %1569 = load float, ptr %1568, align 8, !tbaa !121
  %1570 = fcmp ogt float %1569, 0.000000e+00
  br i1 %1570, label %1571, label %1588

1571:                                             ; preds = %1490
  %1572 = load i32, ptr %6, align 4, !tbaa !9
  %1573 = and i32 %1572, 33554432
  %1574 = icmp ne i32 %1573, 0
  br i1 %1574, label %1588, label %1575

1575:                                             ; preds = %1571
  %1576 = load i32, ptr %6, align 4, !tbaa !9
  %1577 = and i32 %1576, 64
  %1578 = icmp ne i32 %1577, 0
  br i1 %1578, label %1588, label %1579

1579:                                             ; preds = %1575
  %1580 = load ptr, ptr %9, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.ImGuiWindow, ptr %1580, i32 0, i32 4
  %1582 = getelementptr inbounds %struct.ImVec2, ptr %1581, i32 0, i32 0
  %1583 = load float, ptr %1582, align 8, !tbaa !121
  %1584 = fmul float %1583, 0x3FE4CCCCC0000000
  %1585 = call noundef float @_ZL7ImFloorf(float noundef %1584)
  %1586 = load ptr, ptr %9, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.ImGuiWindow, ptr %1586, i32 0, i32 59
  store float %1585, ptr %1587, align 8, !tbaa !166
  br label %1596

1588:                                             ; preds = %1575, %1571, %1490
  %1589 = load ptr, ptr %7, align 8, !tbaa !5
  %1590 = getelementptr inbounds %struct.ImGuiContext, ptr %1589, i32 0, i32 7
  %1591 = load float, ptr %1590, align 8, !tbaa !147
  %1592 = fmul float %1591, 1.600000e+01
  %1593 = call noundef float @_ZL7ImFloorf(float noundef %1592)
  %1594 = load ptr, ptr %9, align 8, !tbaa !5
  %1595 = getelementptr inbounds %struct.ImGuiWindow, ptr %1594, i32 0, i32 59
  store float %1593, ptr %1595, align 8, !tbaa !166
  br label %1596

1596:                                             ; preds = %1588, %1579
  %1597 = load ptr, ptr %9, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.ImGuiWindow, ptr %1597, i32 0, i32 6
  %1599 = getelementptr inbounds %struct.ImVec2, ptr %1598, i32 0, i32 0
  %1600 = load float, ptr %1599, align 8, !tbaa !167
  %1601 = load ptr, ptr %9, align 8, !tbaa !5
  %1602 = getelementptr inbounds %struct.ImGuiWindow, ptr %1601, i32 0, i32 8
  %1603 = getelementptr inbounds %struct.ImVec2, ptr %1602, i32 0, i32 0
  %1604 = load float, ptr %1603, align 8, !tbaa !161
  %1605 = call float @llvm.fmuladd.f32(float %1604, float 2.000000e+00, float %1600)
  %1606 = load ptr, ptr %9, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct.ImGuiWindow, ptr %1606, i32 0, i32 52
  %1608 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1607)
  %1609 = fsub float %1605, %1608
  %1610 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1609)
  %1611 = load ptr, ptr %9, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.ImGuiWindow, ptr %1611, i32 0, i32 15
  %1613 = getelementptr inbounds %struct.ImVec2, ptr %1612, i32 0, i32 0
  store float %1610, ptr %1613, align 4, !tbaa !168
  %1614 = load ptr, ptr %9, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.ImGuiWindow, ptr %1614, i32 0, i32 6
  %1616 = getelementptr inbounds %struct.ImVec2, ptr %1615, i32 0, i32 1
  %1617 = load float, ptr %1616, align 4, !tbaa !169
  %1618 = load ptr, ptr %9, align 8, !tbaa !5
  %1619 = getelementptr inbounds %struct.ImGuiWindow, ptr %1618, i32 0, i32 8
  %1620 = getelementptr inbounds %struct.ImVec2, ptr %1619, i32 0, i32 1
  %1621 = load float, ptr %1620, align 4, !tbaa !170
  %1622 = call float @llvm.fmuladd.f32(float %1621, float 2.000000e+00, float %1617)
  %1623 = load ptr, ptr %9, align 8, !tbaa !5
  %1624 = getelementptr inbounds %struct.ImGuiWindow, ptr %1623, i32 0, i32 52
  %1625 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1624)
  %1626 = fsub float %1622, %1625
  %1627 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1626)
  %1628 = load ptr, ptr %9, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.ImGuiWindow, ptr %1628, i32 0, i32 15
  %1630 = getelementptr inbounds %struct.ImVec2, ptr %1629, i32 0, i32 1
  store float %1627, ptr %1630, align 4, !tbaa !171
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #13
  %1631 = load ptr, ptr %9, align 8, !tbaa !5
  %1632 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef %1631, i1 noundef zeroext true)
  store <2 x float> %1632, ptr %68, align 4
  %1633 = load ptr, ptr %9, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.ImGuiWindow, ptr %1633, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1634, ptr align 4 %68, i64 8, i1 false), !tbaa.struct !73
  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)
  %1635 = load ptr, ptr %9, align 8, !tbaa !5
  %1636 = getelementptr inbounds %struct.ImGuiWindow, ptr %1635, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1636, ptr align 4 %69, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #13
  %1637 = load ptr, ptr %9, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.ImGuiWindow, ptr %1637, i32 0, i32 65
  %1639 = load ptr, ptr %1638, align 8, !tbaa !172
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168) %1639)
  %1640 = load ptr, ptr %9, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.ImGuiWindow, ptr %1640, i32 0, i32 65
  %1642 = load ptr, ptr %1641, align 8, !tbaa !172
  %1643 = load ptr, ptr %7, align 8, !tbaa !5
  %1644 = getelementptr inbounds %struct.ImGuiContext, ptr %1643, i32 0, i32 6
  %1645 = load ptr, ptr %1644, align 8, !tbaa !173
  %1646 = getelementptr inbounds %struct.ImFont, ptr %1645, i32 0, i32 7
  %1647 = load ptr, ptr %1646, align 8, !tbaa !174
  %1648 = getelementptr inbounds %struct.ImFontAtlas, ptr %1647, i32 0, i32 3
  %1649 = load ptr, ptr %1648, align 8, !tbaa !175
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %1642, ptr noundef %1649)
  %1650 = getelementptr inbounds %struct.ImRect, ptr %64, i32 0, i32 0
  %1651 = getelementptr inbounds %struct.ImRect, ptr %64, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1650, ptr noundef nonnull align 4 dereferenceable(8) %1651, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #13
  %1652 = load i32, ptr %6, align 4, !tbaa !9
  %1653 = and i32 %1652, 134217728
  %1654 = icmp ne i32 %1653, 0
  br i1 %1654, label %1655, label %1664

1655:                                             ; preds = %1596
  %1656 = load ptr, ptr %9, align 8, !tbaa !5
  %1657 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  %1658 = icmp eq ptr %1656, %1657
  br i1 %1658, label %1659, label %1664

1659:                                             ; preds = %1655
  %1660 = load ptr, ptr %9, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.ImGuiWindow, ptr %1660, i32 0, i32 43
  %1662 = load i32, ptr %1661, align 8, !tbaa !86
  %1663 = icmp sle i32 %1662, 0
  br label %1664

1664:                                             ; preds = %1659, %1655, %1596
  %1665 = phi i1 [ false, %1655 ], [ false, %1596 ], [ %1663, %1659 ]
  %1666 = zext i1 %1665 to i8
  store i8 %1666, ptr %70, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #13
  %1667 = load ptr, ptr %7, align 8, !tbaa !5
  %1668 = getelementptr inbounds %struct.ImGuiContext, ptr %1667, i32 0, i32 109
  %1669 = load ptr, ptr %1668, align 8, !tbaa !179
  %1670 = icmp ne ptr %1669, null
  br i1 %1670, label %1671, label %1679

1671:                                             ; preds = %1664
  %1672 = load ptr, ptr %9, align 8, !tbaa !5
  %1673 = load ptr, ptr %7, align 8, !tbaa !5
  %1674 = getelementptr inbounds %struct.ImGuiContext, ptr %1673, i32 0, i32 109
  %1675 = load ptr, ptr %1674, align 8, !tbaa !179
  %1676 = getelementptr inbounds %struct.ImGuiWindow, ptr %1675, i32 0, i32 68
  %1677 = load ptr, ptr %1676, align 8, !tbaa !180
  %1678 = icmp eq ptr %1672, %1677
  br label %1679

1679:                                             ; preds = %1671, %1664
  %1680 = phi i1 [ false, %1664 ], [ %1678, %1671 ]
  %1681 = zext i1 %1680 to i8
  store i8 %1681, ptr %71, align 1, !tbaa !71
  %1682 = load i8, ptr %70, align 1, !tbaa !71, !range !67, !noundef !68
  %1683 = trunc i8 %1682 to i1
  br i1 %1683, label %1687, label %1684

1684:                                             ; preds = %1679
  %1685 = load i8, ptr %71, align 1, !tbaa !71, !range !67, !noundef !68
  %1686 = trunc i8 %1685 to i1
  br i1 %1686, label %1687, label %1702

1687:                                             ; preds = %1684, %1679
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #13
  %1688 = load i8, ptr %70, align 1, !tbaa !71, !range !67, !noundef !68
  %1689 = trunc i8 %1688 to i1
  %1690 = zext i1 %1689 to i64
  %1691 = select i1 %1689, i32 47, i32 46
  %1692 = load ptr, ptr %7, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.ImGuiContext, ptr %1692, i32 0, i32 125
  %1694 = load float, ptr %1693, align 8, !tbaa !181
  %1695 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1691, float noundef %1694)
  store i32 %1695, ptr %72, align 4, !tbaa !9
  %1696 = load ptr, ptr %9, align 8, !tbaa !5
  %1697 = getelementptr inbounds %struct.ImGuiWindow, ptr %1696, i32 0, i32 65
  %1698 = load ptr, ptr %1697, align 8, !tbaa !172
  %1699 = getelementptr inbounds %struct.ImRect, ptr %48, i32 0, i32 0
  %1700 = getelementptr inbounds %struct.ImRect, ptr %48, i32 0, i32 1
  %1701 = load i32, ptr %72, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1698, ptr noundef nonnull align 4 dereferenceable(8) %1699, ptr noundef nonnull align 4 dereferenceable(8) %1700, i32 noundef %1701, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #13
  br label %1702

1702:                                             ; preds = %1687, %1684
  %1703 = load i8, ptr %71, align 1, !tbaa !71, !range !67, !noundef !68
  %1704 = trunc i8 %1703 to i1
  br i1 %1704, label %1705, label %1738

1705:                                             ; preds = %1702
  %1706 = load ptr, ptr %9, align 8, !tbaa !5
  %1707 = load ptr, ptr %7, align 8, !tbaa !5
  %1708 = getelementptr inbounds %struct.ImGuiContext, ptr %1707, i32 0, i32 109
  %1709 = load ptr, ptr %1708, align 8, !tbaa !179
  %1710 = icmp eq ptr %1706, %1709
  br i1 %1710, label %1711, label %1738

1711:                                             ; preds = %1705
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #13
  %1712 = load ptr, ptr %9, align 8, !tbaa !5
  %1713 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %1712)
  %1714 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 0
  %1715 = extractvalue { <2 x float>, <2 x float> } %1713, 0
  store <2 x float> %1715, ptr %1714, align 4
  %1716 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 1
  %1717 = extractvalue { <2 x float>, <2 x float> } %1713, 1
  store <2 x float> %1717, ptr %1716, align 4
  %1718 = load ptr, ptr %7, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.ImGuiContext, ptr %1718, i32 0, i32 7
  %1720 = load float, ptr %1719, align 8, !tbaa !147
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %73, float noundef %1720)
  %1721 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %73, ptr noundef nonnull align 4 dereferenceable(16) %48)
  br i1 %1721, label %1737, label %1722

1722:                                             ; preds = %1711
  %1723 = load ptr, ptr %9, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.ImGuiWindow, ptr %1723, i32 0, i32 65
  %1725 = load ptr, ptr %1724, align 8, !tbaa !172
  %1726 = getelementptr inbounds %struct.ImRect, ptr %73, i32 0, i32 0
  %1727 = getelementptr inbounds %struct.ImRect, ptr %73, i32 0, i32 1
  %1728 = load ptr, ptr %7, align 8, !tbaa !5
  %1729 = getelementptr inbounds %struct.ImGuiContext, ptr %1728, i32 0, i32 112
  %1730 = load float, ptr %1729, align 4, !tbaa !182
  %1731 = fmul float %1730, 2.500000e-01
  %1732 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %1731)
  %1733 = load ptr, ptr %7, align 8, !tbaa !5
  %1734 = getelementptr inbounds %struct.ImGuiContext, ptr %1733, i32 0, i32 4
  %1735 = getelementptr inbounds %struct.ImGuiStyle, ptr %1734, i32 0, i32 2
  %1736 = load float, ptr %1735, align 4, !tbaa !183
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1725, ptr noundef nonnull align 4 dereferenceable(8) %1726, ptr noundef nonnull align 4 dereferenceable(8) %1727, i32 noundef %1732, float noundef %1736, i32 noundef 15)
  br label %1737

1737:                                             ; preds = %1722, %1711
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #13
  br label %1738

1738:                                             ; preds = %1737, %1705, %1702
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #13
  store i8 0, ptr %74, align 1, !tbaa !71
  %1739 = load i32, ptr %6, align 4, !tbaa !9
  %1740 = and i32 %1739, 16777216
  %1741 = icmp ne i32 %1740, 0
  br i1 %1741, label %1742, label %1768

1742:                                             ; preds = %1738
  %1743 = load i32, ptr %6, align 4, !tbaa !9
  %1744 = and i32 %1743, 67108864
  %1745 = icmp ne i32 %1744, 0
  br i1 %1745, label %1768, label %1746

1746:                                             ; preds = %1742
  %1747 = load i8, ptr %25, align 1, !tbaa !71, !range !67, !noundef !68
  %1748 = trunc i8 %1747 to i1
  br i1 %1748, label %1768, label %1749

1749:                                             ; preds = %1746
  %1750 = load ptr, ptr %9, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.ImGuiWindow, ptr %1750, i32 0, i32 65
  %1752 = load ptr, ptr %1751, align 8, !tbaa !172
  %1753 = getelementptr inbounds %struct.ImDrawList, ptr %1752, i32 0, i32 0
  %1754 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1753)
  %1755 = getelementptr inbounds %struct.ImDrawCmd, ptr %1754, i32 0, i32 0
  %1756 = load i32, ptr %1755, align 8, !tbaa !184
  %1757 = icmp eq i32 %1756, 0
  br i1 %1757, label %1758, label %1767

1758:                                             ; preds = %1749
  %1759 = load ptr, ptr %19, align 8, !tbaa !5
  %1760 = getelementptr inbounds %struct.ImGuiWindow, ptr %1759, i32 0, i32 65
  %1761 = load ptr, ptr %1760, align 8, !tbaa !172
  %1762 = getelementptr inbounds %struct.ImDrawList, ptr %1761, i32 0, i32 2
  %1763 = getelementptr inbounds %struct.ImVector.10, ptr %1762, i32 0, i32 0
  %1764 = load i32, ptr %1763, align 8, !tbaa !186
  %1765 = icmp sgt i32 %1764, 0
  br i1 %1765, label %1766, label %1767

1766:                                             ; preds = %1758
  store i8 1, ptr %74, align 1, !tbaa !71
  br label %1767

1767:                                             ; preds = %1766, %1758, %1749
  br label %1768

1768:                                             ; preds = %1767, %1746, %1742, %1738
  %1769 = load i8, ptr %74, align 1, !tbaa !71, !range !67, !noundef !68
  %1770 = trunc i8 %1769 to i1
  br i1 %1770, label %1771, label %1777

1771:                                             ; preds = %1768
  %1772 = load ptr, ptr %19, align 8, !tbaa !5
  %1773 = getelementptr inbounds %struct.ImGuiWindow, ptr %1772, i32 0, i32 65
  %1774 = load ptr, ptr %1773, align 8, !tbaa !172
  %1775 = load ptr, ptr %9, align 8, !tbaa !5
  %1776 = getelementptr inbounds %struct.ImGuiWindow, ptr %1775, i32 0, i32 65
  store ptr %1774, ptr %1776, align 8, !tbaa !172
  br label %1777

1777:                                             ; preds = %1771, %1768
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  %1778 = load ptr, ptr %7, align 8, !tbaa !5
  %1779 = getelementptr inbounds %struct.ImGuiContext, ptr %1778, i32 0, i32 108
  %1780 = load ptr, ptr %1779, align 8, !tbaa !187
  %1781 = icmp ne ptr %1780, null
  br i1 %1781, label %1782, label %1786

1782:                                             ; preds = %1777
  %1783 = load ptr, ptr %7, align 8, !tbaa !5
  %1784 = getelementptr inbounds %struct.ImGuiContext, ptr %1783, i32 0, i32 108
  %1785 = load ptr, ptr %1784, align 8, !tbaa !187
  br label %1790

1786:                                             ; preds = %1777
  %1787 = load ptr, ptr %7, align 8, !tbaa !5
  %1788 = getelementptr inbounds %struct.ImGuiContext, ptr %1787, i32 0, i32 70
  %1789 = load ptr, ptr %1788, align 8, !tbaa !188
  br label %1790

1790:                                             ; preds = %1786, %1782
  %1791 = phi ptr [ %1785, %1782 ], [ %1789, %1786 ]
  store ptr %1791, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #13
  %1792 = load i8, ptr %51, align 1, !tbaa !71, !range !67, !noundef !68
  %1793 = trunc i8 %1792 to i1
  br i1 %1793, label %1807, label %1794

1794:                                             ; preds = %1790
  %1795 = load ptr, ptr %75, align 8, !tbaa !5
  %1796 = icmp ne ptr %1795, null
  br i1 %1796, label %1797, label %1805

1797:                                             ; preds = %1794
  %1798 = load ptr, ptr %9, align 8, !tbaa !5
  %1799 = getelementptr inbounds %struct.ImGuiWindow, ptr %1798, i32 0, i32 69
  %1800 = load ptr, ptr %1799, align 8, !tbaa !189
  %1801 = load ptr, ptr %75, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.ImGuiWindow, ptr %1801, i32 0, i32 69
  %1803 = load ptr, ptr %1802, align 8, !tbaa !189
  %1804 = icmp eq ptr %1800, %1803
  br label %1805

1805:                                             ; preds = %1797, %1794
  %1806 = phi i1 [ false, %1794 ], [ %1804, %1797 ]
  br label %1807

1807:                                             ; preds = %1805, %1790
  %1808 = phi i1 [ true, %1790 ], [ %1806, %1805 ]
  %1809 = zext i1 %1808 to i8
  store i8 %1809, ptr %76, align 1, !tbaa !71
  %1810 = load ptr, ptr %9, align 8, !tbaa !5
  %1811 = load i8, ptr %76, align 1, !tbaa !71, !range !67, !noundef !68
  %1812 = trunc i8 %1811 to i1
  %1813 = load i32, ptr %54, align 4, !tbaa !9
  %1814 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 0
  %1815 = load float, ptr %55, align 4, !tbaa !74
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef %1810, ptr noundef nonnull align 4 dereferenceable(16) %66, i1 noundef zeroext %1812, i32 noundef %1813, ptr noundef %1814, float noundef %1815)
  %1816 = load i8, ptr %74, align 1, !tbaa !71, !range !67, !noundef !68
  %1817 = trunc i8 %1816 to i1
  br i1 %1817, label %1818, label %1823

1818:                                             ; preds = %1807
  %1819 = load ptr, ptr %9, align 8, !tbaa !5
  %1820 = getelementptr inbounds %struct.ImGuiWindow, ptr %1819, i32 0, i32 66
  %1821 = load ptr, ptr %9, align 8, !tbaa !5
  %1822 = getelementptr inbounds %struct.ImGuiWindow, ptr %1821, i32 0, i32 65
  store ptr %1820, ptr %1822, align 8, !tbaa !172
  br label %1823

1823:                                             ; preds = %1818, %1807
  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
  %1824 = load ptr, ptr %7, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.ImGuiContext, ptr %1824, i32 0, i32 109
  %1826 = load ptr, ptr %1825, align 8, !tbaa !179
  %1827 = load ptr, ptr %9, align 8, !tbaa !5
  %1828 = icmp eq ptr %1826, %1827
  br i1 %1828, label %1829, label %1868

1829:                                             ; preds = %1823
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #13
  %1830 = load ptr, ptr %9, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct.ImGuiWindow, ptr %1830, i32 0, i32 9
  %1832 = load float, ptr %1831, align 8, !tbaa !145
  %1833 = load ptr, ptr %7, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.ImGuiContext, ptr %1833, i32 0, i32 4
  %1835 = getelementptr inbounds %struct.ImGuiStyle, ptr %1834, i32 0, i32 2
  %1836 = load float, ptr %1835, align 4, !tbaa !183
  %1837 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1832, float noundef %1836)
  store float %1837, ptr %77, align 4, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #13
  %1838 = load ptr, ptr %9, align 8, !tbaa !5
  %1839 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %1838)
  %1840 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %78, i32 0, i32 0
  %1841 = extractvalue { <2 x float>, <2 x float> } %1839, 0
  store <2 x float> %1841, ptr %1840, align 4
  %1842 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %78, i32 0, i32 1
  %1843 = extractvalue { <2 x float>, <2 x float> } %1839, 1
  store <2 x float> %1843, ptr %1842, align 4
  %1844 = load ptr, ptr %7, align 8, !tbaa !5
  %1845 = getelementptr inbounds %struct.ImGuiContext, ptr %1844, i32 0, i32 7
  %1846 = load float, ptr %1845, align 8, !tbaa !147
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %78, float noundef %1846)
  %1847 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %78, ptr noundef nonnull align 4 dereferenceable(16) %48)
  br i1 %1847, label %1848, label %1857

1848:                                             ; preds = %1829
  %1849 = load ptr, ptr %7, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.ImGuiContext, ptr %1849, i32 0, i32 7
  %1851 = load float, ptr %1850, align 8, !tbaa !147
  %1852 = fneg float %1851
  %1853 = fsub float %1852, 1.000000e+00
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %78, float noundef %1853)
  %1854 = load ptr, ptr %9, align 8, !tbaa !5
  %1855 = getelementptr inbounds %struct.ImGuiWindow, ptr %1854, i32 0, i32 9
  %1856 = load float, ptr %1855, align 8, !tbaa !145
  store float %1856, ptr %77, align 4, !tbaa !74
  br label %1857

1857:                                             ; preds = %1848, %1829
  %1858 = load ptr, ptr %9, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.ImGuiWindow, ptr %1858, i32 0, i32 65
  %1860 = load ptr, ptr %1859, align 8, !tbaa !172
  %1861 = getelementptr inbounds %struct.ImRect, ptr %78, i32 0, i32 0
  %1862 = getelementptr inbounds %struct.ImRect, ptr %78, i32 0, i32 1
  %1863 = load ptr, ptr %7, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.ImGuiContext, ptr %1863, i32 0, i32 112
  %1865 = load float, ptr %1864, align 4, !tbaa !182
  %1866 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %1865)
  %1867 = load float, ptr %77, align 4, !tbaa !74
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %1860, ptr noundef nonnull align 4 dereferenceable(8) %1861, ptr noundef nonnull align 4 dereferenceable(8) %1862, i32 noundef %1866, float noundef %1867, 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 %1868

1868:                                             ; preds = %1857, %1823
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #13
  %1869 = load i32, ptr %6, align 4, !tbaa !9
  %1870 = and i32 %1869, 8
  %1871 = icmp ne i32 %1870, 0
  br i1 %1871, label %1876, label %1872

1872:                                             ; preds = %1868
  %1873 = load i32, ptr %6, align 4, !tbaa !9
  %1874 = and i32 %1873, 2048
  %1875 = icmp ne i32 %1874, 0
  br label %1876

1876:                                             ; preds = %1872, %1868
  %1877 = phi i1 [ false, %1868 ], [ %1875, %1872 ]
  %1878 = zext i1 %1877 to i8
  store i8 %1878, ptr %79, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #13
  %1879 = load i32, ptr %6, align 4, !tbaa !9
  %1880 = and i32 %1879, 8
  %1881 = icmp ne i32 %1880, 0
  %1882 = xor i1 %1881, true
  %1883 = zext i1 %1882 to i8
  store i8 %1883, ptr %80, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #13
  %1884 = load ptr, ptr %9, align 8, !tbaa !5
  %1885 = getelementptr inbounds %struct.ImGuiWindow, ptr %1884, i32 0, i32 7
  %1886 = getelementptr inbounds %struct.ImVec2, ptr %1885, i32 0, i32 0
  %1887 = load float, ptr %1886, align 8, !tbaa !190
  %1888 = fcmp une float %1887, 0.000000e+00
  br i1 %1888, label %1889, label %1894

1889:                                             ; preds = %1876
  %1890 = load ptr, ptr %9, align 8, !tbaa !5
  %1891 = getelementptr inbounds %struct.ImGuiWindow, ptr %1890, i32 0, i32 7
  %1892 = getelementptr inbounds %struct.ImVec2, ptr %1891, i32 0, i32 0
  %1893 = load float, ptr %1892, align 8, !tbaa !190
  br label %1921

1894:                                             ; preds = %1876
  %1895 = load i8, ptr %79, align 1, !tbaa !71, !range !67, !noundef !68
  %1896 = trunc i8 %1895 to i1
  br i1 %1896, label %1897, label %1902

1897:                                             ; preds = %1894
  %1898 = load ptr, ptr %9, align 8, !tbaa !5
  %1899 = getelementptr inbounds %struct.ImGuiWindow, ptr %1898, i32 0, i32 6
  %1900 = getelementptr inbounds %struct.ImVec2, ptr %1899, i32 0, i32 0
  %1901 = load float, ptr %1900, align 8, !tbaa !167
  br label %1903

1902:                                             ; preds = %1894
  br label %1903

1903:                                             ; preds = %1902, %1897
  %1904 = phi float [ %1901, %1897 ], [ 0.000000e+00, %1902 ]
  %1905 = load ptr, ptr %9, align 8, !tbaa !5
  %1906 = getelementptr inbounds %struct.ImGuiWindow, ptr %1905, i32 0, i32 4
  %1907 = getelementptr inbounds %struct.ImVec2, ptr %1906, i32 0, i32 0
  %1908 = load float, ptr %1907, align 8, !tbaa !121
  %1909 = load ptr, ptr %9, align 8, !tbaa !5
  %1910 = getelementptr inbounds %struct.ImGuiWindow, ptr %1909, i32 0, i32 8
  %1911 = getelementptr inbounds %struct.ImVec2, ptr %1910, i32 0, i32 0
  %1912 = load float, ptr %1911, align 8, !tbaa !161
  %1913 = fneg float %1912
  %1914 = call float @llvm.fmuladd.f32(float %1913, float 2.000000e+00, float %1908)
  %1915 = load ptr, ptr %9, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.ImGuiWindow, ptr %1915, i32 0, i32 18
  %1917 = getelementptr inbounds %struct.ImVec2, ptr %1916, i32 0, i32 0
  %1918 = load float, ptr %1917, align 4, !tbaa !156
  %1919 = fsub float %1914, %1918
  %1920 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1904, float noundef %1919)
  br label %1921

1921:                                             ; preds = %1903, %1889
  %1922 = phi float [ %1893, %1889 ], [ %1920, %1903 ]
  store float %1922, ptr %81, align 4, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #13
  %1923 = load ptr, ptr %9, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.ImGuiWindow, ptr %1923, i32 0, i32 7
  %1925 = getelementptr inbounds %struct.ImVec2, ptr %1924, i32 0, i32 1
  %1926 = load float, ptr %1925, align 4, !tbaa !191
  %1927 = fcmp une float %1926, 0.000000e+00
  br i1 %1927, label %1928, label %1933

1928:                                             ; preds = %1921
  %1929 = load ptr, ptr %9, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.ImGuiWindow, ptr %1929, i32 0, i32 7
  %1931 = getelementptr inbounds %struct.ImVec2, ptr %1930, i32 0, i32 1
  %1932 = load float, ptr %1931, align 4, !tbaa !191
  br label %1962

1933:                                             ; preds = %1921
  %1934 = load i8, ptr %80, align 1, !tbaa !71, !range !67, !noundef !68
  %1935 = trunc i8 %1934 to i1
  br i1 %1935, label %1936, label %1941

1936:                                             ; preds = %1933
  %1937 = load ptr, ptr %9, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.ImGuiWindow, ptr %1937, i32 0, i32 6
  %1939 = getelementptr inbounds %struct.ImVec2, ptr %1938, i32 0, i32 1
  %1940 = load float, ptr %1939, align 4, !tbaa !169
  br label %1942

1941:                                             ; preds = %1933
  br label %1942

1942:                                             ; preds = %1941, %1936
  %1943 = phi float [ %1940, %1936 ], [ 0.000000e+00, %1941 ]
  %1944 = load ptr, ptr %9, align 8, !tbaa !5
  %1945 = getelementptr inbounds %struct.ImGuiWindow, ptr %1944, i32 0, i32 4
  %1946 = getelementptr inbounds %struct.ImVec2, ptr %1945, i32 0, i32 1
  %1947 = load float, ptr %1946, align 4, !tbaa !123
  %1948 = load ptr, ptr %9, align 8, !tbaa !5
  %1949 = getelementptr inbounds %struct.ImGuiWindow, ptr %1948, i32 0, i32 8
  %1950 = getelementptr inbounds %struct.ImVec2, ptr %1949, i32 0, i32 1
  %1951 = load float, ptr %1950, align 4, !tbaa !170
  %1952 = fneg float %1951
  %1953 = call float @llvm.fmuladd.f32(float %1952, float 2.000000e+00, float %1947)
  %1954 = load float, ptr %41, align 4, !tbaa !74
  %1955 = fsub float %1953, %1954
  %1956 = load ptr, ptr %9, align 8, !tbaa !5
  %1957 = getelementptr inbounds %struct.ImGuiWindow, ptr %1956, i32 0, i32 18
  %1958 = getelementptr inbounds %struct.ImVec2, ptr %1957, i32 0, i32 1
  %1959 = load float, ptr %1958, align 4, !tbaa !158
  %1960 = fsub float %1955, %1959
  %1961 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1943, float noundef %1960)
  br label %1962

1962:                                             ; preds = %1942, %1928
  %1963 = phi float [ %1932, %1928 ], [ %1961, %1942 ]
  store float %1963, ptr %82, align 4, !tbaa !74
  %1964 = load ptr, ptr %9, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct.ImGuiWindow, ptr %1964, i32 0, i32 52
  %1966 = getelementptr inbounds %struct.ImRect, ptr %1965, i32 0, i32 0
  %1967 = getelementptr inbounds %struct.ImVec2, ptr %1966, i32 0, i32 0
  %1968 = load float, ptr %1967, align 8, !tbaa !153
  %1969 = load ptr, ptr %9, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.ImGuiWindow, ptr %1969, i32 0, i32 14
  %1971 = getelementptr inbounds %struct.ImVec2, ptr %1970, i32 0, i32 0
  %1972 = load float, ptr %1971, align 4, !tbaa !192
  %1973 = fsub float %1968, %1972
  %1974 = load ptr, ptr %9, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.ImGuiWindow, ptr %1974, i32 0, i32 8
  %1976 = getelementptr inbounds %struct.ImVec2, ptr %1975, i32 0, i32 0
  %1977 = load float, ptr %1976, align 8, !tbaa !161
  %1978 = load ptr, ptr %9, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.ImGuiWindow, ptr %1978, i32 0, i32 10
  %1980 = load float, ptr %1979, align 4, !tbaa !125
  %1981 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1977, float noundef %1980)
  %1982 = fadd float %1973, %1981
  %1983 = call noundef float @_ZL7ImFloorf(float noundef %1982)
  %1984 = load ptr, ptr %9, align 8, !tbaa !5
  %1985 = getelementptr inbounds %struct.ImGuiWindow, ptr %1984, i32 0, i32 54
  %1986 = getelementptr inbounds %struct.ImRect, ptr %1985, i32 0, i32 0
  %1987 = getelementptr inbounds %struct.ImVec2, ptr %1986, i32 0, i32 0
  store float %1983, ptr %1987, align 8, !tbaa !193
  %1988 = load ptr, ptr %9, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.ImGuiWindow, ptr %1988, i32 0, i32 52
  %1990 = getelementptr inbounds %struct.ImRect, ptr %1989, i32 0, i32 0
  %1991 = getelementptr inbounds %struct.ImVec2, ptr %1990, i32 0, i32 1
  %1992 = load float, ptr %1991, align 4, !tbaa !155
  %1993 = load ptr, ptr %9, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.ImGuiWindow, ptr %1993, i32 0, i32 14
  %1995 = getelementptr inbounds %struct.ImVec2, ptr %1994, i32 0, i32 1
  %1996 = load float, ptr %1995, align 4, !tbaa !194
  %1997 = fsub float %1992, %1996
  %1998 = load ptr, ptr %9, align 8, !tbaa !5
  %1999 = getelementptr inbounds %struct.ImGuiWindow, ptr %1998, i32 0, i32 8
  %2000 = getelementptr inbounds %struct.ImVec2, ptr %1999, i32 0, i32 1
  %2001 = load float, ptr %2000, align 4, !tbaa !170
  %2002 = load ptr, ptr %9, align 8, !tbaa !5
  %2003 = getelementptr inbounds %struct.ImGuiWindow, ptr %2002, i32 0, i32 10
  %2004 = load float, ptr %2003, align 4, !tbaa !125
  %2005 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2001, float noundef %2004)
  %2006 = fadd float %1997, %2005
  %2007 = call noundef float @_ZL7ImFloorf(float noundef %2006)
  %2008 = load ptr, ptr %9, align 8, !tbaa !5
  %2009 = getelementptr inbounds %struct.ImGuiWindow, ptr %2008, i32 0, i32 54
  %2010 = getelementptr inbounds %struct.ImRect, ptr %2009, i32 0, i32 0
  %2011 = getelementptr inbounds %struct.ImVec2, ptr %2010, i32 0, i32 1
  store float %2007, ptr %2011, align 4, !tbaa !195
  %2012 = load ptr, ptr %9, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.ImGuiWindow, ptr %2012, i32 0, i32 54
  %2014 = getelementptr inbounds %struct.ImRect, ptr %2013, i32 0, i32 0
  %2015 = getelementptr inbounds %struct.ImVec2, ptr %2014, i32 0, i32 0
  %2016 = load float, ptr %2015, align 8, !tbaa !193
  %2017 = load float, ptr %81, align 4, !tbaa !74
  %2018 = fadd float %2016, %2017
  %2019 = load ptr, ptr %9, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.ImGuiWindow, ptr %2019, i32 0, i32 54
  %2021 = getelementptr inbounds %struct.ImRect, ptr %2020, i32 0, i32 1
  %2022 = getelementptr inbounds %struct.ImVec2, ptr %2021, i32 0, i32 0
  store float %2018, ptr %2022, align 8, !tbaa !196
  %2023 = load ptr, ptr %9, align 8, !tbaa !5
  %2024 = getelementptr inbounds %struct.ImGuiWindow, ptr %2023, i32 0, i32 54
  %2025 = getelementptr inbounds %struct.ImRect, ptr %2024, i32 0, i32 0
  %2026 = getelementptr inbounds %struct.ImVec2, ptr %2025, i32 0, i32 1
  %2027 = load float, ptr %2026, align 4, !tbaa !195
  %2028 = load float, ptr %82, align 4, !tbaa !74
  %2029 = fadd float %2027, %2028
  %2030 = load ptr, ptr %9, align 8, !tbaa !5
  %2031 = getelementptr inbounds %struct.ImGuiWindow, ptr %2030, i32 0, i32 54
  %2032 = getelementptr inbounds %struct.ImRect, ptr %2031, i32 0, i32 1
  %2033 = getelementptr inbounds %struct.ImVec2, ptr %2032, i32 0, i32 1
  store float %2029, ptr %2033, align 4, !tbaa !197
  %2034 = load ptr, ptr %9, align 8, !tbaa !5
  %2035 = getelementptr inbounds %struct.ImGuiWindow, ptr %2034, i32 0, i32 3
  %2036 = getelementptr inbounds %struct.ImVec2, ptr %2035, i32 0, i32 0
  %2037 = load float, ptr %2036, align 8, !tbaa !152
  %2038 = load ptr, ptr %9, align 8, !tbaa !5
  %2039 = getelementptr inbounds %struct.ImGuiWindow, ptr %2038, i32 0, i32 14
  %2040 = getelementptr inbounds %struct.ImVec2, ptr %2039, i32 0, i32 0
  %2041 = load float, ptr %2040, align 4, !tbaa !192
  %2042 = fsub float %2037, %2041
  %2043 = load ptr, ptr %9, align 8, !tbaa !5
  %2044 = getelementptr inbounds %struct.ImGuiWindow, ptr %2043, i32 0, i32 8
  %2045 = getelementptr inbounds %struct.ImVec2, ptr %2044, i32 0, i32 0
  %2046 = load float, ptr %2045, align 8, !tbaa !161
  %2047 = fadd float %2042, %2046
  %2048 = load ptr, ptr %9, align 8, !tbaa !5
  %2049 = getelementptr inbounds %struct.ImGuiWindow, ptr %2048, i32 0, i32 56
  %2050 = getelementptr inbounds %struct.ImRect, ptr %2049, i32 0, i32 0
  %2051 = getelementptr inbounds %struct.ImVec2, ptr %2050, i32 0, i32 0
  store float %2047, ptr %2051, align 8, !tbaa !198
  %2052 = load ptr, ptr %9, align 8, !tbaa !5
  %2053 = getelementptr inbounds %struct.ImGuiWindow, ptr %2052, i32 0, i32 3
  %2054 = getelementptr inbounds %struct.ImVec2, ptr %2053, i32 0, i32 1
  %2055 = load float, ptr %2054, align 4, !tbaa !154
  %2056 = load ptr, ptr %9, align 8, !tbaa !5
  %2057 = getelementptr inbounds %struct.ImGuiWindow, ptr %2056, i32 0, i32 14
  %2058 = getelementptr inbounds %struct.ImVec2, ptr %2057, i32 0, i32 1
  %2059 = load float, ptr %2058, align 4, !tbaa !194
  %2060 = fsub float %2055, %2059
  %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 !170
  %2065 = fadd float %2060, %2064
  %2066 = load float, ptr %41, align 4, !tbaa !74
  %2067 = fadd float %2065, %2066
  %2068 = load ptr, ptr %9, align 8, !tbaa !5
  %2069 = getelementptr inbounds %struct.ImGuiWindow, ptr %2068, i32 0, i32 56
  %2070 = getelementptr inbounds %struct.ImRect, ptr %2069, i32 0, i32 0
  %2071 = getelementptr inbounds %struct.ImVec2, ptr %2070, i32 0, i32 1
  store float %2067, ptr %2071, align 4, !tbaa !199
  %2072 = load ptr, ptr %9, align 8, !tbaa !5
  %2073 = getelementptr inbounds %struct.ImGuiWindow, ptr %2072, i32 0, i32 56
  %2074 = getelementptr inbounds %struct.ImRect, ptr %2073, i32 0, i32 0
  %2075 = getelementptr inbounds %struct.ImVec2, ptr %2074, i32 0, i32 0
  %2076 = load float, ptr %2075, align 8, !tbaa !198
  %2077 = load ptr, ptr %9, align 8, !tbaa !5
  %2078 = getelementptr inbounds %struct.ImGuiWindow, ptr %2077, i32 0, i32 7
  %2079 = getelementptr inbounds %struct.ImVec2, ptr %2078, i32 0, i32 0
  %2080 = load float, ptr %2079, align 8, !tbaa !190
  %2081 = fcmp une float %2080, 0.000000e+00
  br i1 %2081, label %2082, label %2087

2082:                                             ; preds = %1962
  %2083 = load ptr, ptr %9, align 8, !tbaa !5
  %2084 = getelementptr inbounds %struct.ImGuiWindow, ptr %2083, i32 0, i32 7
  %2085 = getelementptr inbounds %struct.ImVec2, ptr %2084, i32 0, i32 0
  %2086 = load float, ptr %2085, align 8, !tbaa !190
  br label %2103

2087:                                             ; preds = %1962
  %2088 = load ptr, ptr %9, align 8, !tbaa !5
  %2089 = getelementptr inbounds %struct.ImGuiWindow, ptr %2088, i32 0, i32 4
  %2090 = getelementptr inbounds %struct.ImVec2, ptr %2089, i32 0, i32 0
  %2091 = load float, ptr %2090, align 8, !tbaa !121
  %2092 = load ptr, ptr %9, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.ImGuiWindow, ptr %2092, i32 0, i32 8
  %2094 = getelementptr inbounds %struct.ImVec2, ptr %2093, i32 0, i32 0
  %2095 = load float, ptr %2094, align 8, !tbaa !161
  %2096 = fneg float %2095
  %2097 = call float @llvm.fmuladd.f32(float %2096, float 2.000000e+00, float %2091)
  %2098 = load ptr, ptr %9, align 8, !tbaa !5
  %2099 = getelementptr inbounds %struct.ImGuiWindow, ptr %2098, i32 0, i32 18
  %2100 = getelementptr inbounds %struct.ImVec2, ptr %2099, i32 0, i32 0
  %2101 = load float, ptr %2100, align 4, !tbaa !156
  %2102 = fsub float %2097, %2101
  br label %2103

2103:                                             ; preds = %2087, %2082
  %2104 = phi float [ %2086, %2082 ], [ %2102, %2087 ]
  %2105 = fadd float %2076, %2104
  %2106 = load ptr, ptr %9, align 8, !tbaa !5
  %2107 = getelementptr inbounds %struct.ImGuiWindow, ptr %2106, i32 0, i32 56
  %2108 = getelementptr inbounds %struct.ImRect, ptr %2107, i32 0, i32 1
  %2109 = getelementptr inbounds %struct.ImVec2, ptr %2108, i32 0, i32 0
  store float %2105, ptr %2109, align 8, !tbaa !200
  %2110 = load ptr, ptr %9, align 8, !tbaa !5
  %2111 = getelementptr inbounds %struct.ImGuiWindow, ptr %2110, i32 0, i32 56
  %2112 = getelementptr inbounds %struct.ImRect, ptr %2111, i32 0, i32 0
  %2113 = getelementptr inbounds %struct.ImVec2, ptr %2112, i32 0, i32 1
  %2114 = load float, ptr %2113, align 4, !tbaa !199
  %2115 = load ptr, ptr %9, align 8, !tbaa !5
  %2116 = getelementptr inbounds %struct.ImGuiWindow, ptr %2115, i32 0, i32 7
  %2117 = getelementptr inbounds %struct.ImVec2, ptr %2116, i32 0, i32 1
  %2118 = load float, ptr %2117, align 4, !tbaa !191
  %2119 = fcmp une float %2118, 0.000000e+00
  br i1 %2119, label %2120, label %2125

2120:                                             ; preds = %2103
  %2121 = load ptr, ptr %9, align 8, !tbaa !5
  %2122 = getelementptr inbounds %struct.ImGuiWindow, ptr %2121, i32 0, i32 7
  %2123 = getelementptr inbounds %struct.ImVec2, ptr %2122, i32 0, i32 1
  %2124 = load float, ptr %2123, align 4, !tbaa !191
  br label %2143

2125:                                             ; preds = %2103
  %2126 = load ptr, ptr %9, align 8, !tbaa !5
  %2127 = getelementptr inbounds %struct.ImGuiWindow, ptr %2126, i32 0, i32 4
  %2128 = getelementptr inbounds %struct.ImVec2, ptr %2127, i32 0, i32 1
  %2129 = load float, ptr %2128, align 4, !tbaa !123
  %2130 = load ptr, ptr %9, align 8, !tbaa !5
  %2131 = getelementptr inbounds %struct.ImGuiWindow, ptr %2130, i32 0, i32 8
  %2132 = getelementptr inbounds %struct.ImVec2, ptr %2131, i32 0, i32 1
  %2133 = load float, ptr %2132, align 4, !tbaa !170
  %2134 = fneg float %2133
  %2135 = call float @llvm.fmuladd.f32(float %2134, float 2.000000e+00, float %2129)
  %2136 = load float, ptr %41, align 4, !tbaa !74
  %2137 = fsub float %2135, %2136
  %2138 = load ptr, ptr %9, align 8, !tbaa !5
  %2139 = getelementptr inbounds %struct.ImGuiWindow, ptr %2138, i32 0, i32 18
  %2140 = getelementptr inbounds %struct.ImVec2, ptr %2139, i32 0, i32 1
  %2141 = load float, ptr %2140, align 4, !tbaa !158
  %2142 = fsub float %2137, %2141
  br label %2143

2143:                                             ; preds = %2125, %2120
  %2144 = phi float [ %2124, %2120 ], [ %2142, %2125 ]
  %2145 = fadd float %2114, %2144
  %2146 = load ptr, ptr %9, align 8, !tbaa !5
  %2147 = getelementptr inbounds %struct.ImGuiWindow, ptr %2146, i32 0, i32 56
  %2148 = getelementptr inbounds %struct.ImRect, ptr %2147, i32 0, i32 1
  %2149 = getelementptr inbounds %struct.ImVec2, ptr %2148, i32 0, i32 1
  store float %2145, ptr %2149, align 4, !tbaa !201
  %2150 = load ptr, ptr %9, align 8, !tbaa !5
  %2151 = getelementptr inbounds %struct.ImGuiWindow, ptr %2150, i32 0, i32 8
  %2152 = getelementptr inbounds %struct.ImVec2, ptr %2151, i32 0, i32 0
  %2153 = load float, ptr %2152, align 8, !tbaa !161
  %2154 = fadd float 0.000000e+00, %2153
  %2155 = load ptr, ptr %9, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.ImGuiWindow, ptr %2155, i32 0, i32 14
  %2157 = getelementptr inbounds %struct.ImVec2, ptr %2156, i32 0, i32 0
  %2158 = load float, ptr %2157, align 4, !tbaa !192
  %2159 = fsub float %2154, %2158
  %2160 = load ptr, ptr %9, align 8, !tbaa !5
  %2161 = getelementptr inbounds %struct.ImGuiWindow, ptr %2160, i32 0, i32 50
  %2162 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2161, i32 0, i32 8
  %2163 = getelementptr inbounds %struct.ImVec1, ptr %2162, i32 0, i32 0
  store float %2159, ptr %2163, align 8, !tbaa !202
  %2164 = load ptr, ptr %9, align 8, !tbaa !5
  %2165 = getelementptr inbounds %struct.ImGuiWindow, ptr %2164, i32 0, i32 50
  %2166 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2165, i32 0, i32 10
  %2167 = getelementptr inbounds %struct.ImVec1, ptr %2166, i32 0, i32 0
  store float 0.000000e+00, ptr %2167, align 8, !tbaa !203
  %2168 = load ptr, ptr %9, align 8, !tbaa !5
  %2169 = getelementptr inbounds %struct.ImGuiWindow, ptr %2168, i32 0, i32 50
  %2170 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2169, i32 0, i32 9
  %2171 = getelementptr inbounds %struct.ImVec1, ptr %2170, i32 0, i32 0
  store float 0.000000e+00, ptr %2171, align 4, !tbaa !204
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #13
  %2172 = load ptr, ptr %9, align 8, !tbaa !5
  %2173 = getelementptr inbounds %struct.ImGuiWindow, ptr %2172, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #13
  %2174 = load ptr, ptr %9, align 8, !tbaa !5
  %2175 = getelementptr inbounds %struct.ImGuiWindow, ptr %2174, i32 0, i32 50
  %2176 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2175, i32 0, i32 8
  %2177 = getelementptr inbounds %struct.ImVec1, ptr %2176, i32 0, i32 0
  %2178 = load float, ptr %2177, align 8, !tbaa !202
  %2179 = load ptr, ptr %9, align 8, !tbaa !5
  %2180 = getelementptr inbounds %struct.ImGuiWindow, ptr %2179, i32 0, i32 50
  %2181 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2180, i32 0, i32 9
  %2182 = getelementptr inbounds %struct.ImVec1, ptr %2181, i32 0, i32 0
  %2183 = load float, ptr %2182, align 4, !tbaa !204
  %2184 = fadd float %2178, %2183
  %2185 = load float, ptr %41, align 4, !tbaa !74
  %2186 = load ptr, ptr %9, align 8, !tbaa !5
  %2187 = getelementptr inbounds %struct.ImGuiWindow, ptr %2186, i32 0, i32 8
  %2188 = getelementptr inbounds %struct.ImVec2, ptr %2187, i32 0, i32 1
  %2189 = load float, ptr %2188, align 4, !tbaa !170
  %2190 = fadd float %2185, %2189
  %2191 = load ptr, ptr %9, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiWindow, ptr %2191, i32 0, i32 14
  %2193 = getelementptr inbounds %struct.ImVec2, ptr %2192, i32 0, i32 1
  %2194 = load float, ptr %2193, align 4, !tbaa !194
  %2195 = fsub float %2190, %2194
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %84, float noundef %2184, float noundef %2195)
  %2196 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2173, ptr noundef nonnull align 4 dereferenceable(8) %84)
  store <2 x float> %2196, ptr %83, align 4
  %2197 = load ptr, ptr %9, align 8, !tbaa !5
  %2198 = getelementptr inbounds %struct.ImGuiWindow, ptr %2197, i32 0, i32 50
  %2199 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2198, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2199, ptr align 4 %83, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #13
  %2200 = load ptr, ptr %9, align 8, !tbaa !5
  %2201 = getelementptr inbounds %struct.ImGuiWindow, ptr %2200, i32 0, i32 50
  %2202 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2201, i32 0, i32 2
  %2203 = load ptr, ptr %9, align 8, !tbaa !5
  %2204 = getelementptr inbounds %struct.ImGuiWindow, ptr %2203, i32 0, i32 50
  %2205 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2204, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2205, ptr align 8 %2202, i64 8, i1 false), !tbaa.struct !73
  %2206 = load ptr, ptr %9, align 8, !tbaa !5
  %2207 = getelementptr inbounds %struct.ImGuiWindow, ptr %2206, i32 0, i32 50
  %2208 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2207, i32 0, i32 0
  %2209 = load ptr, ptr %9, align 8, !tbaa !5
  %2210 = getelementptr inbounds %struct.ImGuiWindow, ptr %2209, i32 0, i32 50
  %2211 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2210, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2211, ptr align 8 %2208, i64 8, i1 false), !tbaa.struct !73
  %2212 = load ptr, ptr %9, align 8, !tbaa !5
  %2213 = getelementptr inbounds %struct.ImGuiWindow, ptr %2212, i32 0, i32 50
  %2214 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2213, i32 0, i32 2
  %2215 = load ptr, ptr %9, align 8, !tbaa !5
  %2216 = getelementptr inbounds %struct.ImGuiWindow, ptr %2215, i32 0, i32 50
  %2217 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2216, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2217, ptr align 8 %2214, i64 8, i1 false), !tbaa.struct !73
  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)
  %2218 = load ptr, ptr %9, align 8, !tbaa !5
  %2219 = getelementptr inbounds %struct.ImGuiWindow, ptr %2218, i32 0, i32 50
  %2220 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2219, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2220, ptr align 4 %85, i64 8, i1 false), !tbaa.struct !73
  %2221 = load ptr, ptr %9, align 8, !tbaa !5
  %2222 = getelementptr inbounds %struct.ImGuiWindow, ptr %2221, i32 0, i32 50
  %2223 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2222, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2223, ptr align 4 %2220, i64 8, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #13
  %2224 = load ptr, ptr %9, align 8, !tbaa !5
  %2225 = getelementptr inbounds %struct.ImGuiWindow, ptr %2224, i32 0, i32 50
  %2226 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2225, i32 0, i32 7
  store float 0.000000e+00, ptr %2226, align 4, !tbaa !205
  %2227 = load ptr, ptr %9, align 8, !tbaa !5
  %2228 = getelementptr inbounds %struct.ImGuiWindow, ptr %2227, i32 0, i32 50
  %2229 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2228, i32 0, i32 6
  store float 0.000000e+00, ptr %2229, align 8, !tbaa !206
  %2230 = load ptr, ptr %9, align 8, !tbaa !5
  %2231 = getelementptr inbounds %struct.ImGuiWindow, ptr %2230, i32 0, i32 50
  %2232 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2231, i32 0, i32 15
  store i32 0, ptr %2232, align 4, !tbaa !207
  %2233 = load ptr, ptr %9, align 8, !tbaa !5
  %2234 = getelementptr inbounds %struct.ImGuiWindow, ptr %2233, i32 0, i32 50
  %2235 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2234, i32 0, i32 16
  store i32 1, ptr %2235, align 8, !tbaa !208
  %2236 = load ptr, ptr %9, align 8, !tbaa !5
  %2237 = getelementptr inbounds %struct.ImGuiWindow, ptr %2236, i32 0, i32 50
  %2238 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2237, i32 0, i32 18
  %2239 = load i32, ptr %2238, align 8, !tbaa !209
  %2240 = load ptr, ptr %9, align 8, !tbaa !5
  %2241 = getelementptr inbounds %struct.ImGuiWindow, ptr %2240, i32 0, i32 50
  %2242 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2241, i32 0, i32 17
  store i32 %2239, ptr %2242, align 4, !tbaa !210
  %2243 = load ptr, ptr %9, align 8, !tbaa !5
  %2244 = getelementptr inbounds %struct.ImGuiWindow, ptr %2243, i32 0, i32 50
  %2245 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2244, i32 0, i32 18
  store i32 0, ptr %2245, align 8, !tbaa !209
  %2246 = load ptr, ptr %9, align 8, !tbaa !5
  %2247 = getelementptr inbounds %struct.ImGuiWindow, ptr %2246, i32 0, i32 50
  %2248 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2247, i32 0, i32 19
  store i32 0, ptr %2248, align 4, !tbaa !211
  %2249 = load ptr, ptr %9, align 8, !tbaa !5
  %2250 = getelementptr inbounds %struct.ImGuiWindow, ptr %2249, i32 0, i32 50
  %2251 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2250, i32 0, i32 20
  store i8 0, ptr %2251, align 8, !tbaa !212
  %2252 = load ptr, ptr %9, align 8, !tbaa !5
  %2253 = getelementptr inbounds %struct.ImGuiWindow, ptr %2252, i32 0, i32 15
  %2254 = getelementptr inbounds %struct.ImVec2, ptr %2253, i32 0, i32 1
  %2255 = load float, ptr %2254, align 4, !tbaa !171
  %2256 = fcmp ogt float %2255, 0.000000e+00
  %2257 = load ptr, ptr %9, align 8, !tbaa !5
  %2258 = getelementptr inbounds %struct.ImGuiWindow, ptr %2257, i32 0, i32 50
  %2259 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2258, i32 0, i32 21
  %2260 = zext i1 %2256 to i8
  store i8 %2260, ptr %2259, align 1, !tbaa !213
  %2261 = load ptr, ptr %9, align 8, !tbaa !5
  %2262 = getelementptr inbounds %struct.ImGuiWindow, ptr %2261, i32 0, i32 50
  %2263 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2262, i32 0, i32 22
  store i8 0, ptr %2263, align 2, !tbaa !214
  %2264 = load ptr, ptr %9, align 8, !tbaa !5
  %2265 = getelementptr inbounds %struct.ImGuiWindow, ptr %2264, i32 0, i32 8
  %2266 = getelementptr inbounds %struct.ImVec2, ptr %2265, i32 0, i32 0
  %2267 = load float, ptr %2266, align 8, !tbaa !161
  %2268 = load ptr, ptr %8, align 8, !tbaa !5
  %2269 = getelementptr inbounds %struct.ImGuiStyle, ptr %2268, i32 0, i32 14
  %2270 = getelementptr inbounds %struct.ImVec2, ptr %2269, i32 0, i32 0
  %2271 = load float, ptr %2270, align 4, !tbaa !215
  %2272 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2267, float noundef %2271)
  %2273 = load ptr, ptr %7, align 8, !tbaa !5
  %2274 = getelementptr inbounds %struct.ImGuiContext, ptr %2273, i32 0, i32 62
  %2275 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %2274, i32 0, i32 15
  %2276 = getelementptr inbounds %struct.ImVec2, ptr %2275, i32 0, i32 0
  %2277 = load float, ptr %2276, align 4, !tbaa !216
  %2278 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2272, float noundef %2277)
  %2279 = load ptr, ptr %9, align 8, !tbaa !5
  %2280 = getelementptr inbounds %struct.ImGuiWindow, ptr %2279, i32 0, i32 50
  %2281 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2280, i32 0, i32 24
  %2282 = getelementptr inbounds %struct.ImVec2, ptr %2281, i32 0, i32 0
  store float %2278, ptr %2282, align 4, !tbaa !217
  %2283 = load ptr, ptr %7, align 8, !tbaa !5
  %2284 = getelementptr inbounds %struct.ImGuiContext, ptr %2283, i32 0, i32 62
  %2285 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %2284, i32 0, i32 15
  %2286 = getelementptr inbounds %struct.ImVec2, ptr %2285, i32 0, i32 1
  %2287 = load float, ptr %2286, align 4, !tbaa !218
  %2288 = load ptr, ptr %9, align 8, !tbaa !5
  %2289 = getelementptr inbounds %struct.ImGuiWindow, ptr %2288, i32 0, i32 50
  %2290 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2289, i32 0, i32 24
  %2291 = getelementptr inbounds %struct.ImVec2, ptr %2290, i32 0, i32 1
  store float %2287, ptr %2291, align 4, !tbaa !219
  %2292 = load ptr, ptr %9, align 8, !tbaa !5
  %2293 = getelementptr inbounds %struct.ImGuiWindow, ptr %2292, i32 0, i32 50
  %2294 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2293, i32 0, i32 25
  %2295 = load ptr, ptr %8, align 8, !tbaa !5
  %2296 = getelementptr inbounds %struct.ImGuiStyle, ptr %2295, i32 0, i32 14
  %2297 = getelementptr inbounds %struct.ImVec2, ptr %2296, i32 0, i32 0
  %2298 = load float, ptr %2297, align 4, !tbaa !215
  %2299 = load i8, ptr %15, align 1, !tbaa !71, !range !67, !noundef !68
  %2300 = trunc i8 %2299 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36) %2294, i32 noundef 3, float noundef %2298, i1 noundef zeroext %2300)
  %2301 = load ptr, ptr %9, align 8, !tbaa !5
  %2302 = getelementptr inbounds %struct.ImGuiWindow, ptr %2301, i32 0, i32 50
  %2303 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2302, i32 0, i32 26
  store i32 0, ptr %2303, align 8, !tbaa !220
  %2304 = load ptr, ptr %9, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.ImGuiWindow, ptr %2304, i32 0, i32 50
  %2306 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2305, i32 0, i32 27
  store i32 0, ptr %2306, align 4, !tbaa !221
  %2307 = load ptr, ptr %9, align 8, !tbaa !5
  %2308 = getelementptr inbounds %struct.ImGuiWindow, ptr %2307, i32 0, i32 50
  %2309 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2308, i32 0, i32 28
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2309, i32 noundef 0)
  %2310 = load ptr, ptr %9, align 8, !tbaa !5
  %2311 = getelementptr inbounds %struct.ImGuiWindow, ptr %2310, i32 0, i32 61
  %2312 = load ptr, ptr %9, align 8, !tbaa !5
  %2313 = getelementptr inbounds %struct.ImGuiWindow, ptr %2312, i32 0, i32 50
  %2314 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2313, i32 0, i32 29
  store ptr %2311, ptr %2314, align 8, !tbaa !222
  %2315 = load ptr, ptr %9, align 8, !tbaa !5
  %2316 = getelementptr inbounds %struct.ImGuiWindow, ptr %2315, i32 0, i32 50
  %2317 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2316, i32 0, i32 30
  store ptr null, ptr %2317, align 8, !tbaa !223
  %2318 = load ptr, ptr %9, align 8, !tbaa !5
  %2319 = getelementptr inbounds %struct.ImGuiWindow, ptr %2318, i32 0, i32 50
  %2320 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2319, i32 0, i32 31
  store i32 1, ptr %2320, align 8, !tbaa !224
  %2321 = load ptr, ptr %19, align 8, !tbaa !5
  %2322 = icmp ne ptr %2321, null
  br i1 %2322, label %2323, label %2328

2323:                                             ; preds = %2143
  %2324 = load ptr, ptr %19, align 8, !tbaa !5
  %2325 = getelementptr inbounds %struct.ImGuiWindow, ptr %2324, i32 0, i32 50
  %2326 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2325, i32 0, i32 31
  %2327 = load i32, ptr %2326, align 8, !tbaa !224
  br label %2329

2328:                                             ; preds = %2143
  br label %2329

2329:                                             ; preds = %2328, %2323
  %2330 = phi i32 [ %2327, %2323 ], [ 1, %2328 ]
  %2331 = load ptr, ptr %9, align 8, !tbaa !5
  %2332 = getelementptr inbounds %struct.ImGuiWindow, ptr %2331, i32 0, i32 50
  %2333 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2332, i32 0, i32 32
  store i32 %2330, ptr %2333, align 4, !tbaa !225
  %2334 = load ptr, ptr %9, align 8, !tbaa !5
  %2335 = getelementptr inbounds %struct.ImGuiWindow, ptr %2334, i32 0, i32 50
  %2336 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2335, i32 0, i32 34
  store i32 -1, ptr %2336, align 4, !tbaa !226
  %2337 = load ptr, ptr %9, align 8, !tbaa !5
  %2338 = getelementptr inbounds %struct.ImGuiWindow, ptr %2337, i32 0, i32 50
  %2339 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2338, i32 0, i32 33
  store i32 -1, ptr %2339, align 8, !tbaa !227
  %2340 = load ptr, ptr %9, align 8, !tbaa !5
  %2341 = getelementptr inbounds %struct.ImGuiWindow, ptr %2340, i32 0, i32 59
  %2342 = load float, ptr %2341, align 8, !tbaa !166
  %2343 = load ptr, ptr %9, align 8, !tbaa !5
  %2344 = getelementptr inbounds %struct.ImGuiWindow, ptr %2343, i32 0, i32 50
  %2345 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2344, i32 0, i32 36
  store float %2342, ptr %2345, align 4, !tbaa !228
  %2346 = load ptr, ptr %9, align 8, !tbaa !5
  %2347 = getelementptr inbounds %struct.ImGuiWindow, ptr %2346, i32 0, i32 50
  %2348 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2347, i32 0, i32 37
  store float -1.000000e+00, ptr %2348, align 8, !tbaa !229
  %2349 = load ptr, ptr %9, align 8, !tbaa !5
  %2350 = getelementptr inbounds %struct.ImGuiWindow, ptr %2349, i32 0, i32 50
  %2351 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2350, i32 0, i32 39
  call void @_ZN8ImVectorIiE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2351, i32 noundef 0)
  %2352 = load ptr, ptr %9, align 8, !tbaa !5
  %2353 = getelementptr inbounds %struct.ImGuiWindow, ptr %2352, i32 0, i32 50
  %2354 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2353, i32 0, i32 40
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2354, i32 noundef 0)
  %2355 = load ptr, ptr %9, align 8, !tbaa !5
  %2356 = getelementptr inbounds %struct.ImGuiWindow, ptr %2355, i32 0, i32 50
  %2357 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2356, i32 0, i32 41
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2357, i32 noundef 0)
  %2358 = load ptr, ptr %9, align 8, !tbaa !5
  %2359 = getelementptr inbounds %struct.ImGuiWindow, ptr %2358, i32 0, i32 50
  %2360 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2359, i32 0, i32 42
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2360, i32 noundef 0)
  %2361 = load ptr, ptr %19, align 8, !tbaa !5
  %2362 = icmp ne ptr %2361, null
  br i1 %2362, label %2363, label %2368

2363:                                             ; preds = %2329
  %2364 = load ptr, ptr %19, align 8, !tbaa !5
  %2365 = getelementptr inbounds %struct.ImGuiWindow, ptr %2364, i32 0, i32 50
  %2366 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2365, i32 0, i32 35
  %2367 = load i32, ptr %2366, align 8, !tbaa !230
  br label %2369

2368:                                             ; preds = %2329
  br label %2369

2369:                                             ; preds = %2368, %2363
  %2370 = phi i32 [ %2367, %2363 ], [ 0, %2368 ]
  %2371 = load ptr, ptr %9, align 8, !tbaa !5
  %2372 = getelementptr inbounds %struct.ImGuiWindow, ptr %2371, i32 0, i32 50
  %2373 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2372, i32 0, i32 35
  store i32 %2370, ptr %2373, align 8, !tbaa !230
  %2374 = load ptr, ptr %19, align 8, !tbaa !5
  %2375 = icmp ne ptr %2374, null
  br i1 %2375, label %2376, label %2383

2376:                                             ; preds = %2369
  %2377 = load ptr, ptr %9, align 8, !tbaa !5
  %2378 = getelementptr inbounds %struct.ImGuiWindow, ptr %2377, i32 0, i32 50
  %2379 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2378, i32 0, i32 39
  %2380 = load ptr, ptr %9, align 8, !tbaa !5
  %2381 = getelementptr inbounds %struct.ImGuiWindow, ptr %2380, i32 0, i32 50
  %2382 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2381, i32 0, i32 35
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %2379, ptr noundef nonnull align 4 dereferenceable(4) %2382)
  br label %2383

2383:                                             ; preds = %2376, %2369
  %2384 = load ptr, ptr %9, align 8, !tbaa !5
  %2385 = getelementptr inbounds %struct.ImGuiWindow, ptr %2384, i32 0, i32 37
  %2386 = load i8, ptr %2385, align 4, !tbaa !136
  %2387 = sext i8 %2386 to i32
  %2388 = icmp sgt i32 %2387, 0
  br i1 %2388, label %2389, label %2394

2389:                                             ; preds = %2383
  %2390 = load ptr, ptr %9, align 8, !tbaa !5
  %2391 = getelementptr inbounds %struct.ImGuiWindow, ptr %2390, i32 0, i32 37
  %2392 = load i8, ptr %2391, align 4, !tbaa !136
  %2393 = add i8 %2392, -1
  store i8 %2393, ptr %2391, align 4, !tbaa !136
  br label %2394

2394:                                             ; preds = %2389, %2383
  %2395 = load ptr, ptr %9, align 8, !tbaa !5
  %2396 = getelementptr inbounds %struct.ImGuiWindow, ptr %2395, i32 0, i32 38
  %2397 = load i8, ptr %2396, align 1, !tbaa !137
  %2398 = sext i8 %2397 to i32
  %2399 = icmp sgt i32 %2398, 0
  br i1 %2399, label %2400, label %2405

2400:                                             ; preds = %2394
  %2401 = load ptr, ptr %9, align 8, !tbaa !5
  %2402 = getelementptr inbounds %struct.ImGuiWindow, ptr %2401, i32 0, i32 38
  %2403 = load i8, ptr %2402, align 1, !tbaa !137
  %2404 = add i8 %2403, -1
  store i8 %2404, ptr %2402, align 1, !tbaa !137
  br label %2405

2405:                                             ; preds = %2400, %2394
  %2406 = load i8, ptr %51, align 1, !tbaa !71, !range !67, !noundef !68
  %2407 = trunc i8 %2406 to i1
  br i1 %2407, label %2408, label %2411

2408:                                             ; preds = %2405
  %2409 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %2409)
  %2410 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %2410, i1 noundef zeroext false)
  br label %2411

2411:                                             ; preds = %2408, %2405
  %2412 = load i32, ptr %6, align 4, !tbaa !9
  %2413 = and i32 %2412, 1
  %2414 = icmp ne i32 %2413, 0
  br i1 %2414, label %2419, label %2415

2415:                                             ; preds = %2411
  %2416 = load ptr, ptr %9, align 8, !tbaa !5
  %2417 = load ptr, ptr %4, align 8, !tbaa !5
  %2418 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %2416, ptr noundef nonnull align 4 dereferenceable(16) %66, ptr noundef %2417, ptr noundef %2418)
  br label %2419

2419:                                             ; preds = %2415, %2411
  %2420 = load ptr, ptr %9, align 8, !tbaa !5
  %2421 = getelementptr inbounds %struct.ImGuiWindow, ptr %2420, i32 0, i32 12
  %2422 = load i32, ptr %2421, align 4, !tbaa !231
  %2423 = load ptr, ptr %9, align 8, !tbaa !5
  %2424 = getelementptr inbounds %struct.ImGuiWindow, ptr %2423, i32 0, i32 50
  %2425 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2424, i32 0, i32 11
  store i32 %2422, ptr %2425, align 4, !tbaa !232
  %2426 = getelementptr inbounds %struct.ImRect, ptr %66, i32 0, i32 0
  %2427 = getelementptr inbounds %struct.ImRect, ptr %66, i32 0, i32 1
  %2428 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2426, ptr noundef nonnull align 4 dereferenceable(8) %2427, i1 noundef zeroext false)
  %2429 = zext i1 %2428 to i64
  %2430 = select i1 %2428, i32 1, i32 0
  %2431 = load ptr, ptr %9, align 8, !tbaa !5
  %2432 = getelementptr inbounds %struct.ImGuiWindow, ptr %2431, i32 0, i32 50
  %2433 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2432, i32 0, i32 12
  store i32 %2430, ptr %2433, align 8, !tbaa !233
  %2434 = load ptr, ptr %9, align 8, !tbaa !5
  %2435 = getelementptr inbounds %struct.ImGuiWindow, ptr %2434, i32 0, i32 50
  %2436 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2435, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2436, ptr align 4 %66, i64 16, i1 false), !tbaa.struct !112
  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 %48) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #13
  br label %2439

2437:                                             ; preds = %543
  %2438 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %2438)
  br label %2439

2439:                                             ; preds = %2437, %2419
  %2440 = load ptr, ptr %9, align 8, !tbaa !5
  %2441 = getelementptr inbounds %struct.ImGuiWindow, ptr %2440, i32 0, i32 53
  %2442 = getelementptr inbounds %struct.ImRect, ptr %2441, i32 0, i32 0
  %2443 = load ptr, ptr %9, align 8, !tbaa !5
  %2444 = getelementptr inbounds %struct.ImGuiWindow, ptr %2443, i32 0, i32 53
  %2445 = getelementptr inbounds %struct.ImRect, ptr %2444, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2442, ptr noundef nonnull align 4 dereferenceable(8) %2445, i1 noundef zeroext true)
  %2446 = load i8, ptr %14, align 1, !tbaa !71, !range !67, !noundef !68
  %2447 = trunc i8 %2446 to i1
  br i1 %2447, label %2448, label %2451

2448:                                             ; preds = %2439
  %2449 = load ptr, ptr %9, align 8, !tbaa !5
  %2450 = getelementptr inbounds %struct.ImGuiWindow, ptr %2449, i32 0, i32 23
  store i8 0, ptr %2450, align 8, !tbaa !234
  br label %2451

2451:                                             ; preds = %2448, %2439
  %2452 = load ptr, ptr %9, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.ImGuiWindow, ptr %2452, i32 0, i32 33
  %2454 = load i16, ptr %2453, align 2, !tbaa !235
  %2455 = add i16 %2454, 1
  store i16 %2455, ptr %2453, align 2, !tbaa !235
  %2456 = load ptr, ptr %7, align 8, !tbaa !5
  %2457 = getelementptr inbounds %struct.ImGuiContext, ptr %2456, i32 0, i32 62
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(100) %2457)
  %2458 = load i32, ptr %6, align 4, !tbaa !9
  %2459 = and i32 %2458, 16777216
  %2460 = icmp ne i32 %2459, 0
  br i1 %2460, label %2461, label %2545

2461:                                             ; preds = %2451
  %2462 = load i32, ptr %6, align 4, !tbaa !9
  %2463 = and i32 %2462, 1
  %2464 = icmp ne i32 %2463, 0
  br i1 %2464, label %2465, label %2466

2465:                                             ; preds = %2461
  br label %2468

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

2467:                                             ; No predecessors!
  br label %2468

2468:                                             ; preds = %2467, %2465
  %2469 = load i32, ptr %6, align 4, !tbaa !9
  %2470 = and i32 %2469, 64
  %2471 = icmp ne i32 %2470, 0
  br i1 %2471, label %2512, label %2472

2472:                                             ; preds = %2468
  %2473 = load ptr, ptr %9, align 8, !tbaa !5
  %2474 = getelementptr inbounds %struct.ImGuiWindow, ptr %2473, i32 0, i32 37
  %2475 = load i8, ptr %2474, align 4, !tbaa !136
  %2476 = sext i8 %2475 to i32
  %2477 = icmp sle i32 %2476, 0
  br i1 %2477, label %2478, label %2512

2478:                                             ; preds = %2472
  %2479 = load ptr, ptr %9, align 8, !tbaa !5
  %2480 = getelementptr inbounds %struct.ImGuiWindow, ptr %2479, i32 0, i32 38
  %2481 = load i8, ptr %2480, align 1, !tbaa !137
  %2482 = sext i8 %2481 to i32
  %2483 = icmp sle i32 %2482, 0
  br i1 %2483, label %2484, label %2512

2484:                                             ; preds = %2478
  %2485 = load ptr, ptr %9, align 8, !tbaa !5
  %2486 = getelementptr inbounds %struct.ImGuiWindow, ptr %2485, i32 0, i32 51
  %2487 = getelementptr inbounds %struct.ImRect, ptr %2486, i32 0, i32 0
  %2488 = getelementptr inbounds %struct.ImVec2, ptr %2487, i32 0, i32 0
  %2489 = load float, ptr %2488, align 8, !tbaa !236
  %2490 = load ptr, ptr %9, align 8, !tbaa !5
  %2491 = getelementptr inbounds %struct.ImGuiWindow, ptr %2490, i32 0, i32 51
  %2492 = getelementptr inbounds %struct.ImRect, ptr %2491, i32 0, i32 1
  %2493 = getelementptr inbounds %struct.ImVec2, ptr %2492, i32 0, i32 0
  %2494 = load float, ptr %2493, align 8, !tbaa !237
  %2495 = fcmp oge float %2489, %2494
  br i1 %2495, label %2508, label %2496

2496:                                             ; preds = %2484
  %2497 = load ptr, ptr %9, align 8, !tbaa !5
  %2498 = getelementptr inbounds %struct.ImGuiWindow, ptr %2497, i32 0, i32 51
  %2499 = getelementptr inbounds %struct.ImRect, ptr %2498, i32 0, i32 0
  %2500 = getelementptr inbounds %struct.ImVec2, ptr %2499, i32 0, i32 1
  %2501 = load float, ptr %2500, align 4, !tbaa !238
  %2502 = load ptr, ptr %9, align 8, !tbaa !5
  %2503 = getelementptr inbounds %struct.ImGuiWindow, ptr %2502, i32 0, i32 51
  %2504 = getelementptr inbounds %struct.ImRect, ptr %2503, i32 0, i32 1
  %2505 = getelementptr inbounds %struct.ImVec2, ptr %2504, i32 0, i32 1
  %2506 = load float, ptr %2505, align 4, !tbaa !239
  %2507 = fcmp oge float %2501, %2506
  br i1 %2507, label %2508, label %2511

2508:                                             ; preds = %2496, %2484
  %2509 = load ptr, ptr %9, align 8, !tbaa !5
  %2510 = getelementptr inbounds %struct.ImGuiWindow, ptr %2509, i32 0, i32 42
  store i32 1, ptr %2510, align 4, !tbaa !119
  br label %2511

2511:                                             ; preds = %2508, %2496
  br label %2512

2512:                                             ; preds = %2511, %2478, %2472, %2468
  %2513 = load ptr, ptr %19, align 8, !tbaa !5
  %2514 = icmp ne ptr %2513, null
  br i1 %2514, label %2515, label %2528

2515:                                             ; preds = %2512
  %2516 = load ptr, ptr %19, align 8, !tbaa !5
  %2517 = getelementptr inbounds %struct.ImGuiWindow, ptr %2516, i32 0, i32 24
  %2518 = load i8, ptr %2517, align 1, !tbaa !133, !range !67, !noundef !68
  %2519 = trunc i8 %2518 to i1
  br i1 %2519, label %2525, label %2520

2520:                                             ; preds = %2515
  %2521 = load ptr, ptr %19, align 8, !tbaa !5
  %2522 = getelementptr inbounds %struct.ImGuiWindow, ptr %2521, i32 0, i32 42
  %2523 = load i32, ptr %2522, align 4, !tbaa !119
  %2524 = icmp sgt i32 %2523, 0
  br i1 %2524, label %2525, label %2528

2525:                                             ; preds = %2520, %2515
  %2526 = load ptr, ptr %9, align 8, !tbaa !5
  %2527 = getelementptr inbounds %struct.ImGuiWindow, ptr %2526, i32 0, i32 42
  store i32 1, ptr %2527, align 4, !tbaa !119
  br label %2528

2528:                                             ; preds = %2525, %2520, %2512
  %2529 = load ptr, ptr %19, align 8, !tbaa !5
  %2530 = icmp ne ptr %2529, null
  br i1 %2530, label %2531, label %2544

2531:                                             ; preds = %2528
  %2532 = load ptr, ptr %19, align 8, !tbaa !5
  %2533 = getelementptr inbounds %struct.ImGuiWindow, ptr %2532, i32 0, i32 24
  %2534 = load i8, ptr %2533, align 1, !tbaa !133, !range !67, !noundef !68
  %2535 = trunc i8 %2534 to i1
  br i1 %2535, label %2541, label %2536

2536:                                             ; preds = %2531
  %2537 = load ptr, ptr %19, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.ImGuiWindow, ptr %2537, i32 0, i32 43
  %2539 = load i32, ptr %2538, align 8, !tbaa !86
  %2540 = icmp sgt i32 %2539, 0
  br i1 %2540, label %2541, label %2544

2541:                                             ; preds = %2536, %2531
  %2542 = load ptr, ptr %9, align 8, !tbaa !5
  %2543 = getelementptr inbounds %struct.ImGuiWindow, ptr %2542, i32 0, i32 43
  store i32 1, ptr %2543, align 8, !tbaa !86
  br label %2544

2544:                                             ; preds = %2541, %2536, %2528
  br label %2545

2545:                                             ; preds = %2544, %2451
  %2546 = load ptr, ptr %8, align 8, !tbaa !5
  %2547 = getelementptr inbounds %struct.ImGuiStyle, ptr %2546, i32 0, i32 0
  %2548 = load float, ptr %2547, align 4, !tbaa !240
  %2549 = fcmp ole float %2548, 0.000000e+00
  br i1 %2549, label %2550, label %2553

2550:                                             ; preds = %2545
  %2551 = load ptr, ptr %9, align 8, !tbaa !5
  %2552 = getelementptr inbounds %struct.ImGuiWindow, ptr %2551, i32 0, i32 42
  store i32 1, ptr %2552, align 4, !tbaa !119
  br label %2553

2553:                                             ; preds = %2550, %2545
  %2554 = load ptr, ptr %9, align 8, !tbaa !5
  %2555 = getelementptr inbounds %struct.ImGuiWindow, ptr %2554, i32 0, i32 42
  %2556 = load i32, ptr %2555, align 4, !tbaa !119
  %2557 = icmp sgt i32 %2556, 0
  br i1 %2557, label %2563, label %2558

2558:                                             ; preds = %2553
  %2559 = load ptr, ptr %9, align 8, !tbaa !5
  %2560 = getelementptr inbounds %struct.ImGuiWindow, ptr %2559, i32 0, i32 43
  %2561 = load i32, ptr %2560, align 8, !tbaa !86
  %2562 = icmp sgt i32 %2561, 0
  br label %2563

2563:                                             ; preds = %2558, %2553
  %2564 = phi i1 [ true, %2553 ], [ %2562, %2558 ]
  %2565 = load ptr, ptr %9, align 8, !tbaa !5
  %2566 = getelementptr inbounds %struct.ImGuiWindow, ptr %2565, i32 0, i32 28
  %2567 = zext i1 %2564 to i8
  store i8 %2567, ptr %2566, align 1, !tbaa !241
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #13
  store i8 0, ptr %86, align 1, !tbaa !71
  %2568 = load ptr, ptr %9, align 8, !tbaa !5
  %2569 = getelementptr inbounds %struct.ImGuiWindow, ptr %2568, i32 0, i32 24
  %2570 = load i8, ptr %2569, align 1, !tbaa !133, !range !67, !noundef !68
  %2571 = trunc i8 %2570 to i1
  br i1 %2571, label %2582, label %2572

2572:                                             ; preds = %2563
  %2573 = load ptr, ptr %9, align 8, !tbaa !5
  %2574 = getelementptr inbounds %struct.ImGuiWindow, ptr %2573, i32 0, i32 21
  %2575 = load i8, ptr %2574, align 2, !tbaa !110, !range !67, !noundef !68
  %2576 = trunc i8 %2575 to i1
  br i1 %2576, label %2577, label %2582

2577:                                             ; preds = %2572
  %2578 = load ptr, ptr %9, align 8, !tbaa !5
  %2579 = getelementptr inbounds %struct.ImGuiWindow, ptr %2578, i32 0, i32 28
  %2580 = load i8, ptr %2579, align 1, !tbaa !241, !range !67, !noundef !68
  %2581 = trunc i8 %2580 to i1
  br i1 %2581, label %2582, label %2601

2582:                                             ; preds = %2577, %2572, %2563
  %2583 = load ptr, ptr %9, align 8, !tbaa !5
  %2584 = getelementptr inbounds %struct.ImGuiWindow, ptr %2583, i32 0, i32 37
  %2585 = load i8, ptr %2584, align 4, !tbaa !136
  %2586 = sext i8 %2585 to i32
  %2587 = icmp sle i32 %2586, 0
  br i1 %2587, label %2588, label %2600

2588:                                             ; preds = %2582
  %2589 = load ptr, ptr %9, align 8, !tbaa !5
  %2590 = getelementptr inbounds %struct.ImGuiWindow, ptr %2589, i32 0, i32 38
  %2591 = load i8, ptr %2590, align 1, !tbaa !137
  %2592 = sext i8 %2591 to i32
  %2593 = icmp sle i32 %2592, 0
  br i1 %2593, label %2594, label %2600

2594:                                             ; preds = %2588
  %2595 = load ptr, ptr %9, align 8, !tbaa !5
  %2596 = getelementptr inbounds %struct.ImGuiWindow, ptr %2595, i32 0, i32 43
  %2597 = load i32, ptr %2596, align 8, !tbaa !86
  %2598 = icmp sle i32 %2597, 0
  br i1 %2598, label %2599, label %2600

2599:                                             ; preds = %2594
  store i8 1, ptr %86, align 1, !tbaa !71
  br label %2600

2600:                                             ; preds = %2599, %2594, %2588, %2582
  br label %2601

2601:                                             ; preds = %2600, %2577
  %2602 = load i8, ptr %86, align 1, !tbaa !71, !range !67, !noundef !68
  %2603 = trunc i8 %2602 to i1
  %2604 = load ptr, ptr %9, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.ImGuiWindow, ptr %2604, i32 0, i32 26
  %2606 = zext i1 %2603 to i8
  store i8 %2606, ptr %2605, align 1, !tbaa !242
  %2607 = load i8, ptr %86, align 1, !tbaa !71, !range !67, !noundef !68
  %2608 = trunc i8 %2607 to i1
  %2609 = xor i1 %2608, true
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #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 %2609
}

; 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 <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef) #10

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

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

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

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

; 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 hidden void @_ZN5ImGuiL35ErrorCheckBeginEndCompareStacksSizeEP11ImGuiWindowb(ptr noundef, i1 noundef zeroext) #1

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(956)) #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 @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRectRK6ImVec2(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(8)) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956)) #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> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef, i1 noundef zeroext) #10

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

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

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

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

; Function Attrs: mustprogress uwtable
declare 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 void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(100)) #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 6668}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !20, i64 5472, !6, i64 6424, !17, i64 6432, !17, i64 6436, !21, i64 6440, !23, i64 6648, !10, i64 6656, !10, i64 6660, !10, i64 6664, !14, i64 6668, !14, i64 6669, !14, i64 6670, !24, i64 6672, !24, i64 6688, !24, i64 6704, !24, i64 6720, !25, i64 6736, !10, i64 6752, !6, i64 6760, !6, i64 6768, !6, i64 6776, !6, i64 6784, !6, i64 6792, !16, i64 6800, !17, i64 6808, !10, i64 6812, !14, i64 6816, !10, i64 6820, !17, i64 6824, !17, i64 6828, !10, i64 6832, !10, i64 6836, !17, i64 6840, !14, i64 6844, !14, i64 6845, !14, i64 6846, !14, i64 6847, !14, i64 6848, !10, i64 6852, !10, i64 6856, !27, i64 6864, !16, i64 6872, !6, i64 6880, !28, i64 6888, !10, i64 6892, !10, i64 6896, !14, i64 6900, !14, i64 6901, !6, i64 6904, !10, i64 6912, !17, i64 6916, !29, i64 6920, !31, i64 7024, !32, i64 7048, !33, i64 7064, !34, i64 7080, !35, i64 7096, !35, i64 7112, !6, i64 7128, !10, i64 7136, !10, i64 7140, !10, i64 7144, !10, i64 7148, !10, i64 7152, !10, i64 7156, !10, i64 7160, !10, i64 7164, !10, i64 7168, !10, i64 7172, !28, i64 7176, !30, i64 7180, !10, i64 7196, !36, i64 7200, !10, i64 7204, !14, i64 7208, !14, i64 7209, !14, i64 7210, !14, i64 7211, !14, i64 7212, !14, i64 7213, !14, i64 7214, !10, i64 7216, !30, i64 7220, !14, i64 7236, !14, i64 7237, !10, i64 7240, !37, i64 7244, !10, i64 7248, !10, i64 7252, !10, i64 7256, !38, i64 7264, !38, i64 7312, !38, i64 7360, !6, i64 7408, !6, i64 7416, !6, i64 7424, !17, i64 7432, !17, i64 7436, !14, i64 7440, !6, i64 7448, !6, i64 7456, !10, i64 7464, !10, i64 7468, !10, i64 7472, !10, i64 7476, !14, i64 7480, !39, i64 7488, !40, i64 7544, !17, i64 7576, !41, i64 7584, !41, i64 7752, !10, i64 7920, !14, i64 7924, !14, i64 7925, !10, i64 7928, !10, i64 7932, !10, i64 7936, !49, i64 7944, !30, i64 8008, !10, i64 8024, !10, i64 8028, !17, i64 8032, !10, i64 8036, !10, i64 8040, !10, i64 8044, !50, i64 8048, !7, i64 8064, !6, i64 8080, !51, i64 8088, !53, i64 8128, !54, i64 8144, !16, i64 8160, !55, i64 8168, !59, i64 11896, !10, i64 12016, !10, i64 12020, !17, i64 12024, !17, i64 12028, !7, i64 12032, !22, i64 12044, !14, i64 12060, !17, i64 12064, !17, i64 12068, !17, i64 12072, !10, i64 12076, !56, i64 12080, !62, i64 12096, !16, i64 12112, !16, i64 12120, !14, i64 12128, !17, i64 12132, !63, i64 12136, !64, i64 12152, !65, i64 12168, !14, i64 12184, !66, i64 12188, !6, i64 12192, !63, i64 12200, !17, i64 12216, !14, i64 12220, !10, i64 12224, !10, i64 12228, !10, i64 12232, !14, i64 12236, !10, i64 12240, !7, i64 12244, !10, i64 12724, !17, i64 12728, !10, i64 12732, !10, i64 12736, !10, i64 12740, !7, i64 12744}
!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, !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, !6, i64 288, !16, i64 296, !7, i64 304, !17, i64 312, !17, i64 316, !14, i64 320, !14, i64 321, !14, i64 322, !14, i64 323, !7, i64 324, !7, i64 836, !14, i64 920, !14, i64 921, !14, i64 922, !14, i64 923, !14, i64 924, !14, i64 925, !14, i64 926, !17, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !10, i64 948, !16, i64 952, !16, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !18, i64 5440, !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, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !10, i64 128, !16, i64 132, !16, i64 140, !16, i64 148, !16, i64 156, !17, i64 164, !14, i64 168, !14, i64 169, !17, i64 172, !17, i64 176, !7, i64 180}
!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}
!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, !14, i64 48, !30, i64 52, !6, i64 72, !6, i64 80, !17, i64 88, !16, i64 92}
!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 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!37 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!38 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !10, i64 8, !10, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !30, i64 28}
!39 = !{!"_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}
!40 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!41 = !{!"_ZTS10ImDrawList", !42, i64 0, !19, i64 16, !43, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !10, i64 76, !6, i64 80, !6, i64 88, !44, i64 96, !45, i64 112, !46, i64 128, !47, i64 144}
!42 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!47 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !48, i64 8}
!48 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_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}
!50 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!51 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !52, i64 0, !25, i64 16, !10, i64 32}
!52 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !19, i64 16, !56, i64 32, !56, i64 48, !14, i64 64, !10, i64 68, !17, i64 72, !57, i64 76, !17, i64 3696, !14, i64 3700, !14, i64 3701, !10, i64 3704, !6, i64 3712, !6, i64 3720}
!56 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !17, i64 20, !58, i64 24}
!58 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !10, i64 3588, !10, i64 3592}
!59 = !{!"_ZTS6ImFont", !60, i64 0, !17, i64 16, !17, i64 20, !19, i64 24, !61, i64 40, !6, i64 56, !16, i64 64, !6, i64 72, !6, i64 80, !18, i64 88, !18, i64 90, !18, i64 92, !14, i64 94, !17, i64 96, !17, i64 100, !17, i64 104, !10, i64 108, !7, i64 112}
!60 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS15ImGuiTextBuffer", !56, i64 0}
!64 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !56, i64 0}
!66 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!67 = !{i8 0, i8 2}
!68 = !{}
!69 = !{!13, !10, i64 6660}
!70 = !{!13, !10, i64 6656}
!71 = !{!14, !14, i64 0}
!72 = !{!13, !10, i64 6920}
!73 = !{i64 0, i64 4, !74, i64 4, i64 4, !74}
!74 = !{!17, !17, i64 0}
!75 = !{!76, !10, i64 632}
!76 = !{!"_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, !17, i64 64, !17, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !16, i64 84, !16, i64 92, !16, i64 100, !16, i64 108, !16, i64 116, !14, i64 124, !14, i64 125, !14, i64 126, !14, i64 127, !14, i64 128, !14, i64 129, !14, i64 130, !14, i64 131, !14, i64 132, !14, i64 133, !14, i64 134, !14, i64 135, !7, i64 136, !18, i64 138, !18, i64 140, !18, i64 142, !10, i64 144, !7, i64 148, !7, i64 149, !7, i64 150, !14, i64 151, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !16, i64 176, !16, i64 184, !62, i64 192, !77, i64 208, !30, i64 536, !30, i64 552, !30, i64 568, !30, i64 584, !30, i64 600, !30, i64 616, !10, i64 632, !17, i64 636, !17, i64 640, !25, i64 648, !82, i64 664, !17, i64 680, !10, i64 684, !6, i64 688, !41, i64 696, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !7, i64 904, !7, i64 912, !14, i64 944, !10, i64 948, !10, i64 952}
!77 = !{!"_ZTS19ImGuiWindowTempData", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !17, i64 48, !17, i64 52, !78, i64 56, !78, i64 60, !78, i64 64, !10, i64 68, !10, i64 72, !30, i64 76, !30, i64 92, !36, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !14, i64 128, !14, i64 129, !14, i64 130, !16, i64 132, !79, i64 140, !10, i64 176, !10, i64 180, !24, i64 184, !6, i64 200, !6, i64 208, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !17, i64 236, !17, i64 240, !80, i64 248, !60, i64 264, !60, i64 280, !81, i64 296, !7, i64 312}
!78 = !{!"_ZTS6ImVec1", !17, i64 0}
!79 = !{!"_ZTS16ImGuiMenuColumns", !17, i64 0, !17, i64 4, !17, i64 8, !7, i64 12, !7, i64 24}
!80 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!81 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!82 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!13, !10, i64 6720}
!84 = !{!13, !14, i64 6669}
!85 = !{!76, !14, i64 134}
!86 = !{!76, !10, i64 160}
!87 = !{!13, !10, i64 7112}
!88 = !{!76, !10, i64 144}
!89 = !{!90, !10, i64 0}
!90 = !{!"_ZTS14ImGuiPopupData", !10, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !16, i64 32, !16, i64 40}
!91 = !{!90, !6, i64 8}
!92 = !{!76, !14, i64 132}
!93 = !{!76, !10, i64 12}
!94 = !{!13, !23, i64 6648}
!95 = !{!76, !17, i64 636}
!96 = !{!76, !18, i64 140}
!97 = !{!13, !10, i64 6752}
!98 = !{!76, !18, i64 142}
!99 = !{!76, !6, i64 864}
!100 = !{!76, !10, i64 192}
!101 = !{!13, !6, i64 6760}
!102 = !{!76, !10, i64 164}
!103 = !{!13, !10, i64 6924}
!104 = !{!76, !10, i64 168}
!105 = !{!13, !10, i64 6928}
!106 = !{!13, !17, i64 6952}
!107 = !{!13, !17, i64 6956}
!108 = !{!13, !14, i64 6968}
!109 = !{!13, !10, i64 6932}
!110 = !{!76, !14, i64 126}
!111 = !{!76, !14, i64 135}
!112 = !{i64 0, i64 4, !74, i64 4, i64 4, !74, i64 8, i64 4, !74, i64 12, i64 4, !74}
!113 = !{!76, !14, i64 944}
!114 = !{!13, !6, i64 7424}
!115 = !{!76, !6, i64 0}
!116 = !{!76, !10, i64 72}
!117 = !{!118, !118, i64 0}
!118 = !{!"long", !7, i64 0}
!119 = !{!76, !10, i64 156}
!120 = !{!76, !17, i64 32}
!121 = !{!76, !17, i64 24}
!122 = !{!76, !17, i64 36}
!123 = !{!76, !17, i64 28}
!124 = !{!20, !17, i64 44}
!125 = !{!76, !17, i64 68}
!126 = !{!20, !17, i64 52}
!127 = !{!20, !17, i64 16}
!128 = !{!20, !17, i64 8}
!129 = !{!13, !6, i64 6768}
!130 = !{!13, !10, i64 6812}
!131 = !{!13, !10, i64 6820}
!132 = !{!76, !14, i64 130}
!133 = !{!76, !14, i64 129}
!134 = !{!16, !17, i64 0}
!135 = !{!16, !17, i64 4}
!136 = !{!76, !7, i64 148}
!137 = !{!76, !7, i64 149}
!138 = !{!76, !14, i64 151}
!139 = !{!76, !10, i64 152}
!140 = !{!76, !10, i64 392}
!141 = !{!76, !17, i64 176}
!142 = !{!20, !17, i64 40}
!143 = !{!20, !17, i64 48}
!144 = !{!20, !17, i64 12}
!145 = !{!76, !17, i64 64}
!146 = !{!13, !14, i64 203}
!147 = !{!13, !17, i64 6432}
!148 = !{!76, !7, i64 136}
!149 = !{!76, !14, i64 125}
!150 = !{!20, !17, i64 104}
!151 = !{!76, !14, i64 124}
!152 = !{!76, !17, i64 16}
!153 = !{!76, !17, i64 552}
!154 = !{!76, !17, i64 20}
!155 = !{!76, !17, i64 556}
!156 = !{!76, !17, i64 116}
!157 = !{!76, !17, i64 560}
!158 = !{!76, !17, i64 120}
!159 = !{!76, !17, i64 564}
!160 = !{!20, !17, i64 68}
!161 = !{!76, !17, i64 56}
!162 = !{!76, !17, i64 568}
!163 = !{!76, !17, i64 572}
!164 = !{!76, !17, i64 576}
!165 = !{!76, !17, i64 580}
!166 = !{!76, !17, i64 640}
!167 = !{!76, !17, i64 40}
!168 = !{!76, !17, i64 92}
!169 = !{!76, !17, i64 44}
!170 = !{!76, !17, i64 60}
!171 = !{!76, !17, i64 96}
!172 = !{!76, !6, i64 688}
!173 = !{!13, !6, i64 6424}
!174 = !{!59, !6, i64 72}
!175 = !{!176, !6, i64 8}
!176 = !{!"_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, !177, i64 80, !178, i64 96, !7, i64 112}
!177 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!178 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!179 = !{!13, !6, i64 7416}
!180 = !{!76, !6, i64 872}
!181 = !{!13, !17, i64 7576}
!182 = !{!13, !17, i64 7436}
!183 = !{!13, !17, i64 5484}
!184 = !{!185, !10, i64 0}
!185 = !{!"_ZTS9ImDrawCmd", !10, i64 0, !22, i64 4, !6, i64 24, !10, i64 32, !10, i64 36, !6, i64 40, !6, i64 48}
!186 = !{!41, !10, i64 32}
!187 = !{!13, !6, i64 7408}
!188 = !{!13, !6, i64 7128}
!189 = !{!76, !6, i64 880}
!190 = !{!76, !17, i64 48}
!191 = !{!76, !17, i64 52}
!192 = !{!76, !17, i64 84}
!193 = !{!76, !17, i64 584}
!194 = !{!76, !17, i64 88}
!195 = !{!76, !17, i64 588}
!196 = !{!76, !17, i64 592}
!197 = !{!76, !17, i64 596}
!198 = !{!76, !17, i64 616}
!199 = !{!76, !17, i64 620}
!200 = !{!76, !17, i64 624}
!201 = !{!76, !17, i64 628}
!202 = !{!76, !17, i64 264}
!203 = !{!76, !17, i64 272}
!204 = !{!76, !17, i64 268}
!205 = !{!76, !17, i64 260}
!206 = !{!76, !17, i64 256}
!207 = !{!76, !36, i64 316}
!208 = !{!76, !10, i64 320}
!209 = !{!76, !10, i64 328}
!210 = !{!76, !10, i64 324}
!211 = !{!76, !10, i64 332}
!212 = !{!76, !14, i64 336}
!213 = !{!76, !14, i64 337}
!214 = !{!76, !14, i64 338}
!215 = !{!20, !17, i64 72}
!216 = !{!13, !17, i64 7012}
!217 = !{!76, !17, i64 340}
!218 = !{!13, !17, i64 7016}
!219 = !{!76, !17, i64 344}
!220 = !{!76, !10, i64 384}
!221 = !{!76, !10, i64 388}
!222 = !{!76, !6, i64 408}
!223 = !{!76, !6, i64 416}
!224 = !{!76, !10, i64 424}
!225 = !{!76, !10, i64 428}
!226 = !{!76, !10, i64 436}
!227 = !{!76, !10, i64 432}
!228 = !{!76, !17, i64 444}
!229 = !{!76, !17, i64 448}
!230 = !{!76, !10, i64 440}
!231 = !{!76, !10, i64 76}
!232 = !{!76, !10, i64 276}
!233 = !{!76, !10, i64 280}
!234 = !{!76, !14, i64 128}
!235 = !{!76, !18, i64 138}
!236 = !{!76, !17, i64 536}
!237 = !{!76, !17, i64 544}
!238 = !{!76, !17, i64 540}
!239 = !{!76, !17, i64 548}
!240 = !{!20, !17, i64 0}
!241 = !{!76, !14, i64 133}
!242 = !{!76, !14, i64 131}


; 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 [98 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.98 = 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 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(168), 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(168), 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 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(956)) 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 @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #9

declare void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168), 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.ImVec2, align 8
  %7 = alloca %struct.ImRect, align 4
  %8 = alloca %struct.ImVec4, align 4
  %9 = alloca i64, align 8
  %10 = alloca %struct.ImVec2, align 8
  %11 = alloca %struct.ImVec2, align 8
  %12 = alloca %struct.ImRect, align 8
  %13 = alloca %struct.ImVec2, align 8
  %14 = alloca %struct.ImRect, align 8
  %15 = alloca %struct.ImVec2, align 8
  %16 = alloca %struct.ImVec2, align 8
  %17 = alloca %struct.ImRect, align 8
  %18 = alloca %struct.ImVec2, align 8
  %19 = alloca i32, align 4
  %20 = alloca [4 x i32], align 16
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca %struct.ImVec2, align 8
  %23 = alloca %struct.ImVec2, align 8
  %24 = alloca %struct.ImVec2, align 8
  %25 = alloca %struct.ImVec2, align 8
  %26 = alloca %struct.ImRect, align 4
  %27 = alloca %struct.ImRect, align 8
  %28 = alloca %struct.ImVec2, align 8
  %29 = alloca %struct.ImRect, align 8
  %30 = alloca %struct.ImRect, align 8
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 8
  %33 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %34 = getelementptr inbounds i8, ptr %33, i64 5472
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %.critedge, label %35

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

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

37:                                               ; preds = %35
  %38 = getelementptr inbounds i8, ptr %33, i64 6668
  %39 = load i8, ptr %38, align 4, !tbaa !10, !range !66, !noundef !67
  %40 = trunc nuw i8 %39 to i1
  br i1 %40, label %42, label %41

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

42:                                               ; preds = %37
  %43 = getelementptr inbounds i8, ptr %33, i64 6660
  %44 = load i32, ptr %43, align 4, !tbaa !68
  %45 = getelementptr inbounds i8, ptr %33, i64 6656
  %46 = load i32, ptr %45, align 8, !tbaa !69
  %.not308 = icmp eq i32 %44, %46
  br i1 %.not308, label %47, label %48

47:                                               ; preds = %42
  tail call void @__assert_fail(ptr noundef nonnull @.str.94, ptr noundef nonnull @.str.3, i32 noundef 5461, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

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

51:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #14
  %52 = getelementptr inbounds i8, ptr %33, i64 6920
  %53 = load i32, ptr %52, align 8, !tbaa !70
  %54 = and i32 %53, 2
  %.not309 = icmp eq i32 %54, 0
  br i1 %.not309, label %59, label %55

55:                                               ; preds = %51
  %56 = getelementptr inbounds i8, ptr %33, i64 6952
  %57 = load i64, ptr %56, align 8
  store i64 %57, ptr %5, align 8
  %58 = bitcast i64 %57 to <2 x float>
  br label %60

59:                                               ; preds = %51
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %5, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %.sroa.0113.0.copyload.pre = load <2 x float>, ptr %5, align 8
  br label %60

60:                                               ; preds = %59, %55
  %.sroa.0113.0.copyload = phi <2 x float> [ %.sroa.0113.0.copyload.pre, %59 ], [ %58, %55 ]
  %61 = call noundef ptr @_ZL15CreateNewWindowPKc6ImVec2i(ptr noundef nonnull %0, <2 x float> %.sroa.0113.0.copyload, i32 noundef %2)
  store ptr %61, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #14
  br label %62

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

68:                                               ; preds = %62
  call void @__assert_fail(ptr noundef nonnull @.str.95, ptr noundef nonnull @.str.3, i32 noundef 5477, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

69:                                               ; preds = %62
  %70 = load i32, ptr %45, align 8, !tbaa !69
  %71 = getelementptr inbounds i8, ptr %63, i64 632
  %72 = load i32, ptr %71, align 8, !tbaa !71
  %.not312 = icmp eq i32 %72, %70
  %73 = getelementptr inbounds i8, ptr %33, i64 6720
  %74 = load i32, ptr %73, align 8, !tbaa !79
  %75 = icmp eq i32 %74, 0
  br i1 %75, label %76, label %79

76:                                               ; preds = %69
  %77 = getelementptr inbounds i8, ptr %33, i64 6669
  %78 = load i8, ptr %77, align 1, !tbaa !80, !range !66, !noundef !67
  br label %79

79:                                               ; preds = %76, %69
  %80 = phi i8 [ 0, %69 ], [ %78, %76 ]
  %81 = getelementptr inbounds i8, ptr %63, i64 134
  store i8 %80, ptr %81, align 2, !tbaa !81
  %82 = add nsw i32 %70, -1
  %83 = icmp slt i32 %72, %82
  %84 = getelementptr inbounds i8, ptr %63, i64 160
  %85 = load i32, ptr %84, align 8, !tbaa !82
  %86 = icmp sgt i32 %85, 0
  %87 = and i32 %spec.select, 67108864
  %.not313 = icmp eq i32 %87, 0
  br i1 %.not313, label %103, label %88

88:                                               ; preds = %79
  %89 = getelementptr inbounds i8, ptr %33, i64 7096
  %90 = getelementptr inbounds i8, ptr %33, i64 7112
  %91 = load i32, ptr %90, align 8, !tbaa !83
  %92 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %89, i32 noundef %91)
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  %94 = getelementptr inbounds i8, ptr %93, i64 144
  %95 = load i32, ptr %94, align 8, !tbaa !84
  %96 = load i32, ptr %92, align 8, !tbaa !85
  %97 = icmp ne i32 %95, %96
  %98 = getelementptr inbounds i8, ptr %92, i64 8
  %99 = load ptr, ptr %98, align 8, !tbaa !87
  %100 = icmp ne ptr %93, %99
  %101 = or i1 %97, %100
  %102 = or i1 %83, %101
  br label %103

103:                                              ; preds = %88, %79
  %104 = phi ptr [ %93, %88 ], [ %63, %79 ]
  %.0277.in = phi i1 [ %102, %88 ], [ %83, %79 ]
  %105 = select i1 %.0277.in, i1 true, i1 %86
  %106 = getelementptr inbounds i8, ptr %104, i64 132
  %107 = zext i1 %105 to i8
  store i8 %107, ptr %106, align 4, !tbaa !88
  br i1 %105, label %108, label %109

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

109:                                              ; preds = %108, %103
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  %111 = getelementptr inbounds i8, ptr %110, i64 12
  br i1 %.not312, label %124, label %112

112:                                              ; preds = %109
  store i32 %spec.select, ptr %111, align 4, !tbaa !89
  %113 = getelementptr inbounds i8, ptr %110, i64 632
  store i32 %70, ptr %113, align 8, !tbaa !71
  %114 = getelementptr inbounds i8, ptr %33, i64 6648
  %115 = load double, ptr %114, align 8, !tbaa !90
  %116 = fptrunc double %115 to float
  %117 = getelementptr inbounds i8, ptr %110, i64 636
  store float %116, ptr %117, align 4, !tbaa !91
  %118 = getelementptr inbounds i8, ptr %110, i64 140
  store i16 0, ptr %118, align 4, !tbaa !92
  %119 = getelementptr inbounds i8, ptr %33, i64 6752
  %120 = load i32, ptr %119, align 8, !tbaa !93
  %121 = add nsw i32 %120, 1
  store i32 %121, ptr %119, align 8, !tbaa !93
  %122 = trunc i32 %120 to i16
  %123 = getelementptr inbounds i8, ptr %110, i64 142
  store i16 %122, ptr %123, align 2, !tbaa !94
  br label %126

124:                                              ; preds = %109
  %125 = load i32, ptr %111, align 4, !tbaa !89
  br label %126

126:                                              ; preds = %124, %112
  %.1 = phi i32 [ %spec.select, %112 ], [ %125, %124 ]
  %127 = call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %73)
  br i1 %127, label %131, label %128

128:                                              ; preds = %126
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %73)
  %130 = load ptr, ptr %129, align 8, !tbaa !5
  br label %131

131:                                              ; preds = %126, %128
  %132 = phi ptr [ %130, %128 ], [ null, %126 ]
  br i1 %.not312, label %136, label %133

133:                                              ; preds = %131
  %134 = and i32 %.1, 83886080
  %.not314 = icmp eq i32 %134, 0
  %135 = select i1 %.not314, ptr null, ptr %132
  br label %140

136:                                              ; preds = %131
  %137 = load ptr, ptr %4, align 8, !tbaa !5
  %138 = getelementptr inbounds i8, ptr %137, i64 864
  %139 = load ptr, ptr %138, align 8, !tbaa !95
  br label %140

140:                                              ; preds = %136, %133
  %141 = phi ptr [ %135, %133 ], [ %139, %136 ]
  %142 = icmp eq ptr %141, null
  %143 = and i32 %.1, 16777216
  %144 = icmp ne i32 %143, 0
  %.not316 = select i1 %142, i1 %144, i1 false
  br i1 %.not316, label %145, label %146

145:                                              ; preds = %140
  call void @__assert_fail(ptr noundef nonnull @.str.96, ptr noundef nonnull @.str.3, i32 noundef 5513, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

146:                                              ; preds = %140
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds i8, ptr %147, i64 192
  %149 = load i32, ptr %148, align 8, !tbaa !96
  %150 = icmp eq i32 %149, 0
  br i1 %150, label %151, label %153

151:                                              ; preds = %146
  %152 = getelementptr inbounds i8, ptr %147, i64 8
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %148, ptr noundef nonnull align 4 dereferenceable(4) %152)
  br label %153

153:                                              ; preds = %151, %146
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %154 = getelementptr inbounds i8, ptr %33, i64 6760
  store ptr null, ptr %154, align 8, !tbaa !97
  %155 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGuiL35ErrorCheckBeginEndCompareStacksSizeEP11ImGuiWindowb(ptr noundef %155, i1 noundef zeroext true)
  %156 = and i32 %.1, 67108864
  %.not317 = icmp eq i32 %156, 0
  br i1 %.not317, label %167, label %157

157:                                              ; preds = %153
  %158 = getelementptr inbounds i8, ptr %33, i64 7096
  %159 = getelementptr inbounds i8, ptr %33, i64 7112
  %160 = load i32, ptr %159, align 8, !tbaa !83
  %161 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %158, i32 noundef %160)
  %162 = load ptr, ptr %4, align 8, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %161, i64 8
  store ptr %162, ptr %163, align 8, !tbaa !87
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %159, ptr noundef nonnull align 8 dereferenceable(48) %161)
  %164 = load i32, ptr %161, align 8, !tbaa !85
  %165 = load ptr, ptr %4, align 8, !tbaa !5
  %166 = getelementptr inbounds i8, ptr %165, i64 144
  store i32 %164, ptr %166, align 8, !tbaa !84
  br label %167

167:                                              ; preds = %157, %153
  %.not355 = xor i1 %86, true
  %brmerge = select i1 %.not355, i1 true, i1 %144
  br i1 %brmerge, label %171, label %168

168:                                              ; preds = %167
  %169 = load ptr, ptr %4, align 8, !tbaa !5
  %170 = getelementptr inbounds i8, ptr %169, i64 904
  store i32 0, ptr %170, align 8, !tbaa !98
  br label %171

171:                                              ; preds = %167, %168
  br i1 %.not312, label %174, label %172

172:                                              ; preds = %171
  %173 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %173, i32 noundef %.1, ptr noundef %141)
  br label %174

174:                                              ; preds = %172, %171
  %175 = getelementptr inbounds i8, ptr %33, i64 6920
  %176 = load i32, ptr %175, align 8, !tbaa !70
  %177 = and i32 %176, 1
  %.not318 = icmp eq i32 %177, 0
  br i1 %.not318, label %203, label %178

178:                                              ; preds = %174
  %179 = load ptr, ptr %4, align 8, !tbaa !5
  %180 = getelementptr inbounds i8, ptr %179, i64 164
  %181 = load i32, ptr %180, align 4, !tbaa !99
  %182 = getelementptr inbounds i8, ptr %33, i64 6924
  %183 = load i32, ptr %182, align 4, !tbaa !100
  %184 = and i32 %183, %181
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %199

186:                                              ; preds = %178
  %187 = getelementptr inbounds i8, ptr %33, i64 6944
  %188 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %187)
  %189 = fcmp ogt float %188, 0x3EE4F8B580000000
  %.pre = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %189, label %190, label %._crit_edge

._crit_edge:                                      ; preds = %186
  %.pre440 = load i32, ptr %182, align 4, !tbaa !100
  br label %199

190:                                              ; preds = %186
  %191 = getelementptr inbounds i8, ptr %33, i64 6936
  %192 = getelementptr inbounds i8, ptr %.pre, i64 176
  %193 = load i64, ptr %191, align 8
  store i64 %193, ptr %192, align 8
  %194 = getelementptr inbounds i8, ptr %.pre, i64 184
  %195 = load i64, ptr %187, align 8
  store i64 %195, ptr %194, align 8
  %196 = getelementptr inbounds i8, ptr %.pre, i64 164
  %197 = load i32, ptr %196, align 4, !tbaa !99
  %198 = and i32 %197, -15
  store i32 %198, ptr %196, align 4, !tbaa !99
  br label %203

199:                                              ; preds = %._crit_edge, %178
  %200 = phi i32 [ %.pre440, %._crit_edge ], [ %183, %178 ]
  %201 = phi ptr [ %.pre, %._crit_edge ], [ %179, %178 ]
  %202 = getelementptr inbounds i8, ptr %33, i64 6936
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %201, ptr noundef nonnull align 4 dereferenceable(8) %202, i32 noundef %200)
  br label %203

203:                                              ; preds = %190, %199, %174
  %.0278.shrunk = phi i1 [ true, %190 ], [ %185, %199 ], [ false, %174 ]
  %204 = load i32, ptr %175, align 8, !tbaa !70
  %205 = and i32 %204, 2
  %.not319 = icmp eq i32 %205, 0
  br i1 %.not319, label %223, label %206

206:                                              ; preds = %203
  %207 = load ptr, ptr %4, align 8, !tbaa !5
  %208 = getelementptr inbounds i8, ptr %207, i64 168
  %209 = load i32, ptr %208, align 8, !tbaa !101
  %210 = getelementptr inbounds i8, ptr %33, i64 6928
  %211 = load i32, ptr %210, align 8, !tbaa !102
  %212 = and i32 %211, %209
  %.not320 = icmp eq i32 %212, 0
  br i1 %.not320, label %.thread, label %213

213:                                              ; preds = %206
  %214 = getelementptr inbounds i8, ptr %33, i64 6952
  %215 = load float, ptr %214, align 8, !tbaa !103
  %216 = fcmp ogt float %215, 0.000000e+00
  %217 = getelementptr inbounds i8, ptr %33, i64 6956
  %218 = load float, ptr %217, align 4, !tbaa !104
  %219 = fcmp ogt float %218, 0.000000e+00
  br label %.thread

.thread:                                          ; preds = %206, %213
  %220 = phi i1 [ %216, %213 ], [ false, %206 ]
  %221 = phi i1 [ %219, %213 ], [ false, %206 ]
  %222 = getelementptr inbounds i8, ptr %33, i64 6952
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %207, ptr noundef nonnull align 4 dereferenceable(8) %222, i32 noundef %211)
  %.pre441 = load i32, ptr %175, align 8, !tbaa !70
  br label %223

223:                                              ; preds = %.thread, %203
  %224 = phi i32 [ %.pre441, %.thread ], [ %204, %203 ]
  %.0280 = phi i1 [ %221, %.thread ], [ false, %203 ]
  %.0279 = phi i1 [ %220, %.thread ], [ false, %203 ]
  %225 = and i32 %224, 4
  %.not322 = icmp eq i32 %225, 0
  br i1 %.not322, label %231, label %226

226:                                              ; preds = %223
  %227 = getelementptr inbounds i8, ptr %33, i64 6960
  %228 = load ptr, ptr %4, align 8, !tbaa !5
  %229 = getelementptr inbounds i8, ptr %228, i64 48
  %230 = load i64, ptr %227, align 8
  store i64 %230, ptr %229, align 8
  br label %236

231:                                              ; preds = %223
  br i1 %.not312, label %._crit_edge487, label %232

._crit_edge487:                                   ; preds = %231
  %.pre444.pre482.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %236

232:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %6, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %233 = load ptr, ptr %4, align 8, !tbaa !5
  %234 = getelementptr inbounds i8, ptr %233, i64 48
  %235 = load i64, ptr %6, align 8
  store i64 %235, ptr %234, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #14
  br label %236

236:                                              ; preds = %._crit_edge487, %232, %226
  %.pre444.pre482 = phi ptr [ %.pre444.pre482.pre, %._crit_edge487 ], [ %233, %232 ], [ %228, %226 ]
  %237 = load i32, ptr %175, align 8, !tbaa !70
  %238 = and i32 %237, 8
  %.not323 = icmp eq i32 %238, 0
  br i1 %.not323, label %245, label %239

239:                                              ; preds = %236
  %240 = getelementptr inbounds i8, ptr %33, i64 6968
  %241 = load i8, ptr %240, align 8, !tbaa !105, !range !66, !noundef !67
  %242 = trunc nuw i8 %241 to i1
  %243 = getelementptr inbounds i8, ptr %33, i64 6932
  %244 = load i32, ptr %243, align 4, !tbaa !106
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre444.pre482, i1 noundef zeroext %242, i32 noundef %244)
  %.pre442 = load i32, ptr %175, align 8, !tbaa !70
  %.pre444.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %245

245:                                              ; preds = %239, %236
  %.pre444 = phi ptr [ %.pre444.pre, %239 ], [ %.pre444.pre482, %236 ]
  %246 = phi i32 [ %.pre442, %239 ], [ %237, %236 ]
  %247 = and i32 %246, 32
  %.not324 = icmp eq i32 %247, 0
  br i1 %.not324, label %249, label %248

248:                                              ; preds = %245
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %.pre444)
  %.pre443 = load ptr, ptr %4, align 8, !tbaa !5
  br label %249

249:                                              ; preds = %248, %245
  %250 = phi ptr [ %.pre443, %248 ], [ %.pre444, %245 ]
  %251 = getelementptr inbounds i8, ptr %250, i64 132
  %252 = load i8, ptr %251, align 4, !tbaa !88, !range !66, !noundef !67
  %253 = trunc nuw i8 %252 to i1
  br i1 %253, label %254, label %255

254:                                              ; preds = %249
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %250, i32 noundef 8, i1 noundef zeroext false)
  br label %255

255:                                              ; preds = %254, %249
  br i1 %.not312, label %.thread423, label %256

256:                                              ; preds = %255
  %257 = and i32 %.1, 33554432
  %.not325 = icmp eq i32 %257, 0
  %258 = and i32 %.1, 50331648
  %259 = icmp eq i32 %258, 50331648
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = getelementptr inbounds i8, ptr %260, i64 126
  store i8 1, ptr %261, align 2, !tbaa !107
  %262 = icmp ne ptr %1, null
  %263 = getelementptr inbounds i8, ptr %260, i64 135
  %264 = zext i1 %262 to i8
  store i8 %264, ptr %263, align 1, !tbaa !108
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #14
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %7, ptr noundef nonnull align 4 dereferenceable(16) %8)
  %265 = load ptr, ptr %4, align 8, !tbaa !5
  %266 = getelementptr inbounds i8, ptr %265, i64 600
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %266, ptr noundef nonnull align 4 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #14
  %267 = getelementptr inbounds i8, ptr %265, i64 192
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %267, i32 noundef 1)
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = getelementptr inbounds i8, ptr %268, i64 944
  %270 = load i8, ptr %269, align 8, !tbaa !111, !range !66, !noundef !67
  %271 = trunc nuw i8 %270 to i1
  br i1 %271, label %272, label %273

272:                                              ; preds = %256
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %268)
  %.pre445.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %273

273:                                              ; preds = %272, %256
  %.pre445 = phi ptr [ %.pre445.pre, %272 ], [ %268, %256 ]
  %274 = getelementptr inbounds i8, ptr %33, i64 7424
  %275 = load ptr, ptr %274, align 8, !tbaa !112
  %.not326 = icmp eq ptr %275, null
  br i1 %.not326, label %.critedge358, label %276

276:                                              ; preds = %273
  %277 = getelementptr inbounds i8, ptr %.pre445, i64 12
  %278 = load i32, ptr %277, align 4, !tbaa !89
  %279 = and i32 %278, 524288
  %280 = icmp ne i32 %279, 0
  %brmerge359 = or i1 %50, %280
  br i1 %brmerge359, label %.critedge358, label %281

281:                                              ; preds = %276
  %282 = load ptr, ptr %.pre445, align 8, !tbaa !113
  %283 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %282) #15
  %.not327 = icmp eq i32 %283, 0
  br i1 %.not327, label %.critedge358, label %284

284:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #14
  %285 = getelementptr inbounds i8, ptr %.pre445, i64 72
  %286 = load i32, ptr %285, align 8, !tbaa !114
  %287 = sext i32 %286 to i64
  store i64 %287, ptr %9, align 8, !tbaa !115
  %288 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %282, ptr noundef nonnull %9, ptr noundef nonnull %0)
  %289 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %288, ptr %289, align 8, !tbaa !113
  %290 = load i64, ptr %9, align 8, !tbaa !115
  %291 = trunc i64 %290 to i32
  %292 = load ptr, ptr %4, align 8, !tbaa !5
  %293 = getelementptr inbounds i8, ptr %292, i64 72
  store i32 %291, ptr %293, align 8, !tbaa !114
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %.critedge358

.critedge358:                                     ; preds = %273, %276, %284, %281
  %294 = phi ptr [ %.pre445, %273 ], [ %.pre445, %276 ], [ %292, %284 ], [ %.pre445, %281 ]
  %295 = call <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef %294)
  %296 = load ptr, ptr %4, align 8, !tbaa !5
  %297 = getelementptr inbounds i8, ptr %296, i64 40
  store <2 x float> %295, ptr %297, align 8
  %298 = getelementptr inbounds i8, ptr %296, i64 156
  %299 = load i32, ptr %298, align 4, !tbaa !117
  %300 = icmp sgt i32 %299, 0
  br i1 %300, label %301, label %303

301:                                              ; preds = %.critedge358
  %302 = add nsw i32 %299, -1
  store i32 %302, ptr %298, align 4, !tbaa !117
  br label %303

303:                                              ; preds = %301, %.critedge358
  %304 = getelementptr inbounds i8, ptr %296, i64 160
  %305 = load i32, ptr %304, align 8, !tbaa !82
  %306 = icmp slt i32 %305, 1
  %.not434 = xor i1 %50, true
  %307 = select i1 %.0279, i1 %.0280, i1 false
  %or.cond435 = select i1 %.not434, i1 true, i1 %307
  %.not438 = and i1 %306, %or.cond435
  br i1 %.not438, label %310, label %308

308:                                              ; preds = %303
  %309 = add nsw i32 %305, -1
  %simplifycfg.merge436 = select i1 %or.cond435, i32 %309, i32 1
  store i32 %simplifycfg.merge436, ptr %304, align 8, !tbaa !82
  br label %310

310:                                              ; preds = %303, %308
  %311 = and i32 %.1, 100663296
  %.not328 = icmp ne i32 %311, 0
  %or.cond361.not = select i1 %.0277.in, i1 %.not328, i1 false
  br i1 %or.cond361.not, label %312, label %326

312:                                              ; preds = %310
  store i32 1, ptr %304, align 8, !tbaa !82
  %313 = and i32 %.1, 64
  %.not329 = icmp eq i32 %313, 0
  br i1 %.not329, label %326, label %314

314:                                              ; preds = %312
  br i1 %.0279, label %318, label %315

315:                                              ; preds = %314
  %316 = getelementptr inbounds i8, ptr %296, i64 32
  store float 0.000000e+00, ptr %316, align 8, !tbaa !118
  %317 = getelementptr inbounds i8, ptr %296, i64 24
  store float 0.000000e+00, ptr %317, align 8, !tbaa !119
  br label %318

318:                                              ; preds = %315, %314
  br i1 %.0280, label %322, label %319

319:                                              ; preds = %318
  %320 = getelementptr inbounds i8, ptr %296, i64 36
  store float 0.000000e+00, ptr %320, align 4, !tbaa !120
  %321 = getelementptr inbounds i8, ptr %296, i64 28
  store float 0.000000e+00, ptr %321, align 4, !tbaa !121
  br label %322

322:                                              ; preds = %319, %318
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %323 = load ptr, ptr %4, align 8, !tbaa !5
  %324 = getelementptr inbounds i8, ptr %323, i64 40
  %325 = load i64, ptr %10, align 8
  store i64 %325, ptr %324, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  br label %326

326:                                              ; preds = %312, %322, %310
  %327 = phi ptr [ %296, %312 ], [ %323, %322 ], [ %296, %310 ]
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef nonnull %327)
  br i1 %144, label %335, label %.thread407

.thread407:                                       ; preds = %326
  %328 = and i32 %.1, 134217728
  %.not331 = icmp eq i32 %328, 0
  %or.cond362 = and i1 %.not328, %.not331
  %.in.v = select i1 %or.cond362, i64 5524, i64 5488
  %.in = getelementptr inbounds i8, ptr %33, i64 %.in.v
  %329 = load float, ptr %.in, align 4, !tbaa !110
  %330 = load ptr, ptr %4, align 8, !tbaa !5
  %331 = getelementptr inbounds i8, ptr %330, i64 68
  store float %329, ptr %331, align 4, !tbaa !122
  %332 = getelementptr inbounds i8, ptr %33, i64 5476
  %333 = getelementptr inbounds i8, ptr %330, i64 56
  %334 = load i64, ptr %332, align 4
  store i64 %334, ptr %333, align 8
  br label %355

335:                                              ; preds = %326
  %336 = getelementptr inbounds i8, ptr %33, i64 5516
  %337 = load float, ptr %336, align 4, !tbaa !123
  %338 = load ptr, ptr %4, align 8, !tbaa !5
  %339 = getelementptr inbounds i8, ptr %338, i64 68
  store float %337, ptr %339, align 4, !tbaa !122
  %340 = getelementptr inbounds i8, ptr %33, i64 5476
  %341 = getelementptr inbounds i8, ptr %338, i64 56
  %342 = load i64, ptr %340, align 4
  store i64 %342, ptr %341, align 8
  %343 = and i32 %.1, 83951616
  %or.cond363 = icmp eq i32 %343, 16777216
  %344 = fcmp oeq float %337, 0.000000e+00
  %or.cond501 = select i1 %or.cond363, i1 %344, i1 false
  br i1 %or.cond501, label %345, label %355

345:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #14
  %346 = and i32 %.1, 1024
  %.not333 = icmp eq i32 %346, 0
  br i1 %.not333, label %350, label %347

347:                                              ; preds = %345
  %348 = getelementptr inbounds i8, ptr %33, i64 5480
  %349 = load float, ptr %348, align 4, !tbaa !124
  br label %350

350:                                              ; preds = %345, %347
  %351 = phi float [ %349, %347 ], [ 0.000000e+00, %345 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 0.000000e+00, float noundef %351)
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds i8, ptr %352, i64 56
  %354 = load i64, ptr %11, align 8
  store i64 %354, ptr %353, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #14
  br label %355

355:                                              ; preds = %.thread407, %350, %335
  %356 = phi ptr [ %330, %.thread407 ], [ %352, %350 ], [ %338, %335 ]
  %357 = and i32 %.1, 1
  %.not334 = icmp eq i32 %357, 0
  %358 = and i32 %.1, 33
  %or.cond364 = icmp eq i32 %358, 0
  br i1 %or.cond364, label %359, label %395

359:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #14
  %360 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(956) %356)
  %361 = extractvalue { <2 x float>, <2 x float> } %360, 0
  store <2 x float> %361, ptr %12, align 8
  %362 = getelementptr inbounds i8, ptr %12, i64 8
  %363 = extractvalue { <2 x float>, <2 x float> } %360, 1
  store <2 x float> %363, ptr %362, align 8
  %364 = getelementptr inbounds i8, ptr %33, i64 6768
  %365 = load ptr, ptr %364, align 8, !tbaa !125
  %366 = load ptr, ptr %4, align 8, !tbaa !5
  %367 = icmp eq ptr %365, %366
  br i1 %367, label %368, label %384

368:                                              ; preds = %359
  %369 = getelementptr inbounds i8, ptr %33, i64 6812
  %370 = load i32, ptr %369, align 4, !tbaa !126
  %371 = icmp eq i32 %370, 0
  br i1 %371, label %372, label %384

372:                                              ; preds = %368
  %373 = getelementptr inbounds i8, ptr %33, i64 6820
  %374 = load i32, ptr %373, align 4, !tbaa !127
  %375 = icmp eq i32 %374, 0
  br i1 %375, label %376, label %384

376:                                              ; preds = %372
  %377 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %362, i1 noundef zeroext true)
  br i1 %377, label %378, label %._crit_edge446

._crit_edge446:                                   ; preds = %376
  %.pre447 = load ptr, ptr %4, align 8, !tbaa !5
  br label %384

378:                                              ; preds = %376
  %379 = getelementptr inbounds i8, ptr %33, i64 1061
  %380 = load i8, ptr %379, align 1, !tbaa !128, !range !66, !noundef !67
  %381 = trunc nuw i8 %380 to i1
  %.pre448 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %381, label %382, label %384

382:                                              ; preds = %378
  %383 = getelementptr inbounds i8, ptr %.pre448, i64 130
  store i8 1, ptr %383, align 2, !tbaa !129
  br label %384

384:                                              ; preds = %._crit_edge446, %382, %378, %372, %368, %359
  %385 = phi ptr [ %.pre447, %._crit_edge446 ], [ %.pre448, %382 ], [ %.pre448, %378 ], [ %366, %372 ], [ %366, %368 ], [ %366, %359 ]
  %386 = getelementptr inbounds i8, ptr %385, i64 130
  %387 = load i8, ptr %386, align 2, !tbaa !129, !range !66, !noundef !67
  %388 = trunc nuw i8 %387 to i1
  br i1 %388, label %389, label %394

389:                                              ; preds = %384
  %390 = getelementptr inbounds i8, ptr %385, i64 129
  %391 = load i8, ptr %390, align 1, !tbaa !130, !range !66, !noundef !67
  %392 = xor i8 %391, 1
  store i8 %392, ptr %390, align 1, !tbaa !130
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %385)
  %393 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %393)
  %.pre449.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %394

394:                                              ; preds = %389, %384
  %.pre449 = phi ptr [ %.pre449.pre, %389 ], [ %385, %384 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #14
  br label %397

395:                                              ; preds = %355
  %396 = getelementptr inbounds i8, ptr %356, i64 129
  store i8 0, ptr %396, align 1, !tbaa !130
  br label %397

397:                                              ; preds = %395, %394
  %398 = phi ptr [ %356, %395 ], [ %.pre449, %394 ]
  %399 = getelementptr inbounds i8, ptr %398, i64 130
  store i8 0, ptr %399, align 2, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #14
  %400 = getelementptr inbounds i8, ptr %398, i64 40
  %401 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %398, ptr noundef nonnull align 4 dereferenceable(8) %400)
  store <2 x float> %401, ptr %13, align 8
  %402 = and i32 %.1, 64
  %.not336 = icmp ne i32 %402, 0
  %403 = extractelement <2 x float> %401, i64 0
  %404 = extractelement <2 x float> %401, i64 1
  %.pre450 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not336, label %405, label %415

405:                                              ; preds = %397
  %406 = getelementptr inbounds i8, ptr %.pre450, i64 129
  %407 = load i8, ptr %406, align 1, !tbaa !130, !range !66, !noundef !67
  %408 = trunc nuw i8 %407 to i1
  br i1 %408, label %415, label %409

409:                                              ; preds = %405
  br i1 %.0279, label %412, label %410

410:                                              ; preds = %409
  %411 = getelementptr inbounds i8, ptr %.pre450, i64 32
  store float %403, ptr %411, align 8, !tbaa !118
  br label %412

412:                                              ; preds = %410, %409
  %.0283 = phi i1 [ %50, %409 ], [ true, %410 ]
  br i1 %.0280, label %464, label %413

413:                                              ; preds = %412
  %414 = getelementptr inbounds i8, ptr %.pre450, i64 36
  store float %404, ptr %414, align 4, !tbaa !120
  br label %464

415:                                              ; preds = %405, %397
  %416 = getelementptr inbounds i8, ptr %.pre450, i64 148
  %417 = load i8, ptr %416, align 4, !tbaa !131
  %418 = icmp sgt i8 %417, 0
  br i1 %418, label %423, label %419

419:                                              ; preds = %415
  %420 = getelementptr inbounds i8, ptr %.pre450, i64 149
  %421 = load i8, ptr %420, align 1, !tbaa !132
  %422 = icmp sgt i8 %421, 0
  br i1 %422, label %.thread411, label %464

423:                                              ; preds = %415
  br i1 %.0279, label %.thread411, label %424

424:                                              ; preds = %423
  %425 = getelementptr inbounds i8, ptr %.pre450, i64 151
  %426 = load i8, ptr %425, align 1, !tbaa !133, !range !66, !noundef !67
  %427 = trunc nuw i8 %426 to i1
  br i1 %427, label %428, label %432

428:                                              ; preds = %424
  %429 = getelementptr inbounds i8, ptr %.pre450, i64 32
  %430 = load float, ptr %429, align 8, !tbaa !118
  %431 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %430, float noundef %403)
  %.pre451 = load ptr, ptr %4, align 8, !tbaa !5
  br label %432

432:                                              ; preds = %424, %428
  %433 = phi ptr [ %.pre451, %428 ], [ %.pre450, %424 ]
  %434 = phi float [ %431, %428 ], [ %403, %424 ]
  %435 = getelementptr inbounds i8, ptr %433, i64 32
  store float %434, ptr %435, align 8, !tbaa !118
  br label %.thread411

.thread411:                                       ; preds = %419, %432, %423
  %436 = phi ptr [ %.pre450, %423 ], [ %433, %432 ], [ %.pre450, %419 ]
  %.1284 = phi i1 [ %50, %423 ], [ true, %432 ], [ %50, %419 ]
  br i1 %.0280, label %458, label %437

437:                                              ; preds = %.thread411
  %438 = getelementptr inbounds i8, ptr %436, i64 149
  %439 = load i8, ptr %438, align 1, !tbaa !132
  %440 = icmp sgt i8 %439, 0
  br i1 %440, label %441, label %458

441:                                              ; preds = %437
  %442 = getelementptr inbounds i8, ptr %436, i64 151
  %443 = load i8, ptr %442, align 1, !tbaa !133, !range !66, !noundef !67
  %444 = trunc nuw i8 %443 to i1
  br i1 %444, label %445, label %451

445:                                              ; preds = %441
  %446 = getelementptr inbounds i8, ptr %436, i64 36
  %447 = load float, ptr %446, align 4, !tbaa !120
  %448 = getelementptr inbounds i8, ptr %13, i64 4
  %449 = load float, ptr %448, align 4, !tbaa !134
  %450 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %447, float noundef %449)
  %.pre452 = load ptr, ptr %4, align 8, !tbaa !5
  br label %454

451:                                              ; preds = %441
  %452 = getelementptr inbounds i8, ptr %13, i64 4
  %453 = load float, ptr %452, align 4, !tbaa !134
  br label %454

454:                                              ; preds = %451, %445
  %455 = phi ptr [ %.pre452, %445 ], [ %436, %451 ]
  %456 = phi float [ %450, %445 ], [ %453, %451 ]
  %457 = getelementptr inbounds i8, ptr %455, i64 36
  store float %456, ptr %457, align 4, !tbaa !120
  br label %458

458:                                              ; preds = %454, %437, %.thread411
  %459 = phi ptr [ %436, %.thread411 ], [ %455, %454 ], [ %436, %437 ]
  %.0286 = phi i1 [ %50, %.thread411 ], [ true, %454 ], [ %50, %437 ]
  %460 = getelementptr inbounds i8, ptr %459, i64 129
  %461 = load i8, ptr %460, align 1, !tbaa !130, !range !66, !noundef !67
  %462 = trunc nuw i8 %461 to i1
  br i1 %462, label %464, label %463

463:                                              ; preds = %458
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %459)
  %.pre453 = load ptr, ptr %4, align 8, !tbaa !5
  br label %464

464:                                              ; preds = %419, %463, %458, %412, %413
  %465 = phi ptr [ %459, %458 ], [ %.pre453, %463 ], [ %.pre450, %419 ], [ %.pre450, %412 ], [ %.pre450, %413 ]
  %.1287 = phi i1 [ %.0286, %458 ], [ %.0286, %463 ], [ %50, %419 ], [ %50, %412 ], [ true, %413 ]
  %.2 = phi i1 [ %.1284, %458 ], [ %.1284, %463 ], [ %50, %419 ], [ %.0283, %412 ], [ %.0283, %413 ]
  %466 = getelementptr inbounds i8, ptr %465, i64 32
  %.sroa.043.0.copyload = load <2 x float>, ptr %466, align 8
  %467 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %465, <2 x float> %.sroa.043.0.copyload)
  %468 = load ptr, ptr %4, align 8, !tbaa !5
  %469 = getelementptr inbounds i8, ptr %468, i64 32
  store <2 x float> %467, ptr %469, align 8
  %470 = getelementptr inbounds i8, ptr %468, i64 129
  %471 = load i8, ptr %470, align 1, !tbaa !130, !range !66, !noundef !67
  %472 = trunc nuw i8 %471 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #14
  %.not365 = xor i1 %472, true
  %brmerge366 = select i1 %.not365, i1 true, i1 %144
  br i1 %brmerge366, label %479, label %473

473:                                              ; preds = %464
  %474 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(956) %468)
  %475 = extractvalue { <2 x float>, <2 x float> } %474, 0
  store <2 x float> %475, ptr %14, align 8
  %476 = getelementptr inbounds i8, ptr %14, i64 8
  %477 = extractvalue { <2 x float>, <2 x float> } %474, 1
  store <2 x float> %477, ptr %476, align 8
  %478 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %14)
  %.pre454 = load ptr, ptr %4, align 8, !tbaa !5
  br label %479

479:                                              ; preds = %464, %473
  %480 = phi ptr [ %.pre454, %473 ], [ %468, %464 ]
  %.sroa.041.0 = phi <2 x float> [ %478, %473 ], [ %467, %464 ]
  %481 = getelementptr inbounds i8, ptr %480, i64 24
  store <2 x float> %.sroa.041.0, ptr %481, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #14
  %482 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(956) %480)
  %483 = load ptr, ptr %4, align 8, !tbaa !5
  %484 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(956) %483)
  %485 = fadd float %482, %484
  br i1 %.0277.in, label %486, label %496

486:                                              ; preds = %479
  %487 = load ptr, ptr %4, align 8, !tbaa !5
  %488 = getelementptr inbounds i8, ptr %487, i64 152
  store i32 -1, ptr %488, align 8, !tbaa !135
  %brmerge367 = or i1 %.not317, %.0278.shrunk
  br i1 %brmerge367, label %496, label %489

489:                                              ; preds = %486
  %490 = getelementptr inbounds i8, ptr %33, i64 7112
  %491 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %490)
  %492 = getelementptr inbounds i8, ptr %491, i64 32
  %493 = load ptr, ptr %4, align 8, !tbaa !5
  %494 = getelementptr inbounds i8, ptr %493, i64 16
  %495 = load i64, ptr %492, align 8
  store i64 %495, ptr %494, align 8
  br label %496

496:                                              ; preds = %486, %489, %479
  br i1 %144, label %497, label %._crit_edge455

._crit_edge455:                                   ; preds = %496
  %.pre456 = load ptr, ptr %4, align 8, !tbaa !5
  br label %512

497:                                              ; preds = %496
  br i1 %142, label %.critedge2, label %498

498:                                              ; preds = %497
  %499 = getelementptr inbounds i8, ptr %141, i64 126
  %500 = load i8, ptr %499, align 2, !tbaa !107, !range !66, !noundef !67
  %501 = trunc nuw i8 %500 to i1
  br i1 %501, label %502, label %.critedge2

.critedge2:                                       ; preds = %497, %498
  call void @__assert_fail(ptr noundef nonnull @.str.97, ptr noundef nonnull @.str.3, i32 noundef 5722, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

502:                                              ; preds = %498
  %503 = getelementptr inbounds i8, ptr %141, i64 392
  %504 = load i32, ptr %503, align 8, !tbaa !136
  %505 = trunc i32 %504 to i16
  %506 = load ptr, ptr %4, align 8, !tbaa !5
  %507 = getelementptr inbounds i8, ptr %506, i64 140
  store i16 %505, ptr %507, align 4, !tbaa !92
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %503, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %.not317.not = xor i1 %.not317, true
  %brmerge368 = or i1 %.0278.shrunk, %.not317.not
  %brmerge369 = select i1 %brmerge368, i1 true, i1 %259
  %.pre457 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge369, label %512, label %508

508:                                              ; preds = %502
  %509 = getelementptr inbounds i8, ptr %141, i64 208
  %510 = getelementptr inbounds i8, ptr %.pre457, i64 16
  %511 = load i64, ptr %509, align 8
  store i64 %511, ptr %510, align 8
  br label %512

512:                                              ; preds = %._crit_edge455, %502, %508
  %513 = phi ptr [ %.pre456, %._crit_edge455 ], [ %.pre457, %502 ], [ %.pre457, %508 ]
  %514 = getelementptr inbounds i8, ptr %513, i64 176
  %515 = load float, ptr %514, align 8, !tbaa !137
  %516 = fcmp une float %515, 0x47EFFFFFE0000000
  br i1 %516, label %517, label %.critedge371

517:                                              ; preds = %512
  %518 = getelementptr inbounds i8, ptr %513, i64 160
  %519 = load i32, ptr %518, align 8, !tbaa !82
  %520 = icmp eq i32 %519, 0
  br i1 %520, label %521, label %.critedge371

521:                                              ; preds = %517
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #14
  %522 = getelementptr inbounds i8, ptr %513, i64 32
  %523 = getelementptr inbounds i8, ptr %513, i64 184
  %524 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %522, ptr noundef nonnull align 4 dereferenceable(8) %523)
  store <2 x float> %524, ptr %16, align 8
  %525 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %514, ptr noundef nonnull align 4 dereferenceable(8) %16)
  store <2 x float> %525, ptr %15, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %513, ptr noundef nonnull align 4 dereferenceable(8) %15, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #14
  br label %541

.critedge371:                                     ; preds = %512, %517
  %526 = and i32 %.1, 268435456
  %.not337 = icmp eq i32 %526, 0
  br i1 %.not337, label %531, label %527

527:                                              ; preds = %.critedge371
  %528 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %513)
  %529 = load ptr, ptr %4, align 8, !tbaa !5
  %530 = getelementptr inbounds i8, ptr %529, i64 16
  store <2 x float> %528, ptr %530, align 8
  br label %541

531:                                              ; preds = %.critedge371
  %brmerge372 = or i1 %.not317, %.0278.shrunk
  %brmerge374 = or i1 %brmerge372, %.not355
  br i1 %brmerge374, label %536, label %532

532:                                              ; preds = %531
  %533 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %513)
  %534 = load ptr, ptr %4, align 8, !tbaa !5
  %535 = getelementptr inbounds i8, ptr %534, i64 16
  store <2 x float> %533, ptr %535, align 8
  br label %541

536:                                              ; preds = %531
  %brmerge375 = or i1 %.not325, %.0278.shrunk
  %brmerge376 = select i1 %brmerge375, i1 true, i1 %259
  br i1 %brmerge376, label %541, label %537

537:                                              ; preds = %536
  %538 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %513)
  %539 = load ptr, ptr %4, align 8, !tbaa !5
  %540 = getelementptr inbounds i8, ptr %539, i64 16
  store <2 x float> %538, ptr %540, align 8
  br label %541

541:                                              ; preds = %536, %527, %537, %532, %521
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #14
  %542 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %543 = extractvalue { <2 x float>, <2 x float> } %542, 0
  store <2 x float> %543, ptr %17, align 8
  %544 = getelementptr inbounds i8, ptr %17, i64 8
  %545 = extractvalue { <2 x float>, <2 x float> } %542, 1
  store <2 x float> %545, ptr %544, align 8
  %brmerge377 = select i1 %.0278.shrunk, i1 true, i1 %144
  %.pre459 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge377, label %570, label %546

546:                                              ; preds = %541
  %547 = getelementptr inbounds i8, ptr %.pre459, i64 148
  %548 = load i8, ptr %547, align 4, !tbaa !131
  %549 = icmp slt i8 %548, 1
  br i1 %549, label %550, label %.thread495

550:                                              ; preds = %546
  %551 = getelementptr inbounds i8, ptr %.pre459, i64 149
  %552 = load i8, ptr %551, align 1, !tbaa !132
  %553 = icmp slt i8 %552, 1
  br i1 %553, label %554, label %.thread495

554:                                              ; preds = %550
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #14
  %555 = getelementptr inbounds i8, ptr %33, i64 5620
  %556 = getelementptr inbounds i8, ptr %33, i64 5628
  %557 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %555, ptr noundef nonnull align 4 dereferenceable(8) %556)
  store <2 x float> %557, ptr %18, align 8
  %558 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %17)
  %559 = fcmp ogt float %558, 0.000000e+00
  br i1 %559, label %560, label %565

560:                                              ; preds = %554
  %561 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %17)
  %562 = fcmp ogt float %561, 0.000000e+00
  br i1 %562, label %563, label %565

563:                                              ; preds = %560
  %564 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRectRK6ImVec2(ptr noundef %564, ptr noundef nonnull align 4 dereferenceable(16) %17, ptr noundef nonnull align 4 dereferenceable(8) %18)
  br label %565

565:                                              ; preds = %563, %560, %554
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #14
  %.pre458 = load ptr, ptr %4, align 8, !tbaa !5
  br label %.thread495

.thread495:                                       ; preds = %565, %550, %546
  %.ph = phi ptr [ %.pre459, %546 ], [ %.pre459, %550 ], [ %.pre458, %565 ]
  %566 = getelementptr inbounds i8, ptr %.ph, i64 16
  %567 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %566)
  %568 = load ptr, ptr %4, align 8, !tbaa !5
  %569 = getelementptr inbounds i8, ptr %568, i64 16
  store <2 x float> %567, ptr %569, align 8
  br label %575

570:                                              ; preds = %541
  %571 = getelementptr inbounds i8, ptr %.pre459, i64 16
  %572 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %571)
  %573 = load ptr, ptr %4, align 8, !tbaa !5
  %574 = getelementptr inbounds i8, ptr %573, i64 16
  store <2 x float> %572, ptr %574, align 8
  br i1 %144, label %578, label %575

575:                                              ; preds = %.thread495, %570
  %576 = phi ptr [ %568, %.thread495 ], [ %573, %570 ]
  %577 = and i32 %.1, 201326592
  %or.cond379.not.not = icmp eq i32 %577, 67108864
  %. = select i1 %or.cond379.not.not, i64 5520, i64 5484
  br label %578

578:                                              ; preds = %575, %570
  %.sink = phi i64 [ 5512, %570 ], [ %., %575 ]
  %579 = phi ptr [ %573, %570 ], [ %576, %575 ]
  %580 = getelementptr inbounds i8, ptr %33, i64 %.sink
  %581 = load float, ptr %580, align 4, !tbaa !110
  %582 = getelementptr inbounds i8, ptr %579, i64 64
  store float %581, ptr %582, align 8, !tbaa !138
  %583 = and i32 %.1, 4096
  %.not340 = icmp eq i32 %583, 0
  %or.cond380.not = select i1 %.0277.in, i1 %.not340, i1 false
  %brmerge405.not = and i1 %.not317, %or.cond380.not
  %584 = icmp eq i32 %258, 0
  %spec.select429 = select i1 %brmerge405.not, i1 %584, i1 %or.cond380.not
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #14
  store i32 -1, ptr %19, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %20, i8 0, i64 16, i1 false)
  %585 = getelementptr inbounds i8, ptr %33, i64 203
  %586 = load i8, ptr %585, align 1, !tbaa !139, !range !66, !noundef !67
  %587 = trunc nuw i8 %586 to i1
  %588 = select i1 %587, i32 2, i32 1
  %589 = getelementptr inbounds i8, ptr %33, i64 6432
  %590 = load float, ptr %589, align 8, !tbaa !140
  %591 = fmul float %590, 0x3FF59999A0000000
  %592 = fadd float %581, 1.000000e+00
  %593 = call float @llvm.fmuladd.f32(float %590, float 0x3FC99999A0000000, float %592)
  %594 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %591, float noundef %593)
  %595 = fptosi float %594 to i32
  %596 = sitofp i32 %595 to float
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = getelementptr inbounds i8, ptr %597, i64 129
  %599 = load i8, ptr %598, align 1, !tbaa !130, !range !66, !noundef !67
  %600 = trunc nuw i8 %599 to i1
  br i1 %600, label %603, label %601

601:                                              ; preds = %578
  %602 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(ptr noundef nonnull %597, ptr noundef nonnull align 4 dereferenceable(8) %13, ptr noundef nonnull %19, i32 noundef %588, ptr noundef nonnull %20)
  %spec.select382 = or i1 %602, %.1287
  %spec.select383 = or i1 %602, %.2
  %.pre460 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre460, i64 129
  %.pre461 = load i8, ptr %.phi.trans.insert, align 1, !tbaa !130, !range !66
  br label %603

603:                                              ; preds = %601, %578
  %604 = phi i8 [ %599, %578 ], [ %.pre461, %601 ]
  %605 = phi ptr [ %597, %578 ], [ %.pre460, %601 ]
  %.2288 = phi i1 [ %.1287, %578 ], [ %spec.select382, %601 ]
  %.3 = phi i1 [ %.2, %578 ], [ %spec.select383, %601 ]
  %606 = load i32, ptr %19, align 4, !tbaa !98
  %607 = trunc i32 %606 to i8
  %608 = getelementptr inbounds i8, ptr %605, i64 136
  store i8 %607, ptr %608, align 8, !tbaa !141
  %609 = trunc nuw i8 %604 to i1
  br i1 %609, label %700, label %610

610:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #14
  %611 = getelementptr inbounds i8, ptr %605, i64 32
  %612 = load float, ptr %611, align 8, !tbaa !118
  %613 = getelementptr inbounds i8, ptr %605, i64 36
  %614 = load float, ptr %613, align 4, !tbaa !120
  %615 = fsub float %614, %485
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef %612, float noundef %615)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #14
  %616 = load ptr, ptr %4, align 8, !tbaa !5
  %617 = getelementptr inbounds i8, ptr %616, i64 552
  %618 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %617)
  store <2 x float> %618, ptr %22, align 8
  %619 = load ptr, ptr %4, align 8, !tbaa !5
  %620 = getelementptr inbounds i8, ptr %619, i64 116
  %621 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %22, ptr noundef nonnull align 4 dereferenceable(8) %620)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #14
  br i1 %50, label %622, label %623

622:                                              ; preds = %610
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %629

623:                                              ; preds = %610
  %624 = load ptr, ptr %4, align 8, !tbaa !5
  %625 = getelementptr inbounds i8, ptr %624, i64 40
  %626 = getelementptr inbounds i8, ptr %624, i64 56
  %627 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %626, float noundef 2.000000e+00)
  store <2 x float> %627, ptr %24, align 8
  %628 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %625, ptr noundef nonnull align 4 dereferenceable(8) %24)
  store <2 x float> %628, ptr %23, align 8
  br label %629

629:                                              ; preds = %623, %622
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #14
  %630 = load float, ptr %21, align 4
  %.sroa.024.0.vec.extract = extractelement <2 x float> %621, i64 0
  %631 = select i1 %.3, float %630, float %.sroa.024.0.vec.extract
  %632 = getelementptr inbounds i8, ptr %21, i64 4
  %633 = load float, ptr %632, align 4
  %.sroa.024.4.vec.extract = extractelement <2 x float> %621, i64 1
  %634 = select i1 %.2288, float %633, float %.sroa.024.4.vec.extract
  %635 = and i32 %.1, 16384
  %.not341 = icmp eq i32 %635, 0
  br i1 %.not341, label %636, label %.thread412

636:                                              ; preds = %629
  %637 = getelementptr inbounds i8, ptr %23, i64 4
  %638 = load float, ptr %637, align 4, !tbaa !134
  %639 = fcmp ogt float %638, %634
  %640 = and i32 %.1, 8
  %.not342 = icmp eq i32 %640, 0
  %641 = select i1 %639, i1 %.not342, i1 false
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  %643 = getelementptr inbounds i8, ptr %642, i64 125
  %644 = zext i1 %641 to i8
  store i8 %644, ptr %643, align 1, !tbaa !142
  %645 = and i32 %.1, 32768
  %.not343 = icmp eq i32 %645, 0
  br i1 %.not343, label %651, label %.thread417

.thread412:                                       ; preds = %629
  %646 = load ptr, ptr %4, align 8, !tbaa !5
  %647 = getelementptr inbounds i8, ptr %646, i64 125
  store i8 1, ptr %647, align 1, !tbaa !142
  %648 = and i32 %.1, 32768
  %.not343413 = icmp eq i32 %648, 0
  br i1 %.not343413, label %.thread414, label %.thread417.thread

.thread417.thread:                                ; preds = %.thread412
  %649 = getelementptr inbounds i8, ptr %646, i64 124
  store i8 1, ptr %649, align 4, !tbaa !143
  br label %.thread500

.thread414:                                       ; preds = %.thread412
  %650 = load float, ptr %23, align 8, !tbaa !144
  %.pre491 = and i32 %.1, 8
  br label %653

651:                                              ; preds = %636
  %652 = load float, ptr %23, align 8, !tbaa !144
  br i1 %641, label %653, label %659

653:                                              ; preds = %.thread414, %651
  %.pre489.pre-phi = phi i32 [ %.pre491, %.thread414 ], [ 0, %651 ]
  %654 = phi float [ %650, %.thread414 ], [ %652, %651 ]
  %655 = phi ptr [ %646, %.thread414 ], [ %642, %651 ]
  %656 = phi ptr [ %647, %.thread414 ], [ %643, %651 ]
  %657 = getelementptr inbounds i8, ptr %33, i64 5576
  %658 = load float, ptr %657, align 4, !tbaa !145
  br label %659

659:                                              ; preds = %651, %653
  %.pre-phi = phi i32 [ %640, %651 ], [ %.pre489.pre-phi, %653 ]
  %660 = phi i8 [ 0, %651 ], [ 1, %653 ]
  %661 = phi float [ %652, %651 ], [ %654, %653 ]
  %662 = phi i1 [ false, %651 ], [ true, %653 ]
  %663 = phi ptr [ %642, %651 ], [ %655, %653 ]
  %664 = phi ptr [ %643, %651 ], [ %656, %653 ]
  %665 = phi float [ 0.000000e+00, %651 ], [ %658, %653 ]
  %666 = fsub float %631, %665
  %667 = fcmp ogt float %661, %666
  %.not344 = icmp eq i32 %.pre-phi, 0
  %or.cond384 = select i1 %667, i1 %.not344, i1 false
  br i1 %or.cond384, label %670, label %.thread418

.thread418:                                       ; preds = %659
  %668 = getelementptr inbounds i8, ptr %663, i64 124
  store i8 0, ptr %668, align 4, !tbaa !143
  br label %682

.thread417:                                       ; preds = %636
  %669 = getelementptr inbounds i8, ptr %642, i64 124
  store i8 1, ptr %669, align 4, !tbaa !143
  br i1 %641, label %.thread500, label %674

670:                                              ; preds = %659
  %671 = and i32 %.1, 2048
  %.not433 = icmp eq i32 %671, 0
  %672 = getelementptr inbounds i8, ptr %663, i64 124
  %.lobit = lshr exact i32 %671, 11
  %673 = trunc nuw nsw i32 %.lobit to i8
  store i8 %673, ptr %672, align 4, !tbaa !143
  %brmerge431 = or i1 %.not433, %662
  %not..not433 = xor i1 %.not433, true
  br i1 %brmerge431, label %682, label %._crit_edge462

._crit_edge462:                                   ; preds = %670
  %.phi.trans.insert463 = getelementptr inbounds i8, ptr %23, i64 4
  %.pre464 = load float, ptr %.phi.trans.insert463, align 4, !tbaa !134
  br label %674

674:                                              ; preds = %._crit_edge462, %.thread417
  %.pre-phi490 = phi i32 [ 0, %._crit_edge462 ], [ %640, %.thread417 ]
  %675 = phi float [ %.pre464, %._crit_edge462 ], [ %638, %.thread417 ]
  %676 = phi ptr [ %664, %._crit_edge462 ], [ %643, %.thread417 ]
  %677 = fcmp ogt float %675, %634
  %.not345 = icmp eq i32 %.pre-phi490, 0
  %678 = select i1 %677, i1 %.not345, i1 false
  %679 = zext i1 %678 to i8
  store i8 %679, ptr %676, align 1, !tbaa !142
  br label %682

.thread500:                                       ; preds = %.thread417.thread, %.thread417
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #14
  %680 = getelementptr inbounds i8, ptr %33, i64 5576
  %681 = load float, ptr %680, align 4, !tbaa !145
  br label %690

682:                                              ; preds = %670, %.thread418, %674
  %683 = phi i8 [ %679, %674 ], [ %660, %670 ], [ %660, %.thread418 ]
  %684 = phi i1 [ true, %674 ], [ %not..not433, %670 ], [ false, %.thread418 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #14
  %685 = trunc nuw i8 %683 to i1
  br i1 %685, label %686, label %689

686:                                              ; preds = %682
  %687 = getelementptr inbounds i8, ptr %33, i64 5576
  %688 = load float, ptr %687, align 4, !tbaa !145
  br i1 %684, label %690, label %694

689:                                              ; preds = %682
  br i1 %684, label %690, label %694

690:                                              ; preds = %.thread500, %686, %689
  %691 = phi float [ %688, %686 ], [ 0.000000e+00, %689 ], [ %681, %.thread500 ]
  %692 = getelementptr inbounds i8, ptr %33, i64 5576
  %693 = load float, ptr %692, align 4, !tbaa !145
  br label %694

694:                                              ; preds = %686, %689, %690
  %695 = phi float [ %691, %690 ], [ 0.000000e+00, %689 ], [ %688, %686 ]
  %696 = phi float [ %693, %690 ], [ 0.000000e+00, %689 ], [ 0.000000e+00, %686 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %25, float noundef %695, float noundef %696)
  %697 = load ptr, ptr %4, align 8, !tbaa !5
  %698 = getelementptr inbounds i8, ptr %697, i64 116
  %699 = load i64, ptr %25, align 8
  store i64 %699, ptr %698, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #14
  br label %700

700:                                              ; preds = %694, %603
  %701 = phi ptr [ %697, %694 ], [ %605, %603 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #14
  %702 = and i32 %.1, 83886080
  %brmerge387.demorgan = icmp ne i32 %702, 16777216
  %703 = getelementptr inbounds i8, ptr %141, i64 600
  %704 = or i1 %brmerge387.demorgan, %259
  %705 = select i1 %704, ptr %17, ptr %703
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull align 4 dereferenceable(16) %705, i64 16, i1 false), !tbaa.struct !109
  %706 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %701)
  %707 = extractvalue { <2 x float>, <2 x float> } %706, 0
  %708 = extractvalue { <2 x float>, <2 x float> } %706, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #14
  %709 = load ptr, ptr %4, align 8, !tbaa !5
  %710 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(956) %709)
  %711 = extractvalue { <2 x float>, <2 x float> } %710, 0
  store <2 x float> %711, ptr %27, align 8
  %712 = getelementptr inbounds i8, ptr %27, i64 8
  %713 = extractvalue { <2 x float>, <2 x float> } %710, 1
  store <2 x float> %713, ptr %712, align 8
  %714 = load ptr, ptr %4, align 8, !tbaa !5
  %715 = getelementptr inbounds i8, ptr %714, i64 536
  store <2 x float> %707, ptr %715, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %714, i64 544
  store <2 x float> %708, ptr %.sroa.4.0..sroa_idx, align 8
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %715, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %716 = load ptr, ptr %4, align 8
  %717 = getelementptr inbounds i8, ptr %716, i64 16
  %718 = getelementptr inbounds i8, ptr %716, i64 552
  %719 = getelementptr inbounds i8, ptr %716, i64 556
  %720 = getelementptr inbounds i8, ptr %716, i64 24
  %721 = getelementptr inbounds i8, ptr %716, i64 116
  %722 = getelementptr inbounds i8, ptr %716, i64 560
  %723 = load <2 x float>, ptr %717, align 8, !tbaa !110
  %724 = extractelement <2 x float> %723, i64 0
  store float %724, ptr %718, align 8, !tbaa !146
  %725 = extractelement <2 x float> %723, i64 1
  %726 = fadd float %485, %725
  store float %726, ptr %719, align 4, !tbaa !147
  %727 = load <2 x float>, ptr %720, align 8, !tbaa !110
  %728 = fadd <2 x float> %723, %727
  %729 = load <2 x float>, ptr %721, align 4, !tbaa !110
  %730 = fsub <2 x float> %728, %729
  store <2 x float> %730, ptr %722, align 8, !tbaa !110
  %731 = and i32 %.1, 1025
  %brmerge389.not = icmp eq i32 %731, 1
  %732 = getelementptr inbounds i8, ptr %33, i64 5540
  %733 = getelementptr inbounds i8, ptr %716, i64 68
  %.in347 = select i1 %brmerge389.not, ptr %733, ptr %732
  %734 = load float, ptr %.in347, align 4, !tbaa !110
  %735 = fadd float %724, 5.000000e-01
  %736 = getelementptr inbounds i8, ptr %716, i64 56
  %737 = load float, ptr %736, align 8, !tbaa !148
  %738 = fmul float %737, 5.000000e-01
  %739 = call noundef float @_ZL7ImFloorf(float noundef %738)
  %740 = load ptr, ptr %4, align 8, !tbaa !5
  %741 = getelementptr inbounds i8, ptr %740, i64 68
  %742 = load float, ptr %741, align 4, !tbaa !122
  %743 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %739, float noundef %742)
  %744 = fadd float %735, %743
  %745 = call noundef float @_ZL7ImFloorf(float noundef %744)
  %746 = load ptr, ptr %4, align 8, !tbaa !5
  %747 = getelementptr inbounds i8, ptr %746, i64 568
  store float %745, ptr %747, align 8, !tbaa !149
  %748 = getelementptr inbounds i8, ptr %746, i64 556
  %749 = load float, ptr %748, align 4, !tbaa !147
  %750 = fadd float %749, 5.000000e-01
  %751 = fadd float %734, %750
  %752 = call noundef float @_ZL7ImFloorf(float noundef %751)
  %753 = load ptr, ptr %4, align 8, !tbaa !5
  %754 = getelementptr inbounds i8, ptr %753, i64 572
  store float %752, ptr %754, align 4, !tbaa !150
  %755 = getelementptr inbounds i8, ptr %753, i64 560
  %756 = load float, ptr %755, align 8, !tbaa !151
  %757 = fadd float %756, 5.000000e-01
  %758 = getelementptr inbounds i8, ptr %753, i64 56
  %759 = load float, ptr %758, align 8, !tbaa !148
  %760 = fmul float %759, 5.000000e-01
  %761 = call noundef float @_ZL7ImFloorf(float noundef %760)
  %762 = load ptr, ptr %4, align 8, !tbaa !5
  %763 = getelementptr inbounds i8, ptr %762, i64 68
  %764 = load float, ptr %763, align 4, !tbaa !122
  %765 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %761, float noundef %764)
  %766 = fsub float %757, %765
  %767 = call noundef float @_ZL7ImFloorf(float noundef %766)
  %768 = load ptr, ptr %4, align 8, !tbaa !5
  %769 = getelementptr inbounds i8, ptr %768, i64 576
  store float %767, ptr %769, align 8, !tbaa !152
  %770 = getelementptr inbounds i8, ptr %768, i64 564
  %771 = load float, ptr %770, align 4, !tbaa !153
  %772 = fadd float %771, 5.000000e-01
  %773 = getelementptr inbounds i8, ptr %768, i64 68
  %774 = load float, ptr %773, align 4, !tbaa !122
  %775 = fsub float %772, %774
  %776 = call noundef float @_ZL7ImFloorf(float noundef %775)
  %777 = load ptr, ptr %4, align 8, !tbaa !5
  %778 = getelementptr inbounds i8, ptr %777, i64 580
  store float %776, ptr %778, align 4, !tbaa !154
  %779 = getelementptr inbounds i8, ptr %777, i64 568
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %779, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %780 = load ptr, ptr %4, align 8, !tbaa !5
  %781 = getelementptr inbounds i8, ptr %780, i64 24
  %782 = load float, ptr %781, align 8, !tbaa !119
  %783 = fcmp ule float %782, 0.000000e+00
  %.not325.not = xor i1 %.not325, true
  %brmerge391 = select i1 %783, i1 true, i1 %.not325.not
  %brmerge392 = or i1 %.not336, %brmerge391
  br i1 %brmerge392, label %786, label %784

784:                                              ; preds = %700
  %785 = fmul float %782, 0x3FE4CCCCC0000000
  br label %789

786:                                              ; preds = %700
  %787 = load float, ptr %589, align 8, !tbaa !140
  %788 = fmul float %787, 1.600000e+01
  br label %789

789:                                              ; preds = %786, %784
  %.sink505 = phi float [ %788, %786 ], [ %785, %784 ]
  %790 = call noundef float @_ZL7ImFloorf(float noundef %.sink505)
  %.sink504 = load ptr, ptr %4, align 8, !tbaa !5
  %791 = getelementptr inbounds i8, ptr %.sink504, i64 640
  store float %790, ptr %791, align 8, !tbaa !155
  %792 = getelementptr inbounds i8, ptr %.sink504, i64 40
  %793 = load float, ptr %792, align 8, !tbaa !156
  %794 = getelementptr inbounds i8, ptr %.sink504, i64 56
  %795 = load float, ptr %794, align 8, !tbaa !148
  %796 = call float @llvm.fmuladd.f32(float %795, float 2.000000e+00, float %793)
  %797 = getelementptr inbounds i8, ptr %.sink504, i64 552
  %798 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %797)
  %799 = fsub float %796, %798
  %800 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %799)
  %801 = load ptr, ptr %4, align 8, !tbaa !5
  %802 = getelementptr inbounds i8, ptr %801, i64 92
  store float %800, ptr %802, align 4, !tbaa !157
  %803 = getelementptr inbounds i8, ptr %801, i64 44
  %804 = load float, ptr %803, align 4, !tbaa !158
  %805 = getelementptr inbounds i8, ptr %801, i64 60
  %806 = load float, ptr %805, align 4, !tbaa !159
  %807 = call float @llvm.fmuladd.f32(float %806, float 2.000000e+00, float %804)
  %808 = getelementptr inbounds i8, ptr %801, i64 552
  %809 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %808)
  %810 = fsub float %807, %809
  %811 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %810)
  %812 = load ptr, ptr %4, align 8, !tbaa !5
  %813 = getelementptr inbounds i8, ptr %812, i64 96
  store float %811, ptr %813, align 4, !tbaa !160
  %814 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef %812, i1 noundef zeroext true)
  %815 = load ptr, ptr %4, align 8, !tbaa !5
  %816 = getelementptr inbounds i8, ptr %815, i64 84
  store <2 x float> %814, ptr %816, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %817 = load ptr, ptr %4, align 8, !tbaa !5
  %818 = getelementptr inbounds i8, ptr %817, i64 100
  %819 = load i64, ptr %28, align 8
  store i64 %819, ptr %818, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #14
  %820 = getelementptr inbounds i8, ptr %817, i64 688
  %821 = load ptr, ptr %820, align 8, !tbaa !161
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168) %821)
  %822 = load ptr, ptr %4, align 8, !tbaa !5
  %823 = getelementptr inbounds i8, ptr %822, i64 688
  %824 = load ptr, ptr %823, align 8, !tbaa !161
  %825 = getelementptr inbounds i8, ptr %33, i64 6424
  %826 = load ptr, ptr %825, align 8, !tbaa !162
  %827 = getelementptr inbounds i8, ptr %826, i64 72
  %828 = load ptr, ptr %827, align 8, !tbaa !163
  %829 = getelementptr inbounds i8, ptr %828, i64 8
  %830 = load ptr, ptr %829, align 8, !tbaa !164
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %824, ptr noundef %830)
  %831 = getelementptr inbounds i8, ptr %26, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %831, i1 noundef zeroext false)
  %832 = and i32 %.1, 134217728
  %.not348 = icmp eq i32 %832, 0
  br i1 %.not348, label %842, label %833

833:                                              ; preds = %789
  %834 = load ptr, ptr %4, align 8, !tbaa !5
  %835 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  %836 = icmp eq ptr %834, %835
  br i1 %836, label %837, label %842

837:                                              ; preds = %833
  %838 = load ptr, ptr %4, align 8, !tbaa !5
  %839 = getelementptr inbounds i8, ptr %838, i64 160
  %840 = load i32, ptr %839, align 8, !tbaa !82
  %841 = icmp slt i32 %840, 1
  br label %842

842:                                              ; preds = %837, %833, %789
  %843 = phi i1 [ false, %833 ], [ false, %789 ], [ %841, %837 ]
  %844 = getelementptr inbounds i8, ptr %33, i64 7416
  %845 = load ptr, ptr %844, align 8, !tbaa !168
  %.not349 = icmp eq ptr %845, null
  br i1 %.not349, label %851, label %846

846:                                              ; preds = %842
  %847 = load ptr, ptr %4, align 8, !tbaa !5
  %848 = getelementptr inbounds i8, ptr %845, i64 872
  %849 = load ptr, ptr %848, align 8, !tbaa !169
  %850 = icmp eq ptr %847, %849
  br label %851

851:                                              ; preds = %846, %842
  %852 = phi i1 [ false, %842 ], [ %850, %846 ]
  %brmerge393 = select i1 %843, i1 true, i1 %852
  br i1 %brmerge393, label %853, label %860

853:                                              ; preds = %851
  %.mux = select i1 %843, i32 47, i32 46
  %854 = getelementptr inbounds i8, ptr %33, i64 7576
  %855 = load float, ptr %854, align 8, !tbaa !170
  %856 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %.mux, float noundef %855)
  %857 = load ptr, ptr %4, align 8, !tbaa !5
  %858 = getelementptr inbounds i8, ptr %857, i64 688
  %859 = load ptr, ptr %858, align 8, !tbaa !161
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %859, ptr noundef nonnull align 4 dereferenceable(8) %17, ptr noundef nonnull align 4 dereferenceable(8) %544, i32 noundef %856, float noundef 0.000000e+00, i32 noundef 15)
  br label %860

860:                                              ; preds = %851, %853
  br i1 %852, label %861, label %883

861:                                              ; preds = %860
  %862 = load ptr, ptr %4, align 8, !tbaa !5
  %863 = load ptr, ptr %844, align 8, !tbaa !168
  %864 = icmp eq ptr %862, %863
  br i1 %864, label %865, label %883

865:                                              ; preds = %861
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #14
  %866 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %862)
  %867 = extractvalue { <2 x float>, <2 x float> } %866, 0
  store <2 x float> %867, ptr %29, align 8
  %868 = getelementptr inbounds i8, ptr %29, i64 8
  %869 = extractvalue { <2 x float>, <2 x float> } %866, 1
  store <2 x float> %869, ptr %868, align 8
  %870 = load float, ptr %589, align 8, !tbaa !140
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %29, float noundef %870)
  %871 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %29, ptr noundef nonnull align 4 dereferenceable(16) %17)
  br i1 %871, label %882, label %872

872:                                              ; preds = %865
  %873 = load ptr, ptr %4, align 8, !tbaa !5
  %874 = getelementptr inbounds i8, ptr %873, i64 688
  %875 = load ptr, ptr %874, align 8, !tbaa !161
  %876 = getelementptr inbounds i8, ptr %33, i64 7436
  %877 = load float, ptr %876, align 4, !tbaa !171
  %878 = fmul float %877, 2.500000e-01
  %879 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %878)
  %880 = getelementptr inbounds i8, ptr %33, i64 5484
  %881 = load float, ptr %880, align 4, !tbaa !172
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %875, ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %868, i32 noundef %879, float noundef %881, i32 noundef 15)
  br label %882

882:                                              ; preds = %872, %865
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #14
  br label %883

883:                                              ; preds = %882, %861, %860
  br i1 %704, label %.thread420, label %884

884:                                              ; preds = %883
  %885 = load ptr, ptr %4, align 8, !tbaa !5
  %886 = getelementptr inbounds i8, ptr %885, i64 688
  %887 = load ptr, ptr %886, align 8, !tbaa !161
  %888 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %887)
  %889 = load i32, ptr %888, align 8, !tbaa !173
  %890 = icmp eq i32 %889, 0
  br i1 %890, label %891, label %.thread420

891:                                              ; preds = %884
  %892 = getelementptr inbounds i8, ptr %141, i64 688
  %893 = load ptr, ptr %892, align 8, !tbaa !161
  %894 = getelementptr inbounds i8, ptr %893, i64 32
  %895 = load i32, ptr %894, align 8, !tbaa !175
  %896 = icmp sgt i32 %895, 0
  br i1 %896, label %897, label %.thread420

897:                                              ; preds = %891
  %898 = load ptr, ptr %4, align 8, !tbaa !5
  %899 = getelementptr inbounds i8, ptr %898, i64 688
  store ptr %893, ptr %899, align 8, !tbaa !161
  br label %.thread420

.thread420:                                       ; preds = %883, %884, %897, %891
  %.0285422 = phi i1 [ true, %897 ], [ false, %891 ], [ false, %884 ], [ false, %883 ]
  %900 = getelementptr inbounds i8, ptr %33, i64 7408
  %901 = load ptr, ptr %900, align 8, !tbaa !176
  %.not350 = icmp eq ptr %901, null
  br i1 %.not350, label %902, label %905

902:                                              ; preds = %.thread420
  %903 = getelementptr inbounds i8, ptr %33, i64 7128
  %904 = load ptr, ptr %903, align 8, !tbaa !177
  br label %905

905:                                              ; preds = %.thread420, %902
  %906 = phi ptr [ %904, %902 ], [ %901, %.thread420 ]
  br i1 %spec.select429, label %._crit_edge465, label %907

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

907:                                              ; preds = %905
  %.not351 = icmp eq ptr %906, null
  %.pre467 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not351, label %914, label %908

908:                                              ; preds = %907
  %909 = getelementptr inbounds i8, ptr %.pre467, i64 880
  %910 = load ptr, ptr %909, align 8, !tbaa !178
  %911 = getelementptr inbounds i8, ptr %906, i64 880
  %912 = load ptr, ptr %911, align 8, !tbaa !178
  %913 = icmp eq ptr %910, %912
  br label %914

914:                                              ; preds = %._crit_edge465, %907, %908
  %915 = phi ptr [ %.pre466, %._crit_edge465 ], [ %.pre467, %907 ], [ %.pre467, %908 ]
  %916 = phi i1 [ true, %._crit_edge465 ], [ false, %907 ], [ %913, %908 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef %915, ptr noundef nonnull align 4 dereferenceable(16) %27, i1 noundef zeroext %916, i32 noundef %588, ptr noundef nonnull %20, float noundef %596)
  %.pre468 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.0285422, label %917, label %920

917:                                              ; preds = %914
  %918 = getelementptr inbounds i8, ptr %.pre468, i64 696
  %919 = getelementptr inbounds i8, ptr %.pre468, i64 688
  store ptr %918, ptr %919, align 8, !tbaa !161
  br label %920

920:                                              ; preds = %917, %914
  %921 = load ptr, ptr %844, align 8, !tbaa !168
  %922 = icmp eq ptr %921, %.pre468
  br i1 %922, label %923, label %949

923:                                              ; preds = %920
  %924 = getelementptr inbounds i8, ptr %.pre468, i64 64
  %925 = load float, ptr %924, align 8, !tbaa !138
  %926 = getelementptr inbounds i8, ptr %33, i64 5484
  %927 = load float, ptr %926, align 4, !tbaa !172
  %928 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %925, float noundef %927)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #14
  %929 = load ptr, ptr %4, align 8, !tbaa !5
  %930 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %929)
  %931 = extractvalue { <2 x float>, <2 x float> } %930, 0
  store <2 x float> %931, ptr %30, align 8
  %932 = getelementptr inbounds i8, ptr %30, i64 8
  %933 = extractvalue { <2 x float>, <2 x float> } %930, 1
  store <2 x float> %933, ptr %932, align 8
  %934 = load float, ptr %589, align 8, !tbaa !140
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %30, float noundef %934)
  %935 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %30, ptr noundef nonnull align 4 dereferenceable(16) %17)
  br i1 %935, label %936, label %._crit_edge469

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

936:                                              ; preds = %923
  %937 = load float, ptr %589, align 8, !tbaa !140
  %938 = fsub float -1.000000e+00, %937
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %30, float noundef %938)
  %939 = load ptr, ptr %4, align 8, !tbaa !5
  %940 = getelementptr inbounds i8, ptr %939, i64 64
  %941 = load float, ptr %940, align 8, !tbaa !138
  br label %942

942:                                              ; preds = %._crit_edge469, %936
  %943 = phi ptr [ %939, %936 ], [ %.pre470, %._crit_edge469 ]
  %.0281 = phi float [ %941, %936 ], [ %928, %._crit_edge469 ]
  %944 = getelementptr inbounds i8, ptr %943, i64 688
  %945 = load ptr, ptr %944, align 8, !tbaa !161
  %946 = getelementptr inbounds i8, ptr %33, i64 7436
  %947 = load float, ptr %946, align 4, !tbaa !171
  %948 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %947)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %945, ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %932, i32 noundef %948, float noundef %.0281, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #14
  %.pre471 = load ptr, ptr %4, align 8, !tbaa !5
  br label %949

949:                                              ; preds = %942, %920
  %950 = phi ptr [ %.pre471, %942 ], [ %.pre468, %920 ]
  %951 = and i32 %.1, 8
  %.not352 = icmp eq i32 %951, 0
  %952 = getelementptr inbounds i8, ptr %950, i64 48
  %953 = load float, ptr %952, align 8, !tbaa !179
  %954 = fcmp une float %953, 0.000000e+00
  br i1 %954, label %973, label %955

955:                                              ; preds = %949
  %956 = and i32 %.1, 2056
  %957 = icmp eq i32 %956, 2048
  br i1 %957, label %958, label %961

958:                                              ; preds = %955
  %959 = getelementptr inbounds i8, ptr %950, i64 40
  %960 = load float, ptr %959, align 8, !tbaa !156
  br label %961

961:                                              ; preds = %955, %958
  %962 = phi float [ %960, %958 ], [ 0.000000e+00, %955 ]
  %963 = getelementptr inbounds i8, ptr %950, i64 24
  %964 = load float, ptr %963, align 8, !tbaa !119
  %965 = getelementptr inbounds i8, ptr %950, i64 56
  %966 = load float, ptr %965, align 8, !tbaa !148
  %967 = fneg float %966
  %968 = call float @llvm.fmuladd.f32(float %967, float 2.000000e+00, float %964)
  %969 = getelementptr inbounds i8, ptr %950, i64 116
  %970 = load float, ptr %969, align 4, !tbaa !180
  %971 = fsub float %968, %970
  %972 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %962, float noundef %971)
  %.pre472 = load ptr, ptr %4, align 8, !tbaa !5
  br label %973

973:                                              ; preds = %949, %961
  %974 = phi ptr [ %.pre472, %961 ], [ %950, %949 ]
  %975 = phi float [ %972, %961 ], [ %953, %949 ]
  %976 = getelementptr inbounds i8, ptr %974, i64 52
  %977 = load float, ptr %976, align 4, !tbaa !181
  %978 = fcmp une float %977, 0.000000e+00
  br i1 %978, label %996, label %979

979:                                              ; preds = %973
  br i1 %.not352, label %980, label %983

980:                                              ; preds = %979
  %981 = getelementptr inbounds i8, ptr %974, i64 44
  %982 = load float, ptr %981, align 4, !tbaa !158
  br label %983

983:                                              ; preds = %979, %980
  %984 = phi float [ %982, %980 ], [ 0.000000e+00, %979 ]
  %985 = getelementptr inbounds i8, ptr %974, i64 28
  %986 = load float, ptr %985, align 4, !tbaa !121
  %987 = getelementptr inbounds i8, ptr %974, i64 60
  %988 = load float, ptr %987, align 4, !tbaa !159
  %989 = fneg float %988
  %990 = call float @llvm.fmuladd.f32(float %989, float 2.000000e+00, float %986)
  %991 = fsub float %990, %485
  %992 = getelementptr inbounds i8, ptr %974, i64 120
  %993 = load float, ptr %992, align 4, !tbaa !182
  %994 = fsub float %991, %993
  %995 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %984, float noundef %994)
  %.pre473 = load ptr, ptr %4, align 8, !tbaa !5
  br label %996

996:                                              ; preds = %973, %983
  %997 = phi ptr [ %.pre473, %983 ], [ %974, %973 ]
  %998 = phi float [ %995, %983 ], [ %977, %973 ]
  %999 = getelementptr inbounds i8, ptr %997, i64 552
  %1000 = load float, ptr %999, align 8, !tbaa !146
  %1001 = getelementptr inbounds i8, ptr %997, i64 84
  %1002 = load float, ptr %1001, align 4, !tbaa !183
  %1003 = fsub float %1000, %1002
  %1004 = getelementptr inbounds i8, ptr %997, i64 56
  %1005 = load float, ptr %1004, align 8, !tbaa !148
  %1006 = getelementptr inbounds i8, ptr %997, i64 68
  %1007 = load float, ptr %1006, align 4, !tbaa !122
  %1008 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1005, float noundef %1007)
  %1009 = fadd float %1003, %1008
  %1010 = call noundef float @_ZL7ImFloorf(float noundef %1009)
  %1011 = load ptr, ptr %4, align 8, !tbaa !5
  %1012 = getelementptr inbounds i8, ptr %1011, i64 584
  store float %1010, ptr %1012, align 8, !tbaa !184
  %1013 = getelementptr inbounds i8, ptr %1011, i64 556
  %1014 = load float, ptr %1013, align 4, !tbaa !147
  %1015 = getelementptr inbounds i8, ptr %1011, i64 88
  %1016 = load float, ptr %1015, align 4, !tbaa !185
  %1017 = fsub float %1014, %1016
  %1018 = getelementptr inbounds i8, ptr %1011, i64 60
  %1019 = load float, ptr %1018, align 4, !tbaa !159
  %1020 = getelementptr inbounds i8, ptr %1011, i64 68
  %1021 = load float, ptr %1020, align 4, !tbaa !122
  %1022 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1019, float noundef %1021)
  %1023 = fadd float %1017, %1022
  %1024 = call noundef float @_ZL7ImFloorf(float noundef %1023)
  %1025 = load ptr, ptr %4, align 8, !tbaa !5
  %1026 = getelementptr inbounds i8, ptr %1025, i64 588
  store float %1024, ptr %1026, align 4, !tbaa !186
  %1027 = getelementptr inbounds i8, ptr %1025, i64 584
  %1028 = load float, ptr %1027, align 8, !tbaa !184
  %1029 = getelementptr inbounds i8, ptr %1025, i64 592
  %1030 = insertelement <2 x float> poison, float %975, i64 0
  %1031 = insertelement <2 x float> %1030, float %998, i64 1
  %1032 = insertelement <2 x float> poison, float %1028, i64 0
  %1033 = insertelement <2 x float> %1032, float %1024, i64 1
  %1034 = fadd <2 x float> %1031, %1033
  store <2 x float> %1034, ptr %1029, align 8, !tbaa !110
  %1035 = getelementptr inbounds i8, ptr %1025, i64 16
  %1036 = load float, ptr %1035, align 8, !tbaa !187
  %1037 = getelementptr inbounds i8, ptr %1025, i64 84
  %1038 = load float, ptr %1037, align 4, !tbaa !183
  %1039 = fsub float %1036, %1038
  %1040 = getelementptr inbounds i8, ptr %1025, i64 56
  %1041 = load float, ptr %1040, align 8, !tbaa !148
  %1042 = fadd float %1039, %1041
  %1043 = getelementptr inbounds i8, ptr %1025, i64 616
  store float %1042, ptr %1043, align 8, !tbaa !188
  %1044 = getelementptr inbounds i8, ptr %1025, i64 20
  %1045 = load float, ptr %1044, align 4, !tbaa !189
  %1046 = getelementptr inbounds i8, ptr %1025, i64 88
  %1047 = load float, ptr %1046, align 4, !tbaa !185
  %1048 = fsub float %1045, %1047
  %1049 = getelementptr inbounds i8, ptr %1025, i64 60
  %1050 = load float, ptr %1049, align 4, !tbaa !159
  %1051 = fadd float %1048, %1050
  %1052 = fadd float %485, %1051
  %1053 = getelementptr inbounds i8, ptr %1025, i64 620
  store float %1052, ptr %1053, align 4, !tbaa !190
  %1054 = getelementptr inbounds i8, ptr %1025, i64 48
  %1055 = load float, ptr %1054, align 8, !tbaa !179
  %1056 = fcmp une float %1055, 0.000000e+00
  br i1 %1056, label %1065, label %1057

1057:                                             ; preds = %996
  %1058 = getelementptr inbounds i8, ptr %1025, i64 24
  %1059 = load float, ptr %1058, align 8, !tbaa !119
  %1060 = fneg float %1041
  %1061 = call float @llvm.fmuladd.f32(float %1060, float 2.000000e+00, float %1059)
  %1062 = getelementptr inbounds i8, ptr %1025, i64 116
  %1063 = load float, ptr %1062, align 4, !tbaa !180
  %1064 = fsub float %1061, %1063
  br label %1065

1065:                                             ; preds = %996, %1057
  %1066 = phi float [ %1064, %1057 ], [ %1055, %996 ]
  %1067 = fadd float %1042, %1066
  %1068 = getelementptr inbounds i8, ptr %1025, i64 624
  store float %1067, ptr %1068, align 8, !tbaa !191
  %1069 = getelementptr inbounds i8, ptr %1025, i64 52
  %1070 = load float, ptr %1069, align 4, !tbaa !181
  %1071 = fcmp une float %1070, 0.000000e+00
  br i1 %1071, label %1081, label %1072

1072:                                             ; preds = %1065
  %1073 = getelementptr inbounds i8, ptr %1025, i64 28
  %1074 = load float, ptr %1073, align 4, !tbaa !121
  %1075 = fneg float %1050
  %1076 = call float @llvm.fmuladd.f32(float %1075, float 2.000000e+00, float %1074)
  %1077 = fsub float %1076, %485
  %1078 = getelementptr inbounds i8, ptr %1025, i64 120
  %1079 = load float, ptr %1078, align 4, !tbaa !182
  %1080 = fsub float %1077, %1079
  br label %1081

1081:                                             ; preds = %1065, %1072
  %1082 = phi float [ %1080, %1072 ], [ %1070, %1065 ]
  %1083 = fadd float %1052, %1082
  %1084 = getelementptr inbounds i8, ptr %1025, i64 628
  store float %1083, ptr %1084, align 4, !tbaa !192
  %1085 = fadd float %1041, 0.000000e+00
  %1086 = fsub float %1085, %1038
  %1087 = getelementptr inbounds i8, ptr %1025, i64 264
  store float %1086, ptr %1087, align 8, !tbaa !193
  %1088 = getelementptr inbounds i8, ptr %1025, i64 268
  store <2 x float> zeroinitializer, ptr %1088, align 4, !tbaa !110
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  %1089 = fadd float %485, %1050
  %1090 = fsub float %1089, %1047
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef %1086, float noundef %1090)
  %1091 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1035, ptr noundef nonnull align 4 dereferenceable(8) %31)
  %1092 = load ptr, ptr %4, align 8, !tbaa !5
  %1093 = getelementptr inbounds i8, ptr %1092, i64 224
  store <2 x float> %1091, ptr %1093, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  %1094 = getelementptr inbounds i8, ptr %1092, i64 208
  store <2 x float> %1091, ptr %1094, align 8
  %1095 = getelementptr inbounds i8, ptr %1092, i64 216
  store <2 x float> %1091, ptr %1095, align 8
  %1096 = getelementptr inbounds i8, ptr %1092, i64 232
  store <2 x float> %1091, ptr %1096, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1097 = load ptr, ptr %4, align 8, !tbaa !5
  %1098 = getelementptr inbounds i8, ptr %1097, i64 248
  %1099 = load i64, ptr %32, align 8
  store i64 %1099, ptr %1098, align 8
  %1100 = getelementptr inbounds i8, ptr %1097, i64 240
  store i64 %1099, ptr %1100, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  %1101 = getelementptr inbounds i8, ptr %1097, i64 256
  store <2 x float> zeroinitializer, ptr %1101, align 8, !tbaa !110
  %1102 = getelementptr inbounds i8, ptr %1097, i64 316
  store i32 0, ptr %1102, align 4, !tbaa !194
  %1103 = getelementptr inbounds i8, ptr %1097, i64 320
  store i32 1, ptr %1103, align 8, !tbaa !195
  %1104 = getelementptr inbounds i8, ptr %1097, i64 328
  %1105 = load i32, ptr %1104, align 8, !tbaa !196
  %1106 = getelementptr inbounds i8, ptr %1097, i64 324
  store i32 %1105, ptr %1106, align 4, !tbaa !197
  %1107 = getelementptr inbounds i8, ptr %1097, i64 96
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(9) %1104, i8 0, i64 9, i1 false)
  %1108 = load float, ptr %1107, align 4, !tbaa !160
  %1109 = fcmp ogt float %1108, 0.000000e+00
  %1110 = getelementptr inbounds i8, ptr %1097, i64 337
  %1111 = zext i1 %1109 to i8
  store i8 %1111, ptr %1110, align 1, !tbaa !198
  %1112 = getelementptr inbounds i8, ptr %1097, i64 338
  store i8 0, ptr %1112, align 2, !tbaa !199
  %1113 = getelementptr inbounds i8, ptr %1097, i64 56
  %1114 = load float, ptr %1113, align 8, !tbaa !148
  %1115 = getelementptr inbounds i8, ptr %33, i64 5544
  %1116 = load float, ptr %1115, align 4, !tbaa !200
  %1117 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1114, float noundef %1116)
  %1118 = getelementptr inbounds i8, ptr %33, i64 7012
  %1119 = load float, ptr %1118, align 4, !tbaa !201
  %1120 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1117, float noundef %1119)
  %1121 = load ptr, ptr %4, align 8, !tbaa !5
  %1122 = getelementptr inbounds i8, ptr %1121, i64 340
  store float %1120, ptr %1122, align 4, !tbaa !202
  %1123 = getelementptr inbounds i8, ptr %33, i64 7016
  %1124 = load float, ptr %1123, align 4, !tbaa !203
  %1125 = getelementptr inbounds i8, ptr %1121, i64 344
  store float %1124, ptr %1125, align 4, !tbaa !204
  %1126 = getelementptr inbounds i8, ptr %1121, i64 348
  %1127 = load float, ptr %1115, align 4, !tbaa !200
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36) %1126, i32 noundef 3, float noundef %1127, i1 noundef zeroext %.0277.in)
  %1128 = load ptr, ptr %4, align 8, !tbaa !5
  %1129 = getelementptr inbounds i8, ptr %1128, i64 384
  store i32 0, ptr %1129, align 8, !tbaa !205
  %1130 = getelementptr inbounds i8, ptr %1128, i64 388
  store i32 0, ptr %1130, align 4, !tbaa !206
  %1131 = getelementptr inbounds i8, ptr %1128, i64 392
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1131, i32 noundef 0)
  %1132 = load ptr, ptr %4, align 8, !tbaa !5
  %1133 = getelementptr inbounds i8, ptr %1132, i64 648
  %1134 = getelementptr inbounds i8, ptr %1132, i64 408
  store ptr %1133, ptr %1134, align 8, !tbaa !207
  %1135 = getelementptr inbounds i8, ptr %1132, i64 416
  store ptr null, ptr %1135, align 8, !tbaa !208
  %1136 = getelementptr inbounds i8, ptr %1132, i64 424
  store i32 1, ptr %1136, align 8, !tbaa !209
  br i1 %142, label %1140, label %1137

1137:                                             ; preds = %1081
  %1138 = getelementptr inbounds i8, ptr %141, i64 424
  %1139 = load i32, ptr %1138, align 8, !tbaa !209
  br label %1140

1140:                                             ; preds = %1081, %1137
  %1141 = phi i32 [ %1139, %1137 ], [ 1, %1081 ]
  %1142 = getelementptr inbounds i8, ptr %1132, i64 428
  store i32 %1141, ptr %1142, align 4, !tbaa !210
  %1143 = getelementptr inbounds i8, ptr %1132, i64 436
  store i32 -1, ptr %1143, align 4, !tbaa !211
  %1144 = getelementptr inbounds i8, ptr %1132, i64 432
  store i32 -1, ptr %1144, align 8, !tbaa !212
  %1145 = getelementptr inbounds i8, ptr %1132, i64 640
  %1146 = load float, ptr %1145, align 8, !tbaa !155
  %1147 = getelementptr inbounds i8, ptr %1132, i64 444
  store float %1146, ptr %1147, align 4, !tbaa !213
  %1148 = getelementptr inbounds i8, ptr %1132, i64 448
  store float -1.000000e+00, ptr %1148, align 8, !tbaa !214
  %1149 = getelementptr inbounds i8, ptr %1132, i64 456
  call void @_ZN8ImVectorIiE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1149, i32 noundef 0)
  %1150 = load ptr, ptr %4, align 8, !tbaa !5
  %1151 = getelementptr inbounds i8, ptr %1150, i64 472
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1151, i32 noundef 0)
  %1152 = load ptr, ptr %4, align 8, !tbaa !5
  %1153 = getelementptr inbounds i8, ptr %1152, i64 488
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1153, i32 noundef 0)
  %1154 = load ptr, ptr %4, align 8, !tbaa !5
  %1155 = getelementptr inbounds i8, ptr %1154, i64 504
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1155, i32 noundef 0)
  br i1 %142, label %.critedge400, label %1156

1156:                                             ; preds = %1140
  %1157 = getelementptr inbounds i8, ptr %141, i64 440
  %1158 = load i32, ptr %1157, align 8, !tbaa !215
  %1159 = load ptr, ptr %4, align 8, !tbaa !5
  %1160 = getelementptr inbounds i8, ptr %1159, i64 440
  store i32 %1158, ptr %1160, align 8, !tbaa !215
  %1161 = getelementptr inbounds i8, ptr %1159, i64 456
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %1161, ptr noundef nonnull align 4 dereferenceable(4) %1160)
  %.pre474 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1164

.critedge400:                                     ; preds = %1140
  %1162 = load ptr, ptr %4, align 8, !tbaa !5
  %1163 = getelementptr inbounds i8, ptr %1162, i64 440
  store i32 0, ptr %1163, align 8, !tbaa !215
  br label %1164

1164:                                             ; preds = %.critedge400, %1156
  %1165 = phi ptr [ %1162, %.critedge400 ], [ %.pre474, %1156 ]
  %1166 = getelementptr inbounds i8, ptr %1165, i64 148
  %1167 = load i8, ptr %1166, align 4, !tbaa !131
  %1168 = icmp sgt i8 %1167, 0
  br i1 %1168, label %1169, label %1171

1169:                                             ; preds = %1164
  %1170 = add nsw i8 %1167, -1
  store i8 %1170, ptr %1166, align 4, !tbaa !131
  br label %1171

1171:                                             ; preds = %1169, %1164
  %1172 = getelementptr inbounds i8, ptr %1165, i64 149
  %1173 = load i8, ptr %1172, align 1, !tbaa !132
  %1174 = icmp sgt i8 %1173, 0
  br i1 %1174, label %1175, label %1177

1175:                                             ; preds = %1171
  %1176 = add nsw i8 %1173, -1
  store i8 %1176, ptr %1172, align 1, !tbaa !132
  br label %1177

1177:                                             ; preds = %1175, %1171
  br i1 %spec.select429, label %1178, label %1180

1178:                                             ; preds = %1177
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %1165)
  %1179 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1179, i1 noundef zeroext false)
  %.pre476.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1180

1180:                                             ; preds = %1178, %1177
  %.pre476 = phi ptr [ %.pre476.pre, %1178 ], [ %1165, %1177 ]
  br i1 %.not334, label %1181, label %1186

1181:                                             ; preds = %1180
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %.pre476, ptr noundef nonnull align 4 dereferenceable(16) %27, ptr noundef nonnull %0, ptr noundef %1)
  %.pre475 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1186

.thread423:                                       ; preds = %255
  %1182 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1182)
  %1183 = load ptr, ptr %4, align 8, !tbaa !5
  %1184 = getelementptr inbounds i8, ptr %1183, i64 568
  %1185 = getelementptr inbounds i8, ptr %1183, i64 576
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1184, ptr noundef nonnull align 4 dereferenceable(8) %1185, i1 noundef zeroext true)
  %.pre477 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1200

1186:                                             ; preds = %1181, %1180
  %1187 = phi ptr [ %.pre475, %1181 ], [ %.pre476, %1180 ]
  %1188 = getelementptr inbounds i8, ptr %1187, i64 76
  %1189 = load i32, ptr %1188, align 4, !tbaa !216
  %1190 = getelementptr inbounds i8, ptr %1187, i64 276
  store i32 %1189, ptr %1190, align 4, !tbaa !217
  %1191 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %712, i1 noundef zeroext false)
  %1192 = zext i1 %1191 to i32
  %1193 = load ptr, ptr %4, align 8, !tbaa !5
  %1194 = getelementptr inbounds i8, ptr %1193, i64 280
  store i32 %1192, ptr %1194, align 8, !tbaa !218
  %1195 = getelementptr inbounds i8, ptr %1193, i64 284
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1195, ptr noundef nonnull align 8 dereferenceable(16) %27, i64 16, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #14
  %1196 = getelementptr inbounds i8, ptr %1193, i64 568
  %1197 = getelementptr inbounds i8, ptr %1193, i64 576
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1196, ptr noundef nonnull align 4 dereferenceable(8) %1197, i1 noundef zeroext true)
  %1198 = load ptr, ptr %4, align 8, !tbaa !5
  %1199 = getelementptr inbounds i8, ptr %1198, i64 128
  store i8 0, ptr %1199, align 8, !tbaa !219
  br label %1200

1200:                                             ; preds = %.thread423, %1186
  %1201 = phi ptr [ %.pre477, %.thread423 ], [ %1198, %1186 ]
  %1202 = getelementptr inbounds i8, ptr %1201, i64 138
  %1203 = load i16, ptr %1202, align 2, !tbaa !220
  %1204 = add i16 %1203, 1
  store i16 %1204, ptr %1202, align 2, !tbaa !220
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(100) %175)
  br i1 %144, label %1205, label %.critedge402

1205:                                             ; preds = %1200
  %1206 = and i32 %.1, 1
  %.not353 = icmp eq i32 %1206, 0
  br i1 %.not353, label %1207, label %1208

1207:                                             ; preds = %1205
  call void @__assert_fail(ptr noundef nonnull @.str.98, ptr noundef nonnull @.str.3, i32 noundef 6036, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

1208:                                             ; preds = %1205
  %1209 = and i32 %.1, 64
  %.not354 = icmp eq i32 %1209, 0
  br i1 %.not354, label %1210, label %1233

1210:                                             ; preds = %1208
  %1211 = load ptr, ptr %4, align 8, !tbaa !5
  %1212 = getelementptr inbounds i8, ptr %1211, i64 148
  %1213 = load i8, ptr %1212, align 4, !tbaa !131
  %1214 = icmp slt i8 %1213, 1
  br i1 %1214, label %1215, label %1233

1215:                                             ; preds = %1210
  %1216 = getelementptr inbounds i8, ptr %1211, i64 149
  %1217 = load i8, ptr %1216, align 1, !tbaa !132
  %1218 = icmp slt i8 %1217, 1
  br i1 %1218, label %1219, label %1233

1219:                                             ; preds = %1215
  %1220 = getelementptr inbounds i8, ptr %1211, i64 536
  %1221 = load float, ptr %1220, align 8, !tbaa !221
  %1222 = getelementptr inbounds i8, ptr %1211, i64 544
  %1223 = load float, ptr %1222, align 8, !tbaa !222
  %1224 = fcmp ult float %1221, %1223
  br i1 %1224, label %1225, label %1231

1225:                                             ; preds = %1219
  %1226 = getelementptr inbounds i8, ptr %1211, i64 540
  %1227 = load float, ptr %1226, align 4, !tbaa !223
  %1228 = getelementptr inbounds i8, ptr %1211, i64 548
  %1229 = load float, ptr %1228, align 4, !tbaa !224
  %1230 = fcmp ult float %1227, %1229
  br i1 %1230, label %1233, label %1231

1231:                                             ; preds = %1225, %1219
  %1232 = getelementptr inbounds i8, ptr %1211, i64 156
  store i32 1, ptr %1232, align 4, !tbaa !117
  br label %1233

1233:                                             ; preds = %1225, %1231, %1215, %1210, %1208
  br i1 %142, label %.critedge402, label %1234

1234:                                             ; preds = %1233
  %1235 = getelementptr inbounds i8, ptr %141, i64 129
  %1236 = load i8, ptr %1235, align 1, !tbaa !130, !range !66, !noundef !67
  %1237 = trunc nuw i8 %1236 to i1
  br i1 %1237, label %.thread425, label %1240

.thread425:                                       ; preds = %1234
  %1238 = load ptr, ptr %4, align 8, !tbaa !5
  %1239 = getelementptr inbounds i8, ptr %1238, i64 156
  store i32 1, ptr %1239, align 4, !tbaa !117
  br label %1250

1240:                                             ; preds = %1234
  %1241 = getelementptr inbounds i8, ptr %141, i64 156
  %1242 = load i32, ptr %1241, align 4, !tbaa !117
  %1243 = icmp sgt i32 %1242, 0
  br i1 %1243, label %1244, label %.thread424

1244:                                             ; preds = %1240
  %1245 = load ptr, ptr %4, align 8, !tbaa !5
  %1246 = getelementptr inbounds i8, ptr %1245, i64 156
  store i32 1, ptr %1246, align 4, !tbaa !117
  br label %.thread424

.thread424:                                       ; preds = %1240, %1244
  %1247 = getelementptr inbounds i8, ptr %141, i64 160
  %1248 = load i32, ptr %1247, align 8, !tbaa !82
  %1249 = icmp sgt i32 %1248, 0
  br i1 %1249, label %.thread424._crit_edge, label %.critedge402

.thread424._crit_edge:                            ; preds = %.thread424
  %.pre478 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1250

1250:                                             ; preds = %.thread424._crit_edge, %.thread425
  %1251 = phi ptr [ %.pre478, %.thread424._crit_edge ], [ %1238, %.thread425 ]
  %1252 = getelementptr inbounds i8, ptr %1251, i64 160
  store i32 1, ptr %1252, align 8, !tbaa !82
  br label %.critedge402

.critedge402:                                     ; preds = %1233, %.thread424, %1250, %1200
  %1253 = load float, ptr %34, align 4, !tbaa !225
  %1254 = fcmp ugt float %1253, 0.000000e+00
  %.pre479 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert480 = getelementptr inbounds i8, ptr %.pre479, i64 156
  br i1 %1254, label %1255, label %.thread499

.thread499:                                       ; preds = %.critedge402
  store i32 1, ptr %.phi.trans.insert480, align 4, !tbaa !117
  br label %1262

1255:                                             ; preds = %.critedge402
  %.pre481 = load i32, ptr %.phi.trans.insert480, align 4, !tbaa !117
  %1256 = icmp sgt i32 %.pre481, 0
  br i1 %1256, label %1262, label %1257

1257:                                             ; preds = %1255
  %1258 = getelementptr inbounds i8, ptr %.pre479, i64 160
  %1259 = load i32, ptr %1258, align 8, !tbaa !82
  %1260 = icmp sgt i32 %1259, 0
  %1261 = zext i1 %1260 to i8
  br label %1262

1262:                                             ; preds = %.thread499, %1257, %1255
  %1263 = phi i8 [ 1, %1255 ], [ %1261, %1257 ], [ 1, %.thread499 ]
  %1264 = getelementptr inbounds i8, ptr %.pre479, i64 133
  store i8 %1263, ptr %1264, align 1, !tbaa !226
  %1265 = getelementptr inbounds i8, ptr %.pre479, i64 129
  %1266 = load i8, ptr %1265, align 1, !tbaa !130, !range !66, !noundef !67
  %1267 = trunc nuw i8 %1266 to i1
  br i1 %1267, label %1274, label %1268

1268:                                             ; preds = %1262
  %1269 = getelementptr inbounds i8, ptr %.pre479, i64 126
  %1270 = load i8, ptr %1269, align 2, !tbaa !107, !range !66, !noundef !67
  %1271 = trunc nuw i8 %1270 to i1
  br i1 %1271, label %1272, label %1274

1272:                                             ; preds = %1268
  %1273 = trunc nuw i8 %1263 to i1
  br i1 %1273, label %1274, label %1286

1274:                                             ; preds = %1272, %1268, %1262
  %1275 = getelementptr inbounds i8, ptr %.pre479, i64 148
  %1276 = load i8, ptr %1275, align 4, !tbaa !131
  %1277 = icmp slt i8 %1276, 1
  br i1 %1277, label %1278, label %1286

1278:                                             ; preds = %1274
  %1279 = getelementptr inbounds i8, ptr %.pre479, i64 149
  %1280 = load i8, ptr %1279, align 1, !tbaa !132
  %1281 = icmp slt i8 %1280, 1
  br i1 %1281, label %1282, label %1286

1282:                                             ; preds = %1278
  %1283 = getelementptr inbounds i8, ptr %.pre479, i64 160
  %1284 = load i32, ptr %1283, align 8, !tbaa !82
  %1285 = icmp slt i32 %1284, 1
  br label %1286

1286:                                             ; preds = %1282, %1274, %1278, %1272
  %.0 = phi i1 [ false, %1278 ], [ false, %1274 ], [ false, %1272 ], [ %1285, %1282 ]
  %1287 = getelementptr inbounds i8, ptr %.pre479, i64 131
  %1288 = zext i1 %.0 to i8
  store i8 %1288, ptr %1287, align 1, !tbaa !227
  %1289 = xor i1 %.0, true
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14
  ret i1 %1289
}

; 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 <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef) local_unnamed_addr #10

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(956)) 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 @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRectRK6ImVec2(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956)) 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> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef, i1 noundef zeroext) local_unnamed_addr #10

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

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

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

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

; Function Attrs: mustprogress uwtable
declare 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 void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(100)) 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 6668}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !19, i64 5472, !6, i64 6424, !16, i64 6432, !16, i64 6436, !20, i64 6440, !22, i64 6648, !14, i64 6656, !14, i64 6660, !14, i64 6664, !12, i64 6668, !12, i64 6669, !12, i64 6670, !23, i64 6672, !23, i64 6688, !23, i64 6704, !23, i64 6720, !24, i64 6736, !14, i64 6752, !6, i64 6760, !6, i64 6768, !6, i64 6776, !6, i64 6784, !6, i64 6792, !15, i64 6800, !16, i64 6808, !14, i64 6812, !12, i64 6816, !14, i64 6820, !16, i64 6824, !16, i64 6828, !14, i64 6832, !14, i64 6836, !16, i64 6840, !12, i64 6844, !12, i64 6845, !12, i64 6846, !12, i64 6847, !12, i64 6848, !14, i64 6852, !14, i64 6856, !26, i64 6864, !15, i64 6872, !6, i64 6880, !27, i64 6888, !14, i64 6892, !14, i64 6896, !12, i64 6900, !12, i64 6901, !6, i64 6904, !14, i64 6912, !16, i64 6916, !28, i64 6920, !30, i64 7024, !31, i64 7048, !32, i64 7064, !33, i64 7080, !34, i64 7096, !34, i64 7112, !6, i64 7128, !14, i64 7136, !14, i64 7140, !14, i64 7144, !14, i64 7148, !14, i64 7152, !14, i64 7156, !14, i64 7160, !14, i64 7164, !14, i64 7168, !14, i64 7172, !27, i64 7176, !29, i64 7180, !14, i64 7196, !35, i64 7200, !14, i64 7204, !12, i64 7208, !12, i64 7209, !12, i64 7210, !12, i64 7211, !12, i64 7212, !12, i64 7213, !12, i64 7214, !14, i64 7216, !29, i64 7220, !12, i64 7236, !12, i64 7237, !14, i64 7240, !36, i64 7244, !14, i64 7248, !14, i64 7252, !14, i64 7256, !37, i64 7264, !37, i64 7312, !37, i64 7360, !6, i64 7408, !6, i64 7416, !6, i64 7424, !16, i64 7432, !16, i64 7436, !12, i64 7440, !6, i64 7448, !6, i64 7456, !14, i64 7464, !14, i64 7468, !14, i64 7472, !14, i64 7476, !12, i64 7480, !38, i64 7488, !39, i64 7544, !16, i64 7576, !40, i64 7584, !40, i64 7752, !14, i64 7920, !12, i64 7924, !12, i64 7925, !14, i64 7928, !14, i64 7932, !14, i64 7936, !48, i64 7944, !29, i64 8008, !14, i64 8024, !14, i64 8028, !16, i64 8032, !14, i64 8036, !14, i64 8040, !14, i64 8044, !49, i64 8048, !7, i64 8064, !6, i64 8080, !50, i64 8088, !52, i64 8128, !53, i64 8144, !15, i64 8160, !54, i64 8168, !58, i64 11896, !14, i64 12016, !14, i64 12020, !16, i64 12024, !16, i64 12028, !7, i64 12032, !21, i64 12044, !12, i64 12060, !16, i64 12064, !16, i64 12068, !16, i64 12072, !14, i64 12076, !55, i64 12080, !61, i64 12096, !15, i64 12112, !15, i64 12120, !12, i64 12128, !16, i64 12132, !62, i64 12136, !63, i64 12152, !64, i64 12168, !12, i64 12184, !65, i64 12188, !6, i64 12192, !62, i64 12200, !16, i64 12216, !12, i64 12220, !14, i64 12224, !14, i64 12228, !14, i64 12232, !12, i64 12236, !14, i64 12240, !7, i64 12244, !14, i64 12724, !16, i64 12728, !14, i64 12732, !14, i64 12736, !14, i64 12740, !7, i64 12744}
!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, !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, !6, i64 288, !15, i64 296, !7, i64 304, !16, i64 312, !16, i64 316, !12, i64 320, !12, i64 321, !12, i64 322, !12, i64 323, !7, i64 324, !7, i64 836, !12, i64 920, !12, i64 921, !12, i64 922, !12, i64 923, !12, i64 924, !12, i64 925, !12, i64 926, !16, i64 928, !14, i64 932, !14, i64 936, !14, i64 940, !14, i64 944, !14, i64 948, !15, i64 952, !15, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !17, i64 5440, !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, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !14, i64 128, !15, i64 132, !15, i64 140, !15, i64 148, !15, i64 156, !16, i64 164, !12, i64 168, !12, i64 169, !16, i64 172, !16, i64 176, !7, i64 180}
!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}
!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, !12, i64 48, !29, i64 52, !6, i64 72, !6, i64 80, !16, i64 88, !15, i64 92}
!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 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!35 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!36 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!37 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !14, i64 8, !14, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !29, i64 28}
!38 = !{!"_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}
!39 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!40 = !{!"_ZTS10ImDrawList", !41, i64 0, !18, i64 16, !42, i64 32, !14, i64 48, !6, i64 56, !6, i64 64, !14, i64 72, !14, i64 76, !6, i64 80, !6, i64 88, !43, i64 96, !44, i64 112, !45, i64 128, !46, i64 144}
!41 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!46 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !47, i64 8}
!47 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_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}
!49 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!50 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !51, i64 0, !24, i64 16, !14, i64 32}
!51 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!54 = !{!"_ZTS19ImGuiInputTextState", !14, i64 0, !14, i64 4, !14, i64 8, !18, i64 16, !55, i64 32, !55, i64 48, !12, i64 64, !14, i64 68, !16, i64 72, !56, i64 76, !16, i64 3696, !12, i64 3700, !12, i64 3701, !14, i64 3704, !6, i64 3712, !6, i64 3720}
!55 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!56 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !14, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !16, i64 20, !57, i64 24}
!57 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !14, i64 3588, !14, i64 3592}
!58 = !{!"_ZTS6ImFont", !59, i64 0, !16, i64 16, !16, i64 20, !18, i64 24, !60, i64 40, !6, i64 56, !15, i64 64, !6, i64 72, !6, i64 80, !17, i64 88, !17, i64 90, !17, i64 92, !12, i64 94, !16, i64 96, !16, i64 100, !16, i64 104, !14, i64 108, !7, i64 112}
!59 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!62 = !{!"_ZTS15ImGuiTextBuffer", !55, i64 0}
!63 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!64 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !55, i64 0}
!65 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!66 = !{i8 0, i8 2}
!67 = !{}
!68 = !{!11, !14, i64 6660}
!69 = !{!11, !14, i64 6656}
!70 = !{!11, !14, i64 6920}
!71 = !{!72, !14, i64 632}
!72 = !{!"_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, !16, i64 64, !16, i64 68, !14, i64 72, !14, i64 76, !14, i64 80, !15, i64 84, !15, i64 92, !15, i64 100, !15, i64 108, !15, i64 116, !12, i64 124, !12, i64 125, !12, i64 126, !12, i64 127, !12, i64 128, !12, i64 129, !12, i64 130, !12, i64 131, !12, i64 132, !12, i64 133, !12, i64 134, !12, i64 135, !7, i64 136, !17, i64 138, !17, i64 140, !17, i64 142, !14, i64 144, !7, i64 148, !7, i64 149, !7, i64 150, !12, i64 151, !14, i64 152, !14, i64 156, !14, i64 160, !14, i64 164, !14, i64 168, !14, i64 172, !15, i64 176, !15, i64 184, !61, i64 192, !73, i64 208, !29, i64 536, !29, i64 552, !29, i64 568, !29, i64 584, !29, i64 600, !29, i64 616, !14, i64 632, !16, i64 636, !16, i64 640, !24, i64 648, !78, i64 664, !16, i64 680, !14, i64 684, !6, i64 688, !40, i64 696, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !7, i64 904, !7, i64 912, !12, i64 944, !14, i64 948, !14, i64 952}
!73 = !{!"_ZTS19ImGuiWindowTempData", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !16, i64 48, !16, i64 52, !74, i64 56, !74, i64 60, !74, i64 64, !14, i64 68, !14, i64 72, !29, i64 76, !29, i64 92, !35, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !12, i64 128, !12, i64 129, !12, i64 130, !15, i64 132, !75, i64 140, !14, i64 176, !14, i64 180, !23, i64 184, !6, i64 200, !6, i64 208, !14, i64 216, !14, i64 220, !14, i64 224, !14, i64 228, !14, i64 232, !16, i64 236, !16, i64 240, !76, i64 248, !59, i64 264, !59, i64 280, !77, i64 296, !7, i64 312}
!74 = !{!"_ZTS6ImVec1", !16, i64 0}
!75 = !{!"_ZTS16ImGuiMenuColumns", !16, i64 0, !16, i64 4, !16, i64 8, !7, i64 12, !7, i64 24}
!76 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!77 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!78 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!79 = !{!11, !14, i64 6720}
!80 = !{!11, !12, i64 6669}
!81 = !{!72, !12, i64 134}
!82 = !{!72, !14, i64 160}
!83 = !{!11, !14, i64 7112}
!84 = !{!72, !14, i64 144}
!85 = !{!86, !14, i64 0}
!86 = !{!"_ZTS14ImGuiPopupData", !14, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !14, i64 28, !15, i64 32, !15, i64 40}
!87 = !{!86, !6, i64 8}
!88 = !{!72, !12, i64 132}
!89 = !{!72, !14, i64 12}
!90 = !{!11, !22, i64 6648}
!91 = !{!72, !16, i64 636}
!92 = !{!72, !17, i64 140}
!93 = !{!11, !14, i64 6752}
!94 = !{!72, !17, i64 142}
!95 = !{!72, !6, i64 864}
!96 = !{!72, !14, i64 192}
!97 = !{!11, !6, i64 6760}
!98 = !{!14, !14, i64 0}
!99 = !{!72, !14, i64 164}
!100 = !{!11, !14, i64 6924}
!101 = !{!72, !14, i64 168}
!102 = !{!11, !14, i64 6928}
!103 = !{!11, !16, i64 6952}
!104 = !{!11, !16, i64 6956}
!105 = !{!11, !12, i64 6968}
!106 = !{!11, !14, i64 6932}
!107 = !{!72, !12, i64 126}
!108 = !{!72, !12, i64 135}
!109 = !{i64 0, i64 4, !110, i64 4, i64 4, !110, i64 8, i64 4, !110, i64 12, i64 4, !110}
!110 = !{!16, !16, i64 0}
!111 = !{!72, !12, i64 944}
!112 = !{!11, !6, i64 7424}
!113 = !{!72, !6, i64 0}
!114 = !{!72, !14, i64 72}
!115 = !{!116, !116, i64 0}
!116 = !{!"long", !7, i64 0}
!117 = !{!72, !14, i64 156}
!118 = !{!72, !16, i64 32}
!119 = !{!72, !16, i64 24}
!120 = !{!72, !16, i64 36}
!121 = !{!72, !16, i64 28}
!122 = !{!72, !16, i64 68}
!123 = !{!19, !16, i64 44}
!124 = !{!19, !16, i64 8}
!125 = !{!11, !6, i64 6768}
!126 = !{!11, !14, i64 6812}
!127 = !{!11, !14, i64 6820}
!128 = !{!12, !12, i64 0}
!129 = !{!72, !12, i64 130}
!130 = !{!72, !12, i64 129}
!131 = !{!72, !7, i64 148}
!132 = !{!72, !7, i64 149}
!133 = !{!72, !12, i64 151}
!134 = !{!15, !16, i64 4}
!135 = !{!72, !14, i64 152}
!136 = !{!72, !14, i64 392}
!137 = !{!72, !16, i64 176}
!138 = !{!72, !16, i64 64}
!139 = !{!11, !12, i64 203}
!140 = !{!11, !16, i64 6432}
!141 = !{!72, !7, i64 136}
!142 = !{!72, !12, i64 125}
!143 = !{!72, !12, i64 124}
!144 = !{!15, !16, i64 0}
!145 = !{!19, !16, i64 104}
!146 = !{!72, !16, i64 552}
!147 = !{!72, !16, i64 556}
!148 = !{!72, !16, i64 56}
!149 = !{!72, !16, i64 568}
!150 = !{!72, !16, i64 572}
!151 = !{!72, !16, i64 560}
!152 = !{!72, !16, i64 576}
!153 = !{!72, !16, i64 564}
!154 = !{!72, !16, i64 580}
!155 = !{!72, !16, i64 640}
!156 = !{!72, !16, i64 40}
!157 = !{!72, !16, i64 92}
!158 = !{!72, !16, i64 44}
!159 = !{!72, !16, i64 60}
!160 = !{!72, !16, i64 96}
!161 = !{!72, !6, i64 688}
!162 = !{!11, !6, i64 6424}
!163 = !{!58, !6, i64 72}
!164 = !{!165, !6, i64 8}
!165 = !{!"_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, !166, i64 80, !167, i64 96, !7, i64 112}
!166 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!167 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!168 = !{!11, !6, i64 7416}
!169 = !{!72, !6, i64 872}
!170 = !{!11, !16, i64 7576}
!171 = !{!11, !16, i64 7436}
!172 = !{!11, !16, i64 5484}
!173 = !{!174, !14, i64 0}
!174 = !{!"_ZTS9ImDrawCmd", !14, i64 0, !21, i64 4, !6, i64 24, !14, i64 32, !14, i64 36, !6, i64 40, !6, i64 48}
!175 = !{!40, !14, i64 32}
!176 = !{!11, !6, i64 7408}
!177 = !{!11, !6, i64 7128}
!178 = !{!72, !6, i64 880}
!179 = !{!72, !16, i64 48}
!180 = !{!72, !16, i64 116}
!181 = !{!72, !16, i64 52}
!182 = !{!72, !16, i64 120}
!183 = !{!72, !16, i64 84}
!184 = !{!72, !16, i64 584}
!185 = !{!72, !16, i64 88}
!186 = !{!72, !16, i64 588}
!187 = !{!72, !16, i64 16}
!188 = !{!72, !16, i64 616}
!189 = !{!72, !16, i64 20}
!190 = !{!72, !16, i64 620}
!191 = !{!72, !16, i64 624}
!192 = !{!72, !16, i64 628}
!193 = !{!72, !16, i64 264}
!194 = !{!72, !35, i64 316}
!195 = !{!72, !14, i64 320}
!196 = !{!72, !14, i64 328}
!197 = !{!72, !14, i64 324}
!198 = !{!72, !12, i64 337}
!199 = !{!72, !12, i64 338}
!200 = !{!19, !16, i64 72}
!201 = !{!11, !16, i64 7012}
!202 = !{!72, !16, i64 340}
!203 = !{!11, !16, i64 7016}
!204 = !{!72, !16, i64 344}
!205 = !{!72, !14, i64 384}
!206 = !{!72, !14, i64 388}
!207 = !{!72, !6, i64 408}
!208 = !{!72, !6, i64 416}
!209 = !{!72, !14, i64 424}
!210 = !{!72, !14, i64 428}
!211 = !{!72, !14, i64 436}
!212 = !{!72, !14, i64 432}
!213 = !{!72, !16, i64 444}
!214 = !{!72, !16, i64 448}
!215 = !{!72, !14, i64 440}
!216 = !{!72, !14, i64 76}
!217 = !{!72, !14, i64 276}
!218 = !{!72, !14, i64 280}
!219 = !{!72, !12, i64 128}
!220 = !{!72, !17, i64 138}
!221 = !{!72, !16, i64 536}
!222 = !{!72, !16, i64 544}
!223 = !{!72, !16, i64 540}
!224 = !{!72, !16, i64 548}
!225 = !{!19, !16, i64 0}
!226 = !{!72, !12, i64 133}
!227 = !{!72, !12, i64 131}


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