; LLVM IR from lbowes/falcon-9-simulation :: 3rd_party/imgui/imgui.ll (ZN5ImGui5BeginEPKcPbi)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiContext = type <{ i8, i8, [6 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i32, [4 x i8], ptr, %struct.ImVector.3, %struct.ImVector.3, %struct.ImVector.3, %struct.ImVector.3, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i8, [3 x i8], i32, float, float, i32, i32, float, i8, i8, i8, i8, i8, [3 x i8], i32, i32, [4 x i8], i64, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, [2 x i8], ptr, i32, float, %struct.ImGuiNextWindowData, %struct.ImGuiNextItemData, [4 x i8], %struct.ImVector.4, %struct.ImVector.5, %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.7, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, [2 x i8], i32, i32, i32, i32, i32, i32, [4 x i8], %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, ptr, i32, [4 x i8], ptr, ptr, ptr, float, float, i8, [7 x i8], ptr, ptr, i32, i32, i32, i32, i8, [7 x i8], %struct.ImDrawData, %struct.ImDrawDataBuilder, float, [4 x i8], %struct.ImDrawList, %struct.ImDrawList, i32, i8, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, [4 x i8], %struct.ImVector.15, [16 x i8], ptr, %struct.ImPool, %struct.ImVector.17, %struct.ImVector.18, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, float, [3 x float], %struct.ImVec4, i8, [3 x i8], float, float, float, i32, %struct.ImVector.2, %struct.ImVector.21, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.22, %struct.ImChunkStream, i8, [3 x i8], i32, ptr, %struct.ImGuiTextBuffer, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, [120 x float], i32, float, i32, i32, i32, [3073 x i8], [7 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, [22 x i32], float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, [512 x i8], [21 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, i32, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], [512 x float], [512 x float], [21 x float], [21 x float], i16, %struct.ImVector }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiStyle = type { float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, float, float, [48 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, [12 x %struct.ImVec2], [64 x i8] }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.0 }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, [4 x i8], ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiNextItemData = type <{ i32, float, i32, i32, i8, [3 x i8] }>
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImGuiNavMoveResult = type <{ ptr, i32, i32, float, float, float, %struct.ImRect, [4 x i8] }>
%struct.ImDrawData = type <{ i8, [7 x i8], ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImDrawDataBuilder = type { [2 x %struct.ImVector.8] }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImDrawList = type { %struct.ImVector.9, %struct.ImVector, %struct.ImVector.10, i32, ptr, ptr, i32, i32, ptr, ptr, %struct.ImVector.11, %struct.ImVector.12, %struct.ImVector.13, %struct.ImDrawListSplitter }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.14 }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImPool = type <{ %struct.ImVector.16, %struct.ImGuiStorage, i32, [4 x i8] }>
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type { i32, i32, i32, %struct.ImVector, %struct.ImVector.2, %struct.ImVector.2, i8, i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i32, ptr, ptr }
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type <{ %struct.ImVector.19, float, float, %struct.ImVector, %struct.ImVector.20, ptr, %struct.ImVec2, ptr, ptr, i16, i16, i16, i8, i8, float, float, float, i32, [2 x i8], [6 x i8] }>
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.2 }
%struct.ImGuiTextBuffer = type { %struct.ImVector.2 }
%struct.ImGuiWindow = type <{ ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.21, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32, float, float, [4 x i8], %struct.ImGuiStorage, %struct.ImVector.25, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i8, [3 x i8], i32, i32, [4 x i8] }>
%struct.ImGuiWindowTempData = type <{ %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, i32, i32, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.3, ptr, ptr, i32, i32, i32, i32, i32, float, float, [4 x i8], %struct.ImVector.23, %struct.ImVector.19, %struct.ImVector.19, %struct.ImVector.24, [6 x i16], [4 x i8] }>
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type { float, float, float, [3 x float], [3 x float] }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImGuiPopupData = type { i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2 }
%struct.ImFontAtlas = type <{ i8, [3 x i8], i32, ptr, i32, i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.6, %struct.ImVector.28, %struct.ImVector.29, [1 x i32], [4 x i8] }>
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImDrawCmd = type { i32, %struct.ImVec4, ptr, i32, i32, ptr, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

96:                                               ; preds = %90, %3
  %97 = phi i1 [ false, %3 ], [ %95, %90 ]
  br i1 %97, label %98, label %99

98:                                               ; preds = %96
  br label %101

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

100:                                              ; No predecessors!
  br label %101

101:                                              ; preds = %100, %98
  %102 = load ptr, ptr %7, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.ImGuiContext, ptr %102, i32 0, i32 13
  %104 = load i8, ptr %103, align 4, !tbaa !12, !range !67, !noundef !68
  %105 = trunc i8 %104 to i1
  br i1 %105, label %106, label %107

106:                                              ; preds = %101
  br label %109

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

108:                                              ; No predecessors!
  br label %109

109:                                              ; preds = %108, %106
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.ImGuiContext, ptr %110, i32 0, i32 11
  %112 = load i32, ptr %111, align 4, !tbaa !69
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.ImGuiContext, ptr %113, i32 0, i32 10
  %115 = load i32, ptr %114, align 8, !tbaa !70
  %116 = icmp ne i32 %112, %115
  br i1 %116, label %117, label %118

117:                                              ; preds = %109
  br label %120

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

119:                                              ; No predecessors!
  br label %120

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

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

132:                                              ; preds = %128, %120
  %133 = load i32, ptr %6, align 4, !tbaa !9
  %134 = and i32 %133, 786944
  %135 = icmp eq i32 %134, 786944
  br i1 %135, label %136, label %139

136:                                              ; preds = %132
  %137 = load i32, ptr %6, align 4, !tbaa !9
  %138 = or i32 %137, 6
  store i32 %138, ptr %6, align 4, !tbaa !9
  br label %139

139:                                              ; preds = %136, %132
  %140 = load i32, ptr %6, align 4, !tbaa !9
  %141 = and i32 %140, 8388608
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %143, label %151

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

147:                                              ; preds = %143
  br label %150

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

149:                                              ; No predecessors!
  br label %150

150:                                              ; preds = %149, %147
  br label %151

151:                                              ; preds = %150, %139
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #13
  %152 = load ptr, ptr %7, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.ImGuiContext, ptr %152, i32 0, i32 10
  %154 = load i32, ptr %153, align 8, !tbaa !70
  store i32 %154, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #13
  %155 = load ptr, ptr %9, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.ImGuiWindow, ptr %155, i32 0, i32 57
  %157 = load i32, ptr %156, align 8, !tbaa !72
  %158 = load i32, ptr %11, align 4, !tbaa !9
  %159 = icmp ne i32 %157, %158
  %160 = zext i1 %159 to i8
  store i8 %160, ptr %12, align 1, !tbaa !71
  %161 = load ptr, ptr %7, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.ImGuiContext, ptr %161, i32 0, i32 23
  %163 = getelementptr inbounds %struct.ImVector.3, ptr %162, i32 0, i32 0
  %164 = load i32, ptr %163, align 8, !tbaa !80
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %166, label %171

166:                                              ; preds = %151
  %167 = load ptr, ptr %7, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.ImGuiContext, ptr %167, i32 0, i32 14
  %169 = load i8, ptr %168, align 1, !tbaa !81, !range !67, !noundef !68
  %170 = trunc i8 %169 to i1
  br label %171

171:                                              ; preds = %166, %151
  %172 = phi i1 [ false, %151 ], [ %170, %166 ]
  %173 = load ptr, ptr %9, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.ImGuiWindow, ptr %173, i32 0, i32 29
  %175 = zext i1 %172 to i8
  store i8 %175, ptr %174, align 2, !tbaa !82
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #13
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.ImGuiWindow, ptr %176, i32 0, i32 57
  %178 = load i32, ptr %177, align 8, !tbaa !72
  %179 = load i32, ptr %11, 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 %13, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #13
  %183 = load ptr, ptr %9, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.ImGuiWindow, ptr %183, i32 0, i32 43
  %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 %14, align 1, !tbaa !71
  %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 = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #13
  %192 = load ptr, ptr %7, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.ImGuiContext, ptr %192, i32 0, i32 70
  %194 = load ptr, ptr %7, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.ImGuiContext, ptr %194, i32 0, i32 71
  %196 = getelementptr inbounds %struct.ImVector.7, 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 %15, align 8, !tbaa !5
  %199 = load ptr, ptr %9, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.ImGuiWindow, ptr %199, i32 0, i32 36
  %201 = load i32, ptr %200, align 8, !tbaa !85
  %202 = load ptr, ptr %15, 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 %13, align 1, !tbaa !71, !range !67, !noundef !68
  %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 %13, align 1, !tbaa !71
  %213 = load ptr, ptr %9, align 8, !tbaa !5
  %214 = load ptr, ptr %15, 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 %13, align 1, !tbaa !71, !range !67, !noundef !68
  %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 %13, align 1, !tbaa !71
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #13
  br label %225

225:                                              ; preds = %191, %171
  %226 = load i8, ptr %13, align 1, !tbaa !71, !range !67, !noundef !68
  %227 = trunc i8 %226 to i1
  br i1 %227, label %231, label %228

228:                                              ; preds = %225
  %229 = load i8, ptr %14, align 1, !tbaa !71, !range !67, !noundef !68
  %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 !67, !noundef !68
  %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 %12, align 1, !tbaa !71, !range !67, !noundef !68
  %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 %11, align 4, !tbaa !9
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.ImGuiWindow, ptr %250, i32 0, i32 57
  store i32 %249, ptr %251, align 8, !tbaa !72
  %252 = load ptr, ptr %7, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.ImGuiContext, ptr %252, i32 0, i32 9
  %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 58
  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 34
  store i16 0, ptr %259, align 4, !tbaa !93
  %260 = load ptr, ptr %7, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.ImGuiContext, ptr %260, i32 0, i32 25
  %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 35
  store i16 %264, ptr %266, align 2, !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 %16) #13
  %272 = load ptr, ptr %7, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.ImGuiContext, ptr %272, i32 0, i32 23
  %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 23
  %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 %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #13
  %283 = load i8, ptr %12, align 1, !tbaa !71, !range !67, !noundef !68
  %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 %16, 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 67
  %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 %17, align 8, !tbaa !5
  %300 = load ptr, ptr %17, 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.97, ptr noundef @.str.3, i32 noundef 5506, 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 49
  %315 = getelementptr inbounds %struct.ImVector.21, 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 49
  %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 23
  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 27
  store ptr null, ptr %327, align 8, !tbaa !98
  %328 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGuiL35ErrorCheckBeginEndCompareStacksSizeEP11ImGuiWindowb(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 %18) #13
  %333 = load ptr, ptr %7, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.ImGuiContext, ptr %333, i32 0, i32 70
  %335 = load ptr, ptr %7, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.ImGuiContext, ptr %335, i32 0, i32 71
  %337 = getelementptr inbounds %struct.ImVector.7, 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 %18, align 8, !tbaa !5
  %340 = load ptr, ptr %9, align 8, !tbaa !5
  %341 = load ptr, ptr %18, 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 71
  %345 = load ptr, ptr %18, 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 %18, 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 36
  store i32 %348, ptr %350, align 8, !tbaa !85
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  br label %351

351:                                              ; preds = %332, %323
  %352 = load i8, ptr %14, align 1, !tbaa !71, !range !67, !noundef !68
  %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 72
  %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
  %363 = load i8, ptr %12, align 1, !tbaa !71, !range !67, !noundef !68
  %364 = trunc i8 %363 to i1
  br i1 %364, label %365, label %369

365:                                              ; preds = %362
  %366 = load ptr, ptr %9, align 8, !tbaa !5
  %367 = load i32, ptr %6, align 4, !tbaa !9
  %368 = load ptr, ptr %17, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %366, i32 noundef %367, ptr noundef %368)
  br label %369

369:                                              ; preds = %365, %362
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #13
  store i8 0, ptr %19, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #13
  store i8 0, ptr %20, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  store i8 0, ptr %21, align 1, !tbaa !71
  %370 = load ptr, ptr %7, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.ImGuiContext, ptr %370, i32 0, i32 64
  %372 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %371, i32 0, i32 0
  %373 = load i32, ptr %372, align 8, !tbaa !99
  %374 = and i32 %373, 1
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %420

376:                                              ; preds = %369
  %377 = load ptr, ptr %9, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.ImGuiWindow, ptr %377, i32 0, i32 44
  %379 = load i32, ptr %378, align 4, !tbaa !100
  %380 = load ptr, ptr %7, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.ImGuiContext, ptr %380, i32 0, i32 64
  %382 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %381, i32 0, i32 1
  %383 = load i32, ptr %382, align 4, !tbaa !101
  %384 = and i32 %379, %383
  %385 = icmp ne i32 %384, 0
  %386 = zext i1 %385 to i8
  store i8 %386, ptr %19, align 1, !tbaa !71
  %387 = load i8, ptr %19, align 1, !tbaa !71, !range !67, !noundef !68
  %388 = trunc i8 %387 to i1
  br i1 %388, label %389, label %410

389:                                              ; preds = %376
  %390 = load ptr, ptr %7, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.ImGuiContext, ptr %390, i32 0, i32 64
  %392 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %391, i32 0, i32 5
  %393 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %392)
  %394 = fcmp ogt float %393, 0x3EE4F8B580000000
  br i1 %394, label %395, label %410

395:                                              ; preds = %389
  %396 = load ptr, ptr %7, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.ImGuiContext, ptr %396, i32 0, i32 64
  %398 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %397, i32 0, i32 4
  %399 = load ptr, ptr %9, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.ImGuiWindow, ptr %399, i32 0, i32 47
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %400, ptr align 8 %398, i64 8, i1 false), !tbaa.struct !102
  %401 = load ptr, ptr %7, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.ImGuiContext, ptr %401, i32 0, i32 64
  %403 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %402, i32 0, i32 5
  %404 = load ptr, ptr %9, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.ImGuiWindow, ptr %404, i32 0, i32 48
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %405, ptr align 8 %403, i64 8, i1 false), !tbaa.struct !102
  %406 = load ptr, ptr %9, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.ImGuiWindow, ptr %406, i32 0, i32 44
  %408 = load i32, ptr %407, align 4, !tbaa !100
  %409 = and i32 %408, -15
  store i32 %409, ptr %407, align 4, !tbaa !100
  br label %419

410:                                              ; preds = %389, %376
  %411 = load ptr, ptr %9, align 8, !tbaa !5
  %412 = load ptr, ptr %7, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.ImGuiContext, ptr %412, i32 0, i32 64
  %414 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %413, i32 0, i32 4
  %415 = load ptr, ptr %7, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.ImGuiContext, ptr %415, i32 0, i32 64
  %417 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %416, i32 0, i32 1
  %418 = load i32, ptr %417, align 4, !tbaa !101
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %411, ptr noundef nonnull align 4 dereferenceable(8) %414, i32 noundef %418)
  br label %419

419:                                              ; preds = %410, %395
  br label %420

420:                                              ; preds = %419, %369
  %421 = load ptr, ptr %7, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.ImGuiContext, ptr %421, i32 0, i32 64
  %423 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %422, i32 0, i32 0
  %424 = load i32, ptr %423, align 8, !tbaa !99
  %425 = and i32 %424, 2
  %426 = icmp ne i32 %425, 0
  br i1 %426, label %427, label %474

427:                                              ; preds = %420
  %428 = load ptr, ptr %9, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.ImGuiWindow, ptr %428, i32 0, i32 45
  %430 = load i32, ptr %429, align 8, !tbaa !104
  %431 = load ptr, ptr %7, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.ImGuiContext, ptr %431, i32 0, i32 64
  %433 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %432, i32 0, i32 2
  %434 = load i32, ptr %433, align 8, !tbaa !105
  %435 = and i32 %430, %434
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %437, label %444

437:                                              ; preds = %427
  %438 = load ptr, ptr %7, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.ImGuiContext, ptr %438, i32 0, i32 64
  %440 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %439, i32 0, i32 6
  %441 = getelementptr inbounds %struct.ImVec2, ptr %440, i32 0, i32 0
  %442 = load float, ptr %441, align 8, !tbaa !106
  %443 = fcmp ogt float %442, 0.000000e+00
  br label %444

444:                                              ; preds = %437, %427
  %445 = phi i1 [ false, %427 ], [ %443, %437 ]
  %446 = zext i1 %445 to i8
  store i8 %446, ptr %20, align 1, !tbaa !71
  %447 = load ptr, ptr %9, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.ImGuiWindow, ptr %447, i32 0, i32 45
  %449 = load i32, ptr %448, align 8, !tbaa !104
  %450 = load ptr, ptr %7, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.ImGuiContext, ptr %450, i32 0, i32 64
  %452 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %451, i32 0, i32 2
  %453 = load i32, ptr %452, align 8, !tbaa !105
  %454 = and i32 %449, %453
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %463

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

463:                                              ; preds = %456, %444
  %464 = phi i1 [ false, %444 ], [ %462, %456 ]
  %465 = zext i1 %464 to i8
  store i8 %465, ptr %21, align 1, !tbaa !71
  %466 = load ptr, ptr %9, align 8, !tbaa !5
  %467 = load ptr, ptr %7, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.ImGuiContext, ptr %467, i32 0, i32 64
  %469 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %468, i32 0, i32 6
  %470 = load ptr, ptr %7, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.ImGuiContext, ptr %470, i32 0, i32 64
  %472 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %471, i32 0, i32 2
  %473 = load i32, ptr %472, align 8, !tbaa !105
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %466, ptr noundef nonnull align 4 dereferenceable(8) %469, i32 noundef %473)
  br label %474

474:                                              ; preds = %463, %420
  %475 = load ptr, ptr %7, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.ImGuiContext, ptr %475, i32 0, i32 64
  %477 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %476, i32 0, i32 0
  %478 = load i32, ptr %477, align 8, !tbaa !99
  %479 = and i32 %478, 128
  %480 = icmp ne i32 %479, 0
  br i1 %480, label %481, label %520

481:                                              ; preds = %474
  %482 = load ptr, ptr %7, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.ImGuiContext, ptr %482, i32 0, i32 64
  %484 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %483, i32 0, i32 8
  %485 = getelementptr inbounds %struct.ImVec2, ptr %484, i32 0, i32 0
  %486 = load float, ptr %485, align 8, !tbaa !108
  %487 = fcmp oge float %486, 0.000000e+00
  br i1 %487, label %488, label %500

488:                                              ; preds = %481
  %489 = load ptr, ptr %7, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.ImGuiContext, ptr %489, i32 0, i32 64
  %491 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %490, i32 0, i32 8
  %492 = getelementptr inbounds %struct.ImVec2, ptr %491, i32 0, i32 0
  %493 = load float, ptr %492, align 8, !tbaa !108
  %494 = load ptr, ptr %9, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.ImGuiWindow, ptr %494, i32 0, i32 16
  %496 = getelementptr inbounds %struct.ImVec2, ptr %495, i32 0, i32 0
  store float %493, ptr %496, align 4, !tbaa !109
  %497 = load ptr, ptr %9, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.ImGuiWindow, ptr %497, i32 0, i32 17
  %499 = getelementptr inbounds %struct.ImVec2, ptr %498, i32 0, i32 0
  store float 0.000000e+00, ptr %499, align 4, !tbaa !110
  br label %500

500:                                              ; preds = %488, %481
  %501 = load ptr, ptr %7, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.ImGuiContext, ptr %501, i32 0, i32 64
  %503 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %502, i32 0, i32 8
  %504 = getelementptr inbounds %struct.ImVec2, ptr %503, i32 0, i32 1
  %505 = load float, ptr %504, align 4, !tbaa !111
  %506 = fcmp oge float %505, 0.000000e+00
  br i1 %506, label %507, label %519

507:                                              ; preds = %500
  %508 = load ptr, ptr %7, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.ImGuiContext, ptr %508, i32 0, i32 64
  %510 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %509, i32 0, i32 8
  %511 = getelementptr inbounds %struct.ImVec2, ptr %510, i32 0, i32 1
  %512 = load float, ptr %511, align 4, !tbaa !111
  %513 = load ptr, ptr %9, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.ImGuiWindow, ptr %513, i32 0, i32 16
  %515 = getelementptr inbounds %struct.ImVec2, ptr %514, i32 0, i32 1
  store float %512, ptr %515, align 4, !tbaa !112
  %516 = load ptr, ptr %9, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.ImGuiWindow, ptr %516, i32 0, i32 17
  %518 = getelementptr inbounds %struct.ImVec2, ptr %517, i32 0, i32 1
  store float 0.000000e+00, ptr %518, align 4, !tbaa !113
  br label %519

519:                                              ; preds = %507, %500
  br label %520

520:                                              ; preds = %519, %474
  %521 = load ptr, ptr %7, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.ImGuiContext, ptr %521, i32 0, i32 64
  %523 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %522, i32 0, i32 0
  %524 = load i32, ptr %523, align 8, !tbaa !99
  %525 = and i32 %524, 4
  %526 = icmp ne i32 %525, 0
  br i1 %526, label %527, label %533

527:                                              ; preds = %520
  %528 = load ptr, ptr %7, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.ImGuiContext, ptr %528, i32 0, i32 64
  %530 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %529, i32 0, i32 7
  %531 = load ptr, ptr %9, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.ImGuiWindow, ptr %531, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %532, ptr align 8 %530, i64 8, i1 false), !tbaa.struct !102
  br label %540

533:                                              ; preds = %520
  %534 = load i8, ptr %12, align 1, !tbaa !71, !range !67, !noundef !68
  %535 = trunc i8 %534 to i1
  br i1 %535, label %536, label %539

536:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %22, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %537 = load ptr, ptr %9, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.ImGuiWindow, ptr %537, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %538, ptr align 4 %22, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #13
  br label %539

539:                                              ; preds = %536, %533
  br label %540

540:                                              ; preds = %539, %527
  %541 = load ptr, ptr %7, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.ImGuiContext, ptr %541, i32 0, i32 64
  %543 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %542, i32 0, i32 0
  %544 = load i32, ptr %543, align 8, !tbaa !99
  %545 = and i32 %544, 8
  %546 = icmp ne i32 %545, 0
  br i1 %546, label %547, label %558

547:                                              ; preds = %540
  %548 = load ptr, ptr %9, align 8, !tbaa !5
  %549 = load ptr, ptr %7, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ImGuiContext, ptr %549, i32 0, i32 64
  %551 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %550, i32 0, i32 9
  %552 = load i8, ptr %551, align 8, !tbaa !114, !range !67, !noundef !68
  %553 = trunc i8 %552 to i1
  %554 = load ptr, ptr %7, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.ImGuiContext, ptr %554, i32 0, i32 64
  %556 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %555, i32 0, i32 3
  %557 = load i32, ptr %556, align 4, !tbaa !115
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %548, i1 noundef zeroext %553, i32 noundef %557)
  br label %558

558:                                              ; preds = %547, %540
  %559 = load ptr, ptr %7, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.ImGuiContext, ptr %559, i32 0, i32 64
  %561 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %560, i32 0, i32 0
  %562 = load i32, ptr %561, align 8, !tbaa !99
  %563 = and i32 %562, 32
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %565, label %567

565:                                              ; preds = %558
  %566 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %566)
  br label %567

567:                                              ; preds = %565, %558
  %568 = load ptr, ptr %9, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.ImGuiWindow, ptr %568, i32 0, i32 27
  %570 = load i8, ptr %569, align 4, !tbaa !89, !range !67, !noundef !68
  %571 = trunc i8 %570 to i1
  br i1 %571, label %572, label %574

572:                                              ; preds = %567
  %573 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %573, i32 noundef 8, i1 noundef zeroext false)
  br label %574

574:                                              ; preds = %572, %567
  %575 = load i8, ptr %12, align 1, !tbaa !71, !range !67, !noundef !68
  %576 = trunc i8 %575 to i1
  br i1 %576, label %577, label %2479

577:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  %578 = load i32, ptr %6, align 4, !tbaa !9
  %579 = and i32 %578, 16777216
  %580 = icmp ne i32 %579, 0
  br i1 %580, label %581, label %585

581:                                              ; preds = %577
  %582 = load i32, ptr %6, align 4, !tbaa !9
  %583 = and i32 %582, 33554432
  %584 = icmp ne i32 %583, 0
  br label %585

585:                                              ; preds = %581, %577
  %586 = phi i1 [ false, %577 ], [ %584, %581 ]
  %587 = zext i1 %586 to i8
  store i8 %587, ptr %23, align 1, !tbaa !71
  %588 = load ptr, ptr %9, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.ImGuiWindow, ptr %588, i32 0, i32 21
  store i8 1, ptr %589, align 2, !tbaa !116
  %590 = load ptr, ptr %5, align 8, !tbaa !5
  %591 = icmp ne ptr %590, null
  %592 = load ptr, ptr %9, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.ImGuiWindow, ptr %592, i32 0, i32 30
  %594 = zext i1 %591 to i8
  store i8 %594, ptr %593, align 1, !tbaa !117
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #13
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %25, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %24, ptr noundef nonnull align 4 dereferenceable(16) %25)
  %595 = load ptr, ptr %9, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.ImGuiWindow, ptr %595, i32 0, i32 55
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %596, ptr align 4 %24, i64 16, i1 false), !tbaa.struct !118
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #13
  %597 = load ptr, ptr %9, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.ImGuiWindow, ptr %597, i32 0, i32 49
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %598, i32 noundef 1)
  %599 = load ptr, ptr %9, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.ImGuiWindow, ptr %599, i32 0, i32 74
  %601 = load i8, ptr %600, align 8, !tbaa !119, !range !67, !noundef !68
  %602 = trunc i8 %601 to i1
  br i1 %602, label %603, label %605

603:                                              ; preds = %585
  %604 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %604)
  br label %605

605:                                              ; preds = %603, %585
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #13
  store i8 0, ptr %26, align 1, !tbaa !71
  %606 = load ptr, ptr %7, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.ImGuiContext, ptr %606, i32 0, i32 117
  %608 = load ptr, ptr %607, align 8, !tbaa !120
  %609 = icmp ne ptr %608, null
  br i1 %609, label %610, label %617

610:                                              ; preds = %605
  %611 = load ptr, ptr %9, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.ImGuiWindow, ptr %611, i32 0, i32 2
  %613 = load i32, ptr %612, align 4, !tbaa !90
  %614 = and i32 %613, 524288
  %615 = icmp eq i32 %614, 0
  br i1 %615, label %616, label %617

616:                                              ; preds = %610
  store i8 1, ptr %26, align 1, !tbaa !71
  br label %617

617:                                              ; preds = %616, %610, %605
  %618 = load i8, ptr %26, align 1, !tbaa !71, !range !67, !noundef !68
  %619 = trunc i8 %618 to i1
  br i1 %619, label %620, label %646

620:                                              ; preds = %617
  %621 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %622 = trunc i8 %621 to i1
  br i1 %622, label %646, label %623

623:                                              ; preds = %620
  %624 = load ptr, ptr %4, align 8, !tbaa !5
  %625 = load ptr, ptr %9, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImGuiWindow, ptr %625, i32 0, i32 0
  %627 = load ptr, ptr %626, align 8, !tbaa !121
  %628 = call i32 @strcmp(ptr noundef %624, ptr noundef %627) #15
  %629 = icmp ne i32 %628, 0
  br i1 %629, label %630, label %646

630:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #13
  %631 = load ptr, ptr %9, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.ImGuiWindow, ptr %631, i32 0, i32 11
  %633 = load i32, ptr %632, align 8, !tbaa !122
  %634 = sext i32 %633 to i64
  store i64 %634, ptr %27, align 8, !tbaa !123
  %635 = load ptr, ptr %9, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.ImGuiWindow, ptr %635, i32 0, i32 0
  %637 = load ptr, ptr %636, align 8, !tbaa !121
  %638 = load ptr, ptr %4, align 8, !tbaa !5
  %639 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %637, ptr noundef %27, ptr noundef %638)
  %640 = load ptr, ptr %9, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.ImGuiWindow, ptr %640, i32 0, i32 0
  store ptr %639, ptr %641, align 8, !tbaa !121
  %642 = load i64, ptr %27, align 8, !tbaa !123
  %643 = trunc i64 %642 to i32
  %644 = load ptr, ptr %9, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.ImGuiWindow, ptr %644, i32 0, i32 11
  store i32 %643, ptr %645, align 8, !tbaa !122
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #13
  br label %646

646:                                              ; preds = %630, %623, %620, %617
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  %647 = load ptr, ptr %9, align 8, !tbaa !5
  %648 = call <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef %647)
  store <2 x float> %648, ptr %28, align 4
  %649 = load ptr, ptr %9, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiWindow, ptr %649, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %650, ptr align 4 %28, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  %651 = load ptr, ptr %9, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.ImGuiWindow, ptr %651, i32 0, i32 42
  %653 = load i32, ptr %652, align 4, !tbaa !125
  %654 = icmp sgt i32 %653, 0
  br i1 %654, label %655, label %660

655:                                              ; preds = %646
  %656 = load ptr, ptr %9, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.ImGuiWindow, ptr %656, i32 0, i32 42
  %658 = load i32, ptr %657, align 4, !tbaa !125
  %659 = add nsw i32 %658, -1
  store i32 %659, ptr %657, align 4, !tbaa !125
  br label %660

660:                                              ; preds = %655, %646
  %661 = load ptr, ptr %9, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.ImGuiWindow, ptr %661, i32 0, i32 43
  %663 = load i32, ptr %662, align 8, !tbaa !83
  %664 = icmp sgt i32 %663, 0
  br i1 %664, label %665, label %670

665:                                              ; preds = %660
  %666 = load ptr, ptr %9, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.ImGuiWindow, ptr %666, i32 0, i32 43
  %668 = load i32, ptr %667, align 8, !tbaa !83
  %669 = add nsw i32 %668, -1
  store i32 %669, ptr %667, align 8, !tbaa !83
  br label %670

670:                                              ; preds = %665, %660
  %671 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %672 = trunc i8 %671 to i1
  br i1 %672, label %673, label %682

673:                                              ; preds = %670
  %674 = load i8, ptr %20, align 1, !tbaa !71, !range !67, !noundef !68
  %675 = trunc i8 %674 to i1
  br i1 %675, label %676, label %679

676:                                              ; preds = %673
  %677 = load i8, ptr %21, align 1, !tbaa !71, !range !67, !noundef !68
  %678 = trunc i8 %677 to i1
  br i1 %678, label %682, label %679

679:                                              ; preds = %676, %673
  %680 = load ptr, ptr %9, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.ImGuiWindow, ptr %680, i32 0, i32 43
  store i32 1, ptr %681, align 8, !tbaa !83
  br label %682

682:                                              ; preds = %679, %676, %670
  %683 = load i8, ptr %13, align 1, !tbaa !71, !range !67, !noundef !68
  %684 = trunc i8 %683 to i1
  br i1 %684, label %685, label %719

685:                                              ; preds = %682
  %686 = load i32, ptr %6, align 4, !tbaa !9
  %687 = and i32 %686, 100663296
  %688 = icmp ne i32 %687, 0
  br i1 %688, label %689, label %719

689:                                              ; preds = %685
  %690 = load ptr, ptr %9, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.ImGuiWindow, ptr %690, i32 0, i32 43
  store i32 1, ptr %691, align 8, !tbaa !83
  %692 = load i32, ptr %6, align 4, !tbaa !9
  %693 = and i32 %692, 64
  %694 = icmp ne i32 %693, 0
  br i1 %694, label %695, label %718

695:                                              ; preds = %689
  %696 = load i8, ptr %20, align 1, !tbaa !71, !range !67, !noundef !68
  %697 = trunc i8 %696 to i1
  br i1 %697, label %705, label %698

698:                                              ; preds = %695
  %699 = load ptr, ptr %9, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.ImGuiWindow, ptr %699, i32 0, i32 5
  %701 = getelementptr inbounds %struct.ImVec2, ptr %700, i32 0, i32 0
  store float 0.000000e+00, ptr %701, align 8, !tbaa !126
  %702 = load ptr, ptr %9, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.ImGuiWindow, ptr %702, i32 0, i32 4
  %704 = getelementptr inbounds %struct.ImVec2, ptr %703, i32 0, i32 0
  store float 0.000000e+00, ptr %704, align 8, !tbaa !127
  br label %705

705:                                              ; preds = %698, %695
  %706 = load i8, ptr %21, align 1, !tbaa !71, !range !67, !noundef !68
  %707 = trunc i8 %706 to i1
  br i1 %707, label %715, label %708

708:                                              ; preds = %705
  %709 = load ptr, ptr %9, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.ImGuiWindow, ptr %709, i32 0, i32 5
  %711 = getelementptr inbounds %struct.ImVec2, ptr %710, i32 0, i32 1
  store float 0.000000e+00, ptr %711, align 4, !tbaa !128
  %712 = load ptr, ptr %9, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.ImGuiWindow, ptr %712, i32 0, i32 4
  %714 = getelementptr inbounds %struct.ImVec2, ptr %713, i32 0, i32 1
  store float 0.000000e+00, ptr %714, align 4, !tbaa !129
  br label %715

715:                                              ; preds = %708, %705
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %716 = load ptr, ptr %9, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.ImGuiWindow, ptr %716, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %717, ptr align 4 %29, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  br label %718

718:                                              ; preds = %715, %689
  br label %719

719:                                              ; preds = %718, %685, %682
  %720 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %720)
  %721 = load i32, ptr %6, align 4, !tbaa !9
  %722 = and i32 %721, 16777216
  %723 = icmp ne i32 %722, 0
  br i1 %723, label %724, label %730

724:                                              ; preds = %719
  %725 = load ptr, ptr %8, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.ImGuiStyle, ptr %725, i32 0, i32 8
  %727 = load float, ptr %726, align 4, !tbaa !130
  %728 = load ptr, ptr %9, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.ImGuiWindow, ptr %728, i32 0, i32 10
  store float %727, ptr %729, align 4, !tbaa !131
  br label %750

730:                                              ; preds = %719
  %731 = load i32, ptr %6, align 4, !tbaa !9
  %732 = and i32 %731, 100663296
  %733 = icmp ne i32 %732, 0
  br i1 %733, label %734, label %742

734:                                              ; preds = %730
  %735 = load i32, ptr %6, align 4, !tbaa !9
  %736 = and i32 %735, 134217728
  %737 = icmp ne i32 %736, 0
  br i1 %737, label %742, label %738

738:                                              ; preds = %734
  %739 = load ptr, ptr %8, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.ImGuiStyle, ptr %739, i32 0, i32 10
  %741 = load float, ptr %740, align 4, !tbaa !132
  br label %746

742:                                              ; preds = %734, %730
  %743 = load ptr, ptr %8, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.ImGuiStyle, ptr %743, i32 0, i32 3
  %745 = load float, ptr %744, align 4, !tbaa !133
  br label %746

746:                                              ; preds = %742, %738
  %747 = phi float [ %741, %738 ], [ %745, %742 ]
  %748 = load ptr, ptr %9, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.ImGuiWindow, ptr %748, i32 0, i32 10
  store float %747, ptr %749, align 4, !tbaa !131
  br label %750

750:                                              ; preds = %746, %724
  %751 = load ptr, ptr %8, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.ImGuiStyle, ptr %751, i32 0, i32 1
  %753 = load ptr, ptr %9, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.ImGuiWindow, ptr %753, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %754, ptr align 4 %752, i64 8, i1 false), !tbaa.struct !102
  %755 = load i32, ptr %6, align 4, !tbaa !9
  %756 = and i32 %755, 16777216
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %758, label %781

758:                                              ; preds = %750
  %759 = load i32, ptr %6, align 4, !tbaa !9
  %760 = and i32 %759, 67174400
  %761 = icmp ne i32 %760, 0
  br i1 %761, label %781, label %762

762:                                              ; preds = %758
  %763 = load ptr, ptr %9, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.ImGuiWindow, ptr %763, i32 0, i32 10
  %765 = load float, ptr %764, align 4, !tbaa !131
  %766 = fcmp oeq float %765, 0.000000e+00
  br i1 %766, label %767, label %781

767:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #13
  %768 = load i32, ptr %6, align 4, !tbaa !9
  %769 = and i32 %768, 1024
  %770 = icmp ne i32 %769, 0
  br i1 %770, label %771, label %776

771:                                              ; preds = %767
  %772 = load ptr, ptr %8, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.ImGuiStyle, ptr %772, i32 0, i32 1
  %774 = getelementptr inbounds %struct.ImVec2, ptr %773, i32 0, i32 1
  %775 = load float, ptr %774, align 4, !tbaa !134
  br label %777

776:                                              ; preds = %767
  br label %777

777:                                              ; preds = %776, %771
  %778 = phi float [ %775, %771 ], [ 0.000000e+00, %776 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef %778)
  %779 = load ptr, ptr %9, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.ImGuiWindow, ptr %779, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %780, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  br label %781

