; LLVM IR from Dragons-Lake/REI :: sources/REI_Integration/3rdParty/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, i8, i8, [4 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, [4 x i8], %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %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, i8, i8, [6 x i8], ptr, i32, float, %struct.ImGuiNextWindowData, %struct.ImGuiNextItemData, %struct.ImVector.2, %struct.ImVector.3, %struct.ImVector.4, %struct.ImVector.5, %struct.ImVector.5, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, i32, [4 x i8], ptr, ptr, ptr, float, float, i8, [3 x i8], i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, [2 x i8], i32, i32, i32, i32, i32, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, 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.13, [8 x i8], ptr, %struct.ImPool, %struct.ImVector.15, %struct.ImVector.16, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, [3 x float], %struct.ImVec4, i8, [3 x i8], float, float, float, i32, [4 x i8], %struct.ImVector.17, i32, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], float, [4 x i8], %struct.ImGuiTextBuffer, %struct.ImVector.20, %struct.ImVector.21, 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], %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, [48 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type <{ %struct.ImVec2, ptr, float, float, %struct.ImVec4, i32, [12 x %struct.ImVec2], [4 x i8] }>
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.1 }
%struct.ImVector.1 = 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, i8, i32 }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiNavMoveResult = type <{ i32, i32, ptr, 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.6] }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImDrawList = type { %struct.ImVector.7, %struct.ImVector, %struct.ImVector.8, i32, ptr, ptr, i32, i32, ptr, ptr, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImDrawListSplitter }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.12 }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImPool = type <{ %struct.ImVector.14, %struct.ImGuiStorage, i32, [4 x i8] }>
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type { i32, i32, i32, %struct.ImVector, %struct.ImVector.17, %struct.ImVector.17, 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.18, float, float, %struct.ImVector, %struct.ImVector.19, ptr, %struct.ImVec2, ptr, ptr, i16, i16, i16, [2 x i8], float, float, float, i32, i8, [7 x i8] }>
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.17 }
%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, i16, i16, i16, [2 x i8], i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.23, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32, float, float, %struct.ImGuiMenuColumns, %struct.ImGuiStorage, %struct.ImVector.26, 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.ImVector.23 = type { i32, i32, ptr }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, i32, i8, i8, i8, %struct.ImVec2, %struct.ImVector.0, ptr, i32, i32, i32, i32, i32, float, float, %struct.ImVector.24, %struct.ImVector.18, %struct.ImVector.18, %struct.ImVector.25, [6 x i16], %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type { float, float, float, [3 x float], [3 x float] }
%struct.ImVector.26 = 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.4, %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.1 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.54 = 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: 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) #6

; 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: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8)) #4

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 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) #7

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

; 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 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: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #12

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

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

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

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 6
  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.48, ptr noundef @.str.1, i32 noundef 5227, 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 1
  %106 = load i8, ptr %105, align 1, !tbaa !12, !range !66, !noundef !67
  %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.49, ptr noundef @.str.1, i32 noundef 5228, 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 13
  %114 = load i32, ptr %113, align 4, !tbaa !68
  %115 = load ptr, ptr %7, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.ImGuiContext, ptr %115, i32 0, i32 12
  %117 = load i32, ptr %116, align 8, !tbaa !69
  %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.50, ptr noundef @.str.1, i32 noundef 5229, 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 !70
  %128 = load i8, ptr %10, align 1, !tbaa !70, !range !66, !noundef !67
  %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 59
  %133 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %132, i32 0, i32 0
  %134 = load i32, ptr %133, align 8, !tbaa !71
  %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 59
  %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 !72
  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 !72
  %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.51, ptr noundef @.str.1, i32 noundef 5245, 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 12
  %169 = load i32, ptr %168, align 8, !tbaa !69
  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 56
  %172 = load i32, ptr %171, align 8, !tbaa !74
  %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 !70
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #13
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.ImGuiWindow, ptr %176, i32 0, i32 56
  %178 = load i32, ptr %177, align 8, !tbaa !74
  %179 = load i32, ptr %13, align 4, !tbaa !9
  %180 = sub nsw i32 %179, 1
  %181 = icmp slt i32 %178, %180
  %182 = zext i1 %181 to i8
  store i8 %182, ptr %15, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #13
  %183 = load ptr, ptr %9, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.ImGuiWindow, ptr %183, i32 0, i32 42
  %185 = load i32, ptr %184, align 8, !tbaa !83
  %186 = icmp sgt i32 %185, 0
  %187 = zext i1 %186 to i8
  store i8 %187, ptr %16, align 1, !tbaa !70
  %188 = load i32, ptr %6, align 4, !tbaa !9
  %189 = and i32 %188, 67108864
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %191, label %225

191:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #13
  %192 = load ptr, ptr %7, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.ImGuiContext, ptr %192, i32 0, i32 64
  %194 = load ptr, ptr %7, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.ImGuiContext, ptr %194, i32 0, i32 65
  %196 = getelementptr inbounds %struct.ImVector.5, ptr %195, i32 0, i32 0
  %197 = load i32, ptr %196, align 8, !tbaa !84
  %198 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %193, i32 noundef %197)
  store ptr %198, ptr %17, align 8, !tbaa !5
  %199 = load ptr, ptr %9, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.ImGuiWindow, ptr %199, i32 0, i32 35
  %201 = load i32, ptr %200, align 8, !tbaa !85
  %202 = load ptr, ptr %17, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.ImGuiPopupData, ptr %202, i32 0, i32 0
  %204 = load i32, ptr %203, align 8, !tbaa !86
  %205 = icmp ne i32 %201, %204
  %206 = zext i1 %205 to i32
  %207 = load i8, ptr %15, align 1, !tbaa !70, !range !66, !noundef !67
  %208 = trunc i8 %207 to i1
  %209 = zext i1 %208 to i32
  %210 = or i32 %209, %206
  %211 = icmp ne i32 %210, 0
  %212 = zext i1 %211 to i8
  store i8 %212, ptr %15, align 1, !tbaa !70
  %213 = load ptr, ptr %9, align 8, !tbaa !5
  %214 = load ptr, ptr %17, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.ImGuiPopupData, ptr %214, i32 0, i32 1
  %216 = load ptr, ptr %215, align 8, !tbaa !88
  %217 = icmp ne ptr %213, %216
  %218 = zext i1 %217 to i32
  %219 = load i8, ptr %15, align 1, !tbaa !70, !range !66, !noundef !67
  %220 = trunc i8 %219 to i1
  %221 = zext i1 %220 to i32
  %222 = or i32 %221, %218
  %223 = icmp ne i32 %222, 0
  %224 = zext i1 %223 to i8
  store i8 %224, ptr %15, align 1, !tbaa !70
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #13
  br label %225

225:                                              ; preds = %191, %166
  %226 = load i8, ptr %15, align 1, !tbaa !70, !range !66, !noundef !67
  %227 = trunc i8 %226 to i1
  br i1 %227, label %231, label %228

228:                                              ; preds = %225
  %229 = load i8, ptr %16, align 1, !tbaa !70, !range !66, !noundef !67
  %230 = trunc i8 %229 to i1
  br label %231

231:                                              ; preds = %228, %225
  %232 = phi i1 [ true, %225 ], [ %230, %228 ]
  %233 = load ptr, ptr %9, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.ImGuiWindow, ptr %233, i32 0, i32 27
  %235 = zext i1 %232 to i8
  store i8 %235, ptr %234, align 4, !tbaa !89
  %236 = load ptr, ptr %9, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.ImGuiWindow, ptr %236, i32 0, i32 27
  %238 = load i8, ptr %237, align 4, !tbaa !89, !range !66, !noundef !67
  %239 = trunc i8 %238 to i1
  br i1 %239, label %240, label %242

240:                                              ; preds = %231
  %241 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %241, i32 noundef 8, i1 noundef zeroext true)
  br label %242

242:                                              ; preds = %240, %231
  %243 = load i8, ptr %14, align 1, !tbaa !70, !range !66, !noundef !67
  %244 = trunc i8 %243 to i1
  br i1 %244, label %245, label %267

245:                                              ; preds = %242
  %246 = load i32, ptr %6, align 4, !tbaa !9
  %247 = load ptr, ptr %9, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.ImGuiWindow, ptr %247, i32 0, i32 2
  store i32 %246, ptr %248, align 4, !tbaa !90
  %249 = load i32, ptr %13, align 4, !tbaa !9
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.ImGuiWindow, ptr %250, i32 0, i32 56
  store i32 %249, ptr %251, align 8, !tbaa !74
  %252 = load ptr, ptr %7, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.ImGuiContext, ptr %252, i32 0, i32 11
  %254 = load double, ptr %253, align 8, !tbaa !91
  %255 = fptrunc double %254 to float
  %256 = load ptr, ptr %9, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.ImGuiWindow, ptr %256, i32 0, i32 57
  store float %255, ptr %257, align 4, !tbaa !92
  %258 = load ptr, ptr %9, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.ImGuiWindow, ptr %258, i32 0, i32 32
  store i16 0, ptr %259, align 2, !tbaa !93
  %260 = load ptr, ptr %7, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.ImGuiContext, ptr %260, i32 0, i32 21
  %262 = load i32, ptr %261, align 8, !tbaa !94
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %261, align 8, !tbaa !94
  %264 = trunc i32 %262 to i16
  %265 = load ptr, ptr %9, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.ImGuiWindow, ptr %265, i32 0, i32 33
  store i16 %264, ptr %266, align 4, !tbaa !95
  br label %271

267:                                              ; preds = %242
  %268 = load ptr, ptr %9, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.ImGuiWindow, ptr %268, i32 0, i32 2
  %270 = load i32, ptr %269, align 4, !tbaa !90
  store i32 %270, ptr %6, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %267, %245
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #13
  %272 = load ptr, ptr %7, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.ImGuiContext, ptr %272, i32 0, i32 19
  %274 = call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %273)
  br i1 %274, label %275, label %276

275:                                              ; preds = %271
  br label %281

276:                                              ; preds = %271
  %277 = load ptr, ptr %7, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.ImGuiContext, ptr %277, i32 0, i32 19
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %278)
  %280 = load ptr, ptr %279, align 8, !tbaa !5
  br label %281

281:                                              ; preds = %276, %275
  %282 = phi ptr [ null, %275 ], [ %280, %276 ]
  store ptr %282, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  %283 = load i8, ptr %14, align 1, !tbaa !70, !range !66, !noundef !67
  %284 = trunc i8 %283 to i1
  br i1 %284, label %285, label %294

285:                                              ; preds = %281
  %286 = load i32, ptr %6, align 4, !tbaa !9
  %287 = and i32 %286, 83886080
  %288 = icmp ne i32 %287, 0
  br i1 %288, label %289, label %291

289:                                              ; preds = %285
  %290 = load ptr, ptr %18, align 8, !tbaa !5
  br label %292

291:                                              ; preds = %285
  br label %292

292:                                              ; preds = %291, %289
  %293 = phi ptr [ %290, %289 ], [ null, %291 ]
  br label %298

294:                                              ; preds = %281
  %295 = load ptr, ptr %9, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.ImGuiWindow, ptr %295, i32 0, i32 66
  %297 = load ptr, ptr %296, align 8, !tbaa !96
  br label %298

298:                                              ; preds = %294, %292
  %299 = phi ptr [ %293, %292 ], [ %297, %294 ]
  store ptr %299, ptr %19, align 8, !tbaa !5
  %300 = load ptr, ptr %19, align 8, !tbaa !5
  %301 = icmp ne ptr %300, null
  br i1 %301, label %307, label %302

302:                                              ; preds = %298
  %303 = load i32, ptr %6, align 4, !tbaa !9
  %304 = and i32 %303, 16777216
  %305 = icmp ne i32 %304, 0
  %306 = xor i1 %305, true
  br label %307

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

309:                                              ; preds = %307
  br label %312

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

311:                                              ; No predecessors!
  br label %312

312:                                              ; preds = %311, %309
  %313 = load ptr, ptr %9, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.ImGuiWindow, ptr %313, i32 0, i32 48
  %315 = getelementptr inbounds %struct.ImVector.23, ptr %314, i32 0, i32 0
  %316 = load i32, ptr %315, align 8, !tbaa !97
  %317 = icmp eq i32 %316, 0
  br i1 %317, label %318, label %323

318:                                              ; preds = %312
  %319 = load ptr, ptr %9, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.ImGuiWindow, ptr %319, i32 0, i32 48
  %321 = load ptr, ptr %9, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.ImGuiWindow, ptr %321, i32 0, i32 1
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %320, ptr noundef nonnull align 4 dereferenceable(4) %322)
  br label %323

323:                                              ; preds = %318, %312
  %324 = load ptr, ptr %7, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.ImGuiContext, ptr %324, i32 0, i32 19
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %325, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %326 = load ptr, ptr %7, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.ImGuiContext, ptr %326, i32 0, i32 23
  store ptr null, ptr %327, align 8, !tbaa !98
  %328 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL15CheckStacksSizeP11ImGuiWindowb(ptr noundef %328, i1 noundef zeroext true)
  %329 = load i32, ptr %6, align 4, !tbaa !9
  %330 = and i32 %329, 67108864
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %332, label %351

332:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  %333 = load ptr, ptr %7, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.ImGuiContext, ptr %333, i32 0, i32 64
  %335 = load ptr, ptr %7, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.ImGuiContext, ptr %335, i32 0, i32 65
  %337 = getelementptr inbounds %struct.ImVector.5, ptr %336, i32 0, i32 0
  %338 = load i32, ptr %337, align 8, !tbaa !84
  %339 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %334, i32 noundef %338)
  store ptr %339, ptr %20, align 8, !tbaa !5
  %340 = load ptr, ptr %9, align 8, !tbaa !5
  %341 = load ptr, ptr %20, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImGuiPopupData, ptr %341, i32 0, i32 1
  store ptr %340, ptr %342, align 8, !tbaa !88
  %343 = load ptr, ptr %7, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.ImGuiContext, ptr %343, i32 0, i32 65
  %345 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %344, ptr noundef nonnull align 8 dereferenceable(48) %345)
  %346 = load ptr, ptr %20, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.ImGuiPopupData, ptr %346, i32 0, i32 0
  %348 = load i32, ptr %347, align 8, !tbaa !86
  %349 = load ptr, ptr %9, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.ImGuiWindow, ptr %349, i32 0, i32 35
  store i32 %348, ptr %350, align 8, !tbaa !85
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %351

351:                                              ; preds = %332, %323
  %352 = load i8, ptr %16, align 1, !tbaa !70, !range !66, !noundef !67
  %353 = trunc i8 %352 to i1
  br i1 %353, label %354, label %362

354:                                              ; preds = %351
  %355 = load i32, ptr %6, align 4, !tbaa !9
  %356 = and i32 %355, 16777216
  %357 = icmp ne i32 %356, 0
  br i1 %357, label %362, label %358

358:                                              ; preds = %354
  %359 = load ptr, ptr %9, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.ImGuiWindow, ptr %359, i32 0, i32 71
  %361 = getelementptr inbounds [2 x i32], ptr %360, i64 0, i64 0
  store i32 0, ptr %361, align 8, !tbaa !9
  br label %362

362:                                              ; preds = %358, %354, %351
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  store i8 0, ptr %21, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #13
  store i8 0, ptr %22, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  store i8 0, ptr %23, align 1, !tbaa !70
  %363 = load ptr, ptr %7, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.ImGuiContext, ptr %363, i32 0, i32 59
  %365 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %364, i32 0, i32 0
  %366 = load i32, ptr %365, align 8, !tbaa !71
  %367 = and i32 %366, 1
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %369, label %413

369:                                              ; preds = %362
  %370 = load ptr, ptr %9, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.ImGuiWindow, ptr %370, i32 0, i32 43
  %372 = load i32, ptr %371, align 4, !tbaa !99
  %373 = load ptr, ptr %7, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.ImGuiContext, ptr %373, i32 0, i32 59
  %375 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %374, i32 0, i32 1
  %376 = load i32, ptr %375, align 4, !tbaa !100
  %377 = and i32 %372, %376
  %378 = icmp ne i32 %377, 0
  %379 = zext i1 %378 to i8
  store i8 %379, ptr %21, align 1, !tbaa !70
  %380 = load i8, ptr %21, align 1, !tbaa !70, !range !66, !noundef !67
  %381 = trunc i8 %380 to i1
  br i1 %381, label %382, label %403

382:                                              ; preds = %369
  %383 = load ptr, ptr %7, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.ImGuiContext, ptr %383, i32 0, i32 59
  %385 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %384, i32 0, i32 5
  %386 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %385)
  %387 = fcmp ogt float %386, 0x3EE4F8B580000000
  br i1 %387, label %388, label %403

388:                                              ; preds = %382
  %389 = load ptr, ptr %7, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.ImGuiContext, ptr %389, i32 0, i32 59
  %391 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %390, i32 0, i32 4
  %392 = load ptr, ptr %9, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.ImGuiWindow, ptr %392, i32 0, i32 46
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %393, ptr align 8 %391, i64 8, i1 false), !tbaa.struct !72
  %394 = load ptr, ptr %7, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.ImGuiContext, ptr %394, i32 0, i32 59
  %396 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %395, i32 0, i32 5
  %397 = load ptr, ptr %9, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.ImGuiWindow, ptr %397, i32 0, i32 47
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %398, ptr align 8 %396, i64 8, i1 false), !tbaa.struct !72
  %399 = load ptr, ptr %9, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.ImGuiWindow, ptr %399, i32 0, i32 43
  %401 = load i32, ptr %400, align 4, !tbaa !99
  %402 = and i32 %401, -15
  store i32 %402, ptr %400, align 4, !tbaa !99
  br label %412

403:                                              ; preds = %382, %369
  %404 = load ptr, ptr %9, align 8, !tbaa !5
  %405 = load ptr, ptr %7, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.ImGuiContext, ptr %405, i32 0, i32 59
  %407 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %406, i32 0, i32 4
  %408 = load ptr, ptr %7, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.ImGuiContext, ptr %408, i32 0, i32 59
  %410 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %409, i32 0, i32 1
  %411 = load i32, ptr %410, align 4, !tbaa !100
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %404, ptr noundef nonnull align 4 dereferenceable(8) %407, i32 noundef %411)
  br label %412

412:                                              ; preds = %403, %388
  br label %413

413:                                              ; preds = %412, %362
  %414 = load ptr, ptr %7, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.ImGuiContext, ptr %414, i32 0, i32 59
  %416 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %415, i32 0, i32 0
  %417 = load i32, ptr %416, align 8, !tbaa !71
  %418 = and i32 %417, 2
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %420, label %467

420:                                              ; preds = %413
  %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 8, !tbaa !101
  %424 = load ptr, ptr %7, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.ImGuiContext, ptr %424, i32 0, i32 59
  %426 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %425, i32 0, i32 2
  %427 = load i32, ptr %426, align 8, !tbaa !102
  %428 = and i32 %423, %427
  %429 = icmp ne i32 %428, 0
  br i1 %429, label %430, label %437

430:                                              ; preds = %420
  %431 = load ptr, ptr %7, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.ImGuiContext, ptr %431, i32 0, i32 59
  %433 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %432, i32 0, i32 6
  %434 = getelementptr inbounds %struct.ImVec2, ptr %433, i32 0, i32 0
  %435 = load float, ptr %434, align 8, !tbaa !103
  %436 = fcmp ogt float %435, 0.000000e+00
  br label %437

437:                                              ; preds = %430, %420
  %438 = phi i1 [ false, %420 ], [ %436, %430 ]
  %439 = zext i1 %438 to i8
  store i8 %439, ptr %22, align 1, !tbaa !70
  %440 = load ptr, ptr %9, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.ImGuiWindow, ptr %440, i32 0, i32 44
  %442 = load i32, ptr %441, align 8, !tbaa !101
  %443 = load ptr, ptr %7, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.ImGuiContext, ptr %443, i32 0, i32 59
  %445 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %444, i32 0, i32 2
  %446 = load i32, ptr %445, align 8, !tbaa !102
  %447 = and i32 %442, %446
  %448 = icmp ne i32 %447, 0
  br i1 %448, label %449, label %456

449:                                              ; preds = %437
  %450 = load ptr, ptr %7, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.ImGuiContext, ptr %450, i32 0, i32 59
  %452 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %451, i32 0, i32 6
  %453 = getelementptr inbounds %struct.ImVec2, ptr %452, i32 0, i32 1
  %454 = load float, ptr %453, align 4, !tbaa !104
  %455 = fcmp ogt float %454, 0.000000e+00
  br label %456

456:                                              ; preds = %449, %437
  %457 = phi i1 [ false, %437 ], [ %455, %449 ]
  %458 = zext i1 %457 to i8
  store i8 %458, ptr %23, align 1, !tbaa !70
  %459 = load ptr, ptr %9, align 8, !tbaa !5
  %460 = load ptr, ptr %7, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.ImGuiContext, ptr %460, i32 0, i32 59
  %462 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %461, i32 0, i32 6
  %463 = load ptr, ptr %7, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.ImGuiContext, ptr %463, i32 0, i32 59
  %465 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %464, i32 0, i32 2
  %466 = load i32, ptr %465, align 8, !tbaa !102
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %459, ptr noundef nonnull align 4 dereferenceable(8) %462, i32 noundef %466)
  br label %467

467:                                              ; preds = %456, %413
  %468 = load ptr, ptr %7, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.ImGuiContext, ptr %468, i32 0, i32 59
  %470 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %469, i32 0, i32 0
  %471 = load i32, ptr %470, align 8, !tbaa !71
  %472 = and i32 %471, 4
  %473 = icmp ne i32 %472, 0
  br i1 %473, label %474, label %480

474:                                              ; preds = %467
  %475 = load ptr, ptr %7, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.ImGuiContext, ptr %475, i32 0, i32 59
  %477 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %476, i32 0, i32 7
  %478 = load ptr, ptr %9, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.ImGuiWindow, ptr %478, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %479, ptr align 8 %477, i64 8, i1 false), !tbaa.struct !72
  br label %487

480:                                              ; preds = %467
  %481 = load i8, ptr %14, align 1, !tbaa !70, !range !66, !noundef !67
  %482 = trunc i8 %481 to i1
  br i1 %482, label %483, label %486

483:                                              ; preds = %480
  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)
  %484 = load ptr, ptr %9, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.ImGuiWindow, ptr %484, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %485, ptr align 4 %24, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #13
  br label %486

486:                                              ; preds = %483, %480
  br label %487

487:                                              ; preds = %486, %474
  %488 = load ptr, ptr %7, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.ImGuiContext, ptr %488, i32 0, i32 59
  %490 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %489, i32 0, i32 0
  %491 = load i32, ptr %490, align 8, !tbaa !71
  %492 = and i32 %491, 8
  %493 = icmp ne i32 %492, 0
  br i1 %493, label %494, label %505

494:                                              ; preds = %487
  %495 = load ptr, ptr %9, align 8, !tbaa !5
  %496 = load ptr, ptr %7, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.ImGuiContext, ptr %496, i32 0, i32 59
  %498 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %497, i32 0, i32 8
  %499 = load i8, ptr %498, align 8, !tbaa !105, !range !66, !noundef !67
  %500 = trunc i8 %499 to i1
  %501 = load ptr, ptr %7, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.ImGuiContext, ptr %501, i32 0, i32 59
  %503 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %502, i32 0, i32 3
  %504 = load i32, ptr %503, align 4, !tbaa !106
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %495, i1 noundef zeroext %500, i32 noundef %504)
  br label %505

505:                                              ; preds = %494, %487
  %506 = load ptr, ptr %7, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.ImGuiContext, ptr %506, i32 0, i32 59
  %508 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %507, i32 0, i32 0
  %509 = load i32, ptr %508, align 8, !tbaa !71
  %510 = and i32 %509, 32
  %511 = icmp ne i32 %510, 0
  br i1 %511, label %512, label %514

512:                                              ; preds = %505
  %513 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %513)
  br label %514

514:                                              ; preds = %512, %505
  %515 = load ptr, ptr %9, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.ImGuiWindow, ptr %515, i32 0, i32 27
  %517 = load i8, ptr %516, align 4, !tbaa !89, !range !66, !noundef !67
  %518 = trunc i8 %517 to i1
  br i1 %518, label %519, label %521

519:                                              ; preds = %514
  %520 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %520, i32 noundef 8, i1 noundef zeroext false)
  br label %521

521:                                              ; preds = %519, %514
  %522 = load i8, ptr %14, align 1, !tbaa !70, !range !66, !noundef !67
  %523 = trunc i8 %522 to i1
  br i1 %523, label %524, label %2434

524:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #13
  %525 = load i32, ptr %6, align 4, !tbaa !9
  %526 = and i32 %525, 16777216
  %527 = icmp ne i32 %526, 0
  br i1 %527, label %528, label %532

528:                                              ; preds = %524
  %529 = load i32, ptr %6, align 4, !tbaa !9
  %530 = and i32 %529, 33554432
  %531 = icmp ne i32 %530, 0
  br label %532

532:                                              ; preds = %528, %524
  %533 = phi i1 [ false, %524 ], [ %531, %528 ]
  %534 = zext i1 %533 to i8
  store i8 %534, ptr %25, align 1, !tbaa !70
  %535 = load ptr, ptr %9, align 8, !tbaa !5
  %536 = load i32, ptr %6, align 4, !tbaa !9
  %537 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %535, i32 noundef %536, ptr noundef %537)
  %538 = load ptr, ptr %9, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.ImGuiWindow, ptr %538, i32 0, i32 21
  store i8 1, ptr %539, align 2, !tbaa !107
  %540 = load ptr, ptr %5, align 8, !tbaa !5
  %541 = icmp ne ptr %540, null
  %542 = load ptr, ptr %9, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.ImGuiWindow, ptr %542, i32 0, i32 29
  %544 = zext i1 %541 to i8
  store i8 %544, ptr %543, align 2, !tbaa !108
  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)
  %545 = load ptr, ptr %9, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ImGuiWindow, ptr %545, i32 0, i32 54
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %546, ptr align 4 %26, i64 16, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #13
  %547 = load ptr, ptr %9, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.ImGuiWindow, ptr %547, i32 0, i32 48
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %548, i32 noundef 1)
  %549 = load ptr, ptr %9, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ImGuiWindow, ptr %549, i32 0, i32 73
  %551 = load i8, ptr %550, align 8, !tbaa !110, !range !66, !noundef !67
  %552 = trunc i8 %551 to i1
  br i1 %552, label %553, label %555

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

555:                                              ; preds = %553, %532
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #13
  store i8 0, ptr %28, align 1, !tbaa !70
  %556 = load ptr, ptr %7, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.ImGuiContext, ptr %556, i32 0, i32 82
  %558 = load ptr, ptr %557, align 8, !tbaa !111
  %559 = icmp ne ptr %558, null
  br i1 %559, label %560, label %567

560:                                              ; preds = %555
  %561 = load ptr, ptr %9, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.ImGuiWindow, ptr %561, i32 0, i32 2
  %563 = load i32, ptr %562, align 4, !tbaa !90
  %564 = and i32 %563, 524288
  %565 = icmp eq i32 %564, 0
  br i1 %565, label %566, label %567

566:                                              ; preds = %560
  store i8 1, ptr %28, align 1, !tbaa !70
  br label %567

567:                                              ; preds = %566, %560, %555
  %568 = load i8, ptr %28, align 1, !tbaa !70, !range !66, !noundef !67
  %569 = trunc i8 %568 to i1
  br i1 %569, label %570, label %596

570:                                              ; preds = %567
  %571 = load i8, ptr %10, align 1, !tbaa !70, !range !66, !noundef !67
  %572 = trunc i8 %571 to i1
  br i1 %572, label %596, label %573

573:                                              ; preds = %570
  %574 = load ptr, ptr %4, align 8, !tbaa !5
  %575 = load ptr, ptr %9, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiWindow, ptr %575, i32 0, i32 0
  %577 = load ptr, ptr %576, align 8, !tbaa !112
  %578 = call i32 @strcmp(ptr noundef %574, ptr noundef %577) #15
  %579 = icmp ne i32 %578, 0
  br i1 %579, label %580, label %596

580:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #13
  %581 = load ptr, ptr %9, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.ImGuiWindow, ptr %581, i32 0, i32 11
  %583 = load i32, ptr %582, align 8, !tbaa !113
  %584 = sext i32 %583 to i64
  store i64 %584, ptr %29, align 8, !tbaa !114
  %585 = load ptr, ptr %9, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.ImGuiWindow, ptr %585, i32 0, i32 0
  %587 = load ptr, ptr %586, align 8, !tbaa !112
  %588 = load ptr, ptr %4, align 8, !tbaa !5
  %589 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %587, ptr noundef %29, ptr noundef %588)
  %590 = load ptr, ptr %9, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.ImGuiWindow, ptr %590, i32 0, i32 0
  store ptr %589, ptr %591, align 8, !tbaa !112
  %592 = load i64, ptr %29, align 8, !tbaa !114
  %593 = trunc i64 %592 to i32
  %594 = load ptr, ptr %9, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.ImGuiWindow, ptr %594, i32 0, i32 11
  store i32 %593, ptr %595, align 8, !tbaa !113
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  br label %596

596:                                              ; preds = %580, %573, %570, %567
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #13
  %597 = load ptr, ptr %9, align 8, !tbaa !5
  %598 = call <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef %597)
  store <2 x float> %598, ptr %30, align 4
  %599 = load ptr, ptr %9, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.ImGuiWindow, ptr %599, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %600, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  %601 = load ptr, ptr %9, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.ImGuiWindow, ptr %601, i32 0, i32 41
  %603 = load i32, ptr %602, align 4, !tbaa !116
  %604 = icmp sgt i32 %603, 0
  br i1 %604, label %605, label %610

605:                                              ; preds = %596
  %606 = load ptr, ptr %9, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.ImGuiWindow, ptr %606, i32 0, i32 41
  %608 = load i32, ptr %607, align 4, !tbaa !116
  %609 = add nsw i32 %608, -1
  store i32 %609, ptr %607, align 4, !tbaa !116
  br label %610

610:                                              ; preds = %605, %596
  %611 = load ptr, ptr %9, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.ImGuiWindow, ptr %611, i32 0, i32 42
  %613 = load i32, ptr %612, align 8, !tbaa !83
  %614 = icmp sgt i32 %613, 0
  br i1 %614, label %615, label %620

615:                                              ; preds = %610
  %616 = load ptr, ptr %9, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.ImGuiWindow, ptr %616, i32 0, i32 42
  %618 = load i32, ptr %617, align 8, !tbaa !83
  %619 = add nsw i32 %618, -1
  store i32 %619, ptr %617, align 8, !tbaa !83
  br label %620

620:                                              ; preds = %615, %610
  %621 = load i8, ptr %10, align 1, !tbaa !70, !range !66, !noundef !67
  %622 = trunc i8 %621 to i1
  br i1 %622, label %623, label %632

623:                                              ; preds = %620
  %624 = load i8, ptr %22, align 1, !tbaa !70, !range !66, !noundef !67
  %625 = trunc i8 %624 to i1
  br i1 %625, label %626, label %629

626:                                              ; preds = %623
  %627 = load i8, ptr %23, align 1, !tbaa !70, !range !66, !noundef !67
  %628 = trunc i8 %627 to i1
  br i1 %628, label %632, label %629

629:                                              ; preds = %626, %623
  %630 = load ptr, ptr %9, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.ImGuiWindow, ptr %630, i32 0, i32 42
  store i32 1, ptr %631, align 8, !tbaa !83
  br label %632

632:                                              ; preds = %629, %626, %620
  %633 = load i8, ptr %15, align 1, !tbaa !70, !range !66, !noundef !67
  %634 = trunc i8 %633 to i1
  br i1 %634, label %635, label %669

635:                                              ; preds = %632
  %636 = load i32, ptr %6, align 4, !tbaa !9
  %637 = and i32 %636, 100663296
  %638 = icmp ne i32 %637, 0
  br i1 %638, label %639, label %669

639:                                              ; preds = %635
  %640 = load ptr, ptr %9, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.ImGuiWindow, ptr %640, i32 0, i32 42
  store i32 1, ptr %641, align 8, !tbaa !83
  %642 = load i32, ptr %6, align 4, !tbaa !9
  %643 = and i32 %642, 64
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %645, label %668

645:                                              ; preds = %639
  %646 = load i8, ptr %22, align 1, !tbaa !70, !range !66, !noundef !67
  %647 = trunc i8 %646 to i1
  br i1 %647, label %655, label %648

648:                                              ; preds = %645
  %649 = load ptr, ptr %9, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiWindow, ptr %649, i32 0, i32 5
  %651 = getelementptr inbounds %struct.ImVec2, ptr %650, i32 0, i32 0
  store float 0.000000e+00, ptr %651, align 8, !tbaa !117
  %652 = load ptr, ptr %9, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.ImGuiWindow, ptr %652, i32 0, i32 4
  %654 = getelementptr inbounds %struct.ImVec2, ptr %653, i32 0, i32 0
  store float 0.000000e+00, ptr %654, align 8, !tbaa !118
  br label %655

655:                                              ; preds = %648, %645
  %656 = load i8, ptr %23, align 1, !tbaa !70, !range !66, !noundef !67
  %657 = trunc i8 %656 to i1
  br i1 %657, label %665, label %658

658:                                              ; preds = %655
  %659 = load ptr, ptr %9, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.ImGuiWindow, ptr %659, i32 0, i32 5
  %661 = getelementptr inbounds %struct.ImVec2, ptr %660, i32 0, i32 1
  store float 0.000000e+00, ptr %661, align 4, !tbaa !119
  %662 = load ptr, ptr %9, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.ImGuiWindow, ptr %662, i32 0, i32 4
  %664 = getelementptr inbounds %struct.ImVec2, ptr %663, i32 0, i32 1
  store float 0.000000e+00, ptr %664, align 4, !tbaa !120
  br label %665

665:                                              ; preds = %658, %655
  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)
  %666 = load ptr, ptr %9, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.ImGuiWindow, ptr %666, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %667, ptr align 4 %31, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #13
  br label %668

668:                                              ; preds = %665, %639
  br label %669

669:                                              ; preds = %668, %635, %632
  %670 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %670)
  %671 = load i32, ptr %6, align 4, !tbaa !9
  %672 = and i32 %671, 16777216
  %673 = icmp ne i32 %672, 0
  br i1 %673, label %674, label %680

674:                                              ; preds = %669
  %675 = load ptr, ptr %8, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.ImGuiStyle, ptr %675, i32 0, i32 8
  %677 = load float, ptr %676, align 4, !tbaa !121
  %678 = load ptr, ptr %9, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.ImGuiWindow, ptr %678, i32 0, i32 10
  store float %677, ptr %679, align 4, !tbaa !122
  br label %700

680:                                              ; preds = %669
  %681 = load i32, ptr %6, align 4, !tbaa !9
  %682 = and i32 %681, 100663296
  %683 = icmp ne i32 %682, 0
  br i1 %683, label %684, label %692

684:                                              ; preds = %680
  %685 = load i32, ptr %6, align 4, !tbaa !9
  %686 = and i32 %685, 134217728
  %687 = icmp ne i32 %686, 0
  br i1 %687, label %692, label %688

688:                                              ; preds = %684
  %689 = load ptr, ptr %8, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.ImGuiStyle, ptr %689, i32 0, i32 10
  %691 = load float, ptr %690, align 4, !tbaa !123
  br label %696

692:                                              ; preds = %684, %680
  %693 = load ptr, ptr %8, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.ImGuiStyle, ptr %693, i32 0, i32 3
  %695 = load float, ptr %694, align 4, !tbaa !124
  br label %696

696:                                              ; preds = %692, %688
  %697 = phi float [ %691, %688 ], [ %695, %692 ]
  %698 = load ptr, ptr %9, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.ImGuiWindow, ptr %698, i32 0, i32 10
  store float %697, ptr %699, align 4, !tbaa !122
  br label %700

700:                                              ; preds = %696, %674
  %701 = load ptr, ptr %8, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.ImGuiStyle, ptr %701, i32 0, i32 1
  %703 = load ptr, ptr %9, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.ImGuiWindow, ptr %703, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %704, ptr align 4 %702, i64 8, i1 false), !tbaa.struct !72
  %705 = load i32, ptr %6, align 4, !tbaa !9
  %706 = and i32 %705, 16777216
  %707 = icmp ne i32 %706, 0
  br i1 %707, label %708, label %731

708:                                              ; preds = %700
  %709 = load i32, ptr %6, align 4, !tbaa !9
  %710 = and i32 %709, 67174400
  %711 = icmp ne i32 %710, 0
  br i1 %711, label %731, label %712

712:                                              ; preds = %708
  %713 = load ptr, ptr %9, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.ImGuiWindow, ptr %713, i32 0, i32 10
  %715 = load float, ptr %714, align 4, !tbaa !122
  %716 = fcmp oeq float %715, 0.000000e+00
  br i1 %716, label %717, label %731

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

721:                                              ; preds = %717
  %722 = load ptr, ptr %8, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.ImGuiStyle, ptr %722, i32 0, i32 1
  %724 = getelementptr inbounds %struct.ImVec2, ptr %723, i32 0, i32 1
  %725 = load float, ptr %724, align 4, !tbaa !125
  br label %727

726:                                              ; preds = %717
  br label %727

727:                                              ; preds = %726, %721
  %728 = phi float [ %725, %721 ], [ 0.000000e+00, %726 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef 0.000000e+00, float noundef %728)
  %729 = load ptr, ptr %9, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.ImGuiWindow, ptr %729, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %730, ptr align 4 %32, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  br label %731

731:                                              ; preds = %727, %712, %708, %700
  %732 = load ptr, ptr %9, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.ImGuiWindow, ptr %732, i32 0, i32 8
  %734 = getelementptr inbounds %struct.ImVec2, ptr %733, i32 0, i32 0
  %735 = load float, ptr %734, align 8, !tbaa !126
  %736 = load ptr, ptr %8, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ImGuiStyle, ptr %736, i32 0, i32 14
  %738 = getelementptr inbounds %struct.ImVec2, ptr %737, i32 0, i32 0
  %739 = load float, ptr %738, align 4, !tbaa !127
  %740 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %735, float noundef %739)
  %741 = load ptr, ptr %7, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.ImGuiContext, ptr %741, i32 0, i32 59
  %743 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %742, i32 0, i32 15
  %744 = getelementptr inbounds %struct.ImVec2, ptr %743, i32 0, i32 0
  %745 = load float, ptr %744, align 4, !tbaa !128
  %746 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %740, float noundef %745)
  %747 = load ptr, ptr %9, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.ImGuiWindow, ptr %747, i32 0, i32 49
  %749 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %748, i32 0, i32 21
  %750 = getelementptr inbounds %struct.ImVec2, ptr %749, i32 0, i32 0
  store float %746, ptr %750, align 4, !tbaa !129
  %751 = load ptr, ptr %7, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.ImGuiContext, ptr %751, i32 0, i32 59
  %753 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %752, i32 0, i32 15
  %754 = getelementptr inbounds %struct.ImVec2, ptr %753, i32 0, i32 1
  %755 = load float, ptr %754, align 4, !tbaa !130
  %756 = load ptr, ptr %9, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.ImGuiWindow, ptr %756, i32 0, i32 49
  %758 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %757, i32 0, i32 21
  %759 = getelementptr inbounds %struct.ImVec2, ptr %758, i32 0, i32 1
  store float %755, ptr %759, align 4, !tbaa !131
  %760 = load i32, ptr %6, align 4, !tbaa !9
  %761 = and i32 %760, 1
  %762 = icmp ne i32 %761, 0
  br i1 %762, label %820, label %763

763:                                              ; preds = %731
  %764 = load i32, ptr %6, align 4, !tbaa !9
  %765 = and i32 %764, 32
  %766 = icmp ne i32 %765, 0
  br i1 %766, label %820, label %767

767:                                              ; preds = %763
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #13
  %768 = load ptr, ptr %9, align 8, !tbaa !5
  %769 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(948) %768)
  %770 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %33, i32 0, i32 0
  %771 = extractvalue { <2 x float>, <2 x float> } %769, 0
  store <2 x float> %771, ptr %770, align 4
  %772 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %33, i32 0, i32 1
  %773 = extractvalue { <2 x float>, <2 x float> } %769, 1
  store <2 x float> %773, ptr %772, align 4
  %774 = load ptr, ptr %7, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.ImGuiContext, ptr %774, i32 0, i32 24
  %776 = load ptr, ptr %775, align 8, !tbaa !132
  %777 = load ptr, ptr %9, align 8, !tbaa !5
  %778 = icmp eq ptr %776, %777
  br i1 %778, label %779, label %803

779:                                              ; preds = %767
  %780 = load ptr, ptr %7, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.ImGuiContext, ptr %780, i32 0, i32 30
  %782 = load i32, ptr %781, align 4, !tbaa !133
  %783 = icmp eq i32 %782, 0
  br i1 %783, label %784, label %803

784:                                              ; preds = %779
  %785 = load ptr, ptr %7, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.ImGuiContext, ptr %785, i32 0, i32 33
  %787 = load i32, ptr %786, align 4, !tbaa !134
  %788 = icmp eq i32 %787, 0
  br i1 %788, label %789, label %803

789:                                              ; preds = %784
  %790 = getelementptr inbounds %struct.ImRect, ptr %33, i32 0, i32 0
  %791 = getelementptr inbounds %struct.ImRect, ptr %33, i32 0, i32 1
  %792 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %790, ptr noundef nonnull align 4 dereferenceable(8) %791, i1 noundef zeroext true)
  br i1 %792, label %793, label %803

793:                                              ; preds = %789
  %794 = load ptr, ptr %7, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.ImGuiContext, ptr %794, i32 0, i32 5
  %796 = getelementptr inbounds %struct.ImGuiIO, ptr %795, i32 0, i32 64
  %797 = getelementptr inbounds [5 x i8], ptr %796, i64 0, i64 0
  %798 = load i8, ptr %797, align 1, !tbaa !70, !range !66, !noundef !67
  %799 = trunc i8 %798 to i1
  br i1 %799, label %800, label %803

800:                                              ; preds = %793
  %801 = load ptr, ptr %9, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.ImGuiWindow, ptr %801, i32 0, i32 25
  store i8 1, ptr %802, align 2, !tbaa !135
  br label %803

803:                                              ; preds = %800, %793, %789, %784, %779, %767
  %804 = load ptr, ptr %9, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.ImGuiWindow, ptr %804, i32 0, i32 25
  %806 = load i8, ptr %805, align 2, !tbaa !135, !range !66, !noundef !67
  %807 = trunc i8 %806 to i1
  br i1 %807, label %808, label %819

808:                                              ; preds = %803
  %809 = load ptr, ptr %9, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.ImGuiWindow, ptr %809, i32 0, i32 24
  %811 = load i8, ptr %810, align 1, !tbaa !136, !range !66, !noundef !67
  %812 = trunc i8 %811 to i1
  %813 = xor i1 %812, true
  %814 = load ptr, ptr %9, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.ImGuiWindow, ptr %814, i32 0, i32 24
  %816 = zext i1 %813 to i8
  store i8 %816, ptr %815, align 1, !tbaa !136
  %817 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %817)
  %818 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %818)
  br label %819

819:                                              ; preds = %808, %803
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #13
  br label %823

820:                                              ; preds = %763, %731
  %821 = load ptr, ptr %9, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.ImGuiWindow, ptr %821, i32 0, i32 24
  store i8 0, ptr %822, align 1, !tbaa !136
  br label %823

823:                                              ; preds = %820, %819
  %824 = load ptr, ptr %9, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.ImGuiWindow, ptr %824, i32 0, i32 25
  store i8 0, ptr %825, align 2, !tbaa !135
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %826 = load ptr, ptr %9, align 8, !tbaa !5
  %827 = load ptr, ptr %9, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.ImGuiWindow, ptr %827, i32 0, i32 6
  %829 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %826, ptr noundef nonnull align 4 dereferenceable(8) %828)
  store <2 x float> %829, ptr %34, align 4
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #13
  %830 = load i8, ptr %10, align 1, !tbaa !70, !range !66, !noundef !67
  %831 = trunc i8 %830 to i1
  %832 = zext i1 %831 to i8
  store i8 %832, ptr %35, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #13
  %833 = load i8, ptr %10, align 1, !tbaa !70, !range !66, !noundef !67
  %834 = trunc i8 %833 to i1
  %835 = zext i1 %834 to i8
  store i8 %835, ptr %36, align 1, !tbaa !70
  %836 = load i32, ptr %6, align 4, !tbaa !9
  %837 = and i32 %836, 64
  %838 = icmp ne i32 %837, 0
  br i1 %838, label %839, label %863

839:                                              ; preds = %823
  %840 = load ptr, ptr %9, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.ImGuiWindow, ptr %840, i32 0, i32 24
  %842 = load i8, ptr %841, align 1, !tbaa !136, !range !66, !noundef !67
  %843 = trunc i8 %842 to i1
  br i1 %843, label %863, label %844

844:                                              ; preds = %839
  %845 = load i8, ptr %22, align 1, !tbaa !70, !range !66, !noundef !67
  %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 0
  %849 = load float, ptr %848, align 4, !tbaa !137
  %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 0
  store float %849, ptr %852, align 8, !tbaa !117
  store i8 1, ptr %35, align 1, !tbaa !70
  br label %853

853:                                              ; preds = %847, %844
  %854 = load i8, ptr %23, align 1, !tbaa !70, !range !66, !noundef !67
  %855 = trunc i8 %854 to i1
  br i1 %855, label %862, label %856

856:                                              ; preds = %853
  %857 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 1
  %858 = load float, ptr %857, align 4, !tbaa !138
  %859 = load ptr, ptr %9, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.ImGuiWindow, ptr %859, i32 0, i32 5
  %861 = getelementptr inbounds %struct.ImVec2, ptr %860, i32 0, i32 1
  store float %858, ptr %861, align 4, !tbaa !119
  store i8 1, ptr %36, align 1, !tbaa !70
  br label %862

862:                                              ; preds = %856, %853
  br label %944

863:                                              ; preds = %839, %823
  %864 = load ptr, ptr %9, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.ImGuiWindow, ptr %864, i32 0, i32 36
  %866 = load i8, ptr %865, align 4, !tbaa !139
  %867 = sext i8 %866 to i32
  %868 = icmp sgt i32 %867, 0
  br i1 %868, label %875, label %869

869:                                              ; preds = %863
  %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 1, !tbaa !140
  %873 = sext i8 %872 to i32
  %874 = icmp sgt i32 %873, 0
  br i1 %874, label %875, label %943

875:                                              ; preds = %869, %863
  %876 = load i8, ptr %22, align 1, !tbaa !70, !range !66, !noundef !67
  %877 = trunc i8 %876 to i1
  br i1 %877, label %905, label %878

878:                                              ; preds = %875
  %879 = load ptr, ptr %9, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.ImGuiWindow, ptr %879, i32 0, i32 36
  %881 = load i8, ptr %880, align 4, !tbaa !139
  %882 = sext i8 %881 to i32
  %883 = icmp sgt i32 %882, 0
  br i1 %883, label %884, label %905

884:                                              ; preds = %878
  %885 = load ptr, ptr %9, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.ImGuiWindow, ptr %885, i32 0, i32 39
  %887 = load i8, ptr %886, align 1, !tbaa !141, !range !66, !noundef !67
  %888 = trunc i8 %887 to i1
  br i1 %888, label %889, label %897

889:                                              ; preds = %884
  %890 = load ptr, ptr %9, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.ImGuiWindow, ptr %890, i32 0, i32 5
  %892 = getelementptr inbounds %struct.ImVec2, ptr %891, i32 0, i32 0
  %893 = load float, ptr %892, align 8, !tbaa !117
  %894 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 0
  %895 = load float, ptr %894, align 4, !tbaa !137
  %896 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %893, float noundef %895)
  br label %900

897:                                              ; preds = %884
  %898 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 0
  %899 = load float, ptr %898, align 4, !tbaa !137
  br label %900

900:                                              ; preds = %897, %889
  %901 = phi float [ %896, %889 ], [ %899, %897 ]
  %902 = load ptr, ptr %9, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.ImGuiWindow, ptr %902, i32 0, i32 5
  %904 = getelementptr inbounds %struct.ImVec2, ptr %903, i32 0, i32 0
  store float %901, ptr %904, align 8, !tbaa !117
  store i8 1, ptr %35, align 1, !tbaa !70
  br label %905

905:                                              ; preds = %900, %878, %875
  %906 = load i8, ptr %23, align 1, !tbaa !70, !range !66, !noundef !67
  %907 = trunc i8 %906 to i1
  br i1 %907, label %935, label %908

908:                                              ; preds = %905
  %909 = load ptr, ptr %9, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.ImGuiWindow, ptr %909, i32 0, i32 37
  %911 = load i8, ptr %910, align 1, !tbaa !140
  %912 = sext i8 %911 to i32
  %913 = icmp sgt i32 %912, 0
  br i1 %913, label %914, label %935

914:                                              ; preds = %908
  %915 = load ptr, ptr %9, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.ImGuiWindow, ptr %915, i32 0, i32 39
  %917 = load i8, ptr %916, align 1, !tbaa !141, !range !66, !noundef !67
  %918 = trunc i8 %917 to i1
  br i1 %918, label %919, label %927

919:                                              ; preds = %914
  %920 = load ptr, ptr %9, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.ImGuiWindow, ptr %920, i32 0, i32 5
  %922 = getelementptr inbounds %struct.ImVec2, ptr %921, i32 0, i32 1
  %923 = load float, ptr %922, align 4, !tbaa !119
  %924 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 1
  %925 = load float, ptr %924, align 4, !tbaa !138
  %926 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %923, float noundef %925)
  br label %930

927:                                              ; preds = %914
  %928 = getelementptr inbounds %struct.ImVec2, ptr %34, i32 0, i32 1
  %929 = load float, ptr %928, align 4, !tbaa !138
  br label %930

930:                                              ; preds = %927, %919
  %931 = phi float [ %926, %919 ], [ %929, %927 ]
  %932 = load ptr, ptr %9, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.ImGuiWindow, ptr %932, i32 0, i32 5
  %934 = getelementptr inbounds %struct.ImVec2, ptr %933, i32 0, i32 1
  store float %931, ptr %934, align 4, !tbaa !119
  store i8 1, ptr %36, align 1, !tbaa !70
  br label %935

935:                                              ; preds = %930, %908, %905
  %936 = load ptr, ptr %9, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.ImGuiWindow, ptr %936, i32 0, i32 24
  %938 = load i8, ptr %937, align 1, !tbaa !136, !range !66, !noundef !67
  %939 = trunc i8 %938 to i1
  br i1 %939, label %942, label %940

940:                                              ; preds = %935
  %941 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %941)
  br label %942

942:                                              ; preds = %940, %935
  br label %943

943:                                              ; preds = %942, %869
  br label %944

944:                                              ; preds = %943, %862
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  %945 = load ptr, ptr %9, align 8, !tbaa !5
  %946 = load ptr, ptr %9, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.ImGuiWindow, ptr %946, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %38, ptr align 8 %947, i64 8, i1 false), !tbaa.struct !72
  %948 = load <2 x float>, ptr %38, align 4
  %949 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %945, <2 x float> %948)
  store <2 x float> %949, ptr %37, align 4
  %950 = load ptr, ptr %9, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.ImGuiWindow, ptr %950, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %951, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #13
  %952 = load ptr, ptr %9, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.ImGuiWindow, ptr %952, i32 0, i32 24
  %954 = load i8, ptr %953, align 1, !tbaa !136, !range !66, !noundef !67
  %955 = trunc i8 %954 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #13
  br i1 %955, label %956, label %968

956:                                              ; preds = %944
  %957 = load i32, ptr %6, align 4, !tbaa !9
  %958 = and i32 %957, 16777216
  %959 = icmp ne i32 %958, 0
  br i1 %959, label %968, label %960

960:                                              ; preds = %956
  %961 = load ptr, ptr %9, align 8, !tbaa !5
  %962 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(948) %961)
  %963 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %40, i32 0, i32 0
  %964 = extractvalue { <2 x float>, <2 x float> } %962, 0
  store <2 x float> %964, ptr %963, align 4
  %965 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %40, i32 0, i32 1
  %966 = extractvalue { <2 x float>, <2 x float> } %962, 1
  store <2 x float> %966, ptr %965, align 4
  %967 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %40)
  store <2 x float> %967, ptr %39, align 4
  br label %971

968:                                              ; preds = %956, %944
  %969 = load ptr, ptr %9, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.ImGuiWindow, ptr %969, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 8 %970, i64 8, i1 false), !tbaa.struct !72
  br label %971

971:                                              ; preds = %968, %960
  %972 = load ptr, ptr %9, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.ImGuiWindow, ptr %972, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %973, ptr align 4 %39, i64 8, i1 false), !tbaa.struct !72
  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
  %974 = load ptr, ptr %9, align 8, !tbaa !5
  %975 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(948) %974)
  %976 = load ptr, ptr %9, align 8, !tbaa !5
  %977 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(948) %976)
  %978 = fadd float %975, %977
  store float %978, ptr %41, align 4, !tbaa !73
  %979 = load i8, ptr %15, align 1, !tbaa !70, !range !66, !noundef !67
  %980 = trunc i8 %979 to i1
  br i1 %980, label %981, label %998

981:                                              ; preds = %971
  %982 = load ptr, ptr %9, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.ImGuiWindow, ptr %982, i32 0, i32 40
  store i32 -1, ptr %983, align 8, !tbaa !142
  %984 = load i32, ptr %6, align 4, !tbaa !9
  %985 = and i32 %984, 67108864
  %986 = icmp ne i32 %985, 0
  br i1 %986, label %987, label %997

987:                                              ; preds = %981
  %988 = load i8, ptr %21, align 1, !tbaa !70, !range !66, !noundef !67
  %989 = trunc i8 %988 to i1
  br i1 %989, label %997, label %990

990:                                              ; preds = %987
  %991 = load ptr, ptr %7, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.ImGuiContext, ptr %991, i32 0, i32 65
  %993 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %992)
  %994 = getelementptr inbounds %struct.ImGuiPopupData, ptr %993, i32 0, i32 5
  %995 = load ptr, ptr %9, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.ImGuiWindow, ptr %995, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %996, ptr align 8 %994, i64 8, i1 false), !tbaa.struct !72
  br label %997

997:                                              ; preds = %990, %987, %981
  br label %998

998:                                              ; preds = %997, %971
  %999 = load i32, ptr %6, align 4, !tbaa !9
  %1000 = and i32 %999, 16777216
  %1001 = icmp ne i32 %1000, 0
  br i1 %1001, label %1002, label %1043

1002:                                             ; preds = %998
  %1003 = load ptr, ptr %19, align 8, !tbaa !5
  %1004 = icmp ne ptr %1003, null
  br i1 %1004, label %1005, label %1010

1005:                                             ; preds = %1002
  %1006 = load ptr, ptr %19, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.ImGuiWindow, ptr %1006, i32 0, i32 21
  %1008 = load i8, ptr %1007, align 2, !tbaa !107, !range !66, !noundef !67
  %1009 = trunc i8 %1008 to i1
  br label %1010

1010:                                             ; preds = %1005, %1002
  %1011 = phi i1 [ false, %1002 ], [ %1009, %1005 ]
  br i1 %1011, label %1012, label %1013

1012:                                             ; preds = %1010
  br label %1015

1013:                                             ; preds = %1010
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 5488, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1014:                                             ; No predecessors!
  br label %1015

1015:                                             ; preds = %1014, %1012
  %1016 = load ptr, ptr %19, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.ImGuiWindow, ptr %1016, i32 0, i32 49
  %1018 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1017, i32 0, i32 22
  %1019 = getelementptr inbounds %struct.ImVector.0, ptr %1018, i32 0, i32 0
  %1020 = load i32, ptr %1019, align 8, !tbaa !143
  %1021 = trunc i32 %1020 to i16
  %1022 = load ptr, ptr %9, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.ImGuiWindow, ptr %1022, i32 0, i32 32
  store i16 %1021, ptr %1023, align 2, !tbaa !93
  %1024 = load ptr, ptr %19, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.ImGuiWindow, ptr %1024, i32 0, i32 49
  %1026 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1025, i32 0, i32 22
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1026, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %1027 = load i32, ptr %6, align 4, !tbaa !9
  %1028 = and i32 %1027, 67108864
  %1029 = icmp ne i32 %1028, 0
  br i1 %1029, label %1042, label %1030

1030:                                             ; preds = %1015
  %1031 = load i8, ptr %21, align 1, !tbaa !70, !range !66, !noundef !67
  %1032 = trunc i8 %1031 to i1
  br i1 %1032, label %1042, label %1033

1033:                                             ; preds = %1030
  %1034 = load i8, ptr %25, align 1, !tbaa !70, !range !66, !noundef !67
  %1035 = trunc i8 %1034 to i1
  br i1 %1035, label %1042, label %1036

1036:                                             ; preds = %1033
  %1037 = load ptr, ptr %19, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.ImGuiWindow, ptr %1037, i32 0, i32 49
  %1039 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1038, i32 0, i32 0
  %1040 = load ptr, ptr %9, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.ImGuiWindow, ptr %1040, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1041, ptr align 8 %1039, i64 8, i1 false), !tbaa.struct !72
  br label %1042

1042:                                             ; preds = %1036, %1033, %1030, %1015
  br label %1043

1043:                                             ; preds = %1042, %998
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #13
  %1044 = load ptr, ptr %9, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.ImGuiWindow, ptr %1044, i32 0, i32 46
  %1046 = getelementptr inbounds %struct.ImVec2, ptr %1045, i32 0, i32 0
  %1047 = load float, ptr %1046, align 8, !tbaa !144
  %1048 = fcmp une float %1047, 0x47EFFFFFE0000000
  br i1 %1048, label %1049, label %1054

1049:                                             ; preds = %1043
  %1050 = load ptr, ptr %9, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.ImGuiWindow, ptr %1050, i32 0, i32 42
  %1052 = load i32, ptr %1051, align 8, !tbaa !83
  %1053 = icmp eq i32 %1052, 0
  br label %1054

1054:                                             ; preds = %1049, %1043
  %1055 = phi i1 [ false, %1043 ], [ %1053, %1049 ]
  %1056 = zext i1 %1055 to i8
  store i8 %1056, ptr %42, align 1, !tbaa !70
  %1057 = load i8, ptr %42, align 1, !tbaa !70, !range !66, !noundef !67
  %1058 = trunc i8 %1057 to i1
  br i1 %1058, label %1059, label %1069

1059:                                             ; preds = %1054
  %1060 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %1061 = load ptr, ptr %9, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.ImGuiWindow, ptr %1061, i32 0, i32 46
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %1063 = load ptr, ptr %9, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.ImGuiWindow, ptr %1063, i32 0, i32 5
  %1065 = load ptr, ptr %9, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.ImGuiWindow, ptr %1065, i32 0, i32 47
  %1067 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1064, ptr noundef nonnull align 4 dereferenceable(8) %1066)
  store <2 x float> %1067, ptr %44, align 4
  %1068 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1062, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %1068, ptr %43, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1060, 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 %1111

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

1073:                                             ; preds = %1069
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #13
  %1074 = load ptr, ptr %9, align 8, !tbaa !5
  %1075 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1074)
  store <2 x float> %1075, ptr %45, align 4
  %1076 = load ptr, ptr %9, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ImGuiWindow, ptr %1076, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1077, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #13
  br label %1110

1078:                                             ; preds = %1069
  %1079 = load i32, ptr %6, align 4, !tbaa !9
  %1080 = and i32 %1079, 67108864
  %1081 = icmp ne i32 %1080, 0
  br i1 %1081, label %1082, label %1093

1082:                                             ; preds = %1078
  %1083 = load i8, ptr %21, align 1, !tbaa !70, !range !66, !noundef !67
  %1084 = trunc i8 %1083 to i1
  br i1 %1084, label %1093, label %1085

1085:                                             ; preds = %1082
  %1086 = load i8, ptr %16, align 1, !tbaa !70, !range !66, !noundef !67
  %1087 = trunc i8 %1086 to i1
  br i1 %1087, label %1088, label %1093

1088:                                             ; preds = %1085
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #13
  %1089 = load ptr, ptr %9, align 8, !tbaa !5
  %1090 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1089)
  store <2 x float> %1090, ptr %46, align 4
  %1091 = load ptr, ptr %9, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.ImGuiWindow, ptr %1091, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1092, ptr align 4 %46, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  br label %1109

1093:                                             ; preds = %1085, %1082, %1078
  %1094 = load i32, ptr %6, align 4, !tbaa !9
  %1095 = and i32 %1094, 33554432
  %1096 = icmp ne i32 %1095, 0
  br i1 %1096, label %1097, label %1108

1097:                                             ; preds = %1093
  %1098 = load i8, ptr %21, align 1, !tbaa !70, !range !66, !noundef !67
  %1099 = trunc i8 %1098 to i1
  br i1 %1099, label %1108, label %1100

1100:                                             ; preds = %1097
  %1101 = load i8, ptr %25, align 1, !tbaa !70, !range !66, !noundef !67
  %1102 = trunc i8 %1101 to i1
  br i1 %1102, label %1108, label %1103

1103:                                             ; preds = %1100
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  %1104 = load ptr, ptr %9, align 8, !tbaa !5
  %1105 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1104)
  store <2 x float> %1105, ptr %47, align 4
  %1106 = load ptr, ptr %9, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.ImGuiWindow, ptr %1106, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1107, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  br label %1108

1108:                                             ; preds = %1103, %1100, %1097, %1093
  br label %1109

1109:                                             ; preds = %1108, %1088
  br label %1110

1110:                                             ; preds = %1109, %1073
  br label %1111

1111:                                             ; preds = %1110, %1059
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #13
  %1112 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %1113 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 0
  %1114 = extractvalue { <2 x float>, <2 x float> } %1112, 0
  store <2 x float> %1114, ptr %1113, align 4
  %1115 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 1
  %1116 = extractvalue { <2 x float>, <2 x float> } %1112, 1
  store <2 x float> %1116, ptr %1115, align 4
  %1117 = load i8, ptr %21, align 1, !tbaa !70, !range !66, !noundef !67
  %1118 = trunc i8 %1117 to i1
  br i1 %1118, label %1157, label %1119

1119:                                             ; preds = %1111
  %1120 = load i32, ptr %6, align 4, !tbaa !9
  %1121 = and i32 %1120, 16777216
  %1122 = icmp ne i32 %1121, 0
  br i1 %1122, label %1157, label %1123

1123:                                             ; preds = %1119
  %1124 = load ptr, ptr %9, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.ImGuiWindow, ptr %1124, i32 0, i32 36
  %1126 = load i8, ptr %1125, align 4, !tbaa !139
  %1127 = sext i8 %1126 to i32
  %1128 = icmp sle i32 %1127, 0
  br i1 %1128, label %1129, label %1157

1129:                                             ; preds = %1123
  %1130 = load ptr, ptr %9, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.ImGuiWindow, ptr %1130, i32 0, i32 37
  %1132 = load i8, ptr %1131, align 1, !tbaa !140
  %1133 = sext i8 %1132 to i32
  %1134 = icmp sle i32 %1133, 0
  br i1 %1134, label %1135, label %1157

1135:                                             ; preds = %1129
  %1136 = load ptr, ptr %7, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.ImGuiContext, ptr %1136, i32 0, i32 5
  %1138 = getelementptr inbounds %struct.ImGuiIO, ptr %1137, i32 0, i32 2
  %1139 = getelementptr inbounds %struct.ImVec2, ptr %1138, i32 0, i32 0
  %1140 = load float, ptr %1139, align 8, !tbaa !145
  %1141 = fcmp ogt float %1140, 0.000000e+00
  br i1 %1141, label %1142, label %1156

1142:                                             ; preds = %1135
  %1143 = load ptr, ptr %7, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.ImGuiContext, ptr %1143, i32 0, i32 5
  %1145 = getelementptr inbounds %struct.ImGuiIO, ptr %1144, i32 0, i32 2
  %1146 = getelementptr inbounds %struct.ImVec2, ptr %1145, i32 0, i32 1
  %1147 = load float, ptr %1146, align 4, !tbaa !146
  %1148 = fcmp ogt float %1147, 0.000000e+00
  br i1 %1148, label %1149, label %1156

1149:                                             ; preds = %1142
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #13
  %1150 = load ptr, ptr %8, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.ImGuiStyle, ptr %1150, i32 0, i32 28
  %1152 = load ptr, ptr %8, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.ImGuiStyle, ptr %1152, i32 0, i32 29
  %1154 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1151, ptr noundef nonnull align 4 dereferenceable(8) %1153)
  store <2 x float> %1154, ptr %49, align 4
  %1155 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRectRK6ImVec2(ptr noundef %1155, ptr noundef nonnull align 4 dereferenceable(16) %48, ptr noundef nonnull align 4 dereferenceable(8) %49)
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #13
  br label %1156

1156:                                             ; preds = %1149, %1142, %1135
  br label %1157

1157:                                             ; preds = %1156, %1129, %1123, %1119, %1111
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #13
  %1158 = load ptr, ptr %9, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.ImGuiWindow, ptr %1158, i32 0, i32 3
  %1160 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1159)
  store <2 x float> %1160, ptr %50, align 4
  %1161 = load ptr, ptr %9, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.ImGuiWindow, ptr %1161, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1162, ptr align 4 %50, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  %1163 = load i32, ptr %6, align 4, !tbaa !9
  %1164 = and i32 %1163, 16777216
  %1165 = icmp ne i32 %1164, 0
  br i1 %1165, label %1166, label %1170

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

1170:                                             ; preds = %1157
  %1171 = load i32, ptr %6, align 4, !tbaa !9
  %1172 = and i32 %1171, 67108864
  %1173 = icmp ne i32 %1172, 0
  br i1 %1173, label %1174, label %1182

1174:                                             ; preds = %1170
  %1175 = load i32, ptr %6, align 4, !tbaa !9
  %1176 = and i32 %1175, 134217728
  %1177 = icmp ne i32 %1176, 0
  br i1 %1177, label %1182, label %1178

1178:                                             ; preds = %1174
  %1179 = load ptr, ptr %8, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.ImGuiStyle, ptr %1179, i32 0, i32 9
  %1181 = load float, ptr %1180, align 4, !tbaa !148
  br label %1186

1182:                                             ; preds = %1174, %1170
  %1183 = load ptr, ptr %8, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.ImGuiStyle, ptr %1183, i32 0, i32 2
  %1185 = load float, ptr %1184, align 4, !tbaa !149
  br label %1186

1186:                                             ; preds = %1182, %1178
  %1187 = phi float [ %1181, %1178 ], [ %1185, %1182 ]
  br label %1188

1188:                                             ; preds = %1186, %1166
  %1189 = phi float [ %1169, %1166 ], [ %1187, %1186 ]
  %1190 = load ptr, ptr %9, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.ImGuiWindow, ptr %1190, i32 0, i32 9
  store float %1189, ptr %1191, align 8, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #13
  store i8 0, ptr %51, align 1, !tbaa !70
  %1192 = load i8, ptr %15, align 1, !tbaa !70, !range !66, !noundef !67
  %1193 = trunc i8 %1192 to i1
  br i1 %1193, label %1194, label %1210

1194:                                             ; preds = %1188
  %1195 = load i32, ptr %6, align 4, !tbaa !9
  %1196 = and i32 %1195, 4096
  %1197 = icmp ne i32 %1196, 0
  br i1 %1197, label %1210, label %1198

1198:                                             ; preds = %1194
  %1199 = load i32, ptr %6, align 4, !tbaa !9
  %1200 = and i32 %1199, 67108864
  %1201 = icmp ne i32 %1200, 0
  br i1 %1201, label %1202, label %1203

1202:                                             ; preds = %1198
  store i8 1, ptr %51, align 1, !tbaa !70
  br label %1209

1203:                                             ; preds = %1198
  %1204 = load i32, ptr %6, align 4, !tbaa !9
  %1205 = and i32 %1204, 50331648
  %1206 = icmp eq i32 %1205, 0
  br i1 %1206, label %1207, label %1208

1207:                                             ; preds = %1203
  store i8 1, ptr %51, align 1, !tbaa !70
  br label %1208

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

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

1210:                                             ; preds = %1209, %1194, %1188
  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
  %1211 = load ptr, ptr %7, align 8, !tbaa !5
  %1212 = getelementptr inbounds %struct.ImGuiContext, ptr %1211, i32 0, i32 5
  %1213 = getelementptr inbounds %struct.ImGuiIO, ptr %1212, i32 0, i32 22
  %1214 = load i8, ptr %1213, align 1, !tbaa !151, !range !66, !noundef !67
  %1215 = trunc i8 %1214 to i1
  %1216 = zext i1 %1215 to i64
  %1217 = select i1 %1215, i32 2, i32 1
  store i32 %1217, ptr %54, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #13
  %1218 = load ptr, ptr %7, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.ImGuiContext, ptr %1218, i32 0, i32 8
  %1220 = load float, ptr %1219, align 8, !tbaa !152
  %1221 = fmul float %1220, 0x3FF59999A0000000
  %1222 = load ptr, ptr %9, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.ImGuiWindow, ptr %1222, i32 0, i32 9
  %1224 = load float, ptr %1223, align 8, !tbaa !150
  %1225 = fadd float %1224, 1.000000e+00
  %1226 = load ptr, ptr %7, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.ImGuiContext, ptr %1226, i32 0, i32 8
  %1228 = load float, ptr %1227, align 8, !tbaa !152
  %1229 = call float @llvm.fmuladd.f32(float %1228, float 0x3FC99999A0000000, float %1225)
  %1230 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1221, float noundef %1229)
  %1231 = fptosi float %1230 to i32
  %1232 = sitofp i32 %1231 to float
  store float %1232, ptr %55, align 4, !tbaa !73
  %1233 = load ptr, ptr %9, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.ImGuiWindow, ptr %1233, i32 0, i32 24
  %1235 = load i8, ptr %1234, align 1, !tbaa !136, !range !66, !noundef !67
  %1236 = trunc i8 %1235 to i1
  br i1 %1236, label %1244, label %1237

1237:                                             ; preds = %1210
  %1238 = load ptr, ptr %9, align 8, !tbaa !5
  %1239 = load i32, ptr %54, align 4, !tbaa !9
  %1240 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 0
  %1241 = call noundef zeroext i1 @_ZN5ImGuiL18UpdateManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(ptr noundef %1238, ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef %52, i32 noundef %1239, ptr noundef %1240)
  br i1 %1241, label %1242, label %1243

1242:                                             ; preds = %1237
  store i8 1, ptr %36, align 1, !tbaa !70
  store i8 1, ptr %35, align 1, !tbaa !70
  br label %1243

1243:                                             ; preds = %1242, %1237
  br label %1244

1244:                                             ; preds = %1243, %1210
  %1245 = load i32, ptr %52, align 4, !tbaa !9
  %1246 = trunc i32 %1245 to i8
  %1247 = load ptr, ptr %9, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.ImGuiWindow, ptr %1247, i32 0, i32 30
  store i8 %1246, ptr %1248, align 1, !tbaa !153
  %1249 = load ptr, ptr %9, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.ImGuiWindow, ptr %1249, i32 0, i32 24
  %1251 = load i8, ptr %1250, align 1, !tbaa !136, !range !66, !noundef !67
  %1252 = trunc i8 %1251 to i1
  br i1 %1252, label %1405, label %1253

1253:                                             ; preds = %1244
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %1254 = load ptr, ptr %9, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.ImGuiWindow, ptr %1254, i32 0, i32 5
  %1256 = getelementptr inbounds %struct.ImVec2, ptr %1255, i32 0, i32 0
  %1257 = load float, ptr %1256, align 8, !tbaa !117
  %1258 = load ptr, ptr %9, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.ImGuiWindow, ptr %1258, i32 0, i32 5
  %1260 = getelementptr inbounds %struct.ImVec2, ptr %1259, i32 0, i32 1
  %1261 = load float, ptr %1260, align 4, !tbaa !119
  %1262 = load float, ptr %41, align 4, !tbaa !73
  %1263 = fsub float %1261, %1262
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %56, float noundef %1257, float noundef %1263)
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %1264 = load ptr, ptr %9, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.ImGuiWindow, ptr %1264, i32 0, i32 51
  %1266 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1265)
  store <2 x float> %1266, ptr %58, align 4
  %1267 = load ptr, ptr %9, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.ImGuiWindow, ptr %1267, i32 0, i32 18
  %1269 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %58, ptr noundef nonnull align 4 dereferenceable(8) %1268)
  store <2 x float> %1269, 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
  %1270 = load i8, ptr %10, align 1, !tbaa !70, !range !66, !noundef !67
  %1271 = trunc i8 %1270 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #13
  br i1 %1271, label %1272, label %1273

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

1273:                                             ; preds = %1253
  %1274 = load ptr, ptr %9, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.ImGuiWindow, ptr %1274, i32 0, i32 6
  %1276 = load ptr, ptr %9, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.ImGuiWindow, ptr %1276, i32 0, i32 8
  %1278 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1277, float noundef 2.000000e+00)
  store <2 x float> %1278, ptr %60, align 4
  %1279 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1275, ptr noundef nonnull align 4 dereferenceable(8) %60)
  store <2 x float> %1279, ptr %59, align 4
  br label %1280

1280:                                             ; preds = %1273, %1272
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  %1281 = load i8, ptr %35, align 1, !tbaa !70, !range !66, !noundef !67
  %1282 = trunc i8 %1281 to i1
  br i1 %1282, label %1283, label %1286

1283:                                             ; preds = %1280
  %1284 = getelementptr inbounds %struct.ImVec2, ptr %56, i32 0, i32 0
  %1285 = load float, ptr %1284, align 4, !tbaa !137
  br label %1289

1286:                                             ; preds = %1280
  %1287 = getelementptr inbounds %struct.ImVec2, ptr %57, i32 0, i32 0
  %1288 = load float, ptr %1287, align 4, !tbaa !137
  br label %1289

1289:                                             ; preds = %1286, %1283
  %1290 = phi float [ %1285, %1283 ], [ %1288, %1286 ]
  store float %1290, ptr %61, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #13
  %1291 = load i8, ptr %36, align 1, !tbaa !70, !range !66, !noundef !67
  %1292 = trunc i8 %1291 to i1
  br i1 %1292, label %1293, label %1296

1293:                                             ; preds = %1289
  %1294 = getelementptr inbounds %struct.ImVec2, ptr %56, i32 0, i32 1
  %1295 = load float, ptr %1294, align 4, !tbaa !138
  br label %1299

1296:                                             ; preds = %1289
  %1297 = getelementptr inbounds %struct.ImVec2, ptr %57, i32 0, i32 1
  %1298 = load float, ptr %1297, align 4, !tbaa !138
  br label %1299

1299:                                             ; preds = %1296, %1293
  %1300 = phi float [ %1295, %1293 ], [ %1298, %1296 ]
  store float %1300, ptr %62, align 4, !tbaa !73
  %1301 = load i32, ptr %6, align 4, !tbaa !9
  %1302 = and i32 %1301, 16384
  %1303 = icmp ne i32 %1302, 0
  br i1 %1303, label %1316, label %1304

1304:                                             ; preds = %1299
  %1305 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 1
  %1306 = load float, ptr %1305, align 4, !tbaa !138
  %1307 = load float, ptr %62, align 4, !tbaa !73
  %1308 = fcmp ogt float %1306, %1307
  br i1 %1308, label %1309, label %1314

1309:                                             ; preds = %1304
  %1310 = load i32, ptr %6, align 4, !tbaa !9
  %1311 = and i32 %1310, 8
  %1312 = icmp ne i32 %1311, 0
  %1313 = xor i1 %1312, true
  br label %1314