781:                                              ; preds = %777, %762, %758, %750
  %782 = load i32, ptr %6, align 4, !tbaa !9
  %783 = and i32 %782, 1
  %784 = icmp ne i32 %783, 0
  br i1 %784, label %842, label %785

785:                                              ; preds = %781
  %786 = load i32, ptr %6, align 4, !tbaa !9
  %787 = and i32 %786, 32
  %788 = icmp ne i32 %787, 0
  br i1 %788, label %842, label %789

789:                                              ; preds = %785
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #13
  %790 = load ptr, ptr %9, align 8, !tbaa !5
  %791 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(956) %790)
  %792 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %31, i32 0, i32 0
  %793 = extractvalue { <2 x float>, <2 x float> } %791, 0
  store <2 x float> %793, ptr %792, align 4
  %794 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %31, i32 0, i32 1
  %795 = extractvalue { <2 x float>, <2 x float> } %791, 1
  store <2 x float> %795, ptr %794, align 4
  %796 = load ptr, ptr %7, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.ImGuiContext, ptr %796, i32 0, i32 28
  %798 = load ptr, ptr %797, align 8, !tbaa !135
  %799 = load ptr, ptr %9, align 8, !tbaa !5
  %800 = icmp eq ptr %798, %799
  br i1 %800, label %801, label %825

801:                                              ; preds = %789
  %802 = load ptr, ptr %7, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.ImGuiContext, ptr %802, i32 0, i32 34
  %804 = load i32, ptr %803, align 4, !tbaa !136
  %805 = icmp eq i32 %804, 0
  br i1 %805, label %806, label %825

806:                                              ; preds = %801
  %807 = load ptr, ptr %7, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.ImGuiContext, ptr %807, i32 0, i32 37
  %809 = load i32, ptr %808, align 4, !tbaa !137
  %810 = icmp eq i32 %809, 0
  br i1 %810, label %811, label %825

811:                                              ; preds = %806
  %812 = getelementptr inbounds %struct.ImRect, ptr %31, i32 0, i32 0
  %813 = getelementptr inbounds %struct.ImRect, ptr %31, i32 0, i32 1
  %814 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %812, ptr noundef nonnull align 4 dereferenceable(8) %813, i1 noundef zeroext true)
  br i1 %814, label %815, label %825

815:                                              ; preds = %811
  %816 = load ptr, ptr %7, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.ImGuiContext, ptr %816, i32 0, i32 3
  %818 = getelementptr inbounds %struct.ImGuiIO, ptr %817, i32 0, i32 65
  %819 = getelementptr inbounds [5 x i8], ptr %818, i64 0, i64 0
  %820 = load i8, ptr %819, align 1, !tbaa !71, !range !67, !noundef !68
  %821 = trunc i8 %820 to i1
  br i1 %821, label %822, label %825

822:                                              ; preds = %815
  %823 = load ptr, ptr %9, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.ImGuiWindow, ptr %823, i32 0, i32 25
  store i8 1, ptr %824, align 2, !tbaa !138
  br label %825

825:                                              ; preds = %822, %815, %811, %806, %801, %789
  %826 = load ptr, ptr %9, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.ImGuiWindow, ptr %826, i32 0, i32 25
  %828 = load i8, ptr %827, align 2, !tbaa !138, !range !67, !noundef !68
  %829 = trunc i8 %828 to i1
  br i1 %829, label %830, label %841

830:                                              ; preds = %825
  %831 = load ptr, ptr %9, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImGuiWindow, ptr %831, i32 0, i32 24
  %833 = load i8, ptr %832, align 1, !tbaa !139, !range !67, !noundef !68
  %834 = trunc i8 %833 to i1
  %835 = xor i1 %834, true
  %836 = load ptr, ptr %9, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.ImGuiWindow, ptr %836, i32 0, i32 24
  %838 = zext i1 %835 to i8
  store i8 %838, ptr %837, align 1, !tbaa !139
  %839 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %839)
  %840 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %840)
  br label %841

841:                                              ; preds = %830, %825
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #13
  br label %845

842:                                              ; preds = %785, %781
  %843 = load ptr, ptr %9, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.ImGuiWindow, ptr %843, i32 0, i32 24
  store i8 0, ptr %844, align 1, !tbaa !139
  br label %845

845:                                              ; preds = %842, %841
  %846 = load ptr, ptr %9, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.ImGuiWindow, ptr %846, i32 0, i32 25
  store i8 0, ptr %847, align 2, !tbaa !138
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %848 = load ptr, ptr %9, align 8, !tbaa !5
  %849 = load ptr, ptr %9, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.ImGuiWindow, ptr %849, i32 0, i32 6
  %851 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %848, ptr noundef nonnull align 4 dereferenceable(8) %850)
  store <2 x float> %851, ptr %32, align 4
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #13
  %852 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %853 = trunc i8 %852 to i1
  %854 = zext i1 %853 to i8
  store i8 %854, ptr %33, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #13
  %855 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %856 = trunc i8 %855 to i1
  %857 = zext i1 %856 to i8
  store i8 %857, ptr %34, align 1, !tbaa !71
  %858 = load i32, ptr %6, align 4, !tbaa !9
  %859 = and i32 %858, 64
  %860 = icmp ne i32 %859, 0
  br i1 %860, label %861, label %885

861:                                              ; preds = %845
  %862 = load ptr, ptr %9, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.ImGuiWindow, ptr %862, i32 0, i32 24
  %864 = load i8, ptr %863, align 1, !tbaa !139, !range !67, !noundef !68
  %865 = trunc i8 %864 to i1
  br i1 %865, label %885, label %866

866:                                              ; preds = %861
  %867 = load i8, ptr %20, align 1, !tbaa !71, !range !67, !noundef !68
  %868 = trunc i8 %867 to i1
  br i1 %868, label %875, label %869

869:                                              ; preds = %866
  %870 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 0
  %871 = load float, ptr %870, align 4, !tbaa !140
  %872 = load ptr, ptr %9, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.ImGuiWindow, ptr %872, i32 0, i32 5
  %874 = getelementptr inbounds %struct.ImVec2, ptr %873, i32 0, i32 0
  store float %871, ptr %874, align 8, !tbaa !126
  store i8 1, ptr %33, align 1, !tbaa !71
  br label %875

875:                                              ; preds = %869, %866
  %876 = load i8, ptr %21, align 1, !tbaa !71, !range !67, !noundef !68
  %877 = trunc i8 %876 to i1
  br i1 %877, label %884, label %878

878:                                              ; preds = %875
  %879 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 1
  %880 = load float, ptr %879, align 4, !tbaa !141
  %881 = load ptr, ptr %9, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.ImGuiWindow, ptr %881, i32 0, i32 5
  %883 = getelementptr inbounds %struct.ImVec2, ptr %882, i32 0, i32 1
  store float %880, ptr %883, align 4, !tbaa !128
  store i8 1, ptr %34, align 1, !tbaa !71
  br label %884

884:                                              ; preds = %878, %875
  br label %966

885:                                              ; preds = %861, %845
  %886 = load ptr, ptr %9, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.ImGuiWindow, ptr %886, i32 0, i32 37
  %888 = load i8, ptr %887, align 4, !tbaa !142
  %889 = sext i8 %888 to i32
  %890 = icmp sgt i32 %889, 0
  br i1 %890, label %897, label %891

891:                                              ; preds = %885
  %892 = load ptr, ptr %9, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.ImGuiWindow, ptr %892, i32 0, i32 38
  %894 = load i8, ptr %893, align 1, !tbaa !143
  %895 = sext i8 %894 to i32
  %896 = icmp sgt i32 %895, 0
  br i1 %896, label %897, label %965

897:                                              ; preds = %891, %885
  %898 = load i8, ptr %20, align 1, !tbaa !71, !range !67, !noundef !68
  %899 = trunc i8 %898 to i1
  br i1 %899, label %927, label %900

900:                                              ; preds = %897
  %901 = load ptr, ptr %9, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.ImGuiWindow, ptr %901, i32 0, i32 37
  %903 = load i8, ptr %902, align 4, !tbaa !142
  %904 = sext i8 %903 to i32
  %905 = icmp sgt i32 %904, 0
  br i1 %905, label %906, label %927

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

911:                                              ; preds = %906
  %912 = load ptr, ptr %9, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.ImGuiWindow, ptr %912, i32 0, i32 5
  %914 = getelementptr inbounds %struct.ImVec2, ptr %913, i32 0, i32 0
  %915 = load float, ptr %914, align 8, !tbaa !126
  %916 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 0
  %917 = load float, ptr %916, align 4, !tbaa !140
  %918 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %915, float noundef %917)
  br label %922

919:                                              ; preds = %906
  %920 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 0
  %921 = load float, ptr %920, align 4, !tbaa !140
  br label %922

922:                                              ; preds = %919, %911
  %923 = phi float [ %918, %911 ], [ %921, %919 ]
  %924 = load ptr, ptr %9, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.ImGuiWindow, ptr %924, i32 0, i32 5
  %926 = getelementptr inbounds %struct.ImVec2, ptr %925, i32 0, i32 0
  store float %923, ptr %926, align 8, !tbaa !126
  store i8 1, ptr %33, align 1, !tbaa !71
  br label %927

927:                                              ; preds = %922, %900, %897
  %928 = load i8, ptr %21, align 1, !tbaa !71, !range !67, !noundef !68
  %929 = trunc i8 %928 to i1
  br i1 %929, label %957, label %930

930:                                              ; preds = %927
  %931 = load ptr, ptr %9, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.ImGuiWindow, ptr %931, i32 0, i32 38
  %933 = load i8, ptr %932, align 1, !tbaa !143
  %934 = sext i8 %933 to i32
  %935 = icmp sgt i32 %934, 0
  br i1 %935, label %936, label %957

936:                                              ; preds = %930
  %937 = load ptr, ptr %9, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.ImGuiWindow, ptr %937, i32 0, i32 40
  %939 = load i8, ptr %938, align 1, !tbaa !144, !range !67, !noundef !68
  %940 = trunc i8 %939 to i1
  br i1 %940, label %941, label %949

941:                                              ; preds = %936
  %942 = load ptr, ptr %9, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.ImGuiWindow, ptr %942, i32 0, i32 5
  %944 = getelementptr inbounds %struct.ImVec2, ptr %943, i32 0, i32 1
  %945 = load float, ptr %944, align 4, !tbaa !128
  %946 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 1
  %947 = load float, ptr %946, align 4, !tbaa !141
  %948 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %945, float noundef %947)
  br label %952

949:                                              ; preds = %936
  %950 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 1
  %951 = load float, ptr %950, align 4, !tbaa !141
  br label %952

952:                                              ; preds = %949, %941
  %953 = phi float [ %948, %941 ], [ %951, %949 ]
  %954 = load ptr, ptr %9, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImGuiWindow, ptr %954, i32 0, i32 5
  %956 = getelementptr inbounds %struct.ImVec2, ptr %955, i32 0, i32 1
  store float %953, ptr %956, align 4, !tbaa !128
  store i8 1, ptr %34, align 1, !tbaa !71
  br label %957

957:                                              ; preds = %952, %930, %927
  %958 = load ptr, ptr %9, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.ImGuiWindow, ptr %958, i32 0, i32 24
  %960 = load i8, ptr %959, align 1, !tbaa !139, !range !67, !noundef !68
  %961 = trunc i8 %960 to i1
  br i1 %961, label %964, label %962

962:                                              ; preds = %957
  %963 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %963)
  br label %964

964:                                              ; preds = %962, %957
  br label %965

965:                                              ; preds = %964, %891
  br label %966

966:                                              ; preds = %965, %884
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #13
  %967 = load ptr, ptr %9, align 8, !tbaa !5
  %968 = load ptr, ptr %9, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImGuiWindow, ptr %968, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 8 %969, i64 8, i1 false), !tbaa.struct !102
  %970 = load <2 x float>, ptr %36, align 4
  %971 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %967, <2 x float> %970)
  store <2 x float> %971, ptr %35, align 4
  %972 = load ptr, ptr %9, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.ImGuiWindow, ptr %972, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %973, ptr align 4 %35, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  %974 = load ptr, ptr %9, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.ImGuiWindow, ptr %974, i32 0, i32 24
  %976 = load i8, ptr %975, align 1, !tbaa !139, !range !67, !noundef !68
  %977 = trunc i8 %976 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #13
  br i1 %977, label %978, label %990

978:                                              ; preds = %966
  %979 = load i32, ptr %6, align 4, !tbaa !9
  %980 = and i32 %979, 16777216
  %981 = icmp ne i32 %980, 0
  br i1 %981, label %990, label %982

982:                                              ; preds = %978
  %983 = load ptr, ptr %9, align 8, !tbaa !5
  %984 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(956) %983)
  %985 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %38, i32 0, i32 0
  %986 = extractvalue { <2 x float>, <2 x float> } %984, 0
  store <2 x float> %986, ptr %985, align 4
  %987 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %38, i32 0, i32 1
  %988 = extractvalue { <2 x float>, <2 x float> } %984, 1
  store <2 x float> %988, ptr %987, align 4
  %989 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %38)
  store <2 x float> %989, ptr %37, align 4
  br label %993

990:                                              ; preds = %978, %966
  %991 = load ptr, ptr %9, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.ImGuiWindow, ptr %991, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 8 %992, i64 8, i1 false), !tbaa.struct !102
  br label %993

993:                                              ; preds = %990, %982
  %994 = load ptr, ptr %9, align 8, !tbaa !5
  %995 = getelementptr inbounds %struct.ImGuiWindow, ptr %994, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %995, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #13
  %996 = load ptr, ptr %9, align 8, !tbaa !5
  %997 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(956) %996)
  %998 = load ptr, ptr %9, align 8, !tbaa !5
  %999 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(956) %998)
  %1000 = fadd float %997, %999
  store float %1000, ptr %39, align 4, !tbaa !103
  %1001 = load i8, ptr %13, align 1, !tbaa !71, !range !67, !noundef !68
  %1002 = trunc i8 %1001 to i1
  br i1 %1002, label %1003, label %1020

1003:                                             ; preds = %993
  %1004 = load ptr, ptr %9, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.ImGuiWindow, ptr %1004, i32 0, i32 41
  store i32 -1, ptr %1005, align 8, !tbaa !145
  %1006 = load i32, ptr %6, align 4, !tbaa !9
  %1007 = and i32 %1006, 67108864
  %1008 = icmp ne i32 %1007, 0
  br i1 %1008, label %1009, label %1019

1009:                                             ; preds = %1003
  %1010 = load i8, ptr %19, align 1, !tbaa !71, !range !67, !noundef !68
  %1011 = trunc i8 %1010 to i1
  br i1 %1011, label %1019, label %1012

1012:                                             ; preds = %1009
  %1013 = load ptr, ptr %7, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.ImGuiContext, ptr %1013, i32 0, i32 71
  %1015 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1014)
  %1016 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1015, i32 0, i32 5
  %1017 = load ptr, ptr %9, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.ImGuiWindow, ptr %1017, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1018, ptr align 8 %1016, i64 8, i1 false), !tbaa.struct !102
  br label %1019

1019:                                             ; preds = %1012, %1009, %1003
  br label %1020

1020:                                             ; preds = %1019, %993
  %1021 = load i32, ptr %6, align 4, !tbaa !9
  %1022 = and i32 %1021, 16777216
  %1023 = icmp ne i32 %1022, 0
  br i1 %1023, label %1024, label %1065

1024:                                             ; preds = %1020
  %1025 = load ptr, ptr %17, align 8, !tbaa !5
  %1026 = icmp ne ptr %1025, null
  br i1 %1026, label %1027, label %1032

1027:                                             ; preds = %1024
  %1028 = load ptr, ptr %17, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.ImGuiWindow, ptr %1028, i32 0, i32 21
  %1030 = load i8, ptr %1029, align 2, !tbaa !116, !range !67, !noundef !68
  %1031 = trunc i8 %1030 to i1
  br label %1032

1032:                                             ; preds = %1027, %1024
  %1033 = phi i1 [ false, %1024 ], [ %1031, %1027 ]
  br i1 %1033, label %1034, label %1035

1034:                                             ; preds = %1032
  br label %1037

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

1036:                                             ; No predecessors!
  br label %1037

1037:                                             ; preds = %1036, %1034
  %1038 = load ptr, ptr %17, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.ImGuiWindow, ptr %1038, i32 0, i32 50
  %1040 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1039, i32 0, i32 28
  %1041 = getelementptr inbounds %struct.ImVector.3, ptr %1040, i32 0, i32 0
  %1042 = load i32, ptr %1041, align 8, !tbaa !146
  %1043 = trunc i32 %1042 to i16
  %1044 = load ptr, ptr %9, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.ImGuiWindow, ptr %1044, i32 0, i32 34
  store i16 %1043, ptr %1045, align 4, !tbaa !93
  %1046 = load ptr, ptr %17, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.ImGuiWindow, ptr %1046, i32 0, i32 50
  %1048 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1047, i32 0, i32 28
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1048, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %1049 = load i32, ptr %6, align 4, !tbaa !9
  %1050 = and i32 %1049, 67108864
  %1051 = icmp ne i32 %1050, 0
  br i1 %1051, label %1064, label %1052

1052:                                             ; preds = %1037
  %1053 = load i8, ptr %19, align 1, !tbaa !71, !range !67, !noundef !68
  %1054 = trunc i8 %1053 to i1
  br i1 %1054, label %1064, label %1055

1055:                                             ; preds = %1052
  %1056 = load i8, ptr %23, align 1, !tbaa !71, !range !67, !noundef !68
  %1057 = trunc i8 %1056 to i1
  br i1 %1057, label %1064, label %1058

1058:                                             ; preds = %1055
  %1059 = load ptr, ptr %17, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.ImGuiWindow, ptr %1059, i32 0, i32 50
  %1061 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1060, i32 0, i32 0
  %1062 = load ptr, ptr %9, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.ImGuiWindow, ptr %1062, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1063, ptr align 8 %1061, i64 8, i1 false), !tbaa.struct !102
  br label %1064

1064:                                             ; preds = %1058, %1055, %1052, %1037
  br label %1065

1065:                                             ; preds = %1064, %1020
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #13
  %1066 = load ptr, ptr %9, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ImGuiWindow, ptr %1066, i32 0, i32 47
  %1068 = getelementptr inbounds %struct.ImVec2, ptr %1067, i32 0, i32 0
  %1069 = load float, ptr %1068, align 8, !tbaa !147
  %1070 = fcmp une float %1069, 0x47EFFFFFE0000000
  br i1 %1070, label %1071, label %1076

1071:                                             ; preds = %1065
  %1072 = load ptr, ptr %9, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.ImGuiWindow, ptr %1072, i32 0, i32 43
  %1074 = load i32, ptr %1073, align 8, !tbaa !83
  %1075 = icmp eq i32 %1074, 0
  br label %1076

1076:                                             ; preds = %1071, %1065
  %1077 = phi i1 [ false, %1065 ], [ %1075, %1071 ]
  %1078 = zext i1 %1077 to i8
  store i8 %1078, ptr %40, align 1, !tbaa !71
  %1079 = load i8, ptr %40, align 1, !tbaa !71, !range !67, !noundef !68
  %1080 = trunc i8 %1079 to i1
  br i1 %1080, label %1081, label %1091

1081:                                             ; preds = %1076
  %1082 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #13
  %1083 = load ptr, ptr %9, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.ImGuiWindow, ptr %1083, i32 0, i32 47
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #13
  %1085 = load ptr, ptr %9, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.ImGuiWindow, ptr %1085, i32 0, i32 5
  %1087 = load ptr, ptr %9, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.ImGuiWindow, ptr %1087, i32 0, i32 48
  %1089 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1086, ptr noundef nonnull align 4 dereferenceable(8) %1088)
  store <2 x float> %1089, ptr %42, align 4
  %1090 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1084, ptr noundef nonnull align 4 dereferenceable(8) %42)
  store <2 x float> %1090, ptr %41, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1082, ptr noundef nonnull align 4 dereferenceable(8) %41, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #13
  br label %1133

1091:                                             ; preds = %1076
  %1092 = load i32, ptr %6, align 4, !tbaa !9
  %1093 = and i32 %1092, 268435456
  %1094 = icmp ne i32 %1093, 0
  br i1 %1094, label %1095, label %1100

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

1100:                                             ; preds = %1091
  %1101 = load i32, ptr %6, align 4, !tbaa !9
  %1102 = and i32 %1101, 67108864
  %1103 = icmp ne i32 %1102, 0
  br i1 %1103, label %1104, label %1115

1104:                                             ; preds = %1100
  %1105 = load i8, ptr %19, align 1, !tbaa !71, !range !67, !noundef !68
  %1106 = trunc i8 %1105 to i1
  br i1 %1106, label %1115, label %1107

1107:                                             ; preds = %1104
  %1108 = load i8, ptr %14, align 1, !tbaa !71, !range !67, !noundef !68
  %1109 = trunc i8 %1108 to i1
  br i1 %1109, label %1110, label %1115

1110:                                             ; preds = %1107
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %1111 = load ptr, ptr %9, align 8, !tbaa !5
  %1112 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1111)
  store <2 x float> %1112, ptr %44, align 4
  %1113 = load ptr, ptr %9, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.ImGuiWindow, ptr %1113, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1114, ptr align 4 %44, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  br label %1131

1115:                                             ; preds = %1107, %1104, %1100
  %1116 = load i32, ptr %6, align 4, !tbaa !9
  %1117 = and i32 %1116, 33554432
  %1118 = icmp ne i32 %1117, 0
  br i1 %1118, label %1119, label %1130

1119:                                             ; preds = %1115
  %1120 = load i8, ptr %19, align 1, !tbaa !71, !range !67, !noundef !68
  %1121 = trunc i8 %1120 to i1
  br i1 %1121, label %1130, label %1122

1122:                                             ; preds = %1119
  %1123 = load i8, ptr %23, align 1, !tbaa !71, !range !67, !noundef !68
  %1124 = trunc i8 %1123 to i1
  br i1 %1124, label %1130, label %1125

1125:                                             ; preds = %1122
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #13
  %1126 = load ptr, ptr %9, align 8, !tbaa !5
  %1127 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1126)
  store <2 x float> %1127, ptr %45, align 4
  %1128 = load ptr, ptr %9, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.ImGuiWindow, ptr %1128, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1129, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #13
  br label %1130

1130:                                             ; preds = %1125, %1122, %1119, %1115
  br label %1131

1131:                                             ; preds = %1130, %1110
  br label %1132

1132:                                             ; preds = %1131, %1095
  br label %1133

1133:                                             ; preds = %1132, %1081
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #13
  %1134 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %1135 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %46, i32 0, i32 0
  %1136 = extractvalue { <2 x float>, <2 x float> } %1134, 0
  store <2 x float> %1136, ptr %1135, align 4
  %1137 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %46, i32 0, i32 1
  %1138 = extractvalue { <2 x float>, <2 x float> } %1134, 1
  store <2 x float> %1138, ptr %1137, align 4
  %1139 = load i8, ptr %19, align 1, !tbaa !71, !range !67, !noundef !68
  %1140 = trunc i8 %1139 to i1
  br i1 %1140, label %1171, label %1141

1141:                                             ; preds = %1133
  %1142 = load i32, ptr %6, align 4, !tbaa !9
  %1143 = and i32 %1142, 16777216
  %1144 = icmp ne i32 %1143, 0
  br i1 %1144, label %1171, label %1145

1145:                                             ; preds = %1141
  %1146 = load ptr, ptr %9, align 8, !tbaa !5
  %1147 = getelementptr inbounds %struct.ImGuiWindow, ptr %1146, i32 0, i32 37
  %1148 = load i8, ptr %1147, align 4, !tbaa !142
  %1149 = sext i8 %1148 to i32
  %1150 = icmp sle i32 %1149, 0
  br i1 %1150, label %1151, label %1171

1151:                                             ; preds = %1145
  %1152 = load ptr, ptr %9, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.ImGuiWindow, ptr %1152, i32 0, i32 38
  %1154 = load i8, ptr %1153, align 1, !tbaa !143
  %1155 = sext i8 %1154 to i32
  %1156 = icmp sle i32 %1155, 0
  br i1 %1156, label %1157, label %1171

1157:                                             ; preds = %1151
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  %1158 = load ptr, ptr %8, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.ImGuiStyle, ptr %1158, i32 0, i32 29
  %1160 = load ptr, ptr %8, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.ImGuiStyle, ptr %1160, i32 0, i32 30
  %1162 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1159, ptr noundef nonnull align 4 dereferenceable(8) %1161)
  store <2 x float> %1162, ptr %47, align 4
  %1163 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %46)
  %1164 = fcmp ogt float %1163, 0.000000e+00
  br i1 %1164, label %1165, label %1170

1165:                                             ; preds = %1157
  %1166 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %46)
  %1167 = fcmp ogt float %1166, 0.000000e+00
  br i1 %1167, label %1168, label %1170

1168:                                             ; preds = %1165
  %1169 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRectRK6ImVec2(ptr noundef %1169, ptr noundef nonnull align 4 dereferenceable(16) %46, ptr noundef nonnull align 4 dereferenceable(8) %47)
  br label %1170

1170:                                             ; preds = %1168, %1165, %1157
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  br label %1171

1171:                                             ; preds = %1170, %1151, %1145, %1141, %1133
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #13
  %1172 = load ptr, ptr %9, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.ImGuiWindow, ptr %1172, i32 0, i32 3
  %1174 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1173)
  store <2 x float> %1174, ptr %48, align 4
  %1175 = load ptr, ptr %9, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.ImGuiWindow, ptr %1175, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1176, ptr align 4 %48, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #13
  %1177 = load i32, ptr %6, align 4, !tbaa !9
  %1178 = and i32 %1177, 16777216
  %1179 = icmp ne i32 %1178, 0
  br i1 %1179, label %1180, label %1184

1180:                                             ; preds = %1171
  %1181 = load ptr, ptr %8, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.ImGuiStyle, ptr %1181, i32 0, i32 7
  %1183 = load float, ptr %1182, align 4, !tbaa !148
  br label %1202

1184:                                             ; preds = %1171
  %1185 = load i32, ptr %6, align 4, !tbaa !9
  %1186 = and i32 %1185, 67108864
  %1187 = icmp ne i32 %1186, 0
  br i1 %1187, label %1188, label %1196

1188:                                             ; preds = %1184
  %1189 = load i32, ptr %6, align 4, !tbaa !9
  %1190 = and i32 %1189, 134217728
  %1191 = icmp ne i32 %1190, 0
  br i1 %1191, label %1196, label %1192

1192:                                             ; preds = %1188
  %1193 = load ptr, ptr %8, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.ImGuiStyle, ptr %1193, i32 0, i32 9
  %1195 = load float, ptr %1194, align 4, !tbaa !149
  br label %1200

1196:                                             ; preds = %1188, %1184
  %1197 = load ptr, ptr %8, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.ImGuiStyle, ptr %1197, i32 0, i32 2
  %1199 = load float, ptr %1198, align 4, !tbaa !150
  br label %1200

1200:                                             ; preds = %1196, %1192
  %1201 = phi float [ %1195, %1192 ], [ %1199, %1196 ]
  br label %1202

1202:                                             ; preds = %1200, %1180
  %1203 = phi float [ %1183, %1180 ], [ %1201, %1200 ]
  %1204 = load ptr, ptr %9, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.ImGuiWindow, ptr %1204, i32 0, i32 9
  store float %1203, ptr %1205, align 8, !tbaa !151
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #13
  store i8 0, ptr %49, align 1, !tbaa !71
  %1206 = load i8, ptr %13, align 1, !tbaa !71, !range !67, !noundef !68
  %1207 = trunc i8 %1206 to i1
  br i1 %1207, label %1208, label %1224

1208:                                             ; preds = %1202
  %1209 = load i32, ptr %6, align 4, !tbaa !9
  %1210 = and i32 %1209, 4096
  %1211 = icmp ne i32 %1210, 0
  br i1 %1211, label %1224, label %1212

1212:                                             ; preds = %1208
  %1213 = load i32, ptr %6, align 4, !tbaa !9
  %1214 = and i32 %1213, 67108864
  %1215 = icmp ne i32 %1214, 0
  br i1 %1215, label %1216, label %1217

1216:                                             ; preds = %1212
  store i8 1, ptr %49, align 1, !tbaa !71
  br label %1223

1217:                                             ; preds = %1212
  %1218 = load i32, ptr %6, align 4, !tbaa !9
  %1219 = and i32 %1218, 50331648
  %1220 = icmp eq i32 %1219, 0
  br i1 %1220, label %1221, label %1222

1221:                                             ; preds = %1217
  store i8 1, ptr %49, align 1, !tbaa !71
  br label %1222

1222:                                             ; preds = %1221, %1217
  br label %1223

1223:                                             ; preds = %1222, %1216
  br label %1224

1224:                                             ; preds = %1223, %1208, %1202
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #13
  store i32 -1, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #13
  call void @llvm.memset.p0.i64(ptr align 16 %51, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #13
  %1225 = load ptr, ptr %7, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.ImGuiContext, ptr %1225, i32 0, i32 3
  %1227 = getelementptr inbounds %struct.ImGuiIO, ptr %1226, i32 0, i32 22
  %1228 = load i8, ptr %1227, align 1, !tbaa !152, !range !67, !noundef !68
  %1229 = trunc i8 %1228 to i1
  %1230 = zext i1 %1229 to i64
  %1231 = select i1 %1229, i32 2, i32 1
  store i32 %1231, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #13
  %1232 = load ptr, ptr %7, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.ImGuiContext, ptr %1232, i32 0, i32 6
  %1234 = load float, ptr %1233, align 8, !tbaa !153
  %1235 = fmul float %1234, 0x3FF59999A0000000
  %1236 = load ptr, ptr %9, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.ImGuiWindow, ptr %1236, i32 0, i32 9
  %1238 = load float, ptr %1237, align 8, !tbaa !151
  %1239 = fadd float %1238, 1.000000e+00
  %1240 = load ptr, ptr %7, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.ImGuiContext, ptr %1240, i32 0, i32 6
  %1242 = load float, ptr %1241, align 8, !tbaa !153
  %1243 = call float @llvm.fmuladd.f32(float %1242, float 0x3FC99999A0000000, float %1239)
  %1244 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1235, float noundef %1243)
  %1245 = fptosi float %1244 to i32
  %1246 = sitofp i32 %1245 to float
  store float %1246, ptr %53, align 4, !tbaa !103
  %1247 = load ptr, ptr %9, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.ImGuiWindow, ptr %1247, i32 0, i32 24
  %1249 = load i8, ptr %1248, align 1, !tbaa !139, !range !67, !noundef !68
  %1250 = trunc i8 %1249 to i1
  br i1 %1250, label %1258, label %1251

1251:                                             ; preds = %1224
  %1252 = load ptr, ptr %9, align 8, !tbaa !5
  %1253 = load i32, ptr %52, align 4, !tbaa !9
  %1254 = getelementptr inbounds [4 x i32], ptr %51, i64 0, i64 0
  %1255 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(ptr noundef %1252, ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef %50, i32 noundef %1253, ptr noundef %1254)
  br i1 %1255, label %1256, label %1257

1256:                                             ; preds = %1251
  store i8 1, ptr %34, align 1, !tbaa !71
  store i8 1, ptr %33, align 1, !tbaa !71
  br label %1257

1257:                                             ; preds = %1256, %1251
  br label %1258

1258:                                             ; preds = %1257, %1224
  %1259 = load i32, ptr %50, align 4, !tbaa !9
  %1260 = trunc i32 %1259 to i8
  %1261 = load ptr, ptr %9, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.ImGuiWindow, ptr %1261, i32 0, i32 31
  store i8 %1260, ptr %1262, align 8, !tbaa !154
  %1263 = load ptr, ptr %9, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.ImGuiWindow, ptr %1263, i32 0, i32 24
  %1265 = load i8, ptr %1264, align 1, !tbaa !139, !range !67, !noundef !68
  %1266 = trunc i8 %1265 to i1
  br i1 %1266, label %1419, label %1267

1267:                                             ; preds = %1258
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #13
  %1268 = load ptr, ptr %9, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.ImGuiWindow, ptr %1268, i32 0, i32 5
  %1270 = getelementptr inbounds %struct.ImVec2, ptr %1269, i32 0, i32 0
  %1271 = load float, ptr %1270, align 8, !tbaa !126
  %1272 = load ptr, ptr %9, align 8, !tbaa !5
  %1273 = getelementptr inbounds %struct.ImGuiWindow, ptr %1272, i32 0, i32 5
  %1274 = getelementptr inbounds %struct.ImVec2, ptr %1273, i32 0, i32 1
  %1275 = load float, ptr %1274, align 4, !tbaa !128
  %1276 = load float, ptr %39, align 4, !tbaa !103
  %1277 = fsub float %1275, %1276
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1271, float noundef %1277)
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %1278 = load ptr, ptr %9, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.ImGuiWindow, ptr %1278, i32 0, i32 52
  %1280 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1279)
  store <2 x float> %1280, ptr %56, align 4
  %1281 = load ptr, ptr %9, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.ImGuiWindow, ptr %1281, i32 0, i32 18
  %1283 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %56, ptr noundef nonnull align 4 dereferenceable(8) %1282)
  store <2 x float> %1283, ptr %55, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #13
  %1284 = load i8, ptr %10, align 1, !tbaa !71, !range !67, !noundef !68
  %1285 = trunc i8 %1284 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  br i1 %1285, label %1286, label %1287

1286:                                             ; preds = %1267
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %57, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %1294

1287:                                             ; preds = %1267
  %1288 = load ptr, ptr %9, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.ImGuiWindow, ptr %1288, i32 0, i32 6
  %1290 = load ptr, ptr %9, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.ImGuiWindow, ptr %1290, i32 0, i32 8
  %1292 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1291, float noundef 2.000000e+00)
  store <2 x float> %1292, ptr %58, align 4
  %1293 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1289, ptr noundef nonnull align 4 dereferenceable(8) %58)
  store <2 x float> %1293, ptr %57, align 4
  br label %1294

1294:                                             ; preds = %1287, %1286
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #13
  %1295 = load i8, ptr %33, align 1, !tbaa !71, !range !67, !noundef !68
  %1296 = trunc i8 %1295 to i1
  br i1 %1296, label %1297, label %1300

1297:                                             ; preds = %1294
  %1298 = getelementptr inbounds %struct.ImVec2, ptr %54, i32 0, i32 0
  %1299 = load float, ptr %1298, align 4, !tbaa !140
  br label %1303

1300:                                             ; preds = %1294
  %1301 = getelementptr inbounds %struct.ImVec2, ptr %55, i32 0, i32 0
  %1302 = load float, ptr %1301, align 4, !tbaa !140
  br label %1303

1303:                                             ; preds = %1300, %1297
  %1304 = phi float [ %1299, %1297 ], [ %1302, %1300 ]
  store float %1304, ptr %59, align 4, !tbaa !103
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #13
  %1305 = load i8, ptr %34, align 1, !tbaa !71, !range !67, !noundef !68
  %1306 = trunc i8 %1305 to i1
  br i1 %1306, label %1307, label %1310

1307:                                             ; preds = %1303
  %1308 = getelementptr inbounds %struct.ImVec2, ptr %54, i32 0, i32 1
  %1309 = load float, ptr %1308, align 4, !tbaa !141
  br label %1313

1310:                                             ; preds = %1303
  %1311 = getelementptr inbounds %struct.ImVec2, ptr %55, i32 0, i32 1
  %1312 = load float, ptr %1311, align 4, !tbaa !141
  br label %1313

1313:                                             ; preds = %1310, %1307
  %1314 = phi float [ %1309, %1307 ], [ %1312, %1310 ]
  store float %1314, ptr %60, align 4, !tbaa !103
  %1315 = load i32, ptr %6, align 4, !tbaa !9
  %1316 = and i32 %1315, 16384
  %1317 = icmp ne i32 %1316, 0
  br i1 %1317, label %1330, label %1318

1318:                                             ; preds = %1313
  %1319 = getelementptr inbounds %struct.ImVec2, ptr %57, i32 0, i32 1
  %1320 = load float, ptr %1319, align 4, !tbaa !141
  %1321 = load float, ptr %60, align 4, !tbaa !103
  %1322 = fcmp ogt float %1320, %1321
  br i1 %1322, label %1323, label %1328

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

1328:                                             ; preds = %1323, %1318
  %1329 = phi i1 [ false, %1318 ], [ %1327, %1323 ]
  br label %1330

1330:                                             ; preds = %1328, %1313
  %1331 = phi i1 [ true, %1313 ], [ %1329, %1328 ]
  %1332 = load ptr, ptr %9, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.ImGuiWindow, ptr %1332, i32 0, i32 20
  %1334 = zext i1 %1331 to i8
  store i8 %1334, ptr %1333, align 1, !tbaa !155
  %1335 = load i32, ptr %6, align 4, !tbaa !9
  %1336 = and i32 %1335, 32768
  %1337 = icmp ne i32 %1336, 0
  br i1 %1337, label %1365, label %1338

1338:                                             ; preds = %1330
  %1339 = getelementptr inbounds %struct.ImVec2, ptr %57, i32 0, i32 0
  %1340 = load float, ptr %1339, align 4, !tbaa !140
  %1341 = load float, ptr %59, align 4, !tbaa !103
  %1342 = load ptr, ptr %9, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.ImGuiWindow, ptr %1342, i32 0, i32 20
  %1344 = load i8, ptr %1343, align 1, !tbaa !155, !range !67, !noundef !68
  %1345 = trunc i8 %1344 to i1
  br i1 %1345, label %1346, label %1350

1346:                                             ; preds = %1338
  %1347 = load ptr, ptr %8, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.ImGuiStyle, ptr %1347, i32 0, i32 19
  %1349 = load float, ptr %1348, align 4, !tbaa !156
  br label %1351

1350:                                             ; preds = %1338
  br label %1351

1351:                                             ; preds = %1350, %1346
  %1352 = phi float [ %1349, %1346 ], [ 0.000000e+00, %1350 ]
  %1353 = fsub float %1341, %1352
  %1354 = fcmp ogt float %1340, %1353
  br i1 %1354, label %1355, label %1363

1355:                                             ; preds = %1351
  %1356 = load i32, ptr %6, align 4, !tbaa !9
  %1357 = and i32 %1356, 8
  %1358 = icmp ne i32 %1357, 0
  br i1 %1358, label %1363, label %1359

1359:                                             ; preds = %1355
  %1360 = load i32, ptr %6, align 4, !tbaa !9
  %1361 = and i32 %1360, 2048
  %1362 = icmp ne i32 %1361, 0
  br label %1363

1363:                                             ; preds = %1359, %1355, %1351
  %1364 = phi i1 [ false, %1355 ], [ false, %1351 ], [ %1362, %1359 ]
  br label %1365

1365:                                             ; preds = %1363, %1330
  %1366 = phi i1 [ true, %1330 ], [ %1364, %1363 ]
  %1367 = load ptr, ptr %9, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.ImGuiWindow, ptr %1367, i32 0, i32 19
  %1369 = zext i1 %1366 to i8
  store i8 %1369, ptr %1368, align 4, !tbaa !157
  %1370 = load ptr, ptr %9, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.ImGuiWindow, ptr %1370, i32 0, i32 19
  %1372 = load i8, ptr %1371, align 4, !tbaa !157, !range !67, !noundef !68
  %1373 = trunc i8 %1372 to i1
  br i1 %1373, label %1374, label %1394

1374:                                             ; preds = %1365
  %1375 = load ptr, ptr %9, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.ImGuiWindow, ptr %1375, i32 0, i32 20
  %1377 = load i8, ptr %1376, align 1, !tbaa !155, !range !67, !noundef !68
  %1378 = trunc i8 %1377 to i1
  br i1 %1378, label %1394, label %1379

1379:                                             ; preds = %1374
  %1380 = getelementptr inbounds %struct.ImVec2, ptr %57, i32 0, i32 1
  %1381 = load float, ptr %1380, align 4, !tbaa !141
  %1382 = load float, ptr %60, align 4, !tbaa !103
  %1383 = fcmp ogt float %1381, %1382
  br i1 %1383, label %1384, label %1389

1384:                                             ; preds = %1379
  %1385 = load i32, ptr %6, align 4, !tbaa !9
  %1386 = and i32 %1385, 8
  %1387 = icmp ne i32 %1386, 0
  %1388 = xor i1 %1387, true
  br label %1389

1389:                                             ; preds = %1384, %1379
  %1390 = phi i1 [ false, %1379 ], [ %1388, %1384 ]
  %1391 = load ptr, ptr %9, align 8, !tbaa !5
  %1392 = getelementptr inbounds %struct.ImGuiWindow, ptr %1391, i32 0, i32 20
  %1393 = zext i1 %1390 to i8
  store i8 %1393, ptr %1392, align 1, !tbaa !155
  br label %1394

1394:                                             ; preds = %1389, %1374, %1365
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #13
  %1395 = load ptr, ptr %9, align 8, !tbaa !5
  %1396 = getelementptr inbounds %struct.ImGuiWindow, ptr %1395, i32 0, i32 20
  %1397 = load i8, ptr %1396, align 1, !tbaa !155, !range !67, !noundef !68
  %1398 = trunc i8 %1397 to i1
  br i1 %1398, label %1399, label %1403

1399:                                             ; preds = %1394
  %1400 = load ptr, ptr %8, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.ImGuiStyle, ptr %1400, i32 0, i32 19
  %1402 = load float, ptr %1401, align 4, !tbaa !156
  br label %1404

1403:                                             ; preds = %1394
  br label %1404

1404:                                             ; preds = %1403, %1399
  %1405 = phi float [ %1402, %1399 ], [ 0.000000e+00, %1403 ]
  %1406 = load ptr, ptr %9, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.ImGuiWindow, ptr %1406, i32 0, i32 19
  %1408 = load i8, ptr %1407, align 4, !tbaa !157, !range !67, !noundef !68
  %1409 = trunc i8 %1408 to i1
  br i1 %1409, label %1410, label %1414

1410:                                             ; preds = %1404
  %1411 = load ptr, ptr %8, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.ImGuiStyle, ptr %1411, i32 0, i32 19
  %1413 = load float, ptr %1412, align 4, !tbaa !156
  br label %1415

1414:                                             ; preds = %1404
  br label %1415

1415:                                             ; preds = %1414, %1410
  %1416 = phi float [ %1413, %1410 ], [ 0.000000e+00, %1414 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %61, float noundef %1405, float noundef %1416)
  %1417 = load ptr, ptr %9, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.ImGuiWindow, ptr %1417, i32 0, i32 18
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1418, ptr align 4 %61, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #13
  br label %1419

1419:                                             ; preds = %1415, %1258
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #13
  %1420 = load i32, ptr %6, align 4, !tbaa !9
  %1421 = and i32 %1420, 16777216
  %1422 = icmp ne i32 %1421, 0
  br i1 %1422, label %1423, label %1433

1423:                                             ; preds = %1419
  %1424 = load i32, ptr %6, align 4, !tbaa !9
  %1425 = and i32 %1424, 67108864
  %1426 = icmp ne i32 %1425, 0
  br i1 %1426, label %1433, label %1427

1427:                                             ; preds = %1423
  %1428 = load i8, ptr %23, align 1, !tbaa !71, !range !67, !noundef !68
  %1429 = trunc i8 %1428 to i1
  br i1 %1429, label %1433, label %1430

1430:                                             ; preds = %1427
  %1431 = load ptr, ptr %17, align 8, !tbaa !5
  %1432 = getelementptr inbounds %struct.ImGuiWindow, ptr %1431, i32 0, i32 55
  br label %1434

1433:                                             ; preds = %1427, %1423, %1419
  br label %1434

1434:                                             ; preds = %1433, %1430
  %1435 = phi ptr [ %1432, %1430 ], [ %46, %1433 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %62, ptr align 4 %1435, i64 16, i1 false), !tbaa.struct !118
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #13
  %1436 = load ptr, ptr %9, align 8, !tbaa !5
  %1437 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %1436)
  %1438 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %63, i32 0, i32 0
  %1439 = extractvalue { <2 x float>, <2 x float> } %1437, 0
  store <2 x float> %1439, ptr %1438, align 4
  %1440 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %63, i32 0, i32 1
  %1441 = extractvalue { <2 x float>, <2 x float> } %1437, 1
  store <2 x float> %1441, ptr %1440, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #13
  %1442 = load ptr, ptr %9, align 8, !tbaa !5
  %1443 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(956) %1442)
  %1444 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %64, i32 0, i32 0
  %1445 = extractvalue { <2 x float>, <2 x float> } %1443, 0
  store <2 x float> %1445, ptr %1444, align 4
  %1446 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %64, i32 0, i32 1
  %1447 = extractvalue { <2 x float>, <2 x float> } %1443, 1
  store <2 x float> %1447, ptr %1446, align 4
  %1448 = load ptr, ptr %9, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.ImGuiWindow, ptr %1448, i32 0, i32 51
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1449, ptr align 4 %63, i64 16, i1 false), !tbaa.struct !118
  %1450 = load ptr, ptr %9, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct.ImGuiWindow, ptr %1450, i32 0, i32 51
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1451, ptr noundef nonnull align 4 dereferenceable(16) %62)
  %1452 = load ptr, ptr %9, align 8, !tbaa !5
  %1453 = getelementptr inbounds %struct.ImGuiWindow, ptr %1452, i32 0, i32 3
  %1454 = getelementptr inbounds %struct.ImVec2, ptr %1453, i32 0, i32 0
  %1455 = load float, ptr %1454, align 8, !tbaa !158
  %1456 = load ptr, ptr %9, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.ImGuiWindow, ptr %1456, i32 0, i32 52
  %1458 = getelementptr inbounds %struct.ImRect, ptr %1457, i32 0, i32 0
  %1459 = getelementptr inbounds %struct.ImVec2, ptr %1458, i32 0, i32 0
  store float %1455, ptr %1459, align 8, !tbaa !159
  %1460 = load ptr, ptr %9, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.ImGuiWindow, ptr %1460, i32 0, i32 3
  %1462 = getelementptr inbounds %struct.ImVec2, ptr %1461, i32 0, i32 1
  %1463 = load float, ptr %1462, align 4, !tbaa !160
  %1464 = load float, ptr %39, align 4, !tbaa !103
  %1465 = fadd float %1463, %1464
  %1466 = load ptr, ptr %9, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.ImGuiWindow, ptr %1466, i32 0, i32 52
  %1468 = getelementptr inbounds %struct.ImRect, ptr %1467, i32 0, i32 0
  %1469 = getelementptr inbounds %struct.ImVec2, ptr %1468, i32 0, i32 1
  store float %1465, ptr %1469, align 4, !tbaa !161
  %1470 = load ptr, ptr %9, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.ImGuiWindow, ptr %1470, i32 0, i32 3
  %1472 = getelementptr inbounds %struct.ImVec2, ptr %1471, i32 0, i32 0
  %1473 = load float, ptr %1472, align 8, !tbaa !158
  %1474 = load ptr, ptr %9, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.ImGuiWindow, ptr %1474, i32 0, i32 4
  %1476 = getelementptr inbounds %struct.ImVec2, ptr %1475, i32 0, i32 0
  %1477 = load float, ptr %1476, align 8, !tbaa !127
  %1478 = fadd float %1473, %1477
  %1479 = load ptr, ptr %9, align 8, !tbaa !5
  %1480 = getelementptr inbounds %struct.ImGuiWindow, ptr %1479, i32 0, i32 18
  %1481 = getelementptr inbounds %struct.ImVec2, ptr %1480, i32 0, i32 0
  %1482 = load float, ptr %1481, align 4, !tbaa !162
  %1483 = fsub float %1478, %1482
  %1484 = load ptr, ptr %9, align 8, !tbaa !5
  %1485 = getelementptr inbounds %struct.ImGuiWindow, ptr %1484, i32 0, i32 52
  %1486 = getelementptr inbounds %struct.ImRect, ptr %1485, i32 0, i32 1
  %1487 = getelementptr inbounds %struct.ImVec2, ptr %1486, i32 0, i32 0
  store float %1483, ptr %1487, align 8, !tbaa !163
  %1488 = load ptr, ptr %9, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.ImGuiWindow, ptr %1488, i32 0, i32 3
  %1490 = getelementptr inbounds %struct.ImVec2, ptr %1489, i32 0, i32 1
  %1491 = load float, ptr %1490, align 4, !tbaa !160
  %1492 = load ptr, ptr %9, align 8, !tbaa !5
  %1493 = getelementptr inbounds %struct.ImGuiWindow, ptr %1492, i32 0, i32 4
  %1494 = getelementptr inbounds %struct.ImVec2, ptr %1493, i32 0, i32 1
  %1495 = load float, ptr %1494, align 4, !tbaa !129
  %1496 = fadd float %1491, %1495
  %1497 = load ptr, ptr %9, align 8, !tbaa !5
  %1498 = getelementptr inbounds %struct.ImGuiWindow, ptr %1497, i32 0, i32 18
  %1499 = getelementptr inbounds %struct.ImVec2, ptr %1498, i32 0, i32 1
  %1500 = load float, ptr %1499, align 4, !tbaa !164
  %1501 = fsub float %1496, %1500
  %1502 = load ptr, ptr %9, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.ImGuiWindow, ptr %1502, i32 0, i32 52
  %1504 = getelementptr inbounds %struct.ImRect, ptr %1503, i32 0, i32 1
  %1505 = getelementptr inbounds %struct.ImVec2, ptr %1504, i32 0, i32 1
  store float %1501, ptr %1505, align 4, !tbaa !165
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #13
  %1506 = load i32, ptr %6, align 4, !tbaa !9
  %1507 = and i32 %1506, 1024
  %1508 = icmp ne i32 %1507, 0
  br i1 %1508, label %1513, label %1509

1509:                                             ; preds = %1434
  %1510 = load i32, ptr %6, align 4, !tbaa !9
  %1511 = and i32 %1510, 1
  %1512 = icmp ne i32 %1511, 0
  br i1 %1512, label %1517, label %1513

1513:                                             ; preds = %1509, %1434
  %1514 = load ptr, ptr %8, align 8, !tbaa !5
  %1515 = getelementptr inbounds %struct.ImGuiStyle, ptr %1514, i32 0, i32 13
  %1516 = load float, ptr %1515, align 4, !tbaa !166
  br label %1521

1517:                                             ; preds = %1509
  %1518 = load ptr, ptr %9, align 8, !tbaa !5
  %1519 = getelementptr inbounds %struct.ImGuiWindow, ptr %1518, i32 0, i32 10
  %1520 = load float, ptr %1519, align 4, !tbaa !131
  br label %1521

1521:                                             ; preds = %1517, %1513
  %1522 = phi float [ %1516, %1513 ], [ %1520, %1517 ]
  store float %1522, ptr %65, align 4, !tbaa !103
  %1523 = load ptr, ptr %9, align 8, !tbaa !5
  %1524 = getelementptr inbounds %struct.ImGuiWindow, ptr %1523, i32 0, i32 52
  %1525 = getelementptr inbounds %struct.ImRect, ptr %1524, i32 0, i32 0
  %1526 = getelementptr inbounds %struct.ImVec2, ptr %1525, i32 0, i32 0
  %1527 = load float, ptr %1526, align 8, !tbaa !159
  %1528 = fadd float 5.000000e-01, %1527
  %1529 = load ptr, ptr %9, align 8, !tbaa !5
  %1530 = getelementptr inbounds %struct.ImGuiWindow, ptr %1529, i32 0, i32 8
  %1531 = getelementptr inbounds %struct.ImVec2, ptr %1530, i32 0, i32 0
  %1532 = load float, ptr %1531, align 8, !tbaa !167
  %1533 = fmul float %1532, 5.000000e-01
  %1534 = call noundef float @_ZL7ImFloorf(float noundef %1533)
  %1535 = load ptr, ptr %9, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct.ImGuiWindow, ptr %1535, i32 0, i32 10
  %1537 = load float, ptr %1536, align 4, !tbaa !131
  %1538 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1534, float noundef %1537)
  %1539 = fadd float %1528, %1538
  %1540 = call noundef float @_ZL7ImFloorf(float noundef %1539)
  %1541 = load ptr, ptr %9, align 8, !tbaa !5
  %1542 = getelementptr inbounds %struct.ImGuiWindow, ptr %1541, i32 0, i32 53
  %1543 = getelementptr inbounds %struct.ImRect, ptr %1542, i32 0, i32 0
  %1544 = getelementptr inbounds %struct.ImVec2, ptr %1543, i32 0, i32 0
  store float %1540, ptr %1544, align 8, !tbaa !168
  %1545 = load ptr, ptr %9, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.ImGuiWindow, ptr %1545, i32 0, i32 52
  %1547 = getelementptr inbounds %struct.ImRect, ptr %1546, i32 0, i32 0
  %1548 = getelementptr inbounds %struct.ImVec2, ptr %1547, i32 0, i32 1
  %1549 = load float, ptr %1548, align 4, !tbaa !161
  %1550 = fadd float 5.000000e-01, %1549
  %1551 = load float, ptr %65, align 4, !tbaa !103
  %1552 = fadd float %1550, %1551
  %1553 = call noundef float @_ZL7ImFloorf(float noundef %1552)
  %1554 = load ptr, ptr %9, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.ImGuiWindow, ptr %1554, i32 0, i32 53
  %1556 = getelementptr inbounds %struct.ImRect, ptr %1555, i32 0, i32 0
  %1557 = getelementptr inbounds %struct.ImVec2, ptr %1556, i32 0, i32 1
  store float %1553, ptr %1557, align 4, !tbaa !169
  %1558 = load ptr, ptr %9, align 8, !tbaa !5
  %1559 = getelementptr inbounds %struct.ImGuiWindow, ptr %1558, i32 0, i32 52
  %1560 = getelementptr inbounds %struct.ImRect, ptr %1559, i32 0, i32 1
  %1561 = getelementptr inbounds %struct.ImVec2, ptr %1560, i32 0, i32 0
  %1562 = load float, ptr %1561, align 8, !tbaa !163
  %1563 = fadd float 5.000000e-01, %1562
  %1564 = load ptr, ptr %9, align 8, !tbaa !5
  %1565 = getelementptr inbounds %struct.ImGuiWindow, ptr %1564, i32 0, i32 8
  %1566 = getelementptr inbounds %struct.ImVec2, ptr %1565, i32 0, i32 0
  %1567 = load float, ptr %1566, align 8, !tbaa !167
  %1568 = fmul float %1567, 5.000000e-01
  %1569 = call noundef float @_ZL7ImFloorf(float noundef %1568)
  %1570 = load ptr, ptr %9, align 8, !tbaa !5
  %1571 = getelementptr inbounds %struct.ImGuiWindow, ptr %1570, i32 0, i32 10
  %1572 = load float, ptr %1571, align 4, !tbaa !131
  %1573 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1569, float noundef %1572)
  %1574 = fsub float %1563, %1573
  %1575 = call noundef float @_ZL7ImFloorf(float noundef %1574)
  %1576 = load ptr, ptr %9, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct.ImGuiWindow, ptr %1576, i32 0, i32 53
  %1578 = getelementptr inbounds %struct.ImRect, ptr %1577, i32 0, i32 1
  %1579 = getelementptr inbounds %struct.ImVec2, ptr %1578, i32 0, i32 0
  store float %1575, ptr %1579, align 8, !tbaa !170
  %1580 = load ptr, ptr %9, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.ImGuiWindow, ptr %1580, i32 0, i32 52
  %1582 = getelementptr inbounds %struct.ImRect, ptr %1581, i32 0, i32 1
  %1583 = getelementptr inbounds %struct.ImVec2, ptr %1582, i32 0, i32 1
  %1584 = load float, ptr %1583, align 4, !tbaa !165
  %1585 = fadd float 5.000000e-01, %1584
  %1586 = load ptr, ptr %9, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.ImGuiWindow, ptr %1586, i32 0, i32 10
  %1588 = load float, ptr %1587, align 4, !tbaa !131
  %1589 = fsub float %1585, %1588
  %1590 = call noundef float @_ZL7ImFloorf(float noundef %1589)
  %1591 = load ptr, ptr %9, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.ImGuiWindow, ptr %1591, i32 0, i32 53
  %1593 = getelementptr inbounds %struct.ImRect, ptr %1592, i32 0, i32 1
  %1594 = getelementptr inbounds %struct.ImVec2, ptr %1593, i32 0, i32 1
  store float %1590, ptr %1594, align 4, !tbaa !171
  %1595 = load ptr, ptr %9, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.ImGuiWindow, ptr %1595, i32 0, i32 53
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1596, ptr noundef nonnull align 4 dereferenceable(16) %62)
  %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 !127
  %1601 = fcmp ogt float %1600, 0.000000e+00
  br i1 %1601, label %1602, label %1619

1602:                                             ; preds = %1521
  %1603 = load i32, ptr %6, align 4, !tbaa !9
  %1604 = and i32 %1603, 33554432
  %1605 = icmp ne i32 %1604, 0
  br i1 %1605, label %1619, label %1606

1606:                                             ; preds = %1602
  %1607 = load i32, ptr %6, align 4, !tbaa !9
  %1608 = and i32 %1607, 64
  %1609 = icmp ne i32 %1608, 0
  br i1 %1609, label %1619, label %1610

1610:                                             ; preds = %1606
  %1611 = load ptr, ptr %9, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.ImGuiWindow, ptr %1611, i32 0, i32 4
  %1613 = getelementptr inbounds %struct.ImVec2, ptr %1612, i32 0, i32 0
  %1614 = load float, ptr %1613, align 8, !tbaa !127
  %1615 = fmul float %1614, 0x3FE4CCCCC0000000
  %1616 = call noundef float @_ZL7ImFloorf(float noundef %1615)
  %1617 = load ptr, ptr %9, align 8, !tbaa !5
  %1618 = getelementptr inbounds %struct.ImGuiWindow, ptr %1617, i32 0, i32 59
  store float %1616, ptr %1618, align 8, !tbaa !172
  br label %1627

1619:                                             ; preds = %1606, %1602, %1521
  %1620 = load ptr, ptr %7, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.ImGuiContext, ptr %1620, i32 0, i32 6
  %1622 = load float, ptr %1621, align 8, !tbaa !153
  %1623 = fmul float %1622, 1.600000e+01
  %1624 = call noundef float @_ZL7ImFloorf(float noundef %1623)
  %1625 = load ptr, ptr %9, align 8, !tbaa !5
  %1626 = getelementptr inbounds %struct.ImGuiWindow, ptr %1625, i32 0, i32 59
  store float %1624, ptr %1626, align 8, !tbaa !172
  br label %1627

1627:                                             ; preds = %1619, %1610
  %1628 = load ptr, ptr %9, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.ImGuiWindow, ptr %1628, i32 0, i32 6
  %1630 = getelementptr inbounds %struct.ImVec2, ptr %1629, i32 0, i32 0
  %1631 = load float, ptr %1630, align 8, !tbaa !173
  %1632 = load ptr, ptr %9, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.ImGuiWindow, ptr %1632, i32 0, i32 8
  %1634 = getelementptr inbounds %struct.ImVec2, ptr %1633, i32 0, i32 0
  %1635 = load float, ptr %1634, align 8, !tbaa !167
  %1636 = call float @llvm.fmuladd.f32(float %1635, float 2.000000e+00, float %1631)
  %1637 = load ptr, ptr %9, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.ImGuiWindow, ptr %1637, i32 0, i32 52
  %1639 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1638)
  %1640 = fsub float %1636, %1639
  %1641 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1640)
  %1642 = load ptr, ptr %9, align 8, !tbaa !5
  %1643 = getelementptr inbounds %struct.ImGuiWindow, ptr %1642, i32 0, i32 15
  %1644 = getelementptr inbounds %struct.ImVec2, ptr %1643, i32 0, i32 0
  store float %1641, ptr %1644, align 4, !tbaa !174
  %1645 = load ptr, ptr %9, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.ImGuiWindow, ptr %1645, i32 0, i32 6
  %1647 = getelementptr inbounds %struct.ImVec2, ptr %1646, i32 0, i32 1
  %1648 = load float, ptr %1647, align 4, !tbaa !175
  %1649 = load ptr, ptr %9, align 8, !tbaa !5
  %1650 = getelementptr inbounds %struct.ImGuiWindow, ptr %1649, i32 0, i32 8
  %1651 = getelementptr inbounds %struct.ImVec2, ptr %1650, i32 0, i32 1
  %1652 = load float, ptr %1651, align 4, !tbaa !176
  %1653 = call float @llvm.fmuladd.f32(float %1652, float 2.000000e+00, float %1648)
  %1654 = load ptr, ptr %9, align 8, !tbaa !5
  %1655 = getelementptr inbounds %struct.ImGuiWindow, ptr %1654, i32 0, i32 52
  %1656 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1655)
  %1657 = fsub float %1653, %1656
  %1658 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1657)
  %1659 = load ptr, ptr %9, align 8, !tbaa !5
  %1660 = getelementptr inbounds %struct.ImGuiWindow, ptr %1659, i32 0, i32 15
  %1661 = getelementptr inbounds %struct.ImVec2, ptr %1660, i32 0, i32 1
  store float %1658, ptr %1661, align 4, !tbaa !177
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #13
  %1662 = load ptr, ptr %9, align 8, !tbaa !5
  %1663 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef %1662, i1 noundef zeroext true)
  store <2 x float> %1663, ptr %66, align 4
  %1664 = load ptr, ptr %9, align 8, !tbaa !5
  %1665 = getelementptr inbounds %struct.ImGuiWindow, ptr %1664, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1665, ptr align 4 %66, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %67, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %1666 = load ptr, ptr %9, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.ImGuiWindow, ptr %1666, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1667, ptr align 4 %67, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #13
  %1668 = load ptr, ptr %9, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.ImGuiWindow, ptr %1668, i32 0, i32 65
  %1670 = load ptr, ptr %1669, align 8, !tbaa !178
  call void @_ZN10ImDrawList16ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(168) %1670)
  %1671 = load ptr, ptr %9, align 8, !tbaa !5
  %1672 = getelementptr inbounds %struct.ImGuiWindow, ptr %1671, i32 0, i32 65
  %1673 = load ptr, ptr %1672, align 8, !tbaa !178
  %1674 = load ptr, ptr %7, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.ImGuiContext, ptr %1674, i32 0, i32 5
  %1676 = load ptr, ptr %1675, align 8, !tbaa !179
  %1677 = getelementptr inbounds %struct.ImFont, ptr %1676, i32 0, i32 7
  %1678 = load ptr, ptr %1677, align 8, !tbaa !180
  %1679 = getelementptr inbounds %struct.ImFontAtlas, ptr %1678, i32 0, i32 3
  %1680 = load ptr, ptr %1679, align 8, !tbaa !181
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %1673, ptr noundef %1680)
  %1681 = getelementptr inbounds %struct.ImRect, ptr %62, i32 0, i32 0
  %1682 = getelementptr inbounds %struct.ImRect, ptr %62, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1681, ptr noundef nonnull align 4 dereferenceable(8) %1682, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #13
  %1683 = load i32, ptr %6, align 4, !tbaa !9
  %1684 = and i32 %1683, 134217728
  %1685 = icmp ne i32 %1684, 0
  br i1 %1685, label %1686, label %1695

1686:                                             ; preds = %1627
  %1687 = load ptr, ptr %9, align 8, !tbaa !5
  %1688 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  %1689 = icmp eq ptr %1687, %1688
  br i1 %1689, label %1690, label %1695

1690:                                             ; preds = %1686
  %1691 = load ptr, ptr %9, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.ImGuiWindow, ptr %1691, i32 0, i32 43
  %1693 = load i32, ptr %1692, align 8, !tbaa !83
  %1694 = icmp sle i32 %1693, 0
  br label %1695

1695:                                             ; preds = %1690, %1686, %1627
  %1696 = phi i1 [ false, %1686 ], [ false, %1627 ], [ %1694, %1690 ]
  %1697 = zext i1 %1696 to i8
  store i8 %1697, ptr %68, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #13
  %1698 = load ptr, ptr %7, align 8, !tbaa !5
  %1699 = getelementptr inbounds %struct.ImGuiContext, ptr %1698, i32 0, i32 116
  %1700 = load ptr, ptr %1699, align 8, !tbaa !185
  %1701 = icmp ne ptr %1700, null
  br i1 %1701, label %1702, label %1710

1702:                                             ; preds = %1695
  %1703 = load ptr, ptr %9, align 8, !tbaa !5
  %1704 = load ptr, ptr %7, align 8, !tbaa !5
  %1705 = getelementptr inbounds %struct.ImGuiContext, ptr %1704, i32 0, i32 116
  %1706 = load ptr, ptr %1705, align 8, !tbaa !185
  %1707 = getelementptr inbounds %struct.ImGuiWindow, ptr %1706, i32 0, i32 68
  %1708 = load ptr, ptr %1707, align 8, !tbaa !186
  %1709 = icmp eq ptr %1703, %1708
  br label %1710

1710:                                             ; preds = %1702, %1695
  %1711 = phi i1 [ false, %1695 ], [ %1709, %1702 ]
  %1712 = zext i1 %1711 to i8
  store i8 %1712, ptr %69, align 1, !tbaa !71
  %1713 = load i8, ptr %68, align 1, !tbaa !71, !range !67, !noundef !68
  %1714 = trunc i8 %1713 to i1
  br i1 %1714, label %1718, label %1715

1715:                                             ; preds = %1710
  %1716 = load i8, ptr %69, align 1, !tbaa !71, !range !67, !noundef !68
  %1717 = trunc i8 %1716 to i1
  br i1 %1717, label %1718, label %1733

1718:                                             ; preds = %1715, %1710
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #13
  %1719 = load i8, ptr %68, align 1, !tbaa !71, !range !67, !noundef !68
  %1720 = trunc i8 %1719 to i1
  %1721 = zext i1 %1720 to i64
  %1722 = select i1 %1720, i32 47, i32 46
  %1723 = load ptr, ptr %7, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.ImGuiContext, ptr %1723, i32 0, i32 132
  %1725 = load float, ptr %1724, align 8, !tbaa !187
  %1726 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1722, float noundef %1725)
  store i32 %1726, ptr %70, align 4, !tbaa !9
  %1727 = load ptr, ptr %9, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.ImGuiWindow, ptr %1727, i32 0, i32 65
  %1729 = load ptr, ptr %1728, align 8, !tbaa !178
  %1730 = getelementptr inbounds %struct.ImRect, ptr %46, i32 0, i32 0
  %1731 = getelementptr inbounds %struct.ImRect, ptr %46, i32 0, i32 1
  %1732 = load i32, ptr %70, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1729, ptr noundef nonnull align 4 dereferenceable(8) %1730, ptr noundef nonnull align 4 dereferenceable(8) %1731, i32 noundef %1732, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #13
  br label %1733

1733:                                             ; preds = %1718, %1715
  %1734 = load i8, ptr %69, align 1, !tbaa !71, !range !67, !noundef !68
  %1735 = trunc i8 %1734 to i1
  br i1 %1735, label %1736, label %1769

1736:                                             ; preds = %1733
  %1737 = load ptr, ptr %9, align 8, !tbaa !5
  %1738 = load ptr, ptr %7, align 8, !tbaa !5
  %1739 = getelementptr inbounds %struct.ImGuiContext, ptr %1738, i32 0, i32 116
  %1740 = load ptr, ptr %1739, align 8, !tbaa !185
  %1741 = icmp eq ptr %1737, %1740
  br i1 %1741, label %1742, label %1769

1742:                                             ; preds = %1736
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #13
  %1743 = load ptr, ptr %9, align 8, !tbaa !5
  %1744 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %1743)
  %1745 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 0
  %1746 = extractvalue { <2 x float>, <2 x float> } %1744, 0
  store <2 x float> %1746, ptr %1745, align 4
  %1747 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 1
  %1748 = extractvalue { <2 x float>, <2 x float> } %1744, 1
  store <2 x float> %1748, ptr %1747, align 4
  %1749 = load ptr, ptr %7, align 8, !tbaa !5
  %1750 = getelementptr inbounds %struct.ImGuiContext, ptr %1749, i32 0, i32 6
  %1751 = load float, ptr %1750, align 8, !tbaa !153
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %71, float noundef %1751)
  %1752 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %71, ptr noundef nonnull align 4 dereferenceable(16) %46)
  br i1 %1752, label %1768, label %1753

1753:                                             ; preds = %1742
  %1754 = load ptr, ptr %9, align 8, !tbaa !5
  %1755 = getelementptr inbounds %struct.ImGuiWindow, ptr %1754, i32 0, i32 65
  %1756 = load ptr, ptr %1755, align 8, !tbaa !178
  %1757 = getelementptr inbounds %struct.ImRect, ptr %71, i32 0, i32 0
  %1758 = getelementptr inbounds %struct.ImRect, ptr %71, i32 0, i32 1
  %1759 = load ptr, ptr %7, align 8, !tbaa !5
  %1760 = getelementptr inbounds %struct.ImGuiContext, ptr %1759, i32 0, i32 119
  %1761 = load float, ptr %1760, align 4, !tbaa !188
  %1762 = fmul float %1761, 2.500000e-01
  %1763 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %1762)
  %1764 = load ptr, ptr %7, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.ImGuiContext, ptr %1764, i32 0, i32 4
  %1766 = getelementptr inbounds %struct.ImGuiStyle, ptr %1765, i32 0, i32 2
  %1767 = load float, ptr %1766, align 4, !tbaa !189
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1756, ptr noundef nonnull align 4 dereferenceable(8) %1757, ptr noundef nonnull align 4 dereferenceable(8) %1758, i32 noundef %1763, float noundef %1767, i32 noundef 15)
  br label %1768

1768:                                             ; preds = %1753, %1742
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #13
  br label %1769

1769:                                             ; preds = %1768, %1736, %1733
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #13
  store i8 0, ptr %72, align 1, !tbaa !71
  %1770 = load i32, ptr %6, align 4, !tbaa !9
  %1771 = and i32 %1770, 16777216
  %1772 = icmp ne i32 %1771, 0
  br i1 %1772, label %1773, label %1799

1773:                                             ; preds = %1769
  %1774 = load i32, ptr %6, align 4, !tbaa !9
  %1775 = and i32 %1774, 67108864
  %1776 = icmp ne i32 %1775, 0
  br i1 %1776, label %1799, label %1777

1777:                                             ; preds = %1773
  %1778 = load i8, ptr %23, align 1, !tbaa !71, !range !67, !noundef !68
  %1779 = trunc i8 %1778 to i1
  br i1 %1779, label %1799, label %1780

1780:                                             ; preds = %1777
  %1781 = load ptr, ptr %9, align 8, !tbaa !5
  %1782 = getelementptr inbounds %struct.ImGuiWindow, ptr %1781, i32 0, i32 65
  %1783 = load ptr, ptr %1782, align 8, !tbaa !178
  %1784 = getelementptr inbounds %struct.ImDrawList, ptr %1783, i32 0, i32 0
  %1785 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1784)
  %1786 = getelementptr inbounds %struct.ImDrawCmd, ptr %1785, i32 0, i32 0
  %1787 = load i32, ptr %1786, align 8, !tbaa !190
  %1788 = icmp eq i32 %1787, 0
  br i1 %1788, label %1789, label %1798

1789:                                             ; preds = %1780
  %1790 = load ptr, ptr %17, align 8, !tbaa !5
  %1791 = getelementptr inbounds %struct.ImGuiWindow, ptr %1790, i32 0, i32 65
  %1792 = load ptr, ptr %1791, align 8, !tbaa !178
  %1793 = getelementptr inbounds %struct.ImDrawList, ptr %1792, i32 0, i32 2
  %1794 = getelementptr inbounds %struct.ImVector.10, ptr %1793, i32 0, i32 0
  %1795 = load i32, ptr %1794, align 8, !tbaa !192
  %1796 = icmp sgt i32 %1795, 0
  br i1 %1796, label %1797, label %1798

1797:                                             ; preds = %1789
  store i8 1, ptr %72, align 1, !tbaa !71
  br label %1798

1798:                                             ; preds = %1797, %1789, %1780
  br label %1799

1799:                                             ; preds = %1798, %1777, %1773, %1769
  %1800 = load i8, ptr %72, align 1, !tbaa !71, !range !67, !noundef !68
  %1801 = trunc i8 %1800 to i1
  br i1 %1801, label %1802, label %1808

1802:                                             ; preds = %1799
  %1803 = load ptr, ptr %17, align 8, !tbaa !5
  %1804 = getelementptr inbounds %struct.ImGuiWindow, ptr %1803, i32 0, i32 65
  %1805 = load ptr, ptr %1804, align 8, !tbaa !178
  %1806 = load ptr, ptr %9, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.ImGuiWindow, ptr %1806, i32 0, i32 65
  store ptr %1805, ptr %1807, align 8, !tbaa !178
  br label %1808

1808:                                             ; preds = %1802, %1799
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #13
  %1809 = load ptr, ptr %7, align 8, !tbaa !5
  %1810 = getelementptr inbounds %struct.ImGuiContext, ptr %1809, i32 0, i32 115
  %1811 = load ptr, ptr %1810, align 8, !tbaa !193
  %1812 = icmp ne ptr %1811, null
  br i1 %1812, label %1813, label %1817