1314:                                             ; preds = %1309, %1304
  %1315 = phi i1 [ false, %1304 ], [ %1313, %1309 ]
  br label %1316

1316:                                             ; preds = %1314, %1299
  %1317 = phi i1 [ true, %1299 ], [ %1315, %1314 ]
  %1318 = load ptr, ptr %9, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.ImGuiWindow, ptr %1318, i32 0, i32 20
  %1320 = zext i1 %1317 to i8
  store i8 %1320, ptr %1319, align 1, !tbaa !154
  %1321 = load i32, ptr %6, align 4, !tbaa !9
  %1322 = and i32 %1321, 32768
  %1323 = icmp ne i32 %1322, 0
  br i1 %1323, label %1351, label %1324

1324:                                             ; preds = %1316
  %1325 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 0
  %1326 = load float, ptr %1325, align 4, !tbaa !137
  %1327 = load float, ptr %61, align 4, !tbaa !73
  %1328 = load ptr, ptr %9, align 8, !tbaa !5
  %1329 = getelementptr inbounds %struct.ImGuiWindow, ptr %1328, i32 0, i32 20
  %1330 = load i8, ptr %1329, align 1, !tbaa !154, !range !66, !noundef !67
  %1331 = trunc i8 %1330 to i1
  br i1 %1331, label %1332, label %1336

1332:                                             ; preds = %1324
  %1333 = load ptr, ptr %8, align 8, !tbaa !5
  %1334 = getelementptr inbounds %struct.ImGuiStyle, ptr %1333, i32 0, i32 19
  %1335 = load float, ptr %1334, align 4, !tbaa !155
  br label %1337

1336:                                             ; preds = %1324
  br label %1337

1337:                                             ; preds = %1336, %1332
  %1338 = phi float [ %1335, %1332 ], [ 0.000000e+00, %1336 ]
  %1339 = fsub float %1327, %1338
  %1340 = fcmp ogt float %1326, %1339
  br i1 %1340, label %1341, label %1349

1341:                                             ; preds = %1337
  %1342 = load i32, ptr %6, align 4, !tbaa !9
  %1343 = and i32 %1342, 8
  %1344 = icmp ne i32 %1343, 0
  br i1 %1344, label %1349, label %1345

1345:                                             ; preds = %1341
  %1346 = load i32, ptr %6, align 4, !tbaa !9
  %1347 = and i32 %1346, 2048
  %1348 = icmp ne i32 %1347, 0
  br label %1349

1349:                                             ; preds = %1345, %1341, %1337
  %1350 = phi i1 [ false, %1341 ], [ false, %1337 ], [ %1348, %1345 ]
  br label %1351

1351:                                             ; preds = %1349, %1316
  %1352 = phi i1 [ true, %1316 ], [ %1350, %1349 ]
  %1353 = load ptr, ptr %9, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.ImGuiWindow, ptr %1353, i32 0, i32 19
  %1355 = zext i1 %1352 to i8
  store i8 %1355, ptr %1354, align 4, !tbaa !156
  %1356 = load ptr, ptr %9, align 8, !tbaa !5
  %1357 = getelementptr inbounds %struct.ImGuiWindow, ptr %1356, i32 0, i32 19
  %1358 = load i8, ptr %1357, align 4, !tbaa !156, !range !66, !noundef !67
  %1359 = trunc i8 %1358 to i1
  br i1 %1359, label %1360, label %1380

1360:                                             ; preds = %1351
  %1361 = load ptr, ptr %9, align 8, !tbaa !5
  %1362 = getelementptr inbounds %struct.ImGuiWindow, ptr %1361, i32 0, i32 20
  %1363 = load i8, ptr %1362, align 1, !tbaa !154, !range !66, !noundef !67
  %1364 = trunc i8 %1363 to i1
  br i1 %1364, label %1380, label %1365

1365:                                             ; preds = %1360
  %1366 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 1
  %1367 = load float, ptr %1366, align 4, !tbaa !138
  %1368 = load float, ptr %62, align 4, !tbaa !73
  %1369 = fcmp ogt float %1367, %1368
  br i1 %1369, label %1370, label %1375

1370:                                             ; preds = %1365
  %1371 = load i32, ptr %6, align 4, !tbaa !9
  %1372 = and i32 %1371, 8
  %1373 = icmp ne i32 %1372, 0
  %1374 = xor i1 %1373, true
  br label %1375

1375:                                             ; preds = %1370, %1365
  %1376 = phi i1 [ false, %1365 ], [ %1374, %1370 ]
  %1377 = load ptr, ptr %9, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.ImGuiWindow, ptr %1377, i32 0, i32 20
  %1379 = zext i1 %1376 to i8
  store i8 %1379, ptr %1378, align 1, !tbaa !154
  br label %1380

1380:                                             ; preds = %1375, %1360, %1351
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  %1381 = load ptr, ptr %9, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct.ImGuiWindow, ptr %1381, i32 0, i32 20
  %1383 = load i8, ptr %1382, align 1, !tbaa !154, !range !66, !noundef !67
  %1384 = trunc i8 %1383 to i1
  br i1 %1384, label %1385, label %1389

1385:                                             ; preds = %1380
  %1386 = load ptr, ptr %8, align 8, !tbaa !5
  %1387 = getelementptr inbounds %struct.ImGuiStyle, ptr %1386, i32 0, i32 19
  %1388 = load float, ptr %1387, align 4, !tbaa !155
  br label %1390

1389:                                             ; preds = %1380
  br label %1390

1390:                                             ; preds = %1389, %1385
  %1391 = phi float [ %1388, %1385 ], [ 0.000000e+00, %1389 ]
  %1392 = load ptr, ptr %9, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.ImGuiWindow, ptr %1392, i32 0, i32 19
  %1394 = load i8, ptr %1393, align 4, !tbaa !156, !range !66, !noundef !67
  %1395 = trunc i8 %1394 to i1
  br i1 %1395, label %1396, label %1400

1396:                                             ; preds = %1390
  %1397 = load ptr, ptr %8, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.ImGuiStyle, ptr %1397, i32 0, i32 19
  %1399 = load float, ptr %1398, align 4, !tbaa !155
  br label %1401

1400:                                             ; preds = %1390
  br label %1401

1401:                                             ; preds = %1400, %1396
  %1402 = phi float [ %1399, %1396 ], [ 0.000000e+00, %1400 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %63, float noundef %1391, float noundef %1402)
  %1403 = load ptr, ptr %9, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.ImGuiWindow, ptr %1403, i32 0, i32 18
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1404, ptr align 4 %63, i64 8, i1 false), !tbaa.struct !72
  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 %1405

1405:                                             ; preds = %1401, %1244
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #13
  %1406 = load i32, ptr %6, align 4, !tbaa !9
  %1407 = and i32 %1406, 16777216
  %1408 = icmp ne i32 %1407, 0
  br i1 %1408, label %1409, label %1419

1409:                                             ; preds = %1405
  %1410 = load i32, ptr %6, align 4, !tbaa !9
  %1411 = and i32 %1410, 67108864
  %1412 = icmp ne i32 %1411, 0
  br i1 %1412, label %1419, label %1413

1413:                                             ; preds = %1409
  %1414 = load i8, ptr %25, align 1, !tbaa !70, !range !66, !noundef !67
  %1415 = trunc i8 %1414 to i1
  br i1 %1415, label %1419, label %1416

1416:                                             ; preds = %1413
  %1417 = load ptr, ptr %19, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.ImGuiWindow, ptr %1417, i32 0, i32 54
  br label %1420

1419:                                             ; preds = %1413, %1409, %1405
  br label %1420

1420:                                             ; preds = %1419, %1416
  %1421 = phi ptr [ %1418, %1416 ], [ %48, %1419 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %1421, i64 16, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #13
  %1422 = load ptr, ptr %9, align 8, !tbaa !5
  %1423 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(948) %1422)
  %1424 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %65, i32 0, i32 0
  %1425 = extractvalue { <2 x float>, <2 x float> } %1423, 0
  store <2 x float> %1425, ptr %1424, align 4
  %1426 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %65, i32 0, i32 1
  %1427 = extractvalue { <2 x float>, <2 x float> } %1423, 1
  store <2 x float> %1427, ptr %1426, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #13
  %1428 = load ptr, ptr %9, align 8, !tbaa !5
  %1429 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(948) %1428)
  %1430 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %66, i32 0, i32 0
  %1431 = extractvalue { <2 x float>, <2 x float> } %1429, 0
  store <2 x float> %1431, ptr %1430, align 4
  %1432 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %66, i32 0, i32 1
  %1433 = extractvalue { <2 x float>, <2 x float> } %1429, 1
  store <2 x float> %1433, ptr %1432, align 4
  %1434 = load ptr, ptr %9, align 8, !tbaa !5
  %1435 = getelementptr inbounds %struct.ImGuiWindow, ptr %1434, i32 0, i32 50
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1435, ptr align 4 %65, i64 16, i1 false), !tbaa.struct !109
  %1436 = load ptr, ptr %9, align 8, !tbaa !5
  %1437 = getelementptr inbounds %struct.ImGuiWindow, ptr %1436, i32 0, i32 50
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1437, ptr noundef nonnull align 4 dereferenceable(16) %64)
  %1438 = load ptr, ptr %9, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.ImGuiWindow, ptr %1438, i32 0, i32 3
  %1440 = getelementptr inbounds %struct.ImVec2, ptr %1439, i32 0, i32 0
  %1441 = load float, ptr %1440, align 8, !tbaa !157
  %1442 = load ptr, ptr %9, align 8, !tbaa !5
  %1443 = getelementptr inbounds %struct.ImGuiWindow, ptr %1442, i32 0, i32 51
  %1444 = getelementptr inbounds %struct.ImRect, ptr %1443, i32 0, i32 0
  %1445 = getelementptr inbounds %struct.ImVec2, ptr %1444, i32 0, i32 0
  store float %1441, ptr %1445, align 8, !tbaa !158
  %1446 = load ptr, ptr %9, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.ImGuiWindow, ptr %1446, i32 0, i32 3
  %1448 = getelementptr inbounds %struct.ImVec2, ptr %1447, i32 0, i32 1
  %1449 = load float, ptr %1448, align 4, !tbaa !159
  %1450 = load float, ptr %41, align 4, !tbaa !73
  %1451 = fadd float %1449, %1450
  %1452 = load ptr, ptr %9, align 8, !tbaa !5
  %1453 = getelementptr inbounds %struct.ImGuiWindow, ptr %1452, i32 0, i32 51
  %1454 = getelementptr inbounds %struct.ImRect, ptr %1453, i32 0, i32 0
  %1455 = getelementptr inbounds %struct.ImVec2, ptr %1454, i32 0, i32 1
  store float %1451, ptr %1455, align 4, !tbaa !160
  %1456 = load ptr, ptr %9, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.ImGuiWindow, ptr %1456, i32 0, i32 3
  %1458 = getelementptr inbounds %struct.ImVec2, ptr %1457, i32 0, i32 0
  %1459 = load float, ptr %1458, align 8, !tbaa !157
  %1460 = load ptr, ptr %9, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.ImGuiWindow, ptr %1460, i32 0, i32 4
  %1462 = getelementptr inbounds %struct.ImVec2, ptr %1461, i32 0, i32 0
  %1463 = load float, ptr %1462, align 8, !tbaa !118
  %1464 = fadd float %1459, %1463
  %1465 = load ptr, ptr %9, align 8, !tbaa !5
  %1466 = getelementptr inbounds %struct.ImGuiWindow, ptr %1465, i32 0, i32 18
  %1467 = getelementptr inbounds %struct.ImVec2, ptr %1466, i32 0, i32 0
  %1468 = load float, ptr %1467, align 4, !tbaa !161
  %1469 = fsub float %1464, %1468
  %1470 = load ptr, ptr %9, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.ImGuiWindow, ptr %1470, i32 0, i32 51
  %1472 = getelementptr inbounds %struct.ImRect, ptr %1471, i32 0, i32 1
  %1473 = getelementptr inbounds %struct.ImVec2, ptr %1472, i32 0, i32 0
  store float %1469, ptr %1473, align 8, !tbaa !162
  %1474 = load ptr, ptr %9, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.ImGuiWindow, ptr %1474, i32 0, i32 3
  %1476 = getelementptr inbounds %struct.ImVec2, ptr %1475, i32 0, i32 1
  %1477 = load float, ptr %1476, align 4, !tbaa !159
  %1478 = load ptr, ptr %9, align 8, !tbaa !5
  %1479 = getelementptr inbounds %struct.ImGuiWindow, ptr %1478, i32 0, i32 4
  %1480 = getelementptr inbounds %struct.ImVec2, ptr %1479, i32 0, i32 1
  %1481 = load float, ptr %1480, align 4, !tbaa !120
  %1482 = fadd float %1477, %1481
  %1483 = load ptr, ptr %9, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.ImGuiWindow, ptr %1483, i32 0, i32 18
  %1485 = getelementptr inbounds %struct.ImVec2, ptr %1484, i32 0, i32 1
  %1486 = load float, ptr %1485, align 4, !tbaa !163
  %1487 = fsub float %1482, %1486
  %1488 = load ptr, ptr %9, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.ImGuiWindow, ptr %1488, i32 0, i32 51
  %1490 = getelementptr inbounds %struct.ImRect, ptr %1489, i32 0, i32 1
  %1491 = getelementptr inbounds %struct.ImVec2, ptr %1490, i32 0, i32 1
  store float %1487, ptr %1491, align 4, !tbaa !164
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #13
  %1492 = load i32, ptr %6, align 4, !tbaa !9
  %1493 = and i32 %1492, 1024
  %1494 = icmp ne i32 %1493, 0
  br i1 %1494, label %1499, label %1495

1495:                                             ; preds = %1420
  %1496 = load i32, ptr %6, align 4, !tbaa !9
  %1497 = and i32 %1496, 1
  %1498 = icmp ne i32 %1497, 0
  br i1 %1498, label %1503, label %1499

1499:                                             ; preds = %1495, %1420
  %1500 = load ptr, ptr %8, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.ImGuiStyle, ptr %1500, i32 0, i32 13
  %1502 = load float, ptr %1501, align 4, !tbaa !165
  br label %1507

1503:                                             ; preds = %1495
  %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 !122
  br label %1507

1507:                                             ; preds = %1503, %1499
  %1508 = phi float [ %1502, %1499 ], [ %1506, %1503 ]
  store float %1508, ptr %67, align 4, !tbaa !73
  %1509 = load ptr, ptr %9, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.ImGuiWindow, ptr %1509, i32 0, i32 51
  %1511 = getelementptr inbounds %struct.ImRect, ptr %1510, i32 0, i32 0
  %1512 = getelementptr inbounds %struct.ImVec2, ptr %1511, i32 0, i32 0
  %1513 = load float, ptr %1512, align 8, !tbaa !158
  %1514 = fadd float 5.000000e-01, %1513
  %1515 = load ptr, ptr %9, align 8, !tbaa !5
  %1516 = getelementptr inbounds %struct.ImGuiWindow, ptr %1515, i32 0, i32 8
  %1517 = getelementptr inbounds %struct.ImVec2, ptr %1516, i32 0, i32 0
  %1518 = load float, ptr %1517, align 8, !tbaa !126
  %1519 = fmul float %1518, 5.000000e-01
  %1520 = call noundef float @_ZL7ImFloorf(float noundef %1519)
  %1521 = load ptr, ptr %9, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.ImGuiWindow, ptr %1521, i32 0, i32 10
  %1523 = load float, ptr %1522, align 4, !tbaa !122
  %1524 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1520, float noundef %1523)
  %1525 = fadd float %1514, %1524
  %1526 = call noundef float @_ZL7ImFloorf(float noundef %1525)
  %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 0
  %1530 = getelementptr inbounds %struct.ImVec2, ptr %1529, i32 0, i32 0
  store float %1526, ptr %1530, align 8, !tbaa !166
  %1531 = load ptr, ptr %9, align 8, !tbaa !5
  %1532 = getelementptr inbounds %struct.ImGuiWindow, ptr %1531, i32 0, i32 51
  %1533 = getelementptr inbounds %struct.ImRect, ptr %1532, i32 0, i32 0
  %1534 = getelementptr inbounds %struct.ImVec2, ptr %1533, i32 0, i32 1
  %1535 = load float, ptr %1534, align 4, !tbaa !160
  %1536 = fadd float 5.000000e-01, %1535
  %1537 = load float, ptr %67, align 4, !tbaa !73
  %1538 = fadd float %1536, %1537
  %1539 = call noundef float @_ZL7ImFloorf(float noundef %1538)
  %1540 = load ptr, ptr %9, align 8, !tbaa !5
  %1541 = getelementptr inbounds %struct.ImGuiWindow, ptr %1540, i32 0, i32 52
  %1542 = getelementptr inbounds %struct.ImRect, ptr %1541, i32 0, i32 0
  %1543 = getelementptr inbounds %struct.ImVec2, ptr %1542, i32 0, i32 1
  store float %1539, ptr %1543, align 4, !tbaa !167
  %1544 = load ptr, ptr %9, align 8, !tbaa !5
  %1545 = getelementptr inbounds %struct.ImGuiWindow, ptr %1544, i32 0, i32 51
  %1546 = getelementptr inbounds %struct.ImRect, ptr %1545, i32 0, i32 1
  %1547 = getelementptr inbounds %struct.ImVec2, ptr %1546, i32 0, i32 0
  %1548 = load float, ptr %1547, align 8, !tbaa !162
  %1549 = fadd float 5.000000e-01, %1548
  %1550 = load ptr, ptr %9, align 8, !tbaa !5
  %1551 = getelementptr inbounds %struct.ImGuiWindow, ptr %1550, i32 0, i32 8
  %1552 = getelementptr inbounds %struct.ImVec2, ptr %1551, i32 0, i32 0
  %1553 = load float, ptr %1552, align 8, !tbaa !126
  %1554 = fmul float %1553, 5.000000e-01
  %1555 = call noundef float @_ZL7ImFloorf(float noundef %1554)
  %1556 = load ptr, ptr %9, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct.ImGuiWindow, ptr %1556, i32 0, i32 10
  %1558 = load float, ptr %1557, align 4, !tbaa !122
  %1559 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1555, float noundef %1558)
  %1560 = fsub float %1549, %1559
  %1561 = call noundef float @_ZL7ImFloorf(float noundef %1560)
  %1562 = load ptr, ptr %9, align 8, !tbaa !5
  %1563 = getelementptr inbounds %struct.ImGuiWindow, ptr %1562, i32 0, i32 52
  %1564 = getelementptr inbounds %struct.ImRect, ptr %1563, i32 0, i32 1
  %1565 = getelementptr inbounds %struct.ImVec2, ptr %1564, i32 0, i32 0
  store float %1561, ptr %1565, align 8, !tbaa !168
  %1566 = load ptr, ptr %9, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.ImGuiWindow, ptr %1566, i32 0, i32 51
  %1568 = getelementptr inbounds %struct.ImRect, ptr %1567, i32 0, i32 1
  %1569 = getelementptr inbounds %struct.ImVec2, ptr %1568, i32 0, i32 1
  %1570 = load float, ptr %1569, align 4, !tbaa !164
  %1571 = fadd float 5.000000e-01, %1570
  %1572 = load ptr, ptr %9, align 8, !tbaa !5
  %1573 = getelementptr inbounds %struct.ImGuiWindow, ptr %1572, i32 0, i32 10
  %1574 = load float, ptr %1573, align 4, !tbaa !122
  %1575 = fsub float %1571, %1574
  %1576 = call noundef float @_ZL7ImFloorf(float noundef %1575)
  %1577 = load ptr, ptr %9, align 8, !tbaa !5
  %1578 = getelementptr inbounds %struct.ImGuiWindow, ptr %1577, i32 0, i32 52
  %1579 = getelementptr inbounds %struct.ImRect, ptr %1578, i32 0, i32 1
  %1580 = getelementptr inbounds %struct.ImVec2, ptr %1579, i32 0, i32 1
  store float %1576, ptr %1580, align 4, !tbaa !169
  %1581 = load ptr, ptr %9, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.ImGuiWindow, ptr %1581, i32 0, i32 52
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1582, ptr noundef nonnull align 4 dereferenceable(16) %64)
  %1583 = load ptr, ptr %9, align 8, !tbaa !5
  %1584 = getelementptr inbounds %struct.ImGuiWindow, ptr %1583, i32 0, i32 4
  %1585 = getelementptr inbounds %struct.ImVec2, ptr %1584, i32 0, i32 0
  %1586 = load float, ptr %1585, align 8, !tbaa !118
  %1587 = fcmp ogt float %1586, 0.000000e+00
  br i1 %1587, label %1588, label %1605

1588:                                             ; preds = %1507
  %1589 = load i32, ptr %6, align 4, !tbaa !9
  %1590 = and i32 %1589, 33554432
  %1591 = icmp ne i32 %1590, 0
  br i1 %1591, label %1605, label %1592

1592:                                             ; preds = %1588
  %1593 = load i32, ptr %6, align 4, !tbaa !9
  %1594 = and i32 %1593, 64
  %1595 = icmp ne i32 %1594, 0
  br i1 %1595, label %1605, label %1596

1596:                                             ; preds = %1592
  %1597 = load ptr, ptr %9, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.ImGuiWindow, ptr %1597, i32 0, i32 4
  %1599 = getelementptr inbounds %struct.ImVec2, ptr %1598, i32 0, i32 0
  %1600 = load float, ptr %1599, align 8, !tbaa !118
  %1601 = fmul float %1600, 0x3FE4CCCCC0000000
  %1602 = call noundef float @_ZL7ImFloorf(float noundef %1601)
  %1603 = load ptr, ptr %9, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.ImGuiWindow, ptr %1603, i32 0, i32 58
  store float %1602, ptr %1604, align 8, !tbaa !170
  br label %1613

1605:                                             ; preds = %1592, %1588, %1507
  %1606 = load ptr, ptr %7, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct.ImGuiContext, ptr %1606, i32 0, i32 8
  %1608 = load float, ptr %1607, align 8, !tbaa !152
  %1609 = fmul float %1608, 1.600000e+01
  %1610 = call noundef float @_ZL7ImFloorf(float noundef %1609)
  %1611 = load ptr, ptr %9, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.ImGuiWindow, ptr %1611, i32 0, i32 58
  store float %1610, ptr %1612, align 8, !tbaa !170
  br label %1613

1613:                                             ; preds = %1605, %1596
  %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 0
  %1617 = load float, ptr %1616, align 8, !tbaa !171
  %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 0
  %1621 = load float, ptr %1620, align 8, !tbaa !126
  %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 51
  %1625 = call noundef float @_ZNK6ImRect8GetWidthEv(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 0
  store float %1627, ptr %1630, align 4, !tbaa !172
  %1631 = load ptr, ptr %9, align 8, !tbaa !5
  %1632 = getelementptr inbounds %struct.ImGuiWindow, ptr %1631, i32 0, i32 6
  %1633 = getelementptr inbounds %struct.ImVec2, ptr %1632, i32 0, i32 1
  %1634 = load float, ptr %1633, align 4, !tbaa !173
  %1635 = load ptr, ptr %9, align 8, !tbaa !5
  %1636 = getelementptr inbounds %struct.ImGuiWindow, ptr %1635, i32 0, i32 8
  %1637 = getelementptr inbounds %struct.ImVec2, ptr %1636, i32 0, i32 1
  %1638 = load float, ptr %1637, align 4, !tbaa !174
  %1639 = call float @llvm.fmuladd.f32(float %1638, float 2.000000e+00, float %1634)
  %1640 = load ptr, ptr %9, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.ImGuiWindow, ptr %1640, i32 0, i32 51
  %1642 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1641)
  %1643 = fsub float %1639, %1642
  %1644 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1643)
  %1645 = load ptr, ptr %9, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.ImGuiWindow, ptr %1645, i32 0, i32 15
  %1647 = getelementptr inbounds %struct.ImVec2, ptr %1646, i32 0, i32 1
  store float %1644, ptr %1647, align 4, !tbaa !175
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #13
  %1648 = load ptr, ptr %9, align 8, !tbaa !5
  %1649 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef %1648, i1 noundef zeroext true)
  store <2 x float> %1649, ptr %68, align 4
  %1650 = load ptr, ptr %9, align 8, !tbaa !5
  %1651 = getelementptr inbounds %struct.ImGuiWindow, ptr %1650, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1651, ptr align 4 %68, i64 8, i1 false), !tbaa.struct !72
  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)
  %1652 = load ptr, ptr %9, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.ImGuiWindow, ptr %1652, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1653, ptr align 4 %69, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #13
  %1654 = load ptr, ptr %9, align 8, !tbaa !5
  %1655 = getelementptr inbounds %struct.ImGuiWindow, ptr %1654, i32 0, i32 64
  %1656 = load ptr, ptr %1655, align 8, !tbaa !176
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168) %1656)
  %1657 = load ptr, ptr %9, align 8, !tbaa !5
  %1658 = getelementptr inbounds %struct.ImGuiWindow, ptr %1657, i32 0, i32 64
  %1659 = load ptr, ptr %1658, align 8, !tbaa !176
  %1660 = load ptr, ptr %7, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.ImGuiContext, ptr %1660, i32 0, i32 7
  %1662 = load ptr, ptr %1661, align 8, !tbaa !177
  %1663 = getelementptr inbounds %struct.ImFont, ptr %1662, i32 0, i32 7
  %1664 = load ptr, ptr %1663, align 8, !tbaa !178
  %1665 = getelementptr inbounds %struct.ImFontAtlas, ptr %1664, i32 0, i32 3
  %1666 = load ptr, ptr %1665, align 8, !tbaa !179
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %1659, ptr noundef %1666)
  %1667 = getelementptr inbounds %struct.ImRect, ptr %64, i32 0, i32 0
  %1668 = getelementptr inbounds %struct.ImRect, ptr %64, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1667, ptr noundef nonnull align 4 dereferenceable(8) %1668, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #13
  %1669 = load i32, ptr %6, align 4, !tbaa !9
  %1670 = and i32 %1669, 134217728
  %1671 = icmp ne i32 %1670, 0
  br i1 %1671, label %1672, label %1681

1672:                                             ; preds = %1613
  %1673 = load ptr, ptr %9, align 8, !tbaa !5
  %1674 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  %1675 = icmp eq ptr %1673, %1674
  br i1 %1675, label %1676, label %1681

1676:                                             ; preds = %1672
  %1677 = load ptr, ptr %9, align 8, !tbaa !5
  %1678 = getelementptr inbounds %struct.ImGuiWindow, ptr %1677, i32 0, i32 42
  %1679 = load i32, ptr %1678, align 8, !tbaa !83
  %1680 = icmp sle i32 %1679, 0
  br label %1681

1681:                                             ; preds = %1676, %1672, %1613
  %1682 = phi i1 [ false, %1672 ], [ false, %1613 ], [ %1680, %1676 ]
  %1683 = zext i1 %1682 to i8
  store i8 %1683, ptr %70, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #13
  %1684 = load ptr, ptr %7, align 8, !tbaa !5
  %1685 = getelementptr inbounds %struct.ImGuiContext, ptr %1684, i32 0, i32 81
  %1686 = load ptr, ptr %1685, align 8, !tbaa !183
  %1687 = icmp ne ptr %1686, null
  br i1 %1687, label %1688, label %1696

1688:                                             ; preds = %1681
  %1689 = load ptr, ptr %9, align 8, !tbaa !5
  %1690 = load ptr, ptr %7, align 8, !tbaa !5
  %1691 = getelementptr inbounds %struct.ImGuiContext, ptr %1690, i32 0, i32 81
  %1692 = load ptr, ptr %1691, align 8, !tbaa !183
  %1693 = getelementptr inbounds %struct.ImGuiWindow, ptr %1692, i32 0, i32 67
  %1694 = load ptr, ptr %1693, align 8, !tbaa !184
  %1695 = icmp eq ptr %1689, %1694
  br label %1696

1696:                                             ; preds = %1688, %1681
  %1697 = phi i1 [ false, %1681 ], [ %1695, %1688 ]
  %1698 = zext i1 %1697 to i8
  store i8 %1698, ptr %71, align 1, !tbaa !70
  %1699 = load i8, ptr %70, align 1, !tbaa !70, !range !66, !noundef !67
  %1700 = trunc i8 %1699 to i1
  br i1 %1700, label %1704, label %1701

1701:                                             ; preds = %1696
  %1702 = load i8, ptr %71, align 1, !tbaa !70, !range !66, !noundef !67
  %1703 = trunc i8 %1702 to i1
  br i1 %1703, label %1704, label %1719

1704:                                             ; preds = %1701, %1696
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #13
  %1705 = load i8, ptr %70, align 1, !tbaa !70, !range !66, !noundef !67
  %1706 = trunc i8 %1705 to i1
  %1707 = zext i1 %1706 to i64
  %1708 = select i1 %1706, i32 47, i32 46
  %1709 = load ptr, ptr %7, align 8, !tbaa !5
  %1710 = getelementptr inbounds %struct.ImGuiContext, ptr %1709, i32 0, i32 120
  %1711 = load float, ptr %1710, align 8, !tbaa !185
  %1712 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1708, float noundef %1711)
  store i32 %1712, ptr %72, align 4, !tbaa !9
  %1713 = load ptr, ptr %9, align 8, !tbaa !5
  %1714 = getelementptr inbounds %struct.ImGuiWindow, ptr %1713, i32 0, i32 64
  %1715 = load ptr, ptr %1714, align 8, !tbaa !176
  %1716 = getelementptr inbounds %struct.ImRect, ptr %48, i32 0, i32 0
  %1717 = getelementptr inbounds %struct.ImRect, ptr %48, i32 0, i32 1
  %1718 = load i32, ptr %72, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1715, ptr noundef nonnull align 4 dereferenceable(8) %1716, ptr noundef nonnull align 4 dereferenceable(8) %1717, i32 noundef %1718, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #13
  br label %1719

1719:                                             ; preds = %1704, %1701
  %1720 = load i8, ptr %71, align 1, !tbaa !70, !range !66, !noundef !67
  %1721 = trunc i8 %1720 to i1
  br i1 %1721, label %1722, label %1755

1722:                                             ; preds = %1719
  %1723 = load ptr, ptr %9, align 8, !tbaa !5
  %1724 = load ptr, ptr %7, align 8, !tbaa !5
  %1725 = getelementptr inbounds %struct.ImGuiContext, ptr %1724, i32 0, i32 81
  %1726 = load ptr, ptr %1725, align 8, !tbaa !183
  %1727 = icmp eq ptr %1723, %1726
  br i1 %1727, label %1728, label %1755

1728:                                             ; preds = %1722
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #13
  %1729 = load ptr, ptr %9, align 8, !tbaa !5
  %1730 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(948) %1729)
  %1731 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 0
  %1732 = extractvalue { <2 x float>, <2 x float> } %1730, 0
  store <2 x float> %1732, ptr %1731, align 4
  %1733 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 1
  %1734 = extractvalue { <2 x float>, <2 x float> } %1730, 1
  store <2 x float> %1734, ptr %1733, align 4
  %1735 = load ptr, ptr %7, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.ImGuiContext, ptr %1735, i32 0, i32 8
  %1737 = load float, ptr %1736, align 8, !tbaa !152
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %73, float noundef %1737)
  %1738 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %73, ptr noundef nonnull align 4 dereferenceable(16) %48)
  br i1 %1738, label %1754, label %1739

1739:                                             ; preds = %1728
  %1740 = load ptr, ptr %9, align 8, !tbaa !5
  %1741 = getelementptr inbounds %struct.ImGuiWindow, ptr %1740, i32 0, i32 64
  %1742 = load ptr, ptr %1741, align 8, !tbaa !176
  %1743 = getelementptr inbounds %struct.ImRect, ptr %73, i32 0, i32 0
  %1744 = getelementptr inbounds %struct.ImRect, ptr %73, i32 0, i32 1
  %1745 = load ptr, ptr %7, align 8, !tbaa !5
  %1746 = getelementptr inbounds %struct.ImGuiContext, ptr %1745, i32 0, i32 84
  %1747 = load float, ptr %1746, align 4, !tbaa !186
  %1748 = fmul float %1747, 2.500000e-01
  %1749 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %1748)
  %1750 = load ptr, ptr %7, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.ImGuiContext, ptr %1750, i32 0, i32 6
  %1752 = getelementptr inbounds %struct.ImGuiStyle, ptr %1751, i32 0, i32 2
  %1753 = load float, ptr %1752, align 4, !tbaa !187
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1742, ptr noundef nonnull align 4 dereferenceable(8) %1743, ptr noundef nonnull align 4 dereferenceable(8) %1744, i32 noundef %1749, float noundef %1753, i32 noundef 15)
  br label %1754

1754:                                             ; preds = %1739, %1728
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #13
  br label %1755

1755:                                             ; preds = %1754, %1722, %1719
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #13
  store i8 0, ptr %74, align 1, !tbaa !70
  %1756 = load i32, ptr %6, align 4, !tbaa !9
  %1757 = and i32 %1756, 16777216
  %1758 = icmp ne i32 %1757, 0
  br i1 %1758, label %1759, label %1785

1759:                                             ; preds = %1755
  %1760 = load i32, ptr %6, align 4, !tbaa !9
  %1761 = and i32 %1760, 67108864
  %1762 = icmp ne i32 %1761, 0
  br i1 %1762, label %1785, label %1763

1763:                                             ; preds = %1759
  %1764 = load i8, ptr %25, align 1, !tbaa !70, !range !66, !noundef !67
  %1765 = trunc i8 %1764 to i1
  br i1 %1765, label %1785, label %1766

1766:                                             ; preds = %1763
  %1767 = load ptr, ptr %9, align 8, !tbaa !5
  %1768 = getelementptr inbounds %struct.ImGuiWindow, ptr %1767, i32 0, i32 64
  %1769 = load ptr, ptr %1768, align 8, !tbaa !176
  %1770 = getelementptr inbounds %struct.ImDrawList, ptr %1769, i32 0, i32 0
  %1771 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1770)
  %1772 = getelementptr inbounds %struct.ImDrawCmd, ptr %1771, i32 0, i32 0
  %1773 = load i32, ptr %1772, align 8, !tbaa !188
  %1774 = icmp eq i32 %1773, 0
  br i1 %1774, label %1775, label %1784

1775:                                             ; preds = %1766
  %1776 = load ptr, ptr %19, align 8, !tbaa !5
  %1777 = getelementptr inbounds %struct.ImGuiWindow, ptr %1776, i32 0, i32 64
  %1778 = load ptr, ptr %1777, align 8, !tbaa !176
  %1779 = getelementptr inbounds %struct.ImDrawList, ptr %1778, i32 0, i32 2
  %1780 = getelementptr inbounds %struct.ImVector.8, ptr %1779, i32 0, i32 0
  %1781 = load i32, ptr %1780, align 8, !tbaa !190
  %1782 = icmp sgt i32 %1781, 0
  br i1 %1782, label %1783, label %1784

1783:                                             ; preds = %1775
  store i8 1, ptr %74, align 1, !tbaa !70
  br label %1784

1784:                                             ; preds = %1783, %1775, %1766
  br label %1785

1785:                                             ; preds = %1784, %1763, %1759, %1755
  %1786 = load i8, ptr %74, align 1, !tbaa !70, !range !66, !noundef !67
  %1787 = trunc i8 %1786 to i1
  br i1 %1787, label %1788, label %1794

1788:                                             ; preds = %1785
  %1789 = load ptr, ptr %19, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.ImGuiWindow, ptr %1789, i32 0, i32 64
  %1791 = load ptr, ptr %1790, align 8, !tbaa !176
  %1792 = load ptr, ptr %9, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.ImGuiWindow, ptr %1792, i32 0, i32 64
  store ptr %1791, ptr %1793, align 8, !tbaa !176
  br label %1794

1794:                                             ; preds = %1788, %1785
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  %1795 = load ptr, ptr %7, align 8, !tbaa !5
  %1796 = getelementptr inbounds %struct.ImGuiContext, ptr %1795, i32 0, i32 80
  %1797 = load ptr, ptr %1796, align 8, !tbaa !191
  %1798 = icmp ne ptr %1797, null
  br i1 %1798, label %1799, label %1803

1799:                                             ; preds = %1794
  %1800 = load ptr, ptr %7, align 8, !tbaa !5
  %1801 = getelementptr inbounds %struct.ImGuiContext, ptr %1800, i32 0, i32 80
  %1802 = load ptr, ptr %1801, align 8, !tbaa !191
  br label %1807

1803:                                             ; preds = %1794
  %1804 = load ptr, ptr %7, align 8, !tbaa !5
  %1805 = getelementptr inbounds %struct.ImGuiContext, ptr %1804, i32 0, i32 66
  %1806 = load ptr, ptr %1805, align 8, !tbaa !192
  br label %1807

1807:                                             ; preds = %1803, %1799
  %1808 = phi ptr [ %1802, %1799 ], [ %1806, %1803 ]
  store ptr %1808, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #13
  %1809 = load i8, ptr %51, align 1, !tbaa !70, !range !66, !noundef !67
  %1810 = trunc i8 %1809 to i1
  br i1 %1810, label %1824, label %1811

1811:                                             ; preds = %1807
  %1812 = load ptr, ptr %75, align 8, !tbaa !5
  %1813 = icmp ne ptr %1812, null
  br i1 %1813, label %1814, label %1822

1814:                                             ; preds = %1811
  %1815 = load ptr, ptr %9, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.ImGuiWindow, ptr %1815, i32 0, i32 68
  %1817 = load ptr, ptr %1816, align 8, !tbaa !193
  %1818 = load ptr, ptr %75, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.ImGuiWindow, ptr %1818, i32 0, i32 68
  %1820 = load ptr, ptr %1819, align 8, !tbaa !193
  %1821 = icmp eq ptr %1817, %1820
  br label %1822

1822:                                             ; preds = %1814, %1811
  %1823 = phi i1 [ false, %1811 ], [ %1821, %1814 ]
  br label %1824

1824:                                             ; preds = %1822, %1807
  %1825 = phi i1 [ true, %1807 ], [ %1823, %1822 ]
  %1826 = zext i1 %1825 to i8
  store i8 %1826, ptr %76, align 1, !tbaa !70
  %1827 = load ptr, ptr %9, align 8, !tbaa !5
  %1828 = load i8, ptr %76, align 1, !tbaa !70, !range !66, !noundef !67
  %1829 = trunc i8 %1828 to i1
  %1830 = load i32, ptr %54, align 4, !tbaa !9
  %1831 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 0
  %1832 = load float, ptr %55, align 4, !tbaa !73
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef %1827, ptr noundef nonnull align 4 dereferenceable(16) %66, i1 noundef zeroext %1829, i32 noundef %1830, ptr noundef %1831, float noundef %1832)
  %1833 = load i8, ptr %74, align 1, !tbaa !70, !range !66, !noundef !67
  %1834 = trunc i8 %1833 to i1
  br i1 %1834, label %1835, label %1840

1835:                                             ; preds = %1824
  %1836 = load ptr, ptr %9, align 8, !tbaa !5
  %1837 = getelementptr inbounds %struct.ImGuiWindow, ptr %1836, i32 0, i32 65
  %1838 = load ptr, ptr %9, align 8, !tbaa !5
  %1839 = getelementptr inbounds %struct.ImGuiWindow, ptr %1838, i32 0, i32 64
  store ptr %1837, ptr %1839, align 8, !tbaa !176
  br label %1840

1840:                                             ; preds = %1835, %1824
  %1841 = load ptr, ptr %7, align 8, !tbaa !5
  %1842 = getelementptr inbounds %struct.ImGuiContext, ptr %1841, i32 0, i32 81
  %1843 = load ptr, ptr %1842, align 8, !tbaa !183
  %1844 = load ptr, ptr %9, align 8, !tbaa !5
  %1845 = icmp eq ptr %1843, %1844
  br i1 %1845, label %1846, label %1885

1846:                                             ; preds = %1840
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #13
  %1847 = load ptr, ptr %9, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.ImGuiWindow, ptr %1847, i32 0, i32 9
  %1849 = load float, ptr %1848, align 8, !tbaa !150
  %1850 = load ptr, ptr %7, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.ImGuiContext, ptr %1850, i32 0, i32 6
  %1852 = getelementptr inbounds %struct.ImGuiStyle, ptr %1851, i32 0, i32 2
  %1853 = load float, ptr %1852, align 4, !tbaa !187
  %1854 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1849, float noundef %1853)
  store float %1854, ptr %77, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #13
  %1855 = load ptr, ptr %9, align 8, !tbaa !5
  %1856 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(948) %1855)
  %1857 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %78, i32 0, i32 0
  %1858 = extractvalue { <2 x float>, <2 x float> } %1856, 0
  store <2 x float> %1858, ptr %1857, align 4
  %1859 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %78, i32 0, i32 1
  %1860 = extractvalue { <2 x float>, <2 x float> } %1856, 1
  store <2 x float> %1860, ptr %1859, align 4
  %1861 = load ptr, ptr %7, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.ImGuiContext, ptr %1861, i32 0, i32 8
  %1863 = load float, ptr %1862, align 8, !tbaa !152
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %78, float noundef %1863)
  %1864 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %78, ptr noundef nonnull align 4 dereferenceable(16) %48)
  br i1 %1864, label %1865, label %1874

1865:                                             ; preds = %1846
  %1866 = load ptr, ptr %7, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.ImGuiContext, ptr %1866, i32 0, i32 8
  %1868 = load float, ptr %1867, align 8, !tbaa !152
  %1869 = fneg float %1868
  %1870 = fsub float %1869, 1.000000e+00
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %78, float noundef %1870)
  %1871 = load ptr, ptr %9, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.ImGuiWindow, ptr %1871, i32 0, i32 9
  %1873 = load float, ptr %1872, align 8, !tbaa !150
  store float %1873, ptr %77, align 4, !tbaa !73
  br label %1874

1874:                                             ; preds = %1865, %1846
  %1875 = load ptr, ptr %9, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.ImGuiWindow, ptr %1875, i32 0, i32 64
  %1877 = load ptr, ptr %1876, align 8, !tbaa !176
  %1878 = getelementptr inbounds %struct.ImRect, ptr %78, i32 0, i32 0
  %1879 = getelementptr inbounds %struct.ImRect, ptr %78, i32 0, i32 1
  %1880 = load ptr, ptr %7, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.ImGuiContext, ptr %1880, i32 0, i32 84
  %1882 = load float, ptr %1881, align 4, !tbaa !186
  %1883 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %1882)
  %1884 = load float, ptr %77, align 4, !tbaa !73
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %1877, ptr noundef nonnull align 4 dereferenceable(8) %1878, ptr noundef nonnull align 4 dereferenceable(8) %1879, i32 noundef %1883, float noundef %1884, 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 %1885

1885:                                             ; preds = %1874, %1840
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #13
  %1886 = load i32, ptr %6, align 4, !tbaa !9
  %1887 = and i32 %1886, 8
  %1888 = icmp ne i32 %1887, 0
  br i1 %1888, label %1893, label %1889

1889:                                             ; preds = %1885
  %1890 = load i32, ptr %6, align 4, !tbaa !9
  %1891 = and i32 %1890, 2048
  %1892 = icmp ne i32 %1891, 0
  br label %1893

1893:                                             ; preds = %1889, %1885
  %1894 = phi i1 [ false, %1885 ], [ %1892, %1889 ]
  %1895 = zext i1 %1894 to i8
  store i8 %1895, ptr %79, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #13
  %1896 = load i32, ptr %6, align 4, !tbaa !9
  %1897 = and i32 %1896, 8
  %1898 = icmp ne i32 %1897, 0
  %1899 = xor i1 %1898, true
  %1900 = zext i1 %1899 to i8
  store i8 %1900, ptr %80, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #13
  %1901 = load ptr, ptr %9, align 8, !tbaa !5
  %1902 = getelementptr inbounds %struct.ImGuiWindow, ptr %1901, i32 0, i32 7
  %1903 = getelementptr inbounds %struct.ImVec2, ptr %1902, i32 0, i32 0
  %1904 = load float, ptr %1903, align 8, !tbaa !194
  %1905 = fcmp une float %1904, 0.000000e+00
  br i1 %1905, label %1906, label %1911

1906:                                             ; preds = %1893
  %1907 = load ptr, ptr %9, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.ImGuiWindow, ptr %1907, i32 0, i32 7
  %1909 = getelementptr inbounds %struct.ImVec2, ptr %1908, i32 0, i32 0
  %1910 = load float, ptr %1909, align 8, !tbaa !194
  br label %1938

1911:                                             ; preds = %1893
  %1912 = load i8, ptr %79, align 1, !tbaa !70, !range !66, !noundef !67
  %1913 = trunc i8 %1912 to i1
  br i1 %1913, label %1914, label %1919

1914:                                             ; preds = %1911
  %1915 = load ptr, ptr %9, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.ImGuiWindow, ptr %1915, i32 0, i32 6
  %1917 = getelementptr inbounds %struct.ImVec2, ptr %1916, i32 0, i32 0
  %1918 = load float, ptr %1917, align 8, !tbaa !171
  br label %1920

1919:                                             ; preds = %1911
  br label %1920

1920:                                             ; preds = %1919, %1914
  %1921 = phi float [ %1918, %1914 ], [ 0.000000e+00, %1919 ]
  %1922 = load ptr, ptr %9, align 8, !tbaa !5
  %1923 = getelementptr inbounds %struct.ImGuiWindow, ptr %1922, i32 0, i32 4
  %1924 = getelementptr inbounds %struct.ImVec2, ptr %1923, i32 0, i32 0
  %1925 = load float, ptr %1924, align 8, !tbaa !118
  %1926 = load ptr, ptr %9, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.ImGuiWindow, ptr %1926, i32 0, i32 8
  %1928 = getelementptr inbounds %struct.ImVec2, ptr %1927, i32 0, i32 0
  %1929 = load float, ptr %1928, align 8, !tbaa !126
  %1930 = fneg float %1929
  %1931 = call float @llvm.fmuladd.f32(float %1930, float 2.000000e+00, float %1925)
  %1932 = load ptr, ptr %9, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.ImGuiWindow, ptr %1932, i32 0, i32 18
  %1934 = getelementptr inbounds %struct.ImVec2, ptr %1933, i32 0, i32 0
  %1935 = load float, ptr %1934, align 4, !tbaa !161
  %1936 = fsub float %1931, %1935
  %1937 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1921, float noundef %1936)
  br label %1938

1938:                                             ; preds = %1920, %1906
  %1939 = phi float [ %1910, %1906 ], [ %1937, %1920 ]
  store float %1939, ptr %81, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #13
  %1940 = load ptr, ptr %9, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.ImGuiWindow, ptr %1940, i32 0, i32 7
  %1942 = getelementptr inbounds %struct.ImVec2, ptr %1941, i32 0, i32 1
  %1943 = load float, ptr %1942, align 4, !tbaa !195
  %1944 = fcmp une float %1943, 0.000000e+00
  br i1 %1944, label %1945, label %1950

1945:                                             ; preds = %1938
  %1946 = load ptr, ptr %9, align 8, !tbaa !5
  %1947 = getelementptr inbounds %struct.ImGuiWindow, ptr %1946, i32 0, i32 7
  %1948 = getelementptr inbounds %struct.ImVec2, ptr %1947, i32 0, i32 1
  %1949 = load float, ptr %1948, align 4, !tbaa !195
  br label %1979

1950:                                             ; preds = %1938
  %1951 = load i8, ptr %80, align 1, !tbaa !70, !range !66, !noundef !67
  %1952 = trunc i8 %1951 to i1
  br i1 %1952, label %1953, label %1958

1953:                                             ; preds = %1950
  %1954 = load ptr, ptr %9, align 8, !tbaa !5
  %1955 = getelementptr inbounds %struct.ImGuiWindow, ptr %1954, i32 0, i32 6
  %1956 = getelementptr inbounds %struct.ImVec2, ptr %1955, i32 0, i32 1
  %1957 = load float, ptr %1956, align 4, !tbaa !173
  br label %1959

1958:                                             ; preds = %1950
  br label %1959

1959:                                             ; preds = %1958, %1953
  %1960 = phi float [ %1957, %1953 ], [ 0.000000e+00, %1958 ]
  %1961 = load ptr, ptr %9, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.ImGuiWindow, ptr %1961, i32 0, i32 4
  %1963 = getelementptr inbounds %struct.ImVec2, ptr %1962, i32 0, i32 1
  %1964 = load float, ptr %1963, align 4, !tbaa !120
  %1965 = load ptr, ptr %9, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.ImGuiWindow, ptr %1965, i32 0, i32 8
  %1967 = getelementptr inbounds %struct.ImVec2, ptr %1966, i32 0, i32 1
  %1968 = load float, ptr %1967, align 4, !tbaa !174
  %1969 = fneg float %1968
  %1970 = call float @llvm.fmuladd.f32(float %1969, float 2.000000e+00, float %1964)
  %1971 = load float, ptr %41, align 4, !tbaa !73
  %1972 = fsub float %1970, %1971
  %1973 = load ptr, ptr %9, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.ImGuiWindow, ptr %1973, i32 0, i32 18
  %1975 = getelementptr inbounds %struct.ImVec2, ptr %1974, i32 0, i32 1
  %1976 = load float, ptr %1975, align 4, !tbaa !163
  %1977 = fsub float %1972, %1976
  %1978 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1960, float noundef %1977)
  br label %1979

1979:                                             ; preds = %1959, %1945
  %1980 = phi float [ %1949, %1945 ], [ %1978, %1959 ]
  store float %1980, ptr %82, align 4, !tbaa !73
  %1981 = load ptr, ptr %9, align 8, !tbaa !5
  %1982 = getelementptr inbounds %struct.ImGuiWindow, ptr %1981, i32 0, i32 51
  %1983 = getelementptr inbounds %struct.ImRect, ptr %1982, i32 0, i32 0
  %1984 = getelementptr inbounds %struct.ImVec2, ptr %1983, i32 0, i32 0
  %1985 = load float, ptr %1984, align 8, !tbaa !158
  %1986 = load ptr, ptr %9, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.ImGuiWindow, ptr %1986, i32 0, i32 14
  %1988 = getelementptr inbounds %struct.ImVec2, ptr %1987, i32 0, i32 0
  %1989 = load float, ptr %1988, align 4, !tbaa !196
  %1990 = fsub float %1985, %1989
  %1991 = load ptr, ptr %9, align 8, !tbaa !5
  %1992 = getelementptr inbounds %struct.ImGuiWindow, ptr %1991, i32 0, i32 8
  %1993 = getelementptr inbounds %struct.ImVec2, ptr %1992, i32 0, i32 0
  %1994 = load float, ptr %1993, align 8, !tbaa !126
  %1995 = load ptr, ptr %9, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.ImGuiWindow, ptr %1995, i32 0, i32 10
  %1997 = load float, ptr %1996, align 4, !tbaa !122
  %1998 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1994, float noundef %1997)
  %1999 = fadd float %1990, %1998
  %2000 = call noundef float @_ZL7ImFloorf(float noundef %1999)
  %2001 = load ptr, ptr %9, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct.ImGuiWindow, ptr %2001, i32 0, i32 53
  %2003 = getelementptr inbounds %struct.ImRect, ptr %2002, i32 0, i32 0
  %2004 = getelementptr inbounds %struct.ImVec2, ptr %2003, i32 0, i32 0
  store float %2000, ptr %2004, align 8, !tbaa !197
  %2005 = load ptr, ptr %9, align 8, !tbaa !5
  %2006 = getelementptr inbounds %struct.ImGuiWindow, ptr %2005, i32 0, i32 51
  %2007 = getelementptr inbounds %struct.ImRect, ptr %2006, i32 0, i32 0
  %2008 = getelementptr inbounds %struct.ImVec2, ptr %2007, i32 0, i32 1
  %2009 = load float, ptr %2008, align 4, !tbaa !160
  %2010 = load ptr, ptr %9, align 8, !tbaa !5
  %2011 = getelementptr inbounds %struct.ImGuiWindow, ptr %2010, i32 0, i32 14
  %2012 = getelementptr inbounds %struct.ImVec2, ptr %2011, i32 0, i32 1
  %2013 = load float, ptr %2012, align 4, !tbaa !198
  %2014 = fsub float %2009, %2013
  %2015 = load ptr, ptr %9, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.ImGuiWindow, ptr %2015, i32 0, i32 8
  %2017 = getelementptr inbounds %struct.ImVec2, ptr %2016, i32 0, i32 1
  %2018 = load float, ptr %2017, align 4, !tbaa !174
  %2019 = load ptr, ptr %9, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.ImGuiWindow, ptr %2019, i32 0, i32 10
  %2021 = load float, ptr %2020, align 4, !tbaa !122
  %2022 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2018, float noundef %2021)
  %2023 = fadd float %2014, %2022
  %2024 = call noundef float @_ZL7ImFloorf(float noundef %2023)
  %2025 = load ptr, ptr %9, align 8, !tbaa !5
  %2026 = getelementptr inbounds %struct.ImGuiWindow, ptr %2025, i32 0, i32 53
  %2027 = getelementptr inbounds %struct.ImRect, ptr %2026, i32 0, i32 0
  %2028 = getelementptr inbounds %struct.ImVec2, ptr %2027, i32 0, i32 1
  store float %2024, ptr %2028, align 4, !tbaa !199
  %2029 = load ptr, ptr %9, align 8, !tbaa !5
  %2030 = getelementptr inbounds %struct.ImGuiWindow, ptr %2029, i32 0, i32 53
  %2031 = getelementptr inbounds %struct.ImRect, ptr %2030, i32 0, i32 0
  %2032 = getelementptr inbounds %struct.ImVec2, ptr %2031, i32 0, i32 0
  %2033 = load float, ptr %2032, align 8, !tbaa !197
  %2034 = load float, ptr %81, align 4, !tbaa !73
  %2035 = fadd float %2033, %2034
  %2036 = load ptr, ptr %9, align 8, !tbaa !5
  %2037 = getelementptr inbounds %struct.ImGuiWindow, ptr %2036, i32 0, i32 53
  %2038 = getelementptr inbounds %struct.ImRect, ptr %2037, i32 0, i32 1
  %2039 = getelementptr inbounds %struct.ImVec2, ptr %2038, i32 0, i32 0
  store float %2035, ptr %2039, align 8, !tbaa !200
  %2040 = load ptr, ptr %9, align 8, !tbaa !5
  %2041 = getelementptr inbounds %struct.ImGuiWindow, ptr %2040, i32 0, i32 53
  %2042 = getelementptr inbounds %struct.ImRect, ptr %2041, i32 0, i32 0
  %2043 = getelementptr inbounds %struct.ImVec2, ptr %2042, i32 0, i32 1
  %2044 = load float, ptr %2043, align 4, !tbaa !199
  %2045 = load float, ptr %82, align 4, !tbaa !73
  %2046 = fadd float %2044, %2045
  %2047 = load ptr, ptr %9, align 8, !tbaa !5
  %2048 = getelementptr inbounds %struct.ImGuiWindow, ptr %2047, i32 0, i32 53
  %2049 = getelementptr inbounds %struct.ImRect, ptr %2048, i32 0, i32 1
  %2050 = getelementptr inbounds %struct.ImVec2, ptr %2049, i32 0, i32 1
  store float %2046, ptr %2050, align 4, !tbaa !201
  %2051 = load ptr, ptr %9, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.ImGuiWindow, ptr %2051, i32 0, i32 3
  %2053 = getelementptr inbounds %struct.ImVec2, ptr %2052, i32 0, i32 0
  %2054 = load float, ptr %2053, align 8, !tbaa !157
  %2055 = load ptr, ptr %9, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.ImGuiWindow, ptr %2055, i32 0, i32 14
  %2057 = getelementptr inbounds %struct.ImVec2, ptr %2056, i32 0, i32 0
  %2058 = load float, ptr %2057, align 4, !tbaa !196
  %2059 = fsub float %2054, %2058
  %2060 = load ptr, ptr %9, align 8, !tbaa !5
  %2061 = getelementptr inbounds %struct.ImGuiWindow, ptr %2060, i32 0, i32 8
  %2062 = getelementptr inbounds %struct.ImVec2, ptr %2061, i32 0, i32 0
  %2063 = load float, ptr %2062, align 8, !tbaa !126
  %2064 = fadd float %2059, %2063
  %2065 = load ptr, ptr %9, align 8, !tbaa !5
  %2066 = getelementptr inbounds %struct.ImGuiWindow, ptr %2065, i32 0, i32 55
  %2067 = getelementptr inbounds %struct.ImRect, ptr %2066, i32 0, i32 0
  %2068 = getelementptr inbounds %struct.ImVec2, ptr %2067, i32 0, i32 0
  store float %2064, ptr %2068, align 8, !tbaa !202
  %2069 = load ptr, ptr %9, align 8, !tbaa !5
  %2070 = getelementptr inbounds %struct.ImGuiWindow, ptr %2069, i32 0, i32 3
  %2071 = getelementptr inbounds %struct.ImVec2, ptr %2070, i32 0, i32 1
  %2072 = load float, ptr %2071, align 4, !tbaa !159
  %2073 = load ptr, ptr %9, align 8, !tbaa !5
  %2074 = getelementptr inbounds %struct.ImGuiWindow, ptr %2073, i32 0, i32 14
  %2075 = getelementptr inbounds %struct.ImVec2, ptr %2074, i32 0, i32 1
  %2076 = load float, ptr %2075, align 4, !tbaa !198
  %2077 = fsub float %2072, %2076
  %2078 = load ptr, ptr %9, align 8, !tbaa !5
  %2079 = getelementptr inbounds %struct.ImGuiWindow, ptr %2078, i32 0, i32 8
  %2080 = getelementptr inbounds %struct.ImVec2, ptr %2079, i32 0, i32 1
  %2081 = load float, ptr %2080, align 4, !tbaa !174
  %2082 = fadd float %2077, %2081
  %2083 = load float, ptr %41, align 4, !tbaa !73
  %2084 = fadd float %2082, %2083
  %2085 = load ptr, ptr %9, align 8, !tbaa !5
  %2086 = getelementptr inbounds %struct.ImGuiWindow, ptr %2085, i32 0, i32 55
  %2087 = getelementptr inbounds %struct.ImRect, ptr %2086, i32 0, i32 0
  %2088 = getelementptr inbounds %struct.ImVec2, ptr %2087, i32 0, i32 1
  store float %2084, ptr %2088, align 4, !tbaa !203
  %2089 = load ptr, ptr %9, align 8, !tbaa !5
  %2090 = getelementptr inbounds %struct.ImGuiWindow, ptr %2089, i32 0, i32 55
  %2091 = getelementptr inbounds %struct.ImRect, ptr %2090, i32 0, i32 0
  %2092 = getelementptr inbounds %struct.ImVec2, ptr %2091, i32 0, i32 0
  %2093 = load float, ptr %2092, align 8, !tbaa !202
  %2094 = load ptr, ptr %9, align 8, !tbaa !5
  %2095 = getelementptr inbounds %struct.ImGuiWindow, ptr %2094, i32 0, i32 7
  %2096 = getelementptr inbounds %struct.ImVec2, ptr %2095, i32 0, i32 0
  %2097 = load float, ptr %2096, align 8, !tbaa !194
  %2098 = fcmp une float %2097, 0.000000e+00
  br i1 %2098, label %2099, label %2104

2099:                                             ; preds = %1979
  %2100 = load ptr, ptr %9, align 8, !tbaa !5
  %2101 = getelementptr inbounds %struct.ImGuiWindow, ptr %2100, i32 0, i32 7
  %2102 = getelementptr inbounds %struct.ImVec2, ptr %2101, i32 0, i32 0
  %2103 = load float, ptr %2102, align 8, !tbaa !194
  br label %2120

2104:                                             ; preds = %1979
  %2105 = load ptr, ptr %9, align 8, !tbaa !5
  %2106 = getelementptr inbounds %struct.ImGuiWindow, ptr %2105, i32 0, i32 4
  %2107 = getelementptr inbounds %struct.ImVec2, ptr %2106, i32 0, i32 0
  %2108 = load float, ptr %2107, align 8, !tbaa !118
  %2109 = load ptr, ptr %9, align 8, !tbaa !5
  %2110 = getelementptr inbounds %struct.ImGuiWindow, ptr %2109, i32 0, i32 8
  %2111 = getelementptr inbounds %struct.ImVec2, ptr %2110, i32 0, i32 0
  %2112 = load float, ptr %2111, align 8, !tbaa !126
  %2113 = fneg float %2112
  %2114 = call float @llvm.fmuladd.f32(float %2113, float 2.000000e+00, float %2108)
  %2115 = load ptr, ptr %9, align 8, !tbaa !5
  %2116 = getelementptr inbounds %struct.ImGuiWindow, ptr %2115, i32 0, i32 18
  %2117 = getelementptr inbounds %struct.ImVec2, ptr %2116, i32 0, i32 0
  %2118 = load float, ptr %2117, align 4, !tbaa !161
  %2119 = fsub float %2114, %2118
  br label %2120

2120:                                             ; preds = %2104, %2099
  %2121 = phi float [ %2103, %2099 ], [ %2119, %2104 ]
  %2122 = fadd float %2093, %2121
  %2123 = load ptr, ptr %9, align 8, !tbaa !5
  %2124 = getelementptr inbounds %struct.ImGuiWindow, ptr %2123, i32 0, i32 55
  %2125 = getelementptr inbounds %struct.ImRect, ptr %2124, i32 0, i32 1
  %2126 = getelementptr inbounds %struct.ImVec2, ptr %2125, i32 0, i32 0
  store float %2122, ptr %2126, align 8, !tbaa !204
  %2127 = load ptr, ptr %9, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.ImGuiWindow, ptr %2127, i32 0, i32 55
  %2129 = getelementptr inbounds %struct.ImRect, ptr %2128, i32 0, i32 0
  %2130 = getelementptr inbounds %struct.ImVec2, ptr %2129, i32 0, i32 1
  %2131 = load float, ptr %2130, align 4, !tbaa !203
  %2132 = load ptr, ptr %9, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.ImGuiWindow, ptr %2132, i32 0, i32 7
  %2134 = getelementptr inbounds %struct.ImVec2, ptr %2133, i32 0, i32 1
  %2135 = load float, ptr %2134, align 4, !tbaa !195
  %2136 = fcmp une float %2135, 0.000000e+00
  br i1 %2136, label %2137, label %2142

2137:                                             ; preds = %2120
  %2138 = load ptr, ptr %9, align 8, !tbaa !5
  %2139 = getelementptr inbounds %struct.ImGuiWindow, ptr %2138, i32 0, i32 7
  %2140 = getelementptr inbounds %struct.ImVec2, ptr %2139, i32 0, i32 1
  %2141 = load float, ptr %2140, align 4, !tbaa !195
  br label %2160

2142:                                             ; preds = %2120
  %2143 = load ptr, ptr %9, align 8, !tbaa !5
  %2144 = getelementptr inbounds %struct.ImGuiWindow, ptr %2143, i32 0, i32 4
  %2145 = getelementptr inbounds %struct.ImVec2, ptr %2144, i32 0, i32 1
  %2146 = load float, ptr %2145, align 4, !tbaa !120
  %2147 = load ptr, ptr %9, align 8, !tbaa !5
  %2148 = getelementptr inbounds %struct.ImGuiWindow, ptr %2147, i32 0, i32 8
  %2149 = getelementptr inbounds %struct.ImVec2, ptr %2148, i32 0, i32 1
  %2150 = load float, ptr %2149, align 4, !tbaa !174
  %2151 = fneg float %2150
  %2152 = call float @llvm.fmuladd.f32(float %2151, float 2.000000e+00, float %2146)
  %2153 = load float, ptr %41, align 4, !tbaa !73
  %2154 = fsub float %2152, %2153
  %2155 = load ptr, ptr %9, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.ImGuiWindow, ptr %2155, i32 0, i32 18
  %2157 = getelementptr inbounds %struct.ImVec2, ptr %2156, i32 0, i32 1
  %2158 = load float, ptr %2157, align 4, !tbaa !163
  %2159 = fsub float %2154, %2158
  br label %2160

2160:                                             ; preds = %2142, %2137
  %2161 = phi float [ %2141, %2137 ], [ %2159, %2142 ]
  %2162 = fadd float %2131, %2161
  %2163 = load ptr, ptr %9, align 8, !tbaa !5
  %2164 = getelementptr inbounds %struct.ImGuiWindow, ptr %2163, i32 0, i32 55
  %2165 = getelementptr inbounds %struct.ImRect, ptr %2164, i32 0, i32 1
  %2166 = getelementptr inbounds %struct.ImVec2, ptr %2165, i32 0, i32 1
  store float %2162, ptr %2166, align 4, !tbaa !205
  %2167 = load ptr, ptr %9, align 8, !tbaa !5
  %2168 = getelementptr inbounds %struct.ImGuiWindow, ptr %2167, i32 0, i32 8
  %2169 = getelementptr inbounds %struct.ImVec2, ptr %2168, i32 0, i32 0
  %2170 = load float, ptr %2169, align 8, !tbaa !126
  %2171 = fadd float 0.000000e+00, %2170
  %2172 = load ptr, ptr %9, align 8, !tbaa !5
  %2173 = getelementptr inbounds %struct.ImGuiWindow, ptr %2172, i32 0, i32 14
  %2174 = getelementptr inbounds %struct.ImVec2, ptr %2173, i32 0, i32 0
  %2175 = load float, ptr %2174, align 4, !tbaa !196
  %2176 = fsub float %2171, %2175
  %2177 = load ptr, ptr %9, align 8, !tbaa !5
  %2178 = getelementptr inbounds %struct.ImGuiWindow, ptr %2177, i32 0, i32 49
  %2179 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2178, i32 0, i32 36
  %2180 = getelementptr inbounds %struct.ImVec1, ptr %2179, i32 0, i32 0
  store float %2176, ptr %2180, align 4, !tbaa !206
  %2181 = load ptr, ptr %9, align 8, !tbaa !5
  %2182 = getelementptr inbounds %struct.ImGuiWindow, ptr %2181, i32 0, i32 49
  %2183 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2182, i32 0, i32 37
  %2184 = getelementptr inbounds %struct.ImVec1, ptr %2183, i32 0, i32 0
  store float 0.000000e+00, ptr %2184, align 8, !tbaa !207
  %2185 = load ptr, ptr %9, align 8, !tbaa !5
  %2186 = getelementptr inbounds %struct.ImGuiWindow, ptr %2185, i32 0, i32 49
  %2187 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2186, i32 0, i32 38
  %2188 = getelementptr inbounds %struct.ImVec1, ptr %2187, i32 0, i32 0
  store float 0.000000e+00, ptr %2188, align 4, !tbaa !208
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #13
  %2189 = load ptr, ptr %9, align 8, !tbaa !5
  %2190 = getelementptr inbounds %struct.ImGuiWindow, ptr %2189, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #13
  %2191 = load ptr, ptr %9, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiWindow, ptr %2191, i32 0, i32 49
  %2193 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2192, i32 0, i32 36
  %2194 = getelementptr inbounds %struct.ImVec1, ptr %2193, i32 0, i32 0
  %2195 = load float, ptr %2194, align 4, !tbaa !206
  %2196 = load ptr, ptr %9, align 8, !tbaa !5
  %2197 = getelementptr inbounds %struct.ImGuiWindow, ptr %2196, i32 0, i32 49
  %2198 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2197, i32 0, i32 38
  %2199 = getelementptr inbounds %struct.ImVec1, ptr %2198, i32 0, i32 0
  %2200 = load float, ptr %2199, align 4, !tbaa !208
  %2201 = fadd float %2195, %2200
  %2202 = load float, ptr %41, align 4, !tbaa !73
  %2203 = load ptr, ptr %9, align 8, !tbaa !5
  %2204 = getelementptr inbounds %struct.ImGuiWindow, ptr %2203, i32 0, i32 8
  %2205 = getelementptr inbounds %struct.ImVec2, ptr %2204, i32 0, i32 1
  %2206 = load float, ptr %2205, align 4, !tbaa !174
  %2207 = fadd float %2202, %2206
  %2208 = load ptr, ptr %9, align 8, !tbaa !5
  %2209 = getelementptr inbounds %struct.ImGuiWindow, ptr %2208, i32 0, i32 14
  %2210 = getelementptr inbounds %struct.ImVec2, ptr %2209, i32 0, i32 1
  %2211 = load float, ptr %2210, align 4, !tbaa !198
  %2212 = fsub float %2207, %2211
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %84, float noundef %2201, float noundef %2212)
  %2213 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2190, ptr noundef nonnull align 4 dereferenceable(8) %84)
  store <2 x float> %2213, ptr %83, align 4
  %2214 = load ptr, ptr %9, align 8, !tbaa !5
  %2215 = getelementptr inbounds %struct.ImGuiWindow, ptr %2214, i32 0, i32 49
  %2216 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2215, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2216, ptr align 4 %83, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #13
  %2217 = load ptr, ptr %9, align 8, !tbaa !5
  %2218 = getelementptr inbounds %struct.ImGuiWindow, ptr %2217, i32 0, i32 49
  %2219 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2218, i32 0, i32 2
  %2220 = load ptr, ptr %9, align 8, !tbaa !5
  %2221 = getelementptr inbounds %struct.ImGuiWindow, ptr %2220, i32 0, i32 49
  %2222 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2221, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2222, ptr align 8 %2219, i64 8, i1 false), !tbaa.struct !72
  %2223 = load ptr, ptr %9, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.ImGuiWindow, ptr %2223, i32 0, i32 49
  %2225 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2224, i32 0, i32 0
  %2226 = load ptr, ptr %9, align 8, !tbaa !5
  %2227 = getelementptr inbounds %struct.ImGuiWindow, ptr %2226, i32 0, i32 49
  %2228 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2227, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2228, ptr align 8 %2225, i64 8, i1 false), !tbaa.struct !72
  %2229 = load ptr, ptr %9, align 8, !tbaa !5
  %2230 = getelementptr inbounds %struct.ImGuiWindow, ptr %2229, i32 0, i32 49
  %2231 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2230, i32 0, i32 2
  %2232 = load ptr, ptr %9, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.ImGuiWindow, ptr %2232, i32 0, i32 49
  %2234 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2233, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2234, ptr align 8 %2231, i64 8, i1 false), !tbaa.struct !72
  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)
  %2235 = load ptr, ptr %9, align 8, !tbaa !5
  %2236 = getelementptr inbounds %struct.ImGuiWindow, ptr %2235, i32 0, i32 49
  %2237 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2236, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2237, ptr align 4 %85, i64 8, i1 false), !tbaa.struct !72
  %2238 = load ptr, ptr %9, align 8, !tbaa !5
  %2239 = getelementptr inbounds %struct.ImGuiWindow, ptr %2238, i32 0, i32 49
  %2240 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2239, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2240, ptr align 4 %2237, i64 8, i1 false), !tbaa.struct !72
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #13
  %2241 = load ptr, ptr %9, align 8, !tbaa !5
  %2242 = getelementptr inbounds %struct.ImGuiWindow, ptr %2241, i32 0, i32 49
  %2243 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2242, i32 0, i32 7
  store float 0.000000e+00, ptr %2243, align 4, !tbaa !209
  %2244 = load ptr, ptr %9, align 8, !tbaa !5
  %2245 = getelementptr inbounds %struct.ImGuiWindow, ptr %2244, i32 0, i32 49
  %2246 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2245, i32 0, i32 6
  store float 0.000000e+00, ptr %2246, align 8, !tbaa !210
  %2247 = load ptr, ptr %9, align 8, !tbaa !5
  %2248 = getelementptr inbounds %struct.ImGuiWindow, ptr %2247, i32 0, i32 49
  %2249 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2248, i32 0, i32 18
  store i8 0, ptr %2249, align 8, !tbaa !211
  %2250 = load ptr, ptr %9, align 8, !tbaa !5
  %2251 = getelementptr inbounds %struct.ImGuiWindow, ptr %2250, i32 0, i32 15
  %2252 = getelementptr inbounds %struct.ImVec2, ptr %2251, i32 0, i32 1
  %2253 = load float, ptr %2252, align 4, !tbaa !175
  %2254 = fcmp ogt float %2253, 0.000000e+00
  %2255 = load ptr, ptr %9, align 8, !tbaa !5
  %2256 = getelementptr inbounds %struct.ImGuiWindow, ptr %2255, i32 0, i32 49
  %2257 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2256, i32 0, i32 19
  %2258 = zext i1 %2254 to i8
  store i8 %2258, ptr %2257, align 1, !tbaa !212
  %2259 = load ptr, ptr %9, align 8, !tbaa !5
  %2260 = getelementptr inbounds %struct.ImGuiWindow, ptr %2259, i32 0, i32 49
  %2261 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2260, i32 0, i32 17
  %2262 = load i32, ptr %2261, align 4, !tbaa !213
  %2263 = load ptr, ptr %9, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.ImGuiWindow, ptr %2263, i32 0, i32 49
  %2265 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2264, i32 0, i32 16
  store i32 %2262, ptr %2265, align 8, !tbaa !214
  %2266 = load ptr, ptr %9, align 8, !tbaa !5
  %2267 = getelementptr inbounds %struct.ImGuiWindow, ptr %2266, i32 0, i32 49
  %2268 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2267, i32 0, i32 17
  store i32 0, ptr %2268, align 4, !tbaa !213
  %2269 = load ptr, ptr %9, align 8, !tbaa !5
  %2270 = getelementptr inbounds %struct.ImGuiWindow, ptr %2269, i32 0, i32 49
  %2271 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2270, i32 0, i32 20
  store i8 0, ptr %2271, align 2, !tbaa !215
  %2272 = load ptr, ptr %9, align 8, !tbaa !5
  %2273 = getelementptr inbounds %struct.ImGuiWindow, ptr %2272, i32 0, i32 49
  %2274 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2273, i32 0, i32 22
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2274, i32 noundef 0)
  %2275 = load ptr, ptr %9, align 8, !tbaa !5
  %2276 = getelementptr inbounds %struct.ImGuiWindow, ptr %2275, i32 0, i32 49
  %2277 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2276, i32 0, i32 24
  store i32 1, ptr %2277, align 8, !tbaa !216
  %2278 = load ptr, ptr %19, align 8, !tbaa !5
  %2279 = icmp ne ptr %2278, null
  br i1 %2279, label %2280, label %2285

2280:                                             ; preds = %2160
  %2281 = load ptr, ptr %19, align 8, !tbaa !5
  %2282 = getelementptr inbounds %struct.ImGuiWindow, ptr %2281, i32 0, i32 49
  %2283 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2282, i32 0, i32 24
  %2284 = load i32, ptr %2283, align 8, !tbaa !216
  br label %2286

2285:                                             ; preds = %2160
  br label %2286

2286:                                             ; preds = %2285, %2280
  %2287 = phi i32 [ %2284, %2280 ], [ 1, %2285 ]
  %2288 = load ptr, ptr %9, align 8, !tbaa !5
  %2289 = getelementptr inbounds %struct.ImGuiWindow, ptr %2288, i32 0, i32 49
  %2290 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2289, i32 0, i32 25
  store i32 %2287, ptr %2290, align 4, !tbaa !217
  %2291 = load ptr, ptr %9, align 8, !tbaa !5
  %2292 = getelementptr inbounds %struct.ImGuiWindow, ptr %2291, i32 0, i32 49
  %2293 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2292, i32 0, i32 27
  store i32 -1, ptr %2293, align 4, !tbaa !218
  %2294 = load ptr, ptr %9, align 8, !tbaa !5
  %2295 = getelementptr inbounds %struct.ImGuiWindow, ptr %2294, i32 0, i32 49
  %2296 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2295, i32 0, i32 26
  store i32 -1, ptr %2296, align 8, !tbaa !219
  %2297 = load ptr, ptr %19, align 8, !tbaa !5
  %2298 = icmp ne ptr %2297, null
  br i1 %2298, label %2299, label %2304