1813:                                             ; preds = %1808
  %1814 = load ptr, ptr %7, align 8, !tbaa !5
  %1815 = getelementptr inbounds %struct.ImGuiContext, ptr %1814, i32 0, i32 115
  %1816 = load ptr, ptr %1815, align 8, !tbaa !193
  br label %1821

1817:                                             ; preds = %1808
  %1818 = load ptr, ptr %7, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.ImGuiContext, ptr %1818, i32 0, i32 72
  %1820 = load ptr, ptr %1819, align 8, !tbaa !194
  br label %1821

1821:                                             ; preds = %1817, %1813
  %1822 = phi ptr [ %1816, %1813 ], [ %1820, %1817 ]
  store ptr %1822, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #13
  %1823 = load i8, ptr %49, align 1, !tbaa !71, !range !67, !noundef !68
  %1824 = trunc i8 %1823 to i1
  br i1 %1824, label %1838, label %1825

1825:                                             ; preds = %1821
  %1826 = load ptr, ptr %73, align 8, !tbaa !5
  %1827 = icmp ne ptr %1826, null
  br i1 %1827, label %1828, label %1836

1828:                                             ; preds = %1825
  %1829 = load ptr, ptr %9, align 8, !tbaa !5
  %1830 = getelementptr inbounds %struct.ImGuiWindow, ptr %1829, i32 0, i32 69
  %1831 = load ptr, ptr %1830, align 8, !tbaa !195
  %1832 = load ptr, ptr %73, align 8, !tbaa !5
  %1833 = getelementptr inbounds %struct.ImGuiWindow, ptr %1832, i32 0, i32 69
  %1834 = load ptr, ptr %1833, align 8, !tbaa !195
  %1835 = icmp eq ptr %1831, %1834
  br label %1836

1836:                                             ; preds = %1828, %1825
  %1837 = phi i1 [ false, %1825 ], [ %1835, %1828 ]
  br label %1838

1838:                                             ; preds = %1836, %1821
  %1839 = phi i1 [ true, %1821 ], [ %1837, %1836 ]
  %1840 = zext i1 %1839 to i8
  store i8 %1840, ptr %74, align 1, !tbaa !71
  %1841 = load ptr, ptr %9, align 8, !tbaa !5
  %1842 = load i8, ptr %74, align 1, !tbaa !71, !range !67, !noundef !68
  %1843 = trunc i8 %1842 to i1
  %1844 = load i32, ptr %52, align 4, !tbaa !9
  %1845 = getelementptr inbounds [4 x i32], ptr %51, i64 0, i64 0
  %1846 = load float, ptr %53, align 4, !tbaa !103
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef %1841, ptr noundef nonnull align 4 dereferenceable(16) %64, i1 noundef zeroext %1843, i32 noundef %1844, ptr noundef %1845, float noundef %1846)
  %1847 = load i8, ptr %72, align 1, !tbaa !71, !range !67, !noundef !68
  %1848 = trunc i8 %1847 to i1
  br i1 %1848, label %1849, label %1854

1849:                                             ; preds = %1838
  %1850 = load ptr, ptr %9, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.ImGuiWindow, ptr %1850, i32 0, i32 66
  %1852 = load ptr, ptr %9, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.ImGuiWindow, ptr %1852, i32 0, i32 65
  store ptr %1851, ptr %1853, align 8, !tbaa !178
  br label %1854

1854:                                             ; preds = %1849, %1838
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #13
  %1855 = load ptr, ptr %7, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.ImGuiContext, ptr %1855, i32 0, i32 116
  %1857 = load ptr, ptr %1856, align 8, !tbaa !185
  %1858 = load ptr, ptr %9, align 8, !tbaa !5
  %1859 = icmp eq ptr %1857, %1858
  br i1 %1859, label %1860, label %1899

1860:                                             ; preds = %1854
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #13
  %1861 = load ptr, ptr %9, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.ImGuiWindow, ptr %1861, i32 0, i32 9
  %1863 = load float, ptr %1862, align 8, !tbaa !151
  %1864 = load ptr, ptr %7, align 8, !tbaa !5
  %1865 = getelementptr inbounds %struct.ImGuiContext, ptr %1864, i32 0, i32 4
  %1866 = getelementptr inbounds %struct.ImGuiStyle, ptr %1865, i32 0, i32 2
  %1867 = load float, ptr %1866, align 4, !tbaa !189
  %1868 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1863, float noundef %1867)
  store float %1868, ptr %75, align 4, !tbaa !103
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #13
  %1869 = load ptr, ptr %9, align 8, !tbaa !5
  %1870 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %1869)
  %1871 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %76, i32 0, i32 0
  %1872 = extractvalue { <2 x float>, <2 x float> } %1870, 0
  store <2 x float> %1872, ptr %1871, align 4
  %1873 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %76, i32 0, i32 1
  %1874 = extractvalue { <2 x float>, <2 x float> } %1870, 1
  store <2 x float> %1874, ptr %1873, align 4
  %1875 = load ptr, ptr %7, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.ImGuiContext, ptr %1875, i32 0, i32 6
  %1877 = load float, ptr %1876, align 8, !tbaa !153
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %76, float noundef %1877)
  %1878 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %76, ptr noundef nonnull align 4 dereferenceable(16) %46)
  br i1 %1878, label %1879, label %1888

1879:                                             ; preds = %1860
  %1880 = load ptr, ptr %7, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.ImGuiContext, ptr %1880, i32 0, i32 6
  %1882 = load float, ptr %1881, align 8, !tbaa !153
  %1883 = fneg float %1882
  %1884 = fsub float %1883, 1.000000e+00
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %76, float noundef %1884)
  %1885 = load ptr, ptr %9, align 8, !tbaa !5
  %1886 = getelementptr inbounds %struct.ImGuiWindow, ptr %1885, i32 0, i32 9
  %1887 = load float, ptr %1886, align 8, !tbaa !151
  store float %1887, ptr %75, align 4, !tbaa !103
  br label %1888

1888:                                             ; preds = %1879, %1860
  %1889 = load ptr, ptr %9, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.ImGuiWindow, ptr %1889, i32 0, i32 65
  %1891 = load ptr, ptr %1890, align 8, !tbaa !178
  %1892 = getelementptr inbounds %struct.ImRect, ptr %76, i32 0, i32 0
  %1893 = getelementptr inbounds %struct.ImRect, ptr %76, i32 0, i32 1
  %1894 = load ptr, ptr %7, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.ImGuiContext, ptr %1894, i32 0, i32 119
  %1896 = load float, ptr %1895, align 4, !tbaa !188
  %1897 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %1896)
  %1898 = load float, ptr %75, align 4, !tbaa !103
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %1891, ptr noundef nonnull align 4 dereferenceable(8) %1892, ptr noundef nonnull align 4 dereferenceable(8) %1893, i32 noundef %1897, float noundef %1898, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #13
  br label %1899

1899:                                             ; preds = %1888, %1854
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #13
  %1900 = load i32, ptr %6, align 4, !tbaa !9
  %1901 = and i32 %1900, 8
  %1902 = icmp ne i32 %1901, 0
  br i1 %1902, label %1907, label %1903

1903:                                             ; preds = %1899
  %1904 = load i32, ptr %6, align 4, !tbaa !9
  %1905 = and i32 %1904, 2048
  %1906 = icmp ne i32 %1905, 0
  br label %1907

1907:                                             ; preds = %1903, %1899
  %1908 = phi i1 [ false, %1899 ], [ %1906, %1903 ]
  %1909 = zext i1 %1908 to i8
  store i8 %1909, ptr %77, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #13
  %1910 = load i32, ptr %6, align 4, !tbaa !9
  %1911 = and i32 %1910, 8
  %1912 = icmp ne i32 %1911, 0
  %1913 = xor i1 %1912, true
  %1914 = zext i1 %1913 to i8
  store i8 %1914, ptr %78, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #13
  %1915 = load ptr, ptr %9, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.ImGuiWindow, ptr %1915, i32 0, i32 7
  %1917 = getelementptr inbounds %struct.ImVec2, ptr %1916, i32 0, i32 0
  %1918 = load float, ptr %1917, align 8, !tbaa !196
  %1919 = fcmp une float %1918, 0.000000e+00
  br i1 %1919, label %1920, label %1925

1920:                                             ; preds = %1907
  %1921 = load ptr, ptr %9, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.ImGuiWindow, ptr %1921, i32 0, i32 7
  %1923 = getelementptr inbounds %struct.ImVec2, ptr %1922, i32 0, i32 0
  %1924 = load float, ptr %1923, align 8, !tbaa !196
  br label %1952

1925:                                             ; preds = %1907
  %1926 = load i8, ptr %77, align 1, !tbaa !71, !range !67, !noundef !68
  %1927 = trunc i8 %1926 to i1
  br i1 %1927, label %1928, label %1933

1928:                                             ; preds = %1925
  %1929 = load ptr, ptr %9, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.ImGuiWindow, ptr %1929, i32 0, i32 6
  %1931 = getelementptr inbounds %struct.ImVec2, ptr %1930, i32 0, i32 0
  %1932 = load float, ptr %1931, align 8, !tbaa !173
  br label %1934

1933:                                             ; preds = %1925
  br label %1934

1934:                                             ; preds = %1933, %1928
  %1935 = phi float [ %1932, %1928 ], [ 0.000000e+00, %1933 ]
  %1936 = load ptr, ptr %9, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.ImGuiWindow, ptr %1936, i32 0, i32 4
  %1938 = getelementptr inbounds %struct.ImVec2, ptr %1937, i32 0, i32 0
  %1939 = load float, ptr %1938, align 8, !tbaa !127
  %1940 = load ptr, ptr %9, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.ImGuiWindow, ptr %1940, i32 0, i32 8
  %1942 = getelementptr inbounds %struct.ImVec2, ptr %1941, i32 0, i32 0
  %1943 = load float, ptr %1942, align 8, !tbaa !167
  %1944 = fneg float %1943
  %1945 = call float @llvm.fmuladd.f32(float %1944, float 2.000000e+00, float %1939)
  %1946 = load ptr, ptr %9, align 8, !tbaa !5
  %1947 = getelementptr inbounds %struct.ImGuiWindow, ptr %1946, i32 0, i32 18
  %1948 = getelementptr inbounds %struct.ImVec2, ptr %1947, i32 0, i32 0
  %1949 = load float, ptr %1948, align 4, !tbaa !162
  %1950 = fsub float %1945, %1949
  %1951 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1935, float noundef %1950)
  br label %1952

1952:                                             ; preds = %1934, %1920
  %1953 = phi float [ %1924, %1920 ], [ %1951, %1934 ]
  store float %1953, ptr %79, align 4, !tbaa !103
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #13
  %1954 = load ptr, ptr %9, align 8, !tbaa !5
  %1955 = getelementptr inbounds %struct.ImGuiWindow, ptr %1954, i32 0, i32 7
  %1956 = getelementptr inbounds %struct.ImVec2, ptr %1955, i32 0, i32 1
  %1957 = load float, ptr %1956, align 4, !tbaa !197
  %1958 = fcmp une float %1957, 0.000000e+00
  br i1 %1958, label %1959, label %1964

1959:                                             ; preds = %1952
  %1960 = load ptr, ptr %9, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.ImGuiWindow, ptr %1960, i32 0, i32 7
  %1962 = getelementptr inbounds %struct.ImVec2, ptr %1961, i32 0, i32 1
  %1963 = load float, ptr %1962, align 4, !tbaa !197
  br label %1993

1964:                                             ; preds = %1952
  %1965 = load i8, ptr %78, align 1, !tbaa !71, !range !67, !noundef !68
  %1966 = trunc i8 %1965 to i1
  br i1 %1966, label %1967, label %1972

1967:                                             ; preds = %1964
  %1968 = load ptr, ptr %9, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.ImGuiWindow, ptr %1968, i32 0, i32 6
  %1970 = getelementptr inbounds %struct.ImVec2, ptr %1969, i32 0, i32 1
  %1971 = load float, ptr %1970, align 4, !tbaa !175
  br label %1973

1972:                                             ; preds = %1964
  br label %1973

1973:                                             ; preds = %1972, %1967
  %1974 = phi float [ %1971, %1967 ], [ 0.000000e+00, %1972 ]
  %1975 = load ptr, ptr %9, align 8, !tbaa !5
  %1976 = getelementptr inbounds %struct.ImGuiWindow, ptr %1975, i32 0, i32 4
  %1977 = getelementptr inbounds %struct.ImVec2, ptr %1976, i32 0, i32 1
  %1978 = load float, ptr %1977, align 4, !tbaa !129
  %1979 = load ptr, ptr %9, align 8, !tbaa !5
  %1980 = getelementptr inbounds %struct.ImGuiWindow, ptr %1979, i32 0, i32 8
  %1981 = getelementptr inbounds %struct.ImVec2, ptr %1980, i32 0, i32 1
  %1982 = load float, ptr %1981, align 4, !tbaa !176
  %1983 = fneg float %1982
  %1984 = call float @llvm.fmuladd.f32(float %1983, float 2.000000e+00, float %1978)
  %1985 = load float, ptr %39, align 4, !tbaa !103
  %1986 = fsub float %1984, %1985
  %1987 = load ptr, ptr %9, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.ImGuiWindow, ptr %1987, i32 0, i32 18
  %1989 = getelementptr inbounds %struct.ImVec2, ptr %1988, i32 0, i32 1
  %1990 = load float, ptr %1989, align 4, !tbaa !164
  %1991 = fsub float %1986, %1990
  %1992 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1974, float noundef %1991)
  br label %1993

1993:                                             ; preds = %1973, %1959
  %1994 = phi float [ %1963, %1959 ], [ %1992, %1973 ]
  store float %1994, ptr %80, align 4, !tbaa !103
  %1995 = load ptr, ptr %9, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.ImGuiWindow, ptr %1995, i32 0, i32 52
  %1997 = getelementptr inbounds %struct.ImRect, ptr %1996, i32 0, i32 0
  %1998 = getelementptr inbounds %struct.ImVec2, ptr %1997, i32 0, i32 0
  %1999 = load float, ptr %1998, align 8, !tbaa !159
  %2000 = load ptr, ptr %9, align 8, !tbaa !5
  %2001 = getelementptr inbounds %struct.ImGuiWindow, ptr %2000, i32 0, i32 14
  %2002 = getelementptr inbounds %struct.ImVec2, ptr %2001, i32 0, i32 0
  %2003 = load float, ptr %2002, align 4, !tbaa !198
  %2004 = fsub float %1999, %2003
  %2005 = load ptr, ptr %9, align 8, !tbaa !5
  %2006 = getelementptr inbounds %struct.ImGuiWindow, ptr %2005, i32 0, i32 8
  %2007 = getelementptr inbounds %struct.ImVec2, ptr %2006, i32 0, i32 0
  %2008 = load float, ptr %2007, align 8, !tbaa !167
  %2009 = load ptr, ptr %9, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.ImGuiWindow, ptr %2009, i32 0, i32 10
  %2011 = load float, ptr %2010, align 4, !tbaa !131
  %2012 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2008, float noundef %2011)
  %2013 = fadd float %2004, %2012
  %2014 = call noundef float @_ZL7ImFloorf(float noundef %2013)
  %2015 = load ptr, ptr %9, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.ImGuiWindow, ptr %2015, i32 0, i32 54
  %2017 = getelementptr inbounds %struct.ImRect, ptr %2016, i32 0, i32 0
  %2018 = getelementptr inbounds %struct.ImVec2, ptr %2017, i32 0, i32 0
  store float %2014, ptr %2018, align 8, !tbaa !199
  %2019 = load ptr, ptr %9, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.ImGuiWindow, ptr %2019, i32 0, i32 52
  %2021 = getelementptr inbounds %struct.ImRect, ptr %2020, i32 0, i32 0
  %2022 = getelementptr inbounds %struct.ImVec2, ptr %2021, i32 0, i32 1
  %2023 = load float, ptr %2022, align 4, !tbaa !161
  %2024 = load ptr, ptr %9, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.ImGuiWindow, ptr %2024, i32 0, i32 14
  %2026 = getelementptr inbounds %struct.ImVec2, ptr %2025, i32 0, i32 1
  %2027 = load float, ptr %2026, align 4, !tbaa !200
  %2028 = fsub float %2023, %2027
  %2029 = load ptr, ptr %9, align 8, !tbaa !5
  %2030 = getelementptr inbounds %struct.ImGuiWindow, ptr %2029, i32 0, i32 8
  %2031 = getelementptr inbounds %struct.ImVec2, ptr %2030, i32 0, i32 1
  %2032 = load float, ptr %2031, align 4, !tbaa !176
  %2033 = load ptr, ptr %9, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.ImGuiWindow, ptr %2033, i32 0, i32 10
  %2035 = load float, ptr %2034, align 4, !tbaa !131
  %2036 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2032, float noundef %2035)
  %2037 = fadd float %2028, %2036
  %2038 = call noundef float @_ZL7ImFloorf(float noundef %2037)
  %2039 = load ptr, ptr %9, align 8, !tbaa !5
  %2040 = getelementptr inbounds %struct.ImGuiWindow, ptr %2039, i32 0, i32 54
  %2041 = getelementptr inbounds %struct.ImRect, ptr %2040, i32 0, i32 0
  %2042 = getelementptr inbounds %struct.ImVec2, ptr %2041, i32 0, i32 1
  store float %2038, ptr %2042, align 4, !tbaa !201
  %2043 = load ptr, ptr %9, align 8, !tbaa !5
  %2044 = getelementptr inbounds %struct.ImGuiWindow, ptr %2043, i32 0, i32 54
  %2045 = getelementptr inbounds %struct.ImRect, ptr %2044, i32 0, i32 0
  %2046 = getelementptr inbounds %struct.ImVec2, ptr %2045, i32 0, i32 0
  %2047 = load float, ptr %2046, align 8, !tbaa !199
  %2048 = load float, ptr %79, align 4, !tbaa !103
  %2049 = fadd float %2047, %2048
  %2050 = load ptr, ptr %9, align 8, !tbaa !5
  %2051 = getelementptr inbounds %struct.ImGuiWindow, ptr %2050, i32 0, i32 54
  %2052 = getelementptr inbounds %struct.ImRect, ptr %2051, i32 0, i32 1
  %2053 = getelementptr inbounds %struct.ImVec2, ptr %2052, i32 0, i32 0
  store float %2049, ptr %2053, align 8, !tbaa !202
  %2054 = load ptr, ptr %9, align 8, !tbaa !5
  %2055 = getelementptr inbounds %struct.ImGuiWindow, ptr %2054, i32 0, i32 54
  %2056 = getelementptr inbounds %struct.ImRect, ptr %2055, i32 0, i32 0
  %2057 = getelementptr inbounds %struct.ImVec2, ptr %2056, i32 0, i32 1
  %2058 = load float, ptr %2057, align 4, !tbaa !201
  %2059 = load float, ptr %80, align 4, !tbaa !103
  %2060 = fadd float %2058, %2059
  %2061 = load ptr, ptr %9, align 8, !tbaa !5
  %2062 = getelementptr inbounds %struct.ImGuiWindow, ptr %2061, i32 0, i32 54
  %2063 = getelementptr inbounds %struct.ImRect, ptr %2062, i32 0, i32 1
  %2064 = getelementptr inbounds %struct.ImVec2, ptr %2063, i32 0, i32 1
  store float %2060, ptr %2064, align 4, !tbaa !203
  %2065 = load ptr, ptr %9, align 8, !tbaa !5
  %2066 = getelementptr inbounds %struct.ImGuiWindow, ptr %2065, i32 0, i32 3
  %2067 = getelementptr inbounds %struct.ImVec2, ptr %2066, i32 0, i32 0
  %2068 = load float, ptr %2067, align 8, !tbaa !158
  %2069 = load ptr, ptr %9, align 8, !tbaa !5
  %2070 = getelementptr inbounds %struct.ImGuiWindow, ptr %2069, i32 0, i32 14
  %2071 = getelementptr inbounds %struct.ImVec2, ptr %2070, i32 0, i32 0
  %2072 = load float, ptr %2071, align 4, !tbaa !198
  %2073 = fsub float %2068, %2072
  %2074 = load ptr, ptr %9, align 8, !tbaa !5
  %2075 = getelementptr inbounds %struct.ImGuiWindow, ptr %2074, i32 0, i32 8
  %2076 = getelementptr inbounds %struct.ImVec2, ptr %2075, i32 0, i32 0
  %2077 = load float, ptr %2076, align 8, !tbaa !167
  %2078 = fadd float %2073, %2077
  %2079 = load ptr, ptr %9, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.ImGuiWindow, ptr %2079, i32 0, i32 56
  %2081 = getelementptr inbounds %struct.ImRect, ptr %2080, i32 0, i32 0
  %2082 = getelementptr inbounds %struct.ImVec2, ptr %2081, i32 0, i32 0
  store float %2078, ptr %2082, align 8, !tbaa !204
  %2083 = load ptr, ptr %9, align 8, !tbaa !5
  %2084 = getelementptr inbounds %struct.ImGuiWindow, ptr %2083, i32 0, i32 3
  %2085 = getelementptr inbounds %struct.ImVec2, ptr %2084, i32 0, i32 1
  %2086 = load float, ptr %2085, align 4, !tbaa !160
  %2087 = load ptr, ptr %9, align 8, !tbaa !5
  %2088 = getelementptr inbounds %struct.ImGuiWindow, ptr %2087, i32 0, i32 14
  %2089 = getelementptr inbounds %struct.ImVec2, ptr %2088, i32 0, i32 1
  %2090 = load float, ptr %2089, align 4, !tbaa !200
  %2091 = fsub float %2086, %2090
  %2092 = load ptr, ptr %9, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.ImGuiWindow, ptr %2092, i32 0, i32 8
  %2094 = getelementptr inbounds %struct.ImVec2, ptr %2093, i32 0, i32 1
  %2095 = load float, ptr %2094, align 4, !tbaa !176
  %2096 = fadd float %2091, %2095
  %2097 = load float, ptr %39, align 4, !tbaa !103
  %2098 = fadd float %2096, %2097
  %2099 = load ptr, ptr %9, align 8, !tbaa !5
  %2100 = getelementptr inbounds %struct.ImGuiWindow, ptr %2099, i32 0, i32 56
  %2101 = getelementptr inbounds %struct.ImRect, ptr %2100, i32 0, i32 0
  %2102 = getelementptr inbounds %struct.ImVec2, ptr %2101, i32 0, i32 1
  store float %2098, ptr %2102, align 4, !tbaa !205
  %2103 = load ptr, ptr %9, align 8, !tbaa !5
  %2104 = getelementptr inbounds %struct.ImGuiWindow, ptr %2103, i32 0, i32 56
  %2105 = getelementptr inbounds %struct.ImRect, ptr %2104, i32 0, i32 0
  %2106 = getelementptr inbounds %struct.ImVec2, ptr %2105, i32 0, i32 0
  %2107 = load float, ptr %2106, align 8, !tbaa !204
  %2108 = load ptr, ptr %9, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.ImGuiWindow, ptr %2108, i32 0, i32 7
  %2110 = getelementptr inbounds %struct.ImVec2, ptr %2109, i32 0, i32 0
  %2111 = load float, ptr %2110, align 8, !tbaa !196
  %2112 = fcmp une float %2111, 0.000000e+00
  br i1 %2112, label %2113, label %2118

2113:                                             ; preds = %1993
  %2114 = load ptr, ptr %9, align 8, !tbaa !5
  %2115 = getelementptr inbounds %struct.ImGuiWindow, ptr %2114, i32 0, i32 7
  %2116 = getelementptr inbounds %struct.ImVec2, ptr %2115, i32 0, i32 0
  %2117 = load float, ptr %2116, align 8, !tbaa !196
  br label %2134

2118:                                             ; preds = %1993
  %2119 = load ptr, ptr %9, align 8, !tbaa !5
  %2120 = getelementptr inbounds %struct.ImGuiWindow, ptr %2119, i32 0, i32 4
  %2121 = getelementptr inbounds %struct.ImVec2, ptr %2120, i32 0, i32 0
  %2122 = load float, ptr %2121, align 8, !tbaa !127
  %2123 = load ptr, ptr %9, align 8, !tbaa !5
  %2124 = getelementptr inbounds %struct.ImGuiWindow, ptr %2123, i32 0, i32 8
  %2125 = getelementptr inbounds %struct.ImVec2, ptr %2124, i32 0, i32 0
  %2126 = load float, ptr %2125, align 8, !tbaa !167
  %2127 = fneg float %2126
  %2128 = call float @llvm.fmuladd.f32(float %2127, float 2.000000e+00, float %2122)
  %2129 = load ptr, ptr %9, align 8, !tbaa !5
  %2130 = getelementptr inbounds %struct.ImGuiWindow, ptr %2129, i32 0, i32 18
  %2131 = getelementptr inbounds %struct.ImVec2, ptr %2130, i32 0, i32 0
  %2132 = load float, ptr %2131, align 4, !tbaa !162
  %2133 = fsub float %2128, %2132
  br label %2134

2134:                                             ; preds = %2118, %2113
  %2135 = phi float [ %2117, %2113 ], [ %2133, %2118 ]
  %2136 = fadd float %2107, %2135
  %2137 = load ptr, ptr %9, align 8, !tbaa !5
  %2138 = getelementptr inbounds %struct.ImGuiWindow, ptr %2137, i32 0, i32 56
  %2139 = getelementptr inbounds %struct.ImRect, ptr %2138, i32 0, i32 1
  %2140 = getelementptr inbounds %struct.ImVec2, ptr %2139, i32 0, i32 0
  store float %2136, ptr %2140, align 8, !tbaa !206
  %2141 = load ptr, ptr %9, align 8, !tbaa !5
  %2142 = getelementptr inbounds %struct.ImGuiWindow, ptr %2141, i32 0, i32 56
  %2143 = getelementptr inbounds %struct.ImRect, ptr %2142, i32 0, i32 0
  %2144 = getelementptr inbounds %struct.ImVec2, ptr %2143, i32 0, i32 1
  %2145 = load float, ptr %2144, align 4, !tbaa !205
  %2146 = load ptr, ptr %9, align 8, !tbaa !5
  %2147 = getelementptr inbounds %struct.ImGuiWindow, ptr %2146, i32 0, i32 7
  %2148 = getelementptr inbounds %struct.ImVec2, ptr %2147, i32 0, i32 1
  %2149 = load float, ptr %2148, align 4, !tbaa !197
  %2150 = fcmp une float %2149, 0.000000e+00
  br i1 %2150, label %2151, label %2156

2151:                                             ; preds = %2134
  %2152 = load ptr, ptr %9, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.ImGuiWindow, ptr %2152, i32 0, i32 7
  %2154 = getelementptr inbounds %struct.ImVec2, ptr %2153, i32 0, i32 1
  %2155 = load float, ptr %2154, align 4, !tbaa !197
  br label %2174

2156:                                             ; preds = %2134
  %2157 = load ptr, ptr %9, align 8, !tbaa !5
  %2158 = getelementptr inbounds %struct.ImGuiWindow, ptr %2157, i32 0, i32 4
  %2159 = getelementptr inbounds %struct.ImVec2, ptr %2158, i32 0, i32 1
  %2160 = load float, ptr %2159, align 4, !tbaa !129
  %2161 = load ptr, ptr %9, align 8, !tbaa !5
  %2162 = getelementptr inbounds %struct.ImGuiWindow, ptr %2161, i32 0, i32 8
  %2163 = getelementptr inbounds %struct.ImVec2, ptr %2162, i32 0, i32 1
  %2164 = load float, ptr %2163, align 4, !tbaa !176
  %2165 = fneg float %2164
  %2166 = call float @llvm.fmuladd.f32(float %2165, float 2.000000e+00, float %2160)
  %2167 = load float, ptr %39, align 4, !tbaa !103
  %2168 = fsub float %2166, %2167
  %2169 = load ptr, ptr %9, align 8, !tbaa !5
  %2170 = getelementptr inbounds %struct.ImGuiWindow, ptr %2169, i32 0, i32 18
  %2171 = getelementptr inbounds %struct.ImVec2, ptr %2170, i32 0, i32 1
  %2172 = load float, ptr %2171, align 4, !tbaa !164
  %2173 = fsub float %2168, %2172
  br label %2174

2174:                                             ; preds = %2156, %2151
  %2175 = phi float [ %2155, %2151 ], [ %2173, %2156 ]
  %2176 = fadd float %2145, %2175
  %2177 = load ptr, ptr %9, align 8, !tbaa !5
  %2178 = getelementptr inbounds %struct.ImGuiWindow, ptr %2177, i32 0, i32 56
  %2179 = getelementptr inbounds %struct.ImRect, ptr %2178, i32 0, i32 1
  %2180 = getelementptr inbounds %struct.ImVec2, ptr %2179, i32 0, i32 1
  store float %2176, ptr %2180, align 4, !tbaa !207
  %2181 = load ptr, ptr %9, align 8, !tbaa !5
  %2182 = getelementptr inbounds %struct.ImGuiWindow, ptr %2181, i32 0, i32 8
  %2183 = getelementptr inbounds %struct.ImVec2, ptr %2182, i32 0, i32 0
  %2184 = load float, ptr %2183, align 8, !tbaa !167
  %2185 = fadd float 0.000000e+00, %2184
  %2186 = load ptr, ptr %9, align 8, !tbaa !5
  %2187 = getelementptr inbounds %struct.ImGuiWindow, ptr %2186, i32 0, i32 14
  %2188 = getelementptr inbounds %struct.ImVec2, ptr %2187, i32 0, i32 0
  %2189 = load float, ptr %2188, align 4, !tbaa !198
  %2190 = fsub float %2185, %2189
  %2191 = load ptr, ptr %9, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiWindow, ptr %2191, i32 0, i32 50
  %2193 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2192, i32 0, i32 8
  %2194 = getelementptr inbounds %struct.ImVec1, ptr %2193, i32 0, i32 0
  store float %2190, ptr %2194, align 8, !tbaa !208
  %2195 = load ptr, ptr %9, align 8, !tbaa !5
  %2196 = getelementptr inbounds %struct.ImGuiWindow, ptr %2195, i32 0, i32 50
  %2197 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2196, i32 0, i32 10
  %2198 = getelementptr inbounds %struct.ImVec1, ptr %2197, i32 0, i32 0
  store float 0.000000e+00, ptr %2198, align 8, !tbaa !209
  %2199 = load ptr, ptr %9, align 8, !tbaa !5
  %2200 = getelementptr inbounds %struct.ImGuiWindow, ptr %2199, i32 0, i32 50
  %2201 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2200, i32 0, i32 9
  %2202 = getelementptr inbounds %struct.ImVec1, ptr %2201, i32 0, i32 0
  store float 0.000000e+00, ptr %2202, align 4, !tbaa !210
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #13
  %2203 = load ptr, ptr %9, align 8, !tbaa !5
  %2204 = getelementptr inbounds %struct.ImGuiWindow, ptr %2203, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #13
  %2205 = load ptr, ptr %9, align 8, !tbaa !5
  %2206 = getelementptr inbounds %struct.ImGuiWindow, ptr %2205, i32 0, i32 50
  %2207 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2206, i32 0, i32 8
  %2208 = getelementptr inbounds %struct.ImVec1, ptr %2207, i32 0, i32 0
  %2209 = load float, ptr %2208, align 8, !tbaa !208
  %2210 = load ptr, ptr %9, align 8, !tbaa !5
  %2211 = getelementptr inbounds %struct.ImGuiWindow, ptr %2210, i32 0, i32 50
  %2212 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2211, i32 0, i32 9
  %2213 = getelementptr inbounds %struct.ImVec1, ptr %2212, i32 0, i32 0
  %2214 = load float, ptr %2213, align 4, !tbaa !210
  %2215 = fadd float %2209, %2214
  %2216 = load float, ptr %39, align 4, !tbaa !103
  %2217 = load ptr, ptr %9, align 8, !tbaa !5
  %2218 = getelementptr inbounds %struct.ImGuiWindow, ptr %2217, i32 0, i32 8
  %2219 = getelementptr inbounds %struct.ImVec2, ptr %2218, i32 0, i32 1
  %2220 = load float, ptr %2219, align 4, !tbaa !176
  %2221 = fadd float %2216, %2220
  %2222 = load ptr, ptr %9, align 8, !tbaa !5
  %2223 = getelementptr inbounds %struct.ImGuiWindow, ptr %2222, i32 0, i32 14
  %2224 = getelementptr inbounds %struct.ImVec2, ptr %2223, i32 0, i32 1
  %2225 = load float, ptr %2224, align 4, !tbaa !200
  %2226 = fsub float %2221, %2225
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %82, float noundef %2215, float noundef %2226)
  %2227 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2204, ptr noundef nonnull align 4 dereferenceable(8) %82)
  store <2 x float> %2227, ptr %81, align 4
  %2228 = load ptr, ptr %9, align 8, !tbaa !5
  %2229 = getelementptr inbounds %struct.ImGuiWindow, ptr %2228, i32 0, i32 50
  %2230 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2229, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2230, ptr align 4 %81, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #13
  %2231 = load ptr, ptr %9, align 8, !tbaa !5
  %2232 = getelementptr inbounds %struct.ImGuiWindow, ptr %2231, i32 0, i32 50
  %2233 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2232, i32 0, i32 2
  %2234 = load ptr, ptr %9, align 8, !tbaa !5
  %2235 = getelementptr inbounds %struct.ImGuiWindow, ptr %2234, i32 0, i32 50
  %2236 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2235, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2236, ptr align 8 %2233, i64 8, i1 false), !tbaa.struct !102
  %2237 = load ptr, ptr %9, align 8, !tbaa !5
  %2238 = getelementptr inbounds %struct.ImGuiWindow, ptr %2237, i32 0, i32 50
  %2239 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2238, i32 0, i32 0
  %2240 = load ptr, ptr %9, align 8, !tbaa !5
  %2241 = getelementptr inbounds %struct.ImGuiWindow, ptr %2240, i32 0, i32 50
  %2242 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2241, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2242, ptr align 8 %2239, i64 8, i1 false), !tbaa.struct !102
  %2243 = load ptr, ptr %9, align 8, !tbaa !5
  %2244 = getelementptr inbounds %struct.ImGuiWindow, ptr %2243, i32 0, i32 50
  %2245 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2244, i32 0, i32 2
  %2246 = load ptr, ptr %9, align 8, !tbaa !5
  %2247 = getelementptr inbounds %struct.ImGuiWindow, ptr %2246, i32 0, i32 50
  %2248 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2247, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2248, ptr align 8 %2245, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %83, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %2249 = load ptr, ptr %9, align 8, !tbaa !5
  %2250 = getelementptr inbounds %struct.ImGuiWindow, ptr %2249, i32 0, i32 50
  %2251 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2250, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2251, ptr align 4 %83, i64 8, i1 false), !tbaa.struct !102
  %2252 = load ptr, ptr %9, align 8, !tbaa !5
  %2253 = getelementptr inbounds %struct.ImGuiWindow, ptr %2252, i32 0, i32 50
  %2254 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2253, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2254, ptr align 4 %2251, i64 8, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #13
  %2255 = load ptr, ptr %9, align 8, !tbaa !5
  %2256 = getelementptr inbounds %struct.ImGuiWindow, ptr %2255, i32 0, i32 50
  %2257 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2256, i32 0, i32 7
  store float 0.000000e+00, ptr %2257, align 4, !tbaa !211
  %2258 = load ptr, ptr %9, align 8, !tbaa !5
  %2259 = getelementptr inbounds %struct.ImGuiWindow, ptr %2258, i32 0, i32 50
  %2260 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2259, i32 0, i32 6
  store float 0.000000e+00, ptr %2260, align 8, !tbaa !212
  %2261 = load ptr, ptr %9, align 8, !tbaa !5
  %2262 = getelementptr inbounds %struct.ImGuiWindow, ptr %2261, i32 0, i32 50
  %2263 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2262, i32 0, i32 15
  store i32 0, ptr %2263, align 4, !tbaa !213
  %2264 = load ptr, ptr %9, align 8, !tbaa !5
  %2265 = getelementptr inbounds %struct.ImGuiWindow, ptr %2264, i32 0, i32 50
  %2266 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2265, i32 0, i32 16
  store i32 1, ptr %2266, align 8, !tbaa !214
  %2267 = load ptr, ptr %9, align 8, !tbaa !5
  %2268 = getelementptr inbounds %struct.ImGuiWindow, ptr %2267, i32 0, i32 50
  %2269 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2268, i32 0, i32 18
  %2270 = load i32, ptr %2269, align 8, !tbaa !215
  %2271 = load ptr, ptr %9, align 8, !tbaa !5
  %2272 = getelementptr inbounds %struct.ImGuiWindow, ptr %2271, i32 0, i32 50
  %2273 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2272, i32 0, i32 17
  store i32 %2270, ptr %2273, align 4, !tbaa !216
  %2274 = load ptr, ptr %9, align 8, !tbaa !5
  %2275 = getelementptr inbounds %struct.ImGuiWindow, ptr %2274, i32 0, i32 50
  %2276 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2275, i32 0, i32 18
  store i32 0, ptr %2276, align 8, !tbaa !215
  %2277 = load i32, ptr %6, align 4, !tbaa !9
  %2278 = and i32 %2277, 16777216
  %2279 = icmp ne i32 %2278, 0
  br i1 %2279, label %2280, label %2285