2299:                                             ; preds = %2286
  %2300 = load ptr, ptr %19, align 8, !tbaa !5
  %2301 = getelementptr inbounds %struct.ImGuiWindow, ptr %2300, i32 0, i32 49
  %2302 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2301, i32 0, i32 28
  %2303 = load i32, ptr %2302, align 8, !tbaa !220
  br label %2305

2304:                                             ; preds = %2286
  br label %2305

2305:                                             ; preds = %2304, %2299
  %2306 = phi i32 [ %2303, %2299 ], [ 0, %2304 ]
  %2307 = load ptr, ptr %9, align 8, !tbaa !5
  %2308 = getelementptr inbounds %struct.ImGuiWindow, ptr %2307, i32 0, i32 49
  %2309 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2308, i32 0, i32 28
  store i32 %2306, ptr %2309, align 8, !tbaa !220
  %2310 = load ptr, ptr %9, align 8, !tbaa !5
  %2311 = getelementptr inbounds %struct.ImGuiWindow, ptr %2310, i32 0, i32 58
  %2312 = load float, ptr %2311, align 8, !tbaa !170
  %2313 = load ptr, ptr %9, align 8, !tbaa !5
  %2314 = getelementptr inbounds %struct.ImGuiWindow, ptr %2313, i32 0, i32 49
  %2315 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2314, i32 0, i32 29
  store float %2312, ptr %2315, align 4, !tbaa !221
  %2316 = load ptr, ptr %9, align 8, !tbaa !5
  %2317 = getelementptr inbounds %struct.ImGuiWindow, ptr %2316, i32 0, i32 49
  %2318 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2317, i32 0, i32 30
  store float -1.000000e+00, ptr %2318, align 8, !tbaa !222
  %2319 = load ptr, ptr %9, align 8, !tbaa !5
  %2320 = getelementptr inbounds %struct.ImGuiWindow, ptr %2319, i32 0, i32 49
  %2321 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2320, i32 0, i32 31
  call void @_ZN8ImVectorIiE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2321, i32 noundef 0)
  %2322 = load ptr, ptr %9, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.ImGuiWindow, ptr %2322, i32 0, i32 49
  %2324 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2323, i32 0, i32 32
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2324, i32 noundef 0)
  %2325 = load ptr, ptr %9, align 8, !tbaa !5
  %2326 = getelementptr inbounds %struct.ImGuiWindow, ptr %2325, i32 0, i32 49
  %2327 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2326, i32 0, i32 33
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2327, i32 noundef 0)
  %2328 = load ptr, ptr %9, align 8, !tbaa !5
  %2329 = getelementptr inbounds %struct.ImGuiWindow, ptr %2328, i32 0, i32 49
  %2330 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2329, i32 0, i32 39
  store ptr null, ptr %2330, align 8, !tbaa !223
  %2331 = load ptr, ptr %9, align 8, !tbaa !5
  %2332 = getelementptr inbounds %struct.ImGuiWindow, ptr %2331, i32 0, i32 49
  %2333 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2332, i32 0, i32 8
  store i32 0, ptr %2333, align 8, !tbaa !224
  %2334 = load ptr, ptr %9, align 8, !tbaa !5
  %2335 = getelementptr inbounds %struct.ImGuiWindow, ptr %2334, i32 0, i32 49
  %2336 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2335, i32 0, i32 9
  store i32 0, ptr %2336, align 4, !tbaa !225
  %2337 = load ptr, ptr %9, align 8, !tbaa !5
  %2338 = getelementptr inbounds %struct.ImGuiWindow, ptr %2337, i32 0, i32 60
  %2339 = load ptr, ptr %9, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.ImGuiWindow, ptr %2339, i32 0, i32 49
  %2341 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2340, i32 0, i32 23
  store ptr %2338, ptr %2341, align 8, !tbaa !226
  %2342 = load ptr, ptr %9, align 8, !tbaa !5
  %2343 = getelementptr inbounds %struct.ImGuiWindow, ptr %2342, i32 0, i32 49
  %2344 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2343, i32 0, i32 34
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2344, i32 noundef 0)
  %2345 = load ptr, ptr %9, align 8, !tbaa !5
  %2346 = getelementptr inbounds %struct.ImGuiWindow, ptr %2345, i32 0, i32 59
  %2347 = load ptr, ptr %8, align 8, !tbaa !5
  %2348 = getelementptr inbounds %struct.ImGuiStyle, ptr %2347, i32 0, i32 14
  %2349 = getelementptr inbounds %struct.ImVec2, ptr %2348, i32 0, i32 0
  %2350 = load float, ptr %2349, align 4, !tbaa !127
  %2351 = load i8, ptr %15, align 1, !tbaa !70, !range !66, !noundef !67
  %2352 = trunc i8 %2351 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36) %2346, i32 noundef 3, float noundef %2350, i1 noundef zeroext %2352)
  %2353 = load i32, ptr %6, align 4, !tbaa !9
  %2354 = and i32 %2353, 16777216
  %2355 = icmp ne i32 %2354, 0
  br i1 %2355, label %2356, label %2380

2356:                                             ; preds = %2305
  %2357 = load ptr, ptr %9, align 8, !tbaa !5
  %2358 = getelementptr inbounds %struct.ImGuiWindow, ptr %2357, i32 0, i32 49
  %2359 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2358, i32 0, i32 28
  %2360 = load i32, ptr %2359, align 8, !tbaa !220
  %2361 = load ptr, ptr %19, align 8, !tbaa !5
  %2362 = getelementptr inbounds %struct.ImGuiWindow, ptr %2361, i32 0, i32 49
  %2363 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2362, i32 0, i32 28
  %2364 = load i32, ptr %2363, align 8, !tbaa !220
  %2365 = icmp ne i32 %2360, %2364
  br i1 %2365, label %2366, label %2380

2366:                                             ; preds = %2356
  %2367 = load ptr, ptr %19, align 8, !tbaa !5
  %2368 = getelementptr inbounds %struct.ImGuiWindow, ptr %2367, i32 0, i32 49
  %2369 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2368, i32 0, i32 28
  %2370 = load i32, ptr %2369, align 8, !tbaa !220
  %2371 = load ptr, ptr %9, align 8, !tbaa !5
  %2372 = getelementptr inbounds %struct.ImGuiWindow, ptr %2371, i32 0, i32 49
  %2373 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2372, i32 0, i32 28
  store i32 %2370, ptr %2373, align 8, !tbaa !220
  %2374 = load ptr, ptr %9, align 8, !tbaa !5
  %2375 = getelementptr inbounds %struct.ImGuiWindow, ptr %2374, i32 0, i32 49
  %2376 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2375, i32 0, i32 31
  %2377 = load ptr, ptr %9, align 8, !tbaa !5
  %2378 = getelementptr inbounds %struct.ImGuiWindow, ptr %2377, i32 0, i32 49
  %2379 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2378, i32 0, i32 28
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %2376, ptr noundef nonnull align 4 dereferenceable(4) %2379)
  br label %2380

2380:                                             ; preds = %2366, %2356, %2305
  %2381 = load ptr, ptr %9, align 8, !tbaa !5
  %2382 = getelementptr inbounds %struct.ImGuiWindow, ptr %2381, i32 0, i32 36
  %2383 = load i8, ptr %2382, align 4, !tbaa !139
  %2384 = sext i8 %2383 to i32
  %2385 = icmp sgt i32 %2384, 0
  br i1 %2385, label %2386, label %2391

2386:                                             ; preds = %2380
  %2387 = load ptr, ptr %9, align 8, !tbaa !5
  %2388 = getelementptr inbounds %struct.ImGuiWindow, ptr %2387, i32 0, i32 36
  %2389 = load i8, ptr %2388, align 4, !tbaa !139
  %2390 = add i8 %2389, -1
  store i8 %2390, ptr %2388, align 4, !tbaa !139
  br label %2391

2391:                                             ; preds = %2386, %2380
  %2392 = load ptr, ptr %9, align 8, !tbaa !5
  %2393 = getelementptr inbounds %struct.ImGuiWindow, ptr %2392, i32 0, i32 37
  %2394 = load i8, ptr %2393, align 1, !tbaa !140
  %2395 = sext i8 %2394 to i32
  %2396 = icmp sgt i32 %2395, 0
  br i1 %2396, label %2397, label %2402

2397:                                             ; preds = %2391
  %2398 = load ptr, ptr %9, align 8, !tbaa !5
  %2399 = getelementptr inbounds %struct.ImGuiWindow, ptr %2398, i32 0, i32 37
  %2400 = load i8, ptr %2399, align 1, !tbaa !140
  %2401 = add i8 %2400, -1
  store i8 %2401, ptr %2399, align 1, !tbaa !140
  br label %2402

2402:                                             ; preds = %2397, %2391
  %2403 = load i8, ptr %51, align 1, !tbaa !70, !range !66, !noundef !67
  %2404 = trunc i8 %2403 to i1
  br i1 %2404, label %2405, label %2408

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

2408:                                             ; preds = %2405, %2402
  %2409 = load i32, ptr %6, align 4, !tbaa !9
  %2410 = and i32 %2409, 1
  %2411 = icmp ne i32 %2410, 0
  br i1 %2411, label %2416, label %2412

2412:                                             ; preds = %2408
  %2413 = load ptr, ptr %9, align 8, !tbaa !5
  %2414 = load ptr, ptr %4, align 8, !tbaa !5
  %2415 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %2413, ptr noundef nonnull align 4 dereferenceable(16) %66, ptr noundef %2414, ptr noundef %2415)
  br label %2416

2416:                                             ; preds = %2412, %2408
  %2417 = load ptr, ptr %9, align 8, !tbaa !5
  %2418 = getelementptr inbounds %struct.ImGuiWindow, ptr %2417, i32 0, i32 12
  %2419 = load i32, ptr %2418, align 4, !tbaa !227
  %2420 = load ptr, ptr %9, align 8, !tbaa !5
  %2421 = getelementptr inbounds %struct.ImGuiWindow, ptr %2420, i32 0, i32 49
  %2422 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2421, i32 0, i32 10
  store i32 %2419, ptr %2422, align 8, !tbaa !228
  %2423 = getelementptr inbounds %struct.ImRect, ptr %66, i32 0, i32 0
  %2424 = getelementptr inbounds %struct.ImRect, ptr %66, i32 0, i32 1
  %2425 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2423, ptr noundef nonnull align 4 dereferenceable(8) %2424, i1 noundef zeroext false)
  %2426 = zext i1 %2425 to i64
  %2427 = select i1 %2425, i32 1, i32 0
  %2428 = load ptr, ptr %9, align 8, !tbaa !5
  %2429 = getelementptr inbounds %struct.ImGuiWindow, ptr %2428, i32 0, i32 49
  %2430 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2429, i32 0, i32 11
  store i32 %2427, ptr %2430, align 4, !tbaa !229
  %2431 = load ptr, ptr %9, align 8, !tbaa !5
  %2432 = getelementptr inbounds %struct.ImGuiWindow, ptr %2431, i32 0, i32 49
  %2433 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2432, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2433, ptr align 4 %66, i64 16, i1 false), !tbaa.struct !109
  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 %76) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #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 %2436

2434:                                             ; preds = %521
  %2435 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %2435)
  br label %2436

2436:                                             ; preds = %2434, %2416
  %2437 = load ptr, ptr %9, align 8, !tbaa !5
  %2438 = getelementptr inbounds %struct.ImGuiWindow, ptr %2437, i32 0, i32 52
  %2439 = getelementptr inbounds %struct.ImRect, ptr %2438, i32 0, i32 0
  %2440 = load ptr, ptr %9, align 8, !tbaa !5
  %2441 = getelementptr inbounds %struct.ImGuiWindow, ptr %2440, i32 0, i32 52
  %2442 = getelementptr inbounds %struct.ImRect, ptr %2441, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2439, ptr noundef nonnull align 4 dereferenceable(8) %2442, i1 noundef zeroext true)
  %2443 = load i8, ptr %14, align 1, !tbaa !70, !range !66, !noundef !67
  %2444 = trunc i8 %2443 to i1
  br i1 %2444, label %2445, label %2448

2445:                                             ; preds = %2436
  %2446 = load ptr, ptr %9, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.ImGuiWindow, ptr %2446, i32 0, i32 23
  store i8 0, ptr %2447, align 8, !tbaa !230
  br label %2448

2448:                                             ; preds = %2445, %2436
  %2449 = load ptr, ptr %9, align 8, !tbaa !5
  %2450 = getelementptr inbounds %struct.ImGuiWindow, ptr %2449, i32 0, i32 31
  %2451 = load i16, ptr %2450, align 8, !tbaa !231
  %2452 = add i16 %2451, 1
  store i16 %2452, ptr %2450, align 8, !tbaa !231
  %2453 = load ptr, ptr %7, align 8, !tbaa !5
  %2454 = getelementptr inbounds %struct.ImGuiContext, ptr %2453, i32 0, i32 59
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(100) %2454)
  %2455 = load i32, ptr %6, align 4, !tbaa !9
  %2456 = and i32 %2455, 16777216
  %2457 = icmp ne i32 %2456, 0
  br i1 %2457, label %2458, label %2542

2458:                                             ; preds = %2448
  %2459 = load i32, ptr %6, align 4, !tbaa !9
  %2460 = and i32 %2459, 1
  %2461 = icmp ne i32 %2460, 0
  br i1 %2461, label %2462, label %2463

2462:                                             ; preds = %2458
  br label %2465

2463:                                             ; preds = %2458
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 5797, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

2464:                                             ; No predecessors!
  br label %2465

2465:                                             ; preds = %2464, %2462
  %2466 = load i32, ptr %6, align 4, !tbaa !9
  %2467 = and i32 %2466, 64
  %2468 = icmp ne i32 %2467, 0
  br i1 %2468, label %2509, label %2469

2469:                                             ; preds = %2465
  %2470 = load ptr, ptr %9, align 8, !tbaa !5
  %2471 = getelementptr inbounds %struct.ImGuiWindow, ptr %2470, i32 0, i32 36
  %2472 = load i8, ptr %2471, align 4, !tbaa !139
  %2473 = sext i8 %2472 to i32
  %2474 = icmp sle i32 %2473, 0
  br i1 %2474, label %2475, label %2509

2475:                                             ; preds = %2469
  %2476 = load ptr, ptr %9, align 8, !tbaa !5
  %2477 = getelementptr inbounds %struct.ImGuiWindow, ptr %2476, i32 0, i32 37
  %2478 = load i8, ptr %2477, align 1, !tbaa !140
  %2479 = sext i8 %2478 to i32
  %2480 = icmp sle i32 %2479, 0
  br i1 %2480, label %2481, label %2509

2481:                                             ; preds = %2475
  %2482 = load ptr, ptr %9, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.ImGuiWindow, ptr %2482, i32 0, i32 50
  %2484 = getelementptr inbounds %struct.ImRect, ptr %2483, i32 0, i32 0
  %2485 = getelementptr inbounds %struct.ImVec2, ptr %2484, i32 0, i32 0
  %2486 = load float, ptr %2485, align 8, !tbaa !232
  %2487 = load ptr, ptr %9, align 8, !tbaa !5
  %2488 = getelementptr inbounds %struct.ImGuiWindow, ptr %2487, i32 0, i32 50
  %2489 = getelementptr inbounds %struct.ImRect, ptr %2488, i32 0, i32 1
  %2490 = getelementptr inbounds %struct.ImVec2, ptr %2489, i32 0, i32 0
  %2491 = load float, ptr %2490, align 8, !tbaa !233
  %2492 = fcmp oge float %2486, %2491
  br i1 %2492, label %2505, label %2493

2493:                                             ; preds = %2481
  %2494 = load ptr, ptr %9, align 8, !tbaa !5
  %2495 = getelementptr inbounds %struct.ImGuiWindow, ptr %2494, i32 0, i32 50
  %2496 = getelementptr inbounds %struct.ImRect, ptr %2495, i32 0, i32 0
  %2497 = getelementptr inbounds %struct.ImVec2, ptr %2496, i32 0, i32 1
  %2498 = load float, ptr %2497, align 4, !tbaa !234
  %2499 = load ptr, ptr %9, align 8, !tbaa !5
  %2500 = getelementptr inbounds %struct.ImGuiWindow, ptr %2499, i32 0, i32 50
  %2501 = getelementptr inbounds %struct.ImRect, ptr %2500, i32 0, i32 1
  %2502 = getelementptr inbounds %struct.ImVec2, ptr %2501, i32 0, i32 1
  %2503 = load float, ptr %2502, align 4, !tbaa !235
  %2504 = fcmp oge float %2498, %2503
  br i1 %2504, label %2505, label %2508

2505:                                             ; preds = %2493, %2481
  %2506 = load ptr, ptr %9, align 8, !tbaa !5
  %2507 = getelementptr inbounds %struct.ImGuiWindow, ptr %2506, i32 0, i32 41
  store i32 1, ptr %2507, align 4, !tbaa !116
  br label %2508

2508:                                             ; preds = %2505, %2493
  br label %2509

2509:                                             ; preds = %2508, %2475, %2469, %2465
  %2510 = load ptr, ptr %19, align 8, !tbaa !5
  %2511 = icmp ne ptr %2510, null
  br i1 %2511, label %2512, label %2525

2512:                                             ; preds = %2509
  %2513 = load ptr, ptr %19, align 8, !tbaa !5
  %2514 = getelementptr inbounds %struct.ImGuiWindow, ptr %2513, i32 0, i32 24
  %2515 = load i8, ptr %2514, align 1, !tbaa !136, !range !66, !noundef !67
  %2516 = trunc i8 %2515 to i1
  br i1 %2516, label %2522, label %2517

2517:                                             ; preds = %2512
  %2518 = load ptr, ptr %19, align 8, !tbaa !5
  %2519 = getelementptr inbounds %struct.ImGuiWindow, ptr %2518, i32 0, i32 41
  %2520 = load i32, ptr %2519, align 4, !tbaa !116
  %2521 = icmp sgt i32 %2520, 0
  br i1 %2521, label %2522, label %2525

2522:                                             ; preds = %2517, %2512
  %2523 = load ptr, ptr %9, align 8, !tbaa !5
  %2524 = getelementptr inbounds %struct.ImGuiWindow, ptr %2523, i32 0, i32 41
  store i32 1, ptr %2524, align 4, !tbaa !116
  br label %2525

2525:                                             ; preds = %2522, %2517, %2509
  %2526 = load ptr, ptr %19, align 8, !tbaa !5
  %2527 = icmp ne ptr %2526, null
  br i1 %2527, label %2528, label %2541

2528:                                             ; preds = %2525
  %2529 = load ptr, ptr %19, align 8, !tbaa !5
  %2530 = getelementptr inbounds %struct.ImGuiWindow, ptr %2529, i32 0, i32 24
  %2531 = load i8, ptr %2530, align 1, !tbaa !136, !range !66, !noundef !67
  %2532 = trunc i8 %2531 to i1
  br i1 %2532, label %2538, label %2533

2533:                                             ; preds = %2528
  %2534 = load ptr, ptr %19, align 8, !tbaa !5
  %2535 = getelementptr inbounds %struct.ImGuiWindow, ptr %2534, i32 0, i32 42
  %2536 = load i32, ptr %2535, align 8, !tbaa !83
  %2537 = icmp sgt i32 %2536, 0
  br i1 %2537, label %2538, label %2541

2538:                                             ; preds = %2533, %2528
  %2539 = load ptr, ptr %9, align 8, !tbaa !5
  %2540 = getelementptr inbounds %struct.ImGuiWindow, ptr %2539, i32 0, i32 42
  store i32 1, ptr %2540, align 8, !tbaa !83
  br label %2541

2541:                                             ; preds = %2538, %2533, %2525
  br label %2542

2542:                                             ; preds = %2541, %2448
  %2543 = load ptr, ptr %8, align 8, !tbaa !5
  %2544 = getelementptr inbounds %struct.ImGuiStyle, ptr %2543, i32 0, i32 0
  %2545 = load float, ptr %2544, align 4, !tbaa !236
  %2546 = fcmp ole float %2545, 0.000000e+00
  br i1 %2546, label %2547, label %2550

2547:                                             ; preds = %2542
  %2548 = load ptr, ptr %9, align 8, !tbaa !5
  %2549 = getelementptr inbounds %struct.ImGuiWindow, ptr %2548, i32 0, i32 41
  store i32 1, ptr %2549, align 4, !tbaa !116
  br label %2550

2550:                                             ; preds = %2547, %2542
  %2551 = load ptr, ptr %9, align 8, !tbaa !5
  %2552 = getelementptr inbounds %struct.ImGuiWindow, ptr %2551, i32 0, i32 41
  %2553 = load i32, ptr %2552, align 4, !tbaa !116
  %2554 = icmp sgt i32 %2553, 0
  br i1 %2554, label %2560, label %2555

2555:                                             ; preds = %2550
  %2556 = load ptr, ptr %9, align 8, !tbaa !5
  %2557 = getelementptr inbounds %struct.ImGuiWindow, ptr %2556, i32 0, i32 42
  %2558 = load i32, ptr %2557, align 8, !tbaa !83
  %2559 = icmp sgt i32 %2558, 0
  br label %2560

2560:                                             ; preds = %2555, %2550
  %2561 = phi i1 [ true, %2550 ], [ %2559, %2555 ]
  %2562 = load ptr, ptr %9, align 8, !tbaa !5
  %2563 = getelementptr inbounds %struct.ImGuiWindow, ptr %2562, i32 0, i32 28
  %2564 = zext i1 %2561 to i8
  store i8 %2564, ptr %2563, align 1, !tbaa !237
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #13
  store i8 0, ptr %86, align 1, !tbaa !70
  %2565 = load ptr, ptr %9, align 8, !tbaa !5
  %2566 = getelementptr inbounds %struct.ImGuiWindow, ptr %2565, i32 0, i32 24
  %2567 = load i8, ptr %2566, align 1, !tbaa !136, !range !66, !noundef !67
  %2568 = trunc i8 %2567 to i1
  br i1 %2568, label %2579, label %2569

2569:                                             ; preds = %2560
  %2570 = load ptr, ptr %9, align 8, !tbaa !5
  %2571 = getelementptr inbounds %struct.ImGuiWindow, ptr %2570, i32 0, i32 21
  %2572 = load i8, ptr %2571, align 2, !tbaa !107, !range !66, !noundef !67
  %2573 = trunc i8 %2572 to i1
  br i1 %2573, label %2574, label %2579

2574:                                             ; preds = %2569
  %2575 = load ptr, ptr %9, align 8, !tbaa !5
  %2576 = getelementptr inbounds %struct.ImGuiWindow, ptr %2575, i32 0, i32 28
  %2577 = load i8, ptr %2576, align 1, !tbaa !237, !range !66, !noundef !67
  %2578 = trunc i8 %2577 to i1
  br i1 %2578, label %2579, label %2598

2579:                                             ; preds = %2574, %2569, %2560
  %2580 = load ptr, ptr %9, align 8, !tbaa !5
  %2581 = getelementptr inbounds %struct.ImGuiWindow, ptr %2580, i32 0, i32 36
  %2582 = load i8, ptr %2581, align 4, !tbaa !139
  %2583 = sext i8 %2582 to i32
  %2584 = icmp sle i32 %2583, 0
  br i1 %2584, label %2585, label %2597

2585:                                             ; preds = %2579
  %2586 = load ptr, ptr %9, align 8, !tbaa !5
  %2587 = getelementptr inbounds %struct.ImGuiWindow, ptr %2586, i32 0, i32 37
  %2588 = load i8, ptr %2587, align 1, !tbaa !140
  %2589 = sext i8 %2588 to i32
  %2590 = icmp sle i32 %2589, 0
  br i1 %2590, label %2591, label %2597

2591:                                             ; preds = %2585
  %2592 = load ptr, ptr %9, align 8, !tbaa !5
  %2593 = getelementptr inbounds %struct.ImGuiWindow, ptr %2592, i32 0, i32 42
  %2594 = load i32, ptr %2593, align 8, !tbaa !83
  %2595 = icmp sle i32 %2594, 0
  br i1 %2595, label %2596, label %2597

2596:                                             ; preds = %2591
  store i8 1, ptr %86, align 1, !tbaa !70
  br label %2597

2597:                                             ; preds = %2596, %2591, %2585, %2579
  br label %2598

2598:                                             ; preds = %2597, %2574
  %2599 = load i8, ptr %86, align 1, !tbaa !70, !range !66, !noundef !67
  %2600 = trunc i8 %2599 to i1
  %2601 = load ptr, ptr %9, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.ImGuiWindow, ptr %2601, i32 0, i32 26
  %2603 = zext i1 %2600 to i8
  store i8 %2603, ptr %2602, align 1, !tbaa !238
  %2604 = load i8, ptr %86, align 1, !tbaa !70, !range !66, !noundef !67
  %2605 = trunc i8 %2604 to i1
  %2606 = xor i1 %2605, 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 %2606
}

; 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 #7 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 noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef) #7

; 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 @_ZL15CheckStacksSizeP11ImGuiWindowb(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) #7

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare 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 @_ZN5ImGuiL18UpdateManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(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(948)) #7 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 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: 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

; 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

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

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

; 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 #8 = { 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 #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 1}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !14, i64 2, !14, i64 3, !15, i64 8, !19, i64 5464, !6, i64 6408, !17, i64 6416, !17, i64 6420, !20, i64 6424, !22, i64 6568, !10, i64 6576, !10, i64 6580, !10, i64 6584, !23, i64 6592, !23, i64 6608, !23, i64 6624, !23, i64 6640, !24, i64 6656, !10, i64 6672, !6, i64 6680, !6, i64 6688, !6, i64 6696, !6, i64 6704, !6, i64 6712, !16, i64 6720, !17, i64 6728, !10, i64 6732, !14, i64 6736, !10, i64 6740, !17, i64 6744, !17, i64 6748, !10, i64 6752, !10, i64 6756, !17, i64 6760, !14, i64 6764, !14, i64 6765, !14, i64 6766, !14, i64 6767, !14, i64 6768, !10, i64 6772, !10, i64 6776, !26, i64 6784, !16, i64 6792, !6, i64 6800, !27, i64 6808, !10, i64 6812, !14, i64 6816, !14, i64 6817, !6, i64 6824, !10, i64 6832, !17, i64 6836, !28, i64 6840, !30, i64 6944, !31, i64 6960, !32, i64 6976, !33, i64 6992, !34, i64 7008, !34, i64 7024, !6, i64 7040, !10, i64 7048, !10, i64 7052, !10, i64 7056, !10, i64 7060, !10, i64 7064, !10, i64 7068, !10, i64 7072, !10, i64 7076, !10, i64 7080, !27, i64 7084, !29, i64 7088, !10, i64 7104, !6, i64 7112, !6, i64 7120, !6, i64 7128, !17, i64 7136, !17, i64 7140, !14, i64 7144, !35, i64 7148, !10, i64 7152, !14, i64 7156, !14, i64 7157, !14, i64 7158, !14, i64 7159, !14, i64 7160, !14, i64 7161, !14, i64 7162, !10, i64 7164, !29, i64 7168, !14, i64 7184, !14, i64 7185, !10, i64 7188, !36, i64 7192, !10, i64 7196, !10, i64 7200, !10, i64 7204, !37, i64 7208, !37, i64 7256, !37, i64 7304, !6, i64 7352, !6, i64 7360, !10, i64 7368, !10, i64 7372, !10, i64 7376, !10, i64 7380, !14, i64 7384, !38, i64 7392, !39, i64 7448, !17, i64 7480, !40, i64 7488, !40, i64 7656, !10, i64 7824, !14, i64 7828, !14, i64 7829, !10, i64 7832, !10, i64 7836, !10, i64 7840, !48, i64 7848, !29, i64 7912, !10, i64 7928, !10, i64 7932, !17, i64 7936, !10, i64 7940, !10, i64 7944, !10, i64 7948, !49, i64 7952, !7, i64 7968, !6, i64 7976, !50, i64 7984, !52, i64 8024, !53, i64 8040, !16, i64 8056, !54, i64 8064, !59, i64 11792, !10, i64 11912, !10, i64 11916, !17, i64 11920, !7, i64 11924, !21, i64 11936, !14, i64 11952, !17, i64 11956, !17, i64 11960, !17, i64 11964, !10, i64 11968, !55, i64 11976, !10, i64 11992, !16, i64 11996, !16, i64 12004, !14, i64 12012, !17, i64 12016, !62, i64 12024, !63, i64 12040, !64, i64 12056, !14, i64 12072, !65, i64 12076, !6, i64 12080, !62, i64 12088, !17, i64 12104, !14, i64 12108, !10, i64 12112, !10, i64 12116, !10, i64 12120, !14, i64 12124, !10, i64 12128, !7, i64 12132, !10, i64 12612, !17, i64 12616, !10, i64 12620, !10, i64 12624, !10, i64 12628, !7, i64 12632}
!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}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!19 = !{!"_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, !7, i64 176}
!20 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !21, i64 24, !10, i64 40, !7, i64 44}
!21 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!22 = !{!"double", !7, i64 0}
!23 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!26 = !{!"long long", !7, i64 0}
!27 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!28 = !{!"_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, !29, i64 52, !6, i64 72, !6, i64 80, !17, i64 88, !16, i64 92}
!29 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!30 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !17, i64 4, !14, i64 8, !10, i64 12}
!31 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!36 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!37 = !{!"_ZTS18ImGuiNavMoveResult", !10, i64 0, !10, i64 4, !6, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !29, i64 28}
!38 = !{!"_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}
!39 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!40 = !{!"_ZTS10ImDrawList", !41, i64 0, !18, i64 16, !42, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !10, i64 76, !6, i64 80, !6, i64 88, !43, i64 96, !44, i64 112, !45, i64 128, !46, i64 144}
!41 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !47, i64 8}
!47 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!48 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !14, i64 57, !14, i64 58}
!49 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!50 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !51, i64 0, !24, i64 16, !10, i64 32}
!51 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !18, i64 16, !55, i64 32, !55, i64 48, !14, i64 64, !10, i64 68, !17, i64 72, !56, i64 76, !17, i64 3696, !14, i64 3700, !14, i64 3701, !10, i64 3704, !6, i64 3712, !6, i64 3720}
!55 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_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, !57, i64 24}
!57 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !58, i64 3582, !58, i64 3584, !10, i64 3588, !10, i64 3592}
!58 = !{!"short", !7, i64 0}
!59 = !{!"_ZTS6ImFont", !60, i64 0, !17, i64 16, !17, i64 20, !18, i64 24, !61, i64 40, !6, i64 56, !16, i64 64, !6, i64 72, !6, i64 80, !58, i64 88, !58, i64 90, !58, i64 92, !17, i64 96, !17, i64 100, !17, i64 104, !10, i64 108, !14, 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 = !{!"_ZTS15ImGuiTextBuffer", !55, i64 0}
!63 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!66 = !{i8 0, i8 2}
!67 = !{}
!68 = !{!13, !10, i64 6580}
!69 = !{!13, !10, i64 6576}
!70 = !{!14, !14, i64 0}
!71 = !{!13, !10, i64 6840}
!72 = !{i64 0, i64 4, !73, i64 4, i64 4, !73}
!73 = !{!17, !17, i64 0}
!74 = !{!75, !10, i64 592}
!75 = !{!"_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, !7, i64 135, !58, i64 136, !58, i64 138, !58, i64 140, !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, !76, i64 192, !77, i64 208, !29, i64 496, !29, i64 512, !29, i64 528, !29, i64 544, !29, i64 560, !29, i64 576, !10, i64 592, !17, i64 596, !17, i64 600, !81, i64 604, !24, i64 640, !82, i64 656, !17, i64 672, !10, i64 676, !6, i64 680, !40, i64 688, !6, i64 856, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !7, i64 896, !7, i64 904, !14, i64 936, !10, i64 940, !10, i64 944}
!76 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!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, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !29, i64 72, !29, i64 88, !35, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !14, i64 120, !14, i64 121, !14, i64 122, !16, i64 124, !23, i64 136, !6, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !17, i64 180, !17, i64 184, !78, i64 192, !60, i64 208, !60, i64 224, !79, i64 240, !7, i64 256, !80, i64 268, !80, i64 272, !80, i64 276, !6, i64 280}
!78 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!79 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!"_ZTS6ImVec1", !17, i64 0}
!81 = !{!"_ZTS16ImGuiMenuColumns", !17, i64 0, !17, i64 4, !17, i64 8, !7, i64 12, !7, i64 24}
!82 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!75, !10, i64 160}
!84 = !{!13, !10, i64 7024}
!85 = !{!75, !10, i64 144}
!86 = !{!87, !10, i64 0}
!87 = !{!"_ZTS14ImGuiPopupData", !10, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !16, i64 32, !16, i64 40}
!88 = !{!87, !6, i64 8}
!89 = !{!75, !14, i64 132}
!90 = !{!75, !10, i64 12}
!91 = !{!13, !22, i64 6568}
!92 = !{!75, !17, i64 596}
!93 = !{!75, !58, i64 138}
!94 = !{!13, !10, i64 6672}
!95 = !{!75, !58, i64 140}
!96 = !{!75, !6, i64 856}
!97 = !{!75, !10, i64 192}
!98 = !{!13, !6, i64 6680}
!99 = !{!75, !10, i64 164}
!100 = !{!13, !10, i64 6844}
!101 = !{!75, !10, i64 168}
!102 = !{!13, !10, i64 6848}
!103 = !{!13, !17, i64 6872}
!104 = !{!13, !17, i64 6876}
!105 = !{!13, !14, i64 6888}
!106 = !{!13, !10, i64 6852}
!107 = !{!75, !14, i64 126}
!108 = !{!75, !14, i64 134}
!109 = !{i64 0, i64 4, !73, i64 4, i64 4, !73, i64 8, i64 4, !73, i64 12, i64 4, !73}
!110 = !{!75, !14, i64 936}
!111 = !{!13, !6, i64 7128}
!112 = !{!75, !6, i64 0}
!113 = !{!75, !10, i64 72}
!114 = !{!115, !115, i64 0}
!115 = !{!"long", !7, i64 0}
!116 = !{!75, !10, i64 156}
!117 = !{!75, !17, i64 32}
!118 = !{!75, !17, i64 24}
!119 = !{!75, !17, i64 36}
!120 = !{!75, !17, i64 28}
!121 = !{!19, !17, i64 44}
!122 = !{!75, !17, i64 68}
!123 = !{!19, !17, i64 52}
!124 = !{!19, !17, i64 16}
!125 = !{!19, !17, i64 8}
!126 = !{!75, !17, i64 56}
!127 = !{!19, !17, i64 72}
!128 = !{!13, !17, i64 6932}
!129 = !{!75, !17, i64 332}
!130 = !{!13, !17, i64 6936}
!131 = !{!75, !17, i64 336}
!132 = !{!13, !6, i64 6688}
!133 = !{!13, !10, i64 6732}
!134 = !{!13, !10, i64 6740}
!135 = !{!75, !14, i64 130}
!136 = !{!75, !14, i64 129}
!137 = !{!16, !17, i64 0}
!138 = !{!16, !17, i64 4}
!139 = !{!75, !7, i64 148}
!140 = !{!75, !7, i64 149}
!141 = !{!75, !14, i64 151}
!142 = !{!75, !10, i64 152}
!143 = !{!75, !10, i64 344}
!144 = !{!75, !17, i64 176}
!145 = !{!13, !17, i64 16}
!146 = !{!13, !17, i64 20}
!147 = !{!19, !17, i64 40}
!148 = !{!19, !17, i64 48}
!149 = !{!19, !17, i64 12}
!150 = !{!75, !17, i64 64}
!151 = !{!13, !14, i64 203}
!152 = !{!13, !17, i64 6416}
!153 = !{!75, !7, i64 135}
!154 = !{!75, !14, i64 125}
!155 = !{!19, !17, i64 104}
!156 = !{!75, !14, i64 124}
!157 = !{!75, !17, i64 16}
!158 = !{!75, !17, i64 512}
!159 = !{!75, !17, i64 20}
!160 = !{!75, !17, i64 516}
!161 = !{!75, !17, i64 116}
!162 = !{!75, !17, i64 520}
!163 = !{!75, !17, i64 120}
!164 = !{!75, !17, i64 524}
!165 = !{!19, !17, i64 68}
!166 = !{!75, !17, i64 528}
!167 = !{!75, !17, i64 532}
!168 = !{!75, !17, i64 536}
!169 = !{!75, !17, i64 540}
!170 = !{!75, !17, i64 600}
!171 = !{!75, !17, i64 40}
!172 = !{!75, !17, i64 92}
!173 = !{!75, !17, i64 44}
!174 = !{!75, !17, i64 60}
!175 = !{!75, !17, i64 96}
!176 = !{!75, !6, i64 680}
!177 = !{!13, !6, i64 6408}
!178 = !{!59, !6, i64 72}
!179 = !{!180, !6, i64 8}
!180 = !{!"_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, !33, i64 64, !181, i64 80, !182, i64 96, !7, i64 112}
!181 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!182 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!183 = !{!13, !6, i64 7120}
!184 = !{!75, !6, i64 864}
!185 = !{!13, !17, i64 7480}
!186 = !{!13, !17, i64 7140}
!187 = !{!13, !17, i64 5476}
!188 = !{!189, !10, i64 0}
!189 = !{!"_ZTS9ImDrawCmd", !10, i64 0, !21, i64 4, !6, i64 24, !10, i64 32, !10, i64 36, !6, i64 40, !6, i64 48}
!190 = !{!40, !10, i64 32}
!191 = !{!13, !6, i64 7112}
!192 = !{!13, !6, i64 7040}
!193 = !{!75, !6, i64 872}
!194 = !{!75, !17, i64 48}
!195 = !{!75, !17, i64 52}
!196 = !{!75, !17, i64 84}
!197 = !{!75, !17, i64 544}
!198 = !{!75, !17, i64 88}
!199 = !{!75, !17, i64 548}
!200 = !{!75, !17, i64 552}
!201 = !{!75, !17, i64 556}
!202 = !{!75, !17, i64 576}
!203 = !{!75, !17, i64 580}
!204 = !{!75, !17, i64 584}
!205 = !{!75, !17, i64 588}
!206 = !{!75, !17, i64 476}
!207 = !{!75, !17, i64 480}
!208 = !{!75, !17, i64 484}
!209 = !{!75, !17, i64 260}
!210 = !{!75, !17, i64 256}
!211 = !{!75, !14, i64 328}
!212 = !{!75, !14, i64 329}
!213 = !{!75, !10, i64 324}
!214 = !{!75, !10, i64 320}
!215 = !{!75, !14, i64 330}
!216 = !{!75, !10, i64 368}
!217 = !{!75, !10, i64 372}
!218 = !{!75, !10, i64 380}
!219 = !{!75, !10, i64 376}
!220 = !{!75, !10, i64 384}
!221 = !{!75, !17, i64 388}
!222 = !{!75, !17, i64 392}
!223 = !{!75, !6, i64 488}
!224 = !{!75, !10, i64 264}
!225 = !{!75, !10, i64 268}
!226 = !{!75, !6, i64 360}
!227 = !{!75, !10, i64 76}
!228 = !{!75, !10, i64 272}
!229 = !{!75, !10, i64 276}
!230 = !{!75, !14, i64 128}
!231 = !{!75, !58, i64 136}
!232 = !{!75, !17, i64 496}
!233 = !{!75, !17, i64 504}
!234 = !{!75, !17, i64 500}
!235 = !{!75, !17, i64 508}
!236 = !{!19, !17, i64 0}
!237 = !{!75, !14, i64 133}
!238 = !{!75, !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.1 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.54 = 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: 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) #6

; 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: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #4

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 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 #7

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

; 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 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 nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #12

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

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

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

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 5464
  %.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
  %.not309 = icmp eq i8 %36, 0
  br i1 %.not309, label %.critedge, label %37

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

37:                                               ; preds = %35
  %38 = getelementptr inbounds i8, ptr %33, i64 1
  %39 = load i8, ptr %38, align 1, !tbaa !10, !range !65, !noundef !66
  %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.49, ptr noundef nonnull @.str.1, i32 noundef 5228, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

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

47:                                               ; preds = %42
  tail call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.1, i32 noundef 5229, 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 6840
  %53 = load i32, ptr %52, align 8, !tbaa !69
  %54 = and i32 %53, 2
  %.not311 = icmp eq i32 %54, 0
  br i1 %.not311, label %59, label %55

55:                                               ; preds = %51
  %56 = getelementptr inbounds i8, ptr %33, i64 6872
  %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.51, ptr noundef nonnull @.str.1, i32 noundef 5245, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

69:                                               ; preds = %62
  %70 = load i32, ptr %45, align 8, !tbaa !68
  %71 = getelementptr inbounds i8, ptr %63, i64 592
  %72 = load i32, ptr %71, align 8, !tbaa !70
  %.not314 = icmp eq i32 %72, %70
  %73 = add nsw i32 %70, -1
  %74 = icmp slt i32 %72, %73
  %75 = getelementptr inbounds i8, ptr %63, i64 160
  %76 = load i32, ptr %75, align 8, !tbaa !79
  %77 = icmp sgt i32 %76, 0
  %78 = and i32 %spec.select, 67108864
  %.not315 = icmp eq i32 %78, 0
  br i1 %.not315, label %94, label %79

79:                                               ; preds = %69
  %80 = getelementptr inbounds i8, ptr %33, i64 7008
  %81 = getelementptr inbounds i8, ptr %33, i64 7024
  %82 = load i32, ptr %81, align 8, !tbaa !80
  %83 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %80, i32 noundef %82)
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds i8, ptr %84, i64 144
  %86 = load i32, ptr %85, align 8, !tbaa !81
  %87 = load i32, ptr %83, align 8, !tbaa !82
  %88 = icmp ne i32 %86, %87
  %89 = getelementptr inbounds i8, ptr %83, i64 8
  %90 = load ptr, ptr %89, align 8, !tbaa !84
  %91 = icmp ne ptr %84, %90
  %92 = or i1 %88, %91
  %93 = or i1 %74, %92
  br label %94