2280:                                             ; preds = %2174
  %2281 = load ptr, ptr %17, align 8, !tbaa !5
  %2282 = getelementptr inbounds %struct.ImGuiWindow, ptr %2281, i32 0, i32 50
  %2283 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2282, i32 0, i32 19
  %2284 = load i32, ptr %2283, align 4, !tbaa !217
  br label %2286

2285:                                             ; preds = %2174
  br label %2286

2286:                                             ; preds = %2285, %2280
  %2287 = phi i32 [ %2284, %2280 ], [ 0, %2285 ]
  %2288 = load ptr, ptr %9, align 8, !tbaa !5
  %2289 = getelementptr inbounds %struct.ImGuiWindow, ptr %2288, i32 0, i32 50
  %2290 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2289, i32 0, i32 19
  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 50
  %2293 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2292, i32 0, i32 20
  store i8 0, ptr %2293, align 8, !tbaa !218
  %2294 = load ptr, ptr %9, align 8, !tbaa !5
  %2295 = getelementptr inbounds %struct.ImGuiWindow, ptr %2294, i32 0, i32 15
  %2296 = getelementptr inbounds %struct.ImVec2, ptr %2295, i32 0, i32 1
  %2297 = load float, ptr %2296, align 4, !tbaa !177
  %2298 = fcmp ogt float %2297, 0.000000e+00
  %2299 = load ptr, ptr %9, align 8, !tbaa !5
  %2300 = getelementptr inbounds %struct.ImGuiWindow, ptr %2299, i32 0, i32 50
  %2301 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2300, i32 0, i32 21
  %2302 = zext i1 %2298 to i8
  store i8 %2302, ptr %2301, align 1, !tbaa !219
  %2303 = load ptr, ptr %9, align 8, !tbaa !5
  %2304 = getelementptr inbounds %struct.ImGuiWindow, ptr %2303, i32 0, i32 50
  %2305 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2304, i32 0, i32 22
  store i8 0, ptr %2305, align 2, !tbaa !220
  %2306 = load ptr, ptr %9, align 8, !tbaa !5
  %2307 = getelementptr inbounds %struct.ImGuiWindow, ptr %2306, i32 0, i32 8
  %2308 = getelementptr inbounds %struct.ImVec2, ptr %2307, i32 0, i32 0
  %2309 = load float, ptr %2308, align 8, !tbaa !167
  %2310 = load ptr, ptr %8, align 8, !tbaa !5
  %2311 = getelementptr inbounds %struct.ImGuiStyle, ptr %2310, i32 0, i32 14
  %2312 = getelementptr inbounds %struct.ImVec2, ptr %2311, i32 0, i32 0
  %2313 = load float, ptr %2312, align 4, !tbaa !221
  %2314 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2309, float noundef %2313)
  %2315 = load ptr, ptr %7, align 8, !tbaa !5
  %2316 = getelementptr inbounds %struct.ImGuiContext, ptr %2315, i32 0, i32 64
  %2317 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %2316, i32 0, i32 16
  %2318 = getelementptr inbounds %struct.ImVec2, ptr %2317, i32 0, i32 0
  %2319 = load float, ptr %2318, align 4, !tbaa !222
  %2320 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2314, float noundef %2319)
  %2321 = load ptr, ptr %9, align 8, !tbaa !5
  %2322 = getelementptr inbounds %struct.ImGuiWindow, ptr %2321, i32 0, i32 50
  %2323 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2322, i32 0, i32 24
  %2324 = getelementptr inbounds %struct.ImVec2, ptr %2323, i32 0, i32 0
  store float %2320, ptr %2324, align 4, !tbaa !223
  %2325 = load ptr, ptr %7, align 8, !tbaa !5
  %2326 = getelementptr inbounds %struct.ImGuiContext, ptr %2325, i32 0, i32 64
  %2327 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %2326, i32 0, i32 16
  %2328 = getelementptr inbounds %struct.ImVec2, ptr %2327, i32 0, i32 1
  %2329 = load float, ptr %2328, align 4, !tbaa !224
  %2330 = load ptr, ptr %9, align 8, !tbaa !5
  %2331 = getelementptr inbounds %struct.ImGuiWindow, ptr %2330, i32 0, i32 50
  %2332 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2331, i32 0, i32 24
  %2333 = getelementptr inbounds %struct.ImVec2, ptr %2332, i32 0, i32 1
  store float %2329, ptr %2333, align 4, !tbaa !225
  %2334 = load ptr, ptr %9, align 8, !tbaa !5
  %2335 = getelementptr inbounds %struct.ImGuiWindow, ptr %2334, i32 0, i32 50
  %2336 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2335, i32 0, i32 25
  %2337 = load ptr, ptr %8, align 8, !tbaa !5
  %2338 = getelementptr inbounds %struct.ImGuiStyle, ptr %2337, i32 0, i32 14
  %2339 = getelementptr inbounds %struct.ImVec2, ptr %2338, i32 0, i32 0
  %2340 = load float, ptr %2339, align 4, !tbaa !221
  %2341 = load i8, ptr %13, align 1, !tbaa !71, !range !67, !noundef !68
  %2342 = trunc i8 %2341 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36) %2336, i32 noundef 3, float noundef %2340, i1 noundef zeroext %2342)
  %2343 = load ptr, ptr %9, align 8, !tbaa !5
  %2344 = getelementptr inbounds %struct.ImGuiWindow, ptr %2343, i32 0, i32 50
  %2345 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2344, i32 0, i32 26
  store i32 0, ptr %2345, align 8, !tbaa !226
  %2346 = load ptr, ptr %9, align 8, !tbaa !5
  %2347 = getelementptr inbounds %struct.ImGuiWindow, ptr %2346, i32 0, i32 50
  %2348 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2347, i32 0, i32 27
  store i32 0, ptr %2348, align 4, !tbaa !227
  %2349 = load ptr, ptr %9, align 8, !tbaa !5
  %2350 = getelementptr inbounds %struct.ImGuiWindow, ptr %2349, i32 0, i32 50
  %2351 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2350, i32 0, i32 28
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2351, i32 noundef 0)
  %2352 = load ptr, ptr %9, align 8, !tbaa !5
  %2353 = getelementptr inbounds %struct.ImGuiWindow, ptr %2352, i32 0, i32 61
  %2354 = load ptr, ptr %9, align 8, !tbaa !5
  %2355 = getelementptr inbounds %struct.ImGuiWindow, ptr %2354, i32 0, i32 50
  %2356 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2355, i32 0, i32 29
  store ptr %2353, ptr %2356, align 8, !tbaa !228
  %2357 = load ptr, ptr %9, align 8, !tbaa !5
  %2358 = getelementptr inbounds %struct.ImGuiWindow, ptr %2357, i32 0, i32 50
  %2359 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2358, i32 0, i32 30
  store ptr null, ptr %2359, align 8, !tbaa !229
  %2360 = load ptr, ptr %9, align 8, !tbaa !5
  %2361 = getelementptr inbounds %struct.ImGuiWindow, ptr %2360, i32 0, i32 50
  %2362 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2361, i32 0, i32 31
  store i32 1, ptr %2362, align 8, !tbaa !230
  %2363 = load ptr, ptr %17, align 8, !tbaa !5
  %2364 = icmp ne ptr %2363, null
  br i1 %2364, label %2365, label %2370

2365:                                             ; preds = %2286
  %2366 = load ptr, ptr %17, align 8, !tbaa !5
  %2367 = getelementptr inbounds %struct.ImGuiWindow, ptr %2366, i32 0, i32 50
  %2368 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2367, i32 0, i32 31
  %2369 = load i32, ptr %2368, align 8, !tbaa !230
  br label %2371

2370:                                             ; preds = %2286
  br label %2371

2371:                                             ; preds = %2370, %2365
  %2372 = phi i32 [ %2369, %2365 ], [ 1, %2370 ]
  %2373 = load ptr, ptr %9, align 8, !tbaa !5
  %2374 = getelementptr inbounds %struct.ImGuiWindow, ptr %2373, i32 0, i32 50
  %2375 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2374, i32 0, i32 32
  store i32 %2372, ptr %2375, align 4, !tbaa !231
  %2376 = load ptr, ptr %9, align 8, !tbaa !5
  %2377 = getelementptr inbounds %struct.ImGuiWindow, ptr %2376, i32 0, i32 50
  %2378 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2377, i32 0, i32 34
  store i32 -1, ptr %2378, align 4, !tbaa !232
  %2379 = load ptr, ptr %9, align 8, !tbaa !5
  %2380 = getelementptr inbounds %struct.ImGuiWindow, ptr %2379, i32 0, i32 50
  %2381 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2380, i32 0, i32 33
  store i32 -1, ptr %2381, align 8, !tbaa !233
  %2382 = load ptr, ptr %9, align 8, !tbaa !5
  %2383 = getelementptr inbounds %struct.ImGuiWindow, ptr %2382, i32 0, i32 59
  %2384 = load float, ptr %2383, align 8, !tbaa !172
  %2385 = load ptr, ptr %9, align 8, !tbaa !5
  %2386 = getelementptr inbounds %struct.ImGuiWindow, ptr %2385, i32 0, i32 50
  %2387 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2386, i32 0, i32 36
  store float %2384, ptr %2387, align 4, !tbaa !234
  %2388 = load ptr, ptr %9, align 8, !tbaa !5
  %2389 = getelementptr inbounds %struct.ImGuiWindow, ptr %2388, i32 0, i32 50
  %2390 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2389, i32 0, i32 37
  store float -1.000000e+00, ptr %2390, align 8, !tbaa !235
  %2391 = load ptr, ptr %9, align 8, !tbaa !5
  %2392 = getelementptr inbounds %struct.ImGuiWindow, ptr %2391, i32 0, i32 50
  %2393 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2392, i32 0, i32 39
  call void @_ZN8ImVectorIiE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2393, i32 noundef 0)
  %2394 = load ptr, ptr %9, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.ImGuiWindow, ptr %2394, i32 0, i32 50
  %2396 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2395, i32 0, i32 40
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2396, i32 noundef 0)
  %2397 = load ptr, ptr %9, align 8, !tbaa !5
  %2398 = getelementptr inbounds %struct.ImGuiWindow, ptr %2397, i32 0, i32 50
  %2399 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2398, i32 0, i32 41
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2399, i32 noundef 0)
  %2400 = load ptr, ptr %9, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct.ImGuiWindow, ptr %2400, i32 0, i32 50
  %2402 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2401, i32 0, i32 42
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2402, i32 noundef 0)
  %2403 = load ptr, ptr %17, align 8, !tbaa !5
  %2404 = icmp ne ptr %2403, null
  br i1 %2404, label %2405, label %2410

2405:                                             ; preds = %2371
  %2406 = load ptr, ptr %17, align 8, !tbaa !5
  %2407 = getelementptr inbounds %struct.ImGuiWindow, ptr %2406, i32 0, i32 50
  %2408 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2407, i32 0, i32 35
  %2409 = load i32, ptr %2408, align 8, !tbaa !236
  br label %2411

2410:                                             ; preds = %2371
  br label %2411

2411:                                             ; preds = %2410, %2405
  %2412 = phi i32 [ %2409, %2405 ], [ 0, %2410 ]
  %2413 = load ptr, ptr %9, align 8, !tbaa !5
  %2414 = getelementptr inbounds %struct.ImGuiWindow, ptr %2413, i32 0, i32 50
  %2415 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2414, i32 0, i32 35
  store i32 %2412, ptr %2415, align 8, !tbaa !236
  %2416 = load ptr, ptr %17, align 8, !tbaa !5
  %2417 = icmp ne ptr %2416, null
  br i1 %2417, label %2418, label %2425

2418:                                             ; preds = %2411
  %2419 = load ptr, ptr %9, align 8, !tbaa !5
  %2420 = getelementptr inbounds %struct.ImGuiWindow, ptr %2419, i32 0, i32 50
  %2421 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2420, i32 0, i32 39
  %2422 = load ptr, ptr %9, align 8, !tbaa !5
  %2423 = getelementptr inbounds %struct.ImGuiWindow, ptr %2422, i32 0, i32 50
  %2424 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2423, i32 0, i32 35
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %2421, ptr noundef nonnull align 4 dereferenceable(4) %2424)
  br label %2425

2425:                                             ; preds = %2418, %2411
  %2426 = load ptr, ptr %9, align 8, !tbaa !5
  %2427 = getelementptr inbounds %struct.ImGuiWindow, ptr %2426, i32 0, i32 37
  %2428 = load i8, ptr %2427, align 4, !tbaa !142
  %2429 = sext i8 %2428 to i32
  %2430 = icmp sgt i32 %2429, 0
  br i1 %2430, label %2431, label %2436

2431:                                             ; preds = %2425
  %2432 = load ptr, ptr %9, align 8, !tbaa !5
  %2433 = getelementptr inbounds %struct.ImGuiWindow, ptr %2432, i32 0, i32 37
  %2434 = load i8, ptr %2433, align 4, !tbaa !142
  %2435 = add i8 %2434, -1
  store i8 %2435, ptr %2433, align 4, !tbaa !142
  br label %2436

2436:                                             ; preds = %2431, %2425
  %2437 = load ptr, ptr %9, align 8, !tbaa !5
  %2438 = getelementptr inbounds %struct.ImGuiWindow, ptr %2437, i32 0, i32 38
  %2439 = load i8, ptr %2438, align 1, !tbaa !143
  %2440 = sext i8 %2439 to i32
  %2441 = icmp sgt i32 %2440, 0
  br i1 %2441, label %2442, label %2447

2442:                                             ; preds = %2436
  %2443 = load ptr, ptr %9, align 8, !tbaa !5
  %2444 = getelementptr inbounds %struct.ImGuiWindow, ptr %2443, i32 0, i32 38
  %2445 = load i8, ptr %2444, align 1, !tbaa !143
  %2446 = add i8 %2445, -1
  store i8 %2446, ptr %2444, align 1, !tbaa !143
  br label %2447

2447:                                             ; preds = %2442, %2436
  %2448 = load i8, ptr %49, align 1, !tbaa !71, !range !67, !noundef !68
  %2449 = trunc i8 %2448 to i1
  br i1 %2449, label %2450, label %2453

2450:                                             ; preds = %2447
  %2451 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %2451)
  %2452 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %2452, i1 noundef zeroext false)
  br label %2453

2453:                                             ; preds = %2450, %2447
  %2454 = load i32, ptr %6, align 4, !tbaa !9
  %2455 = and i32 %2454, 1
  %2456 = icmp ne i32 %2455, 0
  br i1 %2456, label %2461, label %2457

2457:                                             ; preds = %2453
  %2458 = load ptr, ptr %9, align 8, !tbaa !5
  %2459 = load ptr, ptr %4, align 8, !tbaa !5
  %2460 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %2458, ptr noundef nonnull align 4 dereferenceable(16) %64, ptr noundef %2459, ptr noundef %2460)
  br label %2461

2461:                                             ; preds = %2457, %2453
  %2462 = load ptr, ptr %9, align 8, !tbaa !5
  %2463 = getelementptr inbounds %struct.ImGuiWindow, ptr %2462, i32 0, i32 12
  %2464 = load i32, ptr %2463, align 4, !tbaa !237
  %2465 = load ptr, ptr %9, align 8, !tbaa !5
  %2466 = getelementptr inbounds %struct.ImGuiWindow, ptr %2465, i32 0, i32 50
  %2467 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2466, i32 0, i32 11
  store i32 %2464, ptr %2467, align 4, !tbaa !238
  %2468 = getelementptr inbounds %struct.ImRect, ptr %64, i32 0, i32 0
  %2469 = getelementptr inbounds %struct.ImRect, ptr %64, i32 0, i32 1
  %2470 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2468, ptr noundef nonnull align 4 dereferenceable(8) %2469, i1 noundef zeroext false)
  %2471 = zext i1 %2470 to i64
  %2472 = select i1 %2470, i32 1, i32 0
  %2473 = load ptr, ptr %9, align 8, !tbaa !5
  %2474 = getelementptr inbounds %struct.ImGuiWindow, ptr %2473, i32 0, i32 50
  %2475 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2474, i32 0, i32 12
  store i32 %2472, ptr %2475, align 8, !tbaa !239
  %2476 = load ptr, ptr %9, align 8, !tbaa !5
  %2477 = getelementptr inbounds %struct.ImGuiWindow, ptr %2476, i32 0, i32 50
  %2478 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2477, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2478, ptr align 4 %64, i64 16, i1 false), !tbaa.struct !118
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  br label %2481

2479:                                             ; preds = %574
  %2480 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %2480)
  br label %2481

2481:                                             ; preds = %2479, %2461
  %2482 = load ptr, ptr %9, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.ImGuiWindow, ptr %2482, i32 0, i32 53
  %2484 = getelementptr inbounds %struct.ImRect, ptr %2483, i32 0, i32 0
  %2485 = load ptr, ptr %9, align 8, !tbaa !5
  %2486 = getelementptr inbounds %struct.ImGuiWindow, ptr %2485, i32 0, i32 53
  %2487 = getelementptr inbounds %struct.ImRect, ptr %2486, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2484, ptr noundef nonnull align 4 dereferenceable(8) %2487, i1 noundef zeroext true)
  %2488 = load i8, ptr %12, align 1, !tbaa !71, !range !67, !noundef !68
  %2489 = trunc i8 %2488 to i1
  br i1 %2489, label %2490, label %2493

2490:                                             ; preds = %2481
  %2491 = load ptr, ptr %9, align 8, !tbaa !5
  %2492 = getelementptr inbounds %struct.ImGuiWindow, ptr %2491, i32 0, i32 23
  store i8 0, ptr %2492, align 8, !tbaa !240
  br label %2493

2493:                                             ; preds = %2490, %2481
  %2494 = load ptr, ptr %9, align 8, !tbaa !5
  %2495 = getelementptr inbounds %struct.ImGuiWindow, ptr %2494, i32 0, i32 33
  %2496 = load i16, ptr %2495, align 2, !tbaa !241
  %2497 = add i16 %2496, 1
  store i16 %2497, ptr %2495, align 2, !tbaa !241
  %2498 = load ptr, ptr %7, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.ImGuiContext, ptr %2498, i32 0, i32 64
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(108) %2499)
  %2500 = load i32, ptr %6, align 4, !tbaa !9
  %2501 = and i32 %2500, 16777216
  %2502 = icmp ne i32 %2501, 0
  br i1 %2502, label %2503, label %2587

2503:                                             ; preds = %2493
  %2504 = load i32, ptr %6, align 4, !tbaa !9
  %2505 = and i32 %2504, 1
  %2506 = icmp ne i32 %2505, 0
  br i1 %2506, label %2507, label %2508

2507:                                             ; preds = %2503
  br label %2510

2508:                                             ; preds = %2503
  call void @__assert_fail(ptr noundef @.str.99, ptr noundef @.str.3, i32 noundef 6043, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

2509:                                             ; No predecessors!
  br label %2510

2510:                                             ; preds = %2509, %2507
  %2511 = load i32, ptr %6, align 4, !tbaa !9
  %2512 = and i32 %2511, 64
  %2513 = icmp ne i32 %2512, 0
  br i1 %2513, label %2554, label %2514

2514:                                             ; preds = %2510
  %2515 = load ptr, ptr %9, align 8, !tbaa !5
  %2516 = getelementptr inbounds %struct.ImGuiWindow, ptr %2515, i32 0, i32 37
  %2517 = load i8, ptr %2516, align 4, !tbaa !142
  %2518 = sext i8 %2517 to i32
  %2519 = icmp sle i32 %2518, 0
  br i1 %2519, label %2520, label %2554

2520:                                             ; preds = %2514
  %2521 = load ptr, ptr %9, align 8, !tbaa !5
  %2522 = getelementptr inbounds %struct.ImGuiWindow, ptr %2521, i32 0, i32 38
  %2523 = load i8, ptr %2522, align 1, !tbaa !143
  %2524 = sext i8 %2523 to i32
  %2525 = icmp sle i32 %2524, 0
  br i1 %2525, label %2526, label %2554

2526:                                             ; preds = %2520
  %2527 = load ptr, ptr %9, align 8, !tbaa !5
  %2528 = getelementptr inbounds %struct.ImGuiWindow, ptr %2527, i32 0, i32 51
  %2529 = getelementptr inbounds %struct.ImRect, ptr %2528, i32 0, i32 0
  %2530 = getelementptr inbounds %struct.ImVec2, ptr %2529, i32 0, i32 0
  %2531 = load float, ptr %2530, align 8, !tbaa !242
  %2532 = load ptr, ptr %9, align 8, !tbaa !5
  %2533 = getelementptr inbounds %struct.ImGuiWindow, ptr %2532, i32 0, i32 51
  %2534 = getelementptr inbounds %struct.ImRect, ptr %2533, i32 0, i32 1
  %2535 = getelementptr inbounds %struct.ImVec2, ptr %2534, i32 0, i32 0
  %2536 = load float, ptr %2535, align 8, !tbaa !243
  %2537 = fcmp oge float %2531, %2536
  br i1 %2537, label %2550, label %2538

2538:                                             ; preds = %2526
  %2539 = load ptr, ptr %9, align 8, !tbaa !5
  %2540 = getelementptr inbounds %struct.ImGuiWindow, ptr %2539, i32 0, i32 51
  %2541 = getelementptr inbounds %struct.ImRect, ptr %2540, i32 0, i32 0
  %2542 = getelementptr inbounds %struct.ImVec2, ptr %2541, i32 0, i32 1
  %2543 = load float, ptr %2542, align 4, !tbaa !244
  %2544 = load ptr, ptr %9, align 8, !tbaa !5
  %2545 = getelementptr inbounds %struct.ImGuiWindow, ptr %2544, i32 0, i32 51
  %2546 = getelementptr inbounds %struct.ImRect, ptr %2545, i32 0, i32 1
  %2547 = getelementptr inbounds %struct.ImVec2, ptr %2546, i32 0, i32 1
  %2548 = load float, ptr %2547, align 4, !tbaa !245
  %2549 = fcmp oge float %2543, %2548
  br i1 %2549, label %2550, label %2553

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

2553:                                             ; preds = %2550, %2538
  br label %2554

2554:                                             ; preds = %2553, %2520, %2514, %2510
  %2555 = load ptr, ptr %17, align 8, !tbaa !5
  %2556 = icmp ne ptr %2555, null
  br i1 %2556, label %2557, label %2570

2557:                                             ; preds = %2554
  %2558 = load ptr, ptr %17, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.ImGuiWindow, ptr %2558, i32 0, i32 24
  %2560 = load i8, ptr %2559, align 1, !tbaa !139, !range !67, !noundef !68
  %2561 = trunc i8 %2560 to i1
  br i1 %2561, label %2567, label %2562

2562:                                             ; preds = %2557
  %2563 = load ptr, ptr %17, align 8, !tbaa !5
  %2564 = getelementptr inbounds %struct.ImGuiWindow, ptr %2563, i32 0, i32 42
  %2565 = load i32, ptr %2564, align 4, !tbaa !125
  %2566 = icmp sgt i32 %2565, 0
  br i1 %2566, label %2567, label %2570

2567:                                             ; preds = %2562, %2557
  %2568 = load ptr, ptr %9, align 8, !tbaa !5
  %2569 = getelementptr inbounds %struct.ImGuiWindow, ptr %2568, i32 0, i32 42
  store i32 1, ptr %2569, align 4, !tbaa !125
  br label %2570

2570:                                             ; preds = %2567, %2562, %2554
  %2571 = load ptr, ptr %17, align 8, !tbaa !5
  %2572 = icmp ne ptr %2571, null
  br i1 %2572, label %2573, label %2586

2573:                                             ; preds = %2570
  %2574 = load ptr, ptr %17, align 8, !tbaa !5
  %2575 = getelementptr inbounds %struct.ImGuiWindow, ptr %2574, i32 0, i32 24
  %2576 = load i8, ptr %2575, align 1, !tbaa !139, !range !67, !noundef !68
  %2577 = trunc i8 %2576 to i1
  br i1 %2577, label %2583, label %2578

2578:                                             ; preds = %2573
  %2579 = load ptr, ptr %17, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.ImGuiWindow, ptr %2579, i32 0, i32 43
  %2581 = load i32, ptr %2580, align 8, !tbaa !83
  %2582 = icmp sgt i32 %2581, 0
  br i1 %2582, label %2583, label %2586

2583:                                             ; preds = %2578, %2573
  %2584 = load ptr, ptr %9, align 8, !tbaa !5
  %2585 = getelementptr inbounds %struct.ImGuiWindow, ptr %2584, i32 0, i32 43
  store i32 1, ptr %2585, align 8, !tbaa !83
  br label %2586

2586:                                             ; preds = %2583, %2578, %2570
  br label %2587

2587:                                             ; preds = %2586, %2493
  %2588 = load ptr, ptr %8, align 8, !tbaa !5
  %2589 = getelementptr inbounds %struct.ImGuiStyle, ptr %2588, i32 0, i32 0
  %2590 = load float, ptr %2589, align 4, !tbaa !246
  %2591 = fcmp ole float %2590, 0.000000e+00
  br i1 %2591, label %2592, label %2595

2592:                                             ; preds = %2587
  %2593 = load ptr, ptr %9, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.ImGuiWindow, ptr %2593, i32 0, i32 42
  store i32 1, ptr %2594, align 4, !tbaa !125
  br label %2595

2595:                                             ; preds = %2592, %2587
  %2596 = load ptr, ptr %9, align 8, !tbaa !5
  %2597 = getelementptr inbounds %struct.ImGuiWindow, ptr %2596, i32 0, i32 42
  %2598 = load i32, ptr %2597, align 4, !tbaa !125
  %2599 = icmp sgt i32 %2598, 0
  br i1 %2599, label %2605, label %2600

2600:                                             ; preds = %2595
  %2601 = load ptr, ptr %9, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.ImGuiWindow, ptr %2601, i32 0, i32 43
  %2603 = load i32, ptr %2602, align 8, !tbaa !83
  %2604 = icmp sgt i32 %2603, 0
  br label %2605

2605:                                             ; preds = %2600, %2595
  %2606 = phi i1 [ true, %2595 ], [ %2604, %2600 ]
  %2607 = load ptr, ptr %9, align 8, !tbaa !5
  %2608 = getelementptr inbounds %struct.ImGuiWindow, ptr %2607, i32 0, i32 28
  %2609 = zext i1 %2606 to i8
  store i8 %2609, ptr %2608, align 1, !tbaa !247
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #13
  store i8 0, ptr %84, align 1, !tbaa !71
  %2610 = load ptr, ptr %9, align 8, !tbaa !5
  %2611 = getelementptr inbounds %struct.ImGuiWindow, ptr %2610, i32 0, i32 24
  %2612 = load i8, ptr %2611, align 1, !tbaa !139, !range !67, !noundef !68
  %2613 = trunc i8 %2612 to i1
  br i1 %2613, label %2624, label %2614

2614:                                             ; preds = %2605
  %2615 = load ptr, ptr %9, align 8, !tbaa !5
  %2616 = getelementptr inbounds %struct.ImGuiWindow, ptr %2615, i32 0, i32 21
  %2617 = load i8, ptr %2616, align 2, !tbaa !116, !range !67, !noundef !68
  %2618 = trunc i8 %2617 to i1
  br i1 %2618, label %2619, label %2624

2619:                                             ; preds = %2614
  %2620 = load ptr, ptr %9, align 8, !tbaa !5
  %2621 = getelementptr inbounds %struct.ImGuiWindow, ptr %2620, i32 0, i32 28
  %2622 = load i8, ptr %2621, align 1, !tbaa !247, !range !67, !noundef !68
  %2623 = trunc i8 %2622 to i1
  br i1 %2623, label %2624, label %2643

2624:                                             ; preds = %2619, %2614, %2605
  %2625 = load ptr, ptr %9, align 8, !tbaa !5
  %2626 = getelementptr inbounds %struct.ImGuiWindow, ptr %2625, i32 0, i32 37
  %2627 = load i8, ptr %2626, align 4, !tbaa !142
  %2628 = sext i8 %2627 to i32
  %2629 = icmp sle i32 %2628, 0
  br i1 %2629, label %2630, label %2642

2630:                                             ; preds = %2624
  %2631 = load ptr, ptr %9, align 8, !tbaa !5
  %2632 = getelementptr inbounds %struct.ImGuiWindow, ptr %2631, i32 0, i32 38
  %2633 = load i8, ptr %2632, align 1, !tbaa !143
  %2634 = sext i8 %2633 to i32
  %2635 = icmp sle i32 %2634, 0
  br i1 %2635, label %2636, label %2642

2636:                                             ; preds = %2630
  %2637 = load ptr, ptr %9, align 8, !tbaa !5
  %2638 = getelementptr inbounds %struct.ImGuiWindow, ptr %2637, i32 0, i32 43
  %2639 = load i32, ptr %2638, align 8, !tbaa !83
  %2640 = icmp sle i32 %2639, 0
  br i1 %2640, label %2641, label %2642

2641:                                             ; preds = %2636
  store i8 1, ptr %84, align 1, !tbaa !71
  br label %2642

2642:                                             ; preds = %2641, %2636, %2630, %2624
  br label %2643

2643:                                             ; preds = %2642, %2619
  %2644 = load i8, ptr %84, align 1, !tbaa !71, !range !67, !noundef !68
  %2645 = trunc i8 %2644 to i1
  %2646 = load ptr, ptr %9, align 8, !tbaa !5
  %2647 = getelementptr inbounds %struct.ImGuiWindow, ptr %2646, i32 0, i32 26
  %2648 = zext i1 %2645 to i8
  store i8 %2648, ptr %2647, align 1, !tbaa !248
  %2649 = load i8, ptr %84, align 1, !tbaa !71, !range !67, !noundef !68
  %2650 = trunc i8 %2649 to i1
  %2651 = xor i1 %2650, true
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #13
  ret i1 %2651
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16)) #10 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL15CreateNewWindowPKci(ptr noundef, i32 noundef) #8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden { <2 x float>, <2 x float> } @_ZL15GetViewportRectv() #8

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRectRK6ImVec2(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(8)) #3

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), i1 noundef zeroext, i32 noundef, ptr noundef, float noundef) #10

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !14, i64 6676}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !20, i64 5480, !6, i64 6432, !17, i64 6440, !17, i64 6444, !21, i64 6448, !23, i64 6656, !10, i64 6664, !10, i64 6668, !10, i64 6672, !14, i64 6676, !14, i64 6677, !14, i64 6678, !14, i64 6679, !10, i64 6680, !6, i64 6688, !24, i64 6696, !24, i64 6712, !24, i64 6728, !24, i64 6744, !25, i64 6760, !10, i64 6776, !6, i64 6784, !6, i64 6792, !6, i64 6800, !6, i64 6808, !6, i64 6816, !16, i64 6824, !17, i64 6832, !10, i64 6836, !14, i64 6840, !10, i64 6844, !17, i64 6848, !17, i64 6852, !10, i64 6856, !10, i64 6860, !17, i64 6864, !14, i64 6868, !14, i64 6869, !14, i64 6870, !14, i64 6871, !14, i64 6872, !10, i64 6876, !10, i64 6880, !27, i64 6888, !16, i64 6896, !6, i64 6904, !28, i64 6912, !10, i64 6916, !10, i64 6920, !14, i64 6924, !14, i64 6925, !6, i64 6928, !10, i64 6936, !17, i64 6940, !29, i64 6944, !31, i64 7056, !32, i64 7080, !33, i64 7096, !34, i64 7112, !35, i64 7128, !35, i64 7144, !6, i64 7160, !10, i64 7168, !10, i64 7172, !10, i64 7176, !10, i64 7180, !10, i64 7184, !10, i64 7188, !10, i64 7192, !10, i64 7196, !10, i64 7200, !10, i64 7204, !10, i64 7208, !28, i64 7212, !30, i64 7216, !10, i64 7232, !36, i64 7236, !10, i64 7240, !14, i64 7244, !14, i64 7245, !14, i64 7246, !14, i64 7247, !14, i64 7248, !14, i64 7249, !14, i64 7250, !10, i64 7252, !30, i64 7256, !14, i64 7272, !14, i64 7273, !10, i64 7276, !37, i64 7280, !10, i64 7284, !10, i64 7288, !10, i64 7292, !10, i64 7296, !38, i64 7304, !38, i64 7352, !38, i64 7400, !6, i64 7448, !10, i64 7456, !6, i64 7464, !6, i64 7472, !6, i64 7480, !17, i64 7488, !17, i64 7492, !14, i64 7496, !6, i64 7504, !6, i64 7512, !10, i64 7520, !10, i64 7524, !10, i64 7528, !10, i64 7532, !14, i64 7536, !39, i64 7544, !40, i64 7600, !17, i64 7632, !41, i64 7640, !41, i64 7808, !10, i64 7976, !14, i64 7980, !14, i64 7981, !14, i64 7982, !10, i64 7984, !10, i64 7988, !10, i64 7992, !49, i64 8000, !30, i64 8064, !10, i64 8080, !10, i64 8084, !17, i64 8088, !10, i64 8092, !10, i64 8096, !10, i64 8100, !10, i64 8104, !50, i64 8112, !7, i64 8128, !6, i64 8144, !51, i64 8152, !53, i64 8192, !54, i64 8208, !16, i64 8224, !55, i64 8232, !59, i64 11960, !10, i64 12080, !10, i64 12084, !17, i64 12088, !17, i64 12092, !7, i64 12096, !22, i64 12108, !14, i64 12124, !17, i64 12128, !17, i64 12132, !17, i64 12136, !10, i64 12140, !56, i64 12144, !62, i64 12160, !16, i64 12176, !16, i64 12184, !14, i64 12192, !17, i64 12196, !63, i64 12200, !64, i64 12216, !65, i64 12232, !14, i64 12248, !66, i64 12252, !6, i64 12256, !63, i64 12264, !17, i64 12280, !14, i64 12284, !10, i64 12288, !10, i64 12292, !10, i64 12296, !14, i64 12300, !10, i64 12304, !7, i64 12308, !10, i64 12788, !17, i64 12792, !10, i64 12796, !10, i64 12800, !10, i64 12804, !7, i64 12808}
!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, !10, i64 960, !16, i64 964, !7, i64 972, !7, i64 1016, !7, i64 1056, !7, i64 1061, !7, i64 1066, !7, i64 1071, !7, i64 1076, !7, i64 1084, !7, i64 1104, !7, i64 1124, !7, i64 1164, !7, i64 1184, !7, i64 3232, !7, i64 5280, !7, i64 5364, !18, i64 5448, !19, i64 5456}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!20 = !{!"_ZTS10ImGuiStyle", !17, i64 0, !16, i64 4, !17, i64 12, !17, i64 16, !16, i64 20, !16, i64 28, !10, i64 36, !17, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !16, i64 56, !17, i64 64, !17, i64 68, !16, i64 72, !16, i64 80, !16, i64 88, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !10, i64 132, !16, i64 136, !16, i64 144, !16, i64 152, !16, i64 160, !17, i64 168, !14, i64 172, !14, i64 173, !17, i64 176, !17, i64 180, !7, i64 184}
!21 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !22, i64 28, !10, i64 44, !7, i64 48, !7, i64 144}
!22 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!23 = !{!"double", !7, i64 0}
!24 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"_ZTS12ImGuiStorage", !26, i64 0}
!26 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"long long", !7, i64 0}
!28 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!29 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !14, i64 56, !30, i64 60, !6, i64 80, !6, i64 88, !17, i64 96, !16, i64 100}
!30 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!31 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !17, i64 4, !10, i64 8, !10, i64 12, !14, i64 16}
!32 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!37 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!38 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !10, i64 8, !10, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !30, i64 28}
!39 = !{!"_ZTS10ImDrawData", !14, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !16, i64 28, !16, i64 36, !16, i64 44}
!40 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!41 = !{!"_ZTS10ImDrawList", !42, i64 0, !19, i64 16, !43, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !10, i64 76, !6, i64 80, !6, i64 88, !44, i64 96, !45, i64 112, !46, i64 128, !47, i64 144}
!42 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!47 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !48, i64 8}
!48 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !14, i64 57, !14, i64 58}
!50 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!51 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !52, i64 0, !25, i64 16, !10, i64 32}
!52 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !19, i64 16, !56, i64 32, !56, i64 48, !14, i64 64, !10, i64 68, !17, i64 72, !57, i64 76, !17, i64 3696, !14, i64 3700, !14, i64 3701, !10, i64 3704, !6, i64 3712, !6, i64 3720}
!56 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !17, i64 20, !58, i64 24}
!58 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !10, i64 3588, !10, i64 3592}
!59 = !{!"_ZTS6ImFont", !60, i64 0, !17, i64 16, !17, i64 20, !19, i64 24, !61, i64 40, !6, i64 56, !16, i64 64, !6, i64 72, !6, i64 80, !18, i64 88, !18, i64 90, !18, i64 92, !14, i64 94, !17, i64 96, !17, i64 100, !17, i64 104, !10, i64 108, !7, i64 112}
!60 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS15ImGuiTextBuffer", !56, i64 0}
!64 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !56, i64 0}
!66 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!67 = !{i8 0, i8 2}
!68 = !{}
!69 = !{!13, !10, i64 6668}
!70 = !{!13, !10, i64 6664}
!71 = !{!14, !14, i64 0}
!72 = !{!73, !10, i64 632}
!73 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !17, i64 64, !17, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !16, i64 84, !16, i64 92, !16, i64 100, !16, i64 108, !16, i64 116, !14, i64 124, !14, i64 125, !14, i64 126, !14, i64 127, !14, i64 128, !14, i64 129, !14, i64 130, !14, i64 131, !14, i64 132, !14, i64 133, !14, i64 134, !14, i64 135, !7, i64 136, !18, i64 138, !18, i64 140, !18, i64 142, !10, i64 144, !7, i64 148, !7, i64 149, !7, i64 150, !14, i64 151, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !16, i64 176, !16, i64 184, !62, i64 192, !74, i64 208, !30, i64 536, !30, i64 552, !30, i64 568, !30, i64 584, !30, i64 600, !30, i64 616, !10, i64 632, !17, i64 636, !17, i64 640, !25, i64 648, !79, i64 664, !17, i64 680, !10, i64 684, !6, i64 688, !41, i64 696, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !7, i64 904, !7, i64 912, !14, i64 944, !10, i64 948, !10, i64 952}
!74 = !{!"_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, !75, i64 56, !75, i64 60, !75, i64 64, !10, i64 68, !10, i64 72, !30, i64 76, !30, i64 92, !36, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !14, i64 128, !14, i64 129, !14, i64 130, !16, i64 132, !76, i64 140, !10, i64 176, !10, i64 180, !24, i64 184, !6, i64 200, !6, i64 208, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !17, i64 236, !17, i64 240, !77, i64 248, !60, i64 264, !60, i64 280, !78, i64 296, !7, i64 312}
!75 = !{!"_ZTS6ImVec1", !17, i64 0}
!76 = !{!"_ZTS16ImGuiMenuColumns", !17, i64 0, !17, i64 4, !17, i64 8, !7, i64 12, !7, i64 24}
!77 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!78 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!79 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!13, !10, i64 6744}
!81 = !{!13, !14, i64 6677}
!82 = !{!73, !14, i64 134}
!83 = !{!73, !10, i64 160}
!84 = !{!13, !10, i64 7144}
!85 = !{!73, !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 = !{!73, !14, i64 132}
!90 = !{!73, !10, i64 12}
!91 = !{!13, !23, i64 6656}
!92 = !{!73, !17, i64 636}
!93 = !{!73, !18, i64 140}
!94 = !{!13, !10, i64 6776}
!95 = !{!73, !18, i64 142}
!96 = !{!73, !6, i64 864}
!97 = !{!73, !10, i64 192}
!98 = !{!13, !6, i64 6784}
!99 = !{!13, !10, i64 6944}
!100 = !{!73, !10, i64 164}
!101 = !{!13, !10, i64 6948}
!102 = !{i64 0, i64 4, !103, i64 4, i64 4, !103}
!103 = !{!17, !17, i64 0}
!104 = !{!73, !10, i64 168}
!105 = !{!13, !10, i64 6952}
!106 = !{!13, !17, i64 6976}
!107 = !{!13, !17, i64 6980}
!108 = !{!13, !17, i64 6992}
!109 = !{!73, !17, i64 100}
!110 = !{!73, !17, i64 108}
!111 = !{!13, !17, i64 6996}
!112 = !{!73, !17, i64 104}
!113 = !{!73, !17, i64 112}
!114 = !{!13, !14, i64 7000}
!115 = !{!13, !10, i64 6956}
!116 = !{!73, !14, i64 126}
!117 = !{!73, !14, i64 135}
!118 = !{i64 0, i64 4, !103, i64 4, i64 4, !103, i64 8, i64 4, !103, i64 12, i64 4, !103}
!119 = !{!73, !14, i64 944}
!120 = !{!13, !6, i64 7480}
!121 = !{!73, !6, i64 0}
!122 = !{!73, !10, i64 72}
!123 = !{!124, !124, i64 0}
!124 = !{!"long", !7, i64 0}
!125 = !{!73, !10, i64 156}
!126 = !{!73, !17, i64 32}
!127 = !{!73, !17, i64 24}
!128 = !{!73, !17, i64 36}
!129 = !{!73, !17, i64 28}
!130 = !{!20, !17, i64 44}
!131 = !{!73, !17, i64 68}
!132 = !{!20, !17, i64 52}
!133 = !{!20, !17, i64 16}
!134 = !{!20, !17, i64 8}
!135 = !{!13, !6, i64 6792}
!136 = !{!13, !10, i64 6836}
!137 = !{!13, !10, i64 6844}
!138 = !{!73, !14, i64 130}
!139 = !{!73, !14, i64 129}
!140 = !{!16, !17, i64 0}
!141 = !{!16, !17, i64 4}
!142 = !{!73, !7, i64 148}
!143 = !{!73, !7, i64 149}
!144 = !{!73, !14, i64 151}
!145 = !{!73, !10, i64 152}
!146 = !{!73, !10, i64 392}
!147 = !{!73, !17, i64 176}
!148 = !{!20, !17, i64 40}
!149 = !{!20, !17, i64 48}
!150 = !{!20, !17, i64 12}
!151 = !{!73, !17, i64 64}
!152 = !{!13, !14, i64 203}
!153 = !{!13, !17, i64 6440}
!154 = !{!73, !7, i64 136}
!155 = !{!73, !14, i64 125}
!156 = !{!20, !17, i64 104}
!157 = !{!73, !14, i64 124}
!158 = !{!73, !17, i64 16}
!159 = !{!73, !17, i64 552}
!160 = !{!73, !17, i64 20}
!161 = !{!73, !17, i64 556}
!162 = !{!73, !17, i64 116}
!163 = !{!73, !17, i64 560}
!164 = !{!73, !17, i64 120}
!165 = !{!73, !17, i64 564}
!166 = !{!20, !17, i64 68}
!167 = !{!73, !17, i64 56}
!168 = !{!73, !17, i64 568}
!169 = !{!73, !17, i64 572}
!170 = !{!73, !17, i64 576}
!171 = !{!73, !17, i64 580}
!172 = !{!73, !17, i64 640}
!173 = !{!73, !17, i64 40}
!174 = !{!73, !17, i64 92}
!175 = !{!73, !17, i64 44}
!176 = !{!73, !17, i64 60}
!177 = !{!73, !17, i64 96}
!178 = !{!73, !6, i64 688}
!179 = !{!13, !6, i64 6432}
!180 = !{!59, !6, i64 72}
!181 = !{!182, !6, i64 8}
!182 = !{!"_ZTS11ImFontAtlas", !14, i64 0, !10, i64 4, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !16, i64 48, !16, i64 56, !34, i64 64, !183, i64 80, !184, i64 96, !7, i64 112}
!183 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!184 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!185 = !{!13, !6, i64 7472}
!186 = !{!73, !6, i64 872}
!187 = !{!13, !17, i64 7632}
!188 = !{!13, !17, i64 7492}
!189 = !{!13, !17, i64 5492}
!190 = !{!191, !10, i64 0}
!191 = !{!"_ZTS9ImDrawCmd", !10, i64 0, !22, i64 4, !6, i64 24, !10, i64 32, !10, i64 36, !6, i64 40, !6, i64 48}
!192 = !{!41, !10, i64 32}
!193 = !{!13, !6, i64 7464}
!194 = !{!13, !6, i64 7160}
!195 = !{!73, !6, i64 880}
!196 = !{!73, !17, i64 48}
!197 = !{!73, !17, i64 52}
!198 = !{!73, !17, i64 84}
!199 = !{!73, !17, i64 584}
!200 = !{!73, !17, i64 88}
!201 = !{!73, !17, i64 588}
!202 = !{!73, !17, i64 592}
!203 = !{!73, !17, i64 596}
!204 = !{!73, !17, i64 616}
!205 = !{!73, !17, i64 620}
!206 = !{!73, !17, i64 624}
!207 = !{!73, !17, i64 628}
!208 = !{!73, !17, i64 264}
!209 = !{!73, !17, i64 272}
!210 = !{!73, !17, i64 268}
!211 = !{!73, !17, i64 260}
!212 = !{!73, !17, i64 256}
!213 = !{!73, !36, i64 316}
!214 = !{!73, !10, i64 320}
!215 = !{!73, !10, i64 328}
!216 = !{!73, !10, i64 324}
!217 = !{!73, !10, i64 332}
!218 = !{!73, !14, i64 336}
!219 = !{!73, !14, i64 337}
!220 = !{!73, !14, i64 338}
!221 = !{!20, !17, i64 72}
!222 = !{!13, !17, i64 7044}
!223 = !{!73, !17, i64 340}
!224 = !{!13, !17, i64 7048}
!225 = !{!73, !17, i64 344}
!226 = !{!73, !10, i64 384}
!227 = !{!73, !10, i64 388}
!228 = !{!73, !6, i64 408}
!229 = !{!73, !6, i64 416}
!230 = !{!73, !10, i64 424}
!231 = !{!73, !10, i64 428}
!232 = !{!73, !10, i64 436}
!233 = !{!73, !10, i64 432}
!234 = !{!73, !17, i64 444}
!235 = !{!73, !17, i64 448}
!236 = !{!73, !10, i64 440}
!237 = !{!73, !10, i64 76}
!238 = !{!73, !10, i64 276}
!239 = !{!73, !10, i64 280}
!240 = !{!73, !14, i64 128}
!241 = !{!73, !18, i64 138}
!242 = !{!73, !17, i64 536}
!243 = !{!73, !17, i64 544}
!244 = !{!73, !17, i64 540}
!245 = !{!73, !17, i64 548}
!246 = !{!20, !17, i64 0}
!247 = !{!73, !14, i64 133}
!248 = !{!73, !14, i64 131}


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

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

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

41:                                               ; preds = %36
  %42 = getelementptr inbounds i8, ptr %32, i64 6668
  %43 = load i32, ptr %42, align 4, !tbaa !68
  %44 = getelementptr inbounds i8, ptr %32, i64 6664
  %45 = load i32, ptr %44, align 8, !tbaa !69
  %.not314 = icmp eq i32 %43, %45
  br i1 %.not314, label %46, label %47

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

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

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

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

58:                                               ; preds = %52
  tail call void @__assert_fail(ptr noundef nonnull @.str.96, ptr noundef nonnull @.str.3, i32 noundef 5470, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

59:                                               ; preds = %52
  %60 = load i32, ptr %44, align 8, !tbaa !69
  %61 = getelementptr inbounds i8, ptr %53, i64 632
  %62 = load i32, ptr %61, align 8, !tbaa !70
  %.not317 = icmp eq i32 %62, %60
  %63 = getelementptr inbounds i8, ptr %32, i64 6744
  %64 = load i32, ptr %63, align 8, !tbaa !78
  %65 = icmp eq i32 %64, 0
  br i1 %65, label %66, label %69

66:                                               ; preds = %59
  %67 = getelementptr inbounds i8, ptr %32, i64 6677
  %68 = load i8, ptr %67, align 1, !tbaa !79, !range !66, !noundef !67
  br label %69

69:                                               ; preds = %66, %59
  %70 = phi i8 [ 0, %59 ], [ %68, %66 ]
  %71 = getelementptr inbounds i8, ptr %53, i64 134
  store i8 %70, ptr %71, align 2, !tbaa !80
  %72 = add nsw i32 %60, -1
  %73 = icmp slt i32 %62, %72
  %74 = getelementptr inbounds i8, ptr %53, i64 160
  %75 = load i32, ptr %74, align 8, !tbaa !81
  %76 = icmp sgt i32 %75, 0
  %77 = and i32 %spec.select, 67108864
  %.not318 = icmp eq i32 %77, 0
  br i1 %.not318, label %92, label %78

78:                                               ; preds = %69
  %79 = getelementptr inbounds i8, ptr %32, i64 7128
  %80 = getelementptr inbounds i8, ptr %32, i64 7144
  %81 = load i32, ptr %80, align 8, !tbaa !82
  %82 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %79, i32 noundef %81)
  %83 = getelementptr inbounds i8, ptr %53, i64 144
  %84 = load i32, ptr %83, align 8, !tbaa !83
  %85 = load i32, ptr %82, align 8, !tbaa !84
  %86 = icmp ne i32 %84, %85
  %87 = getelementptr inbounds i8, ptr %82, i64 8
  %88 = load ptr, ptr %87, align 8, !tbaa !86
  %89 = icmp ne ptr %53, %88
  %90 = or i1 %86, %89
  %91 = or i1 %73, %90
  br label %92

92:                                               ; preds = %78, %69
  %.0281.in = phi i1 [ %91, %78 ], [ %73, %69 ]
  %93 = select i1 %.0281.in, i1 true, i1 %76
  %94 = getelementptr inbounds i8, ptr %53, i64 132
  %95 = zext i1 %93 to i8
  store i8 %95, ptr %94, align 4, !tbaa !87
  br i1 %93, label %96, label %97

96:                                               ; preds = %92
  tail call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %53, i32 noundef 8, i1 noundef zeroext true)
  br label %97