94:                                               ; preds = %79, %69
  %95 = phi ptr [ %84, %79 ], [ %63, %69 ]
  %.0278.in = phi i1 [ %93, %79 ], [ %74, %69 ]
  %96 = select i1 %.0278.in, i1 true, i1 %77
  %97 = getelementptr inbounds i8, ptr %95, i64 132
  %98 = zext i1 %96 to i8
  store i8 %98, ptr %97, align 4, !tbaa !85
  br i1 %96, label %99, label %100

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

100:                                              ; preds = %99, %94
  %101 = load ptr, ptr %4, align 8, !tbaa !5
  %102 = getelementptr inbounds i8, ptr %101, i64 12
  br i1 %.not314, label %115, label %103

103:                                              ; preds = %100
  store i32 %spec.select, ptr %102, align 4, !tbaa !86
  %104 = getelementptr inbounds i8, ptr %101, i64 592
  store i32 %70, ptr %104, align 8, !tbaa !70
  %105 = getelementptr inbounds i8, ptr %33, i64 6568
  %106 = load double, ptr %105, align 8, !tbaa !87
  %107 = fptrunc double %106 to float
  %108 = getelementptr inbounds i8, ptr %101, i64 596
  store float %107, ptr %108, align 4, !tbaa !88
  %109 = getelementptr inbounds i8, ptr %101, i64 138
  store i16 0, ptr %109, align 2, !tbaa !89
  %110 = getelementptr inbounds i8, ptr %33, i64 6672
  %111 = load i32, ptr %110, align 8, !tbaa !90
  %112 = add nsw i32 %111, 1
  store i32 %112, ptr %110, align 8, !tbaa !90
  %113 = trunc i32 %111 to i16
  %114 = getelementptr inbounds i8, ptr %101, i64 140
  store i16 %113, ptr %114, align 4, !tbaa !91
  br label %117

115:                                              ; preds = %100
  %116 = load i32, ptr %102, align 4, !tbaa !86
  br label %117

117:                                              ; preds = %115, %103
  %.1 = phi i32 [ %spec.select, %103 ], [ %116, %115 ]
  %118 = getelementptr inbounds i8, ptr %33, i64 6640
  %119 = call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %118)
  br i1 %119, label %123, label %120

120:                                              ; preds = %117
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %118)
  %122 = load ptr, ptr %121, align 8, !tbaa !5
  br label %123

123:                                              ; preds = %117, %120
  %124 = phi ptr [ %122, %120 ], [ null, %117 ]
  br i1 %.not314, label %128, label %125

125:                                              ; preds = %123
  %126 = and i32 %.1, 83886080
  %.not316 = icmp eq i32 %126, 0
  %127 = select i1 %.not316, ptr null, ptr %124
  br label %132

128:                                              ; preds = %123
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  %130 = getelementptr inbounds i8, ptr %129, i64 856
  %131 = load ptr, ptr %130, align 8, !tbaa !92
  br label %132

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

137:                                              ; preds = %132
  call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 5280, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

138:                                              ; preds = %132
  %139 = load ptr, ptr %4, align 8, !tbaa !5
  %140 = getelementptr inbounds i8, ptr %139, i64 192
  %141 = load i32, ptr %140, align 8, !tbaa !93
  %142 = icmp eq i32 %141, 0
  br i1 %142, label %143, label %145

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

145:                                              ; preds = %143, %138
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %118, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %146 = getelementptr inbounds i8, ptr %33, i64 6680
  store ptr null, ptr %146, align 8, !tbaa !94
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL15CheckStacksSizeP11ImGuiWindowb(ptr noundef %147, i1 noundef zeroext true)
  %148 = and i32 %.1, 67108864
  %.not319 = icmp eq i32 %148, 0
  br i1 %.not319, label %159, label %149

149:                                              ; preds = %145
  %150 = getelementptr inbounds i8, ptr %33, i64 7008
  %151 = getelementptr inbounds i8, ptr %33, i64 7024
  %152 = load i32, ptr %151, align 8, !tbaa !80
  %153 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %150, i32 noundef %152)
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds i8, ptr %153, i64 8
  store ptr %154, ptr %155, align 8, !tbaa !84
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %151, ptr noundef nonnull align 8 dereferenceable(48) %153)
  %156 = load i32, ptr %153, align 8, !tbaa !82
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  %158 = getelementptr inbounds i8, ptr %157, i64 144
  store i32 %156, ptr %158, align 8, !tbaa !81
  br label %159

159:                                              ; preds = %149, %145
  %.not358 = xor i1 %77, true
  %brmerge = select i1 %.not358, i1 true, i1 %136
  br i1 %brmerge, label %163, label %160

160:                                              ; preds = %159
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  %162 = getelementptr inbounds i8, ptr %161, i64 896
  store i32 0, ptr %162, align 8, !tbaa !95
  br label %163

163:                                              ; preds = %159, %160
  %164 = getelementptr inbounds i8, ptr %33, i64 6840
  %165 = load i32, ptr %164, align 8, !tbaa !69
  %166 = and i32 %165, 1
  %.not320 = icmp eq i32 %166, 0
  br i1 %.not320, label %192, label %167

167:                                              ; preds = %163
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = getelementptr inbounds i8, ptr %168, i64 164
  %170 = load i32, ptr %169, align 4, !tbaa !96
  %171 = getelementptr inbounds i8, ptr %33, i64 6844
  %172 = load i32, ptr %171, align 4, !tbaa !97
  %173 = and i32 %172, %170
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %188

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

._crit_edge:                                      ; preds = %175
  %.pre443 = load i32, ptr %171, align 4, !tbaa !97
  br label %188

179:                                              ; preds = %175
  %180 = getelementptr inbounds i8, ptr %33, i64 6856
  %181 = getelementptr inbounds i8, ptr %.pre, i64 176
  %182 = load i64, ptr %180, align 8
  store i64 %182, ptr %181, align 8
  %183 = getelementptr inbounds i8, ptr %.pre, i64 184
  %184 = load i64, ptr %176, align 8
  store i64 %184, ptr %183, align 8
  %185 = getelementptr inbounds i8, ptr %.pre, i64 164
  %186 = load i32, ptr %185, align 4, !tbaa !96
  %187 = and i32 %186, -15
  store i32 %187, ptr %185, align 4, !tbaa !96
  br label %192

188:                                              ; preds = %._crit_edge, %167
  %189 = phi i32 [ %.pre443, %._crit_edge ], [ %172, %167 ]
  %190 = phi ptr [ %.pre, %._crit_edge ], [ %168, %167 ]
  %191 = getelementptr inbounds i8, ptr %33, i64 6856
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %190, ptr noundef nonnull align 4 dereferenceable(8) %191, i32 noundef %189)
  br label %192

192:                                              ; preds = %179, %188, %163
  %.0279.shrunk = phi i1 [ true, %179 ], [ %174, %188 ], [ false, %163 ]
  %193 = load i32, ptr %164, align 8, !tbaa !69
  %194 = and i32 %193, 2
  %.not321 = icmp eq i32 %194, 0
  br i1 %.not321, label %212, label %195

195:                                              ; preds = %192
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  %197 = getelementptr inbounds i8, ptr %196, i64 168
  %198 = load i32, ptr %197, align 8, !tbaa !98
  %199 = getelementptr inbounds i8, ptr %33, i64 6848
  %200 = load i32, ptr %199, align 8, !tbaa !99
  %201 = and i32 %200, %198
  %.not322 = icmp eq i32 %201, 0
  br i1 %.not322, label %.thread, label %202

202:                                              ; preds = %195
  %203 = getelementptr inbounds i8, ptr %33, i64 6872
  %204 = load float, ptr %203, align 8, !tbaa !100
  %205 = fcmp ogt float %204, 0.000000e+00
  %206 = getelementptr inbounds i8, ptr %33, i64 6876
  %207 = load float, ptr %206, align 4, !tbaa !101
  %208 = fcmp ogt float %207, 0.000000e+00
  br label %.thread

.thread:                                          ; preds = %195, %202
  %209 = phi i1 [ %205, %202 ], [ false, %195 ]
  %210 = phi i1 [ %208, %202 ], [ false, %195 ]
  %211 = getelementptr inbounds i8, ptr %33, i64 6872
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %196, ptr noundef nonnull align 4 dereferenceable(8) %211, i32 noundef %200)
  %.pre444 = load i32, ptr %164, align 8, !tbaa !69
  br label %212

212:                                              ; preds = %.thread, %192
  %213 = phi i32 [ %.pre444, %.thread ], [ %193, %192 ]
  %.0281 = phi i1 [ %210, %.thread ], [ false, %192 ]
  %.0280 = phi i1 [ %209, %.thread ], [ false, %192 ]
  %214 = and i32 %213, 4
  %.not324 = icmp eq i32 %214, 0
  br i1 %.not324, label %220, label %215

215:                                              ; preds = %212
  %216 = getelementptr inbounds i8, ptr %33, i64 6880
  %217 = load ptr, ptr %4, align 8, !tbaa !5
  %218 = getelementptr inbounds i8, ptr %217, i64 48
  %219 = load i64, ptr %216, align 8
  store i64 %219, ptr %218, align 8
  br label %225

220:                                              ; preds = %212
  br i1 %.not314, label %._crit_edge491, label %221

._crit_edge491:                                   ; preds = %220
  %.pre447.pre486.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %225

221:                                              ; preds = %220
  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)
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  %223 = getelementptr inbounds i8, ptr %222, i64 48
  %224 = load i64, ptr %6, align 8
  store i64 %224, ptr %223, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #14
  br label %225

225:                                              ; preds = %._crit_edge491, %221, %215
  %.pre447.pre486 = phi ptr [ %.pre447.pre486.pre, %._crit_edge491 ], [ %222, %221 ], [ %217, %215 ]
  %226 = load i32, ptr %164, align 8, !tbaa !69
  %227 = and i32 %226, 8
  %.not325 = icmp eq i32 %227, 0
  br i1 %.not325, label %234, label %228

228:                                              ; preds = %225
  %229 = getelementptr inbounds i8, ptr %33, i64 6888
  %230 = load i8, ptr %229, align 8, !tbaa !102, !range !65, !noundef !66
  %231 = trunc nuw i8 %230 to i1
  %232 = getelementptr inbounds i8, ptr %33, i64 6852
  %233 = load i32, ptr %232, align 4, !tbaa !103
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre447.pre486, i1 noundef zeroext %231, i32 noundef %233)
  %.pre445 = load i32, ptr %164, align 8, !tbaa !69
  %.pre447.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %234

234:                                              ; preds = %228, %225
  %.pre447 = phi ptr [ %.pre447.pre, %228 ], [ %.pre447.pre486, %225 ]
  %235 = phi i32 [ %.pre445, %228 ], [ %226, %225 ]
  %236 = and i32 %235, 32
  %.not326 = icmp eq i32 %236, 0
  br i1 %.not326, label %238, label %237

237:                                              ; preds = %234
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %.pre447)
  %.pre446 = load ptr, ptr %4, align 8, !tbaa !5
  br label %238

238:                                              ; preds = %237, %234
  %239 = phi ptr [ %.pre446, %237 ], [ %.pre447, %234 ]
  %240 = getelementptr inbounds i8, ptr %239, i64 132
  %241 = load i8, ptr %240, align 4, !tbaa !85, !range !65, !noundef !66
  %242 = trunc nuw i8 %241 to i1
  br i1 %242, label %243, label %244

243:                                              ; preds = %238
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %239, i32 noundef 8, i1 noundef zeroext false)
  br label %244

244:                                              ; preds = %243, %238
  br i1 %.not314, label %.thread426, label %245

245:                                              ; preds = %244
  %246 = and i32 %.1, 33554432
  %.not327 = icmp eq i32 %246, 0
  %247 = and i32 %.1, 50331648
  %248 = icmp eq i32 %247, 50331648
  %249 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %249, i32 noundef %.1, ptr noundef %133)
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = getelementptr inbounds i8, ptr %250, i64 126
  store i8 1, ptr %251, align 2, !tbaa !104
  %252 = icmp ne ptr %1, null
  %253 = getelementptr inbounds i8, ptr %250, i64 134
  %254 = zext i1 %252 to i8
  store i8 %254, ptr %253, align 2, !tbaa !105
  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)
  %255 = load ptr, ptr %4, align 8, !tbaa !5
  %256 = getelementptr inbounds i8, ptr %255, i64 560
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %256, ptr noundef nonnull align 4 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !106
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #14
  %257 = getelementptr inbounds i8, ptr %255, i64 192
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %257, i32 noundef 1)
  %258 = load ptr, ptr %4, align 8, !tbaa !5
  %259 = getelementptr inbounds i8, ptr %258, i64 936
  %260 = load i8, ptr %259, align 8, !tbaa !108, !range !65, !noundef !66
  %261 = trunc nuw i8 %260 to i1
  br i1 %261, label %262, label %263

262:                                              ; preds = %245
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %258)
  %.pre448.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %263

263:                                              ; preds = %262, %245
  %.pre448 = phi ptr [ %.pre448.pre, %262 ], [ %258, %245 ]
  %264 = getelementptr inbounds i8, ptr %33, i64 7128
  %265 = load ptr, ptr %264, align 8, !tbaa !109
  %.not328 = icmp eq ptr %265, null
  br i1 %.not328, label %.critedge361, label %266

266:                                              ; preds = %263
  %267 = getelementptr inbounds i8, ptr %.pre448, i64 12
  %268 = load i32, ptr %267, align 4, !tbaa !86
  %269 = and i32 %268, 524288
  %270 = icmp ne i32 %269, 0
  %brmerge362 = or i1 %50, %270
  br i1 %brmerge362, label %.critedge361, label %271

271:                                              ; preds = %266
  %272 = load ptr, ptr %.pre448, align 8, !tbaa !110
  %273 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %272) #15
  %.not329 = icmp eq i32 %273, 0
  br i1 %.not329, label %.critedge361, label %274

274:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #14
  %275 = getelementptr inbounds i8, ptr %.pre448, i64 72
  %276 = load i32, ptr %275, align 8, !tbaa !111
  %277 = sext i32 %276 to i64
  store i64 %277, ptr %9, align 8, !tbaa !112
  %278 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %272, ptr noundef nonnull %9, ptr noundef nonnull %0)
  %279 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %278, ptr %279, align 8, !tbaa !110
  %280 = load i64, ptr %9, align 8, !tbaa !112
  %281 = trunc i64 %280 to i32
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = getelementptr inbounds i8, ptr %282, i64 72
  store i32 %281, ptr %283, align 8, !tbaa !111
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %.critedge361

.critedge361:                                     ; preds = %263, %266, %274, %271
  %284 = phi ptr [ %.pre448, %263 ], [ %.pre448, %266 ], [ %282, %274 ], [ %.pre448, %271 ]
  %285 = call <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef %284)
  %286 = load ptr, ptr %4, align 8, !tbaa !5
  %287 = getelementptr inbounds i8, ptr %286, i64 40
  store <2 x float> %285, ptr %287, align 8
  %288 = getelementptr inbounds i8, ptr %286, i64 156
  %289 = load i32, ptr %288, align 4, !tbaa !114
  %290 = icmp sgt i32 %289, 0
  br i1 %290, label %291, label %293

291:                                              ; preds = %.critedge361
  %292 = add nsw i32 %289, -1
  store i32 %292, ptr %288, align 4, !tbaa !114
  br label %293

293:                                              ; preds = %291, %.critedge361
  %294 = getelementptr inbounds i8, ptr %286, i64 160
  %295 = load i32, ptr %294, align 8, !tbaa !79
  %296 = icmp slt i32 %295, 1
  %.not437 = xor i1 %50, true
  %297 = select i1 %.0280, i1 %.0281, i1 false
  %or.cond438 = select i1 %.not437, i1 true, i1 %297
  %.not441 = and i1 %296, %or.cond438
  br i1 %.not441, label %300, label %298

298:                                              ; preds = %293
  %299 = add nsw i32 %295, -1
  %simplifycfg.merge439 = select i1 %or.cond438, i32 %299, i32 1
  store i32 %simplifycfg.merge439, ptr %294, align 8, !tbaa !79
  br label %300

300:                                              ; preds = %293, %298
  %301 = and i32 %.1, 100663296
  %.not330 = icmp ne i32 %301, 0
  %or.cond364.not = select i1 %.0278.in, i1 %.not330, i1 false
  br i1 %or.cond364.not, label %302, label %316

302:                                              ; preds = %300
  store i32 1, ptr %294, align 8, !tbaa !79
  %303 = and i32 %.1, 64
  %.not331 = icmp eq i32 %303, 0
  br i1 %.not331, label %316, label %304

304:                                              ; preds = %302
  br i1 %.0280, label %308, label %305

305:                                              ; preds = %304
  %306 = getelementptr inbounds i8, ptr %286, i64 32
  store float 0.000000e+00, ptr %306, align 8, !tbaa !115
  %307 = getelementptr inbounds i8, ptr %286, i64 24
  store float 0.000000e+00, ptr %307, align 8, !tbaa !116
  br label %308

308:                                              ; preds = %305, %304
  br i1 %.0281, label %312, label %309

309:                                              ; preds = %308
  %310 = getelementptr inbounds i8, ptr %286, i64 36
  store float 0.000000e+00, ptr %310, align 4, !tbaa !117
  %311 = getelementptr inbounds i8, ptr %286, i64 28
  store float 0.000000e+00, ptr %311, align 4, !tbaa !118
  br label %312

312:                                              ; preds = %309, %308
  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)
  %313 = load ptr, ptr %4, align 8, !tbaa !5
  %314 = getelementptr inbounds i8, ptr %313, i64 40
  %315 = load i64, ptr %10, align 8
  store i64 %315, ptr %314, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  br label %316

316:                                              ; preds = %302, %312, %300
  %317 = phi ptr [ %286, %302 ], [ %313, %312 ], [ %286, %300 ]
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef nonnull %317)
  br i1 %136, label %325, label %.thread410

.thread410:                                       ; preds = %316
  %318 = and i32 %.1, 134217728
  %.not333 = icmp eq i32 %318, 0
  %or.cond365 = and i1 %.not330, %.not333
  %.in.v = select i1 %or.cond365, i64 5516, i64 5480
  %.in = getelementptr inbounds i8, ptr %33, i64 %.in.v
  %319 = load float, ptr %.in, align 4, !tbaa !107
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = getelementptr inbounds i8, ptr %320, i64 68
  store float %319, ptr %321, align 4, !tbaa !119
  %322 = getelementptr inbounds i8, ptr %33, i64 5468
  %323 = getelementptr inbounds i8, ptr %320, i64 56
  %324 = load i64, ptr %322, align 4
  store i64 %324, ptr %323, align 8
  br label %345

325:                                              ; preds = %316
  %326 = getelementptr inbounds i8, ptr %33, i64 5508
  %327 = load float, ptr %326, align 4, !tbaa !120
  %328 = load ptr, ptr %4, align 8, !tbaa !5
  %329 = getelementptr inbounds i8, ptr %328, i64 68
  store float %327, ptr %329, align 4, !tbaa !119
  %330 = getelementptr inbounds i8, ptr %33, i64 5468
  %331 = getelementptr inbounds i8, ptr %328, i64 56
  %332 = load i64, ptr %330, align 4
  store i64 %332, ptr %331, align 8
  %333 = and i32 %.1, 83951616
  %or.cond366 = icmp eq i32 %333, 16777216
  %334 = fcmp oeq float %327, 0.000000e+00
  %or.cond506 = select i1 %or.cond366, i1 %334, i1 false
  br i1 %or.cond506, label %335, label %345

335:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #14
  %336 = and i32 %.1, 1024
  %.not335 = icmp eq i32 %336, 0
  br i1 %.not335, label %340, label %337

337:                                              ; preds = %335
  %338 = getelementptr inbounds i8, ptr %33, i64 5472
  %339 = load float, ptr %338, align 4, !tbaa !121
  br label %340

340:                                              ; preds = %335, %337
  %341 = phi float [ %339, %337 ], [ 0.000000e+00, %335 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 0.000000e+00, float noundef %341)
  %342 = load ptr, ptr %4, align 8, !tbaa !5
  %343 = getelementptr inbounds i8, ptr %342, i64 56
  %344 = load i64, ptr %11, align 8
  store i64 %344, ptr %343, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #14
  br label %345

345:                                              ; preds = %.thread410, %340, %325
  %.in496.in = phi i64 [ %324, %.thread410 ], [ %344, %340 ], [ %332, %325 ]
  %.in496 = trunc i64 %.in496.in to i32
  %346 = bitcast i32 %.in496 to float
  %347 = getelementptr inbounds i8, ptr %33, i64 5536
  %348 = load float, ptr %347, align 4, !tbaa !122
  %349 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %346, float noundef %348)
  %350 = getelementptr inbounds i8, ptr %33, i64 6932
  %351 = load float, ptr %350, align 4, !tbaa !123
  %352 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %349, float noundef %351)
  %353 = load ptr, ptr %4, align 8, !tbaa !5
  %354 = getelementptr inbounds i8, ptr %353, i64 332
  store float %352, ptr %354, align 4, !tbaa !124
  %355 = getelementptr inbounds i8, ptr %33, i64 6936
  %356 = load float, ptr %355, align 4, !tbaa !125
  %357 = getelementptr inbounds i8, ptr %353, i64 336
  store float %356, ptr %357, align 4, !tbaa !126
  %358 = and i32 %.1, 1
  %.not336 = icmp eq i32 %358, 0
  %359 = and i32 %.1, 33
  %or.cond367 = icmp eq i32 %359, 0
  br i1 %or.cond367, label %360, label %396

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

369:                                              ; preds = %360
  %370 = getelementptr inbounds i8, ptr %33, i64 6732
  %371 = load i32, ptr %370, align 4, !tbaa !128
  %372 = icmp eq i32 %371, 0
  br i1 %372, label %373, label %385

373:                                              ; preds = %369
  %374 = getelementptr inbounds i8, ptr %33, i64 6740
  %375 = load i32, ptr %374, align 4, !tbaa !129
  %376 = icmp eq i32 %375, 0
  br i1 %376, label %377, label %385

377:                                              ; preds = %373
  %378 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %363, i1 noundef zeroext true)
  br i1 %378, label %379, label %._crit_edge449

._crit_edge449:                                   ; preds = %377
  %.pre450 = load ptr, ptr %4, align 8, !tbaa !5
  br label %385

379:                                              ; preds = %377
  %380 = getelementptr inbounds i8, ptr %33, i64 1061
  %381 = load i8, ptr %380, align 1, !tbaa !130, !range !65, !noundef !66
  %382 = trunc nuw i8 %381 to i1
  %.pre451 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %382, label %383, label %385

383:                                              ; preds = %379
  %384 = getelementptr inbounds i8, ptr %.pre451, i64 130
  store i8 1, ptr %384, align 2, !tbaa !131
  br label %385

385:                                              ; preds = %._crit_edge449, %383, %379, %373, %369, %360
  %386 = phi ptr [ %.pre450, %._crit_edge449 ], [ %.pre451, %383 ], [ %.pre451, %379 ], [ %367, %373 ], [ %367, %369 ], [ %367, %360 ]
  %387 = getelementptr inbounds i8, ptr %386, i64 130
  %388 = load i8, ptr %387, align 2, !tbaa !131, !range !65, !noundef !66
  %389 = trunc nuw i8 %388 to i1
  br i1 %389, label %390, label %395

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

395:                                              ; preds = %390, %385
  %.pre452 = phi ptr [ %.pre452.pre, %390 ], [ %386, %385 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #14
  br label %398

396:                                              ; preds = %345
  %397 = getelementptr inbounds i8, ptr %353, i64 129
  store i8 0, ptr %397, align 1, !tbaa !132
  br label %398

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

406:                                              ; preds = %398
  %407 = getelementptr inbounds i8, ptr %.pre453, i64 129
  %408 = load i8, ptr %407, align 1, !tbaa !132, !range !65, !noundef !66
  %409 = trunc nuw i8 %408 to i1
  br i1 %409, label %416, label %410

410:                                              ; preds = %406
  br i1 %.0280, label %413, label %411

411:                                              ; preds = %410
  %412 = getelementptr inbounds i8, ptr %.pre453, i64 32
  store float %404, ptr %412, align 8, !tbaa !115
  br label %413

413:                                              ; preds = %411, %410
  %.0284 = phi i1 [ %50, %410 ], [ true, %411 ]
  br i1 %.0281, label %465, label %414

414:                                              ; preds = %413
  %415 = getelementptr inbounds i8, ptr %.pre453, i64 36
  store float %405, ptr %415, align 4, !tbaa !117
  br label %465

416:                                              ; preds = %406, %398
  %417 = getelementptr inbounds i8, ptr %.pre453, i64 148
  %418 = load i8, ptr %417, align 4, !tbaa !133
  %419 = icmp sgt i8 %418, 0
  br i1 %419, label %424, label %420

420:                                              ; preds = %416
  %421 = getelementptr inbounds i8, ptr %.pre453, i64 149
  %422 = load i8, ptr %421, align 1, !tbaa !134
  %423 = icmp sgt i8 %422, 0
  br i1 %423, label %.thread414, label %465

424:                                              ; preds = %416
  br i1 %.0280, label %.thread414, label %425

425:                                              ; preds = %424
  %426 = getelementptr inbounds i8, ptr %.pre453, i64 151
  %427 = load i8, ptr %426, align 1, !tbaa !135, !range !65, !noundef !66
  %428 = trunc nuw i8 %427 to i1
  br i1 %428, label %429, label %433

429:                                              ; preds = %425
  %430 = getelementptr inbounds i8, ptr %.pre453, i64 32
  %431 = load float, ptr %430, align 8, !tbaa !115
  %432 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %431, float noundef %404)
  %.pre454 = load ptr, ptr %4, align 8, !tbaa !5
  br label %433

433:                                              ; preds = %425, %429
  %434 = phi ptr [ %.pre454, %429 ], [ %.pre453, %425 ]
  %435 = phi float [ %432, %429 ], [ %404, %425 ]
  %436 = getelementptr inbounds i8, ptr %434, i64 32
  store float %435, ptr %436, align 8, !tbaa !115
  br label %.thread414

.thread414:                                       ; preds = %420, %433, %424
  %437 = phi ptr [ %.pre453, %424 ], [ %434, %433 ], [ %.pre453, %420 ]
  %.1285 = phi i1 [ %50, %424 ], [ true, %433 ], [ %50, %420 ]
  br i1 %.0281, label %459, label %438

438:                                              ; preds = %.thread414
  %439 = getelementptr inbounds i8, ptr %437, i64 149
  %440 = load i8, ptr %439, align 1, !tbaa !134
  %441 = icmp sgt i8 %440, 0
  br i1 %441, label %442, label %459

442:                                              ; preds = %438
  %443 = getelementptr inbounds i8, ptr %437, i64 151
  %444 = load i8, ptr %443, align 1, !tbaa !135, !range !65, !noundef !66
  %445 = trunc nuw i8 %444 to i1
  br i1 %445, label %446, label %452

446:                                              ; preds = %442
  %447 = getelementptr inbounds i8, ptr %437, i64 36
  %448 = load float, ptr %447, align 4, !tbaa !117
  %449 = getelementptr inbounds i8, ptr %13, i64 4
  %450 = load float, ptr %449, align 4, !tbaa !136
  %451 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %448, float noundef %450)
  %.pre455 = load ptr, ptr %4, align 8, !tbaa !5
  br label %455

452:                                              ; preds = %442
  %453 = getelementptr inbounds i8, ptr %13, i64 4
  %454 = load float, ptr %453, align 4, !tbaa !136
  br label %455

455:                                              ; preds = %452, %446
  %456 = phi ptr [ %.pre455, %446 ], [ %437, %452 ]
  %457 = phi float [ %451, %446 ], [ %454, %452 ]
  %458 = getelementptr inbounds i8, ptr %456, i64 36
  store float %457, ptr %458, align 4, !tbaa !117
  br label %459

459:                                              ; preds = %455, %438, %.thread414
  %460 = phi ptr [ %437, %.thread414 ], [ %456, %455 ], [ %437, %438 ]
  %.0287 = phi i1 [ %50, %.thread414 ], [ true, %455 ], [ %50, %438 ]
  %461 = getelementptr inbounds i8, ptr %460, i64 129
  %462 = load i8, ptr %461, align 1, !tbaa !132, !range !65, !noundef !66
  %463 = trunc nuw i8 %462 to i1
  br i1 %463, label %465, label %464

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

465:                                              ; preds = %420, %464, %459, %413, %414
  %466 = phi ptr [ %460, %459 ], [ %.pre456, %464 ], [ %.pre453, %420 ], [ %.pre453, %413 ], [ %.pre453, %414 ]
  %.1288 = phi i1 [ %.0287, %459 ], [ %.0287, %464 ], [ %50, %420 ], [ %50, %413 ], [ true, %414 ]
  %.2 = phi i1 [ %.1285, %459 ], [ %.1285, %464 ], [ %50, %420 ], [ %.0284, %413 ], [ %.0284, %414 ]
  %467 = getelementptr inbounds i8, ptr %466, i64 32
  %.sroa.043.0.copyload = load <2 x float>, ptr %467, align 8
  %468 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %466, <2 x float> %.sroa.043.0.copyload)
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = getelementptr inbounds i8, ptr %469, i64 32
  store <2 x float> %468, ptr %470, align 8
  %471 = getelementptr inbounds i8, ptr %469, i64 129
  %472 = load i8, ptr %471, align 1, !tbaa !132, !range !65, !noundef !66
  %473 = trunc nuw i8 %472 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #14
  %.not368 = xor i1 %473, true
  %brmerge369 = select i1 %.not368, i1 true, i1 %136
  br i1 %brmerge369, label %480, label %474

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

480:                                              ; preds = %465, %474
  %481 = phi ptr [ %.pre457, %474 ], [ %469, %465 ]
  %.sroa.041.0 = phi <2 x float> [ %479, %474 ], [ %468, %465 ]
  %482 = getelementptr inbounds i8, ptr %481, i64 24
  store <2 x float> %.sroa.041.0, ptr %482, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #14
  %483 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(948) %481)
  %484 = load ptr, ptr %4, align 8, !tbaa !5
  %485 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(948) %484)
  %486 = fadd float %483, %485
  br i1 %.0278.in, label %487, label %497

487:                                              ; preds = %480
  %488 = load ptr, ptr %4, align 8, !tbaa !5
  %489 = getelementptr inbounds i8, ptr %488, i64 152
  store i32 -1, ptr %489, align 8, !tbaa !137
  %brmerge370 = or i1 %.not319, %.0279.shrunk
  br i1 %brmerge370, label %497, label %490

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

497:                                              ; preds = %487, %490, %480
  br i1 %136, label %498, label %._crit_edge458

._crit_edge458:                                   ; preds = %497
  %.pre459 = load ptr, ptr %4, align 8, !tbaa !5
  br label %513

498:                                              ; preds = %497
  br i1 %134, label %.critedge2, label %499

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

.critedge2:                                       ; preds = %498, %499
  call void @__assert_fail(ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.1, i32 noundef 5488, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

503:                                              ; preds = %499
  %504 = getelementptr inbounds i8, ptr %133, i64 344
  %505 = load i32, ptr %504, align 8, !tbaa !138
  %506 = trunc i32 %505 to i16
  %507 = load ptr, ptr %4, align 8, !tbaa !5
  %508 = getelementptr inbounds i8, ptr %507, i64 138
  store i16 %506, ptr %508, align 2, !tbaa !89
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %504, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %.not319.not = xor i1 %.not319, true
  %brmerge371 = or i1 %.0279.shrunk, %.not319.not
  %brmerge372 = select i1 %brmerge371, i1 true, i1 %248
  %.pre460 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge372, label %513, label %509

509:                                              ; preds = %503
  %510 = getelementptr inbounds i8, ptr %133, i64 208
  %511 = getelementptr inbounds i8, ptr %.pre460, i64 16
  %512 = load i64, ptr %510, align 8
  store i64 %512, ptr %511, align 8
  br label %513

513:                                              ; preds = %._crit_edge458, %503, %509
  %514 = phi ptr [ %.pre459, %._crit_edge458 ], [ %.pre460, %503 ], [ %.pre460, %509 ]
  %515 = getelementptr inbounds i8, ptr %514, i64 176
  %516 = load float, ptr %515, align 8, !tbaa !139
  %517 = fcmp une float %516, 0x47EFFFFFE0000000
  br i1 %517, label %518, label %.critedge374

518:                                              ; preds = %513
  %519 = getelementptr inbounds i8, ptr %514, i64 160
  %520 = load i32, ptr %519, align 8, !tbaa !79
  %521 = icmp eq i32 %520, 0
  br i1 %521, label %522, label %.critedge374

522:                                              ; preds = %518
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #14
  %523 = getelementptr inbounds i8, ptr %514, i64 32
  %524 = getelementptr inbounds i8, ptr %514, i64 184
  %525 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %523, ptr noundef nonnull align 4 dereferenceable(8) %524)
  store <2 x float> %525, ptr %16, align 8
  %526 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %515, ptr noundef nonnull align 4 dereferenceable(8) %16)
  store <2 x float> %526, ptr %15, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %514, 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 %542

.critedge374:                                     ; preds = %513, %518
  %527 = and i32 %.1, 268435456
  %.not339 = icmp eq i32 %527, 0
  br i1 %.not339, label %532, label %528

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

532:                                              ; preds = %.critedge374
  %brmerge375 = or i1 %.not319, %.0279.shrunk
  %brmerge377 = or i1 %brmerge375, %.not358
  br i1 %brmerge377, label %537, label %533

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

537:                                              ; preds = %532
  %brmerge378 = or i1 %.not327, %.0279.shrunk
  %brmerge379 = select i1 %brmerge378, i1 true, i1 %248
  br i1 %brmerge379, label %542, label %538

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

542:                                              ; preds = %537, %528, %538, %533, %522
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #14
  %543 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %544 = extractvalue { <2 x float>, <2 x float> } %543, 0
  store <2 x float> %544, ptr %17, align 8
  %545 = getelementptr inbounds i8, ptr %17, i64 8
  %546 = extractvalue { <2 x float>, <2 x float> } %543, 1
  store <2 x float> %546, ptr %545, align 8
  %brmerge380 = select i1 %.0279.shrunk, i1 true, i1 %136
  %.pre462 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge380, label %572, label %547

547:                                              ; preds = %542
  %548 = getelementptr inbounds i8, ptr %.pre462, i64 148
  %549 = load i8, ptr %548, align 4, !tbaa !133
  %550 = icmp slt i8 %549, 1
  br i1 %550, label %551, label %.thread500

551:                                              ; preds = %547
  %552 = getelementptr inbounds i8, ptr %.pre462, i64 149
  %553 = load i8, ptr %552, align 1, !tbaa !134
  %554 = icmp slt i8 %553, 1
  br i1 %554, label %555, label %.thread500

555:                                              ; preds = %551
  %556 = getelementptr inbounds i8, ptr %33, i64 16
  %557 = load float, ptr %556, align 8, !tbaa !140
  %558 = fcmp ogt float %557, 0.000000e+00
  br i1 %558, label %559, label %.thread500

559:                                              ; preds = %555
  %560 = getelementptr inbounds i8, ptr %33, i64 20
  %561 = load float, ptr %560, align 4, !tbaa !141
  %562 = fcmp ogt float %561, 0.000000e+00
  br i1 %562, label %563, label %.thread500

563:                                              ; preds = %559
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #14
  %564 = getelementptr inbounds i8, ptr %33, i64 5612
  %565 = getelementptr inbounds i8, ptr %33, i64 5620
  %566 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %564, ptr noundef nonnull align 4 dereferenceable(8) %565)
  store <2 x float> %566, ptr %18, align 8
  %567 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRectRK6ImVec2(ptr noundef %567, ptr noundef nonnull align 4 dereferenceable(16) %17, ptr noundef nonnull align 4 dereferenceable(8) %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #14
  %.pre461 = load ptr, ptr %4, align 8, !tbaa !5
  br label %.thread500

.thread500:                                       ; preds = %555, %559, %563, %551, %547
  %.ph = phi ptr [ %.pre462, %547 ], [ %.pre462, %551 ], [ %.pre461, %563 ], [ %.pre462, %559 ], [ %.pre462, %555 ]
  %568 = getelementptr inbounds i8, ptr %.ph, i64 16
  %569 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %568)
  %570 = load ptr, ptr %4, align 8, !tbaa !5
  %571 = getelementptr inbounds i8, ptr %570, i64 16
  store <2 x float> %569, ptr %571, align 8
  br label %577

572:                                              ; preds = %542
  %573 = getelementptr inbounds i8, ptr %.pre462, i64 16
  %574 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %573)
  %575 = load ptr, ptr %4, align 8, !tbaa !5
  %576 = getelementptr inbounds i8, ptr %575, i64 16
  store <2 x float> %574, ptr %576, align 8
  br i1 %136, label %580, label %577

577:                                              ; preds = %.thread500, %572
  %578 = phi ptr [ %570, %.thread500 ], [ %575, %572 ]
  %579 = and i32 %.1, 201326592
  %or.cond382.not.not = icmp eq i32 %579, 67108864
  %. = select i1 %or.cond382.not.not, i64 5512, i64 5476
  br label %580

580:                                              ; preds = %577, %572
  %.sink507 = phi i64 [ 5504, %572 ], [ %., %577 ]
  %581 = phi ptr [ %575, %572 ], [ %578, %577 ]
  %582 = getelementptr inbounds i8, ptr %33, i64 %.sink507
  %583 = load float, ptr %582, align 4, !tbaa !107
  %584 = getelementptr inbounds i8, ptr %581, i64 64
  store float %583, ptr %584, align 8, !tbaa !142
  %585 = and i32 %.1, 4096
  %.not342 = icmp eq i32 %585, 0
  %or.cond383.not = select i1 %.0278.in, i1 %.not342, i1 false
  %brmerge408.not = and i1 %.not319, %or.cond383.not
  %586 = icmp eq i32 %247, 0
  %spec.select432 = select i1 %brmerge408.not, i1 %586, i1 %or.cond383.not
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #14
  store i32 -1, ptr %19, align 4, !tbaa !95
  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)
  %587 = getelementptr inbounds i8, ptr %33, i64 203
  %588 = load i8, ptr %587, align 1, !tbaa !143, !range !65, !noundef !66
  %589 = trunc nuw i8 %588 to i1
  %590 = select i1 %589, i32 2, i32 1
  %591 = getelementptr inbounds i8, ptr %33, i64 6416
  %592 = load float, ptr %591, align 8, !tbaa !144
  %593 = fmul float %592, 0x3FF59999A0000000
  %594 = fadd float %583, 1.000000e+00
  %595 = call float @llvm.fmuladd.f32(float %592, float 0x3FC99999A0000000, float %594)
  %596 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %593, float noundef %595)
  %597 = fptosi float %596 to i32
  %598 = sitofp i32 %597 to float
  %599 = load ptr, ptr %4, align 8, !tbaa !5
  %600 = getelementptr inbounds i8, ptr %599, i64 129
  %601 = load i8, ptr %600, align 1, !tbaa !132, !range !65, !noundef !66
  %602 = trunc nuw i8 %601 to i1
  br i1 %602, label %605, label %603

603:                                              ; preds = %580
  %604 = call noundef zeroext i1 @_ZN5ImGuiL18UpdateManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(ptr noundef nonnull %599, ptr noundef nonnull align 4 dereferenceable(8) %13, ptr noundef nonnull %19, i32 noundef %590, ptr noundef nonnull %20)
  %spec.select385 = or i1 %604, %.1288
  %spec.select386 = or i1 %604, %.2
  %.pre463 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre463, i64 129
  %.pre464 = load i8, ptr %.phi.trans.insert, align 1, !tbaa !132, !range !65
  br label %605

605:                                              ; preds = %603, %580
  %606 = phi i8 [ %601, %580 ], [ %.pre464, %603 ]
  %607 = phi ptr [ %599, %580 ], [ %.pre463, %603 ]
  %.2289 = phi i1 [ %.1288, %580 ], [ %spec.select385, %603 ]
  %.3 = phi i1 [ %.2, %580 ], [ %spec.select386, %603 ]
  %608 = load i32, ptr %19, align 4, !tbaa !95
  %609 = trunc i32 %608 to i8
  %610 = getelementptr inbounds i8, ptr %607, i64 135
  store i8 %609, ptr %610, align 1, !tbaa !145
  %611 = trunc nuw i8 %606 to i1
  br i1 %611, label %702, label %612

612:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #14
  %613 = getelementptr inbounds i8, ptr %607, i64 32
  %614 = load float, ptr %613, align 8, !tbaa !115
  %615 = getelementptr inbounds i8, ptr %607, i64 36
  %616 = load float, ptr %615, align 4, !tbaa !117
  %617 = fsub float %616, %486
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef %614, float noundef %617)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #14
  %618 = load ptr, ptr %4, align 8, !tbaa !5
  %619 = getelementptr inbounds i8, ptr %618, i64 512
  %620 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %619)
  store <2 x float> %620, ptr %22, align 8
  %621 = load ptr, ptr %4, align 8, !tbaa !5
  %622 = getelementptr inbounds i8, ptr %621, i64 116
  %623 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %22, ptr noundef nonnull align 4 dereferenceable(8) %622)
  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 %624, label %625

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

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

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

638:                                              ; preds = %631
  %639 = getelementptr inbounds i8, ptr %23, i64 4
  %640 = load float, ptr %639, align 4, !tbaa !136
  %641 = fcmp ogt float %640, %636
  %642 = and i32 %.1, 8
  %.not344 = icmp eq i32 %642, 0
  %643 = select i1 %641, i1 %.not344, i1 false
  %644 = load ptr, ptr %4, align 8, !tbaa !5
  %645 = getelementptr inbounds i8, ptr %644, i64 125
  %646 = zext i1 %643 to i8
  store i8 %646, ptr %645, align 1, !tbaa !146
  %647 = and i32 %.1, 32768
  %.not345 = icmp eq i32 %647, 0
  br i1 %.not345, label %653, label %.thread420

.thread415:                                       ; preds = %631
  %648 = load ptr, ptr %4, align 8, !tbaa !5
  %649 = getelementptr inbounds i8, ptr %648, i64 125
  store i8 1, ptr %649, align 1, !tbaa !146
  %650 = and i32 %.1, 32768
  %.not345416 = icmp eq i32 %650, 0
  br i1 %.not345416, label %.thread417, label %.thread420.thread

.thread420.thread:                                ; preds = %.thread415
  %651 = getelementptr inbounds i8, ptr %648, i64 124
  store i8 1, ptr %651, align 4, !tbaa !147
  br label %.thread505

.thread417:                                       ; preds = %.thread415
  %652 = load float, ptr %23, align 8, !tbaa !148
  %.pre495 = and i32 %.1, 8
  br label %655

653:                                              ; preds = %638
  %654 = load float, ptr %23, align 8, !tbaa !148
  br i1 %643, label %655, label %661

655:                                              ; preds = %.thread417, %653
  %.pre493.pre-phi = phi i32 [ %.pre495, %.thread417 ], [ 0, %653 ]
  %656 = phi float [ %652, %.thread417 ], [ %654, %653 ]
  %657 = phi ptr [ %648, %.thread417 ], [ %644, %653 ]
  %658 = phi ptr [ %649, %.thread417 ], [ %645, %653 ]
  %659 = getelementptr inbounds i8, ptr %33, i64 5568
  %660 = load float, ptr %659, align 4, !tbaa !149
  br label %661

661:                                              ; preds = %653, %655
  %.pre-phi = phi i32 [ %642, %653 ], [ %.pre493.pre-phi, %655 ]
  %662 = phi i8 [ 0, %653 ], [ 1, %655 ]
  %663 = phi float [ %654, %653 ], [ %656, %655 ]
  %664 = phi i1 [ false, %653 ], [ true, %655 ]
  %665 = phi ptr [ %644, %653 ], [ %657, %655 ]
  %666 = phi ptr [ %645, %653 ], [ %658, %655 ]
  %667 = phi float [ 0.000000e+00, %653 ], [ %660, %655 ]
  %668 = fsub float %633, %667
  %669 = fcmp ogt float %663, %668
  %.not346 = icmp eq i32 %.pre-phi, 0
  %or.cond387 = select i1 %669, i1 %.not346, i1 false
  br i1 %or.cond387, label %672, label %.thread421

.thread421:                                       ; preds = %661
  %670 = getelementptr inbounds i8, ptr %665, i64 124
  store i8 0, ptr %670, align 4, !tbaa !147
  br label %684

.thread420:                                       ; preds = %638
  %671 = getelementptr inbounds i8, ptr %644, i64 124
  store i8 1, ptr %671, align 4, !tbaa !147
  br i1 %643, label %.thread505, label %676

672:                                              ; preds = %661
  %673 = and i32 %.1, 2048
  %.not436 = icmp eq i32 %673, 0
  %674 = getelementptr inbounds i8, ptr %665, i64 124
  %.lobit = lshr exact i32 %673, 11
  %675 = trunc nuw nsw i32 %.lobit to i8
  store i8 %675, ptr %674, align 4, !tbaa !147
  %brmerge434 = or i1 %.not436, %664
  %not..not436 = xor i1 %.not436, true
  br i1 %brmerge434, label %684, label %._crit_edge465

._crit_edge465:                                   ; preds = %672
  %.phi.trans.insert466 = getelementptr inbounds i8, ptr %23, i64 4
  %.pre467 = load float, ptr %.phi.trans.insert466, align 4, !tbaa !136
  br label %676

676:                                              ; preds = %._crit_edge465, %.thread420
  %.pre-phi494 = phi i32 [ 0, %._crit_edge465 ], [ %642, %.thread420 ]
  %677 = phi float [ %.pre467, %._crit_edge465 ], [ %640, %.thread420 ]
  %678 = phi ptr [ %666, %._crit_edge465 ], [ %645, %.thread420 ]
  %679 = fcmp ogt float %677, %636
  %.not347 = icmp eq i32 %.pre-phi494, 0
  %680 = select i1 %679, i1 %.not347, i1 false
  %681 = zext i1 %680 to i8
  store i8 %681, ptr %678, align 1, !tbaa !146
  br label %684

.thread505:                                       ; preds = %.thread420.thread, %.thread420
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #14
  %682 = getelementptr inbounds i8, ptr %33, i64 5568
  %683 = load float, ptr %682, align 4, !tbaa !149
  br label %692

684:                                              ; preds = %672, %.thread421, %676
  %685 = phi i8 [ %681, %676 ], [ %662, %672 ], [ %662, %.thread421 ]
  %686 = phi i1 [ true, %676 ], [ %not..not436, %672 ], [ false, %.thread421 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #14
  %687 = trunc nuw i8 %685 to i1
  br i1 %687, label %688, label %691

688:                                              ; preds = %684
  %689 = getelementptr inbounds i8, ptr %33, i64 5568
  %690 = load float, ptr %689, align 4, !tbaa !149
  br i1 %686, label %692, label %696

691:                                              ; preds = %684
  br i1 %686, label %692, label %696

692:                                              ; preds = %.thread505, %688, %691
  %693 = phi float [ %690, %688 ], [ 0.000000e+00, %691 ], [ %683, %.thread505 ]
  %694 = getelementptr inbounds i8, ptr %33, i64 5568
  %695 = load float, ptr %694, align 4, !tbaa !149
  br label %696

696:                                              ; preds = %688, %691, %692
  %697 = phi float [ %693, %692 ], [ 0.000000e+00, %691 ], [ %690, %688 ]
  %698 = phi float [ %695, %692 ], [ 0.000000e+00, %691 ], [ 0.000000e+00, %688 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %25, float noundef %697, float noundef %698)
  %699 = load ptr, ptr %4, align 8, !tbaa !5
  %700 = getelementptr inbounds i8, ptr %699, i64 116
  %701 = load i64, ptr %25, align 8
  store i64 %701, ptr %700, 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 %702

702:                                              ; preds = %696, %605
  %703 = phi ptr [ %699, %696 ], [ %607, %605 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #14
  %704 = and i32 %.1, 83886080
  %brmerge390.demorgan = icmp ne i32 %704, 16777216
  %705 = getelementptr inbounds i8, ptr %133, i64 560
  %706 = or i1 %brmerge390.demorgan, %248
  %707 = select i1 %706, ptr %17, ptr %705
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull align 4 dereferenceable(16) %707, i64 16, i1 false), !tbaa.struct !106
  %708 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(948) %703)
  %709 = extractvalue { <2 x float>, <2 x float> } %708, 0
  %710 = extractvalue { <2 x float>, <2 x float> } %708, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #14
  %711 = load ptr, ptr %4, align 8, !tbaa !5
  %712 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(948) %711)
  %713 = extractvalue { <2 x float>, <2 x float> } %712, 0
  store <2 x float> %713, ptr %27, align 8
  %714 = getelementptr inbounds i8, ptr %27, i64 8
  %715 = extractvalue { <2 x float>, <2 x float> } %712, 1
  store <2 x float> %715, ptr %714, align 8
  %716 = load ptr, ptr %4, align 8, !tbaa !5
  %717 = getelementptr inbounds i8, ptr %716, i64 496
  store <2 x float> %709, ptr %717, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %716, i64 504
  store <2 x float> %710, ptr %.sroa.4.0..sroa_idx, align 8
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %717, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %718 = load ptr, ptr %4, align 8
  %719 = getelementptr inbounds i8, ptr %718, i64 16
  %720 = getelementptr inbounds i8, ptr %718, i64 512
  %721 = getelementptr inbounds i8, ptr %718, i64 516
  %722 = getelementptr inbounds i8, ptr %718, i64 24
  %723 = getelementptr inbounds i8, ptr %718, i64 116
  %724 = getelementptr inbounds i8, ptr %718, i64 520
  %725 = load <2 x float>, ptr %719, align 8, !tbaa !107
  %726 = extractelement <2 x float> %725, i64 0
  store float %726, ptr %720, align 8, !tbaa !150
  %727 = extractelement <2 x float> %725, i64 1
  %728 = fadd float %486, %727
  store float %728, ptr %721, align 4, !tbaa !151
  %729 = load <2 x float>, ptr %722, align 8, !tbaa !107
  %730 = fadd <2 x float> %725, %729
  %731 = load <2 x float>, ptr %723, align 4, !tbaa !107
  %732 = fsub <2 x float> %730, %731
  store <2 x float> %732, ptr %724, align 8, !tbaa !107
  %733 = and i32 %.1, 1025
  %brmerge392.not = icmp eq i32 %733, 1
  %734 = getelementptr inbounds i8, ptr %33, i64 5532
  %735 = getelementptr inbounds i8, ptr %718, i64 68
  %.in349 = select i1 %brmerge392.not, ptr %735, ptr %734
  %736 = load float, ptr %.in349, align 4, !tbaa !107
  %737 = fadd float %726, 5.000000e-01
  %738 = getelementptr inbounds i8, ptr %718, i64 56
  %739 = load float, ptr %738, align 8, !tbaa !152
  %740 = fmul float %739, 5.000000e-01
  %741 = call noundef float @_ZL7ImFloorf(float noundef %740)
  %742 = load ptr, ptr %4, align 8, !tbaa !5
  %743 = getelementptr inbounds i8, ptr %742, i64 68
  %744 = load float, ptr %743, align 4, !tbaa !119
  %745 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %741, float noundef %744)
  %746 = fadd float %737, %745
  %747 = call noundef float @_ZL7ImFloorf(float noundef %746)
  %748 = load ptr, ptr %4, align 8, !tbaa !5
  %749 = getelementptr inbounds i8, ptr %748, i64 528
  store float %747, ptr %749, align 8, !tbaa !153
  %750 = getelementptr inbounds i8, ptr %748, i64 516
  %751 = load float, ptr %750, align 4, !tbaa !151
  %752 = fadd float %751, 5.000000e-01
  %753 = fadd float %736, %752
  %754 = call noundef float @_ZL7ImFloorf(float noundef %753)
  %755 = load ptr, ptr %4, align 8, !tbaa !5
  %756 = getelementptr inbounds i8, ptr %755, i64 532
  store float %754, ptr %756, align 4, !tbaa !154
  %757 = getelementptr inbounds i8, ptr %755, i64 520
  %758 = load float, ptr %757, align 8, !tbaa !155
  %759 = fadd float %758, 5.000000e-01
  %760 = getelementptr inbounds i8, ptr %755, i64 56
  %761 = load float, ptr %760, align 8, !tbaa !152
  %762 = fmul float %761, 5.000000e-01
  %763 = call noundef float @_ZL7ImFloorf(float noundef %762)
  %764 = load ptr, ptr %4, align 8, !tbaa !5
  %765 = getelementptr inbounds i8, ptr %764, i64 68
  %766 = load float, ptr %765, align 4, !tbaa !119
  %767 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %763, float noundef %766)
  %768 = fsub float %759, %767
  %769 = call noundef float @_ZL7ImFloorf(float noundef %768)
  %770 = load ptr, ptr %4, align 8, !tbaa !5
  %771 = getelementptr inbounds i8, ptr %770, i64 536
  store float %769, ptr %771, align 8, !tbaa !156
  %772 = getelementptr inbounds i8, ptr %770, i64 524
  %773 = load float, ptr %772, align 4, !tbaa !157
  %774 = fadd float %773, 5.000000e-01
  %775 = getelementptr inbounds i8, ptr %770, i64 68
  %776 = load float, ptr %775, align 4, !tbaa !119
  %777 = fsub float %774, %776
  %778 = call noundef float @_ZL7ImFloorf(float noundef %777)
  %779 = load ptr, ptr %4, align 8, !tbaa !5
  %780 = getelementptr inbounds i8, ptr %779, i64 540
  store float %778, ptr %780, align 4, !tbaa !158
  %781 = getelementptr inbounds i8, ptr %779, i64 528
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %781, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %782 = load ptr, ptr %4, align 8, !tbaa !5
  %783 = getelementptr inbounds i8, ptr %782, i64 24
  %784 = load float, ptr %783, align 8, !tbaa !116
  %785 = fcmp ule float %784, 0.000000e+00
  %.not327.not = xor i1 %.not327, true
  %brmerge394 = select i1 %785, i1 true, i1 %.not327.not
  %brmerge395 = or i1 %.not338, %brmerge394
  br i1 %brmerge395, label %788, label %786

786:                                              ; preds = %702
  %787 = fmul float %784, 0x3FE4CCCCC0000000
  br label %791

788:                                              ; preds = %702
  %789 = load float, ptr %591, align 8, !tbaa !144
  %790 = fmul float %789, 1.600000e+01
  br label %791

791:                                              ; preds = %788, %786
  %.sink511 = phi float [ %790, %788 ], [ %787, %786 ]
  %792 = call noundef float @_ZL7ImFloorf(float noundef %.sink511)
  %.sink510 = load ptr, ptr %4, align 8, !tbaa !5
  %793 = getelementptr inbounds i8, ptr %.sink510, i64 600
  store float %792, ptr %793, align 8, !tbaa !159
  %794 = getelementptr inbounds i8, ptr %.sink510, i64 40
  %795 = load float, ptr %794, align 8, !tbaa !160
  %796 = getelementptr inbounds i8, ptr %.sink510, i64 56
  %797 = load float, ptr %796, align 8, !tbaa !152
  %798 = call float @llvm.fmuladd.f32(float %797, float 2.000000e+00, float %795)
  %799 = getelementptr inbounds i8, ptr %.sink510, i64 512
  %800 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %799)
  %801 = fsub float %798, %800
  %802 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %801)
  %803 = load ptr, ptr %4, align 8, !tbaa !5
  %804 = getelementptr inbounds i8, ptr %803, i64 92
  store float %802, ptr %804, align 4, !tbaa !161
  %805 = getelementptr inbounds i8, ptr %803, i64 44
  %806 = load float, ptr %805, align 4, !tbaa !162
  %807 = getelementptr inbounds i8, ptr %803, i64 60
  %808 = load float, ptr %807, align 4, !tbaa !163
  %809 = call float @llvm.fmuladd.f32(float %808, float 2.000000e+00, float %806)
  %810 = getelementptr inbounds i8, ptr %803, i64 512
  %811 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %810)
  %812 = fsub float %809, %811
  %813 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %812)
  %814 = load ptr, ptr %4, align 8, !tbaa !5
  %815 = getelementptr inbounds i8, ptr %814, i64 96
  store float %813, ptr %815, align 4, !tbaa !164
  %816 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef %814, i1 noundef zeroext true)
  %817 = load ptr, ptr %4, align 8, !tbaa !5
  %818 = getelementptr inbounds i8, ptr %817, i64 84
  store <2 x float> %816, ptr %818, 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)
  %819 = load ptr, ptr %4, align 8, !tbaa !5
  %820 = getelementptr inbounds i8, ptr %819, i64 100
  %821 = load i64, ptr %28, align 8
  store i64 %821, ptr %820, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #14
  %822 = getelementptr inbounds i8, ptr %819, i64 680
  %823 = load ptr, ptr %822, align 8, !tbaa !165
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168) %823)
  %824 = load ptr, ptr %4, align 8, !tbaa !5
  %825 = getelementptr inbounds i8, ptr %824, i64 680
  %826 = load ptr, ptr %825, align 8, !tbaa !165
  %827 = getelementptr inbounds i8, ptr %33, i64 6408
  %828 = load ptr, ptr %827, align 8, !tbaa !166
  %829 = getelementptr inbounds i8, ptr %828, i64 72
  %830 = load ptr, ptr %829, align 8, !tbaa !167
  %831 = getelementptr inbounds i8, ptr %830, i64 8
  %832 = load ptr, ptr %831, align 8, !tbaa !168
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %826, ptr noundef %832)
  %833 = 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) %833, i1 noundef zeroext false)
  %834 = and i32 %.1, 134217728
  %.not350 = icmp eq i32 %834, 0
  br i1 %.not350, label %844, label %835

835:                                              ; preds = %791
  %836 = load ptr, ptr %4, align 8, !tbaa !5
  %837 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  %838 = icmp eq ptr %836, %837
  br i1 %838, label %839, label %844

839:                                              ; preds = %835
  %840 = load ptr, ptr %4, align 8, !tbaa !5
  %841 = getelementptr inbounds i8, ptr %840, i64 160
  %842 = load i32, ptr %841, align 8, !tbaa !79
  %843 = icmp slt i32 %842, 1
  br label %844

844:                                              ; preds = %839, %835, %791
  %845 = phi i1 [ false, %835 ], [ false, %791 ], [ %843, %839 ]
  %846 = getelementptr inbounds i8, ptr %33, i64 7120
  %847 = load ptr, ptr %846, align 8, !tbaa !172
  %.not351 = icmp eq ptr %847, null
  br i1 %.not351, label %853, label %848

848:                                              ; preds = %844
  %849 = load ptr, ptr %4, align 8, !tbaa !5
  %850 = getelementptr inbounds i8, ptr %847, i64 864
  %851 = load ptr, ptr %850, align 8, !tbaa !173
  %852 = icmp eq ptr %849, %851
  br label %853

853:                                              ; preds = %848, %844
  %854 = phi i1 [ false, %844 ], [ %852, %848 ]
  %brmerge396 = select i1 %845, i1 true, i1 %854
  br i1 %brmerge396, label %855, label %862

855:                                              ; preds = %853
  %.mux = select i1 %845, i32 47, i32 46
  %856 = getelementptr inbounds i8, ptr %33, i64 7480
  %857 = load float, ptr %856, align 8, !tbaa !174
  %858 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %.mux, float noundef %857)
  %859 = load ptr, ptr %4, align 8, !tbaa !5
  %860 = getelementptr inbounds i8, ptr %859, i64 680
  %861 = load ptr, ptr %860, align 8, !tbaa !165
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %861, ptr noundef nonnull align 4 dereferenceable(8) %17, ptr noundef nonnull align 4 dereferenceable(8) %545, i32 noundef %858, float noundef 0.000000e+00, i32 noundef 15)
  br label %862

862:                                              ; preds = %853, %855
  br i1 %854, label %863, label %885

863:                                              ; preds = %862
  %864 = load ptr, ptr %4, align 8, !tbaa !5
  %865 = load ptr, ptr %846, align 8, !tbaa !172
  %866 = icmp eq ptr %864, %865
  br i1 %866, label %867, label %885

867:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #14
  %868 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(948) %864)
  %869 = extractvalue { <2 x float>, <2 x float> } %868, 0
  store <2 x float> %869, ptr %29, align 8
  %870 = getelementptr inbounds i8, ptr %29, i64 8
  %871 = extractvalue { <2 x float>, <2 x float> } %868, 1
  store <2 x float> %871, ptr %870, align 8
  %872 = load float, ptr %591, align 8, !tbaa !144
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %29, float noundef %872)
  %873 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %29, ptr noundef nonnull align 4 dereferenceable(16) %17)
  br i1 %873, label %884, label %874

874:                                              ; preds = %867
  %875 = load ptr, ptr %4, align 8, !tbaa !5
  %876 = getelementptr inbounds i8, ptr %875, i64 680
  %877 = load ptr, ptr %876, align 8, !tbaa !165
  %878 = getelementptr inbounds i8, ptr %33, i64 7140
  %879 = load float, ptr %878, align 4, !tbaa !175
  %880 = fmul float %879, 2.500000e-01
  %881 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %880)
  %882 = getelementptr inbounds i8, ptr %33, i64 5476
  %883 = load float, ptr %882, align 4, !tbaa !176
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %877, ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %870, i32 noundef %881, float noundef %883, i32 noundef 15)
  br label %884

884:                                              ; preds = %874, %867
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #14
  br label %885

885:                                              ; preds = %884, %863, %862
  br i1 %706, label %.thread423, label %886

886:                                              ; preds = %885
  %887 = load ptr, ptr %4, align 8, !tbaa !5
  %888 = getelementptr inbounds i8, ptr %887, i64 680
  %889 = load ptr, ptr %888, align 8, !tbaa !165
  %890 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %889)
  %891 = load i32, ptr %890, align 8, !tbaa !177
  %892 = icmp eq i32 %891, 0
  br i1 %892, label %893, label %.thread423

893:                                              ; preds = %886
  %894 = getelementptr inbounds i8, ptr %133, i64 680
  %895 = load ptr, ptr %894, align 8, !tbaa !165
  %896 = getelementptr inbounds i8, ptr %895, i64 32
  %897 = load i32, ptr %896, align 8, !tbaa !179
  %898 = icmp sgt i32 %897, 0
  br i1 %898, label %899, label %.thread423

899:                                              ; preds = %893
  %900 = load ptr, ptr %4, align 8, !tbaa !5
  %901 = getelementptr inbounds i8, ptr %900, i64 680
  store ptr %895, ptr %901, align 8, !tbaa !165
  br label %.thread423

.thread423:                                       ; preds = %885, %886, %899, %893
  %.0286425 = phi i1 [ true, %899 ], [ false, %893 ], [ false, %886 ], [ false, %885 ]
  %902 = getelementptr inbounds i8, ptr %33, i64 7112
  %903 = load ptr, ptr %902, align 8, !tbaa !180
  %.not352 = icmp eq ptr %903, null
  br i1 %.not352, label %904, label %907

904:                                              ; preds = %.thread423
  %905 = getelementptr inbounds i8, ptr %33, i64 7040
  %906 = load ptr, ptr %905, align 8, !tbaa !181
  br label %907

907:                                              ; preds = %.thread423, %904
  %908 = phi ptr [ %906, %904 ], [ %903, %.thread423 ]
  br i1 %spec.select432, label %._crit_edge468, label %909

._crit_edge468:                                   ; preds = %907
  %.pre469 = load ptr, ptr %4, align 8, !tbaa !5
  br label %916

909:                                              ; preds = %907
  %.not353 = icmp eq ptr %908, null
  %.pre470 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not353, label %916, label %910

910:                                              ; preds = %909
  %911 = getelementptr inbounds i8, ptr %.pre470, i64 872
  %912 = load ptr, ptr %911, align 8, !tbaa !182
  %913 = getelementptr inbounds i8, ptr %908, i64 872
  %914 = load ptr, ptr %913, align 8, !tbaa !182
  %915 = icmp eq ptr %912, %914
  br label %916

916:                                              ; preds = %._crit_edge468, %909, %910
  %917 = phi ptr [ %.pre469, %._crit_edge468 ], [ %.pre470, %909 ], [ %.pre470, %910 ]
  %918 = phi i1 [ true, %._crit_edge468 ], [ false, %909 ], [ %915, %910 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef %917, ptr noundef nonnull align 4 dereferenceable(16) %27, i1 noundef zeroext %918, i32 noundef %590, ptr noundef nonnull %20, float noundef %598)
  %.pre471 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.0286425, label %919, label %922

919:                                              ; preds = %916
  %920 = getelementptr inbounds i8, ptr %.pre471, i64 688
  %921 = getelementptr inbounds i8, ptr %.pre471, i64 680
  store ptr %920, ptr %921, align 8, !tbaa !165
  br label %922

922:                                              ; preds = %919, %916
  %923 = load ptr, ptr %846, align 8, !tbaa !172
  %924 = icmp eq ptr %923, %.pre471
  br i1 %924, label %925, label %951

925:                                              ; preds = %922
  %926 = getelementptr inbounds i8, ptr %.pre471, i64 64
  %927 = load float, ptr %926, align 8, !tbaa !142
  %928 = getelementptr inbounds i8, ptr %33, i64 5476
  %929 = load float, ptr %928, align 4, !tbaa !176
  %930 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %927, float noundef %929)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #14
  %931 = load ptr, ptr %4, align 8, !tbaa !5
  %932 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(948) %931)
  %933 = extractvalue { <2 x float>, <2 x float> } %932, 0
  store <2 x float> %933, ptr %30, align 8
  %934 = getelementptr inbounds i8, ptr %30, i64 8
  %935 = extractvalue { <2 x float>, <2 x float> } %932, 1
  store <2 x float> %935, ptr %934, align 8
  %936 = load float, ptr %591, align 8, !tbaa !144
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %30, float noundef %936)
  %937 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %30, ptr noundef nonnull align 4 dereferenceable(16) %17)
  br i1 %937, label %938, label %._crit_edge472

._crit_edge472:                                   ; preds = %925
  %.pre473 = load ptr, ptr %4, align 8, !tbaa !5
  br label %944

938:                                              ; preds = %925
  %939 = load float, ptr %591, align 8, !tbaa !144
  %940 = fsub float -1.000000e+00, %939
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %30, float noundef %940)
  %941 = load ptr, ptr %4, align 8, !tbaa !5
  %942 = getelementptr inbounds i8, ptr %941, i64 64
  %943 = load float, ptr %942, align 8, !tbaa !142
  br label %944

944:                                              ; preds = %._crit_edge472, %938
  %945 = phi ptr [ %941, %938 ], [ %.pre473, %._crit_edge472 ]
  %.0282 = phi float [ %943, %938 ], [ %930, %._crit_edge472 ]
  %946 = getelementptr inbounds i8, ptr %945, i64 680
  %947 = load ptr, ptr %946, align 8, !tbaa !165
  %948 = getelementptr inbounds i8, ptr %33, i64 7140
  %949 = load float, ptr %948, align 4, !tbaa !175
  %950 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %949)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %947, ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %934, i32 noundef %950, float noundef %.0282, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #14
  %.pre474 = load ptr, ptr %4, align 8, !tbaa !5
  br label %951

951:                                              ; preds = %944, %922
  %952 = phi ptr [ %.pre474, %944 ], [ %.pre471, %922 ]
  %953 = and i32 %.1, 8
  %.not354 = icmp eq i32 %953, 0
  %954 = getelementptr inbounds i8, ptr %952, i64 48
  %955 = load float, ptr %954, align 8, !tbaa !183
  %956 = fcmp une float %955, 0.000000e+00
  br i1 %956, label %975, label %957

957:                                              ; preds = %951
  %958 = and i32 %.1, 2056
  %959 = icmp eq i32 %958, 2048
  br i1 %959, label %960, label %963

960:                                              ; preds = %957
  %961 = getelementptr inbounds i8, ptr %952, i64 40
  %962 = load float, ptr %961, align 8, !tbaa !160
  br label %963

963:                                              ; preds = %957, %960
  %964 = phi float [ %962, %960 ], [ 0.000000e+00, %957 ]
  %965 = getelementptr inbounds i8, ptr %952, i64 24
  %966 = load float, ptr %965, align 8, !tbaa !116
  %967 = getelementptr inbounds i8, ptr %952, i64 56
  %968 = load float, ptr %967, align 8, !tbaa !152
  %969 = fneg float %968
  %970 = call float @llvm.fmuladd.f32(float %969, float 2.000000e+00, float %966)
  %971 = getelementptr inbounds i8, ptr %952, i64 116
  %972 = load float, ptr %971, align 4, !tbaa !184
  %973 = fsub float %970, %972
  %974 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %964, float noundef %973)
  %.pre475 = load ptr, ptr %4, align 8, !tbaa !5
  br label %975

975:                                              ; preds = %951, %963
  %976 = phi ptr [ %.pre475, %963 ], [ %952, %951 ]
  %977 = phi float [ %974, %963 ], [ %955, %951 ]
  %978 = getelementptr inbounds i8, ptr %976, i64 52
  %979 = load float, ptr %978, align 4, !tbaa !185
  %980 = fcmp une float %979, 0.000000e+00
  br i1 %980, label %998, label %981

981:                                              ; preds = %975
  br i1 %.not354, label %982, label %985

982:                                              ; preds = %981
  %983 = getelementptr inbounds i8, ptr %976, i64 44
  %984 = load float, ptr %983, align 4, !tbaa !162
  br label %985

985:                                              ; preds = %981, %982
  %986 = phi float [ %984, %982 ], [ 0.000000e+00, %981 ]
  %987 = getelementptr inbounds i8, ptr %976, i64 28
  %988 = load float, ptr %987, align 4, !tbaa !118
  %989 = getelementptr inbounds i8, ptr %976, i64 60
  %990 = load float, ptr %989, align 4, !tbaa !163
  %991 = fneg float %990
  %992 = call float @llvm.fmuladd.f32(float %991, float 2.000000e+00, float %988)
  %993 = fsub float %992, %486
  %994 = getelementptr inbounds i8, ptr %976, i64 120
  %995 = load float, ptr %994, align 4, !tbaa !186
  %996 = fsub float %993, %995
  %997 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %986, float noundef %996)
  %.pre476 = load ptr, ptr %4, align 8, !tbaa !5
  br label %998