97:                                               ; preds = %96, %92
  %98 = getelementptr inbounds i8, ptr %53, i64 12
  br i1 %.not317, label %110, label %99

99:                                               ; preds = %97
  store i32 %spec.select, ptr %98, align 4, !tbaa !88
  store i32 %60, ptr %61, align 8, !tbaa !70
  %100 = getelementptr inbounds i8, ptr %32, i64 6656
  %101 = load double, ptr %100, align 8, !tbaa !89
  %102 = fptrunc double %101 to float
  %103 = getelementptr inbounds i8, ptr %53, i64 636
  store float %102, ptr %103, align 4, !tbaa !90
  %104 = getelementptr inbounds i8, ptr %53, i64 140
  store i16 0, ptr %104, align 4, !tbaa !91
  %105 = getelementptr inbounds i8, ptr %32, i64 6776
  %106 = load i32, ptr %105, align 8, !tbaa !92
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %105, align 8, !tbaa !92
  %108 = trunc i32 %106 to i16
  %109 = getelementptr inbounds i8, ptr %53, i64 142
  store i16 %108, ptr %109, align 2, !tbaa !93
  br label %112

110:                                              ; preds = %97
  %111 = load i32, ptr %98, align 4, !tbaa !88
  br label %112

112:                                              ; preds = %110, %99
  %.1 = phi i32 [ %spec.select, %99 ], [ %111, %110 ]
  %113 = tail call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  br i1 %113, label %117, label %114

114:                                              ; preds = %112
  %115 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  %116 = load ptr, ptr %115, align 8, !tbaa !5
  br label %117

117:                                              ; preds = %112, %114
  %118 = phi ptr [ %116, %114 ], [ null, %112 ]
  br i1 %.not317, label %122, label %119

119:                                              ; preds = %117
  %120 = and i32 %.1, 83886080
  %.not319 = icmp eq i32 %120, 0
  %121 = select i1 %.not319, ptr null, ptr %118
  br label %125

122:                                              ; preds = %117
  %123 = getelementptr inbounds i8, ptr %53, i64 864
  %124 = load ptr, ptr %123, align 8, !tbaa !94
  br label %125

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

130:                                              ; preds = %125
  tail call void @__assert_fail(ptr noundef nonnull @.str.97, ptr noundef nonnull @.str.3, i32 noundef 5506, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

131:                                              ; preds = %125
  %132 = getelementptr inbounds i8, ptr %53, i64 192
  %133 = load i32, ptr %132, align 8, !tbaa !95
  %134 = icmp eq i32 %133, 0
  br i1 %134, label %135, label %137

135:                                              ; preds = %131
  %136 = getelementptr inbounds i8, ptr %53, i64 8
  tail call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %132, ptr noundef nonnull align 4 dereferenceable(4) %136)
  br label %137

137:                                              ; preds = %135, %131
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %138 = getelementptr inbounds i8, ptr %32, i64 6784
  store ptr null, ptr %138, align 8, !tbaa !96
  %139 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGuiL35ErrorCheckBeginEndCompareStacksSizeEP11ImGuiWindowb(ptr noundef %139, i1 noundef zeroext true)
  %140 = and i32 %.1, 67108864
  %.not322 = icmp eq i32 %140, 0
  br i1 %.not322, label %151, label %141

141:                                              ; preds = %137
  %142 = getelementptr inbounds i8, ptr %32, i64 7128
  %143 = getelementptr inbounds i8, ptr %32, i64 7144
  %144 = load i32, ptr %143, align 8, !tbaa !82
  %145 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %142, i32 noundef %144)
  %146 = load ptr, ptr %4, align 8, !tbaa !5
  %147 = getelementptr inbounds i8, ptr %145, i64 8
  store ptr %146, ptr %147, align 8, !tbaa !86
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %143, ptr noundef nonnull align 8 dereferenceable(48) %145)
  %148 = load i32, ptr %145, align 8, !tbaa !84
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = getelementptr inbounds i8, ptr %149, i64 144
  store i32 %148, ptr %150, align 8, !tbaa !83
  br label %151

151:                                              ; preds = %141, %137
  %.not361 = xor i1 %76, true
  %brmerge = select i1 %.not361, i1 true, i1 %129
  br i1 %brmerge, label %155, label %152

152:                                              ; preds = %151
  %153 = load ptr, ptr %4, align 8, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %153, i64 904
  store i32 0, ptr %154, align 8, !tbaa !97
  br label %155

155:                                              ; preds = %151, %152
  br i1 %.not317, label %158, label %156

156:                                              ; preds = %155
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %157, i32 noundef %.1, ptr noundef %126)
  br label %158

158:                                              ; preds = %156, %155
  %159 = getelementptr inbounds i8, ptr %32, i64 6944
  %160 = load i32, ptr %159, align 8, !tbaa !98
  %161 = and i32 %160, 1
  %.not323 = icmp eq i32 %161, 0
  br i1 %.not323, label %187, label %162

162:                                              ; preds = %158
  %163 = load ptr, ptr %4, align 8, !tbaa !5
  %164 = getelementptr inbounds i8, ptr %163, i64 164
  %165 = load i32, ptr %164, align 4, !tbaa !99
  %166 = getelementptr inbounds i8, ptr %32, i64 6948
  %167 = load i32, ptr %166, align 4, !tbaa !100
  %168 = and i32 %167, %165
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %170, label %183

170:                                              ; preds = %162
  %171 = getelementptr inbounds i8, ptr %32, i64 6968
  %172 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %171)
  %173 = fcmp ogt float %172, 0x3EE4F8B580000000
  %.pre = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %173, label %174, label %._crit_edge

._crit_edge:                                      ; preds = %170
  %.pre445 = load i32, ptr %166, align 4, !tbaa !100
  br label %183

174:                                              ; preds = %170
  %175 = getelementptr inbounds i8, ptr %32, i64 6960
  %176 = getelementptr inbounds i8, ptr %.pre, i64 176
  %177 = load i64, ptr %175, align 8
  store i64 %177, ptr %176, align 8
  %178 = getelementptr inbounds i8, ptr %.pre, i64 184
  %179 = load i64, ptr %171, align 8
  store i64 %179, ptr %178, align 8
  %180 = getelementptr inbounds i8, ptr %.pre, i64 164
  %181 = load i32, ptr %180, align 4, !tbaa !99
  %182 = and i32 %181, -15
  store i32 %182, ptr %180, align 4, !tbaa !99
  br label %187

183:                                              ; preds = %._crit_edge, %162
  %184 = phi i32 [ %.pre445, %._crit_edge ], [ %167, %162 ]
  %185 = phi ptr [ %.pre, %._crit_edge ], [ %163, %162 ]
  %186 = getelementptr inbounds i8, ptr %32, i64 6960
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %185, ptr noundef nonnull align 4 dereferenceable(8) %186, i32 noundef %184)
  br label %187

187:                                              ; preds = %174, %183, %158
  %.0282.shrunk = phi i1 [ true, %174 ], [ %169, %183 ], [ false, %158 ]
  %188 = load i32, ptr %159, align 8, !tbaa !98
  %189 = and i32 %188, 2
  %.not324 = icmp eq i32 %189, 0
  br i1 %.not324, label %207, label %190

190:                                              ; preds = %187
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds i8, ptr %191, i64 168
  %193 = load i32, ptr %192, align 8, !tbaa !101
  %194 = getelementptr inbounds i8, ptr %32, i64 6952
  %195 = load i32, ptr %194, align 8, !tbaa !102
  %196 = and i32 %195, %193
  %.not325 = icmp eq i32 %196, 0
  br i1 %.not325, label %.thread, label %197

197:                                              ; preds = %190
  %198 = getelementptr inbounds i8, ptr %32, i64 6976
  %199 = load float, ptr %198, align 8, !tbaa !103
  %200 = fcmp ogt float %199, 0.000000e+00
  %201 = getelementptr inbounds i8, ptr %32, i64 6980
  %202 = load float, ptr %201, align 4, !tbaa !104
  %203 = fcmp ogt float %202, 0.000000e+00
  br label %.thread

.thread:                                          ; preds = %190, %197
  %204 = phi i1 [ %200, %197 ], [ false, %190 ]
  %205 = phi i1 [ %203, %197 ], [ false, %190 ]
  %206 = getelementptr inbounds i8, ptr %32, i64 6976
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %191, ptr noundef nonnull align 4 dereferenceable(8) %206, i32 noundef %195)
  %.pre446 = load i32, ptr %159, align 8, !tbaa !98
  br label %207

207:                                              ; preds = %.thread, %187
  %208 = phi i32 [ %.pre446, %.thread ], [ %188, %187 ]
  %.0284 = phi i1 [ %205, %.thread ], [ false, %187 ]
  %.0283 = phi i1 [ %204, %.thread ], [ false, %187 ]
  %209 = and i32 %208, 128
  %.not327 = icmp eq i32 %209, 0
  br i1 %.not327, label %226, label %210

210:                                              ; preds = %207
  %211 = getelementptr inbounds i8, ptr %32, i64 6992
  %212 = load float, ptr %211, align 8, !tbaa !105
  %213 = fcmp ult float %212, 0.000000e+00
  br i1 %213, label %218, label %214

214:                                              ; preds = %210
  %215 = load ptr, ptr %4, align 8, !tbaa !5
  %216 = getelementptr inbounds i8, ptr %215, i64 100
  store float %212, ptr %216, align 4, !tbaa !106
  %217 = getelementptr inbounds i8, ptr %215, i64 108
  store float 0.000000e+00, ptr %217, align 4, !tbaa !107
  br label %218

218:                                              ; preds = %214, %210
  %219 = getelementptr inbounds i8, ptr %32, i64 6996
  %220 = load float, ptr %219, align 4, !tbaa !108
  %221 = fcmp ult float %220, 0.000000e+00
  br i1 %221, label %226, label %222

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

226:                                              ; preds = %218, %222, %207
  %227 = and i32 %208, 4
  %.not328 = icmp eq i32 %227, 0
  br i1 %.not328, label %233, label %228

228:                                              ; preds = %226
  %229 = getelementptr inbounds i8, ptr %32, i64 6984
  %230 = load ptr, ptr %4, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %230, i64 48
  %232 = load i64, ptr %229, align 8
  store i64 %232, ptr %231, align 8
  br label %238

233:                                              ; preds = %226
  br i1 %.not317, label %._crit_edge492, label %234

._crit_edge492:                                   ; preds = %233
  %.pre449.pre487.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %238

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

238:                                              ; preds = %._crit_edge492, %234, %228
  %.pre449.pre487 = phi ptr [ %.pre449.pre487.pre, %._crit_edge492 ], [ %235, %234 ], [ %230, %228 ]
  %239 = load i32, ptr %159, align 8, !tbaa !98
  %240 = and i32 %239, 8
  %.not329 = icmp eq i32 %240, 0
  br i1 %.not329, label %247, label %241

241:                                              ; preds = %238
  %242 = getelementptr inbounds i8, ptr %32, i64 7000
  %243 = load i8, ptr %242, align 8, !tbaa !111, !range !66, !noundef !67
  %244 = trunc nuw i8 %243 to i1
  %245 = getelementptr inbounds i8, ptr %32, i64 6956
  %246 = load i32, ptr %245, align 4, !tbaa !112
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre449.pre487, i1 noundef zeroext %244, i32 noundef %246)
  %.pre447 = load i32, ptr %159, align 8, !tbaa !98
  %.pre449.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %247

247:                                              ; preds = %241, %238
  %.pre449 = phi ptr [ %.pre449.pre, %241 ], [ %.pre449.pre487, %238 ]
  %248 = phi i32 [ %.pre447, %241 ], [ %239, %238 ]
  %249 = and i32 %248, 32
  %.not330 = icmp eq i32 %249, 0
  br i1 %.not330, label %251, label %250

250:                                              ; preds = %247
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %.pre449)
  %.pre448 = load ptr, ptr %4, align 8, !tbaa !5
  br label %251

251:                                              ; preds = %250, %247
  %252 = phi ptr [ %.pre448, %250 ], [ %.pre449, %247 ]
  %253 = getelementptr inbounds i8, ptr %252, i64 132
  %254 = load i8, ptr %253, align 4, !tbaa !87, !range !66, !noundef !67
  %255 = trunc nuw i8 %254 to i1
  br i1 %255, label %256, label %257

256:                                              ; preds = %251
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %252, i32 noundef 8, i1 noundef zeroext false)
  br label %257

257:                                              ; preds = %256, %251
  br i1 %.not317, label %.thread429, label %258

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

274:                                              ; preds = %258
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %270)
  %.pre450.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %275

275:                                              ; preds = %274, %258
  %.pre450 = phi ptr [ %.pre450.pre, %274 ], [ %270, %258 ]
  %276 = getelementptr inbounds i8, ptr %32, i64 7480
  %277 = load ptr, ptr %276, align 8, !tbaa !118
  %.not332 = icmp eq ptr %277, null
  br i1 %.not332, label %.critedge364, label %278

278:                                              ; preds = %275
  %279 = getelementptr inbounds i8, ptr %.pre450, i64 12
  %280 = load i32, ptr %279, align 4, !tbaa !88
  %281 = and i32 %280, 524288
  %282 = icmp ne i32 %281, 0
  %brmerge365 = or i1 %49, %282
  br i1 %brmerge365, label %.critedge364, label %283

283:                                              ; preds = %278
  %284 = load ptr, ptr %.pre450, align 8, !tbaa !119
  %285 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %284) #15
  %.not333 = icmp eq i32 %285, 0
  br i1 %.not333, label %.critedge364, label %286

286:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #14
  %287 = getelementptr inbounds i8, ptr %.pre450, i64 72
  %288 = load i32, ptr %287, align 8, !tbaa !120
  %289 = sext i32 %288 to i64
  store i64 %289, ptr %8, align 8, !tbaa !121
  %290 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %284, ptr noundef nonnull %8, ptr noundef nonnull %0)
  %291 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %290, ptr %291, align 8, !tbaa !119
  %292 = load i64, ptr %8, align 8, !tbaa !121
  %293 = trunc i64 %292 to i32
  %294 = load ptr, ptr %4, align 8, !tbaa !5
  %295 = getelementptr inbounds i8, ptr %294, i64 72
  store i32 %293, ptr %295, align 8, !tbaa !120
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #14
  br label %.critedge364

.critedge364:                                     ; preds = %275, %278, %286, %283
  %296 = phi ptr [ %.pre450, %275 ], [ %.pre450, %278 ], [ %294, %286 ], [ %.pre450, %283 ]
  %297 = call <2 x float> @_ZL21CalcWindowContentSizeP11ImGuiWindow(ptr noundef %296)
  %298 = load ptr, ptr %4, align 8, !tbaa !5
  %299 = getelementptr inbounds i8, ptr %298, i64 40
  store <2 x float> %297, ptr %299, align 8
  %300 = getelementptr inbounds i8, ptr %298, i64 156
  %301 = load i32, ptr %300, align 4, !tbaa !123
  %302 = icmp sgt i32 %301, 0
  br i1 %302, label %303, label %305

303:                                              ; preds = %.critedge364
  %304 = add nsw i32 %301, -1
  store i32 %304, ptr %300, align 4, !tbaa !123
  br label %305

305:                                              ; preds = %303, %.critedge364
  %306 = getelementptr inbounds i8, ptr %298, i64 160
  %307 = load i32, ptr %306, align 8, !tbaa !81
  %308 = icmp slt i32 %307, 1
  %.not440 = xor i1 %49, true
  %309 = select i1 %.0283, i1 %.0284, i1 false
  %or.cond441 = select i1 %.not440, i1 true, i1 %309
  %.not444 = and i1 %308, %or.cond441
  br i1 %.not444, label %312, label %310

310:                                              ; preds = %305
  %311 = add nsw i32 %307, -1
  %simplifycfg.merge442 = select i1 %or.cond441, i32 %311, i32 1
  store i32 %simplifycfg.merge442, ptr %306, align 8, !tbaa !81
  br label %312

312:                                              ; preds = %305, %310
  %313 = and i32 %.1, 100663296
  %.not334 = icmp ne i32 %313, 0
  %or.cond367.not = select i1 %.0281.in, i1 %.not334, i1 false
  br i1 %or.cond367.not, label %314, label %328

314:                                              ; preds = %312
  store i32 1, ptr %306, align 8, !tbaa !81
  %315 = and i32 %.1, 64
  %.not335 = icmp eq i32 %315, 0
  br i1 %.not335, label %328, label %316

316:                                              ; preds = %314
  br i1 %.0283, label %320, label %317

317:                                              ; preds = %316
  %318 = getelementptr inbounds i8, ptr %298, i64 32
  store float 0.000000e+00, ptr %318, align 8, !tbaa !124
  %319 = getelementptr inbounds i8, ptr %298, i64 24
  store float 0.000000e+00, ptr %319, align 8, !tbaa !125
  br label %320

320:                                              ; preds = %317, %316
  br i1 %.0284, label %324, label %321

321:                                              ; preds = %320
  %322 = getelementptr inbounds i8, ptr %298, i64 36
  store float 0.000000e+00, ptr %322, align 4, !tbaa !126
  %323 = getelementptr inbounds i8, ptr %298, i64 28
  store float 0.000000e+00, ptr %323, align 4, !tbaa !127
  br label %324

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

328:                                              ; preds = %314, %324, %312
  %329 = phi ptr [ %298, %314 ], [ %325, %324 ], [ %298, %312 ]
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef nonnull %329)
  br i1 %129, label %337, label %.thread413

.thread413:                                       ; preds = %328
  %330 = and i32 %.1, 134217728
  %.not337 = icmp eq i32 %330, 0
  %or.cond368 = and i1 %.not334, %.not337
  %.in.v = select i1 %or.cond368, i64 5532, i64 5496
  %.in = getelementptr inbounds i8, ptr %32, i64 %.in.v
  %331 = load float, ptr %.in, align 4, !tbaa !116
  %332 = load ptr, ptr %4, align 8, !tbaa !5
  %333 = getelementptr inbounds i8, ptr %332, i64 68
  store float %331, ptr %333, align 4, !tbaa !128
  %334 = getelementptr inbounds i8, ptr %32, i64 5484
  %335 = getelementptr inbounds i8, ptr %332, i64 56
  %336 = load i64, ptr %334, align 4
  store i64 %336, ptr %335, align 8
  br label %357

337:                                              ; preds = %328
  %338 = getelementptr inbounds i8, ptr %32, i64 5524
  %339 = load float, ptr %338, align 4, !tbaa !129
  %340 = load ptr, ptr %4, align 8, !tbaa !5
  %341 = getelementptr inbounds i8, ptr %340, i64 68
  store float %339, ptr %341, align 4, !tbaa !128
  %342 = getelementptr inbounds i8, ptr %32, i64 5484
  %343 = getelementptr inbounds i8, ptr %340, i64 56
  %344 = load i64, ptr %342, align 4
  store i64 %344, ptr %343, align 8
  %345 = and i32 %.1, 83951616
  %or.cond369 = icmp eq i32 %345, 16777216
  %346 = fcmp oeq float %339, 0.000000e+00
  %or.cond506 = select i1 %or.cond369, i1 %346, i1 false
  br i1 %or.cond506, label %347, label %357

347:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  %348 = and i32 %.1, 1024
  %.not339 = icmp eq i32 %348, 0
  br i1 %.not339, label %352, label %349

349:                                              ; preds = %347
  %350 = getelementptr inbounds i8, ptr %32, i64 5488
  %351 = load float, ptr %350, align 4, !tbaa !130
  br label %352

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

357:                                              ; preds = %.thread413, %352, %337
  %358 = phi ptr [ %332, %.thread413 ], [ %354, %352 ], [ %340, %337 ]
  %359 = and i32 %.1, 1
  %.not340 = icmp eq i32 %359, 0
  %360 = and i32 %.1, 33
  %or.cond370 = icmp eq i32 %360, 0
  br i1 %or.cond370, label %361, label %397

361:                                              ; preds = %357
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #14
  %362 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(956) %358)
  %363 = extractvalue { <2 x float>, <2 x float> } %362, 0
  store <2 x float> %363, ptr %11, align 8
  %364 = getelementptr inbounds i8, ptr %11, i64 8
  %365 = extractvalue { <2 x float>, <2 x float> } %362, 1
  store <2 x float> %365, ptr %364, align 8
  %366 = getelementptr inbounds i8, ptr %32, i64 6792
  %367 = load ptr, ptr %366, align 8, !tbaa !131
  %368 = load ptr, ptr %4, align 8, !tbaa !5
  %369 = icmp eq ptr %367, %368
  br i1 %369, label %370, label %386

370:                                              ; preds = %361
  %371 = getelementptr inbounds i8, ptr %32, i64 6836
  %372 = load i32, ptr %371, align 4, !tbaa !132
  %373 = icmp eq i32 %372, 0
  br i1 %373, label %374, label %386

374:                                              ; preds = %370
  %375 = getelementptr inbounds i8, ptr %32, i64 6844
  %376 = load i32, ptr %375, align 4, !tbaa !133
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %378, label %386

378:                                              ; preds = %374
  %379 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %364, i1 noundef zeroext true)
  br i1 %379, label %380, label %._crit_edge451

._crit_edge451:                                   ; preds = %378
  %.pre452 = load ptr, ptr %4, align 8, !tbaa !5
  br label %386

380:                                              ; preds = %378
  %381 = getelementptr inbounds i8, ptr %32, i64 1069
  %382 = load i8, ptr %381, align 1, !tbaa !134, !range !66, !noundef !67
  %383 = trunc nuw i8 %382 to i1
  %.pre453 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %383, label %384, label %386

384:                                              ; preds = %380
  %385 = getelementptr inbounds i8, ptr %.pre453, i64 130
  store i8 1, ptr %385, align 2, !tbaa !135
  br label %386

386:                                              ; preds = %._crit_edge451, %384, %380, %374, %370, %361
  %387 = phi ptr [ %.pre452, %._crit_edge451 ], [ %.pre453, %384 ], [ %.pre453, %380 ], [ %368, %374 ], [ %368, %370 ], [ %368, %361 ]
  %388 = getelementptr inbounds i8, ptr %387, i64 130
  %389 = load i8, ptr %388, align 2, !tbaa !135, !range !66, !noundef !67
  %390 = trunc nuw i8 %389 to i1
  br i1 %390, label %391, label %396

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

396:                                              ; preds = %391, %386
  %.pre454 = phi ptr [ %.pre454.pre, %391 ], [ %387, %386 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #14
  br label %399

397:                                              ; preds = %357
  %398 = getelementptr inbounds i8, ptr %358, i64 129
  store i8 0, ptr %398, align 1, !tbaa !136
  br label %399

399:                                              ; preds = %397, %396
  %400 = phi ptr [ %358, %397 ], [ %.pre454, %396 ]
  %401 = getelementptr inbounds i8, ptr %400, i64 130
  store i8 0, ptr %401, align 2, !tbaa !135
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #14
  %402 = getelementptr inbounds i8, ptr %400, i64 40
  %403 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %400, ptr noundef nonnull align 4 dereferenceable(8) %402)
  store <2 x float> %403, ptr %12, align 8
  %404 = and i32 %.1, 64
  %.not342 = icmp ne i32 %404, 0
  %405 = extractelement <2 x float> %403, i64 0
  %406 = extractelement <2 x float> %403, i64 1
  %.pre455 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not342, label %407, label %417

407:                                              ; preds = %399
  %408 = getelementptr inbounds i8, ptr %.pre455, i64 129
  %409 = load i8, ptr %408, align 1, !tbaa !136, !range !66, !noundef !67
  %410 = trunc nuw i8 %409 to i1
  br i1 %410, label %417, label %411

411:                                              ; preds = %407
  br i1 %.0283, label %414, label %412

412:                                              ; preds = %411
  %413 = getelementptr inbounds i8, ptr %.pre455, i64 32
  store float %405, ptr %413, align 8, !tbaa !124
  br label %414

414:                                              ; preds = %412, %411
  %.0287 = phi i1 [ %49, %411 ], [ true, %412 ]
  br i1 %.0284, label %466, label %415

415:                                              ; preds = %414
  %416 = getelementptr inbounds i8, ptr %.pre455, i64 36
  store float %406, ptr %416, align 4, !tbaa !126
  br label %466

417:                                              ; preds = %407, %399
  %418 = getelementptr inbounds i8, ptr %.pre455, i64 148
  %419 = load i8, ptr %418, align 4, !tbaa !137
  %420 = icmp sgt i8 %419, 0
  br i1 %420, label %425, label %421

421:                                              ; preds = %417
  %422 = getelementptr inbounds i8, ptr %.pre455, i64 149
  %423 = load i8, ptr %422, align 1, !tbaa !138
  %424 = icmp sgt i8 %423, 0
  br i1 %424, label %.thread417, label %466

425:                                              ; preds = %417
  br i1 %.0283, label %.thread417, label %426

426:                                              ; preds = %425
  %427 = getelementptr inbounds i8, ptr %.pre455, i64 151
  %428 = load i8, ptr %427, align 1, !tbaa !139, !range !66, !noundef !67
  %429 = trunc nuw i8 %428 to i1
  br i1 %429, label %430, label %434

430:                                              ; preds = %426
  %431 = getelementptr inbounds i8, ptr %.pre455, i64 32
  %432 = load float, ptr %431, align 8, !tbaa !124
  %433 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %432, float noundef %405)
  %.pre456 = load ptr, ptr %4, align 8, !tbaa !5
  br label %434

434:                                              ; preds = %426, %430
  %435 = phi ptr [ %.pre456, %430 ], [ %.pre455, %426 ]
  %436 = phi float [ %433, %430 ], [ %405, %426 ]
  %437 = getelementptr inbounds i8, ptr %435, i64 32
  store float %436, ptr %437, align 8, !tbaa !124
  br label %.thread417

.thread417:                                       ; preds = %421, %434, %425
  %438 = phi ptr [ %.pre455, %425 ], [ %435, %434 ], [ %.pre455, %421 ]
  %.1288 = phi i1 [ %49, %425 ], [ true, %434 ], [ %49, %421 ]
  br i1 %.0284, label %460, label %439

439:                                              ; preds = %.thread417
  %440 = getelementptr inbounds i8, ptr %438, i64 149
  %441 = load i8, ptr %440, align 1, !tbaa !138
  %442 = icmp sgt i8 %441, 0
  br i1 %442, label %443, label %460

443:                                              ; preds = %439
  %444 = getelementptr inbounds i8, ptr %438, i64 151
  %445 = load i8, ptr %444, align 1, !tbaa !139, !range !66, !noundef !67
  %446 = trunc nuw i8 %445 to i1
  br i1 %446, label %447, label %453

447:                                              ; preds = %443
  %448 = getelementptr inbounds i8, ptr %438, i64 36
  %449 = load float, ptr %448, align 4, !tbaa !126
  %450 = getelementptr inbounds i8, ptr %12, i64 4
  %451 = load float, ptr %450, align 4, !tbaa !140
  %452 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %449, float noundef %451)
  %.pre457 = load ptr, ptr %4, align 8, !tbaa !5
  br label %456

453:                                              ; preds = %443
  %454 = getelementptr inbounds i8, ptr %12, i64 4
  %455 = load float, ptr %454, align 4, !tbaa !140
  br label %456

456:                                              ; preds = %453, %447
  %457 = phi ptr [ %.pre457, %447 ], [ %438, %453 ]
  %458 = phi float [ %452, %447 ], [ %455, %453 ]
  %459 = getelementptr inbounds i8, ptr %457, i64 36
  store float %458, ptr %459, align 4, !tbaa !126
  br label %460

460:                                              ; preds = %456, %439, %.thread417
  %461 = phi ptr [ %438, %.thread417 ], [ %457, %456 ], [ %438, %439 ]
  %.0290 = phi i1 [ %49, %.thread417 ], [ true, %456 ], [ %49, %439 ]
  %462 = getelementptr inbounds i8, ptr %461, i64 129
  %463 = load i8, ptr %462, align 1, !tbaa !136, !range !66, !noundef !67
  %464 = trunc nuw i8 %463 to i1
  br i1 %464, label %466, label %465

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

466:                                              ; preds = %421, %465, %460, %414, %415
  %467 = phi ptr [ %461, %460 ], [ %.pre458, %465 ], [ %.pre455, %421 ], [ %.pre455, %414 ], [ %.pre455, %415 ]
  %.1291 = phi i1 [ %.0290, %460 ], [ %.0290, %465 ], [ %49, %421 ], [ %49, %414 ], [ true, %415 ]
  %.2 = phi i1 [ %.1288, %460 ], [ %.1288, %465 ], [ %49, %421 ], [ %.0287, %414 ], [ %.0287, %415 ]
  %468 = getelementptr inbounds i8, ptr %467, i64 32
  %.sroa.043.0.copyload = load <2 x float>, ptr %468, align 8
  %469 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %467, <2 x float> %.sroa.043.0.copyload)
  %470 = load ptr, ptr %4, align 8, !tbaa !5
  %471 = getelementptr inbounds i8, ptr %470, i64 32
  store <2 x float> %469, ptr %471, align 8
  %472 = getelementptr inbounds i8, ptr %470, i64 129
  %473 = load i8, ptr %472, align 1, !tbaa !136, !range !66, !noundef !67
  %474 = trunc nuw i8 %473 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #14
  %.not371 = xor i1 %474, true
  %brmerge372 = select i1 %.not371, i1 true, i1 %129
  br i1 %brmerge372, label %481, label %475

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

481:                                              ; preds = %466, %475
  %482 = phi ptr [ %.pre459, %475 ], [ %470, %466 ]
  %.sroa.041.0 = phi <2 x float> [ %480, %475 ], [ %469, %466 ]
  %483 = getelementptr inbounds i8, ptr %482, i64 24
  store <2 x float> %.sroa.041.0, ptr %483, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #14
  %484 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(956) %482)
  %485 = load ptr, ptr %4, align 8, !tbaa !5
  %486 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(956) %485)
  %487 = fadd float %484, %486
  br i1 %.0281.in, label %488, label %498

488:                                              ; preds = %481
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  %490 = getelementptr inbounds i8, ptr %489, i64 152
  store i32 -1, ptr %490, align 8, !tbaa !141
  %brmerge373 = or i1 %.not322, %.0282.shrunk
  br i1 %brmerge373, label %498, label %491

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

498:                                              ; preds = %488, %491, %481
  br i1 %129, label %499, label %._crit_edge460

._crit_edge460:                                   ; preds = %498
  %.pre461 = load ptr, ptr %4, align 8, !tbaa !5
  br label %514

499:                                              ; preds = %498
  br i1 %127, label %.critedge2, label %500

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

.critedge2:                                       ; preds = %499, %500
  call void @__assert_fail(ptr noundef nonnull @.str.98, ptr noundef nonnull @.str.3, i32 noundef 5729, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

504:                                              ; preds = %500
  %505 = getelementptr inbounds i8, ptr %126, i64 392
  %506 = load i32, ptr %505, align 8, !tbaa !142
  %507 = trunc i32 %506 to i16
  %508 = load ptr, ptr %4, align 8, !tbaa !5
  %509 = getelementptr inbounds i8, ptr %508, i64 140
  store i16 %507, ptr %509, align 4, !tbaa !91
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %505, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %.not322.not = xor i1 %.not322, true
  %brmerge374 = or i1 %.0282.shrunk, %.not322.not
  %brmerge375 = select i1 %brmerge374, i1 true, i1 %261
  %.pre462 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge375, label %514, label %510

510:                                              ; preds = %504
  %511 = getelementptr inbounds i8, ptr %126, i64 208
  %512 = getelementptr inbounds i8, ptr %.pre462, i64 16
  %513 = load i64, ptr %511, align 8
  store i64 %513, ptr %512, align 8
  br label %514

514:                                              ; preds = %._crit_edge460, %504, %510
  %515 = phi ptr [ %.pre461, %._crit_edge460 ], [ %.pre462, %504 ], [ %.pre462, %510 ]
  %516 = getelementptr inbounds i8, ptr %515, i64 176
  %517 = load float, ptr %516, align 8, !tbaa !143
  %518 = fcmp une float %517, 0x47EFFFFFE0000000
  br i1 %518, label %519, label %.critedge377

519:                                              ; preds = %514
  %520 = getelementptr inbounds i8, ptr %515, i64 160
  %521 = load i32, ptr %520, align 8, !tbaa !81
  %522 = icmp eq i32 %521, 0
  br i1 %522, label %523, label %.critedge377

523:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  %524 = getelementptr inbounds i8, ptr %515, i64 32
  %525 = getelementptr inbounds i8, ptr %515, i64 184
  %526 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %524, ptr noundef nonnull align 4 dereferenceable(8) %525)
  store <2 x float> %526, ptr %15, align 8
  %527 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %516, ptr noundef nonnull align 4 dereferenceable(8) %15)
  store <2 x float> %527, ptr %14, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %515, ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #14
  br label %543

.critedge377:                                     ; preds = %514, %519
  %528 = and i32 %.1, 268435456
  %.not343 = icmp eq i32 %528, 0
  br i1 %.not343, label %533, label %529

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

533:                                              ; preds = %.critedge377
  %brmerge378 = or i1 %.not322, %.0282.shrunk
  %brmerge380 = or i1 %brmerge378, %.not361
  br i1 %brmerge380, label %538, label %534

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

538:                                              ; preds = %533
  %brmerge381 = or i1 %.not331, %.0282.shrunk
  %brmerge382 = select i1 %brmerge381, i1 true, i1 %261
  br i1 %brmerge382, label %543, label %539

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

543:                                              ; preds = %538, %529, %539, %534, %523
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #14
  %544 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %545 = extractvalue { <2 x float>, <2 x float> } %544, 0
  store <2 x float> %545, ptr %16, align 8
  %546 = getelementptr inbounds i8, ptr %16, i64 8
  %547 = extractvalue { <2 x float>, <2 x float> } %544, 1
  store <2 x float> %547, ptr %546, align 8
  %brmerge383 = select i1 %.0282.shrunk, i1 true, i1 %129
  %.pre464 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge383, label %572, label %548

548:                                              ; preds = %543
  %549 = getelementptr inbounds i8, ptr %.pre464, i64 148
  %550 = load i8, ptr %549, align 4, !tbaa !137
  %551 = icmp slt i8 %550, 1
  br i1 %551, label %552, label %.thread500

552:                                              ; preds = %548
  %553 = getelementptr inbounds i8, ptr %.pre464, i64 149
  %554 = load i8, ptr %553, align 1, !tbaa !138
  %555 = icmp slt i8 %554, 1
  br i1 %555, label %556, label %.thread500

556:                                              ; preds = %552
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #14
  %557 = getelementptr inbounds i8, ptr %32, i64 5632
  %558 = getelementptr inbounds i8, ptr %32, i64 5640
  %559 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %557, ptr noundef nonnull align 4 dereferenceable(8) %558)
  store <2 x float> %559, ptr %17, align 8
  %560 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %561 = fcmp ogt float %560, 0.000000e+00
  br i1 %561, label %562, label %567

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

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

567:                                              ; preds = %565, %562, %556
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #14
  %.pre463 = load ptr, ptr %4, align 8, !tbaa !5
  br label %.thread500

.thread500:                                       ; preds = %567, %552, %548
  %.ph = phi ptr [ %.pre464, %548 ], [ %.pre464, %552 ], [ %.pre463, %567 ]
  %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 = %543
  %573 = getelementptr inbounds i8, ptr %.pre464, 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 %129, label %580, label %577

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

580:                                              ; preds = %577, %572
  %.sink = phi i64 [ 5520, %572 ], [ %., %577 ]
  %581 = phi ptr [ %575, %572 ], [ %578, %577 ]
  %582 = getelementptr inbounds i8, ptr %32, i64 %.sink
  %583 = load float, ptr %582, align 4, !tbaa !116
  %584 = getelementptr inbounds i8, ptr %581, i64 64
  store float %583, ptr %584, align 8, !tbaa !144
  %585 = and i32 %.1, 4096
  %.not346 = icmp eq i32 %585, 0
  %or.cond386.not = select i1 %.0281.in, i1 %.not346, i1 false
  %brmerge411.not = and i1 %.not322, %or.cond386.not
  %586 = icmp eq i32 %260, 0
  %spec.select435 = select i1 %brmerge411.not, i1 %586, i1 %or.cond386.not
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #14
  store i32 -1, ptr %18, align 4, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %19, i8 0, i64 16, i1 false)
  %587 = getelementptr inbounds i8, ptr %32, i64 203
  %588 = load i8, ptr %587, align 1, !tbaa !145, !range !66, !noundef !67
  %589 = trunc nuw i8 %588 to i1
  %590 = select i1 %589, i32 2, i32 1
  %591 = getelementptr inbounds i8, ptr %32, i64 6440
  %592 = load float, ptr %591, align 8, !tbaa !146
  %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 !136, !range !66, !noundef !67
  %602 = trunc nuw i8 %601 to i1
  br i1 %602, label %605, label %603

603:                                              ; preds = %580
  %604 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(ptr noundef nonnull %599, ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull %18, i32 noundef %590, ptr noundef nonnull %19)
  %spec.select388 = or i1 %604, %.1291
  %spec.select389 = or i1 %604, %.2
  %.pre465 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre465, i64 129
  %.pre466 = load i8, ptr %.phi.trans.insert, align 1, !tbaa !136, !range !66
  br label %605

605:                                              ; preds = %603, %580
  %606 = phi i8 [ %601, %580 ], [ %.pre466, %603 ]
  %607 = phi ptr [ %599, %580 ], [ %.pre465, %603 ]
  %.2292 = phi i1 [ %.1291, %580 ], [ %spec.select388, %603 ]
  %.3 = phi i1 [ %.2, %580 ], [ %spec.select389, %603 ]
  %608 = load i32, ptr %18, align 4, !tbaa !97
  %609 = trunc i32 %608 to i8
  %610 = getelementptr inbounds i8, ptr %607, i64 136
  store i8 %609, ptr %610, align 8, !tbaa !147
  %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 %20) #14
  %613 = getelementptr inbounds i8, ptr %607, i64 32
  %614 = load float, ptr %613, align 8, !tbaa !124
  %615 = getelementptr inbounds i8, ptr %607, i64 36
  %616 = load float, ptr %615, align 4, !tbaa !126
  %617 = fsub float %616, %487
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %20, float noundef %614, float noundef %617)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #14
  %618 = load ptr, ptr %4, align 8, !tbaa !5
  %619 = getelementptr inbounds i8, ptr %618, i64 552
  %620 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %619)
  store <2 x float> %620, ptr %21, 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) %21, ptr noundef nonnull align 4 dereferenceable(8) %622)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #14
  br i1 %49, label %624, label %625

624:                                              ; preds = %612
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %22, 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 %23, align 8
  %630 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %627, ptr noundef nonnull align 4 dereferenceable(8) %23)
  store <2 x float> %630, ptr %22, align 8
  br label %631

631:                                              ; preds = %625, %624
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #14
  %632 = load float, ptr %20, 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 %20, i64 4
  %635 = load float, ptr %634, align 4
  %.sroa.024.4.vec.extract = extractelement <2 x float> %623, i64 1
  %636 = select i1 %.2292, float %635, float %.sroa.024.4.vec.extract
  %637 = and i32 %.1, 16384
  %.not347 = icmp eq i32 %637, 0
  br i1 %.not347, label %638, label %.thread418

638:                                              ; preds = %631
  %639 = getelementptr inbounds i8, ptr %22, i64 4
  %640 = load float, ptr %639, align 4, !tbaa !140
  %641 = fcmp ogt float %640, %636
  %642 = and i32 %.1, 8
  %.not348 = icmp eq i32 %642, 0
  %643 = select i1 %641, i1 %.not348, 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 !148
  %647 = and i32 %.1, 32768
  %.not349 = icmp eq i32 %647, 0
  br i1 %.not349, label %653, label %.thread423

.thread418:                                       ; 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 !148
  %650 = and i32 %.1, 32768
  %.not349419 = icmp eq i32 %650, 0
  br i1 %.not349419, label %.thread420, label %.thread423.thread

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

.thread420:                                       ; preds = %.thread418
  %652 = load float, ptr %22, align 8, !tbaa !150
  %.pre496 = and i32 %.1, 8
  br label %655

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

655:                                              ; preds = %.thread420, %653
  %.pre494.pre-phi = phi i32 [ %.pre496, %.thread420 ], [ 0, %653 ]
  %656 = phi float [ %652, %.thread420 ], [ %654, %653 ]
  %657 = phi ptr [ %648, %.thread420 ], [ %644, %653 ]
  %658 = phi ptr [ %649, %.thread420 ], [ %645, %653 ]
  %659 = getelementptr inbounds i8, ptr %32, i64 5584
  %660 = load float, ptr %659, align 4, !tbaa !151
  br label %661

661:                                              ; preds = %653, %655
  %.pre-phi = phi i32 [ %642, %653 ], [ %.pre494.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
  %.not350 = icmp eq i32 %.pre-phi, 0
  %or.cond390 = select i1 %669, i1 %.not350, i1 false
  br i1 %or.cond390, label %672, label %.thread424

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

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

672:                                              ; preds = %661
  %673 = and i32 %.1, 2048
  %.not439 = 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 !149
  %brmerge437 = or i1 %.not439, %664
  %not..not439 = xor i1 %.not439, true
  br i1 %brmerge437, label %684, label %._crit_edge467

._crit_edge467:                                   ; preds = %672
  %.phi.trans.insert468 = getelementptr inbounds i8, ptr %22, i64 4
  %.pre469 = load float, ptr %.phi.trans.insert468, align 4, !tbaa !140
  br label %676

676:                                              ; preds = %._crit_edge467, %.thread423
  %.pre-phi495 = phi i32 [ 0, %._crit_edge467 ], [ %642, %.thread423 ]
  %677 = phi float [ %.pre469, %._crit_edge467 ], [ %640, %.thread423 ]
  %678 = phi ptr [ %666, %._crit_edge467 ], [ %645, %.thread423 ]
  %679 = fcmp ogt float %677, %636
  %.not351 = icmp eq i32 %.pre-phi495, 0
  %680 = select i1 %679, i1 %.not351, i1 false
  %681 = zext i1 %680 to i8
  store i8 %681, ptr %678, align 1, !tbaa !148
  br label %684

.thread505:                                       ; preds = %.thread423.thread, %.thread423
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #14
  %682 = getelementptr inbounds i8, ptr %32, i64 5584
  %683 = load float, ptr %682, align 4, !tbaa !151
  br label %692

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

688:                                              ; preds = %684
  %689 = getelementptr inbounds i8, ptr %32, i64 5584
  %690 = load float, ptr %689, align 4, !tbaa !151
  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 %32, i64 5584
  %695 = load float, ptr %694, align 4, !tbaa !151
  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) %24, 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 %24, align 8
  store i64 %701, ptr %700, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #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 %25) #14
  %704 = and i32 %.1, 83886080
  %brmerge393.demorgan = icmp ne i32 %704, 16777216
  %705 = getelementptr inbounds i8, ptr %126, i64 600
  %706 = or i1 %brmerge393.demorgan, %261
  %707 = select i1 %706, ptr %16, ptr %705
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %25, ptr noundef nonnull align 4 dereferenceable(16) %707, i64 16, i1 false), !tbaa.struct !115
  %708 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %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 %26) #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(956) %711)
  %713 = extractvalue { <2 x float>, <2 x float> } %712, 0
  store <2 x float> %713, ptr %26, align 8
  %714 = getelementptr inbounds i8, ptr %26, 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 536
  store <2 x float> %709, ptr %717, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %716, i64 544
  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) %25)
  %718 = load ptr, ptr %4, align 8
  %719 = getelementptr inbounds i8, ptr %718, i64 16
  %720 = getelementptr inbounds i8, ptr %718, i64 552
  %721 = getelementptr inbounds i8, ptr %718, i64 556
  %722 = getelementptr inbounds i8, ptr %718, i64 24
  %723 = getelementptr inbounds i8, ptr %718, i64 116
  %724 = getelementptr inbounds i8, ptr %718, i64 560
  %725 = load <2 x float>, ptr %719, align 8, !tbaa !116
  %726 = extractelement <2 x float> %725, i64 0
  store float %726, ptr %720, align 8, !tbaa !152
  %727 = extractelement <2 x float> %725, i64 1
  %728 = fadd float %487, %727
  store float %728, ptr %721, align 4, !tbaa !153
  %729 = load <2 x float>, ptr %722, align 8, !tbaa !116
  %730 = fadd <2 x float> %725, %729
  %731 = load <2 x float>, ptr %723, align 4, !tbaa !116
  %732 = fsub <2 x float> %730, %731
  store <2 x float> %732, ptr %724, align 8, !tbaa !116
  %733 = and i32 %.1, 1025
  %brmerge395.not = icmp eq i32 %733, 1
  %734 = getelementptr inbounds i8, ptr %32, i64 5548
  %735 = getelementptr inbounds i8, ptr %718, i64 68
  %.in353 = select i1 %brmerge395.not, ptr %735, ptr %734
  %736 = load float, ptr %.in353, align 4, !tbaa !116
  %737 = fadd float %726, 5.000000e-01
  %738 = getelementptr inbounds i8, ptr %718, i64 56
  %739 = load float, ptr %738, align 8, !tbaa !154
  %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 !128
  %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 568
  store float %747, ptr %749, align 8, !tbaa !155
  %750 = getelementptr inbounds i8, ptr %748, i64 556
  %751 = load float, ptr %750, align 4, !tbaa !153
  %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 572
  store float %754, ptr %756, align 4, !tbaa !156
  %757 = getelementptr inbounds i8, ptr %755, i64 560
  %758 = load float, ptr %757, align 8, !tbaa !157
  %759 = fadd float %758, 5.000000e-01
  %760 = getelementptr inbounds i8, ptr %755, i64 56
  %761 = load float, ptr %760, align 8, !tbaa !154
  %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 !128
  %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 576
  store float %769, ptr %771, align 8, !tbaa !158
  %772 = getelementptr inbounds i8, ptr %770, i64 564
  %773 = load float, ptr %772, align 4, !tbaa !159
  %774 = fadd float %773, 5.000000e-01
  %775 = getelementptr inbounds i8, ptr %770, i64 68
  %776 = load float, ptr %775, align 4, !tbaa !128
  %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 580
  store float %778, ptr %780, align 4, !tbaa !160
  %781 = getelementptr inbounds i8, ptr %779, i64 568
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %781, ptr noundef nonnull align 4 dereferenceable(16) %25)
  %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 !125
  %785 = fcmp ule float %784, 0.000000e+00
  %.not331.not = xor i1 %.not331, true
  %brmerge397 = select i1 %785, i1 true, i1 %.not331.not
  %brmerge398 = or i1 %.not342, %brmerge397
  br i1 %brmerge398, 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 !146
  %790 = fmul float %789, 1.600000e+01
  br label %791

791:                                              ; preds = %788, %786
  %.sink510 = phi float [ %790, %788 ], [ %787, %786 ]
  %792 = call noundef float @_ZL7ImFloorf(float noundef %.sink510)
  %.sink509 = load ptr, ptr %4, align 8, !tbaa !5
  %793 = getelementptr inbounds i8, ptr %.sink509, i64 640
  store float %792, ptr %793, align 8, !tbaa !161
  %794 = getelementptr inbounds i8, ptr %.sink509, i64 40
  %795 = load float, ptr %794, align 8, !tbaa !162
  %796 = getelementptr inbounds i8, ptr %.sink509, i64 56
  %797 = load float, ptr %796, align 8, !tbaa !154
  %798 = call float @llvm.fmuladd.f32(float %797, float 2.000000e+00, float %795)
  %799 = getelementptr inbounds i8, ptr %.sink509, i64 552
  %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 !163
  %805 = getelementptr inbounds i8, ptr %803, i64 44
  %806 = load float, ptr %805, align 4, !tbaa !164
  %807 = getelementptr inbounds i8, ptr %803, i64 60
  %808 = load float, ptr %807, align 4, !tbaa !165
  %809 = call float @llvm.fmuladd.f32(float %808, float 2.000000e+00, float %806)
  %810 = getelementptr inbounds i8, ptr %803, i64 552
  %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 !166
  %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 %27) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, 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 %27, align 8
  store i64 %821, ptr %820, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #14
  %822 = getelementptr inbounds i8, ptr %819, i64 688
  %823 = load ptr, ptr %822, align 8, !tbaa !167
  call void @_ZN10ImDrawList16ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(168) %823)
  %824 = load ptr, ptr %4, align 8, !tbaa !5
  %825 = getelementptr inbounds i8, ptr %824, i64 688
  %826 = load ptr, ptr %825, align 8, !tbaa !167
  %827 = getelementptr inbounds i8, ptr %32, i64 6432
  %828 = load ptr, ptr %827, align 8, !tbaa !168
  %829 = getelementptr inbounds i8, ptr %828, i64 72
  %830 = load ptr, ptr %829, align 8, !tbaa !169
  %831 = getelementptr inbounds i8, ptr %830, i64 8
  %832 = load ptr, ptr %831, align 8, !tbaa !170
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %826, ptr noundef %832)
  %833 = getelementptr inbounds i8, ptr %25, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(8) %833, i1 noundef zeroext false)
  %834 = and i32 %.1, 134217728
  %.not354 = icmp eq i32 %834, 0
  br i1 %.not354, 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 !81
  %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 %32, i64 7472
  %847 = load ptr, ptr %846, align 8, !tbaa !174
  %.not355 = icmp eq ptr %847, null
  br i1 %.not355, label %853, label %848

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

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

855:                                              ; preds = %853
  %.mux = select i1 %845, i32 47, i32 46
  %856 = getelementptr inbounds i8, ptr %32, i64 7632
  %857 = load float, ptr %856, align 8, !tbaa !176
  %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 688
  %861 = load ptr, ptr %860, align 8, !tbaa !167
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %861, ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %546, 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 !174
  %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 %28) #14
  %868 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(956) %864)
  %869 = extractvalue { <2 x float>, <2 x float> } %868, 0
  store <2 x float> %869, ptr %28, align 8
  %870 = getelementptr inbounds i8, ptr %28, 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 !146
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %28, float noundef %872)
  %873 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %28, ptr noundef nonnull align 4 dereferenceable(16) %16)
  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 688
  %877 = load ptr, ptr %876, align 8, !tbaa !167
  %878 = getelementptr inbounds i8, ptr %32, i64 7492
  %879 = load float, ptr %878, align 4, !tbaa !177
  %880 = fmul float %879, 2.500000e-01
  %881 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 45, float noundef %880)
  %882 = getelementptr inbounds i8, ptr %32, i64 5492
  %883 = load float, ptr %882, align 4, !tbaa !178
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %877, ptr noundef nonnull align 4 dereferenceable(8) %28, 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 %28) #14
  br label %885

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

886:                                              ; preds = %885
  %887 = load ptr, ptr %4, align 8, !tbaa !5
  %888 = getelementptr inbounds i8, ptr %887, i64 688
  %889 = load ptr, ptr %888, align 8, !tbaa !167
  %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 !179
  %892 = icmp eq i32 %891, 0
  br i1 %892, label %893, label %.thread426

893:                                              ; preds = %886
  %894 = getelementptr inbounds i8, ptr %126, i64 688
  %895 = load ptr, ptr %894, align 8, !tbaa !167
  %896 = getelementptr inbounds i8, ptr %895, i64 32
  %897 = load i32, ptr %896, align 8, !tbaa !181
  %898 = icmp sgt i32 %897, 0
  br i1 %898, label %899, label %.thread426

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

.thread426:                                       ; preds = %885, %886, %899, %893
  %.0289428 = phi i1 [ true, %899 ], [ false, %893 ], [ false, %886 ], [ false, %885 ]
  %902 = getelementptr inbounds i8, ptr %32, i64 7464
  %903 = load ptr, ptr %902, align 8, !tbaa !182
  %.not356 = icmp eq ptr %903, null
  br i1 %.not356, label %904, label %907

904:                                              ; preds = %.thread426
  %905 = getelementptr inbounds i8, ptr %32, i64 7160
  %906 = load ptr, ptr %905, align 8, !tbaa !183
  br label %907

907:                                              ; preds = %.thread426, %904
  %908 = phi ptr [ %906, %904 ], [ %903, %.thread426 ]
  br i1 %spec.select435, label %._crit_edge470, label %909

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

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

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

916:                                              ; preds = %._crit_edge470, %909, %910
  %917 = phi ptr [ %.pre471, %._crit_edge470 ], [ %.pre472, %909 ], [ %.pre472, %910 ]
  %918 = phi i1 [ true, %._crit_edge470 ], [ false, %909 ], [ %915, %910 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbiPKjf(ptr noundef %917, ptr noundef nonnull align 4 dereferenceable(16) %26, i1 noundef zeroext %918, i32 noundef %590, ptr noundef nonnull %19, float noundef %598)
  %.pre473 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.0289428, label %919, label %922

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

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

925:                                              ; preds = %922
  %926 = getelementptr inbounds i8, ptr %.pre473, i64 64
  %927 = load float, ptr %926, align 8, !tbaa !144
  %928 = getelementptr inbounds i8, ptr %32, i64 5492
  %929 = load float, ptr %928, align 4, !tbaa !178
  %930 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %927, float noundef %929)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #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(956) %931)
  %933 = extractvalue { <2 x float>, <2 x float> } %932, 0
  store <2 x float> %933, ptr %29, align 8
  %934 = getelementptr inbounds i8, ptr %29, 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 !146
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %29, float noundef %936)
  %937 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %29, ptr noundef nonnull align 4 dereferenceable(16) %16)
  br i1 %937, label %938, label %._crit_edge474

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

938:                                              ; preds = %925
  %939 = load float, ptr %591, align 8, !tbaa !146
  %940 = fsub float -1.000000e+00, %939
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %29, 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 !144
  br label %944

944:                                              ; preds = %._crit_edge474, %938
  %945 = phi ptr [ %941, %938 ], [ %.pre475, %._crit_edge474 ]
  %.0285 = phi float [ %943, %938 ], [ %930, %._crit_edge474 ]
  %946 = getelementptr inbounds i8, ptr %945, i64 688
  %947 = load ptr, ptr %946, align 8, !tbaa !167
  %948 = getelementptr inbounds i8, ptr %32, i64 7492
  %949 = load float, ptr %948, align 4, !tbaa !177
  %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) %29, ptr noundef nonnull align 4 dereferenceable(8) %934, i32 noundef %950, float noundef %.0285, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #14
  %.pre476 = load ptr, ptr %4, align 8, !tbaa !5
  br label %951

951:                                              ; preds = %944, %922
  %952 = phi ptr [ %.pre476, %944 ], [ %.pre473, %922 ]
  %953 = and i32 %.1, 8
  %.not358 = icmp eq i32 %953, 0
  %954 = getelementptr inbounds i8, ptr %952, i64 48
  %955 = load float, ptr %954, align 8, !tbaa !185
  %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 !162
  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 !125
  %967 = getelementptr inbounds i8, ptr %952, i64 56
  %968 = load float, ptr %967, align 8, !tbaa !154
  %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 !186
  %973 = fsub float %970, %972
  %974 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %964, float noundef %973)
  %.pre477 = load ptr, ptr %4, align 8, !tbaa !5
  br label %975

975:                                              ; preds = %951, %963
  %976 = phi ptr [ %.pre477, %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 !187
  %980 = fcmp une float %979, 0.000000e+00
  br i1 %980, label %998, label %981

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

982:                                              ; preds = %981
  %983 = getelementptr inbounds i8, ptr %976, i64 44
  %984 = load float, ptr %983, align 4, !tbaa !164
  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 !127
  %989 = getelementptr inbounds i8, ptr %976, i64 60
  %990 = load float, ptr %989, align 4, !tbaa !165
  %991 = fneg float %990
  %992 = call float @llvm.fmuladd.f32(float %991, float 2.000000e+00, float %988)
  %993 = fsub float %992, %487
  %994 = getelementptr inbounds i8, ptr %976, i64 120
  %995 = load float, ptr %994, align 4, !tbaa !188
  %996 = fsub float %993, %995
  %997 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %986, float noundef %996)
  %.pre478 = load ptr, ptr %4, align 8, !tbaa !5
  br label %998

998:                                              ; preds = %975, %985
  %999 = phi ptr [ %.pre478, %985 ], [ %976, %975 ]
  %1000 = phi float [ %997, %985 ], [ %979, %975 ]
  %1001 = getelementptr inbounds i8, ptr %999, i64 552
  %1002 = load float, ptr %1001, align 8, !tbaa !152
  %1003 = getelementptr inbounds i8, ptr %999, i64 84
  %1004 = load float, ptr %1003, align 4, !tbaa !189
  %1005 = fsub float %1002, %1004
  %1006 = getelementptr inbounds i8, ptr %999, i64 56
  %1007 = load float, ptr %1006, align 8, !tbaa !154
  %1008 = getelementptr inbounds i8, ptr %999, i64 68
  %1009 = load float, ptr %1008, align 4, !tbaa !128
  %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 584
  store float %1012, ptr %1014, align 8, !tbaa !190
  %1015 = getelementptr inbounds i8, ptr %1013, i64 556
  %1016 = load float, ptr %1015, align 4, !tbaa !153
  %1017 = getelementptr inbounds i8, ptr %1013, i64 88
  %1018 = load float, ptr %1017, align 4, !tbaa !191
  %1019 = fsub float %1016, %1018
  %1020 = getelementptr inbounds i8, ptr %1013, i64 60
  %1021 = load float, ptr %1020, align 4, !tbaa !165
  %1022 = getelementptr inbounds i8, ptr %1013, i64 68
  %1023 = load float, ptr %1022, align 4, !tbaa !128
  %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 588
  store float %1026, ptr %1028, align 4, !tbaa !192
  %1029 = getelementptr inbounds i8, ptr %1027, i64 584
  %1030 = load float, ptr %1029, align 8, !tbaa !190
  %1031 = getelementptr inbounds i8, ptr %1027, i64 592
  %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 !116
  %1037 = getelementptr inbounds i8, ptr %1027, i64 16
  %1038 = load float, ptr %1037, align 8, !tbaa !193
  %1039 = getelementptr inbounds i8, ptr %1027, i64 84
  %1040 = load float, ptr %1039, align 4, !tbaa !189
  %1041 = fsub float %1038, %1040
  %1042 = getelementptr inbounds i8, ptr %1027, i64 56
  %1043 = load float, ptr %1042, align 8, !tbaa !154
  %1044 = fadd float %1041, %1043
  %1045 = getelementptr inbounds i8, ptr %1027, i64 616
  store float %1044, ptr %1045, align 8, !tbaa !194
  %1046 = getelementptr inbounds i8, ptr %1027, i64 20
  %1047 = load float, ptr %1046, align 4, !tbaa !195
  %1048 = getelementptr inbounds i8, ptr %1027, i64 88
  %1049 = load float, ptr %1048, align 4, !tbaa !191
  %1050 = fsub float %1047, %1049
  %1051 = getelementptr inbounds i8, ptr %1027, i64 60
  %1052 = load float, ptr %1051, align 4, !tbaa !165
  %1053 = fadd float %1050, %1052
  %1054 = fadd float %487, %1053
  %1055 = getelementptr inbounds i8, ptr %1027, i64 620
  store float %1054, ptr %1055, align 4, !tbaa !196
  %1056 = getelementptr inbounds i8, ptr %1027, i64 48
  %1057 = load float, ptr %1056, align 8, !tbaa !185
  %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 !125
  %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 !186
  %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 624
  store float %1069, ptr %1070, align 8, !tbaa !197
  %1071 = getelementptr inbounds i8, ptr %1027, i64 52
  %1072 = load float, ptr %1071, align 4, !tbaa !187
  %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 !127
  %1077 = fneg float %1052
  %1078 = call float @llvm.fmuladd.f32(float %1077, float 2.000000e+00, float %1076)
  %1079 = fsub float %1078, %487
  %1080 = getelementptr inbounds i8, ptr %1027, i64 120
  %1081 = load float, ptr %1080, align 4, !tbaa !188
  %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 628
  store float %1085, ptr %1086, align 4, !tbaa !198
  %1087 = fadd float %1043, 0.000000e+00
  %1088 = fsub float %1087, %1040
  %1089 = getelementptr inbounds i8, ptr %1027, i64 264
  store float %1088, ptr %1089, align 8, !tbaa !199
  %1090 = getelementptr inbounds i8, ptr %1027, i64 268
  store <2 x float> zeroinitializer, ptr %1090, align 4, !tbaa !116
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  %1091 = fadd float %487, %1052
  %1092 = fsub float %1091, %1049
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, 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) %30)
  %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 %30) #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 %31) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, 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 %31, 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 %31) #14
  %1103 = getelementptr inbounds i8, ptr %1099, i64 256
  store <2 x float> zeroinitializer, ptr %1103, align 8, !tbaa !116
  %1104 = getelementptr inbounds i8, ptr %1099, i64 316
  store i32 0, ptr %1104, align 4, !tbaa !200
  %1105 = getelementptr inbounds i8, ptr %1099, i64 320
  store i32 1, ptr %1105, align 8, !tbaa !201
  %1106 = getelementptr inbounds i8, ptr %1099, i64 328
  %1107 = load i32, ptr %1106, align 8, !tbaa !202
  %1108 = getelementptr inbounds i8, ptr %1099, i64 324
  store i32 %1107, ptr %1108, align 4, !tbaa !203
  store i32 0, ptr %1106, align 8, !tbaa !202
  br i1 %129, label %1109, label %1112