998:                                              ; preds = %975, %985
  %999 = phi ptr [ %.pre476, %985 ], [ %976, %975 ]
  %1000 = phi float [ %997, %985 ], [ %979, %975 ]
  %1001 = getelementptr inbounds i8, ptr %999, i64 512
  %1002 = load float, ptr %1001, align 8, !tbaa !150
  %1003 = getelementptr inbounds i8, ptr %999, i64 84
  %1004 = load float, ptr %1003, align 4, !tbaa !187
  %1005 = fsub float %1002, %1004
  %1006 = getelementptr inbounds i8, ptr %999, i64 56
  %1007 = load float, ptr %1006, align 8, !tbaa !152
  %1008 = getelementptr inbounds i8, ptr %999, i64 68
  %1009 = load float, ptr %1008, align 4, !tbaa !119
  %1010 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1007, float noundef %1009)
  %1011 = fadd float %1005, %1010
  %1012 = call noundef float @_ZL7ImFloorf(float noundef %1011)
  %1013 = load ptr, ptr %4, align 8, !tbaa !5
  %1014 = getelementptr inbounds i8, ptr %1013, i64 544
  store float %1012, ptr %1014, align 8, !tbaa !188
  %1015 = getelementptr inbounds i8, ptr %1013, i64 516
  %1016 = load float, ptr %1015, align 4, !tbaa !151
  %1017 = getelementptr inbounds i8, ptr %1013, i64 88
  %1018 = load float, ptr %1017, align 4, !tbaa !189
  %1019 = fsub float %1016, %1018
  %1020 = getelementptr inbounds i8, ptr %1013, i64 60
  %1021 = load float, ptr %1020, align 4, !tbaa !163
  %1022 = getelementptr inbounds i8, ptr %1013, i64 68
  %1023 = load float, ptr %1022, align 4, !tbaa !119
  %1024 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1021, float noundef %1023)
  %1025 = fadd float %1019, %1024
  %1026 = call noundef float @_ZL7ImFloorf(float noundef %1025)
  %1027 = load ptr, ptr %4, align 8, !tbaa !5
  %1028 = getelementptr inbounds i8, ptr %1027, i64 548
  store float %1026, ptr %1028, align 4, !tbaa !190
  %1029 = getelementptr inbounds i8, ptr %1027, i64 544
  %1030 = load float, ptr %1029, align 8, !tbaa !188
  %1031 = getelementptr inbounds i8, ptr %1027, i64 552
  %1032 = insertelement <2 x float> poison, float %977, i64 0
  %1033 = insertelement <2 x float> %1032, float %1000, i64 1
  %1034 = insertelement <2 x float> poison, float %1030, i64 0
  %1035 = insertelement <2 x float> %1034, float %1026, i64 1
  %1036 = fadd <2 x float> %1033, %1035
  store <2 x float> %1036, ptr %1031, align 8, !tbaa !107
  %1037 = getelementptr inbounds i8, ptr %1027, i64 16
  %1038 = load float, ptr %1037, align 8, !tbaa !191
  %1039 = getelementptr inbounds i8, ptr %1027, i64 84
  %1040 = load float, ptr %1039, align 4, !tbaa !187
  %1041 = fsub float %1038, %1040
  %1042 = getelementptr inbounds i8, ptr %1027, i64 56
  %1043 = load float, ptr %1042, align 8, !tbaa !152
  %1044 = fadd float %1041, %1043
  %1045 = getelementptr inbounds i8, ptr %1027, i64 576
  store float %1044, ptr %1045, align 8, !tbaa !192
  %1046 = getelementptr inbounds i8, ptr %1027, i64 20
  %1047 = load float, ptr %1046, align 4, !tbaa !193
  %1048 = getelementptr inbounds i8, ptr %1027, i64 88
  %1049 = load float, ptr %1048, align 4, !tbaa !189
  %1050 = fsub float %1047, %1049
  %1051 = getelementptr inbounds i8, ptr %1027, i64 60
  %1052 = load float, ptr %1051, align 4, !tbaa !163
  %1053 = fadd float %1050, %1052
  %1054 = fadd float %486, %1053
  %1055 = getelementptr inbounds i8, ptr %1027, i64 580
  store float %1054, ptr %1055, align 4, !tbaa !194
  %1056 = getelementptr inbounds i8, ptr %1027, i64 48
  %1057 = load float, ptr %1056, align 8, !tbaa !183
  %1058 = fcmp une float %1057, 0.000000e+00
  br i1 %1058, label %1067, label %1059

1059:                                             ; preds = %998
  %1060 = getelementptr inbounds i8, ptr %1027, i64 24
  %1061 = load float, ptr %1060, align 8, !tbaa !116
  %1062 = fneg float %1043
  %1063 = call float @llvm.fmuladd.f32(float %1062, float 2.000000e+00, float %1061)
  %1064 = getelementptr inbounds i8, ptr %1027, i64 116
  %1065 = load float, ptr %1064, align 4, !tbaa !184
  %1066 = fsub float %1063, %1065
  br label %1067

1067:                                             ; preds = %998, %1059
  %1068 = phi float [ %1066, %1059 ], [ %1057, %998 ]
  %1069 = fadd float %1044, %1068
  %1070 = getelementptr inbounds i8, ptr %1027, i64 584
  store float %1069, ptr %1070, align 8, !tbaa !195
  %1071 = getelementptr inbounds i8, ptr %1027, i64 52
  %1072 = load float, ptr %1071, align 4, !tbaa !185
  %1073 = fcmp une float %1072, 0.000000e+00
  br i1 %1073, label %1083, label %1074

1074:                                             ; preds = %1067
  %1075 = getelementptr inbounds i8, ptr %1027, i64 28
  %1076 = load float, ptr %1075, align 4, !tbaa !118
  %1077 = fneg float %1052
  %1078 = call float @llvm.fmuladd.f32(float %1077, float 2.000000e+00, float %1076)
  %1079 = fsub float %1078, %486
  %1080 = getelementptr inbounds i8, ptr %1027, i64 120
  %1081 = load float, ptr %1080, align 4, !tbaa !186
  %1082 = fsub float %1079, %1081
  br label %1083

1083:                                             ; preds = %1067, %1074
  %1084 = phi float [ %1082, %1074 ], [ %1072, %1067 ]
  %1085 = fadd float %1054, %1084
  %1086 = getelementptr inbounds i8, ptr %1027, i64 588
  store float %1085, ptr %1086, align 4, !tbaa !196
  %1087 = fadd float %1043, 0.000000e+00
  %1088 = fsub float %1087, %1040
  %1089 = getelementptr inbounds i8, ptr %1027, i64 476
  store float %1088, ptr %1089, align 4, !tbaa !197
  %1090 = getelementptr inbounds i8, ptr %1027, i64 480
  store <2 x float> zeroinitializer, ptr %1090, align 8, !tbaa !107
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  %1091 = fadd float %486, %1052
  %1092 = fsub float %1091, %1049
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef %1088, float noundef %1092)
  %1093 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1037, ptr noundef nonnull align 4 dereferenceable(8) %31)
  %1094 = load ptr, ptr %4, align 8, !tbaa !5
  %1095 = getelementptr inbounds i8, ptr %1094, i64 224
  store <2 x float> %1093, ptr %1095, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  %1096 = getelementptr inbounds i8, ptr %1094, i64 208
  store <2 x float> %1093, ptr %1096, align 8
  %1097 = getelementptr inbounds i8, ptr %1094, i64 216
  store <2 x float> %1093, ptr %1097, align 8
  %1098 = getelementptr inbounds i8, ptr %1094, i64 232
  store <2 x float> %1093, ptr %1098, 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)
  %1099 = load ptr, ptr %4, align 8, !tbaa !5
  %1100 = getelementptr inbounds i8, ptr %1099, i64 248
  %1101 = load i64, ptr %32, align 8
  store i64 %1101, ptr %1100, align 8
  %1102 = getelementptr inbounds i8, ptr %1099, i64 240
  store i64 %1101, ptr %1102, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  %1103 = getelementptr inbounds i8, ptr %1099, i64 256
  store <2 x float> zeroinitializer, ptr %1103, align 8, !tbaa !107
  %1104 = getelementptr inbounds i8, ptr %1099, i64 328
  store i8 0, ptr %1104, align 8, !tbaa !198
  %1105 = getelementptr inbounds i8, ptr %1099, i64 96
  %1106 = load float, ptr %1105, align 4, !tbaa !164
  %1107 = fcmp ogt float %1106, 0.000000e+00
  %1108 = getelementptr inbounds i8, ptr %1099, i64 329
  %1109 = zext i1 %1107 to i8
  store i8 %1109, ptr %1108, align 1, !tbaa !199
  %1110 = getelementptr inbounds i8, ptr %1099, i64 324
  %1111 = load i32, ptr %1110, align 4, !tbaa !200
  %1112 = getelementptr inbounds i8, ptr %1099, i64 320
  store i32 %1111, ptr %1112, align 8, !tbaa !201
  store i32 0, ptr %1110, align 4, !tbaa !200
  %1113 = getelementptr inbounds i8, ptr %1099, i64 330
  store i8 0, ptr %1113, align 2, !tbaa !202
  %1114 = getelementptr inbounds i8, ptr %1099, i64 344
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1114, i32 noundef 0)
  %1115 = load ptr, ptr %4, align 8, !tbaa !5
  %1116 = getelementptr inbounds i8, ptr %1115, i64 368
  store i32 1, ptr %1116, align 8, !tbaa !203
  br i1 %134, label %.critedge403, label %1117

1117:                                             ; preds = %1083
  %1118 = getelementptr inbounds i8, ptr %133, i64 368
  %1119 = load i32, ptr %1118, align 8, !tbaa !203
  %1120 = getelementptr inbounds i8, ptr %133, i64 384
  %1121 = load i32, ptr %1120, align 8, !tbaa !204
  br label %.critedge403

.critedge403:                                     ; preds = %1083, %1117
  %.sink = phi i32 [ %1119, %1117 ], [ 1, %1083 ]
  %1122 = phi i32 [ %1121, %1117 ], [ 0, %1083 ]
  %1123 = getelementptr inbounds i8, ptr %1115, i64 372
  store i32 %.sink, ptr %1123, align 4
  %1124 = getelementptr inbounds i8, ptr %1115, i64 380
  store i32 -1, ptr %1124, align 4
  %1125 = getelementptr inbounds i8, ptr %1115, i64 376
  store i32 -1, ptr %1125, align 8
  %1126 = getelementptr inbounds i8, ptr %1115, i64 384
  store i32 %1122, ptr %1126, align 8, !tbaa !204
  %1127 = getelementptr inbounds i8, ptr %1115, i64 600
  %1128 = load float, ptr %1127, align 8, !tbaa !159
  %1129 = getelementptr inbounds i8, ptr %1115, i64 388
  store float %1128, ptr %1129, align 4, !tbaa !205
  %1130 = getelementptr inbounds i8, ptr %1115, i64 392
  store float -1.000000e+00, ptr %1130, align 8, !tbaa !206
  %1131 = getelementptr inbounds i8, ptr %1115, i64 400
  call void @_ZN8ImVectorIiE6resizeEi(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 416
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1133, i32 noundef 0)
  %1134 = load ptr, ptr %4, align 8, !tbaa !5
  %1135 = getelementptr inbounds i8, ptr %1134, i64 432
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1135, i32 noundef 0)
  %1136 = load ptr, ptr %4, align 8, !tbaa !5
  %1137 = getelementptr inbounds i8, ptr %1136, i64 488
  store ptr null, ptr %1137, align 8, !tbaa !207
  %1138 = getelementptr inbounds i8, ptr %1136, i64 264
  store i32 0, ptr %1138, align 8, !tbaa !208
  %1139 = getelementptr inbounds i8, ptr %1136, i64 268
  store i32 0, ptr %1139, align 4, !tbaa !209
  %1140 = getelementptr inbounds i8, ptr %1136, i64 640
  %1141 = getelementptr inbounds i8, ptr %1136, i64 360
  store ptr %1140, ptr %1141, align 8, !tbaa !210
  %1142 = getelementptr inbounds i8, ptr %1136, i64 448
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1142, i32 noundef 0)
  %1143 = load ptr, ptr %4, align 8, !tbaa !5
  %1144 = getelementptr inbounds i8, ptr %1143, i64 604
  %1145 = load float, ptr %347, align 4, !tbaa !122
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36) %1144, i32 noundef 3, float noundef %1145, i1 noundef zeroext %.0278.in)
  %.pre478 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %136, label %1146, label %1153

1146:                                             ; preds = %.critedge403
  %1147 = getelementptr inbounds i8, ptr %.pre478, i64 384
  %1148 = load i32, ptr %1147, align 8, !tbaa !204
  %1149 = getelementptr inbounds i8, ptr %133, i64 384
  %1150 = load i32, ptr %1149, align 8, !tbaa !204
  %.not355 = icmp eq i32 %1148, %1150
  br i1 %.not355, label %1153, label %1151

1151:                                             ; preds = %1146
  store i32 %1150, ptr %1147, align 8, !tbaa !204
  %1152 = getelementptr inbounds i8, ptr %.pre478, i64 400
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %1152, ptr noundef nonnull align 4 dereferenceable(4) %1147)
  %.pre477 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1153

1153:                                             ; preds = %1151, %1146, %.critedge403
  %1154 = phi ptr [ %.pre477, %1151 ], [ %.pre478, %1146 ], [ %.pre478, %.critedge403 ]
  %1155 = getelementptr inbounds i8, ptr %1154, i64 148
  %1156 = load i8, ptr %1155, align 4, !tbaa !133
  %1157 = icmp sgt i8 %1156, 0
  br i1 %1157, label %1158, label %1160

1158:                                             ; preds = %1153
  %1159 = add nsw i8 %1156, -1
  store i8 %1159, ptr %1155, align 4, !tbaa !133
  br label %1160

1160:                                             ; preds = %1158, %1153
  %1161 = getelementptr inbounds i8, ptr %1154, i64 149
  %1162 = load i8, ptr %1161, align 1, !tbaa !134
  %1163 = icmp sgt i8 %1162, 0
  br i1 %1163, label %1164, label %1166

1164:                                             ; preds = %1160
  %1165 = add nsw i8 %1162, -1
  store i8 %1165, ptr %1161, align 1, !tbaa !134
  br label %1166

1166:                                             ; preds = %1164, %1160
  br i1 %spec.select432, label %1167, label %1169

1167:                                             ; preds = %1166
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %1154)
  %1168 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1168, i1 noundef zeroext false)
  %.pre480.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1169

1169:                                             ; preds = %1167, %1166
  %.pre480 = phi ptr [ %.pre480.pre, %1167 ], [ %1154, %1166 ]
  br i1 %.not336, label %1170, label %1175

1170:                                             ; preds = %1169
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %.pre480, ptr noundef nonnull align 4 dereferenceable(16) %27, ptr noundef nonnull %0, ptr noundef %1)
  %.pre479 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1175

.thread426:                                       ; preds = %244
  %1171 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1171)
  %1172 = load ptr, ptr %4, align 8, !tbaa !5
  %1173 = getelementptr inbounds i8, ptr %1172, i64 528
  %1174 = getelementptr inbounds i8, ptr %1172, i64 536
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1173, ptr noundef nonnull align 4 dereferenceable(8) %1174, i1 noundef zeroext true)
  %.pre481 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1189

1175:                                             ; preds = %1170, %1169
  %1176 = phi ptr [ %.pre479, %1170 ], [ %.pre480, %1169 ]
  %1177 = getelementptr inbounds i8, ptr %1176, i64 76
  %1178 = load i32, ptr %1177, align 4, !tbaa !211
  %1179 = getelementptr inbounds i8, ptr %1176, i64 272
  store i32 %1178, ptr %1179, align 8, !tbaa !212
  %1180 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %714, i1 noundef zeroext false)
  %1181 = zext i1 %1180 to i32
  %1182 = load ptr, ptr %4, align 8, !tbaa !5
  %1183 = getelementptr inbounds i8, ptr %1182, i64 276
  store i32 %1181, ptr %1183, align 4, !tbaa !213
  %1184 = getelementptr inbounds i8, ptr %1182, i64 280
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1184, ptr noundef nonnull align 8 dereferenceable(16) %27, i64 16, i1 false), !tbaa.struct !106
  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
  %1185 = getelementptr inbounds i8, ptr %1182, i64 528
  %1186 = getelementptr inbounds i8, ptr %1182, i64 536
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1185, ptr noundef nonnull align 4 dereferenceable(8) %1186, i1 noundef zeroext true)
  %1187 = load ptr, ptr %4, align 8, !tbaa !5
  %1188 = getelementptr inbounds i8, ptr %1187, i64 128
  store i8 0, ptr %1188, align 8, !tbaa !214
  br label %1189

1189:                                             ; preds = %.thread426, %1175
  %1190 = phi ptr [ %.pre481, %.thread426 ], [ %1187, %1175 ]
  %1191 = getelementptr inbounds i8, ptr %1190, i64 136
  %1192 = load i16, ptr %1191, align 8, !tbaa !215
  %1193 = add i16 %1192, 1
  store i16 %1193, ptr %1191, align 8, !tbaa !215
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(100) %164)
  br i1 %136, label %1194, label %.critedge405

1194:                                             ; preds = %1189
  %1195 = and i32 %.1, 1
  %.not356 = icmp eq i32 %1195, 0
  br i1 %.not356, label %1196, label %1197

1196:                                             ; preds = %1194
  call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 5797, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

1197:                                             ; preds = %1194
  %1198 = and i32 %.1, 64
  %.not357 = icmp eq i32 %1198, 0
  br i1 %.not357, label %1199, label %1222

1199:                                             ; preds = %1197
  %1200 = load ptr, ptr %4, align 8, !tbaa !5
  %1201 = getelementptr inbounds i8, ptr %1200, i64 148
  %1202 = load i8, ptr %1201, align 4, !tbaa !133
  %1203 = icmp slt i8 %1202, 1
  br i1 %1203, label %1204, label %1222

1204:                                             ; preds = %1199
  %1205 = getelementptr inbounds i8, ptr %1200, i64 149
  %1206 = load i8, ptr %1205, align 1, !tbaa !134
  %1207 = icmp slt i8 %1206, 1
  br i1 %1207, label %1208, label %1222

1208:                                             ; preds = %1204
  %1209 = getelementptr inbounds i8, ptr %1200, i64 496
  %1210 = load float, ptr %1209, align 8, !tbaa !216
  %1211 = getelementptr inbounds i8, ptr %1200, i64 504
  %1212 = load float, ptr %1211, align 8, !tbaa !217
  %1213 = fcmp ult float %1210, %1212
  br i1 %1213, label %1214, label %1220

1214:                                             ; preds = %1208
  %1215 = getelementptr inbounds i8, ptr %1200, i64 500
  %1216 = load float, ptr %1215, align 4, !tbaa !218
  %1217 = getelementptr inbounds i8, ptr %1200, i64 508
  %1218 = load float, ptr %1217, align 4, !tbaa !219
  %1219 = fcmp ult float %1216, %1218
  br i1 %1219, label %1222, label %1220

1220:                                             ; preds = %1214, %1208
  %1221 = getelementptr inbounds i8, ptr %1200, i64 156
  store i32 1, ptr %1221, align 4, !tbaa !114
  br label %1222

1222:                                             ; preds = %1214, %1220, %1204, %1199, %1197
  br i1 %134, label %.critedge405, label %1223

1223:                                             ; preds = %1222
  %1224 = getelementptr inbounds i8, ptr %133, i64 129
  %1225 = load i8, ptr %1224, align 1, !tbaa !132, !range !65, !noundef !66
  %1226 = trunc nuw i8 %1225 to i1
  br i1 %1226, label %.thread428, label %1229

.thread428:                                       ; preds = %1223
  %1227 = load ptr, ptr %4, align 8, !tbaa !5
  %1228 = getelementptr inbounds i8, ptr %1227, i64 156
  store i32 1, ptr %1228, align 4, !tbaa !114
  br label %1239

1229:                                             ; preds = %1223
  %1230 = getelementptr inbounds i8, ptr %133, i64 156
  %1231 = load i32, ptr %1230, align 4, !tbaa !114
  %1232 = icmp sgt i32 %1231, 0
  br i1 %1232, label %1233, label %.thread427

1233:                                             ; preds = %1229
  %1234 = load ptr, ptr %4, align 8, !tbaa !5
  %1235 = getelementptr inbounds i8, ptr %1234, i64 156
  store i32 1, ptr %1235, align 4, !tbaa !114
  br label %.thread427

.thread427:                                       ; preds = %1229, %1233
  %1236 = getelementptr inbounds i8, ptr %133, i64 160
  %1237 = load i32, ptr %1236, align 8, !tbaa !79
  %1238 = icmp sgt i32 %1237, 0
  br i1 %1238, label %.thread427._crit_edge, label %.critedge405

.thread427._crit_edge:                            ; preds = %.thread427
  %.pre482 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1239

1239:                                             ; preds = %.thread427._crit_edge, %.thread428
  %1240 = phi ptr [ %.pre482, %.thread427._crit_edge ], [ %1227, %.thread428 ]
  %1241 = getelementptr inbounds i8, ptr %1240, i64 160
  store i32 1, ptr %1241, align 8, !tbaa !79
  br label %.critedge405

.critedge405:                                     ; preds = %1222, %.thread427, %1239, %1189
  %1242 = load float, ptr %34, align 4, !tbaa !220
  %1243 = fcmp ugt float %1242, 0.000000e+00
  %.pre483 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert484 = getelementptr inbounds i8, ptr %.pre483, i64 156
  br i1 %1243, label %1244, label %.thread504

.thread504:                                       ; preds = %.critedge405
  store i32 1, ptr %.phi.trans.insert484, align 4, !tbaa !114
  br label %1251

1244:                                             ; preds = %.critedge405
  %.pre485 = load i32, ptr %.phi.trans.insert484, align 4, !tbaa !114
  %1245 = icmp sgt i32 %.pre485, 0
  br i1 %1245, label %1251, label %1246

1246:                                             ; preds = %1244
  %1247 = getelementptr inbounds i8, ptr %.pre483, i64 160
  %1248 = load i32, ptr %1247, align 8, !tbaa !79
  %1249 = icmp sgt i32 %1248, 0
  %1250 = zext i1 %1249 to i8
  br label %1251

1251:                                             ; preds = %.thread504, %1246, %1244
  %1252 = phi i8 [ 1, %1244 ], [ %1250, %1246 ], [ 1, %.thread504 ]
  %1253 = getelementptr inbounds i8, ptr %.pre483, i64 133
  store i8 %1252, ptr %1253, align 1, !tbaa !221
  %1254 = getelementptr inbounds i8, ptr %.pre483, i64 129
  %1255 = load i8, ptr %1254, align 1, !tbaa !132, !range !65, !noundef !66
  %1256 = trunc nuw i8 %1255 to i1
  br i1 %1256, label %1263, label %1257

1257:                                             ; preds = %1251
  %1258 = getelementptr inbounds i8, ptr %.pre483, i64 126
  %1259 = load i8, ptr %1258, align 2, !tbaa !104, !range !65, !noundef !66
  %1260 = trunc nuw i8 %1259 to i1
  br i1 %1260, label %1261, label %1263

1261:                                             ; preds = %1257
  %1262 = trunc nuw i8 %1252 to i1
  br i1 %1262, label %1263, label %1275

1263:                                             ; preds = %1261, %1257, %1251
  %1264 = getelementptr inbounds i8, ptr %.pre483, i64 148
  %1265 = load i8, ptr %1264, align 4, !tbaa !133
  %1266 = icmp slt i8 %1265, 1
  br i1 %1266, label %1267, label %1275

1267:                                             ; preds = %1263
  %1268 = getelementptr inbounds i8, ptr %.pre483, i64 149
  %1269 = load i8, ptr %1268, align 1, !tbaa !134
  %1270 = icmp slt i8 %1269, 1
  br i1 %1270, label %1271, label %1275

1271:                                             ; preds = %1267
  %1272 = getelementptr inbounds i8, ptr %.pre483, i64 160
  %1273 = load i32, ptr %1272, align 8, !tbaa !79
  %1274 = icmp slt i32 %1273, 1
  br label %1275

1275:                                             ; preds = %1271, %1263, %1267, %1261
  %.0 = phi i1 [ false, %1267 ], [ false, %1263 ], [ false, %1261 ], [ %1274, %1271 ]
  %1276 = getelementptr inbounds i8, ptr %.pre483, i64 131
  %1277 = zext i1 %.0 to i8
  store i8 %1277, ptr %1276, align 1, !tbaa !222
  %1278 = xor i1 %.0, true
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14
  ret i1 %1278
}

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

; 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 @_ZL15CheckStacksSizeP11ImGuiWindowb(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 #7

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare 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 @_ZN5ImGuiL18UpdateManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(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(948)) local_unnamed_addr #7 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 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: 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

; 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

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

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

; 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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 #8 = { 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 #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 1}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !13, i64 8, !18, i64 5464, !6, i64 6408, !16, i64 6416, !16, i64 6420, !19, i64 6424, !21, i64 6568, !14, i64 6576, !14, i64 6580, !14, i64 6584, !22, i64 6592, !22, i64 6608, !22, i64 6624, !22, i64 6640, !23, i64 6656, !14, i64 6672, !6, i64 6680, !6, i64 6688, !6, i64 6696, !6, i64 6704, !6, i64 6712, !15, i64 6720, !16, i64 6728, !14, i64 6732, !12, i64 6736, !14, i64 6740, !16, i64 6744, !16, i64 6748, !14, i64 6752, !14, i64 6756, !16, i64 6760, !12, i64 6764, !12, i64 6765, !12, i64 6766, !12, i64 6767, !12, i64 6768, !14, i64 6772, !14, i64 6776, !25, i64 6784, !15, i64 6792, !6, i64 6800, !26, i64 6808, !14, i64 6812, !12, i64 6816, !12, i64 6817, !6, i64 6824, !14, i64 6832, !16, i64 6836, !27, i64 6840, !29, i64 6944, !30, i64 6960, !31, i64 6976, !32, i64 6992, !33, i64 7008, !33, i64 7024, !6, i64 7040, !14, i64 7048, !14, i64 7052, !14, i64 7056, !14, i64 7060, !14, i64 7064, !14, i64 7068, !14, i64 7072, !14, i64 7076, !14, i64 7080, !26, i64 7084, !28, i64 7088, !14, i64 7104, !6, i64 7112, !6, i64 7120, !6, i64 7128, !16, i64 7136, !16, i64 7140, !12, i64 7144, !34, i64 7148, !14, i64 7152, !12, i64 7156, !12, i64 7157, !12, i64 7158, !12, i64 7159, !12, i64 7160, !12, i64 7161, !12, i64 7162, !14, i64 7164, !28, i64 7168, !12, i64 7184, !12, i64 7185, !14, i64 7188, !35, i64 7192, !14, i64 7196, !14, i64 7200, !14, i64 7204, !36, i64 7208, !36, i64 7256, !36, i64 7304, !6, i64 7352, !6, i64 7360, !14, i64 7368, !14, i64 7372, !14, i64 7376, !14, i64 7380, !12, i64 7384, !37, i64 7392, !38, i64 7448, !16, i64 7480, !39, i64 7488, !39, i64 7656, !14, i64 7824, !12, i64 7828, !12, i64 7829, !14, i64 7832, !14, i64 7836, !14, i64 7840, !47, i64 7848, !28, i64 7912, !14, i64 7928, !14, i64 7932, !16, i64 7936, !14, i64 7940, !14, i64 7944, !14, i64 7948, !48, i64 7952, !7, i64 7968, !6, i64 7976, !49, i64 7984, !51, i64 8024, !52, i64 8040, !15, i64 8056, !53, i64 8064, !58, i64 11792, !14, i64 11912, !14, i64 11916, !16, i64 11920, !7, i64 11924, !20, i64 11936, !12, i64 11952, !16, i64 11956, !16, i64 11960, !16, i64 11964, !14, i64 11968, !54, i64 11976, !14, i64 11992, !15, i64 11996, !15, i64 12004, !12, i64 12012, !16, i64 12016, !61, i64 12024, !62, i64 12040, !63, i64 12056, !12, i64 12072, !64, i64 12076, !6, i64 12080, !61, i64 12088, !16, i64 12104, !12, i64 12108, !14, i64 12112, !14, i64 12116, !14, i64 12120, !12, i64 12124, !14, i64 12128, !7, i64 12132, !14, i64 12612, !16, i64 12616, !14, i64 12620, !14, i64 12624, !14, i64 12628, !7, i64 12632}
!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}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"_ZTS8ImVectorItE", !14, i64 0, !14, i64 4, !6, i64 8}
!18 = !{!"_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, !7, i64 176}
!19 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !20, i64 24, !14, i64 40, !7, i64 44}
!20 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!21 = !{!"double", !7, i64 0}
!22 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!23 = !{!"_ZTS12ImGuiStorage", !24, i64 0}
!24 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !14, i64 0, !14, i64 4, !6, i64 8}
!25 = !{!"long long", !7, i64 0}
!26 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!27 = !{!"_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, !28, i64 52, !6, i64 72, !6, i64 80, !16, i64 88, !15, i64 92}
!28 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!29 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !16, i64 4, !12, i64 8, !14, i64 12}
!30 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!34 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!35 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!36 = !{!"_ZTS18ImGuiNavMoveResult", !14, i64 0, !14, i64 4, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !28, i64 28}
!37 = !{!"_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}
!38 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!39 = !{!"_ZTS10ImDrawList", !40, i64 0, !17, i64 16, !41, i64 32, !14, i64 48, !6, i64 56, !6, i64 64, !14, i64 72, !14, i64 76, !6, i64 80, !6, i64 88, !42, i64 96, !43, i64 112, !44, i64 128, !45, i64 144}
!40 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !46, i64 8}
!46 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!47 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !7, i64 24, !12, i64 57, !12, i64 58}
!48 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!49 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !50, i64 0, !23, i64 16, !14, i64 32}
!50 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!53 = !{!"_ZTS19ImGuiInputTextState", !14, i64 0, !14, i64 4, !14, i64 8, !17, i64 16, !54, i64 32, !54, i64 48, !12, i64 64, !14, i64 68, !16, i64 72, !55, i64 76, !16, i64 3696, !12, i64 3700, !12, i64 3701, !14, i64 3704, !6, i64 3712, !6, i64 3720}
!54 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!55 = !{!"_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, !56, i64 24}
!56 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !57, i64 3582, !57, i64 3584, !14, i64 3588, !14, i64 3592}
!57 = !{!"short", !7, i64 0}
!58 = !{!"_ZTS6ImFont", !59, i64 0, !16, i64 16, !16, i64 20, !17, i64 24, !60, i64 40, !6, i64 56, !15, i64 64, !6, i64 72, !6, i64 80, !57, i64 88, !57, i64 90, !57, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !14, i64 108, !12, 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 = !{!"_ZTS15ImGuiTextBuffer", !54, i64 0}
!62 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !14, i64 0, !14, i64 4, !6, i64 8}
!64 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!65 = !{i8 0, i8 2}
!66 = !{}
!67 = !{!11, !14, i64 6580}
!68 = !{!11, !14, i64 6576}
!69 = !{!11, !14, i64 6840}
!70 = !{!71, !14, i64 592}
!71 = !{!"_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, !7, i64 135, !57, i64 136, !57, i64 138, !57, i64 140, !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, !72, i64 192, !73, i64 208, !28, i64 496, !28, i64 512, !28, i64 528, !28, i64 544, !28, i64 560, !28, i64 576, !14, i64 592, !16, i64 596, !16, i64 600, !77, i64 604, !23, i64 640, !78, i64 656, !16, i64 672, !14, i64 676, !6, i64 680, !39, i64 688, !6, i64 856, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !7, i64 896, !7, i64 904, !12, i64 936, !14, i64 940, !14, i64 944}
!72 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!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, !14, i64 56, !14, i64 60, !14, i64 64, !14, i64 68, !28, i64 72, !28, i64 88, !34, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !12, i64 120, !12, i64 121, !12, i64 122, !15, i64 124, !22, i64 136, !6, i64 152, !14, i64 160, !14, i64 164, !14, i64 168, !14, i64 172, !14, i64 176, !16, i64 180, !16, i64 184, !74, i64 192, !59, i64 208, !59, i64 224, !75, i64 240, !7, i64 256, !76, i64 268, !76, i64 272, !76, i64 276, !6, i64 280}
!74 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!75 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!76 = !{!"_ZTS6ImVec1", !16, i64 0}
!77 = !{!"_ZTS16ImGuiMenuColumns", !16, i64 0, !16, i64 4, !16, i64 8, !7, i64 12, !7, i64 24}
!78 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!79 = !{!71, !14, i64 160}
!80 = !{!11, !14, i64 7024}
!81 = !{!71, !14, i64 144}
!82 = !{!83, !14, i64 0}
!83 = !{!"_ZTS14ImGuiPopupData", !14, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !14, i64 28, !15, i64 32, !15, i64 40}
!84 = !{!83, !6, i64 8}
!85 = !{!71, !12, i64 132}
!86 = !{!71, !14, i64 12}
!87 = !{!11, !21, i64 6568}
!88 = !{!71, !16, i64 596}
!89 = !{!71, !57, i64 138}
!90 = !{!11, !14, i64 6672}
!91 = !{!71, !57, i64 140}
!92 = !{!71, !6, i64 856}
!93 = !{!71, !14, i64 192}
!94 = !{!11, !6, i64 6680}
!95 = !{!14, !14, i64 0}
!96 = !{!71, !14, i64 164}
!97 = !{!11, !14, i64 6844}
!98 = !{!71, !14, i64 168}
!99 = !{!11, !14, i64 6848}
!100 = !{!11, !16, i64 6872}
!101 = !{!11, !16, i64 6876}
!102 = !{!11, !12, i64 6888}
!103 = !{!11, !14, i64 6852}
!104 = !{!71, !12, i64 126}
!105 = !{!71, !12, i64 134}
!106 = !{i64 0, i64 4, !107, i64 4, i64 4, !107, i64 8, i64 4, !107, i64 12, i64 4, !107}
!107 = !{!16, !16, i64 0}
!108 = !{!71, !12, i64 936}
!109 = !{!11, !6, i64 7128}
!110 = !{!71, !6, i64 0}
!111 = !{!71, !14, i64 72}
!112 = !{!113, !113, i64 0}
!113 = !{!"long", !7, i64 0}
!114 = !{!71, !14, i64 156}
!115 = !{!71, !16, i64 32}
!116 = !{!71, !16, i64 24}
!117 = !{!71, !16, i64 36}
!118 = !{!71, !16, i64 28}
!119 = !{!71, !16, i64 68}
!120 = !{!18, !16, i64 44}
!121 = !{!18, !16, i64 8}
!122 = !{!18, !16, i64 72}
!123 = !{!11, !16, i64 6932}
!124 = !{!71, !16, i64 332}
!125 = !{!11, !16, i64 6936}
!126 = !{!71, !16, i64 336}
!127 = !{!11, !6, i64 6688}
!128 = !{!11, !14, i64 6732}
!129 = !{!11, !14, i64 6740}
!130 = !{!12, !12, i64 0}
!131 = !{!71, !12, i64 130}
!132 = !{!71, !12, i64 129}
!133 = !{!71, !7, i64 148}
!134 = !{!71, !7, i64 149}
!135 = !{!71, !12, i64 151}
!136 = !{!15, !16, i64 4}
!137 = !{!71, !14, i64 152}
!138 = !{!71, !14, i64 344}
!139 = !{!71, !16, i64 176}
!140 = !{!11, !16, i64 16}
!141 = !{!11, !16, i64 20}
!142 = !{!71, !16, i64 64}
!143 = !{!11, !12, i64 203}
!144 = !{!11, !16, i64 6416}
!145 = !{!71, !7, i64 135}
!146 = !{!71, !12, i64 125}
!147 = !{!71, !12, i64 124}
!148 = !{!15, !16, i64 0}
!149 = !{!18, !16, i64 104}
!150 = !{!71, !16, i64 512}
!151 = !{!71, !16, i64 516}
!152 = !{!71, !16, i64 56}
!153 = !{!71, !16, i64 528}
!154 = !{!71, !16, i64 532}
!155 = !{!71, !16, i64 520}
!156 = !{!71, !16, i64 536}
!157 = !{!71, !16, i64 524}
!158 = !{!71, !16, i64 540}
!159 = !{!71, !16, i64 600}
!160 = !{!71, !16, i64 40}
!161 = !{!71, !16, i64 92}
!162 = !{!71, !16, i64 44}
!163 = !{!71, !16, i64 60}
!164 = !{!71, !16, i64 96}
!165 = !{!71, !6, i64 680}
!166 = !{!11, !6, i64 6408}
!167 = !{!58, !6, i64 72}
!168 = !{!169, !6, i64 8}
!169 = !{!"_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, !32, i64 64, !170, i64 80, !171, i64 96, !7, i64 112}
!170 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!171 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!172 = !{!11, !6, i64 7120}
!173 = !{!71, !6, i64 864}
!174 = !{!11, !16, i64 7480}
!175 = !{!11, !16, i64 7140}
!176 = !{!11, !16, i64 5476}
!177 = !{!178, !14, i64 0}
!178 = !{!"_ZTS9ImDrawCmd", !14, i64 0, !20, i64 4, !6, i64 24, !14, i64 32, !14, i64 36, !6, i64 40, !6, i64 48}
!179 = !{!39, !14, i64 32}
!180 = !{!11, !6, i64 7112}
!181 = !{!11, !6, i64 7040}
!182 = !{!71, !6, i64 872}
!183 = !{!71, !16, i64 48}
!184 = !{!71, !16, i64 116}
!185 = !{!71, !16, i64 52}
!186 = !{!71, !16, i64 120}
!187 = !{!71, !16, i64 84}
!188 = !{!71, !16, i64 544}
!189 = !{!71, !16, i64 88}
!190 = !{!71, !16, i64 548}
!191 = !{!71, !16, i64 16}
!192 = !{!71, !16, i64 576}
!193 = !{!71, !16, i64 20}
!194 = !{!71, !16, i64 580}
!195 = !{!71, !16, i64 584}
!196 = !{!71, !16, i64 588}
!197 = !{!71, !16, i64 476}
!198 = !{!71, !12, i64 328}
!199 = !{!71, !12, i64 329}
!200 = !{!71, !14, i64 324}
!201 = !{!71, !14, i64 320}
!202 = !{!71, !12, i64 330}
!203 = !{!71, !14, i64 368}
!204 = !{!71, !14, i64 384}
!205 = !{!71, !16, i64 388}
!206 = !{!71, !16, i64 392}
!207 = !{!71, !6, i64 488}
!208 = !{!71, !14, i64 264}
!209 = !{!71, !14, i64 268}
!210 = !{!71, !6, i64 360}
!211 = !{!71, !14, i64 76}
!212 = !{!71, !14, i64 272}
!213 = !{!71, !14, i64 276}
!214 = !{!71, !12, i64 128}
!215 = !{!71, !57, i64 136}
!216 = !{!71, !16, i64 496}
!217 = !{!71, !16, i64 504}
!218 = !{!71, !16, i64 500}
!219 = !{!71, !16, i64 508}
!220 = !{!18, !16, i64 0}
!221 = !{!71, !12, i64 133}
!222 = !{!71, !12, i64 131}


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