1109:                                             ; preds = %1083
  %1110 = getelementptr inbounds i8, ptr %126, i64 332
  %1111 = load i32, ptr %1110, align 4, !tbaa !204
  br label %1112

1112:                                             ; preds = %1083, %1109
  %1113 = phi i32 [ %1111, %1109 ], [ 0, %1083 ]
  %1114 = getelementptr inbounds i8, ptr %1099, i64 332
  store i32 %1113, ptr %1114, align 4, !tbaa !204
  %1115 = getelementptr inbounds i8, ptr %1099, i64 336
  store i8 0, ptr %1115, align 8, !tbaa !205
  %1116 = getelementptr inbounds i8, ptr %1099, i64 96
  %1117 = load float, ptr %1116, align 4, !tbaa !166
  %1118 = fcmp ogt float %1117, 0.000000e+00
  %1119 = getelementptr inbounds i8, ptr %1099, i64 337
  %1120 = zext i1 %1118 to i8
  store i8 %1120, ptr %1119, align 1, !tbaa !206
  %1121 = getelementptr inbounds i8, ptr %1099, i64 338
  store i8 0, ptr %1121, align 2, !tbaa !207
  %1122 = getelementptr inbounds i8, ptr %1099, i64 56
  %1123 = load float, ptr %1122, align 8, !tbaa !154
  %1124 = getelementptr inbounds i8, ptr %32, i64 5552
  %1125 = load float, ptr %1124, align 4, !tbaa !208
  %1126 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1123, float noundef %1125)
  %1127 = getelementptr inbounds i8, ptr %32, i64 7044
  %1128 = load float, ptr %1127, align 4, !tbaa !209
  %1129 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1126, float noundef %1128)
  %1130 = load ptr, ptr %4, align 8, !tbaa !5
  %1131 = getelementptr inbounds i8, ptr %1130, i64 340
  store float %1129, ptr %1131, align 4, !tbaa !210
  %1132 = getelementptr inbounds i8, ptr %32, i64 7048
  %1133 = load float, ptr %1132, align 4, !tbaa !211
  %1134 = getelementptr inbounds i8, ptr %1130, i64 344
  store float %1133, ptr %1134, align 4, !tbaa !212
  %1135 = getelementptr inbounds i8, ptr %1130, i64 348
  %1136 = load float, ptr %1124, align 4, !tbaa !208
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(36) %1135, i32 noundef 3, float noundef %1136, i1 noundef zeroext %.0281.in)
  %1137 = load ptr, ptr %4, align 8, !tbaa !5
  %1138 = getelementptr inbounds i8, ptr %1137, i64 384
  store i32 0, ptr %1138, align 8, !tbaa !213
  %1139 = getelementptr inbounds i8, ptr %1137, i64 388
  store i32 0, ptr %1139, align 4, !tbaa !214
  %1140 = getelementptr inbounds i8, ptr %1137, i64 392
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1140, i32 noundef 0)
  %1141 = load ptr, ptr %4, align 8, !tbaa !5
  %1142 = getelementptr inbounds i8, ptr %1141, i64 648
  %1143 = getelementptr inbounds i8, ptr %1141, i64 408
  store ptr %1142, ptr %1143, align 8, !tbaa !215
  %1144 = getelementptr inbounds i8, ptr %1141, i64 416
  store ptr null, ptr %1144, align 8, !tbaa !216
  %1145 = getelementptr inbounds i8, ptr %1141, i64 424
  store i32 1, ptr %1145, align 8, !tbaa !217
  br i1 %127, label %1149, label %1146

1146:                                             ; preds = %1112
  %1147 = getelementptr inbounds i8, ptr %126, i64 424
  %1148 = load i32, ptr %1147, align 8, !tbaa !217
  br label %1149

1149:                                             ; preds = %1112, %1146
  %1150 = phi i32 [ %1148, %1146 ], [ 1, %1112 ]
  %1151 = getelementptr inbounds i8, ptr %1141, i64 428
  store i32 %1150, ptr %1151, align 4, !tbaa !218
  %1152 = getelementptr inbounds i8, ptr %1141, i64 436
  store i32 -1, ptr %1152, align 4, !tbaa !219
  %1153 = getelementptr inbounds i8, ptr %1141, i64 432
  store i32 -1, ptr %1153, align 8, !tbaa !220
  %1154 = getelementptr inbounds i8, ptr %1141, i64 640
  %1155 = load float, ptr %1154, align 8, !tbaa !161
  %1156 = getelementptr inbounds i8, ptr %1141, i64 444
  store float %1155, ptr %1156, align 4, !tbaa !221
  %1157 = getelementptr inbounds i8, ptr %1141, i64 448
  store float -1.000000e+00, ptr %1157, align 8, !tbaa !222
  %1158 = getelementptr inbounds i8, ptr %1141, i64 456
  call void @_ZN8ImVectorIiE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1158, i32 noundef 0)
  %1159 = load ptr, ptr %4, align 8, !tbaa !5
  %1160 = getelementptr inbounds i8, ptr %1159, i64 472
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1160, i32 noundef 0)
  %1161 = load ptr, ptr %4, align 8, !tbaa !5
  %1162 = getelementptr inbounds i8, ptr %1161, i64 488
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1162, i32 noundef 0)
  %1163 = load ptr, ptr %4, align 8, !tbaa !5
  %1164 = getelementptr inbounds i8, ptr %1163, i64 504
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1164, i32 noundef 0)
  br i1 %127, label %.critedge406, label %1165

1165:                                             ; preds = %1149
  %1166 = getelementptr inbounds i8, ptr %126, i64 440
  %1167 = load i32, ptr %1166, align 8, !tbaa !223
  %1168 = load ptr, ptr %4, align 8, !tbaa !5
  %1169 = getelementptr inbounds i8, ptr %1168, i64 440
  store i32 %1167, ptr %1169, align 8, !tbaa !223
  %1170 = getelementptr inbounds i8, ptr %1168, i64 456
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %1170, ptr noundef nonnull align 4 dereferenceable(4) %1169)
  %.pre479 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1173

.critedge406:                                     ; preds = %1149
  %1171 = load ptr, ptr %4, align 8, !tbaa !5
  %1172 = getelementptr inbounds i8, ptr %1171, i64 440
  store i32 0, ptr %1172, align 8, !tbaa !223
  br label %1173

1173:                                             ; preds = %.critedge406, %1165
  %1174 = phi ptr [ %1171, %.critedge406 ], [ %.pre479, %1165 ]
  %1175 = getelementptr inbounds i8, ptr %1174, i64 148
  %1176 = load i8, ptr %1175, align 4, !tbaa !137
  %1177 = icmp sgt i8 %1176, 0
  br i1 %1177, label %1178, label %1180

1178:                                             ; preds = %1173
  %1179 = add nsw i8 %1176, -1
  store i8 %1179, ptr %1175, align 4, !tbaa !137
  br label %1180

1180:                                             ; preds = %1178, %1173
  %1181 = getelementptr inbounds i8, ptr %1174, i64 149
  %1182 = load i8, ptr %1181, align 1, !tbaa !138
  %1183 = icmp sgt i8 %1182, 0
  br i1 %1183, label %1184, label %1186

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

1186:                                             ; preds = %1184, %1180
  br i1 %spec.select435, label %1187, label %1189

1187:                                             ; preds = %1186
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %1174)
  %1188 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1188, i1 noundef zeroext false)
  %.pre481.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1189

1189:                                             ; preds = %1187, %1186
  %.pre481 = phi ptr [ %.pre481.pre, %1187 ], [ %1174, %1186 ]
  br i1 %.not340, label %1190, label %1195

1190:                                             ; preds = %1189
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %.pre481, ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull %0, ptr noundef %1)
  %.pre480 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1195

.thread429:                                       ; preds = %257
  %1191 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1191)
  %1192 = load ptr, ptr %4, align 8, !tbaa !5
  %1193 = getelementptr inbounds i8, ptr %1192, i64 568
  %1194 = getelementptr inbounds i8, ptr %1192, i64 576
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1193, ptr noundef nonnull align 4 dereferenceable(8) %1194, i1 noundef zeroext true)
  %.pre482 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1209

1195:                                             ; preds = %1190, %1189
  %1196 = phi ptr [ %.pre480, %1190 ], [ %.pre481, %1189 ]
  %1197 = getelementptr inbounds i8, ptr %1196, i64 76
  %1198 = load i32, ptr %1197, align 4, !tbaa !224
  %1199 = getelementptr inbounds i8, ptr %1196, i64 276
  store i32 %1198, ptr %1199, align 4, !tbaa !225
  %1200 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %714, i1 noundef zeroext false)
  %1201 = zext i1 %1200 to i32
  %1202 = load ptr, ptr %4, align 8, !tbaa !5
  %1203 = getelementptr inbounds i8, ptr %1202, i64 280
  store i32 %1201, ptr %1203, align 8, !tbaa !226
  %1204 = getelementptr inbounds i8, ptr %1202, i64 284
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1204, ptr noundef nonnull align 8 dereferenceable(16) %26, i64 16, i1 false), !tbaa.struct !115
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #14
  %1205 = getelementptr inbounds i8, ptr %1202, i64 568
  %1206 = getelementptr inbounds i8, ptr %1202, i64 576
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1205, ptr noundef nonnull align 4 dereferenceable(8) %1206, i1 noundef zeroext true)
  %1207 = load ptr, ptr %4, align 8, !tbaa !5
  %1208 = getelementptr inbounds i8, ptr %1207, i64 128
  store i8 0, ptr %1208, align 8, !tbaa !227
  br label %1209

1209:                                             ; preds = %.thread429, %1195
  %1210 = phi ptr [ %.pre482, %.thread429 ], [ %1207, %1195 ]
  %1211 = getelementptr inbounds i8, ptr %1210, i64 138
  %1212 = load i16, ptr %1211, align 2, !tbaa !228
  %1213 = add i16 %1212, 1
  store i16 %1213, ptr %1211, align 2, !tbaa !228
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(108) %159)
  br i1 %129, label %1214, label %.critedge408

1214:                                             ; preds = %1209
  %1215 = and i32 %.1, 1
  %.not359 = icmp eq i32 %1215, 0
  br i1 %.not359, label %1216, label %1217

1216:                                             ; preds = %1214
  call void @__assert_fail(ptr noundef nonnull @.str.99, ptr noundef nonnull @.str.3, i32 noundef 6043, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

1217:                                             ; preds = %1214
  %1218 = and i32 %.1, 64
  %.not360 = icmp eq i32 %1218, 0
  br i1 %.not360, label %1219, label %1242

1219:                                             ; preds = %1217
  %1220 = load ptr, ptr %4, align 8, !tbaa !5
  %1221 = getelementptr inbounds i8, ptr %1220, i64 148
  %1222 = load i8, ptr %1221, align 4, !tbaa !137
  %1223 = icmp slt i8 %1222, 1
  br i1 %1223, label %1224, label %1242

1224:                                             ; preds = %1219
  %1225 = getelementptr inbounds i8, ptr %1220, i64 149
  %1226 = load i8, ptr %1225, align 1, !tbaa !138
  %1227 = icmp slt i8 %1226, 1
  br i1 %1227, label %1228, label %1242

1228:                                             ; preds = %1224
  %1229 = getelementptr inbounds i8, ptr %1220, i64 536
  %1230 = load float, ptr %1229, align 8, !tbaa !229
  %1231 = getelementptr inbounds i8, ptr %1220, i64 544
  %1232 = load float, ptr %1231, align 8, !tbaa !230
  %1233 = fcmp ult float %1230, %1232
  br i1 %1233, label %1234, label %1240

1234:                                             ; preds = %1228
  %1235 = getelementptr inbounds i8, ptr %1220, i64 540
  %1236 = load float, ptr %1235, align 4, !tbaa !231
  %1237 = getelementptr inbounds i8, ptr %1220, i64 548
  %1238 = load float, ptr %1237, align 4, !tbaa !232
  %1239 = fcmp ult float %1236, %1238
  br i1 %1239, label %1242, label %1240

1240:                                             ; preds = %1234, %1228
  %1241 = getelementptr inbounds i8, ptr %1220, i64 156
  store i32 1, ptr %1241, align 4, !tbaa !123
  br label %1242

1242:                                             ; preds = %1234, %1240, %1224, %1219, %1217
  br i1 %127, label %.critedge408, label %1243

1243:                                             ; preds = %1242
  %1244 = getelementptr inbounds i8, ptr %126, i64 129
  %1245 = load i8, ptr %1244, align 1, !tbaa !136, !range !66, !noundef !67
  %1246 = trunc nuw i8 %1245 to i1
  br i1 %1246, label %.thread431, label %1249

.thread431:                                       ; preds = %1243
  %1247 = load ptr, ptr %4, align 8, !tbaa !5
  %1248 = getelementptr inbounds i8, ptr %1247, i64 156
  store i32 1, ptr %1248, align 4, !tbaa !123
  br label %1259

1249:                                             ; preds = %1243
  %1250 = getelementptr inbounds i8, ptr %126, i64 156
  %1251 = load i32, ptr %1250, align 4, !tbaa !123
  %1252 = icmp sgt i32 %1251, 0
  br i1 %1252, label %1253, label %.thread430

1253:                                             ; preds = %1249
  %1254 = load ptr, ptr %4, align 8, !tbaa !5
  %1255 = getelementptr inbounds i8, ptr %1254, i64 156
  store i32 1, ptr %1255, align 4, !tbaa !123
  br label %.thread430

.thread430:                                       ; preds = %1249, %1253
  %1256 = getelementptr inbounds i8, ptr %126, i64 160
  %1257 = load i32, ptr %1256, align 8, !tbaa !81
  %1258 = icmp sgt i32 %1257, 0
  br i1 %1258, label %.thread430._crit_edge, label %.critedge408

.thread430._crit_edge:                            ; preds = %.thread430
  %.pre483 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1259

1259:                                             ; preds = %.thread430._crit_edge, %.thread431
  %1260 = phi ptr [ %.pre483, %.thread430._crit_edge ], [ %1247, %.thread431 ]
  %1261 = getelementptr inbounds i8, ptr %1260, i64 160
  store i32 1, ptr %1261, align 8, !tbaa !81
  br label %.critedge408

.critedge408:                                     ; preds = %1242, %.thread430, %1259, %1209
  %1262 = load float, ptr %33, align 4, !tbaa !233
  %1263 = fcmp ugt float %1262, 0.000000e+00
  %.pre484 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert485 = getelementptr inbounds i8, ptr %.pre484, i64 156
  br i1 %1263, label %1264, label %.thread504

.thread504:                                       ; preds = %.critedge408
  store i32 1, ptr %.phi.trans.insert485, align 4, !tbaa !123
  br label %1271

1264:                                             ; preds = %.critedge408
  %.pre486 = load i32, ptr %.phi.trans.insert485, align 4, !tbaa !123
  %1265 = icmp sgt i32 %.pre486, 0
  br i1 %1265, label %1271, label %1266

1266:                                             ; preds = %1264
  %1267 = getelementptr inbounds i8, ptr %.pre484, i64 160
  %1268 = load i32, ptr %1267, align 8, !tbaa !81
  %1269 = icmp sgt i32 %1268, 0
  %1270 = zext i1 %1269 to i8
  br label %1271

1271:                                             ; preds = %.thread504, %1266, %1264
  %1272 = phi i8 [ 1, %1264 ], [ %1270, %1266 ], [ 1, %.thread504 ]
  %1273 = getelementptr inbounds i8, ptr %.pre484, i64 133
  store i8 %1272, ptr %1273, align 1, !tbaa !234
  %1274 = getelementptr inbounds i8, ptr %.pre484, i64 129
  %1275 = load i8, ptr %1274, align 1, !tbaa !136, !range !66, !noundef !67
  %1276 = trunc nuw i8 %1275 to i1
  br i1 %1276, label %1283, label %1277

1277:                                             ; preds = %1271
  %1278 = getelementptr inbounds i8, ptr %.pre484, i64 126
  %1279 = load i8, ptr %1278, align 2, !tbaa !113, !range !66, !noundef !67
  %1280 = trunc nuw i8 %1279 to i1
  br i1 %1280, label %1281, label %1283

1281:                                             ; preds = %1277
  %1282 = trunc nuw i8 %1272 to i1
  br i1 %1282, label %1283, label %1295

1283:                                             ; preds = %1281, %1277, %1271
  %1284 = getelementptr inbounds i8, ptr %.pre484, i64 148
  %1285 = load i8, ptr %1284, align 4, !tbaa !137
  %1286 = icmp slt i8 %1285, 1
  br i1 %1286, label %1287, label %1295

1287:                                             ; preds = %1283
  %1288 = getelementptr inbounds i8, ptr %.pre484, i64 149
  %1289 = load i8, ptr %1288, align 1, !tbaa !138
  %1290 = icmp slt i8 %1289, 1
  br i1 %1290, label %1291, label %1295

1291:                                             ; preds = %1287
  %1292 = getelementptr inbounds i8, ptr %.pre484, i64 160
  %1293 = load i32, ptr %1292, align 8, !tbaa !81
  %1294 = icmp slt i32 %1293, 1
  br label %1295

1295:                                             ; preds = %1291, %1283, %1287, %1281
  %.0 = phi i1 [ false, %1287 ], [ false, %1283 ], [ false, %1281 ], [ %1294, %1291 ]
  %1296 = getelementptr inbounds i8, ptr %.pre484, i64 131
  %1297 = zext i1 %.0 to i8
  store i8 %1297, ptr %1296, align 1, !tbaa !235
  %1298 = xor i1 %.0, true
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14
  ret i1 %1298
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #10 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL15CreateNewWindowPKci(ptr noundef, i32 noundef) local_unnamed_addr #8

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #12

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden { <2 x float>, <2 x float> } @_ZL15GetViewportRectv() local_unnamed_addr #8

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZL15ClampWindowRectP11ImGuiWindowRK6ImRectRK6ImVec2(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 6676}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !19, i64 5480, !6, i64 6432, !16, i64 6440, !16, i64 6444, !20, i64 6448, !22, i64 6656, !14, i64 6664, !14, i64 6668, !14, i64 6672, !12, i64 6676, !12, i64 6677, !12, i64 6678, !12, i64 6679, !14, i64 6680, !6, i64 6688, !23, i64 6696, !23, i64 6712, !23, i64 6728, !23, i64 6744, !24, i64 6760, !14, i64 6776, !6, i64 6784, !6, i64 6792, !6, i64 6800, !6, i64 6808, !6, i64 6816, !15, i64 6824, !16, i64 6832, !14, i64 6836, !12, i64 6840, !14, i64 6844, !16, i64 6848, !16, i64 6852, !14, i64 6856, !14, i64 6860, !16, i64 6864, !12, i64 6868, !12, i64 6869, !12, i64 6870, !12, i64 6871, !12, i64 6872, !14, i64 6876, !14, i64 6880, !26, i64 6888, !15, i64 6896, !6, i64 6904, !27, i64 6912, !14, i64 6916, !14, i64 6920, !12, i64 6924, !12, i64 6925, !6, i64 6928, !14, i64 6936, !16, i64 6940, !28, i64 6944, !30, i64 7056, !31, i64 7080, !32, i64 7096, !33, i64 7112, !34, i64 7128, !34, i64 7144, !6, i64 7160, !14, i64 7168, !14, i64 7172, !14, i64 7176, !14, i64 7180, !14, i64 7184, !14, i64 7188, !14, i64 7192, !14, i64 7196, !14, i64 7200, !14, i64 7204, !14, i64 7208, !27, i64 7212, !29, i64 7216, !14, i64 7232, !35, i64 7236, !14, i64 7240, !12, i64 7244, !12, i64 7245, !12, i64 7246, !12, i64 7247, !12, i64 7248, !12, i64 7249, !12, i64 7250, !14, i64 7252, !29, i64 7256, !12, i64 7272, !12, i64 7273, !14, i64 7276, !36, i64 7280, !14, i64 7284, !14, i64 7288, !14, i64 7292, !14, i64 7296, !37, i64 7304, !37, i64 7352, !37, i64 7400, !6, i64 7448, !14, i64 7456, !6, i64 7464, !6, i64 7472, !6, i64 7480, !16, i64 7488, !16, i64 7492, !12, i64 7496, !6, i64 7504, !6, i64 7512, !14, i64 7520, !14, i64 7524, !14, i64 7528, !14, i64 7532, !12, i64 7536, !38, i64 7544, !39, i64 7600, !16, i64 7632, !40, i64 7640, !40, i64 7808, !14, i64 7976, !12, i64 7980, !12, i64 7981, !12, i64 7982, !14, i64 7984, !14, i64 7988, !14, i64 7992, !48, i64 8000, !29, i64 8064, !14, i64 8080, !14, i64 8084, !16, i64 8088, !14, i64 8092, !14, i64 8096, !14, i64 8100, !14, i64 8104, !49, i64 8112, !7, i64 8128, !6, i64 8144, !50, i64 8152, !52, i64 8192, !53, i64 8208, !15, i64 8224, !54, i64 8232, !58, i64 11960, !14, i64 12080, !14, i64 12084, !16, i64 12088, !16, i64 12092, !7, i64 12096, !21, i64 12108, !12, i64 12124, !16, i64 12128, !16, i64 12132, !16, i64 12136, !14, i64 12140, !55, i64 12144, !61, i64 12160, !15, i64 12176, !15, i64 12184, !12, i64 12192, !16, i64 12196, !62, i64 12200, !63, i64 12216, !64, i64 12232, !12, i64 12248, !65, i64 12252, !6, i64 12256, !62, i64 12264, !16, i64 12280, !12, i64 12284, !14, i64 12288, !14, i64 12292, !14, i64 12296, !12, i64 12300, !14, i64 12304, !7, i64 12308, !14, i64 12788, !16, i64 12792, !14, i64 12796, !14, i64 12800, !14, i64 12804, !7, i64 12808}
!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, !14, i64 960, !15, i64 964, !7, i64 972, !7, i64 1016, !7, i64 1056, !7, i64 1061, !7, i64 1066, !7, i64 1071, !7, i64 1076, !7, i64 1084, !7, i64 1104, !7, i64 1124, !7, i64 1164, !7, i64 1184, !7, i64 3232, !7, i64 5280, !7, i64 5364, !17, i64 5448, !18, i64 5456}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!"_ZTS8ImVectorItE", !14, i64 0, !14, i64 4, !6, i64 8}
!19 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !15, i64 4, !16, i64 12, !16, i64 16, !15, i64 20, !15, i64 28, !14, i64 36, !16, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !15, i64 56, !16, i64 64, !16, i64 68, !15, i64 72, !15, i64 80, !15, i64 88, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !14, i64 132, !15, i64 136, !15, i64 144, !15, i64 152, !15, i64 160, !16, i64 168, !12, i64 172, !12, i64 173, !16, i64 176, !16, i64 180, !7, i64 184}
!20 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !21, i64 28, !14, i64 44, !7, i64 48, !7, i64 144}
!21 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!22 = !{!"double", !7, i64 0}
!23 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !14, i64 0, !14, i64 4, !6, i64 8}
!26 = !{!"long long", !7, i64 0}
!27 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!28 = !{!"_ZTS19ImGuiNextWindowData", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !12, i64 56, !29, i64 60, !6, i64 80, !6, i64 88, !16, i64 96, !15, i64 100}
!29 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!30 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !16, i64 4, !14, i64 8, !14, i64 12, !12, i64 16}
!31 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!35 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!36 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!37 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !14, i64 8, !14, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !29, i64 28}
!38 = !{!"_ZTS10ImDrawData", !12, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !15, i64 28, !15, i64 36, !15, i64 44}
!39 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!40 = !{!"_ZTS10ImDrawList", !41, i64 0, !18, i64 16, !42, i64 32, !14, i64 48, !6, i64 56, !6, i64 64, !14, i64 72, !14, i64 76, !6, i64 80, !6, i64 88, !43, i64 96, !44, i64 112, !45, i64 128, !46, i64 144}
!41 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!46 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !47, i64 8}
!47 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !7, i64 24, !12, i64 57, !12, i64 58}
!49 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!50 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !51, i64 0, !24, i64 16, !14, i64 32}
!51 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!54 = !{!"_ZTS19ImGuiInputTextState", !14, i64 0, !14, i64 4, !14, i64 8, !18, i64 16, !55, i64 32, !55, i64 48, !12, i64 64, !14, i64 68, !16, i64 72, !56, i64 76, !16, i64 3696, !12, i64 3700, !12, i64 3701, !14, i64 3704, !6, i64 3712, !6, i64 3720}
!55 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!56 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !14, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !16, i64 20, !57, i64 24}
!57 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !14, i64 3588, !14, i64 3592}
!58 = !{!"_ZTS6ImFont", !59, i64 0, !16, i64 16, !16, i64 20, !18, i64 24, !60, i64 40, !6, i64 56, !15, i64 64, !6, i64 72, !6, i64 80, !17, i64 88, !17, i64 90, !17, i64 92, !12, i64 94, !16, i64 96, !16, i64 100, !16, i64 104, !14, i64 108, !7, i64 112}
!59 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!62 = !{!"_ZTS15ImGuiTextBuffer", !55, i64 0}
!63 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!64 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !55, i64 0}
!65 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!66 = !{i8 0, i8 2}
!67 = !{}
!68 = !{!11, !14, i64 6668}
!69 = !{!11, !14, i64 6664}
!70 = !{!71, !14, i64 632}
!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, !12, i64 135, !7, i64 136, !17, i64 138, !17, i64 140, !17, i64 142, !14, i64 144, !7, i64 148, !7, i64 149, !7, i64 150, !12, i64 151, !14, i64 152, !14, i64 156, !14, i64 160, !14, i64 164, !14, i64 168, !14, i64 172, !15, i64 176, !15, i64 184, !61, i64 192, !72, i64 208, !29, i64 536, !29, i64 552, !29, i64 568, !29, i64 584, !29, i64 600, !29, i64 616, !14, i64 632, !16, i64 636, !16, i64 640, !24, i64 648, !77, i64 664, !16, i64 680, !14, i64 684, !6, i64 688, !40, i64 696, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !7, i64 904, !7, i64 912, !12, i64 944, !14, i64 948, !14, i64 952}
!72 = !{!"_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, !73, i64 56, !73, i64 60, !73, i64 64, !14, i64 68, !14, i64 72, !29, i64 76, !29, i64 92, !35, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !12, i64 128, !12, i64 129, !12, i64 130, !15, i64 132, !74, i64 140, !14, i64 176, !14, i64 180, !23, i64 184, !6, i64 200, !6, i64 208, !14, i64 216, !14, i64 220, !14, i64 224, !14, i64 228, !14, i64 232, !16, i64 236, !16, i64 240, !75, i64 248, !59, i64 264, !59, i64 280, !76, i64 296, !7, i64 312}
!73 = !{!"_ZTS6ImVec1", !16, i64 0}
!74 = !{!"_ZTS16ImGuiMenuColumns", !16, i64 0, !16, i64 4, !16, i64 8, !7, i64 12, !7, i64 24}
!75 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!76 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!77 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!78 = !{!11, !14, i64 6744}
!79 = !{!11, !12, i64 6677}
!80 = !{!71, !12, i64 134}
!81 = !{!71, !14, i64 160}
!82 = !{!11, !14, i64 7144}
!83 = !{!71, !14, i64 144}
!84 = !{!85, !14, i64 0}
!85 = !{!"_ZTS14ImGuiPopupData", !14, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !14, i64 28, !15, i64 32, !15, i64 40}
!86 = !{!85, !6, i64 8}
!87 = !{!71, !12, i64 132}
!88 = !{!71, !14, i64 12}
!89 = !{!11, !22, i64 6656}
!90 = !{!71, !16, i64 636}
!91 = !{!71, !17, i64 140}
!92 = !{!11, !14, i64 6776}
!93 = !{!71, !17, i64 142}
!94 = !{!71, !6, i64 864}
!95 = !{!71, !14, i64 192}
!96 = !{!11, !6, i64 6784}
!97 = !{!14, !14, i64 0}
!98 = !{!11, !14, i64 6944}
!99 = !{!71, !14, i64 164}
!100 = !{!11, !14, i64 6948}
!101 = !{!71, !14, i64 168}
!102 = !{!11, !14, i64 6952}
!103 = !{!11, !16, i64 6976}
!104 = !{!11, !16, i64 6980}
!105 = !{!11, !16, i64 6992}
!106 = !{!71, !16, i64 100}
!107 = !{!71, !16, i64 108}
!108 = !{!11, !16, i64 6996}
!109 = !{!71, !16, i64 104}
!110 = !{!71, !16, i64 112}
!111 = !{!11, !12, i64 7000}
!112 = !{!11, !14, i64 6956}
!113 = !{!71, !12, i64 126}
!114 = !{!71, !12, i64 135}
!115 = !{i64 0, i64 4, !116, i64 4, i64 4, !116, i64 8, i64 4, !116, i64 12, i64 4, !116}
!116 = !{!16, !16, i64 0}
!117 = !{!71, !12, i64 944}
!118 = !{!11, !6, i64 7480}
!119 = !{!71, !6, i64 0}
!120 = !{!71, !14, i64 72}
!121 = !{!122, !122, i64 0}
!122 = !{!"long", !7, i64 0}
!123 = !{!71, !14, i64 156}
!124 = !{!71, !16, i64 32}
!125 = !{!71, !16, i64 24}
!126 = !{!71, !16, i64 36}
!127 = !{!71, !16, i64 28}
!128 = !{!71, !16, i64 68}
!129 = !{!19, !16, i64 44}
!130 = !{!19, !16, i64 8}
!131 = !{!11, !6, i64 6792}
!132 = !{!11, !14, i64 6836}
!133 = !{!11, !14, i64 6844}
!134 = !{!12, !12, i64 0}
!135 = !{!71, !12, i64 130}
!136 = !{!71, !12, i64 129}
!137 = !{!71, !7, i64 148}
!138 = !{!71, !7, i64 149}
!139 = !{!71, !12, i64 151}
!140 = !{!15, !16, i64 4}
!141 = !{!71, !14, i64 152}
!142 = !{!71, !14, i64 392}
!143 = !{!71, !16, i64 176}
!144 = !{!71, !16, i64 64}
!145 = !{!11, !12, i64 203}
!146 = !{!11, !16, i64 6440}
!147 = !{!71, !7, i64 136}
!148 = !{!71, !12, i64 125}
!149 = !{!71, !12, i64 124}
!150 = !{!15, !16, i64 0}
!151 = !{!19, !16, i64 104}
!152 = !{!71, !16, i64 552}
!153 = !{!71, !16, i64 556}
!154 = !{!71, !16, i64 56}
!155 = !{!71, !16, i64 568}
!156 = !{!71, !16, i64 572}
!157 = !{!71, !16, i64 560}
!158 = !{!71, !16, i64 576}
!159 = !{!71, !16, i64 564}
!160 = !{!71, !16, i64 580}
!161 = !{!71, !16, i64 640}
!162 = !{!71, !16, i64 40}
!163 = !{!71, !16, i64 92}
!164 = !{!71, !16, i64 44}
!165 = !{!71, !16, i64 60}
!166 = !{!71, !16, i64 96}
!167 = !{!71, !6, i64 688}
!168 = !{!11, !6, i64 6432}
!169 = !{!58, !6, i64 72}
!170 = !{!171, !6, i64 8}
!171 = !{!"_ZTS11ImFontAtlas", !12, i64 0, !14, i64 4, !6, i64 8, !14, i64 16, !14, i64 20, !6, i64 24, !6, i64 32, !14, i64 40, !14, i64 44, !15, i64 48, !15, i64 56, !33, i64 64, !172, i64 80, !173, i64 96, !7, i64 112}
!172 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!173 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!174 = !{!11, !6, i64 7472}
!175 = !{!71, !6, i64 872}
!176 = !{!11, !16, i64 7632}
!177 = !{!11, !16, i64 7492}
!178 = !{!11, !16, i64 5492}
!179 = !{!180, !14, i64 0}
!180 = !{!"_ZTS9ImDrawCmd", !14, i64 0, !21, i64 4, !6, i64 24, !14, i64 32, !14, i64 36, !6, i64 40, !6, i64 48}
!181 = !{!40, !14, i64 32}
!182 = !{!11, !6, i64 7464}
!183 = !{!11, !6, i64 7160}
!184 = !{!71, !6, i64 880}
!185 = !{!71, !16, i64 48}
!186 = !{!71, !16, i64 116}
!187 = !{!71, !16, i64 52}
!188 = !{!71, !16, i64 120}
!189 = !{!71, !16, i64 84}
!190 = !{!71, !16, i64 584}
!191 = !{!71, !16, i64 88}
!192 = !{!71, !16, i64 588}
!193 = !{!71, !16, i64 16}
!194 = !{!71, !16, i64 616}
!195 = !{!71, !16, i64 20}
!196 = !{!71, !16, i64 620}
!197 = !{!71, !16, i64 624}
!198 = !{!71, !16, i64 628}
!199 = !{!71, !16, i64 264}
!200 = !{!71, !35, i64 316}
!201 = !{!71, !14, i64 320}
!202 = !{!71, !14, i64 328}
!203 = !{!71, !14, i64 324}
!204 = !{!71, !14, i64 332}
!205 = !{!71, !12, i64 336}
!206 = !{!71, !12, i64 337}
!207 = !{!71, !12, i64 338}
!208 = !{!19, !16, i64 72}
!209 = !{!11, !16, i64 7044}
!210 = !{!71, !16, i64 340}
!211 = !{!11, !16, i64 7048}
!212 = !{!71, !16, i64 344}
!213 = !{!71, !14, i64 384}
!214 = !{!71, !14, i64 388}
!215 = !{!71, !6, i64 408}
!216 = !{!71, !6, i64 416}
!217 = !{!71, !14, i64 424}
!218 = !{!71, !14, i64 428}
!219 = !{!71, !14, i64 436}
!220 = !{!71, !14, i64 432}
!221 = !{!71, !16, i64 444}
!222 = !{!71, !16, i64 448}
!223 = !{!71, !14, i64 440}
!224 = !{!71, !14, i64 76}
!225 = !{!71, !14, i64 276}
!226 = !{!71, !14, i64 280}
!227 = !{!71, !12, i64 128}
!228 = !{!71, !17, i64 138}
!229 = !{!71, !16, i64 536}
!230 = !{!71, !16, i64 544}
!231 = !{!71, !16, i64 540}
!232 = !{!71, !16, i64 548}
!233 = !{!19, !16, i64 0}
!234 = !{!71, !12, i64 133}
!235 = !{!71, !12, i64 131}


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