; LLVM IR from Eukky/TRender :: lib/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.ImGuiResizeGripDef = type { %struct.ImVec2, %struct.ImVec2, i32, i32 }
%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, float, i32, i32, i32, %class.ImVector, %class.ImVector, %class.ImVector, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, i32, i8, [3 x i8], i32, float, i32, i32, float, i8, i8, i8, i8, i8, i8, [2 x i8], i32, %struct.ImVec2, ptr, ptr, i32, i32, float, [4 x i8], ptr, %class.ImVector.1, %class.ImVector.2, %class.ImVector.3, %class.ImVector.4, %class.ImVector.4, %struct.ImGuiNextWindowData, i8, [3 x i8], i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, i32, ptr, float, float, i8, [3 x i8], i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, [2 x i8], i32, i32, i32, i32, i32, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImDrawData, %struct.ImDrawDataBuilder, float, [4 x i8], %struct.ImDrawList, i32, i8, [3 x i8], i32, i32, %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, %class.ImVector.13, [8 x i8], %struct.ImGuiTextEditState, %struct.ImFont, i32, i32, %struct.ImVec4, i8, [3 x i8], float, float, %struct.ImVec2, i32, %class.ImVector.14, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], float, %struct.ImGuiTextBuffer, %class.ImVector.17, %class.ImVector.18, i8, [7 x i8], ptr, %struct.ImGuiTextBuffer, i32, i32, [120 x float], i32, float, i32, i32, i32, [3073 x i8], [3 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, [21 x i32], float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, i8, [512 x i8], [17 x i16], [21 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [5 x %struct.ImVec2], [5 x float], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], [512 x float], [512 x float], [21 x float], [21 x float] }
%struct.ImGuiStyle = type { float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, float, [42 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, %struct.ImVec4, [12 x %struct.ImVec2] }
%class.ImVector = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %class.ImVector.0 }
%class.ImVector.0 = type { i32, i32, ptr }
%class.ImVector.1 = type { i32, i32, ptr }
%class.ImVector.2 = type { i32, i32, ptr }
%class.ImVector.3 = type { i32, i32, ptr }
%class.ImVector.4 = type { i32, i32, ptr }
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiNavMoveResult = type <{ i32, [4 x i8], ptr, float, float, float, %struct.ImRect, [4 x i8] }>
%struct.ImDrawData = type <{ i8, [7 x i8], ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImDrawDataBuilder = type { [2 x %class.ImVector.5] }
%class.ImVector.5 = type { i32, i32, ptr }
%struct.ImDrawList = type { %class.ImVector.6, %class.ImVector.7, %class.ImVector.8, i32, ptr, ptr, i32, ptr, ptr, %class.ImVector.9, %class.ImVector.10, %class.ImVector.11, i32, i32, %class.ImVector.12 }
%class.ImVector.6 = type { i32, i32, ptr }
%class.ImVector.7 = type { i32, i32, ptr }
%class.ImVector.8 = type { i32, i32, ptr }
%class.ImVector.9 = type { i32, i32, ptr }
%class.ImVector.10 = type { i32, i32, ptr }
%class.ImVector.11 = type { i32, i32, ptr }
%class.ImVector.12 = type { i32, i32, ptr }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%class.ImVector.13 = type { i32, i32, ptr }
%struct.ImGuiTextEditState = type <{ i32, [4 x i8], %class.ImVector.7, %class.ImVector.14, %class.ImVector.14, i32, i32, i32, float, %"struct.ImGuiStb::STB_TexteditState", float, i8, i8, [6 x i8] }>
%"struct.ImGuiStb::STB_TexteditState" = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImGuiStb::StbUndoState" }
%"struct.ImGuiStb::StbUndoState" = type { [99 x %"struct.ImGuiStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImGuiStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type { float, float, %struct.ImVec2, %class.ImVector.15, %class.ImVector.16, %class.ImVector.7, ptr, float, i16, i16, ptr, ptr, float, float, i8, i32 }
%class.ImVector.15 = type { i32, i32, ptr }
%class.ImVector.16 = type { i32, i32, ptr }
%class.ImVector.14 = type { i32, i32, ptr }
%class.ImVector.17 = type { i32, i32, ptr }
%class.ImVector.18 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %class.ImVector.14 }
%struct.ImGuiWindow = type { ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImGuiWindowTempData, %class.ImVector.22, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32, float, %struct.ImGuiMenuColumns, %struct.ImGuiStorage, %class.ImVector.23, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i32, i32, i32, i32, i32, i32 }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i8, i8, i32, i32, i32, i32, i8, %struct.ImVec2, %class.ImVector, ptr, i32, i32, i32, float, float, %class.ImVector.20, %class.ImVector.16, %class.ImVector.16, %class.ImVector.21, [6 x i32], float, float, float, ptr }
%class.ImVector.20 = type { i32, i32, ptr }
%class.ImVector.21 = type { i32, i32, ptr }
%class.ImVector.22 = type { i32, i32, ptr }
%struct.ImGuiMenuColumns = type { i32, float, float, float, [4 x float], [4 x float] }
%class.ImVector.23 = type { i32, i32, ptr }
%struct.ImGuiPopupRef = type { i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2 }
%struct.ImFontAtlas = type <{ i32, [4 x i8], ptr, i32, i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %class.ImVector.3, %class.ImVector.25, %class.ImVector.26, [1 x i32], [4 x i8] }>
%class.ImVector.25 = type { i32, i32, ptr }
%class.ImVector.26 = type { i32, i32, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [14 x i8], align 1
@_ZL15resize_grip_def = external hidden global [4 x %struct.ImGuiResizeGripDef], align 16
@.str.72 = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.78 = 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 nounwind uwtable
declare hidden noundef float @_ZL7ImFloorf(float noundef) #4

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

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

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

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

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

; Function Attrs: mustprogress 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: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL10ImSaturatef(float noundef) #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(48), i32 noundef, float noundef, i1 noundef zeroext) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976), ptr noundef, ptr noundef) #7 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, ptr noundef) #7

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

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

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

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

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

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

declare void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168)) #10

declare void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef) #10

; 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 nounwind uwtable
declare dso_local noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16)) #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef %0, ptr noundef %1, i32 noundef %2) #9 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca %struct.ImVec2, align 4
  %12 = alloca %struct.ImVec2, align 4
  %13 = alloca i32, align 4
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca %struct.ImVec2, align 4
  %25 = alloca i8, align 1
  %26 = alloca %struct.ImRect, align 4
  %27 = alloca %struct.ImVec4, align 4
  %28 = alloca %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 %struct.ImVec2, align 4
  %34 = alloca %struct.ImVec2, align 4
  %35 = alloca %struct.ImVec2, align 4
  %36 = alloca %struct.ImVec2, align 4
  %37 = alloca %struct.ImRect, align 4
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  %40 = alloca %struct.ImVec2, align 4
  %41 = alloca i8, align 1
  %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.ImVec2, align 4
  %47 = alloca %struct.ImVec2, align 4
  %48 = alloca %struct.ImVec2, align 4
  %49 = alloca %struct.ImVec2, align 4
  %50 = alloca %struct.ImVec2, align 4
  %51 = alloca %struct.ImVec2, align 4
  %52 = alloca %struct.ImVec2, align 4
  %53 = alloca %struct.ImVec2, align 4
  %54 = alloca %struct.ImVec2, align 4
  %55 = alloca %struct.ImVec2, align 4
  %56 = alloca %struct.ImVec2, align 4
  %57 = alloca i8, align 1
  %58 = alloca i32, align 4
  %59 = alloca [4 x i32], align 16
  %60 = alloca i32, align 4
  %61 = alloca float, align 4
  %62 = alloca %struct.ImRect, align 4
  %63 = alloca %struct.ImRect, align 4
  %64 = alloca float, align 4
  %65 = alloca float, align 4
  %66 = alloca i8, align 1
  %67 = alloca %struct.ImRect, align 4
  %68 = alloca float, align 4
  %69 = alloca i32, align 4
  %70 = alloca %struct.ImVec2, align 4
  %71 = alloca %struct.ImVec2, align 4
  %72 = alloca i32, align 4
  %73 = alloca %struct.ImVec2, align 4
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca %struct.ImVec2, align 4
  %76 = alloca i32, align 4
  %77 = alloca %struct.ImRect, align 4
  %78 = alloca %struct.ImRect, align 4
  %79 = alloca %struct.ImVec2, align 4
  %80 = alloca %struct.ImVec2, align 4
  %81 = alloca i32, align 4
  %82 = alloca ptr, align 8
  %83 = alloca %struct.ImVec2, align 4
  %84 = alloca %struct.ImVec2, align 4
  %85 = alloca %struct.ImVec2, align 4
  %86 = alloca %struct.ImVec2, align 4
  %87 = alloca %struct.ImVec2, align 4
  %88 = alloca %struct.ImVec2, align 4
  %89 = alloca %struct.ImVec2, align 4
  %90 = alloca %struct.ImVec2, align 4
  %91 = alloca %struct.ImVec2, align 4
  %92 = alloca %struct.ImVec2, align 4
  %93 = alloca %struct.ImRect, align 4
  %94 = alloca %struct.ImVec2, align 4
  %95 = alloca %struct.ImVec2, align 4
  %96 = alloca %struct.ImVec2, align 4
  %97 = alloca %struct.ImVec2, align 4
  %98 = alloca %struct.ImVec2, align 4
  %99 = alloca %struct.ImVec2, align 4
  %100 = alloca float, align 4
  %101 = alloca %struct.ImRect, align 4
  %102 = alloca %struct.ImVec2, align 4
  %103 = alloca %struct.ImVec2, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca %struct.ImRect, align 4
  %107 = alloca %struct.ImVec2, align 4
  %108 = alloca %struct.ImVec2, align 4
  %109 = alloca %struct.ImVec2, align 4
  %110 = alloca %struct.ImVec2, align 4
  %111 = alloca %struct.ImVec2, align 4
  %112 = alloca %struct.ImVec2, align 4
  %113 = alloca %struct.ImVec2, align 4
  %114 = alloca %struct.ImVec2, align 4
  %115 = alloca %struct.ImVec2, align 4
  %116 = alloca float, align 4
  %117 = alloca float, align 4
  %118 = alloca %struct.ImVec2, align 4
  %119 = alloca %struct.ImVec2, align 4
  %120 = alloca %struct.ImRect, align 4
  %121 = alloca %struct.ImVec2, align 4
  %122 = alloca %struct.ImVec2, align 4
  %123 = alloca %struct.ImRect, align 4
  %124 = alloca float, align 4
  %125 = alloca float, align 4
  %126 = alloca %struct.ImRect, align 4
  %127 = alloca %struct.ImRect, align 4
  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
  %128 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %128, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #13
  %129 = load ptr, ptr %7, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.ImGuiContext, ptr %129, i32 0, i32 4
  store ptr %130, ptr %8, align 8, !tbaa !5
  %131 = load ptr, ptr %4, align 8, !tbaa !5
  %132 = icmp ne ptr %131, null
  br i1 %132, label %133, label %134

133:                                              ; preds = %3
  br label %136

134:                                              ; preds = %3
  call void @__assert_fail(ptr noundef @.str.72, ptr noundef @.str.3, i32 noundef 6005, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

135:                                              ; No predecessors!
  br label %136

136:                                              ; preds = %135, %133
  %137 = load ptr, ptr %7, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.ImGuiContext, ptr %137, i32 0, i32 0
  %139 = load i8, ptr %138, align 8, !tbaa !11, !range !55, !noundef !56
  %140 = trunc i8 %139 to i1
  br i1 %140, label %141, label %142

141:                                              ; preds = %136
  br label %144

142:                                              ; preds = %136
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.3, i32 noundef 6006, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

143:                                              ; No predecessors!
  br label %144

144:                                              ; preds = %143, %141
  %145 = load ptr, ptr %7, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.ImGuiContext, ptr %145, i32 0, i32 11
  %147 = load i32, ptr %146, align 8, !tbaa !57
  %148 = load ptr, ptr %7, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.ImGuiContext, ptr %148, i32 0, i32 10
  %150 = load i32, ptr %149, align 4, !tbaa !58
  %151 = icmp ne i32 %147, %150
  br i1 %151, label %152, label %153

152:                                              ; preds = %144
  br label %155

153:                                              ; preds = %144
  call void @__assert_fail(ptr noundef @.str.73, ptr noundef @.str.3, i32 noundef 6007, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

154:                                              ; No predecessors!
  br label %155

155:                                              ; preds = %154, %152
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #13
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef %156)
  store ptr %157, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #13
  %158 = load ptr, ptr %9, align 8, !tbaa !5
  %159 = icmp eq ptr %158, null
  %160 = zext i1 %159 to i8
  store i8 %160, ptr %10, align 1, !tbaa !59
  %161 = load i8, ptr %10, align 1, !tbaa !59, !range !55, !noundef !56
  %162 = trunc i8 %161 to i1
  br i1 %162, label %163, label %179

163:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #13
  %164 = load ptr, ptr %7, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.ImGuiContext, ptr %164, i32 0, i32 51
  %166 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %165, i32 0, i32 1
  %167 = load i32, ptr %166, align 4, !tbaa !60
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %169, label %173

169:                                              ; preds = %163
  %170 = load ptr, ptr %7, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.ImGuiContext, ptr %170, i32 0, i32 51
  %172 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %171, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %11, ptr align 4 %172, i64 8, i1 false), !tbaa.struct !61
  br label %174

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

174:                                              ; preds = %173, %169
  %175 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %12, ptr align 4 %11, i64 8, i1 false), !tbaa.struct !61
  %176 = load i32, ptr %6, align 4, !tbaa !9
  %177 = load <2 x float>, ptr %12, align 4
  %178 = call noundef ptr @_ZL15CreateNewWindowPKc6ImVec2i(ptr noundef %175, <2 x float> %177, i32 noundef %176)
  store ptr %178, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #13
  br label %179

179:                                              ; preds = %174, %155
  %180 = load i32, ptr %6, align 4, !tbaa !9
  %181 = and i32 %180, 512
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %183, label %186

183:                                              ; preds = %179
  %184 = load i32, ptr %6, align 4, !tbaa !9
  %185 = or i32 %184, 6
  store i32 %185, ptr %6, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %183, %179
  %187 = load i32, ptr %6, align 4, !tbaa !9
  %188 = and i32 %187, 8388608
  %189 = icmp ne i32 %188, 0
  br i1 %189, label %190, label %198

190:                                              ; preds = %186
  %191 = load i32, ptr %6, align 4, !tbaa !9
  %192 = and i32 %191, 16777216
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %194, label %195

194:                                              ; preds = %190
  br label %197

195:                                              ; preds = %190
  call void @__assert_fail(ptr noundef @.str.74, ptr noundef @.str.3, i32 noundef 6023, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

196:                                              ; No predecessors!
  br label %197

197:                                              ; preds = %196, %194
  br label %198

198:                                              ; preds = %197, %186
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #13
  %199 = load ptr, ptr %7, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.ImGuiContext, ptr %199, i32 0, i32 10
  %201 = load i32, ptr %200, align 4, !tbaa !58
  store i32 %201, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #13
  %202 = load ptr, ptr %9, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.ImGuiWindow, ptr %202, i32 0, i32 50
  %204 = load i32, ptr %203, align 8, !tbaa !63
  %205 = load i32, ptr %13, align 4, !tbaa !9
  %206 = icmp ne i32 %204, %205
  %207 = zext i1 %206 to i8
  store i8 %207, ptr %14, align 1, !tbaa !59
  %208 = load i8, ptr %14, align 1, !tbaa !59, !range !55, !noundef !56
  %209 = trunc i8 %208 to i1
  br i1 %209, label %210, label %214

210:                                              ; preds = %198
  %211 = load i32, ptr %6, align 4, !tbaa !9
  %212 = load ptr, ptr %9, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.ImGuiWindow, ptr %212, i32 0, i32 2
  store i32 %211, ptr %213, align 4, !tbaa !71
  br label %218

214:                                              ; preds = %198
  %215 = load ptr, ptr %9, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.ImGuiWindow, ptr %215, i32 0, i32 2
  %217 = load i32, ptr %216, align 4, !tbaa !71
  store i32 %217, ptr %6, align 4, !tbaa !9
  br label %218

218:                                              ; preds = %214, %210
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #13
  %219 = load ptr, ptr %9, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.ImGuiWindow, ptr %219, i32 0, i32 50
  %221 = load i32, ptr %220, align 8, !tbaa !63
  %222 = load i32, ptr %13, align 4, !tbaa !9
  %223 = sub nsw i32 %222, 1
  %224 = icmp slt i32 %221, %223
  %225 = zext i1 %224 to i8
  store i8 %225, ptr %15, align 1, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #13
  %226 = load ptr, ptr %9, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.ImGuiWindow, ptr %226, i32 0, i32 37
  %228 = load i32, ptr %227, align 8, !tbaa !72
  %229 = icmp sgt i32 %228, 0
  %230 = zext i1 %229 to i8
  store i8 %230, ptr %16, align 1, !tbaa !59
  %231 = load i32, ptr %6, align 4, !tbaa !9
  %232 = and i32 %231, 67108864
  %233 = icmp ne i32 %232, 0
  br i1 %233, label %234, label %268

234:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #13
  %235 = load ptr, ptr %7, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.ImGuiContext, ptr %235, i32 0, i32 49
  %237 = load ptr, ptr %7, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.ImGuiContext, ptr %237, i32 0, i32 50
  %239 = getelementptr inbounds %class.ImVector.4, ptr %238, i32 0, i32 0
  %240 = load i32, ptr %239, align 8, !tbaa !73
  %241 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefEixEi(ptr noundef nonnull align 8 dereferenceable(16) %236, i32 noundef %240)
  store ptr %241, ptr %17, align 8, !tbaa !5
  %242 = load ptr, ptr %9, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.ImGuiWindow, ptr %242, i32 0, i32 31
  %244 = load i32, ptr %243, align 8, !tbaa !74
  %245 = load ptr, ptr %17, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.ImGuiPopupRef, ptr %245, i32 0, i32 0
  %247 = load i32, ptr %246, align 8, !tbaa !75
  %248 = icmp ne i32 %244, %247
  %249 = zext i1 %248 to i32
  %250 = load i8, ptr %15, align 1, !tbaa !59, !range !55, !noundef !56
  %251 = trunc i8 %250 to i1
  %252 = zext i1 %251 to i32
  %253 = or i32 %252, %249
  %254 = icmp ne i32 %253, 0
  %255 = zext i1 %254 to i8
  store i8 %255, ptr %15, align 1, !tbaa !59
  %256 = load ptr, ptr %9, align 8, !tbaa !5
  %257 = load ptr, ptr %17, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.ImGuiPopupRef, ptr %257, i32 0, i32 1
  %259 = load ptr, ptr %258, align 8, !tbaa !77
  %260 = icmp ne ptr %256, %259
  %261 = zext i1 %260 to i32
  %262 = load i8, ptr %15, align 1, !tbaa !59, !range !55, !noundef !56
  %263 = trunc i8 %262 to i1
  %264 = zext i1 %263 to i32
  %265 = or i32 %264, %261
  %266 = icmp ne i32 %265, 0
  %267 = zext i1 %266 to i8
  store i8 %267, ptr %15, align 1, !tbaa !59
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #13
  br label %268

268:                                              ; preds = %234, %218
  %269 = load i8, ptr %15, align 1, !tbaa !59, !range !55, !noundef !56
  %270 = trunc i8 %269 to i1
  br i1 %270, label %274, label %271

271:                                              ; preds = %268
  %272 = load i8, ptr %16, align 1, !tbaa !59, !range !55, !noundef !56
  %273 = trunc i8 %272 to i1
  br label %274

274:                                              ; preds = %271, %268
  %275 = phi i1 [ true, %268 ], [ %273, %271 ]
  %276 = load ptr, ptr %9, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.ImGuiWindow, ptr %276, i32 0, i32 26
  %278 = zext i1 %275 to i8
  store i8 %278, ptr %277, align 8, !tbaa !78
  %279 = load ptr, ptr %5, align 8, !tbaa !5
  %280 = icmp ne ptr %279, null
  %281 = load ptr, ptr %9, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.ImGuiWindow, ptr %281, i32 0, i32 27
  %283 = zext i1 %280 to i8
  store i8 %283, ptr %282, align 1, !tbaa !79
  %284 = load ptr, ptr %9, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.ImGuiWindow, ptr %284, i32 0, i32 26
  %286 = load i8, ptr %285, align 8, !tbaa !78, !range !55, !noundef !56
  %287 = trunc i8 %286 to i1
  br i1 %287, label %288, label %290

288:                                              ; preds = %274
  %289 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %289, i32 noundef 8, i1 noundef zeroext true)
  br label %290

290:                                              ; preds = %288, %274
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #13
  %291 = load ptr, ptr %7, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.ImGuiContext, ptr %291, i32 0, i32 15
  %293 = call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %292)
  br i1 %293, label %294, label %295

294:                                              ; preds = %290
  br label %300

295:                                              ; preds = %290
  %296 = load ptr, ptr %7, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.ImGuiContext, ptr %296, i32 0, i32 15
  %298 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %297)
  %299 = load ptr, ptr %298, align 8, !tbaa !5
  br label %300

300:                                              ; preds = %295, %294
  %301 = phi ptr [ null, %294 ], [ %299, %295 ]
  store ptr %301, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  %302 = load i8, ptr %14, align 1, !tbaa !59, !range !55, !noundef !56
  %303 = trunc i8 %302 to i1
  br i1 %303, label %304, label %313

304:                                              ; preds = %300
  %305 = load i32, ptr %6, align 4, !tbaa !9
  %306 = and i32 %305, 83886080
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %310

308:                                              ; preds = %304
  %309 = load ptr, ptr %18, align 8, !tbaa !5
  br label %311

310:                                              ; preds = %304
  br label %311

311:                                              ; preds = %310, %308
  %312 = phi ptr [ %309, %308 ], [ null, %310 ]
  br label %317

313:                                              ; preds = %300
  %314 = load ptr, ptr %9, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.ImGuiWindow, ptr %314, i32 0, i32 59
  %316 = load ptr, ptr %315, align 8, !tbaa !80
  br label %317

317:                                              ; preds = %313, %311
  %318 = phi ptr [ %312, %311 ], [ %316, %313 ]
  store ptr %318, ptr %19, align 8, !tbaa !5
  %319 = load ptr, ptr %19, align 8, !tbaa !5
  %320 = icmp ne ptr %319, null
  br i1 %320, label %326, label %321

321:                                              ; preds = %317
  %322 = load i32, ptr %6, align 4, !tbaa !9
  %323 = and i32 %322, 16777216
  %324 = icmp ne i32 %323, 0
  %325 = xor i1 %324, true
  br label %326

326:                                              ; preds = %321, %317
  %327 = phi i1 [ true, %317 ], [ %325, %321 ]
  br i1 %327, label %328, label %329

328:                                              ; preds = %326
  br label %331

329:                                              ; preds = %326
  call void @__assert_fail(ptr noundef @.str.75, ptr noundef @.str.3, i32 noundef 6049, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

330:                                              ; No predecessors!
  br label %331

331:                                              ; preds = %330, %328
  %332 = load ptr, ptr %7, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.ImGuiContext, ptr %332, i32 0, i32 15
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %333, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %334 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %334)
  %335 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL15CheckStacksSizeP11ImGuiWindowb(ptr noundef %335, i1 noundef zeroext true)
  %336 = load i32, ptr %6, align 4, !tbaa !9
  %337 = and i32 %336, 67108864
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %339, label %358

339:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  %340 = load ptr, ptr %7, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.ImGuiContext, ptr %340, i32 0, i32 49
  %342 = load ptr, ptr %7, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.ImGuiContext, ptr %342, i32 0, i32 50
  %344 = getelementptr inbounds %class.ImVector.4, ptr %343, i32 0, i32 0
  %345 = load i32, ptr %344, align 8, !tbaa !73
  %346 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefEixEi(ptr noundef nonnull align 8 dereferenceable(16) %341, i32 noundef %345)
  store ptr %346, ptr %20, align 8, !tbaa !5
  %347 = load ptr, ptr %9, align 8, !tbaa !5
  %348 = load ptr, ptr %20, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.ImGuiPopupRef, ptr %348, i32 0, i32 1
  store ptr %347, ptr %349, align 8, !tbaa !77
  %350 = load ptr, ptr %7, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.ImGuiContext, ptr %350, i32 0, i32 50
  %352 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN8ImVectorI13ImGuiPopupRefE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %351, ptr noundef nonnull align 8 dereferenceable(48) %352)
  %353 = load ptr, ptr %20, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.ImGuiPopupRef, ptr %353, i32 0, i32 0
  %355 = load i32, ptr %354, align 8, !tbaa !75
  %356 = load ptr, ptr %9, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.ImGuiWindow, ptr %356, i32 0, i32 31
  store i32 %355, ptr %357, align 8, !tbaa !74
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %358

358:                                              ; preds = %339, %331
  %359 = load i8, ptr %16, align 1, !tbaa !59, !range !55, !noundef !56
  %360 = trunc i8 %359 to i1
  br i1 %360, label %361, label %369

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

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

369:                                              ; preds = %365, %361, %358
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  store i8 0, ptr %21, align 1, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #13
  store i8 0, ptr %22, align 1, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  store i8 0, ptr %23, align 1, !tbaa !59
  %370 = load ptr, ptr %7, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.ImGuiContext, ptr %370, i32 0, i32 51
  %372 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %371, i32 0, i32 0
  %373 = load i32, ptr %372, align 8, !tbaa !81
  %374 = icmp ne i32 %373, 0
  br i1 %374, label %375, label %419

375:                                              ; preds = %369
  %376 = load ptr, ptr %9, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.ImGuiWindow, ptr %376, i32 0, i32 38
  %378 = load i32, ptr %377, align 4, !tbaa !82
  %379 = load ptr, ptr %7, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.ImGuiContext, ptr %379, i32 0, i32 51
  %381 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %380, i32 0, i32 0
  %382 = load i32, ptr %381, align 8, !tbaa !81
  %383 = and i32 %378, %382
  %384 = icmp ne i32 %383, 0
  %385 = zext i1 %384 to i8
  store i8 %385, ptr %21, align 1, !tbaa !59
  %386 = load i8, ptr %21, align 1, !tbaa !59, !range !55, !noundef !56
  %387 = trunc i8 %386 to i1
  br i1 %387, label %388, label %409

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

394:                                              ; preds = %388
  %395 = load ptr, ptr %7, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.ImGuiContext, ptr %395, i32 0, i32 51
  %397 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %396, i32 0, i32 7
  %398 = load ptr, ptr %9, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.ImGuiWindow, ptr %398, i32 0, i32 41
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %399, ptr align 4 %397, i64 8, i1 false), !tbaa.struct !61
  %400 = load ptr, ptr %7, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.ImGuiContext, ptr %400, i32 0, i32 51
  %402 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %401, i32 0, i32 8
  %403 = load ptr, ptr %9, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.ImGuiWindow, ptr %403, i32 0, i32 42
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %404, ptr align 4 %402, i64 8, i1 false), !tbaa.struct !61
  %405 = load ptr, ptr %9, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.ImGuiWindow, ptr %405, i32 0, i32 38
  %407 = load i32, ptr %406, align 4, !tbaa !82
  %408 = and i32 %407, -15
  store i32 %408, ptr %406, align 4, !tbaa !82
  br label %418

409:                                              ; preds = %388, %375
  %410 = load ptr, ptr %9, align 8, !tbaa !5
  %411 = load ptr, ptr %7, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.ImGuiContext, ptr %411, i32 0, i32 51
  %413 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %412, i32 0, i32 7
  %414 = load ptr, ptr %7, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.ImGuiContext, ptr %414, i32 0, i32 51
  %416 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %415, i32 0, i32 0
  %417 = load i32, ptr %416, align 8, !tbaa !81
  call void @_ZL12SetWindowPosP11ImGuiWindowRK6ImVec2i(ptr noundef %410, ptr noundef nonnull align 4 dereferenceable(8) %413, i32 noundef %417)
  br label %418

418:                                              ; preds = %409, %394
  br label %419

419:                                              ; preds = %418, %369
  %420 = load ptr, ptr %7, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.ImGuiContext, ptr %420, i32 0, i32 51
  %422 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %421, i32 0, i32 1
  %423 = load i32, ptr %422, align 4, !tbaa !60
  %424 = icmp ne i32 %423, 0
  br i1 %424, label %425, label %472

425:                                              ; preds = %419
  %426 = load ptr, ptr %9, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.ImGuiWindow, ptr %426, i32 0, i32 39
  %428 = load i32, ptr %427, align 8, !tbaa !83
  %429 = load ptr, ptr %7, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.ImGuiContext, ptr %429, i32 0, i32 51
  %431 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %430, i32 0, i32 1
  %432 = load i32, ptr %431, align 4, !tbaa !60
  %433 = and i32 %428, %432
  %434 = icmp ne i32 %433, 0
  br i1 %434, label %435, label %442

435:                                              ; preds = %425
  %436 = load ptr, ptr %7, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.ImGuiContext, ptr %436, i32 0, i32 51
  %438 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %437, i32 0, i32 9
  %439 = getelementptr inbounds %struct.ImVec2, ptr %438, i32 0, i32 0
  %440 = load float, ptr %439, align 4, !tbaa !84
  %441 = fcmp ogt float %440, 0.000000e+00
  br label %442

442:                                              ; preds = %435, %425
  %443 = phi i1 [ false, %425 ], [ %441, %435 ]
  %444 = zext i1 %443 to i8
  store i8 %444, ptr %22, align 1, !tbaa !59
  %445 = load ptr, ptr %9, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.ImGuiWindow, ptr %445, i32 0, i32 39
  %447 = load i32, ptr %446, align 8, !tbaa !83
  %448 = load ptr, ptr %7, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.ImGuiContext, ptr %448, i32 0, i32 51
  %450 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %449, i32 0, i32 1
  %451 = load i32, ptr %450, align 4, !tbaa !60
  %452 = and i32 %447, %451
  %453 = icmp ne i32 %452, 0
  br i1 %453, label %454, label %461

454:                                              ; preds = %442
  %455 = load ptr, ptr %7, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.ImGuiContext, ptr %455, i32 0, i32 51
  %457 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %456, i32 0, i32 9
  %458 = getelementptr inbounds %struct.ImVec2, ptr %457, i32 0, i32 1
  %459 = load float, ptr %458, align 4, !tbaa !85
  %460 = fcmp ogt float %459, 0.000000e+00
  br label %461

461:                                              ; preds = %454, %442
  %462 = phi i1 [ false, %442 ], [ %460, %454 ]
  %463 = zext i1 %462 to i8
  store i8 %463, ptr %23, align 1, !tbaa !59
  %464 = load ptr, ptr %9, align 8, !tbaa !5
  %465 = load ptr, ptr %7, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.ImGuiContext, ptr %465, i32 0, i32 51
  %467 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %466, i32 0, i32 9
  %468 = load ptr, ptr %7, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.ImGuiContext, ptr %468, i32 0, i32 51
  %470 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %469, i32 0, i32 1
  %471 = load i32, ptr %470, align 4, !tbaa !60
  call void @_ZL13SetWindowSizeP11ImGuiWindowRK6ImVec2i(ptr noundef %464, ptr noundef nonnull align 4 dereferenceable(8) %467, i32 noundef %471)
  br label %472

472:                                              ; preds = %461, %419
  %473 = load ptr, ptr %7, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.ImGuiContext, ptr %473, i32 0, i32 51
  %475 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %474, i32 0, i32 2
  %476 = load i32, ptr %475, align 8, !tbaa !86
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %478, label %501

478:                                              ; preds = %472
  %479 = load ptr, ptr %7, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.ImGuiContext, ptr %479, i32 0, i32 51
  %481 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %480, i32 0, i32 10
  %482 = load ptr, ptr %9, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.ImGuiWindow, ptr %482, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %483, ptr align 4 %481, i64 8, i1 false), !tbaa.struct !61
  %484 = load ptr, ptr %9, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.ImGuiWindow, ptr %484, i32 0, i32 8
  %486 = getelementptr inbounds %struct.ImVec2, ptr %485, i32 0, i32 1
  %487 = load float, ptr %486, align 4, !tbaa !87
  %488 = fcmp une float %487, 0.000000e+00
  br i1 %488, label %489, label %500

489:                                              ; preds = %478
  %490 = load ptr, ptr %9, align 8, !tbaa !5
  %491 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %490)
  %492 = load ptr, ptr %9, align 8, !tbaa !5
  %493 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %492)
  %494 = fadd float %491, %493
  %495 = load ptr, ptr %9, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.ImGuiWindow, ptr %495, i32 0, i32 8
  %497 = getelementptr inbounds %struct.ImVec2, ptr %496, i32 0, i32 1
  %498 = load float, ptr %497, align 4, !tbaa !87
  %499 = fadd float %498, %494
  store float %499, ptr %497, align 4, !tbaa !87
  br label %500

500:                                              ; preds = %489, %478
  br label %508

501:                                              ; preds = %472
  %502 = load i8, ptr %14, align 1, !tbaa !59, !range !55, !noundef !56
  %503 = trunc i8 %502 to i1
  br i1 %503, label %504, label %507

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

507:                                              ; preds = %504, %501
  br label %508

508:                                              ; preds = %507, %500
  %509 = load ptr, ptr %7, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.ImGuiContext, ptr %509, i32 0, i32 51
  %511 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %510, i32 0, i32 3
  %512 = load i32, ptr %511, align 4, !tbaa !88
  %513 = icmp ne i32 %512, 0
  br i1 %513, label %514, label %525

514:                                              ; preds = %508
  %515 = load ptr, ptr %9, align 8, !tbaa !5
  %516 = load ptr, ptr %7, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.ImGuiContext, ptr %516, i32 0, i32 51
  %518 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %517, i32 0, i32 11
  %519 = load i8, ptr %518, align 4, !tbaa !89, !range !55, !noundef !56
  %520 = trunc i8 %519 to i1
  %521 = load ptr, ptr %7, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.ImGuiContext, ptr %521, i32 0, i32 51
  %523 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %522, i32 0, i32 3
  %524 = load i32, ptr %523, align 4, !tbaa !88
  call void @_ZL18SetWindowCollapsedP11ImGuiWindowbi(ptr noundef %515, i1 noundef zeroext %520, i32 noundef %524)
  br label %525

525:                                              ; preds = %514, %508
  %526 = load ptr, ptr %7, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.ImGuiContext, ptr %526, i32 0, i32 51
  %528 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %527, i32 0, i32 5
  %529 = load i32, ptr %528, align 4, !tbaa !90
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %531, label %533

531:                                              ; preds = %525
  %532 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %532)
  br label %533

533:                                              ; preds = %531, %525
  %534 = load ptr, ptr %9, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.ImGuiWindow, ptr %534, i32 0, i32 26
  %536 = load i8, ptr %535, align 8, !tbaa !78, !range !55, !noundef !56
  %537 = trunc i8 %536 to i1
  br i1 %537, label %538, label %540

538:                                              ; preds = %533
  %539 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %539, i32 noundef 8, i1 noundef zeroext false)
  br label %540

540:                                              ; preds = %538, %533
  %541 = load i8, ptr %14, align 1, !tbaa !59, !range !55, !noundef !56
  %542 = trunc i8 %541 to i1
  br i1 %542, label %543, label %2811

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

547:                                              ; preds = %543
  %548 = load i32, ptr %6, align 4, !tbaa !9
  %549 = and i32 %548, 33554432
  %550 = icmp ne i32 %549, 0
  br label %551

551:                                              ; preds = %547, %543
  %552 = phi i1 [ false, %543 ], [ %550, %547 ]
  %553 = zext i1 %552 to i8
  store i8 %553, ptr %25, align 1, !tbaa !59
  %554 = load ptr, ptr %19, align 8, !tbaa !5
  %555 = load ptr, ptr %9, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.ImGuiWindow, ptr %555, i32 0, i32 59
  store ptr %554, ptr %556, align 8, !tbaa !80
  %557 = load ptr, ptr %9, align 8, !tbaa !5
  %558 = load ptr, ptr %9, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.ImGuiWindow, ptr %558, i32 0, i32 63
  store ptr %557, ptr %559, align 8, !tbaa !91
  %560 = load ptr, ptr %9, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.ImGuiWindow, ptr %560, i32 0, i32 62
  store ptr %557, ptr %561, align 8, !tbaa !92
  %562 = load ptr, ptr %9, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.ImGuiWindow, ptr %562, i32 0, i32 61
  store ptr %557, ptr %563, align 8, !tbaa !93
  %564 = load ptr, ptr %9, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.ImGuiWindow, ptr %564, i32 0, i32 60
  store ptr %557, ptr %565, align 8, !tbaa !94
  %566 = load ptr, ptr %19, align 8, !tbaa !5
  %567 = icmp ne ptr %566, null
  br i1 %567, label %568, label %581

568:                                              ; preds = %551
  %569 = load i32, ptr %6, align 4, !tbaa !9
  %570 = and i32 %569, 16777216
  %571 = icmp ne i32 %570, 0
  br i1 %571, label %572, label %581

572:                                              ; preds = %568
  %573 = load i8, ptr %25, align 1, !tbaa !59, !range !55, !noundef !56
  %574 = trunc i8 %573 to i1
  br i1 %574, label %581, label %575

575:                                              ; preds = %572
  %576 = load ptr, ptr %19, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.ImGuiWindow, ptr %576, i32 0, i32 60
  %578 = load ptr, ptr %577, align 8, !tbaa !94
  %579 = load ptr, ptr %9, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.ImGuiWindow, ptr %579, i32 0, i32 60
  store ptr %578, ptr %580, align 8, !tbaa !94
  br label %581

581:                                              ; preds = %575, %572, %568, %551
  %582 = load ptr, ptr %19, align 8, !tbaa !5
  %583 = icmp ne ptr %582, null
  br i1 %583, label %584, label %600

584:                                              ; preds = %581
  %585 = load i32, ptr %6, align 4, !tbaa !9
  %586 = and i32 %585, 134217728
  %587 = icmp ne i32 %586, 0
  br i1 %587, label %600, label %588

588:                                              ; preds = %584
  %589 = load i32, ptr %6, align 4, !tbaa !9
  %590 = and i32 %589, 83886080
  %591 = icmp ne i32 %590, 0
  br i1 %591, label %592, label %600

592:                                              ; preds = %588
  %593 = load ptr, ptr %19, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.ImGuiWindow, ptr %593, i32 0, i32 61
  %595 = load ptr, ptr %594, align 8, !tbaa !93
  %596 = load ptr, ptr %9, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.ImGuiWindow, ptr %596, i32 0, i32 62
  store ptr %595, ptr %597, align 8, !tbaa !92
  %598 = load ptr, ptr %9, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.ImGuiWindow, ptr %598, i32 0, i32 61
  store ptr %595, ptr %599, align 8, !tbaa !93
  br label %600

600:                                              ; preds = %592, %588, %584, %581
  br label %601

601:                                              ; preds = %609, %600
  %602 = load ptr, ptr %9, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.ImGuiWindow, ptr %602, i32 0, i32 63
  %604 = load ptr, ptr %603, align 8, !tbaa !91
  %605 = getelementptr inbounds %struct.ImGuiWindow, ptr %604, i32 0, i32 2
  %606 = load i32, ptr %605, align 4, !tbaa !71
  %607 = and i32 %606, 8388608
  %608 = icmp ne i32 %607, 0
  br i1 %608, label %609, label %617

609:                                              ; preds = %601
  %610 = load ptr, ptr %9, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.ImGuiWindow, ptr %610, i32 0, i32 63
  %612 = load ptr, ptr %611, align 8, !tbaa !91
  %613 = getelementptr inbounds %struct.ImGuiWindow, ptr %612, i32 0, i32 59
  %614 = load ptr, ptr %613, align 8, !tbaa !80
  %615 = load ptr, ptr %9, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.ImGuiWindow, ptr %615, i32 0, i32 63
  store ptr %614, ptr %616, align 8, !tbaa !91
  br label %601, !llvm.loop !95

617:                                              ; preds = %601
  %618 = load ptr, ptr %9, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.ImGuiWindow, ptr %618, i32 0, i32 20
  store i8 1, ptr %619, align 2, !tbaa !97
  %620 = load ptr, ptr %9, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.ImGuiWindow, ptr %620, i32 0, i32 28
  store i32 0, ptr %621, align 4, !tbaa !98
  %622 = load ptr, ptr %7, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.ImGuiContext, ptr %622, i32 0, i32 17
  %624 = load i32, ptr %623, align 8, !tbaa !99
  %625 = add nsw i32 %624, 1
  store i32 %625, ptr %623, align 8, !tbaa !99
  %626 = load ptr, ptr %9, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.ImGuiWindow, ptr %626, i32 0, i32 29
  store i32 %624, ptr %627, align 8, !tbaa !100
  %628 = load ptr, ptr %9, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.ImGuiWindow, ptr %628, i32 0, i32 30
  store i32 0, ptr %629, align 4, !tbaa !101
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #13
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %27, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull align 4 dereferenceable(16) %27)
  %630 = load ptr, ptr %9, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.ImGuiWindow, ptr %630, i32 0, i32 45
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %631, ptr align 4 %26, i64 16, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #13
  %632 = load i32, ptr %13, align 4, !tbaa !9
  %633 = load ptr, ptr %9, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.ImGuiWindow, ptr %633, i32 0, i32 50
  store i32 %632, ptr %634, align 8, !tbaa !63
  %635 = load ptr, ptr %9, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.ImGuiWindow, ptr %635, i32 0, i32 44
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %636, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  %637 = load ptr, ptr %9, align 8, !tbaa !5
  %638 = call <2 x float> @_ZL16CalcSizeContentsP11ImGuiWindow(ptr noundef %637)
  store <2 x float> %638, ptr %28, align 4
  %639 = load ptr, ptr %9, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.ImGuiWindow, ptr %639, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %640, ptr align 4 %28, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  %641 = load ptr, ptr %9, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.ImGuiWindow, ptr %641, i32 0, i32 37
  %643 = load i32, ptr %642, align 8, !tbaa !72
  %644 = icmp sgt i32 %643, 0
  br i1 %644, label %645, label %650

645:                                              ; preds = %617
  %646 = load ptr, ptr %9, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.ImGuiWindow, ptr %646, i32 0, i32 37
  %648 = load i32, ptr %647, align 8, !tbaa !72
  %649 = add nsw i32 %648, -1
  store i32 %649, ptr %647, align 8, !tbaa !72
  br label %650

650:                                              ; preds = %645, %617
  %651 = load i8, ptr %10, align 1, !tbaa !59, !range !55, !noundef !56
  %652 = trunc i8 %651 to i1
  br i1 %652, label %653, label %662

653:                                              ; preds = %650
  %654 = load i8, ptr %22, align 1, !tbaa !59, !range !55, !noundef !56
  %655 = trunc i8 %654 to i1
  br i1 %655, label %656, label %659

656:                                              ; preds = %653
  %657 = load i8, ptr %23, align 1, !tbaa !59, !range !55, !noundef !56
  %658 = trunc i8 %657 to i1
  br i1 %658, label %662, label %659

659:                                              ; preds = %656, %653
  %660 = load ptr, ptr %9, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.ImGuiWindow, ptr %660, i32 0, i32 37
  store i32 1, ptr %661, align 8, !tbaa !72
  br label %662

662:                                              ; preds = %659, %656, %650
  %663 = load i8, ptr %15, align 1, !tbaa !59, !range !55, !noundef !56
  %664 = trunc i8 %663 to i1
  br i1 %664, label %665, label %699

665:                                              ; preds = %662
  %666 = load i32, ptr %6, align 4, !tbaa !9
  %667 = and i32 %666, 100663296
  %668 = icmp ne i32 %667, 0
  br i1 %668, label %669, label %699

669:                                              ; preds = %665
  %670 = load ptr, ptr %9, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.ImGuiWindow, ptr %670, i32 0, i32 37
  store i32 1, ptr %671, align 8, !tbaa !72
  %672 = load i32, ptr %6, align 4, !tbaa !9
  %673 = and i32 %672, 64
  %674 = icmp ne i32 %673, 0
  br i1 %674, label %675, label %698

675:                                              ; preds = %669
  %676 = load i8, ptr %22, align 1, !tbaa !59, !range !55, !noundef !56
  %677 = trunc i8 %676 to i1
  br i1 %677, label %685, label %678

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

685:                                              ; preds = %678, %675
  %686 = load i8, ptr %23, align 1, !tbaa !59, !range !55, !noundef !56
  %687 = trunc i8 %686 to i1
  br i1 %687, label %695, label %688

688:                                              ; preds = %685
  %689 = load ptr, ptr %9, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.ImGuiWindow, ptr %689, i32 0, i32 5
  %691 = getelementptr inbounds %struct.ImVec2, ptr %690, i32 0, i32 1
  store float 0.000000e+00, ptr %691, align 4, !tbaa !105
  %692 = load ptr, ptr %9, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.ImGuiWindow, ptr %692, i32 0, i32 4
  %694 = getelementptr inbounds %struct.ImVec2, ptr %693, i32 0, i32 1
  store float 0.000000e+00, ptr %694, align 4, !tbaa !106
  br label %695

695:                                              ; preds = %688, %685
  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)
  %696 = load ptr, ptr %9, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.ImGuiWindow, ptr %696, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %697, ptr align 4 %29, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  br label %698

698:                                              ; preds = %695, %669
  br label %699

699:                                              ; preds = %698, %665, %662
  %700 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %700)
  %701 = load i32, ptr %6, align 4, !tbaa !9
  %702 = and i32 %701, 16777216
  %703 = icmp ne i32 %702, 0
  br i1 %703, label %704, label %708

704:                                              ; preds = %699
  %705 = load ptr, ptr %8, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.ImGuiStyle, ptr %705, i32 0, i32 7
  %707 = load float, ptr %706, align 4, !tbaa !107
  br label %726

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

712:                                              ; preds = %708
  %713 = load i32, ptr %6, align 4, !tbaa !9
  %714 = and i32 %713, 134217728
  %715 = icmp ne i32 %714, 0
  br i1 %715, label %720, label %716

716:                                              ; preds = %712
  %717 = load ptr, ptr %8, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.ImGuiStyle, ptr %717, i32 0, i32 9
  %719 = load float, ptr %718, align 4, !tbaa !108
  br label %724

720:                                              ; preds = %712, %708
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.ImGuiStyle, ptr %721, i32 0, i32 3
  %723 = load float, ptr %722, align 4, !tbaa !109
  br label %724

724:                                              ; preds = %720, %716
  %725 = phi float [ %719, %716 ], [ %723, %720 ]
  br label %726

726:                                              ; preds = %724, %704
  %727 = phi float [ %707, %704 ], [ %725, %724 ]
  %728 = load ptr, ptr %9, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.ImGuiWindow, ptr %728, i32 0, i32 11
  store float %727, ptr %729, align 4, !tbaa !110
  %730 = load ptr, ptr %8, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.ImGuiStyle, ptr %730, i32 0, i32 1
  %732 = load ptr, ptr %9, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.ImGuiWindow, ptr %732, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %733, ptr align 4 %731, i64 8, i1 false), !tbaa.struct !61
  %734 = load i32, ptr %6, align 4, !tbaa !9
  %735 = and i32 %734, 16777216
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %737, label %760

737:                                              ; preds = %726
  %738 = load i32, ptr %6, align 4, !tbaa !9
  %739 = and i32 %738, 67174400
  %740 = icmp ne i32 %739, 0
  br i1 %740, label %760, label %741

741:                                              ; preds = %737
  %742 = load ptr, ptr %9, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.ImGuiWindow, ptr %742, i32 0, i32 11
  %744 = load float, ptr %743, align 4, !tbaa !110
  %745 = fcmp oeq float %744, 0.000000e+00
  br i1 %745, label %746, label %760

746:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #13
  %747 = load i32, ptr %6, align 4, !tbaa !9
  %748 = and i32 %747, 1024
  %749 = icmp ne i32 %748, 0
  br i1 %749, label %750, label %755

750:                                              ; preds = %746
  %751 = load ptr, ptr %8, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.ImGuiStyle, ptr %751, i32 0, i32 1
  %753 = getelementptr inbounds %struct.ImVec2, ptr %752, i32 0, i32 1
  %754 = load float, ptr %753, align 4, !tbaa !111
  br label %756

755:                                              ; preds = %746
  br label %756

756:                                              ; preds = %755, %750
  %757 = phi float [ %754, %750 ], [ 0.000000e+00, %755 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef %757)
  %758 = load ptr, ptr %9, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.ImGuiWindow, ptr %758, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %759, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  br label %760

760:                                              ; preds = %756, %741, %737, %726
  %761 = load ptr, ptr %9, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.ImGuiWindow, ptr %761, i32 0, i32 9
  %763 = getelementptr inbounds %struct.ImVec2, ptr %762, i32 0, i32 0
  %764 = load float, ptr %763, align 8, !tbaa !112
  %765 = load ptr, ptr %8, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.ImGuiStyle, ptr %765, i32 0, i32 13
  %767 = getelementptr inbounds %struct.ImVec2, ptr %766, i32 0, i32 0
  %768 = load float, ptr %767, align 4, !tbaa !113
  %769 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %764, float noundef %768)
  %770 = load ptr, ptr %7, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.ImGuiContext, ptr %770, i32 0, i32 51
  %772 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %771, i32 0, i32 17
  %773 = getelementptr inbounds %struct.ImVec2, ptr %772, i32 0, i32 0
  %774 = load float, ptr %773, align 4, !tbaa !114
  %775 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %769, float noundef %774)
  %776 = load ptr, ptr %9, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.ImGuiWindow, ptr %776, i32 0, i32 43
  %778 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %777, i32 0, i32 22
  %779 = getelementptr inbounds %struct.ImVec2, ptr %778, i32 0, i32 0
  store float %775, ptr %779, align 4, !tbaa !115
  %780 = load ptr, ptr %7, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.ImGuiContext, ptr %780, i32 0, i32 51
  %782 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %781, i32 0, i32 17
  %783 = getelementptr inbounds %struct.ImVec2, ptr %782, i32 0, i32 1
  %784 = load float, ptr %783, align 4, !tbaa !116
  %785 = load ptr, ptr %9, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.ImGuiWindow, ptr %785, i32 0, i32 43
  %787 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %786, i32 0, i32 22
  %788 = getelementptr inbounds %struct.ImVec2, ptr %787, i32 0, i32 1
  store float %784, ptr %788, align 4, !tbaa !117
  %789 = load i32, ptr %6, align 4, !tbaa !9
  %790 = and i32 %789, 1
  %791 = icmp ne i32 %790, 0
  br i1 %791, label %849, label %792

792:                                              ; preds = %760
  %793 = load i32, ptr %6, align 4, !tbaa !9
  %794 = and i32 %793, 32
  %795 = icmp ne i32 %794, 0
  br i1 %795, label %849, label %796

796:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #13
  %797 = load ptr, ptr %9, align 8, !tbaa !5
  %798 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(976) %797)
  %799 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %31, i32 0, i32 0
  %800 = extractvalue { <2 x float>, <2 x float> } %798, 0
  store <2 x float> %800, ptr %799, align 4
  %801 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %31, i32 0, i32 1
  %802 = extractvalue { <2 x float>, <2 x float> } %798, 1
  store <2 x float> %802, ptr %801, align 4
  %803 = load ptr, ptr %7, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.ImGuiContext, ptr %803, i32 0, i32 20
  %805 = load ptr, ptr %804, align 8, !tbaa !118
  %806 = load ptr, ptr %9, align 8, !tbaa !5
  %807 = icmp eq ptr %805, %806
  br i1 %807, label %808, label %832

808:                                              ; preds = %796
  %809 = load ptr, ptr %7, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.ImGuiContext, ptr %809, i32 0, i32 22
  %811 = load i32, ptr %810, align 8, !tbaa !119
  %812 = icmp eq i32 %811, 0
  br i1 %812, label %813, label %832

813:                                              ; preds = %808
  %814 = load ptr, ptr %7, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.ImGuiContext, ptr %814, i32 0, i32 25
  %816 = load i32, ptr %815, align 8, !tbaa !120
  %817 = icmp eq i32 %816, 0
  br i1 %817, label %818, label %832

818:                                              ; preds = %813
  %819 = getelementptr inbounds %struct.ImRect, ptr %31, i32 0, i32 0
  %820 = getelementptr inbounds %struct.ImRect, ptr %31, i32 0, i32 1
  %821 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %819, ptr noundef nonnull align 4 dereferenceable(8) %820, i1 noundef zeroext true)
  br i1 %821, label %822, label %832

822:                                              ; preds = %818
  %823 = load ptr, ptr %7, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.ImGuiContext, ptr %823, i32 0, i32 3
  %825 = getelementptr inbounds %struct.ImGuiIO, ptr %824, i32 0, i32 57
  %826 = getelementptr inbounds [5 x i8], ptr %825, i64 0, i64 0
  %827 = load i8, ptr %826, align 1, !tbaa !59, !range !55, !noundef !56
  %828 = trunc i8 %827 to i1
  br i1 %828, label %829, label %832

829:                                              ; preds = %822
  %830 = load ptr, ptr %9, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.ImGuiWindow, ptr %830, i32 0, i32 24
  store i8 1, ptr %831, align 2, !tbaa !121
  br label %832

832:                                              ; preds = %829, %822, %818, %813, %808, %796
  %833 = load ptr, ptr %9, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.ImGuiWindow, ptr %833, i32 0, i32 24
  %835 = load i8, ptr %834, align 2, !tbaa !121, !range !55, !noundef !56
  %836 = trunc i8 %835 to i1
  br i1 %836, label %837, label %848

837:                                              ; preds = %832
  %838 = load ptr, ptr %9, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.ImGuiWindow, ptr %838, i32 0, i32 23
  %840 = load i8, ptr %839, align 1, !tbaa !122, !range !55, !noundef !56
  %841 = trunc i8 %840 to i1
  %842 = xor i1 %841, true
  %843 = load ptr, ptr %9, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.ImGuiWindow, ptr %843, i32 0, i32 23
  %845 = zext i1 %842 to i8
  store i8 %845, ptr %844, align 1, !tbaa !122
  %846 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %846)
  %847 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %847)
  br label %848

848:                                              ; preds = %837, %832
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #13
  br label %852

849:                                              ; preds = %792, %760
  %850 = load ptr, ptr %9, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.ImGuiWindow, ptr %850, i32 0, i32 23
  store i8 0, ptr %851, align 1, !tbaa !122
  br label %852

852:                                              ; preds = %849, %848
  %853 = load ptr, ptr %9, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.ImGuiWindow, ptr %853, i32 0, i32 24
  store i8 0, ptr %854, align 2, !tbaa !121
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %855 = load ptr, ptr %9, align 8, !tbaa !5
  %856 = load ptr, ptr %9, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.ImGuiWindow, ptr %856, i32 0, i32 7
  %858 = call <2 x float> @_ZL15CalcSizeAutoFitP11ImGuiWindowRK6ImVec2(ptr noundef %855, ptr noundef nonnull align 4 dereferenceable(8) %857)
  store <2 x float> %858, ptr %32, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %859 = load i32, ptr %6, align 4, !tbaa !9
  %860 = and i32 %859, 64
  %861 = icmp ne i32 %860, 0
  br i1 %861, label %862, label %888

862:                                              ; preds = %852
  %863 = load ptr, ptr %9, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.ImGuiWindow, ptr %863, i32 0, i32 23
  %865 = load i8, ptr %864, align 1, !tbaa !122, !range !55, !noundef !56
  %866 = trunc i8 %865 to i1
  br i1 %866, label %888, label %867

867:                                              ; preds = %862
  %868 = load i8, ptr %22, align 1, !tbaa !59, !range !55, !noundef !56
  %869 = trunc i8 %868 to i1
  br i1 %869, label %877, label %870

870:                                              ; preds = %867
  %871 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 0
  %872 = load float, ptr %871, align 4, !tbaa !123
  %873 = getelementptr inbounds %struct.ImVec2, ptr %33, i32 0, i32 0
  store float %872, ptr %873, align 4, !tbaa !123
  %874 = load ptr, ptr %9, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.ImGuiWindow, ptr %874, i32 0, i32 5
  %876 = getelementptr inbounds %struct.ImVec2, ptr %875, i32 0, i32 0
  store float %872, ptr %876, align 8, !tbaa !103
  br label %877

877:                                              ; preds = %870, %867
  %878 = load i8, ptr %23, align 1, !tbaa !59, !range !55, !noundef !56
  %879 = trunc i8 %878 to i1
  br i1 %879, label %887, label %880

880:                                              ; preds = %877
  %881 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 1
  %882 = load float, ptr %881, align 4, !tbaa !124
  %883 = getelementptr inbounds %struct.ImVec2, ptr %33, i32 0, i32 1
  store float %882, ptr %883, align 4, !tbaa !124
  %884 = load ptr, ptr %9, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.ImGuiWindow, ptr %884, i32 0, i32 5
  %886 = getelementptr inbounds %struct.ImVec2, ptr %885, i32 0, i32 1
  store float %882, ptr %886, align 4, !tbaa !105
  br label %887

887:                                              ; preds = %880, %877
  br label %967

888:                                              ; preds = %862, %852
  %889 = load ptr, ptr %9, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.ImGuiWindow, ptr %889, i32 0, i32 32
  %891 = load i32, ptr %890, align 4, !tbaa !125
  %892 = icmp sgt i32 %891, 0
  br i1 %892, label %898, label %893

893:                                              ; preds = %888
  %894 = load ptr, ptr %9, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.ImGuiWindow, ptr %894, i32 0, i32 33
  %896 = load i32, ptr %895, align 8, !tbaa !126
  %897 = icmp sgt i32 %896, 0
  br i1 %897, label %898, label %966

898:                                              ; preds = %893, %888
  %899 = load i8, ptr %22, align 1, !tbaa !59, !range !55, !noundef !56
  %900 = trunc i8 %899 to i1
  br i1 %900, label %928, label %901

901:                                              ; preds = %898
  %902 = load ptr, ptr %9, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.ImGuiWindow, ptr %902, i32 0, i32 32
  %904 = load i32, ptr %903, align 4, !tbaa !125
  %905 = icmp sgt i32 %904, 0
  br i1 %905, label %906, label %928

906:                                              ; preds = %901
  %907 = load ptr, ptr %9, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.ImGuiWindow, ptr %907, i32 0, i32 34
  %909 = load i8, ptr %908, align 4, !tbaa !127, !range !55, !noundef !56
  %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 !103
  %916 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 0
  %917 = load float, ptr %916, align 4, !tbaa !123
  %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 !123
  br label %922

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

928:                                              ; preds = %922, %901, %898
  %929 = load i8, ptr %23, align 1, !tbaa !59, !range !55, !noundef !56
  %930 = trunc i8 %929 to i1
  br i1 %930, label %958, label %931

931:                                              ; preds = %928
  %932 = load ptr, ptr %9, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.ImGuiWindow, ptr %932, i32 0, i32 33
  %934 = load i32, ptr %933, align 8, !tbaa !126
  %935 = icmp sgt i32 %934, 0
  br i1 %935, label %936, label %958

936:                                              ; preds = %931
  %937 = load ptr, ptr %9, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.ImGuiWindow, ptr %937, i32 0, i32 34
  %939 = load i8, ptr %938, align 4, !tbaa !127, !range !55, !noundef !56
  %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 !105
  %946 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 1
  %947 = load float, ptr %946, align 4, !tbaa !124
  %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 !124
  br label %952

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

958:                                              ; preds = %952, %931, %928
  %959 = load ptr, ptr %9, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.ImGuiWindow, ptr %959, i32 0, i32 23
  %961 = load i8, ptr %960, align 1, !tbaa !122, !range !55, !noundef !56
  %962 = trunc i8 %961 to i1
  br i1 %962, label %965, label %963

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

965:                                              ; preds = %963, %958
  br label %966

966:                                              ; preds = %965, %893
  br label %967

967:                                              ; preds = %966, %887
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %968 = load ptr, ptr %9, align 8, !tbaa !5
  %969 = load ptr, ptr %9, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.ImGuiWindow, ptr %969, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 8 %970, i64 8, i1 false), !tbaa.struct !61
  %971 = load <2 x float>, ptr %35, align 4
  %972 = call <2 x float> @_ZL23CalcSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %968, <2 x float> %971)
  store <2 x float> %972, ptr %34, align 4
  %973 = load ptr, ptr %9, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.ImGuiWindow, ptr %973, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %974, ptr align 4 %34, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #13
  %975 = load ptr, ptr %9, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.ImGuiWindow, ptr %975, i32 0, i32 23
  %977 = load i8, ptr %976, align 1, !tbaa !122, !range !55, !noundef !56
  %978 = trunc i8 %977 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #13
  br i1 %978, label %979, label %991

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

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

991:                                              ; preds = %979, %967
  %992 = load ptr, ptr %9, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImGuiWindow, ptr %992, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 8 %993, i64 8, i1 false), !tbaa.struct !61
  br label %994

994:                                              ; preds = %991, %983
  %995 = load ptr, ptr %9, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.ImGuiWindow, ptr %995, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %996, ptr align 4 %36, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  %997 = load ptr, ptr %9, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.ImGuiWindow, ptr %997, i32 0, i32 23
  %999 = load i8, ptr %998, align 1, !tbaa !122, !range !55, !noundef !56
  %1000 = trunc i8 %999 to i1
  br i1 %1000, label %1146, label %1001

1001:                                             ; preds = %994
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #13
  %1002 = getelementptr inbounds %struct.ImVec2, ptr %33, i32 0, i32 0
  %1003 = load float, ptr %1002, align 4, !tbaa !123
  %1004 = fcmp une float %1003, 0x47EFFFFFE0000000
  br i1 %1004, label %1005, label %1010

1005:                                             ; preds = %1001
  %1006 = load ptr, ptr %9, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.ImGuiWindow, ptr %1006, i32 0, i32 5
  %1008 = getelementptr inbounds %struct.ImVec2, ptr %1007, i32 0, i32 0
  %1009 = load float, ptr %1008, align 8, !tbaa !103
  br label %1015

1010:                                             ; preds = %1001
  %1011 = load ptr, ptr %9, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ImGuiWindow, ptr %1011, i32 0, i32 6
  %1013 = getelementptr inbounds %struct.ImVec2, ptr %1012, i32 0, i32 0
  %1014 = load float, ptr %1013, align 8, !tbaa !128
  br label %1015

1015:                                             ; preds = %1010, %1005
  %1016 = phi float [ %1009, %1005 ], [ %1014, %1010 ]
  store float %1016, ptr %38, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #13
  %1017 = getelementptr inbounds %struct.ImVec2, ptr %33, i32 0, i32 1
  %1018 = load float, ptr %1017, align 4, !tbaa !124
  %1019 = fcmp une float %1018, 0x47EFFFFFE0000000
  br i1 %1019, label %1020, label %1025

1020:                                             ; preds = %1015
  %1021 = load ptr, ptr %9, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.ImGuiWindow, ptr %1021, i32 0, i32 5
  %1023 = getelementptr inbounds %struct.ImVec2, ptr %1022, i32 0, i32 1
  %1024 = load float, ptr %1023, align 4, !tbaa !105
  br label %1030

1025:                                             ; preds = %1015
  %1026 = load ptr, ptr %9, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.ImGuiWindow, ptr %1026, i32 0, i32 6
  %1028 = getelementptr inbounds %struct.ImVec2, ptr %1027, i32 0, i32 1
  %1029 = load float, ptr %1028, align 4, !tbaa !129
  br label %1030

1030:                                             ; preds = %1025, %1020
  %1031 = phi float [ %1024, %1020 ], [ %1029, %1025 ]
  store float %1031, ptr %39, align 4, !tbaa !62
  %1032 = load i32, ptr %6, align 4, !tbaa !9
  %1033 = and i32 %1032, 16384
  %1034 = icmp ne i32 %1033, 0
  br i1 %1034, label %1049, label %1035

1035:                                             ; preds = %1030
  %1036 = load ptr, ptr %9, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.ImGuiWindow, ptr %1036, i32 0, i32 7
  %1038 = getelementptr inbounds %struct.ImVec2, ptr %1037, i32 0, i32 1
  %1039 = load float, ptr %1038, align 4, !tbaa !130
  %1040 = load float, ptr %39, align 4, !tbaa !62
  %1041 = fcmp ogt float %1039, %1040
  br i1 %1041, label %1042, label %1047

1042:                                             ; preds = %1035
  %1043 = load i32, ptr %6, align 4, !tbaa !9
  %1044 = and i32 %1043, 8
  %1045 = icmp ne i32 %1044, 0
  %1046 = xor i1 %1045, true
  br label %1047

1047:                                             ; preds = %1042, %1035
  %1048 = phi i1 [ false, %1035 ], [ %1046, %1042 ]
  br label %1049

1049:                                             ; preds = %1047, %1030
  %1050 = phi i1 [ true, %1030 ], [ %1048, %1047 ]
  %1051 = load ptr, ptr %9, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.ImGuiWindow, ptr %1051, i32 0, i32 19
  %1053 = zext i1 %1050 to i8
  store i8 %1053, ptr %1052, align 1, !tbaa !131
  %1054 = load i32, ptr %6, align 4, !tbaa !9
  %1055 = and i32 %1054, 32768
  %1056 = icmp ne i32 %1055, 0
  br i1 %1056, label %1086, label %1057

1057:                                             ; preds = %1049
  %1058 = load ptr, ptr %9, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.ImGuiWindow, ptr %1058, i32 0, i32 7
  %1060 = getelementptr inbounds %struct.ImVec2, ptr %1059, i32 0, i32 0
  %1061 = load float, ptr %1060, align 8, !tbaa !132
  %1062 = load float, ptr %38, align 4, !tbaa !62
  %1063 = load ptr, ptr %9, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.ImGuiWindow, ptr %1063, i32 0, i32 19
  %1065 = load i8, ptr %1064, align 1, !tbaa !131, !range !55, !noundef !56
  %1066 = trunc i8 %1065 to i1
  br i1 %1066, label %1067, label %1071

1067:                                             ; preds = %1057
  %1068 = load ptr, ptr %8, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.ImGuiStyle, ptr %1068, i32 0, i32 18
  %1070 = load float, ptr %1069, align 4, !tbaa !133
  br label %1072

1071:                                             ; preds = %1057
  br label %1072

1072:                                             ; preds = %1071, %1067
  %1073 = phi float [ %1070, %1067 ], [ 0.000000e+00, %1071 ]
  %1074 = fsub float %1062, %1073
  %1075 = fcmp ogt float %1061, %1074
  br i1 %1075, label %1076, label %1084

1076:                                             ; preds = %1072
  %1077 = load i32, ptr %6, align 4, !tbaa !9
  %1078 = and i32 %1077, 8
  %1079 = icmp ne i32 %1078, 0
  br i1 %1079, label %1084, label %1080

1080:                                             ; preds = %1076
  %1081 = load i32, ptr %6, align 4, !tbaa !9
  %1082 = and i32 %1081, 2048
  %1083 = icmp ne i32 %1082, 0
  br label %1084

1084:                                             ; preds = %1080, %1076, %1072
  %1085 = phi i1 [ false, %1076 ], [ false, %1072 ], [ %1083, %1080 ]
  br label %1086

1086:                                             ; preds = %1084, %1049
  %1087 = phi i1 [ true, %1049 ], [ %1085, %1084 ]
  %1088 = load ptr, ptr %9, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.ImGuiWindow, ptr %1088, i32 0, i32 18
  %1090 = zext i1 %1087 to i8
  store i8 %1090, ptr %1089, align 8, !tbaa !134
  %1091 = load ptr, ptr %9, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.ImGuiWindow, ptr %1091, i32 0, i32 18
  %1093 = load i8, ptr %1092, align 8, !tbaa !134, !range !55, !noundef !56
  %1094 = trunc i8 %1093 to i1
  br i1 %1094, label %1095, label %1121

1095:                                             ; preds = %1086
  %1096 = load ptr, ptr %9, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.ImGuiWindow, ptr %1096, i32 0, i32 19
  %1098 = load i8, ptr %1097, align 1, !tbaa !131, !range !55, !noundef !56
  %1099 = trunc i8 %1098 to i1
  br i1 %1099, label %1121, label %1100

1100:                                             ; preds = %1095
  %1101 = load ptr, ptr %9, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.ImGuiWindow, ptr %1101, i32 0, i32 7
  %1103 = getelementptr inbounds %struct.ImVec2, ptr %1102, i32 0, i32 1
  %1104 = load float, ptr %1103, align 4, !tbaa !130
  %1105 = load float, ptr %39, align 4, !tbaa !62
  %1106 = load ptr, ptr %8, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.ImGuiStyle, ptr %1106, i32 0, i32 18
  %1108 = load float, ptr %1107, align 4, !tbaa !133
  %1109 = fsub float %1105, %1108
  %1110 = fcmp ogt float %1104, %1109
  br i1 %1110, label %1111, label %1116

1111:                                             ; preds = %1100
  %1112 = load i32, ptr %6, align 4, !tbaa !9
  %1113 = and i32 %1112, 8
  %1114 = icmp ne i32 %1113, 0
  %1115 = xor i1 %1114, true
  br label %1116

1116:                                             ; preds = %1111, %1100
  %1117 = phi i1 [ false, %1100 ], [ %1115, %1111 ]
  %1118 = load ptr, ptr %9, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.ImGuiWindow, ptr %1118, i32 0, i32 19
  %1120 = zext i1 %1117 to i8
  store i8 %1120, ptr %1119, align 1, !tbaa !131
  br label %1121

1121:                                             ; preds = %1116, %1095, %1086
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  %1122 = load ptr, ptr %9, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.ImGuiWindow, ptr %1122, i32 0, i32 19
  %1124 = load i8, ptr %1123, align 1, !tbaa !131, !range !55, !noundef !56
  %1125 = trunc i8 %1124 to i1
  br i1 %1125, label %1126, label %1130

1126:                                             ; preds = %1121
  %1127 = load ptr, ptr %8, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.ImGuiStyle, ptr %1127, i32 0, i32 18
  %1129 = load float, ptr %1128, align 4, !tbaa !133
  br label %1131

1130:                                             ; preds = %1121
  br label %1131

1131:                                             ; preds = %1130, %1126
  %1132 = phi float [ %1129, %1126 ], [ 0.000000e+00, %1130 ]
  %1133 = load ptr, ptr %9, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.ImGuiWindow, ptr %1133, i32 0, i32 18
  %1135 = load i8, ptr %1134, align 8, !tbaa !134, !range !55, !noundef !56
  %1136 = trunc i8 %1135 to i1
  br i1 %1136, label %1137, label %1141

1137:                                             ; preds = %1131
  %1138 = load ptr, ptr %8, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.ImGuiStyle, ptr %1138, i32 0, i32 18
  %1140 = load float, ptr %1139, align 4, !tbaa !133
  br label %1142

1141:                                             ; preds = %1131
  br label %1142

1142:                                             ; preds = %1141, %1137
  %1143 = phi float [ %1140, %1137 ], [ 0.000000e+00, %1141 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef %1132, float noundef %1143)
  %1144 = load ptr, ptr %9, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.ImGuiWindow, ptr %1144, i32 0, i32 17
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1145, ptr align 4 %40, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #13
  br label %1146

1146:                                             ; preds = %1142, %994
  %1147 = load i8, ptr %15, align 1, !tbaa !59, !range !55, !noundef !56
  %1148 = trunc i8 %1147 to i1
  br i1 %1148, label %1149, label %1166

1149:                                             ; preds = %1146
  %1150 = load ptr, ptr %9, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.ImGuiWindow, ptr %1150, i32 0, i32 36
  store i32 -1, ptr %1151, align 4, !tbaa !135
  %1152 = load i32, ptr %6, align 4, !tbaa !9
  %1153 = and i32 %1152, 67108864
  %1154 = icmp ne i32 %1153, 0
  br i1 %1154, label %1155, label %1165

1155:                                             ; preds = %1149
  %1156 = load i8, ptr %21, align 1, !tbaa !59, !range !55, !noundef !56
  %1157 = trunc i8 %1156 to i1
  br i1 %1157, label %1165, label %1158

1158:                                             ; preds = %1155
  %1159 = load ptr, ptr %7, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.ImGuiContext, ptr %1159, i32 0, i32 50
  %1161 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1160)
  %1162 = getelementptr inbounds %struct.ImGuiPopupRef, ptr %1161, i32 0, i32 5
  %1163 = load ptr, ptr %9, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.ImGuiWindow, ptr %1163, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1164, ptr align 8 %1162, i64 8, i1 false), !tbaa.struct !61
  br label %1165

1165:                                             ; preds = %1158, %1155, %1149
  br label %1166

1166:                                             ; preds = %1165, %1146
  %1167 = load i32, ptr %6, align 4, !tbaa !9
  %1168 = and i32 %1167, 16777216
  %1169 = icmp ne i32 %1168, 0
  br i1 %1169, label %1170, label %1197

1170:                                             ; preds = %1166
  %1171 = load ptr, ptr %19, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.ImGuiWindow, ptr %1171, i32 0, i32 43
  %1173 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1172, i32 0, i32 23
  %1174 = getelementptr inbounds %class.ImVector, ptr %1173, i32 0, i32 0
  %1175 = load i32, ptr %1174, align 8, !tbaa !136
  %1176 = load ptr, ptr %9, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.ImGuiWindow, ptr %1176, i32 0, i32 28
  store i32 %1175, ptr %1177, align 4, !tbaa !98
  %1178 = load ptr, ptr %19, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.ImGuiWindow, ptr %1178, i32 0, i32 43
  %1180 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1179, i32 0, i32 23
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1180, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %1181 = load i32, ptr %6, align 4, !tbaa !9
  %1182 = and i32 %1181, 67108864
  %1183 = icmp ne i32 %1182, 0
  br i1 %1183, label %1196, label %1184

1184:                                             ; preds = %1170
  %1185 = load i8, ptr %21, align 1, !tbaa !59, !range !55, !noundef !56
  %1186 = trunc i8 %1185 to i1
  br i1 %1186, label %1196, label %1187

1187:                                             ; preds = %1184
  %1188 = load i8, ptr %25, align 1, !tbaa !59, !range !55, !noundef !56
  %1189 = trunc i8 %1188 to i1
  br i1 %1189, label %1196, label %1190

1190:                                             ; preds = %1187
  %1191 = load ptr, ptr %19, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.ImGuiWindow, ptr %1191, i32 0, i32 43
  %1193 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1192, i32 0, i32 0
  %1194 = load ptr, ptr %9, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.ImGuiWindow, ptr %1194, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1195, ptr align 8 %1193, i64 8, i1 false), !tbaa.struct !61
  br label %1196

1196:                                             ; preds = %1190, %1187, %1184, %1170
  br label %1197

1197:                                             ; preds = %1196, %1166
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #13
  %1198 = load ptr, ptr %9, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.ImGuiWindow, ptr %1198, i32 0, i32 41
  %1200 = getelementptr inbounds %struct.ImVec2, ptr %1199, i32 0, i32 0
  %1201 = load float, ptr %1200, align 8, !tbaa !137
  %1202 = fcmp une float %1201, 0x47EFFFFFE0000000
  br i1 %1202, label %1203, label %1208

1203:                                             ; preds = %1197
  %1204 = load ptr, ptr %9, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.ImGuiWindow, ptr %1204, i32 0, i32 37
  %1206 = load i32, ptr %1205, align 8, !tbaa !72
  %1207 = icmp eq i32 %1206, 0
  br label %1208

1208:                                             ; preds = %1203, %1197
  %1209 = phi i1 [ false, %1197 ], [ %1207, %1203 ]
  %1210 = zext i1 %1209 to i8
  store i8 %1210, ptr %41, align 1, !tbaa !59
  %1211 = load i8, ptr %41, align 1, !tbaa !59, !range !55, !noundef !56
  %1212 = trunc i8 %1211 to i1
  br i1 %1212, label %1213, label %1226

1213:                                             ; preds = %1208
  %1214 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #13
  %1215 = load ptr, ptr %8, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.ImGuiStyle, ptr %1215, i32 0, i32 24
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %1217 = load ptr, ptr %9, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.ImGuiWindow, ptr %1217, i32 0, i32 41
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %1219 = load ptr, ptr %9, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.ImGuiWindow, ptr %1219, i32 0, i32 5
  %1221 = load ptr, ptr %9, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.ImGuiWindow, ptr %1221, i32 0, i32 42
  %1223 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1220, ptr noundef nonnull align 4 dereferenceable(8) %1222)
  store <2 x float> %1223, ptr %44, align 4
  %1224 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1218, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %1224, ptr %43, align 4
  %1225 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1216, ptr noundef nonnull align 4 dereferenceable(8) %43)
  store <2 x float> %1225, ptr %42, align 4
  call void @_ZL12SetWindowPosP11ImGuiWindowRK6ImVec2i(ptr noundef %1214, ptr noundef nonnull align 4 dereferenceable(8) %42, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #13
  br label %1268

1226:                                             ; preds = %1208
  %1227 = load i32, ptr %6, align 4, !tbaa !9
  %1228 = and i32 %1227, 268435456
  %1229 = icmp ne i32 %1228, 0
  br i1 %1229, label %1230, label %1235

1230:                                             ; preds = %1226
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #13
  %1231 = load ptr, ptr %9, align 8, !tbaa !5
  %1232 = call <2 x float> @_ZL25FindBestWindowPosForPopupP11ImGuiWindow(ptr noundef %1231)
  store <2 x float> %1232, ptr %45, align 4
  %1233 = load ptr, ptr %9, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.ImGuiWindow, ptr %1233, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1234, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #13
  br label %1267

1235:                                             ; preds = %1226
  %1236 = load i32, ptr %6, align 4, !tbaa !9
  %1237 = and i32 %1236, 67108864
  %1238 = icmp ne i32 %1237, 0
  br i1 %1238, label %1239, label %1250

1239:                                             ; preds = %1235
  %1240 = load i8, ptr %21, align 1, !tbaa !59, !range !55, !noundef !56
  %1241 = trunc i8 %1240 to i1
  br i1 %1241, label %1250, label %1242

1242:                                             ; preds = %1239
  %1243 = load i8, ptr %16, align 1, !tbaa !59, !range !55, !noundef !56
  %1244 = trunc i8 %1243 to i1
  br i1 %1244, label %1245, label %1250

1245:                                             ; preds = %1242
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #13
  %1246 = load ptr, ptr %9, align 8, !tbaa !5
  %1247 = call <2 x float> @_ZL25FindBestWindowPosForPopupP11ImGuiWindow(ptr noundef %1246)
  store <2 x float> %1247, ptr %46, align 4
  %1248 = load ptr, ptr %9, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.ImGuiWindow, ptr %1248, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1249, ptr align 4 %46, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  br label %1266

1250:                                             ; preds = %1242, %1239, %1235
  %1251 = load i32, ptr %6, align 4, !tbaa !9
  %1252 = and i32 %1251, 33554432
  %1253 = icmp ne i32 %1252, 0
  br i1 %1253, label %1254, label %1265

1254:                                             ; preds = %1250
  %1255 = load i8, ptr %21, align 1, !tbaa !59, !range !55, !noundef !56
  %1256 = trunc i8 %1255 to i1
  br i1 %1256, label %1265, label %1257

1257:                                             ; preds = %1254
  %1258 = load i8, ptr %25, align 1, !tbaa !59, !range !55, !noundef !56
  %1259 = trunc i8 %1258 to i1
  br i1 %1259, label %1265, label %1260

1260:                                             ; preds = %1257
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  %1261 = load ptr, ptr %9, align 8, !tbaa !5
  %1262 = call <2 x float> @_ZL25FindBestWindowPosForPopupP11ImGuiWindow(ptr noundef %1261)
  store <2 x float> %1262, ptr %47, align 4
  %1263 = load ptr, ptr %9, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.ImGuiWindow, ptr %1263, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1264, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  br label %1265

1265:                                             ; preds = %1260, %1257, %1254, %1250
  br label %1266

1266:                                             ; preds = %1265, %1245
  br label %1267

1267:                                             ; preds = %1266, %1230
  br label %1268

1268:                                             ; preds = %1267, %1213
  %1269 = load i32, ptr %6, align 4, !tbaa !9
  %1270 = and i32 %1269, 16777216
  %1271 = icmp ne i32 %1270, 0
  br i1 %1271, label %1326, label %1272

1272:                                             ; preds = %1268
  %1273 = load i8, ptr %21, align 1, !tbaa !59, !range !55, !noundef !56
  %1274 = trunc i8 %1273 to i1
  br i1 %1274, label %1325, label %1275

1275:                                             ; preds = %1272
  %1276 = load ptr, ptr %9, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.ImGuiWindow, ptr %1276, i32 0, i32 32
  %1278 = load i32, ptr %1277, align 4, !tbaa !125
  %1279 = icmp sle i32 %1278, 0
  br i1 %1279, label %1280, label %1325

1280:                                             ; preds = %1275
  %1281 = load ptr, ptr %9, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.ImGuiWindow, ptr %1281, i32 0, i32 33
  %1283 = load i32, ptr %1282, align 8, !tbaa !126
  %1284 = icmp sle i32 %1283, 0
  br i1 %1284, label %1285, label %1325

1285:                                             ; preds = %1280
  %1286 = load ptr, ptr %7, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.ImGuiContext, ptr %1286, i32 0, i32 3
  %1288 = getelementptr inbounds %struct.ImGuiIO, ptr %1287, i32 0, i32 2
  %1289 = getelementptr inbounds %struct.ImVec2, ptr %1288, i32 0, i32 0
  %1290 = load float, ptr %1289, align 8, !tbaa !138
  %1291 = fcmp ogt float %1290, 0.000000e+00
  br i1 %1291, label %1292, label %1325

1292:                                             ; preds = %1285
  %1293 = load ptr, ptr %7, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.ImGuiContext, ptr %1293, i32 0, i32 3
  %1295 = getelementptr inbounds %struct.ImGuiIO, ptr %1294, i32 0, i32 2
  %1296 = getelementptr inbounds %struct.ImVec2, ptr %1295, i32 0, i32 1
  %1297 = load float, ptr %1296, align 4, !tbaa !139
  %1298 = fcmp ogt float %1297, 0.000000e+00
  br i1 %1298, label %1299, label %1325

1299:                                             ; preds = %1292
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #13
  %1300 = load ptr, ptr %8, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.ImGuiStyle, ptr %1300, i32 0, i32 23
  %1302 = load ptr, ptr %8, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.ImGuiStyle, ptr %1302, i32 0, i32 24
  %1304 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1301, ptr noundef nonnull align 4 dereferenceable(8) %1303)
  store <2 x float> %1304, ptr %48, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #13
  %1305 = load ptr, ptr %9, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.ImGuiWindow, ptr %1305, i32 0, i32 3
  %1307 = load ptr, ptr %9, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.ImGuiWindow, ptr %1307, i32 0, i32 4
  %1309 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1306, ptr noundef nonnull align 4 dereferenceable(8) %1308)
  store <2 x float> %1309, ptr %51, align 4
  %1310 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %51, ptr noundef nonnull align 4 dereferenceable(8) %48)
  store <2 x float> %1310, ptr %50, align 4
  %1311 = load ptr, ptr %9, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.ImGuiWindow, ptr %1311, i32 0, i32 4
  %1313 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %50, ptr noundef nonnull align 4 dereferenceable(8) %1312)
  store <2 x float> %1313, ptr %49, align 4
  %1314 = load ptr, ptr %9, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.ImGuiWindow, ptr %1314, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1315, ptr align 4 %49, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #13
  %1316 = load ptr, ptr %9, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.ImGuiWindow, ptr %1316, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #13
  %1318 = load ptr, ptr %7, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.ImGuiContext, ptr %1318, i32 0, i32 3
  %1320 = getelementptr inbounds %struct.ImGuiIO, ptr %1319, i32 0, i32 2
  %1321 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1320, ptr noundef nonnull align 4 dereferenceable(8) %48)
  store <2 x float> %1321, ptr %53, align 4
  %1322 = call <2 x float> @_ZL5ImMinRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1317, ptr noundef nonnull align 4 dereferenceable(8) %53)
  store <2 x float> %1322, ptr %52, align 4
  %1323 = load ptr, ptr %9, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiWindow, ptr %1323, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1324, ptr align 4 %52, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #13
  br label %1325

1325:                                             ; preds = %1299, %1292, %1285, %1280, %1275, %1272
  br label %1326

1326:                                             ; preds = %1325, %1268
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #13
  %1327 = load ptr, ptr %9, align 8, !tbaa !5
  %1328 = getelementptr inbounds %struct.ImGuiWindow, ptr %1327, i32 0, i32 3
  %1329 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1328)
  store <2 x float> %1329, ptr %54, align 4
  %1330 = load ptr, ptr %9, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.ImGuiWindow, ptr %1330, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1331, ptr align 4 %54, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #13
  %1332 = load i32, ptr %6, align 4, !tbaa !9
  %1333 = and i32 %1332, 16777216
  %1334 = icmp ne i32 %1333, 0
  br i1 %1334, label %1335, label %1339

1335:                                             ; preds = %1326
  %1336 = load ptr, ptr %8, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.ImGuiStyle, ptr %1336, i32 0, i32 6
  %1338 = load float, ptr %1337, align 4, !tbaa !140
  br label %1357

1339:                                             ; preds = %1326
  %1340 = load i32, ptr %6, align 4, !tbaa !9
  %1341 = and i32 %1340, 67108864
  %1342 = icmp ne i32 %1341, 0
  br i1 %1342, label %1343, label %1351

1343:                                             ; preds = %1339
  %1344 = load i32, ptr %6, align 4, !tbaa !9
  %1345 = and i32 %1344, 134217728
  %1346 = icmp ne i32 %1345, 0
  br i1 %1346, label %1351, label %1347

1347:                                             ; preds = %1343
  %1348 = load ptr, ptr %8, align 8, !tbaa !5
  %1349 = getelementptr inbounds %struct.ImGuiStyle, ptr %1348, i32 0, i32 8
  %1350 = load float, ptr %1349, align 4, !tbaa !141
  br label %1355

1351:                                             ; preds = %1343, %1339
  %1352 = load ptr, ptr %8, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.ImGuiStyle, ptr %1352, i32 0, i32 2
  %1354 = load float, ptr %1353, align 4, !tbaa !142
  br label %1355

1355:                                             ; preds = %1351, %1347
  %1356 = phi float [ %1350, %1347 ], [ %1354, %1351 ]
  br label %1357

1357:                                             ; preds = %1355, %1335
  %1358 = phi float [ %1338, %1335 ], [ %1356, %1355 ]
  %1359 = load ptr, ptr %9, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.ImGuiWindow, ptr %1359, i32 0, i32 10
  store float %1358, ptr %1360, align 8, !tbaa !143
  %1361 = load ptr, ptr %9, align 8, !tbaa !5
  %1362 = getelementptr inbounds %struct.ImGuiWindow, ptr %1361, i32 0, i32 71
  %1363 = load i32, ptr %1362, align 8, !tbaa !144
  %1364 = icmp eq i32 %1363, 2147483647
  br i1 %1364, label %1370, label %1365

1365:                                             ; preds = %1357
  %1366 = load ptr, ptr %9, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.ImGuiWindow, ptr %1366, i32 0, i32 67
  %1368 = load i32, ptr %1367, align 8, !tbaa !145
  %1369 = icmp eq i32 %1368, -1
  br i1 %1369, label %1370, label %1371

1370:                                             ; preds = %1365, %1357
  br label %1385

1371:                                             ; preds = %1365
  %1372 = load ptr, ptr %9, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.ImGuiWindow, ptr %1372, i32 0, i32 71
  %1374 = load i32, ptr %1373, align 8, !tbaa !144
  %1375 = load ptr, ptr %9, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.ImGuiWindow, ptr %1375, i32 0, i32 67
  %1377 = load i32, ptr %1376, align 8, !tbaa !145
  %1378 = add nsw i32 %1377, 1
  %1379 = add nsw i32 %1374, %1378
  %1380 = load ptr, ptr %9, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.ImGuiWindow, ptr %1380, i32 0, i32 67
  %1382 = load i32, ptr %1381, align 8, !tbaa !145
  %1383 = add nsw i32 %1382, 1
  %1384 = srem i32 %1379, %1383
  br label %1385

1385:                                             ; preds = %1371, %1370
  %1386 = phi i32 [ 2147483647, %1370 ], [ %1384, %1371 ]
  %1387 = load ptr, ptr %9, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.ImGuiWindow, ptr %1387, i32 0, i32 69
  store i32 %1386, ptr %1388, align 8, !tbaa !146
  %1389 = load ptr, ptr %9, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.ImGuiWindow, ptr %1389, i32 0, i32 72
  %1391 = load i32, ptr %1390, align 4, !tbaa !147
  %1392 = icmp eq i32 %1391, 2147483647
  br i1 %1392, label %1398, label %1393

1393:                                             ; preds = %1385
  %1394 = load ptr, ptr %9, align 8, !tbaa !5
  %1395 = getelementptr inbounds %struct.ImGuiWindow, ptr %1394, i32 0, i32 68
  %1396 = load i32, ptr %1395, align 4, !tbaa !148
  %1397 = icmp eq i32 %1396, -1
  br i1 %1397, label %1398, label %1399

1398:                                             ; preds = %1393, %1385
  br label %1413

1399:                                             ; preds = %1393
  %1400 = load ptr, ptr %9, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.ImGuiWindow, ptr %1400, i32 0, i32 72
  %1402 = load i32, ptr %1401, align 4, !tbaa !147
  %1403 = load ptr, ptr %9, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.ImGuiWindow, ptr %1403, i32 0, i32 68
  %1405 = load i32, ptr %1404, align 4, !tbaa !148
  %1406 = add nsw i32 %1405, 1
  %1407 = add nsw i32 %1402, %1406
  %1408 = load ptr, ptr %9, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct.ImGuiWindow, ptr %1408, i32 0, i32 68
  %1410 = load i32, ptr %1409, align 4, !tbaa !148
  %1411 = add nsw i32 %1410, 1
  %1412 = srem i32 %1407, %1411
  br label %1413

1413:                                             ; preds = %1399, %1398
  %1414 = phi i32 [ 2147483647, %1398 ], [ %1412, %1399 ]
  %1415 = load ptr, ptr %9, align 8, !tbaa !5
  %1416 = getelementptr inbounds %struct.ImGuiWindow, ptr %1415, i32 0, i32 70
  store i32 %1414, ptr %1416, align 4, !tbaa !149
  %1417 = load ptr, ptr %9, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.ImGuiWindow, ptr %1417, i32 0, i32 68
  store i32 -1, ptr %1418, align 4, !tbaa !148
  %1419 = load ptr, ptr %9, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.ImGuiWindow, ptr %1419, i32 0, i32 67
  store i32 -1, ptr %1420, align 8, !tbaa !145
  %1421 = load ptr, ptr %9, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.ImGuiWindow, ptr %1421, i32 0, i32 72
  store i32 2147483647, ptr %1422, align 4, !tbaa !147
  %1423 = load ptr, ptr %9, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.ImGuiWindow, ptr %1423, i32 0, i32 71
  store i32 2147483647, ptr %1424, align 8, !tbaa !144
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #13
  %1425 = load ptr, ptr %9, align 8, !tbaa !5
  %1426 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef %1425, i1 noundef zeroext true)
  store <2 x float> %1426, ptr %55, align 4
  %1427 = load ptr, ptr %9, align 8, !tbaa !5
  %1428 = getelementptr inbounds %struct.ImGuiWindow, ptr %1427, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1428, ptr align 4 %55, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %56, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %1429 = load ptr, ptr %9, align 8, !tbaa !5
  %1430 = getelementptr inbounds %struct.ImGuiWindow, ptr %1429, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1430, ptr align 4 %56, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #13
  store i8 0, ptr %57, align 1, !tbaa !59
  %1431 = load i8, ptr %15, align 1, !tbaa !59, !range !55, !noundef !56
  %1432 = trunc i8 %1431 to i1
  br i1 %1432, label %1433, label %1447

1433:                                             ; preds = %1413
  %1434 = load i32, ptr %6, align 4, !tbaa !9
  %1435 = and i32 %1434, 4096
  %1436 = icmp ne i32 %1435, 0
  br i1 %1436, label %1447, label %1437

1437:                                             ; preds = %1433
  %1438 = load i32, ptr %6, align 4, !tbaa !9
  %1439 = and i32 %1438, 50331648
  %1440 = icmp ne i32 %1439, 0
  br i1 %1440, label %1441, label %1445

1441:                                             ; preds = %1437
  %1442 = load i32, ptr %6, align 4, !tbaa !9
  %1443 = and i32 %1442, 67108864
  %1444 = icmp ne i32 %1443, 0
  br i1 %1444, label %1445, label %1446

1445:                                             ; preds = %1441, %1437
  store i8 1, ptr %57, align 1, !tbaa !59
  br label %1446

1446:                                             ; preds = %1445, %1441
  br label %1447

1447:                                             ; preds = %1446, %1433, %1413
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #13
  store i32 -1, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #13
  call void @llvm.memset.p0.i64(ptr align 16 %59, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #13
  %1448 = load i32, ptr %6, align 4, !tbaa !9
  %1449 = and i32 %1448, 131072
  %1450 = icmp ne i32 %1449, 0
  %1451 = zext i1 %1450 to i64
  %1452 = select i1 %1450, i32 2, i32 1
  store i32 %1452, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  %1453 = load ptr, ptr %7, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.ImGuiContext, ptr %1453, i32 0, i32 6
  %1455 = load float, ptr %1454, align 8, !tbaa !150
  %1456 = fmul float %1455, 0x3FF59999A0000000
  %1457 = load ptr, ptr %9, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.ImGuiWindow, ptr %1457, i32 0, i32 10
  %1459 = load float, ptr %1458, align 8, !tbaa !143
  %1460 = fadd float %1459, 1.000000e+00
  %1461 = load ptr, ptr %7, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.ImGuiContext, ptr %1461, i32 0, i32 6
  %1463 = load float, ptr %1462, align 8, !tbaa !150
  %1464 = call float @llvm.fmuladd.f32(float %1463, float 0x3FC99999A0000000, float %1460)
  %1465 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1456, float noundef %1464)
  %1466 = fptosi float %1465 to i32
  %1467 = sitofp i32 %1466 to float
  store float %1467, ptr %61, align 4, !tbaa !62
  %1468 = load ptr, ptr %9, align 8, !tbaa !5
  %1469 = getelementptr inbounds %struct.ImGuiWindow, ptr %1468, i32 0, i32 23
  %1470 = load i8, ptr %1469, align 1, !tbaa !122, !range !55, !noundef !56
  %1471 = trunc i8 %1470 to i1
  br i1 %1471, label %1476, label %1472

1472:                                             ; preds = %1447
  %1473 = load ptr, ptr %9, align 8, !tbaa !5
  %1474 = load i32, ptr %60, align 4, !tbaa !9
  %1475 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @_ZN5ImGuiL18UpdateManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(ptr noundef %1473, ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef %58, i32 noundef %1474, ptr noundef %1475)
  br label %1476

1476:                                             ; preds = %1472, %1447
  %1477 = load ptr, ptr %9, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.ImGuiWindow, ptr %1477, i32 0, i32 4
  %1479 = getelementptr inbounds %struct.ImVec2, ptr %1478, i32 0, i32 0
  %1480 = load float, ptr %1479, align 8, !tbaa !104
  %1481 = fcmp ogt float %1480, 0.000000e+00
  br i1 %1481, label %1482, label %1500

1482:                                             ; preds = %1476
  %1483 = load i32, ptr %6, align 4, !tbaa !9
  %1484 = and i32 %1483, 33554432
  %1485 = icmp ne i32 %1484, 0
  br i1 %1485, label %1500, label %1486

1486:                                             ; preds = %1482
  %1487 = load i32, ptr %6, align 4, !tbaa !9
  %1488 = and i32 %1487, 64
  %1489 = icmp ne i32 %1488, 0
  br i1 %1489, label %1500, label %1490

1490:                                             ; preds = %1486
  %1491 = load ptr, ptr %9, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.ImGuiWindow, ptr %1491, i32 0, i32 4
  %1493 = getelementptr inbounds %struct.ImVec2, ptr %1492, i32 0, i32 0
  %1494 = load float, ptr %1493, align 8, !tbaa !104
  %1495 = fmul float %1494, 0x3FE4CCCCC0000000
  %1496 = fptosi float %1495 to i32
  %1497 = sitofp i32 %1496 to float
  %1498 = load ptr, ptr %9, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.ImGuiWindow, ptr %1498, i32 0, i32 51
  store float %1497, ptr %1499, align 4, !tbaa !151
  br label %1509

1500:                                             ; preds = %1486, %1482, %1476
  %1501 = load ptr, ptr %7, align 8, !tbaa !5
  %1502 = getelementptr inbounds %struct.ImGuiContext, ptr %1501, i32 0, i32 6
  %1503 = load float, ptr %1502, align 8, !tbaa !150
  %1504 = fmul float %1503, 1.600000e+01
  %1505 = fptosi float %1504 to i32
  %1506 = sitofp i32 %1505 to float
  %1507 = load ptr, ptr %9, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.ImGuiWindow, ptr %1507, i32 0, i32 51
  store float %1506, ptr %1508, align 4, !tbaa !151
  br label %1509

1509:                                             ; preds = %1500, %1490
  %1510 = load ptr, ptr %9, align 8, !tbaa !5
  %1511 = getelementptr inbounds %struct.ImGuiWindow, ptr %1510, i32 0, i32 57
  %1512 = load ptr, ptr %1511, align 8, !tbaa !152
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168) %1512)
  %1513 = load ptr, ptr %7, align 8, !tbaa !5
  %1514 = getelementptr inbounds %struct.ImGuiContext, ptr %1513, i32 0, i32 4
  %1515 = getelementptr inbounds %struct.ImGuiStyle, ptr %1514, i32 0, i32 26
  %1516 = load i8, ptr %1515, align 8, !tbaa !153, !range !55, !noundef !56
  %1517 = trunc i8 %1516 to i1
  %1518 = zext i1 %1517 to i64
  %1519 = select i1 %1517, i32 1, i32 0
  %1520 = load ptr, ptr %7, align 8, !tbaa !5
  %1521 = getelementptr inbounds %struct.ImGuiContext, ptr %1520, i32 0, i32 4
  %1522 = getelementptr inbounds %struct.ImGuiStyle, ptr %1521, i32 0, i32 27
  %1523 = load i8, ptr %1522, align 1, !tbaa !154, !range !55, !noundef !56
  %1524 = trunc i8 %1523 to i1
  %1525 = zext i1 %1524 to i64
  %1526 = select i1 %1524, i32 2, i32 0
  %1527 = or i32 %1519, %1526
  %1528 = load ptr, ptr %9, align 8, !tbaa !5
  %1529 = getelementptr inbounds %struct.ImGuiWindow, ptr %1528, i32 0, i32 57
  %1530 = load ptr, ptr %1529, align 8, !tbaa !152
  %1531 = getelementptr inbounds %struct.ImDrawList, ptr %1530, i32 0, i32 3
  store i32 %1527, ptr %1531, align 8, !tbaa !155
  %1532 = load ptr, ptr %9, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.ImGuiWindow, ptr %1532, i32 0, i32 57
  %1534 = load ptr, ptr %1533, align 8, !tbaa !152
  %1535 = load ptr, ptr %7, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct.ImGuiContext, ptr %1535, i32 0, i32 5
  %1537 = load ptr, ptr %1536, align 8, !tbaa !156
  %1538 = getelementptr inbounds %struct.ImFont, ptr %1537, i32 0, i32 11
  %1539 = load ptr, ptr %1538, align 8, !tbaa !157
  %1540 = getelementptr inbounds %struct.ImFontAtlas, ptr %1539, i32 0, i32 2
  %1541 = load ptr, ptr %1540, align 8, !tbaa !158
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %1534, ptr noundef %1541)
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #13
  %1542 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %1543 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %62, i32 0, i32 0
  %1544 = extractvalue { <2 x float>, <2 x float> } %1542, 0
  store <2 x float> %1544, ptr %1543, align 4
  %1545 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %62, i32 0, i32 1
  %1546 = extractvalue { <2 x float>, <2 x float> } %1542, 1
  store <2 x float> %1546, ptr %1545, align 4
  %1547 = load i32, ptr %6, align 4, !tbaa !9
  %1548 = and i32 %1547, 16777216
  %1549 = icmp ne i32 %1548, 0
  br i1 %1549, label %1550, label %1564

1550:                                             ; preds = %1509
  %1551 = load i32, ptr %6, align 4, !tbaa !9
  %1552 = and i32 %1551, 67108864
  %1553 = icmp ne i32 %1552, 0
  br i1 %1553, label %1564, label %1554

1554:                                             ; preds = %1550
  %1555 = load i8, ptr %25, align 1, !tbaa !59, !range !55, !noundef !56
  %1556 = trunc i8 %1555 to i1
  br i1 %1556, label %1564, label %1557

1557:                                             ; preds = %1554
  %1558 = load ptr, ptr %19, align 8, !tbaa !5
  %1559 = getelementptr inbounds %struct.ImGuiWindow, ptr %1558, i32 0, i32 45
  %1560 = getelementptr inbounds %struct.ImRect, ptr %1559, i32 0, i32 0
  %1561 = load ptr, ptr %19, align 8, !tbaa !5
  %1562 = getelementptr inbounds %struct.ImGuiWindow, ptr %1561, i32 0, i32 45
  %1563 = getelementptr inbounds %struct.ImRect, ptr %1562, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1560, ptr noundef nonnull align 4 dereferenceable(8) %1563, i1 noundef zeroext true)
  br label %1567

1564:                                             ; preds = %1554, %1550, %1509
  %1565 = getelementptr inbounds %struct.ImRect, ptr %62, i32 0, i32 0
  %1566 = getelementptr inbounds %struct.ImRect, ptr %62, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1565, ptr noundef nonnull align 4 dereferenceable(8) %1566, i1 noundef zeroext true)
  br label %1567

1567:                                             ; preds = %1564, %1557
  %1568 = load i32, ptr %6, align 4, !tbaa !9
  %1569 = and i32 %1568, 134217728
  %1570 = icmp ne i32 %1569, 0
  br i1 %1570, label %1571, label %1585

1571:                                             ; preds = %1567
  %1572 = load ptr, ptr %9, align 8, !tbaa !5
  %1573 = call noundef ptr @_ZN5ImGui22GetFrontMostPopupModalEv()
  %1574 = icmp eq ptr %1572, %1573
  br i1 %1574, label %1575, label %1585

1575:                                             ; preds = %1571
  %1576 = load ptr, ptr %9, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct.ImGuiWindow, ptr %1576, i32 0, i32 57
  %1578 = load ptr, ptr %1577, align 8, !tbaa !152
  %1579 = getelementptr inbounds %struct.ImRect, ptr %62, i32 0, i32 0
  %1580 = getelementptr inbounds %struct.ImRect, ptr %62, i32 0, i32 1
  %1581 = load ptr, ptr %7, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.ImGuiContext, ptr %1581, i32 0, i32 97
  %1583 = load float, ptr %1582, align 8, !tbaa !162
  %1584 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 38, float noundef %1583)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1578, ptr noundef nonnull align 4 dereferenceable(8) %1579, ptr noundef nonnull align 4 dereferenceable(8) %1580, i32 noundef %1584, float noundef 0.000000e+00, i32 noundef 15)
  br label %1585

1585:                                             ; preds = %1575, %1571, %1567
  %1586 = load ptr, ptr %7, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.ImGuiContext, ptr %1586, i32 0, i32 67
  %1588 = load ptr, ptr %1587, align 8, !tbaa !163
  %1589 = load ptr, ptr %9, align 8, !tbaa !5
  %1590 = icmp eq ptr %1588, %1589
  br i1 %1590, label %1591, label %1618

1591:                                             ; preds = %1585
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #13
  %1592 = load ptr, ptr %9, align 8, !tbaa !5
  %1593 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(976) %1592)
  %1594 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %63, i32 0, i32 0
  %1595 = extractvalue { <2 x float>, <2 x float> } %1593, 0
  store <2 x float> %1595, ptr %1594, align 4
  %1596 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %63, i32 0, i32 1
  %1597 = extractvalue { <2 x float>, <2 x float> } %1593, 1
  store <2 x float> %1597, ptr %1596, align 4
  %1598 = load ptr, ptr %7, align 8, !tbaa !5
  %1599 = getelementptr inbounds %struct.ImGuiContext, ptr %1598, i32 0, i32 6
  %1600 = load float, ptr %1599, align 8, !tbaa !150
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %63, float noundef %1600)
  %1601 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %63, ptr noundef nonnull align 4 dereferenceable(16) %62)
  br i1 %1601, label %1617, label %1602

1602:                                             ; preds = %1591
  %1603 = load ptr, ptr %9, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.ImGuiWindow, ptr %1603, i32 0, i32 57
  %1605 = load ptr, ptr %1604, align 8, !tbaa !152
  %1606 = getelementptr inbounds %struct.ImRect, ptr %63, i32 0, i32 0
  %1607 = getelementptr inbounds %struct.ImRect, ptr %63, i32 0, i32 1
  %1608 = load ptr, ptr %7, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.ImGuiContext, ptr %1608, i32 0, i32 69
  %1610 = load float, ptr %1609, align 4, !tbaa !164
  %1611 = fmul float %1610, 2.500000e-01
  %1612 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 41, float noundef %1611)
  %1613 = load ptr, ptr %7, align 8, !tbaa !5
  %1614 = getelementptr inbounds %struct.ImGuiContext, ptr %1613, i32 0, i32 4
  %1615 = getelementptr inbounds %struct.ImGuiStyle, ptr %1614, i32 0, i32 2
  %1616 = load float, ptr %1615, align 4, !tbaa !165
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1605, ptr noundef nonnull align 4 dereferenceable(8) %1606, ptr noundef nonnull align 4 dereferenceable(8) %1607, i32 noundef %1612, float noundef %1616, i32 noundef 15)
  br label %1617

1617:                                             ; preds = %1602, %1591
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #13
  br label %1618

1618:                                             ; preds = %1617, %1585
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #13
  %1619 = load ptr, ptr %9, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.ImGuiWindow, ptr %1619, i32 0, i32 10
  %1621 = load float, ptr %1620, align 8, !tbaa !143
  store float %1621, ptr %64, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #13
  %1622 = load ptr, ptr %9, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct.ImGuiWindow, ptr %1622, i32 0, i32 11
  %1624 = load float, ptr %1623, align 4, !tbaa !110
  store float %1624, ptr %65, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #13
  %1625 = load i8, ptr %57, align 1, !tbaa !59, !range !55, !noundef !56
  %1626 = trunc i8 %1625 to i1
  br i1 %1626, label %1644, label %1627

1627:                                             ; preds = %1618
  %1628 = load ptr, ptr %7, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.ImGuiContext, ptr %1628, i32 0, i32 55
  %1630 = load ptr, ptr %1629, align 8, !tbaa !166
  %1631 = icmp ne ptr %1630, null
  br i1 %1631, label %1632, label %1642

1632:                                             ; preds = %1627
  %1633 = load ptr, ptr %9, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.ImGuiWindow, ptr %1633, i32 0, i32 61
  %1635 = load ptr, ptr %1634, align 8, !tbaa !93
  %1636 = load ptr, ptr %7, align 8, !tbaa !5
  %1637 = getelementptr inbounds %struct.ImGuiContext, ptr %1636, i32 0, i32 55
  %1638 = load ptr, ptr %1637, align 8, !tbaa !166
  %1639 = getelementptr inbounds %struct.ImGuiWindow, ptr %1638, i32 0, i32 61
  %1640 = load ptr, ptr %1639, align 8, !tbaa !93
  %1641 = icmp eq ptr %1635, %1640
  br label %1642

1642:                                             ; preds = %1632, %1627
  %1643 = phi i1 [ false, %1627 ], [ %1641, %1632 ]
  br label %1644

1644:                                             ; preds = %1642, %1618
  %1645 = phi i1 [ true, %1618 ], [ %1643, %1642 ]
  %1646 = zext i1 %1645 to i8
  store i8 %1646, ptr %66, align 1, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #13
  %1647 = load ptr, ptr %9, align 8, !tbaa !5
  %1648 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(976) %1647)
  %1649 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %67, i32 0, i32 0
  %1650 = extractvalue { <2 x float>, <2 x float> } %1648, 0
  store <2 x float> %1650, ptr %1649, align 4
  %1651 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %67, i32 0, i32 1
  %1652 = extractvalue { <2 x float>, <2 x float> } %1648, 1
  store <2 x float> %1652, ptr %1651, align 4
  %1653 = load ptr, ptr %9, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.ImGuiWindow, ptr %1653, i32 0, i32 23
  %1655 = load i8, ptr %1654, align 1, !tbaa !122, !range !55, !noundef !56
  %1656 = trunc i8 %1655 to i1
  br i1 %1656, label %1657, label %1690

1657:                                             ; preds = %1644
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #13
  %1658 = load ptr, ptr %8, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.ImGuiStyle, ptr %1658, i32 0, i32 12
  %1660 = load float, ptr %1659, align 4, !tbaa !167
  store float %1660, ptr %68, align 4, !tbaa !62
  %1661 = load ptr, ptr %9, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.ImGuiWindow, ptr %1661, i32 0, i32 11
  %1663 = load float, ptr %1662, align 4, !tbaa !110
  %1664 = load ptr, ptr %7, align 8, !tbaa !5
  %1665 = getelementptr inbounds %struct.ImGuiContext, ptr %1664, i32 0, i32 4
  %1666 = getelementptr inbounds %struct.ImGuiStyle, ptr %1665, i32 0, i32 12
  store float %1663, ptr %1666, align 8, !tbaa !168
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #13
  %1667 = load i8, ptr %66, align 1, !tbaa !59, !range !55, !noundef !56
  %1668 = trunc i8 %1667 to i1
  br i1 %1668, label %1669, label %1675

1669:                                             ; preds = %1657
  %1670 = load ptr, ptr %7, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.ImGuiContext, ptr %1670, i32 0, i32 76
  %1672 = load i8, ptr %1671, align 2, !tbaa !169, !range !55, !noundef !56
  %1673 = trunc i8 %1672 to i1
  %1674 = xor i1 %1673, true
  br label %1675

1675:                                             ; preds = %1669, %1657
  %1676 = phi i1 [ false, %1657 ], [ %1674, %1669 ]
  %1677 = zext i1 %1676 to i64
  %1678 = select i1 %1676, i32 11, i32 12
  %1679 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1678, float noundef 1.000000e+00)
  store i32 %1679, ptr %69, align 4, !tbaa !9
  %1680 = getelementptr inbounds %struct.ImRect, ptr %67, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 4 %1680, i64 8, i1 false), !tbaa.struct !61
  %1681 = getelementptr inbounds %struct.ImRect, ptr %67, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %71, ptr align 4 %1681, i64 8, i1 false), !tbaa.struct !61
  %1682 = load i32, ptr %69, align 4, !tbaa !9
  %1683 = load float, ptr %64, align 4, !tbaa !62
  %1684 = load <2 x float>, ptr %70, align 4
  %1685 = load <2 x float>, ptr %71, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %1684, <2 x float> %1685, i32 noundef %1682, i1 noundef zeroext true, float noundef %1683)
  %1686 = load float, ptr %68, align 4, !tbaa !62
  %1687 = load ptr, ptr %7, align 8, !tbaa !5
  %1688 = getelementptr inbounds %struct.ImGuiContext, ptr %1687, i32 0, i32 4
  %1689 = getelementptr inbounds %struct.ImGuiStyle, ptr %1688, i32 0, i32 12
  store float %1686, ptr %1689, align 8, !tbaa !168
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #13
  br label %1996

1690:                                             ; preds = %1644
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #13
  %1691 = load i32, ptr %6, align 4, !tbaa !9
  %1692 = call noundef i32 @_ZL28GetWindowBgColorIdxFromFlagsi(i32 noundef %1691)
  %1693 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1692, float noundef 1.000000e+00)
  store i32 %1693, ptr %72, align 4, !tbaa !9
  %1694 = load ptr, ptr %7, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.ImGuiContext, ptr %1694, i32 0, i32 51
  %1696 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1695, i32 0, i32 6
  %1697 = load i32, ptr %1696, align 8, !tbaa !170
  %1698 = icmp ne i32 %1697, 0
  br i1 %1698, label %1699, label %1714

1699:                                             ; preds = %1690
  %1700 = load i32, ptr %72, align 4, !tbaa !9
  %1701 = and i32 %1700, 16777215
  %1702 = load ptr, ptr %7, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct.ImGuiContext, ptr %1702, i32 0, i32 51
  %1704 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1703, i32 0, i32 16
  %1705 = load float, ptr %1704, align 8, !tbaa !171
  %1706 = call noundef float @_ZL10ImSaturatef(float noundef %1705)
  %1707 = call float @llvm.fmuladd.f32(float %1706, float 2.550000e+02, float 5.000000e-01)
  %1708 = fptosi float %1707 to i32
  %1709 = shl i32 %1708, 24
  %1710 = or i32 %1701, %1709
  store i32 %1710, ptr %72, align 4, !tbaa !9
  %1711 = load ptr, ptr %7, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.ImGuiContext, ptr %1711, i32 0, i32 51
  %1713 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1712, i32 0, i32 6
  store i32 0, ptr %1713, align 8, !tbaa !170
  br label %1714

1714:                                             ; preds = %1699, %1690
  %1715 = load ptr, ptr %9, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct.ImGuiWindow, ptr %1715, i32 0, i32 57
  %1717 = load ptr, ptr %1716, align 8, !tbaa !152
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #13
  %1718 = load ptr, ptr %9, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.ImGuiWindow, ptr %1718, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #13
  %1720 = load ptr, ptr %9, align 8, !tbaa !5
  %1721 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %1720)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %74, float noundef 0.000000e+00, float noundef %1721)
  %1722 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1719, ptr noundef nonnull align 4 dereferenceable(8) %74)
  store <2 x float> %1722, ptr %73, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  %1723 = load ptr, ptr %9, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.ImGuiWindow, ptr %1723, i32 0, i32 3
  %1725 = load ptr, ptr %9, align 8, !tbaa !5
  %1726 = getelementptr inbounds %struct.ImGuiWindow, ptr %1725, i32 0, i32 4
  %1727 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1724, ptr noundef nonnull align 4 dereferenceable(8) %1726)
  store <2 x float> %1727, ptr %75, align 4
  %1728 = load i32, ptr %72, align 4, !tbaa !9
  %1729 = load float, ptr %64, align 4, !tbaa !62
  %1730 = load i32, ptr %6, align 4, !tbaa !9
  %1731 = and i32 %1730, 1
  %1732 = icmp ne i32 %1731, 0
  %1733 = zext i1 %1732 to i64
  %1734 = select i1 %1732, i32 15, i32 12
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1717, ptr noundef nonnull align 4 dereferenceable(8) %73, ptr noundef nonnull align 4 dereferenceable(8) %75, i32 noundef %1728, float noundef %1729, i32 noundef %1734)
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #13
  %1735 = load ptr, ptr %9, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.ImGuiWindow, ptr %1735, i32 0, i32 23
  %1737 = load i8, ptr %1736, align 1, !tbaa !122, !range !55, !noundef !56
  %1738 = trunc i8 %1737 to i1
  br i1 %1738, label %1739, label %1740

1739:                                             ; preds = %1714
  br label %1745

1740:                                             ; preds = %1714
  %1741 = load i8, ptr %66, align 1, !tbaa !59, !range !55, !noundef !56
  %1742 = trunc i8 %1741 to i1
  %1743 = zext i1 %1742 to i64
  %1744 = select i1 %1742, i32 11, i32 10
  br label %1745

1745:                                             ; preds = %1740, %1739
  %1746 = phi i32 [ 12, %1739 ], [ %1744, %1740 ]
  %1747 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1746, float noundef 1.000000e+00)
  store i32 %1747, ptr %76, align 4, !tbaa !9
  %1748 = load i32, ptr %6, align 4, !tbaa !9
  %1749 = and i32 %1748, 1
  %1750 = icmp ne i32 %1749, 0
  br i1 %1750, label %1759, label %1751

1751:                                             ; preds = %1745
  %1752 = load ptr, ptr %9, align 8, !tbaa !5
  %1753 = getelementptr inbounds %struct.ImGuiWindow, ptr %1752, i32 0, i32 57
  %1754 = load ptr, ptr %1753, align 8, !tbaa !152
  %1755 = getelementptr inbounds %struct.ImRect, ptr %67, i32 0, i32 0
  %1756 = getelementptr inbounds %struct.ImRect, ptr %67, i32 0, i32 1
  %1757 = load i32, ptr %76, align 4, !tbaa !9
  %1758 = load float, ptr %64, align 4, !tbaa !62
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1754, ptr noundef nonnull align 4 dereferenceable(8) %1755, ptr noundef nonnull align 4 dereferenceable(8) %1756, i32 noundef %1757, float noundef %1758, i32 noundef 3)
  br label %1759

1759:                                             ; preds = %1751, %1745
  %1760 = load i32, ptr %6, align 4, !tbaa !9
  %1761 = and i32 %1760, 1024
  %1762 = icmp ne i32 %1761, 0
  br i1 %1762, label %1763, label %1819

1763:                                             ; preds = %1759
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #13
  %1764 = load ptr, ptr %9, align 8, !tbaa !5
  %1765 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow11MenuBarRectEv(ptr noundef nonnull align 8 dereferenceable(976) %1764)
  %1766 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %77, i32 0, i32 0
  %1767 = extractvalue { <2 x float>, <2 x float> } %1765, 0
  store <2 x float> %1767, ptr %1766, align 4
  %1768 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %77, i32 0, i32 1
  %1769 = extractvalue { <2 x float>, <2 x float> } %1765, 1
  store <2 x float> %1769, ptr %1768, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #13
  %1770 = load ptr, ptr %9, align 8, !tbaa !5
  %1771 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(976) %1770)
  %1772 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %78, i32 0, i32 0
  %1773 = extractvalue { <2 x float>, <2 x float> } %1771, 0
  store <2 x float> %1773, ptr %1772, align 4
  %1774 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %78, i32 0, i32 1
  %1775 = extractvalue { <2 x float>, <2 x float> } %1771, 1
  store <2 x float> %1775, ptr %1774, align 4
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %77, ptr noundef nonnull align 4 dereferenceable(16) %78)
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #13
  %1776 = load ptr, ptr %9, align 8, !tbaa !5
  %1777 = getelementptr inbounds %struct.ImGuiWindow, ptr %1776, i32 0, i32 57
  %1778 = load ptr, ptr %1777, align 8, !tbaa !152
  %1779 = getelementptr inbounds %struct.ImRect, ptr %77, i32 0, i32 0
  %1780 = getelementptr inbounds %struct.ImRect, ptr %77, i32 0, i32 1
  %1781 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 13, float noundef 1.000000e+00)
  %1782 = load i32, ptr %6, align 4, !tbaa !9
  %1783 = and i32 %1782, 1
  %1784 = icmp ne i32 %1783, 0
  br i1 %1784, label %1785, label %1787

1785:                                             ; preds = %1763
  %1786 = load float, ptr %64, align 4, !tbaa !62
  br label %1788

1787:                                             ; preds = %1763
  br label %1788

1788:                                             ; preds = %1787, %1785
  %1789 = phi float [ %1786, %1785 ], [ 0.000000e+00, %1787 ]
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1778, ptr noundef nonnull align 4 dereferenceable(8) %1779, ptr noundef nonnull align 4 dereferenceable(8) %1780, i32 noundef %1781, float noundef %1789, i32 noundef 3)
  %1790 = load ptr, ptr %8, align 8, !tbaa !5
  %1791 = getelementptr inbounds %struct.ImGuiStyle, ptr %1790, i32 0, i32 12
  %1792 = load float, ptr %1791, align 4, !tbaa !167
  %1793 = fcmp ogt float %1792, 0.000000e+00
  br i1 %1793, label %1794, label %1818

1794:                                             ; preds = %1788
  %1795 = getelementptr inbounds %struct.ImRect, ptr %77, i32 0, i32 1
  %1796 = getelementptr inbounds %struct.ImVec2, ptr %1795, i32 0, i32 1
  %1797 = load float, ptr %1796, align 4, !tbaa !172
  %1798 = load ptr, ptr %9, align 8, !tbaa !5
  %1799 = getelementptr inbounds %struct.ImGuiWindow, ptr %1798, i32 0, i32 3
  %1800 = getelementptr inbounds %struct.ImVec2, ptr %1799, i32 0, i32 1
  %1801 = load float, ptr %1800, align 4, !tbaa !173
  %1802 = load ptr, ptr %9, align 8, !tbaa !5
  %1803 = getelementptr inbounds %struct.ImGuiWindow, ptr %1802, i32 0, i32 4
  %1804 = getelementptr inbounds %struct.ImVec2, ptr %1803, i32 0, i32 1
  %1805 = load float, ptr %1804, align 4, !tbaa !106
  %1806 = fadd float %1801, %1805
  %1807 = fcmp olt float %1797, %1806
  br i1 %1807, label %1808, label %1818

1808:                                             ; preds = %1794
  %1809 = load ptr, ptr %9, align 8, !tbaa !5
  %1810 = getelementptr inbounds %struct.ImGuiWindow, ptr %1809, i32 0, i32 57
  %1811 = load ptr, ptr %1810, align 8, !tbaa !152
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #13
  %1812 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %77)
  store <2 x float> %1812, ptr %79, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #13
  %1813 = call <2 x float> @_ZNK6ImRect5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %77)
  store <2 x float> %1813, ptr %80, align 4
  %1814 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 5, float noundef 1.000000e+00)
  %1815 = load ptr, ptr %8, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.ImGuiStyle, ptr %1815, i32 0, i32 12
  %1817 = load float, ptr %1816, align 4, !tbaa !167
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1811, ptr noundef nonnull align 4 dereferenceable(8) %79, ptr noundef nonnull align 4 dereferenceable(8) %80, i32 noundef %1814, float noundef %1817)
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #13
  br label %1818

1818:                                             ; preds = %1808, %1794, %1788
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #13
  br label %1819

1819:                                             ; preds = %1818, %1759
  %1820 = load ptr, ptr %9, align 8, !tbaa !5
  %1821 = getelementptr inbounds %struct.ImGuiWindow, ptr %1820, i32 0, i32 18
  %1822 = load i8, ptr %1821, align 8, !tbaa !134, !range !55, !noundef !56
  %1823 = trunc i8 %1822 to i1
  br i1 %1823, label %1824, label %1825

1824:                                             ; preds = %1819
  call void @_ZN5ImGui9ScrollbarEi(i32 noundef 1)
  br label %1825

1825:                                             ; preds = %1824, %1819
  %1826 = load ptr, ptr %9, align 8, !tbaa !5
  %1827 = getelementptr inbounds %struct.ImGuiWindow, ptr %1826, i32 0, i32 19
  %1828 = load i8, ptr %1827, align 1, !tbaa !131, !range !55, !noundef !56
  %1829 = trunc i8 %1828 to i1
  br i1 %1829, label %1830, label %1831

1830:                                             ; preds = %1825
  call void @_ZN5ImGui9ScrollbarEi(i32 noundef 0)
  br label %1831

1831:                                             ; preds = %1830, %1825
  %1832 = load i32, ptr %6, align 4, !tbaa !9
  %1833 = and i32 %1832, 2
  %1834 = icmp ne i32 %1833, 0
  br i1 %1834, label %1930, label %1835

1835:                                             ; preds = %1831
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #13
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %1836

1836:                                             ; preds = %1926, %1835
  %1837 = load i32, ptr %81, align 4, !tbaa !9
  %1838 = load i32, ptr %60, align 4, !tbaa !9
  %1839 = icmp slt i32 %1837, %1838
  br i1 %1839, label %1841, label %1840

1840:                                             ; preds = %1836
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #13
  br label %1929

1841:                                             ; preds = %1836
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #13
  %1842 = load i32, ptr %81, align 4, !tbaa !9
  %1843 = sext i32 %1842 to i64
  %1844 = getelementptr inbounds [4 x %struct.ImGuiResizeGripDef], ptr @_ZL15resize_grip_def, i64 0, i64 %1843
  store ptr %1844, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #13
  %1845 = load ptr, ptr %9, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.ImGuiWindow, ptr %1845, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #13
  %1847 = load ptr, ptr %9, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.ImGuiWindow, ptr %1847, i32 0, i32 3
  %1849 = load ptr, ptr %9, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.ImGuiWindow, ptr %1849, i32 0, i32 4
  %1851 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1848, ptr noundef nonnull align 4 dereferenceable(8) %1850)
  store <2 x float> %1851, ptr %84, align 4
  %1852 = load ptr, ptr %82, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1852, i32 0, i32 0
  %1854 = call <2 x float> @_ZL6ImLerpRK6ImVec2S1_S1_(ptr noundef nonnull align 4 dereferenceable(8) %1846, ptr noundef nonnull align 4 dereferenceable(8) %84, ptr noundef nonnull align 4 dereferenceable(8) %1853)
  store <2 x float> %1854, ptr %83, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #13
  %1855 = load ptr, ptr %9, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.ImGuiWindow, ptr %1855, i32 0, i32 57
  %1857 = load ptr, ptr %1856, align 8, !tbaa !152
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #13
  %1858 = load ptr, ptr %82, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1858, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #13
  %1860 = load i32, ptr %81, align 4, !tbaa !9
  %1861 = and i32 %1860, 1
  %1862 = icmp ne i32 %1861, 0
  br i1 %1862, label %1863, label %1866

1863:                                             ; preds = %1841
  %1864 = load float, ptr %65, align 4, !tbaa !62
  %1865 = load float, ptr %61, align 4, !tbaa !62
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %87, float noundef %1864, float noundef %1865)
  br label %1869

1866:                                             ; preds = %1841
  %1867 = load float, ptr %61, align 4, !tbaa !62
  %1868 = load float, ptr %65, align 4, !tbaa !62
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %87, float noundef %1867, float noundef %1868)
  br label %1869

1869:                                             ; preds = %1866, %1863
  %1870 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1859, ptr noundef nonnull align 4 dereferenceable(8) %87)
  store <2 x float> %1870, ptr %86, align 4
  %1871 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %83, ptr noundef nonnull align 4 dereferenceable(8) %86)
  store <2 x float> %1871, ptr %85, align 4
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(168) %1857, ptr noundef nonnull align 4 dereferenceable(8) %85)
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #13
  %1872 = load ptr, ptr %9, align 8, !tbaa !5
  %1873 = getelementptr inbounds %struct.ImGuiWindow, ptr %1872, i32 0, i32 57
  %1874 = load ptr, ptr %1873, align 8, !tbaa !152
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #13
  %1875 = load ptr, ptr %82, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1875, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #13
  %1877 = load i32, ptr %81, align 4, !tbaa !9
  %1878 = and i32 %1877, 1
  %1879 = icmp ne i32 %1878, 0
  br i1 %1879, label %1880, label %1883

1880:                                             ; preds = %1869
  %1881 = load float, ptr %61, align 4, !tbaa !62
  %1882 = load float, ptr %65, align 4, !tbaa !62
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %90, float noundef %1881, float noundef %1882)
  br label %1886

1883:                                             ; preds = %1869
  %1884 = load float, ptr %65, align 4, !tbaa !62
  %1885 = load float, ptr %61, align 4, !tbaa !62
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %90, float noundef %1884, float noundef %1885)
  br label %1886

1886:                                             ; preds = %1883, %1880
  %1887 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1876, ptr noundef nonnull align 4 dereferenceable(8) %90)
  store <2 x float> %1887, ptr %89, align 4
  %1888 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %83, ptr noundef nonnull align 4 dereferenceable(8) %89)
  store <2 x float> %1888, ptr %88, align 4
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(168) %1874, ptr noundef nonnull align 4 dereferenceable(8) %88)
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #13
  %1889 = load ptr, ptr %9, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.ImGuiWindow, ptr %1889, i32 0, i32 57
  %1891 = load ptr, ptr %1890, align 8, !tbaa !152
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #13
  %1892 = getelementptr inbounds %struct.ImVec2, ptr %83, i32 0, i32 0
  %1893 = load float, ptr %1892, align 4, !tbaa !123
  %1894 = load ptr, ptr %82, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1894, i32 0, i32 1
  %1896 = getelementptr inbounds %struct.ImVec2, ptr %1895, i32 0, i32 0
  %1897 = load float, ptr %1896, align 4, !tbaa !174
  %1898 = load float, ptr %64, align 4, !tbaa !62
  %1899 = load float, ptr %65, align 4, !tbaa !62
  %1900 = fadd float %1898, %1899
  %1901 = call float @llvm.fmuladd.f32(float %1897, float %1900, float %1893)
  %1902 = getelementptr inbounds %struct.ImVec2, ptr %83, i32 0, i32 1
  %1903 = load float, ptr %1902, align 4, !tbaa !124
  %1904 = load ptr, ptr %82, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1904, i32 0, i32 1
  %1906 = getelementptr inbounds %struct.ImVec2, ptr %1905, i32 0, i32 1
  %1907 = load float, ptr %1906, align 4, !tbaa !176
  %1908 = load float, ptr %64, align 4, !tbaa !62
  %1909 = load float, ptr %65, align 4, !tbaa !62
  %1910 = fadd float %1908, %1909
  %1911 = call float @llvm.fmuladd.f32(float %1907, float %1910, float %1903)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %91, float noundef %1901, float noundef %1911)
  %1912 = load float, ptr %64, align 4, !tbaa !62
  %1913 = load ptr, ptr %82, align 8, !tbaa !5
  %1914 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1913, i32 0, i32 2
  %1915 = load i32, ptr %1914, align 4, !tbaa !177
  %1916 = load ptr, ptr %82, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1916, i32 0, i32 3
  %1918 = load i32, ptr %1917, align 4, !tbaa !178
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(168) %1891, ptr noundef nonnull align 4 dereferenceable(8) %91, float noundef %1912, i32 noundef %1915, i32 noundef %1918)
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #13
  %1919 = load ptr, ptr %9, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct.ImGuiWindow, ptr %1919, i32 0, i32 57
  %1921 = load ptr, ptr %1920, align 8, !tbaa !152
  %1922 = load i32, ptr %81, align 4, !tbaa !9
  %1923 = sext i32 %1922 to i64
  %1924 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %1923
  %1925 = load i32, ptr %1924, align 4, !tbaa !9
  call void @_ZN10ImDrawList14PathFillConvexEj(ptr noundef nonnull align 8 dereferenceable(168) %1921, i32 noundef %1925)
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #13
  br label %1926

1926:                                             ; preds = %1886
  %1927 = load i32, ptr %81, align 4, !tbaa !9
  %1928 = add nsw i32 %1927, 1
  store i32 %1928, ptr %81, align 4, !tbaa !9
  br label %1836, !llvm.loop !179

1929:                                             ; preds = %1840
  br label %1930

1930:                                             ; preds = %1929, %1831
  %1931 = load float, ptr %65, align 4, !tbaa !62
  %1932 = fcmp ogt float %1931, 0.000000e+00
  br i1 %1932, label %1933, label %1947

1933:                                             ; preds = %1930
  %1934 = load ptr, ptr %9, align 8, !tbaa !5
  %1935 = getelementptr inbounds %struct.ImGuiWindow, ptr %1934, i32 0, i32 57
  %1936 = load ptr, ptr %1935, align 8, !tbaa !152
  %1937 = load ptr, ptr %9, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.ImGuiWindow, ptr %1937, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #13
  %1939 = load ptr, ptr %9, align 8, !tbaa !5
  %1940 = getelementptr inbounds %struct.ImGuiWindow, ptr %1939, i32 0, i32 3
  %1941 = load ptr, ptr %9, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.ImGuiWindow, ptr %1941, i32 0, i32 4
  %1943 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1940, ptr noundef nonnull align 4 dereferenceable(8) %1942)
  store <2 x float> %1943, ptr %92, align 4
  %1944 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 5, float noundef 1.000000e+00)
  %1945 = load float, ptr %64, align 4, !tbaa !62
  %1946 = load float, ptr %65, align 4, !tbaa !62
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %1936, ptr noundef nonnull align 4 dereferenceable(8) %1938, ptr noundef nonnull align 4 dereferenceable(8) %92, i32 noundef %1944, float noundef %1945, i32 noundef 15, float noundef %1946)
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #13
  br label %1947

1947:                                             ; preds = %1933, %1930
  %1948 = load i32, ptr %58, align 4, !tbaa !9
  %1949 = icmp ne i32 %1948, -1
  br i1 %1949, label %1950, label %1967

1950:                                             ; preds = %1947
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #13
  %1951 = load ptr, ptr %9, align 8, !tbaa !5
  %1952 = load i32, ptr %58, align 4, !tbaa !9
  %1953 = load float, ptr %61, align 4, !tbaa !62
  %1954 = call { <2 x float>, <2 x float> } @_ZL13GetBorderRectP11ImGuiWindowiff(ptr noundef %1951, i32 noundef %1952, float noundef %1953, float noundef 0.000000e+00)
  %1955 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %93, i32 0, i32 0
  %1956 = extractvalue { <2 x float>, <2 x float> } %1954, 0
  store <2 x float> %1956, ptr %1955, align 4
  %1957 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %93, i32 0, i32 1
  %1958 = extractvalue { <2 x float>, <2 x float> } %1954, 1
  store <2 x float> %1958, ptr %1957, align 4
  %1959 = load ptr, ptr %9, align 8, !tbaa !5
  %1960 = getelementptr inbounds %struct.ImGuiWindow, ptr %1959, i32 0, i32 57
  %1961 = load ptr, ptr %1960, align 8, !tbaa !152
  %1962 = getelementptr inbounds %struct.ImRect, ptr %93, i32 0, i32 0
  %1963 = getelementptr inbounds %struct.ImRect, ptr %93, i32 0, i32 1
  %1964 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 29, float noundef 1.000000e+00)
  %1965 = load float, ptr %65, align 4, !tbaa !62
  %1966 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 1.000000e+00, float noundef %1965)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1961, ptr noundef nonnull align 4 dereferenceable(8) %1962, ptr noundef nonnull align 4 dereferenceable(8) %1963, i32 noundef %1964, float noundef %1966)
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #13
  br label %1967

1967:                                             ; preds = %1950, %1947
  %1968 = load ptr, ptr %8, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.ImGuiStyle, ptr %1968, i32 0, i32 12
  %1970 = load float, ptr %1969, align 4, !tbaa !167
  %1971 = fcmp ogt float %1970, 0.000000e+00
  br i1 %1971, label %1972, label %1995

1972:                                             ; preds = %1967
  %1973 = load i32, ptr %6, align 4, !tbaa !9
  %1974 = and i32 %1973, 1
  %1975 = icmp ne i32 %1974, 0
  br i1 %1975, label %1995, label %1976

1976:                                             ; preds = %1972
  %1977 = load ptr, ptr %9, align 8, !tbaa !5
  %1978 = getelementptr inbounds %struct.ImGuiWindow, ptr %1977, i32 0, i32 57
  %1979 = load ptr, ptr %1978, align 8, !tbaa !152
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #13
  %1980 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %67)
  store <2 x float> %1980, ptr %95, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #13
  %1981 = load ptr, ptr %8, align 8, !tbaa !5
  %1982 = getelementptr inbounds %struct.ImGuiStyle, ptr %1981, i32 0, i32 3
  %1983 = load float, ptr %1982, align 4, !tbaa !109
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %96, float noundef %1983, float noundef -1.000000e+00)
  %1984 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %95, ptr noundef nonnull align 4 dereferenceable(8) %96)
  store <2 x float> %1984, ptr %94, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #13
  %1985 = call <2 x float> @_ZNK6ImRect5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %67)
  store <2 x float> %1985, ptr %98, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #13
  %1986 = load ptr, ptr %8, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.ImGuiStyle, ptr %1986, i32 0, i32 3
  %1988 = load float, ptr %1987, align 4, !tbaa !109
  %1989 = fneg float %1988
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %99, float noundef %1989, float noundef -1.000000e+00)
  %1990 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %98, ptr noundef nonnull align 4 dereferenceable(8) %99)
  store <2 x float> %1990, ptr %97, align 4
  %1991 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 5, float noundef 1.000000e+00)
  %1992 = load ptr, ptr %8, align 8, !tbaa !5
  %1993 = getelementptr inbounds %struct.ImGuiStyle, ptr %1992, i32 0, i32 12
  %1994 = load float, ptr %1993, align 4, !tbaa !167
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1979, ptr noundef nonnull align 4 dereferenceable(8) %94, ptr noundef nonnull align 4 dereferenceable(8) %97, i32 noundef %1991, float noundef %1994)
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #13
  br label %1995

1995:                                             ; preds = %1976, %1972, %1967
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #13
  br label %1996

1996:                                             ; preds = %1995, %1675
  %1997 = load ptr, ptr %7, align 8, !tbaa !5
  %1998 = getelementptr inbounds %struct.ImGuiContext, ptr %1997, i32 0, i32 67
  %1999 = load ptr, ptr %1998, align 8, !tbaa !163
  %2000 = load ptr, ptr %9, align 8, !tbaa !5
  %2001 = icmp eq ptr %1999, %2000
  br i1 %2001, label %2002, label %2041

2002:                                             ; preds = %1996
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #13
  %2003 = load ptr, ptr %9, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.ImGuiWindow, ptr %2003, i32 0, i32 10
  %2005 = load float, ptr %2004, align 8, !tbaa !143
  %2006 = load ptr, ptr %7, align 8, !tbaa !5
  %2007 = getelementptr inbounds %struct.ImGuiContext, ptr %2006, i32 0, i32 4
  %2008 = getelementptr inbounds %struct.ImGuiStyle, ptr %2007, i32 0, i32 2
  %2009 = load float, ptr %2008, align 4, !tbaa !165
  %2010 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2005, float noundef %2009)
  store float %2010, ptr %100, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #13
  %2011 = load ptr, ptr %9, align 8, !tbaa !5
  %2012 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(976) %2011)
  %2013 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %101, i32 0, i32 0
  %2014 = extractvalue { <2 x float>, <2 x float> } %2012, 0
  store <2 x float> %2014, ptr %2013, align 4
  %2015 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %101, i32 0, i32 1
  %2016 = extractvalue { <2 x float>, <2 x float> } %2012, 1
  store <2 x float> %2016, ptr %2015, align 4
  %2017 = load ptr, ptr %7, align 8, !tbaa !5
  %2018 = getelementptr inbounds %struct.ImGuiContext, ptr %2017, i32 0, i32 6
  %2019 = load float, ptr %2018, align 8, !tbaa !150
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %101, float noundef %2019)
  %2020 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %101, ptr noundef nonnull align 4 dereferenceable(16) %62)
  br i1 %2020, label %2021, label %2030

2021:                                             ; preds = %2002
  %2022 = load ptr, ptr %7, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.ImGuiContext, ptr %2022, i32 0, i32 6
  %2024 = load float, ptr %2023, align 8, !tbaa !150
  %2025 = fneg float %2024
  %2026 = fsub float %2025, 1.000000e+00
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %101, float noundef %2026)
  %2027 = load ptr, ptr %9, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.ImGuiWindow, ptr %2027, i32 0, i32 10
  %2029 = load float, ptr %2028, align 8, !tbaa !143
  store float %2029, ptr %100, align 4, !tbaa !62
  br label %2030

2030:                                             ; preds = %2021, %2002
  %2031 = load ptr, ptr %9, align 8, !tbaa !5
  %2032 = getelementptr inbounds %struct.ImGuiWindow, ptr %2031, i32 0, i32 57
  %2033 = load ptr, ptr %2032, align 8, !tbaa !152
  %2034 = getelementptr inbounds %struct.ImRect, ptr %101, i32 0, i32 0
  %2035 = getelementptr inbounds %struct.ImRect, ptr %101, i32 0, i32 1
  %2036 = load ptr, ptr %7, align 8, !tbaa !5
  %2037 = getelementptr inbounds %struct.ImGuiContext, ptr %2036, i32 0, i32 69
  %2038 = load float, ptr %2037, align 4, !tbaa !164
  %2039 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 41, float noundef %2038)
  %2040 = load float, ptr %100, align 4, !tbaa !62
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %2033, ptr noundef nonnull align 4 dereferenceable(8) %2034, ptr noundef nonnull align 4 dereferenceable(8) %2035, i32 noundef %2039, float noundef %2040, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #13
  br label %2041

2041:                                             ; preds = %2030, %1996
  %2042 = load ptr, ptr %9, align 8, !tbaa !5
  %2043 = getelementptr inbounds %struct.ImGuiWindow, ptr %2042, i32 0, i32 5
  %2044 = load ptr, ptr %9, align 8, !tbaa !5
  %2045 = getelementptr inbounds %struct.ImGuiWindow, ptr %2044, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2045, ptr align 8 %2043, i64 8, i1 false), !tbaa.struct !61
  %2046 = load ptr, ptr %9, align 8, !tbaa !5
  %2047 = getelementptr inbounds %struct.ImGuiWindow, ptr %2046, i32 0, i32 3
  %2048 = getelementptr inbounds %struct.ImVec2, ptr %2047, i32 0, i32 0
  %2049 = load float, ptr %2048, align 8, !tbaa !180
  %2050 = load ptr, ptr %9, align 8, !tbaa !5
  %2051 = getelementptr inbounds %struct.ImGuiWindow, ptr %2050, i32 0, i32 14
  %2052 = getelementptr inbounds %struct.ImVec2, ptr %2051, i32 0, i32 0
  %2053 = load float, ptr %2052, align 8, !tbaa !181
  %2054 = fsub float %2049, %2053
  %2055 = load ptr, ptr %9, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.ImGuiWindow, ptr %2055, i32 0, i32 9
  %2057 = getelementptr inbounds %struct.ImVec2, ptr %2056, i32 0, i32 0
  %2058 = load float, ptr %2057, align 8, !tbaa !112
  %2059 = fadd float %2054, %2058
  %2060 = load ptr, ptr %9, align 8, !tbaa !5
  %2061 = getelementptr inbounds %struct.ImGuiWindow, ptr %2060, i32 0, i32 49
  %2062 = getelementptr inbounds %struct.ImRect, ptr %2061, i32 0, i32 0
  %2063 = getelementptr inbounds %struct.ImVec2, ptr %2062, i32 0, i32 0
  store float %2059, ptr %2063, align 8, !tbaa !182
  %2064 = load ptr, ptr %9, align 8, !tbaa !5
  %2065 = getelementptr inbounds %struct.ImGuiWindow, ptr %2064, i32 0, i32 3
  %2066 = getelementptr inbounds %struct.ImVec2, ptr %2065, i32 0, i32 1
  %2067 = load float, ptr %2066, align 4, !tbaa !173
  %2068 = load ptr, ptr %9, align 8, !tbaa !5
  %2069 = getelementptr inbounds %struct.ImGuiWindow, ptr %2068, i32 0, i32 14
  %2070 = getelementptr inbounds %struct.ImVec2, ptr %2069, i32 0, i32 1
  %2071 = load float, ptr %2070, align 4, !tbaa !183
  %2072 = fsub float %2067, %2071
  %2073 = load ptr, ptr %9, align 8, !tbaa !5
  %2074 = getelementptr inbounds %struct.ImGuiWindow, ptr %2073, i32 0, i32 9
  %2075 = getelementptr inbounds %struct.ImVec2, ptr %2074, i32 0, i32 1
  %2076 = load float, ptr %2075, align 4, !tbaa !184
  %2077 = fadd float %2072, %2076
  %2078 = load ptr, ptr %9, align 8, !tbaa !5
  %2079 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %2078)
  %2080 = fadd float %2077, %2079
  %2081 = load ptr, ptr %9, align 8, !tbaa !5
  %2082 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %2081)
  %2083 = fadd float %2080, %2082
  %2084 = load ptr, ptr %9, align 8, !tbaa !5
  %2085 = getelementptr inbounds %struct.ImGuiWindow, ptr %2084, i32 0, i32 49
  %2086 = getelementptr inbounds %struct.ImRect, ptr %2085, i32 0, i32 0
  %2087 = getelementptr inbounds %struct.ImVec2, ptr %2086, i32 0, i32 1
  store float %2083, ptr %2087, align 4, !tbaa !185
  %2088 = load ptr, ptr %9, align 8, !tbaa !5
  %2089 = getelementptr inbounds %struct.ImGuiWindow, ptr %2088, i32 0, i32 3
  %2090 = getelementptr inbounds %struct.ImVec2, ptr %2089, i32 0, i32 0
  %2091 = load float, ptr %2090, align 8, !tbaa !180
  %2092 = load ptr, ptr %9, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.ImGuiWindow, ptr %2092, i32 0, i32 14
  %2094 = getelementptr inbounds %struct.ImVec2, ptr %2093, i32 0, i32 0
  %2095 = load float, ptr %2094, align 8, !tbaa !181
  %2096 = fsub float %2091, %2095
  %2097 = load ptr, ptr %9, align 8, !tbaa !5
  %2098 = getelementptr inbounds %struct.ImGuiWindow, ptr %2097, i32 0, i32 9
  %2099 = getelementptr inbounds %struct.ImVec2, ptr %2098, i32 0, i32 0
  %2100 = load float, ptr %2099, align 8, !tbaa !112
  %2101 = fsub float %2096, %2100
  %2102 = load ptr, ptr %9, align 8, !tbaa !5
  %2103 = getelementptr inbounds %struct.ImGuiWindow, ptr %2102, i32 0, i32 8
  %2104 = getelementptr inbounds %struct.ImVec2, ptr %2103, i32 0, i32 0
  %2105 = load float, ptr %2104, align 8, !tbaa !186
  %2106 = fcmp une float %2105, 0.000000e+00
  br i1 %2106, label %2107, label %2112

2107:                                             ; preds = %2041
  %2108 = load ptr, ptr %9, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.ImGuiWindow, ptr %2108, i32 0, i32 8
  %2110 = getelementptr inbounds %struct.ImVec2, ptr %2109, i32 0, i32 0
  %2111 = load float, ptr %2110, align 8, !tbaa !186
  br label %2122

2112:                                             ; preds = %2041
  %2113 = load ptr, ptr %9, align 8, !tbaa !5
  %2114 = getelementptr inbounds %struct.ImGuiWindow, ptr %2113, i32 0, i32 4
  %2115 = getelementptr inbounds %struct.ImVec2, ptr %2114, i32 0, i32 0
  %2116 = load float, ptr %2115, align 8, !tbaa !104
  %2117 = load ptr, ptr %9, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.ImGuiWindow, ptr %2117, i32 0, i32 17
  %2119 = getelementptr inbounds %struct.ImVec2, ptr %2118, i32 0, i32 0
  %2120 = load float, ptr %2119, align 8, !tbaa !187
  %2121 = fsub float %2116, %2120
  br label %2122

2122:                                             ; preds = %2112, %2107
  %2123 = phi float [ %2111, %2107 ], [ %2121, %2112 ]
  %2124 = fadd float %2101, %2123
  %2125 = load ptr, ptr %9, align 8, !tbaa !5
  %2126 = getelementptr inbounds %struct.ImGuiWindow, ptr %2125, i32 0, i32 49
  %2127 = getelementptr inbounds %struct.ImRect, ptr %2126, i32 0, i32 1
  %2128 = getelementptr inbounds %struct.ImVec2, ptr %2127, i32 0, i32 0
  store float %2124, ptr %2128, align 8, !tbaa !188
  %2129 = load ptr, ptr %9, align 8, !tbaa !5
  %2130 = getelementptr inbounds %struct.ImGuiWindow, ptr %2129, i32 0, i32 3
  %2131 = getelementptr inbounds %struct.ImVec2, ptr %2130, i32 0, i32 1
  %2132 = load float, ptr %2131, align 4, !tbaa !173
  %2133 = load ptr, ptr %9, align 8, !tbaa !5
  %2134 = getelementptr inbounds %struct.ImGuiWindow, ptr %2133, i32 0, i32 14
  %2135 = getelementptr inbounds %struct.ImVec2, ptr %2134, i32 0, i32 1
  %2136 = load float, ptr %2135, align 4, !tbaa !183
  %2137 = fsub float %2132, %2136
  %2138 = load ptr, ptr %9, align 8, !tbaa !5
  %2139 = getelementptr inbounds %struct.ImGuiWindow, ptr %2138, i32 0, i32 9
  %2140 = getelementptr inbounds %struct.ImVec2, ptr %2139, i32 0, i32 1
  %2141 = load float, ptr %2140, align 4, !tbaa !184
  %2142 = fsub float %2137, %2141
  %2143 = load ptr, ptr %9, align 8, !tbaa !5
  %2144 = getelementptr inbounds %struct.ImGuiWindow, ptr %2143, i32 0, i32 8
  %2145 = getelementptr inbounds %struct.ImVec2, ptr %2144, i32 0, i32 1
  %2146 = load float, ptr %2145, align 4, !tbaa !87
  %2147 = fcmp une float %2146, 0.000000e+00
  br i1 %2147, label %2148, label %2153

2148:                                             ; preds = %2122
  %2149 = load ptr, ptr %9, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.ImGuiWindow, ptr %2149, i32 0, i32 8
  %2151 = getelementptr inbounds %struct.ImVec2, ptr %2150, i32 0, i32 1
  %2152 = load float, ptr %2151, align 4, !tbaa !87
  br label %2163

2153:                                             ; preds = %2122
  %2154 = load ptr, ptr %9, align 8, !tbaa !5
  %2155 = getelementptr inbounds %struct.ImGuiWindow, ptr %2154, i32 0, i32 4
  %2156 = getelementptr inbounds %struct.ImVec2, ptr %2155, i32 0, i32 1
  %2157 = load float, ptr %2156, align 4, !tbaa !106
  %2158 = load ptr, ptr %9, align 8, !tbaa !5
  %2159 = getelementptr inbounds %struct.ImGuiWindow, ptr %2158, i32 0, i32 17
  %2160 = getelementptr inbounds %struct.ImVec2, ptr %2159, i32 0, i32 1
  %2161 = load float, ptr %2160, align 4, !tbaa !189
  %2162 = fsub float %2157, %2161
  br label %2163

2163:                                             ; preds = %2153, %2148
  %2164 = phi float [ %2152, %2148 ], [ %2162, %2153 ]
  %2165 = fadd float %2142, %2164
  %2166 = load ptr, ptr %9, align 8, !tbaa !5
  %2167 = getelementptr inbounds %struct.ImGuiWindow, ptr %2166, i32 0, i32 49
  %2168 = getelementptr inbounds %struct.ImRect, ptr %2167, i32 0, i32 1
  %2169 = getelementptr inbounds %struct.ImVec2, ptr %2168, i32 0, i32 1
  store float %2165, ptr %2169, align 4, !tbaa !190
  %2170 = load ptr, ptr %9, align 8, !tbaa !5
  %2171 = getelementptr inbounds %struct.ImGuiWindow, ptr %2170, i32 0, i32 9
  %2172 = getelementptr inbounds %struct.ImVec2, ptr %2171, i32 0, i32 0
  %2173 = load float, ptr %2172, align 8, !tbaa !112
  %2174 = fadd float 0.000000e+00, %2173
  %2175 = load ptr, ptr %9, align 8, !tbaa !5
  %2176 = getelementptr inbounds %struct.ImGuiWindow, ptr %2175, i32 0, i32 14
  %2177 = getelementptr inbounds %struct.ImVec2, ptr %2176, i32 0, i32 0
  %2178 = load float, ptr %2177, align 8, !tbaa !181
  %2179 = fsub float %2174, %2178
  %2180 = load ptr, ptr %9, align 8, !tbaa !5
  %2181 = getelementptr inbounds %struct.ImGuiWindow, ptr %2180, i32 0, i32 43
  %2182 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2181, i32 0, i32 35
  store float %2179, ptr %2182, align 8, !tbaa !191
  %2183 = load ptr, ptr %9, align 8, !tbaa !5
  %2184 = getelementptr inbounds %struct.ImGuiWindow, ptr %2183, i32 0, i32 43
  %2185 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2184, i32 0, i32 36
  store float 0.000000e+00, ptr %2185, align 4, !tbaa !192
  %2186 = load ptr, ptr %9, align 8, !tbaa !5
  %2187 = getelementptr inbounds %struct.ImGuiWindow, ptr %2186, i32 0, i32 43
  %2188 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2187, i32 0, i32 37
  store float 0.000000e+00, ptr %2188, align 8, !tbaa !193
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #13
  %2189 = load ptr, ptr %9, align 8, !tbaa !5
  %2190 = getelementptr inbounds %struct.ImGuiWindow, ptr %2189, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #13
  %2191 = load ptr, ptr %9, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiWindow, ptr %2191, i32 0, i32 43
  %2193 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2192, i32 0, i32 35
  %2194 = load float, ptr %2193, align 8, !tbaa !191
  %2195 = load ptr, ptr %9, align 8, !tbaa !5
  %2196 = getelementptr inbounds %struct.ImGuiWindow, ptr %2195, i32 0, i32 43
  %2197 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2196, i32 0, i32 37
  %2198 = load float, ptr %2197, align 8, !tbaa !193
  %2199 = fadd float %2194, %2198
  %2200 = load ptr, ptr %9, align 8, !tbaa !5
  %2201 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %2200)
  %2202 = load ptr, ptr %9, align 8, !tbaa !5
  %2203 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %2202)
  %2204 = fadd float %2201, %2203
  %2205 = load ptr, ptr %9, align 8, !tbaa !5
  %2206 = getelementptr inbounds %struct.ImGuiWindow, ptr %2205, i32 0, i32 9
  %2207 = getelementptr inbounds %struct.ImVec2, ptr %2206, i32 0, i32 1
  %2208 = load float, ptr %2207, align 4, !tbaa !184
  %2209 = fadd float %2204, %2208
  %2210 = load ptr, ptr %9, align 8, !tbaa !5
  %2211 = getelementptr inbounds %struct.ImGuiWindow, ptr %2210, i32 0, i32 14
  %2212 = getelementptr inbounds %struct.ImVec2, ptr %2211, i32 0, i32 1
  %2213 = load float, ptr %2212, align 4, !tbaa !183
  %2214 = fsub float %2209, %2213
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %103, float noundef %2199, float noundef %2214)
  %2215 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2190, ptr noundef nonnull align 4 dereferenceable(8) %103)
  store <2 x float> %2215, ptr %102, align 4
  %2216 = load ptr, ptr %9, align 8, !tbaa !5
  %2217 = getelementptr inbounds %struct.ImGuiWindow, ptr %2216, i32 0, i32 43
  %2218 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2217, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2218, ptr align 4 %102, i64 8, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #13
  %2219 = load ptr, ptr %9, align 8, !tbaa !5
  %2220 = getelementptr inbounds %struct.ImGuiWindow, ptr %2219, i32 0, i32 43
  %2221 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2220, i32 0, i32 2
  %2222 = load ptr, ptr %9, align 8, !tbaa !5
  %2223 = getelementptr inbounds %struct.ImGuiWindow, ptr %2222, i32 0, i32 43
  %2224 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2223, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2224, ptr align 8 %2221, i64 8, i1 false), !tbaa.struct !61
  %2225 = load ptr, ptr %9, align 8, !tbaa !5
  %2226 = getelementptr inbounds %struct.ImGuiWindow, ptr %2225, i32 0, i32 43
  %2227 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2226, i32 0, i32 0
  %2228 = load ptr, ptr %9, align 8, !tbaa !5
  %2229 = getelementptr inbounds %struct.ImGuiWindow, ptr %2228, i32 0, i32 43
  %2230 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2229, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2230, ptr align 8 %2227, i64 8, i1 false), !tbaa.struct !61
  %2231 = load ptr, ptr %9, align 8, !tbaa !5
  %2232 = getelementptr inbounds %struct.ImGuiWindow, ptr %2231, i32 0, i32 43
  %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 43
  %2236 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2235, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2236, ptr align 8 %2233, i64 8, i1 false), !tbaa.struct !61
  %2237 = load ptr, ptr %9, align 8, !tbaa !5
  %2238 = getelementptr inbounds %struct.ImGuiWindow, ptr %2237, i32 0, i32 43
  %2239 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2238, i32 0, i32 6
  store float 0.000000e+00, ptr %2239, align 8, !tbaa !194
  %2240 = load ptr, ptr %9, align 8, !tbaa !5
  %2241 = getelementptr inbounds %struct.ImGuiWindow, ptr %2240, i32 0, i32 43
  %2242 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2241, i32 0, i32 4
  store float 0.000000e+00, ptr %2242, align 8, !tbaa !195
  %2243 = load ptr, ptr %9, align 8, !tbaa !5
  %2244 = getelementptr inbounds %struct.ImGuiWindow, ptr %2243, i32 0, i32 43
  %2245 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2244, i32 0, i32 7
  store float 0.000000e+00, ptr %2245, align 4, !tbaa !196
  %2246 = load ptr, ptr %9, align 8, !tbaa !5
  %2247 = getelementptr inbounds %struct.ImGuiWindow, ptr %2246, i32 0, i32 43
  %2248 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2247, i32 0, i32 5
  store float 0.000000e+00, ptr %2248, align 4, !tbaa !197
  %2249 = load ptr, ptr %9, align 8, !tbaa !5
  %2250 = getelementptr inbounds %struct.ImGuiWindow, ptr %2249, i32 0, i32 43
  %2251 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2250, i32 0, i32 15
  store i8 0, ptr %2251, align 4, !tbaa !198
  %2252 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %2253 = fcmp ogt float %2252, 0.000000e+00
  %2254 = load ptr, ptr %9, align 8, !tbaa !5
  %2255 = getelementptr inbounds %struct.ImGuiWindow, ptr %2254, i32 0, i32 43
  %2256 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2255, i32 0, i32 16
  %2257 = zext i1 %2253 to i8
  store i8 %2257, ptr %2256, align 1, !tbaa !199
  %2258 = load ptr, ptr %9, align 8, !tbaa !5
  %2259 = getelementptr inbounds %struct.ImGuiWindow, ptr %2258, i32 0, i32 43
  %2260 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2259, i32 0, i32 20
  %2261 = load i32, ptr %2260, align 4, !tbaa !200
  %2262 = load ptr, ptr %9, align 8, !tbaa !5
  %2263 = getelementptr inbounds %struct.ImGuiWindow, ptr %2262, i32 0, i32 43
  %2264 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2263, i32 0, i32 19
  store i32 %2261, ptr %2264, align 8, !tbaa !201
  %2265 = load ptr, ptr %9, align 8, !tbaa !5
  %2266 = getelementptr inbounds %struct.ImGuiWindow, ptr %2265, i32 0, i32 43
  %2267 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2266, i32 0, i32 20
  store i32 0, ptr %2267, align 4, !tbaa !200
  %2268 = load ptr, ptr %9, align 8, !tbaa !5
  %2269 = getelementptr inbounds %struct.ImGuiWindow, ptr %2268, i32 0, i32 43
  %2270 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2269, i32 0, i32 21
  store i8 0, ptr %2270, align 8, !tbaa !202
  %2271 = load ptr, ptr %9, align 8, !tbaa !5
  %2272 = getelementptr inbounds %struct.ImGuiWindow, ptr %2271, i32 0, i32 43
  %2273 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2272, i32 0, i32 0
  %2274 = getelementptr inbounds %struct.ImVec2, ptr %2273, i32 0, i32 1
  %2275 = load float, ptr %2274, align 4, !tbaa !203
  %2276 = fsub float %2275, 9.999000e+03
  %2277 = load ptr, ptr %9, align 8, !tbaa !5
  %2278 = getelementptr inbounds %struct.ImGuiWindow, ptr %2277, i32 0, i32 43
  %2279 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2278, i32 0, i32 8
  store float %2276, ptr %2279, align 8, !tbaa !204
  %2280 = load ptr, ptr %9, align 8, !tbaa !5
  %2281 = getelementptr inbounds %struct.ImGuiWindow, ptr %2280, i32 0, i32 43
  %2282 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2281, i32 0, i32 23
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2282, i32 noundef 0)
  %2283 = load ptr, ptr %9, align 8, !tbaa !5
  %2284 = getelementptr inbounds %struct.ImGuiWindow, ptr %2283, i32 0, i32 43
  %2285 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2284, i32 0, i32 25
  store i32 0, ptr %2285, align 8, !tbaa !205
  %2286 = load ptr, ptr %19, align 8, !tbaa !5
  %2287 = icmp ne ptr %2286, null
  br i1 %2287, label %2288, label %2293

2288:                                             ; preds = %2163
  %2289 = load ptr, ptr %19, align 8, !tbaa !5
  %2290 = getelementptr inbounds %struct.ImGuiWindow, ptr %2289, i32 0, i32 43
  %2291 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2290, i32 0, i32 25
  %2292 = load i32, ptr %2291, align 8, !tbaa !205
  br label %2294

2293:                                             ; preds = %2163
  br label %2294

2294:                                             ; preds = %2293, %2288
  %2295 = phi i32 [ %2292, %2288 ], [ 0, %2293 ]
  %2296 = load ptr, ptr %9, align 8, !tbaa !5
  %2297 = getelementptr inbounds %struct.ImGuiWindow, ptr %2296, i32 0, i32 43
  %2298 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2297, i32 0, i32 26
  store i32 %2295, ptr %2298, align 4, !tbaa !206
  %2299 = load ptr, ptr %19, align 8, !tbaa !5
  %2300 = icmp ne ptr %2299, null
  br i1 %2300, label %2301, label %2306

2301:                                             ; preds = %2294
  %2302 = load ptr, ptr %19, align 8, !tbaa !5
  %2303 = getelementptr inbounds %struct.ImGuiWindow, ptr %2302, i32 0, i32 43
  %2304 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2303, i32 0, i32 27
  %2305 = load i32, ptr %2304, align 8, !tbaa !207
  br label %2307

2306:                                             ; preds = %2294
  br label %2307

2307:                                             ; preds = %2306, %2301
  %2308 = phi i32 [ %2305, %2301 ], [ 1, %2306 ]
  %2309 = load ptr, ptr %9, align 8, !tbaa !5
  %2310 = getelementptr inbounds %struct.ImGuiWindow, ptr %2309, i32 0, i32 43
  %2311 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2310, i32 0, i32 27
  store i32 %2308, ptr %2311, align 8, !tbaa !207
  %2312 = load ptr, ptr %9, align 8, !tbaa !5
  %2313 = getelementptr inbounds %struct.ImGuiWindow, ptr %2312, i32 0, i32 51
  %2314 = load float, ptr %2313, align 4, !tbaa !151
  %2315 = load ptr, ptr %9, align 8, !tbaa !5
  %2316 = getelementptr inbounds %struct.ImGuiWindow, ptr %2315, i32 0, i32 43
  %2317 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2316, i32 0, i32 28
  store float %2314, ptr %2317, align 4, !tbaa !208
  %2318 = load ptr, ptr %9, align 8, !tbaa !5
  %2319 = getelementptr inbounds %struct.ImGuiWindow, ptr %2318, i32 0, i32 43
  %2320 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2319, i32 0, i32 29
  store float -1.000000e+00, ptr %2320, align 8, !tbaa !209
  %2321 = load ptr, ptr %9, align 8, !tbaa !5
  %2322 = getelementptr inbounds %struct.ImGuiWindow, ptr %2321, i32 0, i32 43
  %2323 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2322, i32 0, i32 30
  call void @_ZN8ImVectorIiE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2323, i32 noundef 0)
  %2324 = load ptr, ptr %9, align 8, !tbaa !5
  %2325 = getelementptr inbounds %struct.ImGuiWindow, ptr %2324, i32 0, i32 43
  %2326 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2325, i32 0, i32 31
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2326, i32 noundef 0)
  %2327 = load ptr, ptr %9, align 8, !tbaa !5
  %2328 = getelementptr inbounds %struct.ImGuiWindow, ptr %2327, i32 0, i32 43
  %2329 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2328, i32 0, i32 32
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2329, i32 noundef 0)
  %2330 = load ptr, ptr %9, align 8, !tbaa !5
  %2331 = getelementptr inbounds %struct.ImGuiWindow, ptr %2330, i32 0, i32 43
  %2332 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2331, i32 0, i32 38
  store ptr null, ptr %2332, align 8, !tbaa !210
  %2333 = load ptr, ptr %9, align 8, !tbaa !5
  %2334 = getelementptr inbounds %struct.ImGuiWindow, ptr %2333, i32 0, i32 43
  %2335 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2334, i32 0, i32 9
  store i32 0, ptr %2335, align 4, !tbaa !211
  %2336 = load ptr, ptr %9, align 8, !tbaa !5
  %2337 = getelementptr inbounds %struct.ImGuiWindow, ptr %2336, i32 0, i32 43
  %2338 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2337, i32 0, i32 10
  store i32 0, ptr %2338, align 8, !tbaa !212
  %2339 = load ptr, ptr %9, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.ImGuiWindow, ptr %2339, i32 0, i32 53
  %2341 = load ptr, ptr %9, align 8, !tbaa !5
  %2342 = getelementptr inbounds %struct.ImGuiWindow, ptr %2341, i32 0, i32 43
  %2343 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2342, i32 0, i32 24
  store ptr %2340, ptr %2343, align 8, !tbaa !213
  %2344 = load ptr, ptr %9, align 8, !tbaa !5
  %2345 = getelementptr inbounds %struct.ImGuiWindow, ptr %2344, i32 0, i32 43
  %2346 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2345, i32 0, i32 33
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2346, i32 noundef 0)
  %2347 = load ptr, ptr %9, align 8, !tbaa !5
  %2348 = getelementptr inbounds %struct.ImGuiWindow, ptr %2347, i32 0, i32 52
  %2349 = load ptr, ptr %8, align 8, !tbaa !5
  %2350 = getelementptr inbounds %struct.ImGuiStyle, ptr %2349, i32 0, i32 13
  %2351 = getelementptr inbounds %struct.ImVec2, ptr %2350, i32 0, i32 0
  %2352 = load float, ptr %2351, align 4, !tbaa !113
  %2353 = load i8, ptr %15, align 1, !tbaa !59, !range !55, !noundef !56
  %2354 = trunc i8 %2353 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(48) %2348, i32 noundef 3, float noundef %2352, i1 noundef zeroext %2354)
  %2355 = load i32, ptr %6, align 4, !tbaa !9
  %2356 = and i32 %2355, 16777216
  %2357 = icmp ne i32 %2356, 0
  br i1 %2357, label %2358, label %2382

2358:                                             ; preds = %2307
  %2359 = load ptr, ptr %9, align 8, !tbaa !5
  %2360 = getelementptr inbounds %struct.ImGuiWindow, ptr %2359, i32 0, i32 43
  %2361 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2360, i32 0, i32 27
  %2362 = load i32, ptr %2361, align 8, !tbaa !207
  %2363 = load ptr, ptr %19, align 8, !tbaa !5
  %2364 = getelementptr inbounds %struct.ImGuiWindow, ptr %2363, i32 0, i32 43
  %2365 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2364, i32 0, i32 27
  %2366 = load i32, ptr %2365, align 8, !tbaa !207
  %2367 = icmp ne i32 %2362, %2366
  br i1 %2367, label %2368, label %2382

2368:                                             ; preds = %2358
  %2369 = load ptr, ptr %19, align 8, !tbaa !5
  %2370 = getelementptr inbounds %struct.ImGuiWindow, ptr %2369, i32 0, i32 43
  %2371 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2370, i32 0, i32 27
  %2372 = load i32, ptr %2371, align 8, !tbaa !207
  %2373 = load ptr, ptr %9, align 8, !tbaa !5
  %2374 = getelementptr inbounds %struct.ImGuiWindow, ptr %2373, i32 0, i32 43
  %2375 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2374, i32 0, i32 27
  store i32 %2372, ptr %2375, align 8, !tbaa !207
  %2376 = load ptr, ptr %9, align 8, !tbaa !5
  %2377 = getelementptr inbounds %struct.ImGuiWindow, ptr %2376, i32 0, i32 43
  %2378 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2377, i32 0, i32 30
  %2379 = load ptr, ptr %9, align 8, !tbaa !5
  %2380 = getelementptr inbounds %struct.ImGuiWindow, ptr %2379, i32 0, i32 43
  %2381 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2380, i32 0, i32 27
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %2378, ptr noundef nonnull align 4 dereferenceable(4) %2381)
  br label %2382

2382:                                             ; preds = %2368, %2358, %2307
  %2383 = load ptr, ptr %9, align 8, !tbaa !5
  %2384 = getelementptr inbounds %struct.ImGuiWindow, ptr %2383, i32 0, i32 32
  %2385 = load i32, ptr %2384, align 4, !tbaa !125
  %2386 = icmp sgt i32 %2385, 0
  br i1 %2386, label %2387, label %2392

2387:                                             ; preds = %2382
  %2388 = load ptr, ptr %9, align 8, !tbaa !5
  %2389 = getelementptr inbounds %struct.ImGuiWindow, ptr %2388, i32 0, i32 32
  %2390 = load i32, ptr %2389, align 4, !tbaa !125
  %2391 = add nsw i32 %2390, -1
  store i32 %2391, ptr %2389, align 4, !tbaa !125
  br label %2392

2392:                                             ; preds = %2387, %2382
  %2393 = load ptr, ptr %9, align 8, !tbaa !5
  %2394 = getelementptr inbounds %struct.ImGuiWindow, ptr %2393, i32 0, i32 33
  %2395 = load i32, ptr %2394, align 8, !tbaa !126
  %2396 = icmp sgt i32 %2395, 0
  br i1 %2396, label %2397, label %2402

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

2402:                                             ; preds = %2397, %2392
  %2403 = load i8, ptr %57, align 1, !tbaa !59, !range !55, !noundef !56
  %2404 = trunc i8 %2403 to i1
  br i1 %2404, label %2405, label %2408

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

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

2412:                                             ; preds = %2408
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #13
  %2413 = load ptr, ptr %9, align 8, !tbaa !5
  %2414 = getelementptr inbounds %struct.ImGuiWindow, ptr %2413, i32 0, i32 43
  %2415 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2414, i32 0, i32 27
  %2416 = load i32, ptr %2415, align 8, !tbaa !207
  store i32 %2416, ptr %104, align 4, !tbaa !9
  %2417 = load ptr, ptr %9, align 8, !tbaa !5
  %2418 = getelementptr inbounds %struct.ImGuiWindow, ptr %2417, i32 0, i32 43
  %2419 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2418, i32 0, i32 27
  %2420 = load i32, ptr %2419, align 8, !tbaa !207
  %2421 = or i32 %2420, 16
  store i32 %2421, ptr %2419, align 8, !tbaa !207
  %2422 = load ptr, ptr %9, align 8, !tbaa !5
  %2423 = getelementptr inbounds %struct.ImGuiWindow, ptr %2422, i32 0, i32 43
  %2424 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2423, i32 0, i32 17
  %2425 = load i32, ptr %2424, align 8, !tbaa !214
  %2426 = add nsw i32 %2425, 1
  store i32 %2426, ptr %2424, align 8, !tbaa !214
  %2427 = load ptr, ptr %9, align 8, !tbaa !5
  %2428 = getelementptr inbounds %struct.ImGuiWindow, ptr %2427, i32 0, i32 43
  %2429 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2428, i32 0, i32 18
  %2430 = load i32, ptr %2429, align 4, !tbaa !215
  %2431 = shl i32 %2430, 1
  store i32 %2431, ptr %2429, align 4, !tbaa !215
  %2432 = load i32, ptr %6, align 4, !tbaa !9
  %2433 = and i32 %2432, 32
  %2434 = icmp ne i32 %2433, 0
  br i1 %2434, label %2478, label %2435

2435:                                             ; preds = %2412
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #13
  %2436 = load ptr, ptr %9, align 8, !tbaa !5
  %2437 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976) %2436, ptr noundef @.str.76, ptr noundef null)
  store i32 %2437, ptr %105, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #13
  %2438 = load ptr, ptr %9, align 8, !tbaa !5
  %2439 = getelementptr inbounds %struct.ImGuiWindow, ptr %2438, i32 0, i32 3
  %2440 = load ptr, ptr %8, align 8, !tbaa !5
  %2441 = getelementptr inbounds %struct.ImGuiStyle, ptr %2440, i32 0, i32 10
  %2442 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2439, ptr noundef nonnull align 4 dereferenceable(8) %2441)
  store <2 x float> %2442, ptr %108, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %109, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %2443 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %108, ptr noundef nonnull align 4 dereferenceable(8) %109)
  store <2 x float> %2443, ptr %107, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #13
  %2444 = load ptr, ptr %9, align 8, !tbaa !5
  %2445 = getelementptr inbounds %struct.ImGuiWindow, ptr %2444, i32 0, i32 3
  %2446 = load ptr, ptr %8, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.ImGuiStyle, ptr %2446, i32 0, i32 10
  %2448 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2445, ptr noundef nonnull align 4 dereferenceable(8) %2447)
  store <2 x float> %2448, ptr %112, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #13
  %2449 = load ptr, ptr %7, align 8, !tbaa !5
  %2450 = getelementptr inbounds %struct.ImGuiContext, ptr %2449, i32 0, i32 6
  %2451 = load float, ptr %2450, align 8, !tbaa !150
  %2452 = load ptr, ptr %7, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.ImGuiContext, ptr %2452, i32 0, i32 6
  %2454 = load float, ptr %2453, align 8, !tbaa !150
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %113, float noundef %2451, float noundef %2454)
  %2455 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %112, ptr noundef nonnull align 4 dereferenceable(8) %113)
  store <2 x float> %2455, ptr %111, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %114, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %2456 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %111, ptr noundef nonnull align 4 dereferenceable(8) %114)
  store <2 x float> %2456, ptr %110, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %106, ptr noundef nonnull align 4 dereferenceable(8) %107, ptr noundef nonnull align 4 dereferenceable(8) %110)
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #13
  %2457 = load i32, ptr %105, align 4, !tbaa !9
  %2458 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %106, i32 noundef %2457, ptr noundef null)
  %2459 = load i32, ptr %105, align 4, !tbaa !9
  %2460 = call noundef zeroext i1 @_ZN5ImGui14ButtonBehaviorERK6ImRectjPbS3_i(ptr noundef nonnull align 4 dereferenceable(16) %106, i32 noundef %2459, ptr noundef null, ptr noundef null, i32 noundef 0)
  br i1 %2460, label %2461, label %2464

2461:                                             ; preds = %2435
  %2462 = load ptr, ptr %9, align 8, !tbaa !5
  %2463 = getelementptr inbounds %struct.ImGuiWindow, ptr %2462, i32 0, i32 24
  store i8 1, ptr %2463, align 2, !tbaa !121
  br label %2464

2464:                                             ; preds = %2461, %2435
  %2465 = load i32, ptr %105, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %106, i32 noundef %2465, i32 noundef 1)
  %2466 = load ptr, ptr %9, align 8, !tbaa !5
  %2467 = getelementptr inbounds %struct.ImGuiWindow, ptr %2466, i32 0, i32 3
  %2468 = load ptr, ptr %8, align 8, !tbaa !5
  %2469 = getelementptr inbounds %struct.ImGuiStyle, ptr %2468, i32 0, i32 10
  %2470 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2467, ptr noundef nonnull align 4 dereferenceable(8) %2469)
  store <2 x float> %2470, ptr %115, align 4
  %2471 = load ptr, ptr %9, align 8, !tbaa !5
  %2472 = getelementptr inbounds %struct.ImGuiWindow, ptr %2471, i32 0, i32 23
  %2473 = load i8, ptr %2472, align 1, !tbaa !122, !range !55, !noundef !56
  %2474 = trunc i8 %2473 to i1
  %2475 = zext i1 %2474 to i64
  %2476 = select i1 %2474, i32 1, i32 3
  %2477 = load <2 x float>, ptr %115, align 4
  call void @_ZN5ImGui11RenderArrowE6ImVec2if(<2 x float> %2477, i32 noundef %2476, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #13
  br label %2478

2478:                                             ; preds = %2464, %2412
  %2479 = load ptr, ptr %5, align 8, !tbaa !5
  %2480 = icmp ne ptr %2479, null
  br i1 %2480, label %2481, label %2513

2481:                                             ; preds = %2478
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #13
  %2482 = load ptr, ptr %8, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.ImGuiStyle, ptr %2482, i32 0, i32 10
  %2484 = getelementptr inbounds %struct.ImVec2, ptr %2483, i32 0, i32 1
  %2485 = load float, ptr %2484, align 4, !tbaa !216
  store float %2485, ptr %116, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #13
  %2486 = load ptr, ptr %7, align 8, !tbaa !5
  %2487 = getelementptr inbounds %struct.ImGuiContext, ptr %2486, i32 0, i32 6
  %2488 = load float, ptr %2487, align 8, !tbaa !150
  %2489 = fmul float %2488, 5.000000e-01
  store float %2489, ptr %117, align 4, !tbaa !62
  %2490 = load ptr, ptr %9, align 8, !tbaa !5
  %2491 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976) %2490, ptr noundef @.str.77, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #13
  %2492 = load ptr, ptr %9, align 8, !tbaa !5
  %2493 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(976) %2492)
  %2494 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %120, i32 0, i32 0
  %2495 = extractvalue { <2 x float>, <2 x float> } %2493, 0
  store <2 x float> %2495, ptr %2494, align 4
  %2496 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %120, i32 0, i32 1
  %2497 = extractvalue { <2 x float>, <2 x float> } %2493, 1
  store <2 x float> %2497, ptr %2496, align 4
  %2498 = call <2 x float> @_ZNK6ImRect5GetTREv(ptr noundef nonnull align 4 dereferenceable(16) %120)
  store <2 x float> %2498, ptr %119, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #13
  %2499 = load float, ptr %116, align 4, !tbaa !62
  %2500 = fneg float %2499
  %2501 = load float, ptr %117, align 4, !tbaa !62
  %2502 = fsub float %2500, %2501
  %2503 = load float, ptr %116, align 4, !tbaa !62
  %2504 = load float, ptr %117, align 4, !tbaa !62
  %2505 = fadd float %2503, %2504
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %121, float noundef %2502, float noundef %2505)
  %2506 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %119, ptr noundef nonnull align 4 dereferenceable(8) %121)
  store <2 x float> %2506, ptr %118, align 4
  %2507 = load float, ptr %117, align 4, !tbaa !62
  %2508 = fadd float %2507, 1.000000e+00
  %2509 = call noundef zeroext i1 @_ZN5ImGui11CloseButtonEjRK6ImVec2f(i32 noundef %2491, ptr noundef nonnull align 4 dereferenceable(8) %118, float noundef %2508)
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #13
  br i1 %2509, label %2510, label %2512

2510:                                             ; preds = %2481
  %2511 = load ptr, ptr %5, align 8, !tbaa !5
  store i8 0, ptr %2511, align 1, !tbaa !59
  br label %2512

2512:                                             ; preds = %2510, %2481
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #13
  br label %2513

2513:                                             ; preds = %2512, %2478
  %2514 = load ptr, ptr %9, align 8, !tbaa !5
  %2515 = getelementptr inbounds %struct.ImGuiWindow, ptr %2514, i32 0, i32 43
  %2516 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2515, i32 0, i32 17
  %2517 = load i32, ptr %2516, align 8, !tbaa !214
  %2518 = add nsw i32 %2517, -1
  store i32 %2518, ptr %2516, align 8, !tbaa !214
  %2519 = load ptr, ptr %9, align 8, !tbaa !5
  %2520 = getelementptr inbounds %struct.ImGuiWindow, ptr %2519, i32 0, i32 43
  %2521 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2520, i32 0, i32 18
  %2522 = load i32, ptr %2521, align 4, !tbaa !215
  %2523 = ashr i32 %2522, 1
  store i32 %2523, ptr %2521, align 4, !tbaa !215
  %2524 = load i32, ptr %104, align 4, !tbaa !9
  %2525 = load ptr, ptr %9, align 8, !tbaa !5
  %2526 = getelementptr inbounds %struct.ImGuiWindow, ptr %2525, i32 0, i32 43
  %2527 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2526, i32 0, i32 27
  store i32 %2524, ptr %2527, align 8, !tbaa !207
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #13
  %2528 = load ptr, ptr %4, align 8, !tbaa !5
  %2529 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %2528, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %2529, ptr %122, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %123) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %123, ptr align 4 %67, i64 16, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #13
  %2530 = load i32, ptr %6, align 4, !tbaa !9
  %2531 = and i32 %2530, 32
  %2532 = icmp ne i32 %2531, 0
  br i1 %2532, label %2533, label %2538

2533:                                             ; preds = %2513
  %2534 = load ptr, ptr %8, align 8, !tbaa !5
  %2535 = getelementptr inbounds %struct.ImGuiStyle, ptr %2534, i32 0, i32 10
  %2536 = getelementptr inbounds %struct.ImVec2, ptr %2535, i32 0, i32 0
  %2537 = load float, ptr %2536, align 4, !tbaa !217
  br label %2552

2538:                                             ; preds = %2513
  %2539 = load ptr, ptr %8, align 8, !tbaa !5
  %2540 = getelementptr inbounds %struct.ImGuiStyle, ptr %2539, i32 0, i32 10
  %2541 = getelementptr inbounds %struct.ImVec2, ptr %2540, i32 0, i32 0
  %2542 = load float, ptr %2541, align 4, !tbaa !217
  %2543 = load ptr, ptr %7, align 8, !tbaa !5
  %2544 = getelementptr inbounds %struct.ImGuiContext, ptr %2543, i32 0, i32 6
  %2545 = load float, ptr %2544, align 8, !tbaa !150
  %2546 = fadd float %2542, %2545
  %2547 = load ptr, ptr %8, align 8, !tbaa !5
  %2548 = getelementptr inbounds %struct.ImGuiStyle, ptr %2547, i32 0, i32 14
  %2549 = getelementptr inbounds %struct.ImVec2, ptr %2548, i32 0, i32 0
  %2550 = load float, ptr %2549, align 4, !tbaa !218
  %2551 = fadd float %2546, %2550
  br label %2552

2552:                                             ; preds = %2538, %2533
  %2553 = phi float [ %2537, %2533 ], [ %2551, %2538 ]
  store float %2553, ptr %124, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #13
  %2554 = load ptr, ptr %5, align 8, !tbaa !5
  %2555 = icmp eq ptr %2554, null
  br i1 %2555, label %2556, label %2561

2556:                                             ; preds = %2552
  %2557 = load ptr, ptr %8, align 8, !tbaa !5
  %2558 = getelementptr inbounds %struct.ImGuiStyle, ptr %2557, i32 0, i32 10
  %2559 = getelementptr inbounds %struct.ImVec2, ptr %2558, i32 0, i32 0
  %2560 = load float, ptr %2559, align 4, !tbaa !217
  br label %2575

2561:                                             ; preds = %2552
  %2562 = load ptr, ptr %8, align 8, !tbaa !5
  %2563 = getelementptr inbounds %struct.ImGuiStyle, ptr %2562, i32 0, i32 10
  %2564 = getelementptr inbounds %struct.ImVec2, ptr %2563, i32 0, i32 0
  %2565 = load float, ptr %2564, align 4, !tbaa !217
  %2566 = load ptr, ptr %7, align 8, !tbaa !5
  %2567 = getelementptr inbounds %struct.ImGuiContext, ptr %2566, i32 0, i32 6
  %2568 = load float, ptr %2567, align 8, !tbaa !150
  %2569 = fadd float %2565, %2568
  %2570 = load ptr, ptr %8, align 8, !tbaa !5
  %2571 = getelementptr inbounds %struct.ImGuiStyle, ptr %2570, i32 0, i32 14
  %2572 = getelementptr inbounds %struct.ImVec2, ptr %2571, i32 0, i32 0
  %2573 = load float, ptr %2572, align 4, !tbaa !218
  %2574 = fadd float %2569, %2573
  br label %2575

2575:                                             ; preds = %2561, %2556
  %2576 = phi float [ %2560, %2556 ], [ %2574, %2561 ]
  store float %2576, ptr %125, align 4, !tbaa !62
  %2577 = load ptr, ptr %8, align 8, !tbaa !5
  %2578 = getelementptr inbounds %struct.ImGuiStyle, ptr %2577, i32 0, i32 5
  %2579 = getelementptr inbounds %struct.ImVec2, ptr %2578, i32 0, i32 0
  %2580 = load float, ptr %2579, align 4, !tbaa !219
  %2581 = fcmp ogt float %2580, 0.000000e+00
  br i1 %2581, label %2582, label %2590

2582:                                             ; preds = %2575
  %2583 = load float, ptr %125, align 4, !tbaa !62
  %2584 = load float, ptr %124, align 4, !tbaa !62
  %2585 = load ptr, ptr %8, align 8, !tbaa !5
  %2586 = getelementptr inbounds %struct.ImGuiStyle, ptr %2585, i32 0, i32 5
  %2587 = getelementptr inbounds %struct.ImVec2, ptr %2586, i32 0, i32 0
  %2588 = load float, ptr %2587, align 4, !tbaa !219
  %2589 = call noundef float @_ZL6ImLerpIfET_S0_S0_f(float noundef %2583, float noundef %2584, float noundef %2588)
  store float %2589, ptr %125, align 4, !tbaa !62
  br label %2590

2590:                                             ; preds = %2582, %2575
  %2591 = load float, ptr %124, align 4, !tbaa !62
  %2592 = getelementptr inbounds %struct.ImRect, ptr %123, i32 0, i32 0
  %2593 = getelementptr inbounds %struct.ImVec2, ptr %2592, i32 0, i32 0
  %2594 = load float, ptr %2593, align 4, !tbaa !220
  %2595 = fadd float %2594, %2591
  store float %2595, ptr %2593, align 4, !tbaa !220
  %2596 = load float, ptr %125, align 4, !tbaa !62
  %2597 = getelementptr inbounds %struct.ImRect, ptr %123, i32 0, i32 1
  %2598 = getelementptr inbounds %struct.ImVec2, ptr %2597, i32 0, i32 0
  %2599 = load float, ptr %2598, align 4, !tbaa !221
  %2600 = fsub float %2599, %2596
  store float %2600, ptr %2598, align 4, !tbaa !221
  call void @llvm.lifetime.start.p0(i64 16, ptr %126) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %126, ptr align 4 %123, i64 16, i1 false), !tbaa.struct !102
  %2601 = load ptr, ptr %9, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.ImGuiWindow, ptr %2601, i32 0, i32 3
  %2603 = getelementptr inbounds %struct.ImVec2, ptr %2602, i32 0, i32 0
  %2604 = load float, ptr %2603, align 8, !tbaa !180
  %2605 = load ptr, ptr %9, align 8, !tbaa !5
  %2606 = getelementptr inbounds %struct.ImGuiWindow, ptr %2605, i32 0, i32 4
  %2607 = getelementptr inbounds %struct.ImVec2, ptr %2606, i32 0, i32 0
  %2608 = load float, ptr %2607, align 8, !tbaa !104
  %2609 = fadd float %2604, %2608
  %2610 = load ptr, ptr %5, align 8, !tbaa !5
  %2611 = icmp ne ptr %2610, null
  br i1 %2611, label %2612, label %2615

2612:                                             ; preds = %2590
  %2613 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %67)
  %2614 = fsub float %2613, 3.000000e+00
  br label %2620

2615:                                             ; preds = %2590
  %2616 = load ptr, ptr %8, align 8, !tbaa !5
  %2617 = getelementptr inbounds %struct.ImGuiStyle, ptr %2616, i32 0, i32 10
  %2618 = getelementptr inbounds %struct.ImVec2, ptr %2617, i32 0, i32 0
  %2619 = load float, ptr %2618, align 4, !tbaa !217
  br label %2620

2620:                                             ; preds = %2615, %2612
  %2621 = phi float [ %2614, %2612 ], [ %2619, %2615 ]
  %2622 = fsub float %2609, %2621
  %2623 = getelementptr inbounds %struct.ImRect, ptr %126, i32 0, i32 1
  %2624 = getelementptr inbounds %struct.ImVec2, ptr %2623, i32 0, i32 0
  store float %2622, ptr %2624, align 4, !tbaa !221
  %2625 = getelementptr inbounds %struct.ImRect, ptr %123, i32 0, i32 0
  %2626 = getelementptr inbounds %struct.ImRect, ptr %123, i32 0, i32 1
  %2627 = load ptr, ptr %4, align 8, !tbaa !5
  %2628 = load ptr, ptr %8, align 8, !tbaa !5
  %2629 = getelementptr inbounds %struct.ImGuiStyle, ptr %2628, i32 0, i32 5
  call void @_ZN5ImGui17RenderTextClippedERK6ImVec2S2_PKcS4_PS1_S2_PK6ImRect(ptr noundef nonnull align 4 dereferenceable(8) %2625, ptr noundef nonnull align 4 dereferenceable(8) %2626, ptr noundef %2627, ptr noundef null, ptr noundef %122, ptr noundef nonnull align 4 dereferenceable(8) %2629, ptr noundef %126)
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #13
  br label %2630

2630:                                             ; preds = %2620, %2408
  call void @llvm.lifetime.start.p0(i64 16, ptr %127) #13
  %2631 = load ptr, ptr %9, align 8, !tbaa !5
  %2632 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(976) %2631)
  %2633 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %127, i32 0, i32 0
  %2634 = extractvalue { <2 x float>, <2 x float> } %2632, 0
  store <2 x float> %2634, ptr %2633, align 4
  %2635 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %127, i32 0, i32 1
  %2636 = extractvalue { <2 x float>, <2 x float> } %2632, 1
  store <2 x float> %2636, ptr %2635, align 4
  %2637 = load ptr, ptr %9, align 8, !tbaa !5
  %2638 = getelementptr inbounds %struct.ImGuiWindow, ptr %2637, i32 0, i32 46
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2638, ptr align 4 %127, i64 16, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 16, ptr %127) #13
  %2639 = load ptr, ptr %9, align 8, !tbaa !5
  %2640 = getelementptr inbounds %struct.ImGuiWindow, ptr %2639, i32 0, i32 46
  %2641 = load ptr, ptr %9, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.ImGuiWindow, ptr %2641, i32 0, i32 45
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2640, ptr noundef nonnull align 4 dereferenceable(16) %2642)
  %2643 = getelementptr inbounds %struct.ImRect, ptr %67, i32 0, i32 0
  %2644 = getelementptr inbounds %struct.ImVec2, ptr %2643, i32 0, i32 0
  %2645 = load float, ptr %2644, align 4, !tbaa !220
  %2646 = load ptr, ptr %9, align 8, !tbaa !5
  %2647 = getelementptr inbounds %struct.ImGuiWindow, ptr %2646, i32 0, i32 11
  %2648 = load float, ptr %2647, align 4, !tbaa !110
  %2649 = fadd float %2645, %2648
  %2650 = load ptr, ptr %9, align 8, !tbaa !5
  %2651 = getelementptr inbounds %struct.ImGuiWindow, ptr %2650, i32 0, i32 47
  %2652 = getelementptr inbounds %struct.ImRect, ptr %2651, i32 0, i32 0
  %2653 = getelementptr inbounds %struct.ImVec2, ptr %2652, i32 0, i32 0
  store float %2649, ptr %2653, align 8, !tbaa !222
  %2654 = getelementptr inbounds %struct.ImRect, ptr %67, i32 0, i32 1
  %2655 = getelementptr inbounds %struct.ImVec2, ptr %2654, i32 0, i32 1
  %2656 = load float, ptr %2655, align 4, !tbaa !172
  %2657 = load ptr, ptr %9, align 8, !tbaa !5
  %2658 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %2657)
  %2659 = fadd float %2656, %2658
  %2660 = load i32, ptr %6, align 4, !tbaa !9
  %2661 = and i32 %2660, 1024
  %2662 = icmp ne i32 %2661, 0
  br i1 %2662, label %2667, label %2663

2663:                                             ; preds = %2630
  %2664 = load i32, ptr %6, align 4, !tbaa !9
  %2665 = and i32 %2664, 1
  %2666 = icmp ne i32 %2665, 0
  br i1 %2666, label %2671, label %2667

2667:                                             ; preds = %2663, %2630
  %2668 = load ptr, ptr %8, align 8, !tbaa !5
  %2669 = getelementptr inbounds %struct.ImGuiStyle, ptr %2668, i32 0, i32 12
  %2670 = load float, ptr %2669, align 4, !tbaa !167
  br label %2675

2671:                                             ; preds = %2663
  %2672 = load ptr, ptr %9, align 8, !tbaa !5
  %2673 = getelementptr inbounds %struct.ImGuiWindow, ptr %2672, i32 0, i32 11
  %2674 = load float, ptr %2673, align 4, !tbaa !110
  br label %2675

2675:                                             ; preds = %2671, %2667
  %2676 = phi float [ %2670, %2667 ], [ %2674, %2671 ]
  %2677 = fadd float %2659, %2676
  %2678 = load ptr, ptr %9, align 8, !tbaa !5
  %2679 = getelementptr inbounds %struct.ImGuiWindow, ptr %2678, i32 0, i32 47
  %2680 = getelementptr inbounds %struct.ImRect, ptr %2679, i32 0, i32 0
  %2681 = getelementptr inbounds %struct.ImVec2, ptr %2680, i32 0, i32 1
  store float %2677, ptr %2681, align 4, !tbaa !223
  %2682 = load ptr, ptr %9, align 8, !tbaa !5
  %2683 = getelementptr inbounds %struct.ImGuiWindow, ptr %2682, i32 0, i32 3
  %2684 = getelementptr inbounds %struct.ImVec2, ptr %2683, i32 0, i32 0
  %2685 = load float, ptr %2684, align 8, !tbaa !180
  %2686 = load ptr, ptr %9, align 8, !tbaa !5
  %2687 = getelementptr inbounds %struct.ImGuiWindow, ptr %2686, i32 0, i32 4
  %2688 = getelementptr inbounds %struct.ImVec2, ptr %2687, i32 0, i32 0
  %2689 = load float, ptr %2688, align 8, !tbaa !104
  %2690 = fadd float %2685, %2689
  %2691 = load ptr, ptr %9, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.ImGuiWindow, ptr %2691, i32 0, i32 17
  %2693 = getelementptr inbounds %struct.ImVec2, ptr %2692, i32 0, i32 0
  %2694 = load float, ptr %2693, align 8, !tbaa !187
  %2695 = fsub float %2690, %2694
  %2696 = load ptr, ptr %9, align 8, !tbaa !5
  %2697 = getelementptr inbounds %struct.ImGuiWindow, ptr %2696, i32 0, i32 11
  %2698 = load float, ptr %2697, align 4, !tbaa !110
  %2699 = fsub float %2695, %2698
  %2700 = load ptr, ptr %9, align 8, !tbaa !5
  %2701 = getelementptr inbounds %struct.ImGuiWindow, ptr %2700, i32 0, i32 47
  %2702 = getelementptr inbounds %struct.ImRect, ptr %2701, i32 0, i32 1
  %2703 = getelementptr inbounds %struct.ImVec2, ptr %2702, i32 0, i32 0
  store float %2699, ptr %2703, align 8, !tbaa !224
  %2704 = load ptr, ptr %9, align 8, !tbaa !5
  %2705 = getelementptr inbounds %struct.ImGuiWindow, ptr %2704, i32 0, i32 3
  %2706 = getelementptr inbounds %struct.ImVec2, ptr %2705, i32 0, i32 1
  %2707 = load float, ptr %2706, align 4, !tbaa !173
  %2708 = load ptr, ptr %9, align 8, !tbaa !5
  %2709 = getelementptr inbounds %struct.ImGuiWindow, ptr %2708, i32 0, i32 4
  %2710 = getelementptr inbounds %struct.ImVec2, ptr %2709, i32 0, i32 1
  %2711 = load float, ptr %2710, align 4, !tbaa !106
  %2712 = fadd float %2707, %2711
  %2713 = load ptr, ptr %9, align 8, !tbaa !5
  %2714 = getelementptr inbounds %struct.ImGuiWindow, ptr %2713, i32 0, i32 17
  %2715 = getelementptr inbounds %struct.ImVec2, ptr %2714, i32 0, i32 1
  %2716 = load float, ptr %2715, align 4, !tbaa !189
  %2717 = fsub float %2712, %2716
  %2718 = load ptr, ptr %9, align 8, !tbaa !5
  %2719 = getelementptr inbounds %struct.ImGuiWindow, ptr %2718, i32 0, i32 11
  %2720 = load float, ptr %2719, align 4, !tbaa !110
  %2721 = fsub float %2717, %2720
  %2722 = load ptr, ptr %9, align 8, !tbaa !5
  %2723 = getelementptr inbounds %struct.ImGuiWindow, ptr %2722, i32 0, i32 47
  %2724 = getelementptr inbounds %struct.ImRect, ptr %2723, i32 0, i32 1
  %2725 = getelementptr inbounds %struct.ImVec2, ptr %2724, i32 0, i32 1
  store float %2721, ptr %2725, align 4, !tbaa !225
  %2726 = load ptr, ptr %9, align 8, !tbaa !5
  %2727 = getelementptr inbounds %struct.ImGuiWindow, ptr %2726, i32 0, i32 47
  %2728 = getelementptr inbounds %struct.ImRect, ptr %2727, i32 0, i32 0
  %2729 = getelementptr inbounds %struct.ImVec2, ptr %2728, i32 0, i32 0
  %2730 = load float, ptr %2729, align 8, !tbaa !222
  %2731 = fadd float 5.000000e-01, %2730
  %2732 = load ptr, ptr %9, align 8, !tbaa !5
  %2733 = getelementptr inbounds %struct.ImGuiWindow, ptr %2732, i32 0, i32 9
  %2734 = getelementptr inbounds %struct.ImVec2, ptr %2733, i32 0, i32 0
  %2735 = load float, ptr %2734, align 8, !tbaa !112
  %2736 = load ptr, ptr %9, align 8, !tbaa !5
  %2737 = getelementptr inbounds %struct.ImGuiWindow, ptr %2736, i32 0, i32 11
  %2738 = load float, ptr %2737, align 4, !tbaa !110
  %2739 = fneg float %2738
  %2740 = call float @llvm.fmuladd.f32(float %2735, float 5.000000e-01, float %2739)
  %2741 = call noundef float @_ZL7ImFloorf(float noundef %2740)
  %2742 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2741)
  %2743 = fadd float %2731, %2742
  %2744 = call noundef float @_ZL7ImFloorf(float noundef %2743)
  %2745 = load ptr, ptr %9, align 8, !tbaa !5
  %2746 = getelementptr inbounds %struct.ImGuiWindow, ptr %2745, i32 0, i32 48
  %2747 = getelementptr inbounds %struct.ImRect, ptr %2746, i32 0, i32 0
  %2748 = getelementptr inbounds %struct.ImVec2, ptr %2747, i32 0, i32 0
  store float %2744, ptr %2748, align 8, !tbaa !226
  %2749 = load ptr, ptr %9, align 8, !tbaa !5
  %2750 = getelementptr inbounds %struct.ImGuiWindow, ptr %2749, i32 0, i32 47
  %2751 = getelementptr inbounds %struct.ImRect, ptr %2750, i32 0, i32 0
  %2752 = getelementptr inbounds %struct.ImVec2, ptr %2751, i32 0, i32 1
  %2753 = load float, ptr %2752, align 4, !tbaa !223
  %2754 = fadd float 5.000000e-01, %2753
  %2755 = call noundef float @_ZL7ImFloorf(float noundef %2754)
  %2756 = load ptr, ptr %9, align 8, !tbaa !5
  %2757 = getelementptr inbounds %struct.ImGuiWindow, ptr %2756, i32 0, i32 48
  %2758 = getelementptr inbounds %struct.ImRect, ptr %2757, i32 0, i32 0
  %2759 = getelementptr inbounds %struct.ImVec2, ptr %2758, i32 0, i32 1
  store float %2755, ptr %2759, align 4, !tbaa !227
  %2760 = load ptr, ptr %9, align 8, !tbaa !5
  %2761 = getelementptr inbounds %struct.ImGuiWindow, ptr %2760, i32 0, i32 47
  %2762 = getelementptr inbounds %struct.ImRect, ptr %2761, i32 0, i32 1
  %2763 = getelementptr inbounds %struct.ImVec2, ptr %2762, i32 0, i32 0
  %2764 = load float, ptr %2763, align 8, !tbaa !224
  %2765 = fadd float 5.000000e-01, %2764
  %2766 = load ptr, ptr %9, align 8, !tbaa !5
  %2767 = getelementptr inbounds %struct.ImGuiWindow, ptr %2766, i32 0, i32 9
  %2768 = getelementptr inbounds %struct.ImVec2, ptr %2767, i32 0, i32 0
  %2769 = load float, ptr %2768, align 8, !tbaa !112
  %2770 = load ptr, ptr %9, align 8, !tbaa !5
  %2771 = getelementptr inbounds %struct.ImGuiWindow, ptr %2770, i32 0, i32 11
  %2772 = load float, ptr %2771, align 4, !tbaa !110
  %2773 = fneg float %2772
  %2774 = call float @llvm.fmuladd.f32(float %2769, float 5.000000e-01, float %2773)
  %2775 = call noundef float @_ZL7ImFloorf(float noundef %2774)
  %2776 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2775)
  %2777 = fsub float %2765, %2776
  %2778 = call noundef float @_ZL7ImFloorf(float noundef %2777)
  %2779 = load ptr, ptr %9, align 8, !tbaa !5
  %2780 = getelementptr inbounds %struct.ImGuiWindow, ptr %2779, i32 0, i32 48
  %2781 = getelementptr inbounds %struct.ImRect, ptr %2780, i32 0, i32 1
  %2782 = getelementptr inbounds %struct.ImVec2, ptr %2781, i32 0, i32 0
  store float %2778, ptr %2782, align 8, !tbaa !228
  %2783 = load ptr, ptr %9, align 8, !tbaa !5
  %2784 = getelementptr inbounds %struct.ImGuiWindow, ptr %2783, i32 0, i32 47
  %2785 = getelementptr inbounds %struct.ImRect, ptr %2784, i32 0, i32 1
  %2786 = getelementptr inbounds %struct.ImVec2, ptr %2785, i32 0, i32 1
  %2787 = load float, ptr %2786, align 4, !tbaa !225
  %2788 = fadd float 5.000000e-01, %2787
  %2789 = call noundef float @_ZL7ImFloorf(float noundef %2788)
  %2790 = load ptr, ptr %9, align 8, !tbaa !5
  %2791 = getelementptr inbounds %struct.ImGuiWindow, ptr %2790, i32 0, i32 48
  %2792 = getelementptr inbounds %struct.ImRect, ptr %2791, i32 0, i32 1
  %2793 = getelementptr inbounds %struct.ImVec2, ptr %2792, i32 0, i32 1
  store float %2789, ptr %2793, align 4, !tbaa !229
  %2794 = load ptr, ptr %9, align 8, !tbaa !5
  %2795 = getelementptr inbounds %struct.ImGuiWindow, ptr %2794, i32 0, i32 12
  %2796 = load i32, ptr %2795, align 8, !tbaa !230
  %2797 = load ptr, ptr %9, align 8, !tbaa !5
  %2798 = getelementptr inbounds %struct.ImGuiWindow, ptr %2797, i32 0, i32 43
  %2799 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2798, i32 0, i32 11
  store i32 %2796, ptr %2799, align 4, !tbaa !231
  %2800 = getelementptr inbounds %struct.ImRect, ptr %67, i32 0, i32 0
  %2801 = getelementptr inbounds %struct.ImRect, ptr %67, i32 0, i32 1
  %2802 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2800, ptr noundef nonnull align 4 dereferenceable(8) %2801, i1 noundef zeroext false)
  %2803 = zext i1 %2802 to i64
  %2804 = select i1 %2802, i32 1, i32 0
  %2805 = load ptr, ptr %9, align 8, !tbaa !5
  %2806 = getelementptr inbounds %struct.ImGuiWindow, ptr %2805, i32 0, i32 43
  %2807 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2806, i32 0, i32 12
  store i32 %2804, ptr %2807, align 8, !tbaa !232
  %2808 = load ptr, ptr %9, align 8, !tbaa !5
  %2809 = getelementptr inbounds %struct.ImGuiWindow, ptr %2808, i32 0, i32 43
  %2810 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2809, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2810, ptr align 4 %67, i64 16, i1 false), !tbaa.struct !102
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #13
  br label %2811

2811:                                             ; preds = %2675, %540
  %2812 = load ptr, ptr %9, align 8, !tbaa !5
  %2813 = getelementptr inbounds %struct.ImGuiWindow, ptr %2812, i32 0, i32 48
  %2814 = getelementptr inbounds %struct.ImRect, ptr %2813, i32 0, i32 0
  %2815 = load ptr, ptr %9, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.ImGuiWindow, ptr %2815, i32 0, i32 48
  %2817 = getelementptr inbounds %struct.ImRect, ptr %2816, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2814, ptr noundef nonnull align 4 dereferenceable(8) %2817, i1 noundef zeroext true)
  %2818 = load i8, ptr %14, align 1, !tbaa !59, !range !55, !noundef !56
  %2819 = trunc i8 %2818 to i1
  br i1 %2819, label %2820, label %2823

2820:                                             ; preds = %2811
  %2821 = load ptr, ptr %9, align 8, !tbaa !5
  %2822 = getelementptr inbounds %struct.ImGuiWindow, ptr %2821, i32 0, i32 22
  store i8 0, ptr %2822, align 4, !tbaa !233
  br label %2823

2823:                                             ; preds = %2820, %2811
  %2824 = load ptr, ptr %9, align 8, !tbaa !5
  %2825 = getelementptr inbounds %struct.ImGuiWindow, ptr %2824, i32 0, i32 30
  %2826 = load i32, ptr %2825, align 4, !tbaa !101
  %2827 = add nsw i32 %2826, 1
  store i32 %2827, ptr %2825, align 4, !tbaa !101
  %2828 = load ptr, ptr %7, align 8, !tbaa !5
  %2829 = getelementptr inbounds %struct.ImGuiContext, ptr %2828, i32 0, i32 51
  call void @_ZN19ImGuiNextWindowData5ClearEv(ptr noundef nonnull align 8 dereferenceable(108) %2829)
  %2830 = load i32, ptr %6, align 4, !tbaa !9
  %2831 = and i32 %2830, 16777216
  %2832 = icmp ne i32 %2831, 0
  br i1 %2832, label %2833, label %2910

2833:                                             ; preds = %2823
  %2834 = load i32, ptr %6, align 4, !tbaa !9
  %2835 = and i32 %2834, 1
  %2836 = icmp ne i32 %2835, 0
  br i1 %2836, label %2837, label %2838

2837:                                             ; preds = %2833
  br label %2840

2838:                                             ; preds = %2833
  call void @__assert_fail(ptr noundef @.str.78, ptr noundef @.str.3, i32 noundef 6575, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

2839:                                             ; No predecessors!
  br label %2840

2840:                                             ; preds = %2839, %2837
  %2841 = load ptr, ptr %19, align 8, !tbaa !5
  %2842 = icmp ne ptr %2841, null
  br i1 %2842, label %2843, label %2848

2843:                                             ; preds = %2840
  %2844 = load ptr, ptr %19, align 8, !tbaa !5
  %2845 = getelementptr inbounds %struct.ImGuiWindow, ptr %2844, i32 0, i32 23
  %2846 = load i8, ptr %2845, align 1, !tbaa !122, !range !55, !noundef !56
  %2847 = trunc i8 %2846 to i1
  br label %2848

2848:                                             ; preds = %2843, %2840
  %2849 = phi i1 [ false, %2840 ], [ %2847, %2843 ]
  %2850 = load ptr, ptr %9, align 8, !tbaa !5
  %2851 = getelementptr inbounds %struct.ImGuiWindow, ptr %2850, i32 0, i32 23
  %2852 = zext i1 %2849 to i8
  store i8 %2852, ptr %2851, align 1, !tbaa !122
  %2853 = load i32, ptr %6, align 4, !tbaa !9
  %2854 = and i32 %2853, 64
  %2855 = icmp ne i32 %2854, 0
  br i1 %2855, label %2901, label %2856

2856:                                             ; preds = %2848
  %2857 = load ptr, ptr %9, align 8, !tbaa !5
  %2858 = getelementptr inbounds %struct.ImGuiWindow, ptr %2857, i32 0, i32 32
  %2859 = load i32, ptr %2858, align 4, !tbaa !125
  %2860 = icmp sle i32 %2859, 0
  br i1 %2860, label %2861, label %2901

2861:                                             ; preds = %2856
  %2862 = load ptr, ptr %9, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.ImGuiWindow, ptr %2862, i32 0, i32 33
  %2864 = load i32, ptr %2863, align 8, !tbaa !126
  %2865 = icmp sle i32 %2864, 0
  br i1 %2865, label %2866, label %2901

2866:                                             ; preds = %2861
  %2867 = load ptr, ptr %9, align 8, !tbaa !5
  %2868 = getelementptr inbounds %struct.ImGuiWindow, ptr %2867, i32 0, i32 46
  %2869 = getelementptr inbounds %struct.ImRect, ptr %2868, i32 0, i32 0
  %2870 = getelementptr inbounds %struct.ImVec2, ptr %2869, i32 0, i32 0
  %2871 = load float, ptr %2870, align 8, !tbaa !234
  %2872 = load ptr, ptr %9, align 8, !tbaa !5
  %2873 = getelementptr inbounds %struct.ImGuiWindow, ptr %2872, i32 0, i32 46
  %2874 = getelementptr inbounds %struct.ImRect, ptr %2873, i32 0, i32 1
  %2875 = getelementptr inbounds %struct.ImVec2, ptr %2874, i32 0, i32 0
  %2876 = load float, ptr %2875, align 8, !tbaa !235
  %2877 = fcmp oge float %2871, %2876
  br i1 %2877, label %2890, label %2878

2878:                                             ; preds = %2866
  %2879 = load ptr, ptr %9, align 8, !tbaa !5
  %2880 = getelementptr inbounds %struct.ImGuiWindow, ptr %2879, i32 0, i32 46
  %2881 = getelementptr inbounds %struct.ImRect, ptr %2880, i32 0, i32 0
  %2882 = getelementptr inbounds %struct.ImVec2, ptr %2881, i32 0, i32 1
  %2883 = load float, ptr %2882, align 4, !tbaa !236
  %2884 = load ptr, ptr %9, align 8, !tbaa !5
  %2885 = getelementptr inbounds %struct.ImGuiWindow, ptr %2884, i32 0, i32 46
  %2886 = getelementptr inbounds %struct.ImRect, ptr %2885, i32 0, i32 1
  %2887 = getelementptr inbounds %struct.ImVec2, ptr %2886, i32 0, i32 1
  %2888 = load float, ptr %2887, align 4, !tbaa !237
  %2889 = fcmp oge float %2883, %2888
  br label %2890

2890:                                             ; preds = %2878, %2866
  %2891 = phi i1 [ true, %2866 ], [ %2889, %2878 ]
  %2892 = zext i1 %2891 to i32
  %2893 = load ptr, ptr %9, align 8, !tbaa !5
  %2894 = getelementptr inbounds %struct.ImGuiWindow, ptr %2893, i32 0, i32 23
  %2895 = load i8, ptr %2894, align 1, !tbaa !122, !range !55, !noundef !56
  %2896 = trunc i8 %2895 to i1
  %2897 = zext i1 %2896 to i32
  %2898 = or i32 %2897, %2892
  %2899 = icmp ne i32 %2898, 0
  %2900 = zext i1 %2899 to i8
  store i8 %2900, ptr %2894, align 1, !tbaa !122
  br label %2901

2901:                                             ; preds = %2890, %2861, %2856, %2848
  %2902 = load ptr, ptr %9, align 8, !tbaa !5
  %2903 = getelementptr inbounds %struct.ImGuiWindow, ptr %2902, i32 0, i32 23
  %2904 = load i8, ptr %2903, align 1, !tbaa !122, !range !55, !noundef !56
  %2905 = trunc i8 %2904 to i1
  br i1 %2905, label %2906, label %2909

2906:                                             ; preds = %2901
  %2907 = load ptr, ptr %9, align 8, !tbaa !5
  %2908 = getelementptr inbounds %struct.ImGuiWindow, ptr %2907, i32 0, i32 20
  store i8 0, ptr %2908, align 2, !tbaa !97
  br label %2909

2909:                                             ; preds = %2906, %2901
  br label %2910

2910:                                             ; preds = %2909, %2823
  %2911 = load ptr, ptr %8, align 8, !tbaa !5
  %2912 = getelementptr inbounds %struct.ImGuiStyle, ptr %2911, i32 0, i32 0
  %2913 = load float, ptr %2912, align 4, !tbaa !238
  %2914 = fcmp ole float %2913, 0.000000e+00
  br i1 %2914, label %2915, label %2918

2915:                                             ; preds = %2910
  %2916 = load ptr, ptr %9, align 8, !tbaa !5
  %2917 = getelementptr inbounds %struct.ImGuiWindow, ptr %2916, i32 0, i32 20
  store i8 0, ptr %2917, align 2, !tbaa !97
  br label %2918

2918:                                             ; preds = %2915, %2910
  %2919 = load ptr, ptr %9, align 8, !tbaa !5
  %2920 = getelementptr inbounds %struct.ImGuiWindow, ptr %2919, i32 0, i32 23
  %2921 = load i8, ptr %2920, align 1, !tbaa !122, !range !55, !noundef !56
  %2922 = trunc i8 %2921 to i1
  br i1 %2922, label %2928, label %2923

2923:                                             ; preds = %2918
  %2924 = load ptr, ptr %9, align 8, !tbaa !5
  %2925 = getelementptr inbounds %struct.ImGuiWindow, ptr %2924, i32 0, i32 20
  %2926 = load i8, ptr %2925, align 2, !tbaa !97, !range !55, !noundef !56
  %2927 = trunc i8 %2926 to i1
  br i1 %2927, label %2938, label %2928

2928:                                             ; preds = %2923, %2918
  %2929 = load ptr, ptr %9, align 8, !tbaa !5
  %2930 = getelementptr inbounds %struct.ImGuiWindow, ptr %2929, i32 0, i32 32
  %2931 = load i32, ptr %2930, align 4, !tbaa !125
  %2932 = icmp sle i32 %2931, 0
  br i1 %2932, label %2933, label %2938

2933:                                             ; preds = %2928
  %2934 = load ptr, ptr %9, align 8, !tbaa !5
  %2935 = getelementptr inbounds %struct.ImGuiWindow, ptr %2934, i32 0, i32 33
  %2936 = load i32, ptr %2935, align 8, !tbaa !126
  %2937 = icmp sle i32 %2936, 0
  br label %2938

2938:                                             ; preds = %2933, %2928, %2923
  %2939 = phi i1 [ false, %2928 ], [ false, %2923 ], [ %2937, %2933 ]
  %2940 = load ptr, ptr %9, align 8, !tbaa !5
  %2941 = getelementptr inbounds %struct.ImGuiWindow, ptr %2940, i32 0, i32 25
  %2942 = zext i1 %2939 to i8
  store i8 %2942, ptr %2941, align 1, !tbaa !239
  %2943 = load ptr, ptr %9, align 8, !tbaa !5
  %2944 = getelementptr inbounds %struct.ImGuiWindow, ptr %2943, i32 0, i32 25
  %2945 = load i8, ptr %2944, align 1, !tbaa !239, !range !55, !noundef !56
  %2946 = trunc i8 %2945 to i1
  %2947 = xor i1 %2946, true
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #13
  ret i1 %2947
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) #9

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11RenderArrowE6ImVec2if(<2 x float>, i32 noundef, float noundef) #9

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 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)) #9 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 nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefEixEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL28GetWindowBgColorIdxFromFlagsi(i32 noundef) #1

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

declare void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(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) #10

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui9ScrollbarEi(i32 noundef) #9

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden { <2 x float>, <2 x float> } @_ZL13GetBorderRectP11ImGuiWindowiff(ptr noundef, i32 noundef, float noundef, float noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5ImGui13GetScrollMaxYEv() #7

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui14ButtonBehaviorERK6ImRectjPbS3_i(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, ptr noundef, ptr noundef, i32 noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui11CloseButtonEjRK6ImVec2f(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), float noundef) #9

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

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

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

!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 = !{!12, !13, i64 0}
!12 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !14, i64 8, !17, i64 5408, !6, i64 6232, !16, i64 6240, !16, i64 6244, !18, i64 6248, !16, i64 6384, !10, i64 6388, !10, i64 6392, !10, i64 6396, !20, i64 6400, !20, i64 6416, !20, i64 6432, !21, i64 6448, !10, i64 6464, !6, i64 6472, !6, i64 6480, !6, i64 6488, !10, i64 6496, !13, i64 6500, !10, i64 6504, !16, i64 6508, !10, i64 6512, !10, i64 6516, !16, i64 6520, !13, i64 6524, !13, i64 6525, !13, i64 6526, !13, i64 6527, !13, i64 6528, !13, i64 6529, !10, i64 6532, !15, i64 6536, !6, i64 6544, !6, i64 6552, !23, i64 6560, !10, i64 6564, !16, i64 6568, !6, i64 6576, !24, i64 6584, !25, i64 6600, !26, i64 6616, !27, i64 6632, !27, i64 6648, !28, i64 6664, !13, i64 6776, !10, i64 6780, !6, i64 6784, !10, i64 6792, !10, i64 6796, !10, i64 6800, !10, i64 6804, !10, i64 6808, !10, i64 6812, !10, i64 6816, !10, i64 6820, !23, i64 6824, !29, i64 6828, !10, i64 6844, !6, i64 6848, !16, i64 6856, !16, i64 6860, !13, i64 6864, !10, i64 6868, !10, i64 6872, !13, i64 6876, !13, i64 6877, !13, i64 6878, !13, i64 6879, !13, i64 6880, !13, i64 6881, !13, i64 6882, !10, i64 6884, !29, i64 6888, !13, i64 6904, !13, i64 6905, !10, i64 6908, !30, i64 6912, !10, i64 6916, !10, i64 6920, !10, i64 6924, !31, i64 6928, !31, i64 6976, !31, i64 7024, !32, i64 7072, !33, i64 7120, !16, i64 7152, !34, i64 7160, !10, i64 7328, !13, i64 7332, !10, i64 7336, !10, i64 7340, !42, i64 7344, !29, i64 7408, !10, i64 7424, !10, i64 7428, !16, i64 7432, !10, i64 7436, !10, i64 7440, !10, i64 7444, !43, i64 7448, !7, i64 7464, !44, i64 7472, !49, i64 11176, !10, i64 11288, !10, i64 11292, !19, i64 11296, !13, i64 11312, !16, i64 11316, !16, i64 11320, !15, i64 11324, !10, i64 11332, !45, i64 11336, !15, i64 11352, !15, i64 11360, !13, i64 11368, !16, i64 11372, !52, i64 11376, !53, i64 11392, !54, i64 11408, !13, i64 11424, !6, i64 11432, !52, i64 11440, !10, i64 11456, !10, i64 11460, !7, i64 11464, !10, i64 11944, !16, i64 11948, !10, i64 11952, !10, i64 11956, !10, i64 11960, !7, i64 11964}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, 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 136, !16, i64 140, !6, i64 144, !6, i64 152, !16, i64 160, !13, i64 164, !6, i64 168, !15, i64 176, !15, i64 184, !15, i64 192, !13, i64 200, !13, i64 201, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !15, i64 256, !7, i64 264, !16, i64 272, !16, i64 276, !13, i64 280, !13, i64 281, !13, i64 282, !13, i64 283, !13, i64 284, !7, i64 285, !7, i64 798, !7, i64 832, !13, i64 916, !13, i64 917, !13, i64 918, !13, i64 919, !13, i64 920, !13, i64 921, !13, i64 922, !16, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !15, i64 940, !15, i64 948, !7, i64 956, !7, i64 996, !7, i64 1016, !7, i64 1021, !7, i64 1026, !7, i64 1031, !7, i64 1036, !7, i64 1056, !7, i64 1076, !7, i64 1116, !7, i64 1136, !7, i64 3184, !7, i64 5232, !7, i64 5316}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !15, i64 4, !16, i64 12, !16, i64 16, !15, i64 20, !15, i64 28, !16, i64 36, !16, i64 40, !16, i64 44, !16, i64 48, !15, i64 52, !16, i64 60, !16, i64 64, !15, i64 68, !15, i64 76, !15, i64 84, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !15, i64 116, !15, i64 124, !15, i64 132, !16, i64 140, !13, i64 144, !13, i64 145, !16, i64 148, !7, i64 152}
!18 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !19, i64 24, !7, i64 40}
!19 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!20 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!"_ZTS12ImGuiStorage", !22, i64 0}
!22 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!24 = !{!"_ZTS8ImVectorI11ImGuiColModE", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorI13ImGuiPopupRefE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !15, i64 28, !15, i64 36, !15, i64 44, !15, i64 52, !13, i64 60, !29, i64 64, !6, i64 80, !6, i64 88, !16, i64 96, !15, i64 100}
!29 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!30 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!31 = !{!"_ZTS18ImGuiNavMoveResult", !10, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !29, i64 28}
!32 = !{!"_ZTS10ImDrawData", !13, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !15, i64 28, !15, i64 36}
!33 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!34 = !{!"_ZTS10ImDrawList", !35, i64 0, !36, i64 16, !37, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !6, i64 80, !6, i64 88, !38, i64 96, !39, i64 112, !40, i64 128, !10, i64 144, !10, i64 148, !41, i64 152}
!35 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!42 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !13, i64 57, !13, i64 58}
!43 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS18ImGuiTextEditState", !10, i64 0, !36, i64 8, !45, i64 24, !45, i64 40, !10, i64 56, !10, i64 60, !10, i64 64, !16, i64 68, !46, i64 72, !16, i64 3692, !13, i64 3696, !13, i64 3697}
!45 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTSN8ImGuiStb17STB_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, !16, i64 20, !47, i64 24}
!47 = !{!"_ZTSN8ImGuiStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !48, i64 3582, !48, i64 3584, !10, i64 3588, !10, i64 3592}
!48 = !{!"short", !7, i64 0}
!49 = !{!"_ZTS6ImFont", !16, i64 0, !16, i64 4, !15, i64 8, !50, i64 16, !51, i64 32, !36, i64 48, !6, i64 64, !16, i64 72, !48, i64 76, !48, i64 78, !6, i64 80, !6, i64 88, !16, i64 96, !16, i64 100, !13, i64 104, !10, i64 108}
!50 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"_ZTS15ImGuiTextBuffer", !45, i64 0}
!53 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{i8 0, i8 2}
!56 = !{}
!57 = !{!12, !10, i64 6392}
!58 = !{!12, !10, i64 6388}
!59 = !{!13, !13, i64 0}
!60 = !{!12, !10, i64 6668}
!61 = !{i64 0, i64 4, !62, i64 4, i64 4, !62}
!62 = !{!16, !16, i64 0}
!63 = !{!64, !10, i64 592}
!64 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !16, i64 72, !16, i64 76, !10, i64 80, !10, i64 84, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !13, i64 120, !13, i64 121, !13, i64 122, !13, i64 123, !13, i64 124, !13, i64 125, !13, i64 126, !13, i64 127, !13, i64 128, !13, i64 129, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !13, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !15, i64 184, !15, i64 192, !65, i64 200, !68, i64 496, !29, i64 512, !29, i64 528, !29, i64 544, !29, i64 560, !29, i64 576, !10, i64 592, !16, i64 596, !69, i64 600, !21, i64 648, !70, i64 664, !16, i64 680, !10, i64 684, !6, i64 688, !34, i64 696, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !7, i64 912, !7, i64 920, !10, i64 952, !10, i64 956, !10, i64 960, !10, i64 964, !10, i64 968, !10, i64 972}
!65 = !{!"_ZTS19ImGuiWindowTempData", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !16, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !16, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !29, i64 68, !29, i64 84, !13, i64 100, !13, i64 101, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !13, i64 120, !15, i64 124, !20, i64 136, !6, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !16, i64 172, !16, i64 176, !66, i64 184, !51, i64 200, !51, i64 216, !67, i64 232, !7, i64 248, !16, i64 272, !16, i64 276, !16, i64 280, !6, i64 288}
!66 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !16, i64 4, !16, i64 8, !16, i64 12, !7, i64 16, !7, i64 32}
!70 = !{!"_ZTS8ImVectorI15ImGuiColumnsSetE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!64, !10, i64 12}
!72 = !{!64, !10, i64 168}
!73 = !{!12, !10, i64 6648}
!74 = !{!64, !10, i64 144}
!75 = !{!76, !10, i64 0}
!76 = !{!"_ZTS13ImGuiPopupRef", !10, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !15, i64 32, !15, i64 40}
!77 = !{!76, !6, i64 8}
!78 = !{!64, !13, i64 128}
!79 = !{!64, !13, i64 129}
!80 = !{!64, !6, i64 864}
!81 = !{!12, !10, i64 6664}
!82 = !{!64, !10, i64 172}
!83 = !{!64, !10, i64 176}
!84 = !{!12, !16, i64 6708}
!85 = !{!12, !16, i64 6712}
!86 = !{!12, !10, i64 6672}
!87 = !{!64, !16, i64 60}
!88 = !{!12, !10, i64 6676}
!89 = !{!12, !13, i64 6724}
!90 = !{!12, !10, i64 6684}
!91 = !{!64, !6, i64 896}
!92 = !{!64, !6, i64 888}
!93 = !{!64, !6, i64 880}
!94 = !{!64, !6, i64 872}
!95 = distinct !{!95, !96}
!96 = !{!"llvm.loop.mustprogress"}
!97 = !{!64, !13, i64 122}
!98 = !{!64, !10, i64 132}
!99 = !{!12, !10, i64 6464}
!100 = !{!64, !10, i64 136}
!101 = !{!64, !10, i64 140}
!102 = !{i64 0, i64 4, !62, i64 4, i64 4, !62, i64 8, i64 4, !62, i64 12, i64 4, !62}
!103 = !{!64, !16, i64 32}
!104 = !{!64, !16, i64 24}
!105 = !{!64, !16, i64 36}
!106 = !{!64, !16, i64 28}
!107 = !{!17, !16, i64 40}
!108 = !{!17, !16, i64 48}
!109 = !{!17, !16, i64 16}
!110 = !{!64, !16, i64 76}
!111 = !{!17, !16, i64 8}
!112 = !{!64, !16, i64 64}
!113 = !{!17, !16, i64 68}
!114 = !{!12, !16, i64 6764}
!115 = !{!64, !16, i64 324}
!116 = !{!12, !16, i64 6768}
!117 = !{!64, !16, i64 328}
!118 = !{!12, !6, i64 6480}
!119 = !{!12, !10, i64 6496}
!120 = !{!12, !10, i64 6504}
!121 = !{!64, !13, i64 126}
!122 = !{!64, !13, i64 125}
!123 = !{!15, !16, i64 0}
!124 = !{!15, !16, i64 4}
!125 = !{!64, !10, i64 148}
!126 = !{!64, !10, i64 152}
!127 = !{!64, !13, i64 156}
!128 = !{!64, !16, i64 40}
!129 = !{!64, !16, i64 44}
!130 = !{!64, !16, i64 52}
!131 = !{!64, !13, i64 121}
!132 = !{!64, !16, i64 48}
!133 = !{!17, !16, i64 100}
!134 = !{!64, !13, i64 120}
!135 = !{!64, !10, i64 164}
!136 = !{!64, !10, i64 336}
!137 = !{!64, !16, i64 184}
!138 = !{!12, !16, i64 16}
!139 = !{!12, !16, i64 20}
!140 = !{!17, !16, i64 36}
!141 = !{!17, !16, i64 44}
!142 = !{!17, !16, i64 12}
!143 = !{!64, !16, i64 72}
!144 = !{!64, !10, i64 968}
!145 = !{!64, !10, i64 952}
!146 = !{!64, !10, i64 960}
!147 = !{!64, !10, i64 972}
!148 = !{!64, !10, i64 956}
!149 = !{!64, !10, i64 964}
!150 = !{!12, !16, i64 6240}
!151 = !{!64, !16, i64 596}
!152 = !{!64, !6, i64 688}
!153 = !{!12, !13, i64 5552}
!154 = !{!12, !13, i64 5553}
!155 = !{!34, !10, i64 48}
!156 = !{!12, !6, i64 6232}
!157 = !{!49, !6, i64 88}
!158 = !{!159, !6, i64 8}
!159 = !{!"_ZTS11ImFontAtlas", !10, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !15, i64 48, !15, i64 56, !26, i64 64, !160, i64 80, !161, i64 96, !7, i64 112}
!160 = !{!"_ZTS8ImVectorIN11ImFontAtlas10CustomRectEE", !10, i64 0, !10, i64 4, !6, i64 8}
!161 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!162 = !{!12, !16, i64 7152}
!163 = !{!12, !6, i64 6848}
!164 = !{!12, !16, i64 6860}
!165 = !{!12, !16, i64 5420}
!166 = !{!12, !6, i64 6784}
!167 = !{!17, !16, i64 64}
!168 = !{!12, !16, i64 5472}
!169 = !{!12, !13, i64 6878}
!170 = !{!12, !10, i64 6688}
!171 = !{!12, !16, i64 6760}
!172 = !{!29, !16, i64 12}
!173 = !{!64, !16, i64 20}
!174 = !{!175, !16, i64 8}
!175 = !{!"_ZTS18ImGuiResizeGripDef", !15, i64 0, !15, i64 8, !10, i64 16, !10, i64 20}
!176 = !{!175, !16, i64 12}
!177 = !{!175, !10, i64 16}
!178 = !{!175, !10, i64 20}
!179 = distinct !{!179, !96}
!180 = !{!64, !16, i64 16}
!181 = !{!64, !16, i64 88}
!182 = !{!64, !16, i64 576}
!183 = !{!64, !16, i64 92}
!184 = !{!64, !16, i64 68}
!185 = !{!64, !16, i64 580}
!186 = !{!64, !16, i64 56}
!187 = !{!64, !16, i64 112}
!188 = !{!64, !16, i64 584}
!189 = !{!64, !16, i64 116}
!190 = !{!64, !16, i64 588}
!191 = !{!64, !16, i64 472}
!192 = !{!64, !16, i64 476}
!193 = !{!64, !16, i64 480}
!194 = !{!64, !16, i64 240}
!195 = !{!64, !16, i64 232}
!196 = !{!64, !16, i64 244}
!197 = !{!64, !16, i64 236}
!198 = !{!64, !13, i64 300}
!199 = !{!64, !13, i64 301}
!200 = !{!64, !10, i64 316}
!201 = !{!64, !10, i64 312}
!202 = !{!64, !13, i64 320}
!203 = !{!64, !16, i64 204}
!204 = !{!64, !16, i64 248}
!205 = !{!64, !10, i64 360}
!206 = !{!64, !10, i64 364}
!207 = !{!64, !10, i64 368}
!208 = !{!64, !16, i64 372}
!209 = !{!64, !16, i64 376}
!210 = !{!64, !6, i64 488}
!211 = !{!64, !10, i64 252}
!212 = !{!64, !10, i64 256}
!213 = !{!64, !6, i64 352}
!214 = !{!64, !10, i64 304}
!215 = !{!64, !10, i64 308}
!216 = !{!17, !16, i64 56}
!217 = !{!17, !16, i64 52}
!218 = !{!17, !16, i64 76}
!219 = !{!17, !16, i64 28}
!220 = !{!29, !16, i64 0}
!221 = !{!29, !16, i64 8}
!222 = !{!64, !16, i64 544}
!223 = !{!64, !16, i64 548}
!224 = !{!64, !16, i64 552}
!225 = !{!64, !16, i64 556}
!226 = !{!64, !16, i64 560}
!227 = !{!64, !16, i64 564}
!228 = !{!64, !16, i64 568}
!229 = !{!64, !16, i64 572}
!230 = !{!64, !10, i64 80}
!231 = !{!64, !10, i64 260}
!232 = !{!64, !10, i64 264}
!233 = !{!64, !13, i64 124}
!234 = !{!64, !16, i64 528}
!235 = !{!64, !16, i64 536}
!236 = !{!64, !16, i64 532}
!237 = !{!64, !16, i64 540}
!238 = !{!17, !16, i64 0}
!239 = !{!64, !13, i64 127}


; 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.ImGuiResizeGripDef = type { %struct.ImVec2, %struct.ImVec2, i32, i32 }
%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 [67 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [14 x i8], align 1
@_ZL15resize_grip_def = external hidden global [4 x %struct.ImGuiResizeGripDef], align 16
@.str.72 = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.78 = 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 nounwind uwtable
declare hidden noundef float @_ZL7ImFloorf(float noundef) local_unnamed_addr #4

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

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

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

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

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

; Function Attrs: mustprogress 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: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL10ImSaturatef(float noundef) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(48), i32 noundef, float noundef, i1 noundef zeroext) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976), ptr noundef, ptr noundef) local_unnamed_addr #7 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, ptr noundef) local_unnamed_addr #7

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

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

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

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

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

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

declare void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #10

declare void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef) local_unnamed_addr #10

; 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 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 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 writeonly %1, i32 noundef %2) local_unnamed_addr #9 {
  %4 = alloca ptr, align 8
  %5 = alloca %struct.ImVec2, align 8
  %6 = alloca %struct.ImVec2, align 8
  %7 = alloca %struct.ImRect, align 4
  %8 = alloca %struct.ImVec4, align 4
  %9 = alloca %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.ImVec2, align 4
  %14 = alloca %struct.ImRect, align 8
  %15 = alloca %struct.ImVec2, align 8
  %16 = alloca %struct.ImVec2, align 8
  %17 = alloca %struct.ImVec2, align 8
  %18 = alloca %struct.ImVec2, align 8
  %19 = alloca %struct.ImVec2, align 8
  %20 = alloca %struct.ImVec2, align 8
  %21 = alloca %struct.ImVec2, align 8
  %22 = alloca %struct.ImVec2, align 8
  %23 = alloca %struct.ImVec2, align 8
  %24 = alloca i32, align 4
  %25 = alloca [4 x i32], align 16
  %26 = alloca %struct.ImRect, align 8
  %27 = alloca %struct.ImRect, align 8
  %28 = alloca %struct.ImRect, align 8
  %29 = alloca %struct.ImVec2, align 8
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImVec2, align 8
  %32 = alloca %struct.ImRect, align 8
  %33 = alloca %struct.ImRect, align 8
  %34 = alloca %struct.ImVec2, align 8
  %35 = alloca %struct.ImVec2, align 8
  %36 = alloca %struct.ImVec2, align 8
  %37 = alloca %struct.ImVec2, align 8
  %38 = alloca %struct.ImVec2, align 8
  %39 = alloca %struct.ImVec2, align 8
  %40 = alloca %struct.ImVec2, align 4
  %41 = alloca %struct.ImVec2, align 8
  %42 = alloca %struct.ImVec2, align 8
  %43 = alloca %struct.ImVec2, align 4
  %44 = alloca %struct.ImVec2, align 4
  %45 = alloca %struct.ImVec2, align 8
  %46 = alloca %struct.ImRect, align 8
  %47 = alloca %struct.ImVec2, align 8
  %48 = alloca %struct.ImVec2, align 8
  %49 = alloca %struct.ImVec2, align 4
  %50 = alloca %struct.ImVec2, align 8
  %51 = alloca %struct.ImVec2, align 8
  %52 = alloca %struct.ImVec2, align 4
  %53 = alloca %struct.ImRect, align 8
  %54 = alloca %struct.ImVec2, align 4
  %55 = alloca %struct.ImRect, align 4
  %56 = alloca %struct.ImVec2, align 8
  %57 = alloca %struct.ImVec2, align 8
  %58 = alloca %struct.ImVec2, align 4
  %59 = alloca %struct.ImVec2, align 8
  %60 = alloca %struct.ImVec2, align 8
  %61 = alloca %struct.ImVec2, align 8
  %62 = alloca %struct.ImVec2, align 4
  %63 = alloca %struct.ImVec2, align 4
  %64 = alloca %struct.ImVec2, align 8
  %65 = alloca %struct.ImVec2, align 8
  %66 = alloca %struct.ImRect, align 8
  %67 = alloca %struct.ImVec2, align 4
  %68 = alloca %struct.ImVec2, align 8
  %69 = alloca %struct.ImRect, align 4
  %70 = alloca %struct.ImRect, align 4
  %71 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %71, i64 5408
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %73, label %74

73:                                               ; preds = %3
  tail call void @__assert_fail(ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.3, i32 noundef 6005, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

74:                                               ; preds = %3
  %75 = load i8, ptr %71, align 8, !tbaa !9, !range !54, !noundef !55
  %76 = trunc nuw i8 %75 to i1
  br i1 %76, label %78, label %77

77:                                               ; preds = %74
  tail call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.3, i32 noundef 6006, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

78:                                               ; preds = %74
  %79 = getelementptr inbounds i8, ptr %71, i64 6392
  %80 = load i32, ptr %79, align 8, !tbaa !56
  %81 = getelementptr inbounds i8, ptr %71, i64 6388
  %82 = load i32, ptr %81, align 4, !tbaa !57
  %.not370 = icmp eq i32 %80, %82
  br i1 %.not370, label %83, label %84

83:                                               ; preds = %78
  tail call void @__assert_fail(ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.3, i32 noundef 6007, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

84:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #14
  %85 = tail call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef nonnull %0)
  store ptr %85, ptr %4, align 8, !tbaa !5
  %86 = icmp ne ptr %85, null
  br i1 %86, label %97, label %87

87:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #14
  %88 = getelementptr inbounds i8, ptr %71, i64 6668
  %89 = load i32, ptr %88, align 4, !tbaa !58
  %.not371 = icmp eq i32 %89, 0
  br i1 %.not371, label %94, label %90

90:                                               ; preds = %87
  %91 = getelementptr inbounds i8, ptr %71, i64 6708
  %92 = load i64, ptr %91, align 4
  store i64 %92, ptr %5, align 8
  %93 = bitcast i64 %92 to <2 x float>
  br label %95

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

95:                                               ; preds = %94, %90
  %.sroa.0140.0.copyload = phi <2 x float> [ %.sroa.0140.0.copyload.pre, %94 ], [ %93, %90 ]
  %96 = call noundef ptr @_ZL15CreateNewWindowPKc6ImVec2i(ptr noundef nonnull %0, <2 x float> %.sroa.0140.0.copyload, i32 noundef %2)
  store ptr %96, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #14
  br label %97

97:                                               ; preds = %95, %84
  %98 = phi ptr [ %96, %95 ], [ %85, %84 ]
  %99 = and i32 %2, 512
  %.not372 = icmp eq i32 %99, 0
  %100 = or i32 %2, 6
  %spec.select = select i1 %.not372, i32 %2, i32 %100
  %101 = and i32 %spec.select, 25165824
  %or.cond = icmp eq i32 %101, 8388608
  br i1 %or.cond, label %102, label %103

102:                                              ; preds = %97
  call void @__assert_fail(ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.3, i32 noundef 6023, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

103:                                              ; preds = %97
  %104 = load i32, ptr %81, align 4, !tbaa !57
  %105 = getelementptr inbounds i8, ptr %98, i64 592
  %106 = load i32, ptr %105, align 8, !tbaa !59
  %.not375 = icmp eq i32 %106, %104
  %107 = getelementptr inbounds i8, ptr %98, i64 12
  br i1 %.not375, label %109, label %108

108:                                              ; preds = %103
  store i32 %spec.select, ptr %107, align 4, !tbaa !67
  br label %111

109:                                              ; preds = %103
  %110 = load i32, ptr %107, align 4, !tbaa !67
  br label %111

111:                                              ; preds = %109, %108
  %.1 = phi i32 [ %spec.select, %108 ], [ %110, %109 ]
  %112 = add nsw i32 %104, -1
  %113 = icmp slt i32 %106, %112
  %114 = getelementptr inbounds i8, ptr %98, i64 168
  %115 = load i32, ptr %114, align 8, !tbaa !68
  %116 = icmp sgt i32 %115, 0
  %117 = and i32 %.1, 67108864
  %.not376 = icmp eq i32 %117, 0
  br i1 %.not376, label %133, label %118

118:                                              ; preds = %111
  %119 = getelementptr inbounds i8, ptr %71, i64 6632
  %120 = getelementptr inbounds i8, ptr %71, i64 6648
  %121 = load i32, ptr %120, align 8, !tbaa !69
  %122 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefEixEi(ptr noundef nonnull align 8 dereferenceable(16) %119, i32 noundef %121)
  %123 = load ptr, ptr %4, align 8, !tbaa !5
  %124 = getelementptr inbounds i8, ptr %123, i64 144
  %125 = load i32, ptr %124, align 8, !tbaa !70
  %126 = load i32, ptr %122, align 8, !tbaa !71
  %127 = icmp ne i32 %125, %126
  %128 = getelementptr inbounds i8, ptr %122, i64 8
  %129 = load ptr, ptr %128, align 8, !tbaa !73
  %130 = icmp ne ptr %123, %129
  %131 = or i1 %127, %130
  %132 = or i1 %113, %131
  br label %133

133:                                              ; preds = %118, %111
  %134 = phi ptr [ %123, %118 ], [ %98, %111 ]
  %.0338.in = phi i1 [ %132, %118 ], [ %113, %111 ]
  %135 = select i1 %.0338.in, i1 true, i1 %116
  %136 = getelementptr inbounds i8, ptr %134, i64 128
  %137 = zext i1 %135 to i8
  store i8 %137, ptr %136, align 8, !tbaa !74
  %138 = icmp ne ptr %1, null
  %139 = getelementptr inbounds i8, ptr %134, i64 129
  %140 = zext i1 %138 to i8
  store i8 %140, ptr %139, align 1, !tbaa !75
  br i1 %135, label %141, label %142

141:                                              ; preds = %133
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %134, i32 noundef 8, i1 noundef zeroext true)
  br label %142

142:                                              ; preds = %141, %133
  %143 = getelementptr inbounds i8, ptr %71, i64 6432
  %144 = call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %143)
  br i1 %144, label %148, label %145

145:                                              ; preds = %142
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %143)
  %147 = load ptr, ptr %146, align 8, !tbaa !5
  br label %148

148:                                              ; preds = %142, %145
  %149 = phi ptr [ %147, %145 ], [ null, %142 ]
  br i1 %.not375, label %153, label %150

150:                                              ; preds = %148
  %151 = and i32 %.1, 83886080
  %.not377 = icmp eq i32 %151, 0
  %152 = select i1 %.not377, ptr null, ptr %149
  br label %157

153:                                              ; preds = %148
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds i8, ptr %154, i64 864
  %156 = load ptr, ptr %155, align 8, !tbaa !76
  br label %157

157:                                              ; preds = %153, %150
  %158 = phi ptr [ %152, %150 ], [ %156, %153 ]
  %159 = icmp eq ptr %158, null
  %160 = and i32 %.1, 16777216
  %161 = icmp ne i32 %160, 0
  %.not379 = and i1 %161, %159
  br i1 %.not379, label %162, label %163

162:                                              ; preds = %157
  call void @__assert_fail(ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.3, i32 noundef 6049, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

163:                                              ; preds = %157
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %143, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %164)
  %165 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL15CheckStacksSizeP11ImGuiWindowb(ptr noundef %165, i1 noundef zeroext true)
  br i1 %.not376, label %176, label %166

166:                                              ; preds = %163
  %167 = getelementptr inbounds i8, ptr %71, i64 6632
  %168 = getelementptr inbounds i8, ptr %71, i64 6648
  %169 = load i32, ptr %168, align 8, !tbaa !69
  %170 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefEixEi(ptr noundef nonnull align 8 dereferenceable(16) %167, i32 noundef %169)
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  %172 = getelementptr inbounds i8, ptr %170, i64 8
  store ptr %171, ptr %172, align 8, !tbaa !73
  call void @_ZN8ImVectorI13ImGuiPopupRefE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %168, ptr noundef nonnull align 8 dereferenceable(48) %170)
  %173 = load i32, ptr %170, align 8, !tbaa !71
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds i8, ptr %174, i64 144
  store i32 %173, ptr %175, align 8, !tbaa !70
  br label %176

176:                                              ; preds = %166, %163
  %.not426 = xor i1 %116, true
  %brmerge = or i1 %161, %.not426
  br i1 %brmerge, label %180, label %177

177:                                              ; preds = %176
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds i8, ptr %178, i64 912
  store i32 0, ptr %179, align 8, !tbaa !77
  br label %180

180:                                              ; preds = %176, %177
  %181 = getelementptr inbounds i8, ptr %71, i64 6664
  %182 = load i32, ptr %181, align 8, !tbaa !78
  %.not380 = icmp eq i32 %182, 0
  br i1 %.not380, label %206, label %183

183:                                              ; preds = %180
  %184 = load ptr, ptr %4, align 8, !tbaa !5
  %185 = getelementptr inbounds i8, ptr %184, i64 172
  %186 = load i32, ptr %185, align 4, !tbaa !79
  %187 = and i32 %186, %182
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %189, label %202

189:                                              ; preds = %183
  %190 = getelementptr inbounds i8, ptr %71, i64 6700
  %191 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %190)
  %192 = fcmp ogt float %191, 0x3EE4F8B580000000
  %.pre = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %192, label %193, label %._crit_edge499

._crit_edge499:                                   ; preds = %189
  %.pre500 = load i32, ptr %181, align 8, !tbaa !78
  br label %202

193:                                              ; preds = %189
  %194 = getelementptr inbounds i8, ptr %71, i64 6692
  %195 = getelementptr inbounds i8, ptr %.pre, i64 184
  %196 = load i64, ptr %194, align 4
  store i64 %196, ptr %195, align 8
  %197 = getelementptr inbounds i8, ptr %.pre, i64 192
  %198 = load i64, ptr %190, align 4
  store i64 %198, ptr %197, align 8
  %199 = getelementptr inbounds i8, ptr %.pre, i64 172
  %200 = load i32, ptr %199, align 4, !tbaa !79
  %201 = and i32 %200, -15
  store i32 %201, ptr %199, align 4, !tbaa !79
  br label %206

202:                                              ; preds = %._crit_edge499, %183
  %203 = phi i32 [ %.pre500, %._crit_edge499 ], [ %182, %183 ]
  %204 = phi ptr [ %.pre, %._crit_edge499 ], [ %184, %183 ]
  %205 = getelementptr inbounds i8, ptr %71, i64 6692
  call void @_ZL12SetWindowPosP11ImGuiWindowRK6ImVec2i(ptr noundef %204, ptr noundef nonnull align 4 dereferenceable(8) %205, i32 noundef %203)
  br label %206

206:                                              ; preds = %193, %202, %180
  %.0340.shrunk = phi i1 [ true, %193 ], [ %188, %202 ], [ false, %180 ]
  %207 = getelementptr inbounds i8, ptr %71, i64 6668
  %208 = load i32, ptr %207, align 4, !tbaa !58
  %.not381 = icmp eq i32 %208, 0
  br i1 %.not381, label %224, label %209

209:                                              ; preds = %206
  %210 = load ptr, ptr %4, align 8, !tbaa !5
  %211 = getelementptr inbounds i8, ptr %210, i64 176
  %212 = load i32, ptr %211, align 8, !tbaa !80
  %213 = and i32 %212, %208
  %.not382 = icmp eq i32 %213, 0
  br i1 %.not382, label %.thread, label %214

214:                                              ; preds = %209
  %215 = getelementptr inbounds i8, ptr %71, i64 6708
  %216 = load float, ptr %215, align 4, !tbaa !81
  %217 = fcmp ogt float %216, 0.000000e+00
  %218 = getelementptr inbounds i8, ptr %71, i64 6712
  %219 = load float, ptr %218, align 4, !tbaa !82
  %220 = fcmp ogt float %219, 0.000000e+00
  br label %.thread

.thread:                                          ; preds = %209, %214
  %221 = phi i1 [ %217, %214 ], [ false, %209 ]
  %222 = phi i1 [ %220, %214 ], [ false, %209 ]
  %223 = getelementptr inbounds i8, ptr %71, i64 6708
  call void @_ZL13SetWindowSizeP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %210, ptr noundef nonnull align 4 dereferenceable(8) %223, i32 noundef %208)
  br label %224

224:                                              ; preds = %.thread, %206
  %.0342 = phi i1 [ %222, %.thread ], [ false, %206 ]
  %.0341 = phi i1 [ %221, %.thread ], [ false, %206 ]
  %225 = getelementptr inbounds i8, ptr %71, i64 6672
  %226 = load i32, ptr %225, align 8, !tbaa !83
  %.not384 = icmp eq i32 %226, 0
  br i1 %.not384, label %242, label %227

227:                                              ; preds = %224
  %228 = getelementptr inbounds i8, ptr %71, i64 6716
  %229 = load ptr, ptr %4, align 8, !tbaa !5
  %230 = getelementptr inbounds i8, ptr %229, i64 56
  %231 = load i64, ptr %228, align 4
  store i64 %231, ptr %230, align 8
  %232 = and i64 %231, 9223372032559808512
  %.not546 = icmp eq i64 %232, 0
  br i1 %.not546, label %247, label %233

233:                                              ; preds = %227
  %234 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %229)
  %235 = load ptr, ptr %4, align 8, !tbaa !5
  %236 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %235)
  %237 = fadd float %234, %236
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = getelementptr inbounds i8, ptr %238, i64 60
  %240 = load float, ptr %239, align 4, !tbaa !84
  %241 = fadd float %237, %240
  store float %241, ptr %239, align 4, !tbaa !84
  br label %247

242:                                              ; preds = %224
  br i1 %.not375, label %._crit_edge541, label %243

._crit_edge541:                                   ; preds = %242
  %.pre502.pre532.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %247

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

247:                                              ; preds = %._crit_edge541, %243, %227, %233
  %.pre502.pre532 = phi ptr [ %.pre502.pre532.pre, %._crit_edge541 ], [ %244, %243 ], [ %229, %227 ], [ %238, %233 ]
  %248 = getelementptr inbounds i8, ptr %71, i64 6676
  %249 = load i32, ptr %248, align 4, !tbaa !85
  %.not385 = icmp eq i32 %249, 0
  br i1 %.not385, label %254, label %250

250:                                              ; preds = %247
  %251 = getelementptr inbounds i8, ptr %71, i64 6724
  %252 = load i8, ptr %251, align 4, !tbaa !86, !range !54, !noundef !55
  %253 = trunc nuw i8 %252 to i1
  call void @_ZL18SetWindowCollapsedP11ImGuiWindowbi(ptr noundef %.pre502.pre532, i1 noundef zeroext %253, i32 noundef %249)
  %.pre502.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %254

254:                                              ; preds = %250, %247
  %.pre502 = phi ptr [ %.pre502.pre, %250 ], [ %.pre502.pre532, %247 ]
  %255 = getelementptr inbounds i8, ptr %71, i64 6684
  %256 = load i32, ptr %255, align 4, !tbaa !87
  %.not386 = icmp eq i32 %256, 0
  br i1 %.not386, label %258, label %257

257:                                              ; preds = %254
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %.pre502)
  %.pre501 = load ptr, ptr %4, align 8, !tbaa !5
  br label %258

258:                                              ; preds = %257, %254
  %259 = phi ptr [ %.pre501, %257 ], [ %.pre502, %254 ]
  %260 = getelementptr inbounds i8, ptr %259, i64 128
  %261 = load i8, ptr %260, align 8, !tbaa !74, !range !54, !noundef !55
  %262 = trunc nuw i8 %261 to i1
  br i1 %262, label %263, label %264

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

264:                                              ; preds = %263, %258
  br i1 %.not375, label %.critedge469, label %265

265:                                              ; preds = %264
  %266 = and i32 %.1, 33554432
  %.not387 = icmp eq i32 %266, 0
  %267 = and i32 %.1, 50331648
  %268 = icmp eq i32 %267, 50331648
  %269 = load ptr, ptr %4, align 8, !tbaa !5
  %270 = getelementptr inbounds i8, ptr %269, i64 864
  store ptr %158, ptr %270, align 8, !tbaa !76
  %271 = getelementptr inbounds i8, ptr %269, i64 896
  %272 = getelementptr inbounds i8, ptr %269, i64 888
  %273 = getelementptr inbounds i8, ptr %269, i64 880
  %274 = getelementptr inbounds i8, ptr %269, i64 872
  %275 = insertelement <4 x ptr> poison, ptr %269, i64 0
  %276 = shufflevector <4 x ptr> %275, <4 x ptr> poison, <4 x i32> zeroinitializer
  store <4 x ptr> %276, ptr %274, align 8, !tbaa !5
  %.not427 = xor i1 %161, true
  %brmerge428 = or i1 %159, %.not427
  %brmerge429 = or i1 %268, %brmerge428
  br i1 %brmerge429, label %280, label %277

277:                                              ; preds = %265
  %278 = getelementptr inbounds i8, ptr %158, i64 872
  %279 = load ptr, ptr %278, align 8, !tbaa !88
  store ptr %279, ptr %274, align 8, !tbaa !88
  br label %280

280:                                              ; preds = %265, %277
  %281 = and i32 %.1, 134217728
  %.not388 = icmp eq i32 %281, 0
  %.not388.not = xor i1 %.not388, true
  %282 = and i32 %.1, 83886080
  %.not389 = icmp eq i32 %282, 0
  %283 = or i1 %.not389, %.not388.not
  %or.cond432 = or i1 %283, %159
  br i1 %or.cond432, label %287, label %284

284:                                              ; preds = %280
  %285 = getelementptr inbounds i8, ptr %158, i64 880
  %286 = load ptr, ptr %285, align 8, !tbaa !89
  store ptr %286, ptr %272, align 8, !tbaa !90
  store ptr %286, ptr %273, align 8, !tbaa !89
  br label %287

287:                                              ; preds = %284, %280
  %288 = getelementptr inbounds i8, ptr %269, i64 12
  %289 = load i32, ptr %288, align 4, !tbaa !67
  %290 = and i32 %289, 8388608
  %.not390492 = icmp eq i32 %290, 0
  br i1 %.not390492, label %297, label %.lr.ph

.lr.ph:                                           ; preds = %287, %.lr.ph
  %291 = phi ptr [ %293, %.lr.ph ], [ %269, %287 ]
  %292 = getelementptr inbounds i8, ptr %291, i64 864
  %293 = load ptr, ptr %292, align 8, !tbaa !76
  %294 = getelementptr inbounds i8, ptr %293, i64 12
  %295 = load i32, ptr %294, align 4, !tbaa !67
  %296 = and i32 %295, 8388608
  %.not390 = icmp eq i32 %296, 0
  br i1 %.not390, label %._crit_edge, label %.lr.ph, !llvm.loop !91

._crit_edge:                                      ; preds = %.lr.ph
  store ptr %293, ptr %271, align 8, !tbaa !93
  br label %297

297:                                              ; preds = %._crit_edge, %287
  %298 = getelementptr inbounds i8, ptr %269, i64 122
  store i8 1, ptr %298, align 2, !tbaa !94
  %299 = getelementptr inbounds i8, ptr %269, i64 132
  store i32 0, ptr %299, align 4, !tbaa !95
  %300 = getelementptr inbounds i8, ptr %71, i64 6464
  %301 = load i32, ptr %300, align 8, !tbaa !96
  %302 = add nsw i32 %301, 1
  store i32 %302, ptr %300, align 8, !tbaa !96
  %303 = getelementptr inbounds i8, ptr %269, i64 136
  store i32 %301, ptr %303, align 8, !tbaa !97
  %304 = getelementptr inbounds i8, ptr %269, i64 140
  store i32 0, ptr %304, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #14
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %7, ptr noundef nonnull align 4 dereferenceable(16) %8)
  %305 = load ptr, ptr %4, align 8, !tbaa !5
  %306 = getelementptr inbounds i8, ptr %305, i64 512
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %306, ptr noundef nonnull align 4 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !99
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #14
  %307 = getelementptr inbounds i8, ptr %305, i64 592
  store i32 %104, ptr %307, align 8, !tbaa !59
  %308 = getelementptr inbounds i8, ptr %305, i64 496
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %308, i32 noundef 1)
  %309 = load ptr, ptr %4, align 8, !tbaa !5
  %310 = call <2 x float> @_ZL16CalcSizeContentsP11ImGuiWindow(ptr noundef %309)
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  %312 = getelementptr inbounds i8, ptr %311, i64 48
  store <2 x float> %310, ptr %312, align 8
  %313 = getelementptr inbounds i8, ptr %311, i64 168
  %314 = load i32, ptr %313, align 8, !tbaa !68
  %315 = icmp slt i32 %314, 1
  %316 = select i1 %.0341, i1 %.0342, i1 false
  %or.cond490 = select i1 %86, i1 true, i1 %316
  %.not495 = and i1 %315, %or.cond490
  br i1 %.not495, label %319, label %317

317:                                              ; preds = %297
  %318 = add nsw i32 %314, -1
  %simplifycfg.merge491 = select i1 %or.cond490, i32 %318, i32 1
  store i32 %simplifycfg.merge491, ptr %313, align 8, !tbaa !68
  br label %319

319:                                              ; preds = %297, %317
  %320 = and i32 %.1, 100663296
  %.not391 = icmp ne i32 %320, 0
  %or.cond434.not = and i1 %.not391, %.0338.in
  br i1 %or.cond434.not, label %321, label %335

321:                                              ; preds = %319
  store i32 1, ptr %313, align 8, !tbaa !68
  %322 = and i32 %.1, 64
  %.not392 = icmp eq i32 %322, 0
  br i1 %.not392, label %335, label %323

323:                                              ; preds = %321
  br i1 %.0341, label %327, label %324

324:                                              ; preds = %323
  %325 = getelementptr inbounds i8, ptr %311, i64 32
  store float 0.000000e+00, ptr %325, align 8, !tbaa !101
  %326 = getelementptr inbounds i8, ptr %311, i64 24
  store float 0.000000e+00, ptr %326, align 8, !tbaa !102
  br label %327

327:                                              ; preds = %324, %323
  br i1 %.0342, label %331, label %328

328:                                              ; preds = %327
  %329 = getelementptr inbounds i8, ptr %311, i64 36
  store float 0.000000e+00, ptr %329, align 4, !tbaa !103
  %330 = getelementptr inbounds i8, ptr %311, i64 28
  store float 0.000000e+00, ptr %330, align 4, !tbaa !104
  br label %331

331:                                              ; preds = %328, %327
  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)
  %332 = load ptr, ptr %4, align 8, !tbaa !5
  %333 = getelementptr inbounds i8, ptr %332, i64 48
  %334 = load i64, ptr %9, align 8
  store i64 %334, ptr %333, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %335

335:                                              ; preds = %321, %331, %319
  %336 = phi ptr [ %311, %321 ], [ %332, %331 ], [ %311, %319 ]
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef nonnull %336)
  %or.cond435 = and i1 %.not391, %.not388
  %. = select i1 %or.cond435, i64 5456, i64 5424
  %.sink552 = select i1 %161, i64 5448, i64 %.
  %337 = getelementptr inbounds i8, ptr %71, i64 %.sink552
  %338 = load float, ptr %337, align 4, !tbaa !100
  %339 = load ptr, ptr %4, align 8, !tbaa !5
  %340 = getelementptr inbounds i8, ptr %339, i64 76
  store float %338, ptr %340, align 4, !tbaa !105
  %341 = getelementptr inbounds i8, ptr %71, i64 5412
  %342 = getelementptr inbounds i8, ptr %339, i64 64
  %343 = load i64, ptr %341, align 4
  store i64 %343, ptr %342, align 8
  %344 = and i32 %.1, 83951616
  %or.cond436 = icmp eq i32 %344, 16777216
  %345 = fcmp oeq float %338, 0.000000e+00
  %or.cond483 = select i1 %or.cond436, i1 %345, i1 false
  br i1 %or.cond483, label %346, label %356

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

348:                                              ; preds = %346
  %349 = getelementptr inbounds i8, ptr %71, i64 5416
  %350 = load float, ptr %349, align 4, !tbaa !106
  br label %351

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

356:                                              ; preds = %351, %335
  %.in547.in = phi i64 [ %355, %351 ], [ %343, %335 ]
  %.in547 = trunc i64 %.in547.in to i32
  %357 = bitcast i32 %.in547 to float
  %358 = getelementptr inbounds i8, ptr %71, i64 5476
  %359 = load float, ptr %358, align 4, !tbaa !107
  %360 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %357, float noundef %359)
  %361 = getelementptr inbounds i8, ptr %71, i64 6764
  %362 = load float, ptr %361, align 4, !tbaa !108
  %363 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %360, float noundef %362)
  %364 = load ptr, ptr %4, align 8, !tbaa !5
  %365 = getelementptr inbounds i8, ptr %364, i64 324
  store float %363, ptr %365, align 4, !tbaa !109
  %366 = getelementptr inbounds i8, ptr %71, i64 6768
  %367 = load float, ptr %366, align 4, !tbaa !110
  %368 = getelementptr inbounds i8, ptr %364, i64 328
  store float %367, ptr %368, align 4, !tbaa !111
  %369 = and i32 %.1, 1
  %.not397 = icmp eq i32 %369, 0
  %370 = and i32 %.1, 32
  %.not398 = icmp eq i32 %370, 0
  %371 = and i32 %.1, 33
  %or.cond437 = icmp eq i32 %371, 0
  br i1 %or.cond437, label %372, label %408

372:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #14
  %373 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(976) %364)
  %374 = extractvalue { <2 x float>, <2 x float> } %373, 0
  store <2 x float> %374, ptr %11, align 8
  %375 = getelementptr inbounds i8, ptr %11, i64 8
  %376 = extractvalue { <2 x float>, <2 x float> } %373, 1
  store <2 x float> %376, ptr %375, align 8
  %377 = getelementptr inbounds i8, ptr %71, i64 6480
  %378 = load ptr, ptr %377, align 8, !tbaa !112
  %379 = load ptr, ptr %4, align 8, !tbaa !5
  %380 = icmp eq ptr %378, %379
  br i1 %380, label %381, label %397

381:                                              ; preds = %372
  %382 = getelementptr inbounds i8, ptr %71, i64 6496
  %383 = load i32, ptr %382, align 8, !tbaa !113
  %384 = icmp eq i32 %383, 0
  br i1 %384, label %385, label %397

385:                                              ; preds = %381
  %386 = getelementptr inbounds i8, ptr %71, i64 6504
  %387 = load i32, ptr %386, align 8, !tbaa !114
  %388 = icmp eq i32 %387, 0
  br i1 %388, label %389, label %397

389:                                              ; preds = %385
  %390 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %375, i1 noundef zeroext true)
  br i1 %390, label %391, label %._crit_edge503

._crit_edge503:                                   ; preds = %389
  %.pre504 = load ptr, ptr %4, align 8, !tbaa !5
  br label %397

391:                                              ; preds = %389
  %392 = getelementptr inbounds i8, ptr %71, i64 1029
  %393 = load i8, ptr %392, align 1, !tbaa !115, !range !54, !noundef !55
  %394 = trunc nuw i8 %393 to i1
  %.pre505 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %394, label %395, label %397

395:                                              ; preds = %391
  %396 = getelementptr inbounds i8, ptr %.pre505, i64 126
  store i8 1, ptr %396, align 2, !tbaa !116
  br label %397

397:                                              ; preds = %._crit_edge503, %395, %391, %385, %381, %372
  %398 = phi ptr [ %.pre504, %._crit_edge503 ], [ %.pre505, %395 ], [ %.pre505, %391 ], [ %379, %385 ], [ %379, %381 ], [ %379, %372 ]
  %399 = getelementptr inbounds i8, ptr %398, i64 126
  %400 = load i8, ptr %399, align 2, !tbaa !116, !range !54, !noundef !55
  %401 = trunc nuw i8 %400 to i1
  br i1 %401, label %402, label %407

402:                                              ; preds = %397
  %403 = getelementptr inbounds i8, ptr %398, i64 125
  %404 = load i8, ptr %403, align 1, !tbaa !117, !range !54, !noundef !55
  %405 = xor i8 %404, 1
  store i8 %405, ptr %403, align 1, !tbaa !117
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %398)
  %406 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %406)
  %.pre506.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %407

407:                                              ; preds = %402, %397
  %.pre506 = phi ptr [ %.pre506.pre, %402 ], [ %398, %397 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #14
  br label %410

408:                                              ; preds = %356
  %409 = getelementptr inbounds i8, ptr %364, i64 125
  store i8 0, ptr %409, align 1, !tbaa !117
  br label %410

410:                                              ; preds = %408, %407
  %411 = phi ptr [ %364, %408 ], [ %.pre506, %407 ]
  %412 = getelementptr inbounds i8, ptr %411, i64 126
  store i8 0, ptr %412, align 2, !tbaa !116
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #14
  %413 = getelementptr inbounds i8, ptr %411, i64 48
  %414 = call <2 x float> @_ZL15CalcSizeAutoFitP11ImGuiWindowRK6ImVec2(ptr noundef %411, ptr noundef nonnull align 4 dereferenceable(8) %413)
  store <2 x float> %414, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %415 = and i32 %.1, 64
  %.not399 = icmp ne i32 %415, 0
  %.pre507 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not399, label %416, label %430

416:                                              ; preds = %410
  %417 = getelementptr inbounds i8, ptr %.pre507, i64 125
  %418 = load i8, ptr %417, align 1, !tbaa !117, !range !54, !noundef !55
  %419 = trunc nuw i8 %418 to i1
  br i1 %419, label %430, label %420

420:                                              ; preds = %416
  br i1 %.0341, label %424, label %421

421:                                              ; preds = %420
  %422 = load float, ptr %12, align 8, !tbaa !118
  store float %422, ptr %13, align 4, !tbaa !118
  %423 = getelementptr inbounds i8, ptr %.pre507, i64 32
  store float %422, ptr %423, align 8, !tbaa !101
  br label %424

424:                                              ; preds = %421, %420
  br i1 %.0342, label %483, label %425

425:                                              ; preds = %424
  %426 = getelementptr inbounds i8, ptr %12, i64 4
  %427 = load float, ptr %426, align 4, !tbaa !119
  %428 = getelementptr inbounds i8, ptr %13, i64 4
  store float %427, ptr %428, align 4, !tbaa !119
  %429 = getelementptr inbounds i8, ptr %.pre507, i64 36
  store float %427, ptr %429, align 4, !tbaa !103
  br label %483

430:                                              ; preds = %416, %410
  %431 = getelementptr inbounds i8, ptr %.pre507, i64 148
  %432 = load i32, ptr %431, align 4, !tbaa !120
  %433 = icmp sgt i32 %432, 0
  br i1 %433, label %438, label %434

434:                                              ; preds = %430
  %435 = getelementptr inbounds i8, ptr %.pre507, i64 152
  %436 = load i32, ptr %435, align 8, !tbaa !121
  %437 = icmp sgt i32 %436, 0
  br i1 %437, label %.thread472, label %483

438:                                              ; preds = %430
  br i1 %.0341, label %.thread472, label %439

439:                                              ; preds = %438
  %440 = getelementptr inbounds i8, ptr %.pre507, i64 156
  %441 = load i8, ptr %440, align 4, !tbaa !122, !range !54, !noundef !55
  %442 = trunc nuw i8 %441 to i1
  br i1 %442, label %443, label %448

443:                                              ; preds = %439
  %444 = getelementptr inbounds i8, ptr %.pre507, i64 32
  %445 = load float, ptr %444, align 8, !tbaa !101
  %446 = load float, ptr %12, align 8, !tbaa !118
  %447 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %445, float noundef %446)
  %.pre508 = load ptr, ptr %4, align 8, !tbaa !5
  br label %450

448:                                              ; preds = %439
  %449 = load float, ptr %12, align 8, !tbaa !118
  br label %450

450:                                              ; preds = %448, %443
  %451 = phi ptr [ %.pre508, %443 ], [ %.pre507, %448 ]
  %452 = phi float [ %447, %443 ], [ %449, %448 ]
  store float %452, ptr %13, align 4, !tbaa !118
  %453 = getelementptr inbounds i8, ptr %451, i64 32
  store float %452, ptr %453, align 8, !tbaa !101
  br label %.thread472

.thread472:                                       ; preds = %434, %450, %438
  %454 = phi ptr [ %.pre507, %434 ], [ %451, %450 ], [ %.pre507, %438 ]
  br i1 %.0342, label %477, label %455

455:                                              ; preds = %.thread472
  %456 = getelementptr inbounds i8, ptr %454, i64 152
  %457 = load i32, ptr %456, align 8, !tbaa !121
  %458 = icmp sgt i32 %457, 0
  br i1 %458, label %459, label %477

459:                                              ; preds = %455
  %460 = getelementptr inbounds i8, ptr %454, i64 156
  %461 = load i8, ptr %460, align 4, !tbaa !122, !range !54, !noundef !55
  %462 = trunc nuw i8 %461 to i1
  br i1 %462, label %463, label %469

463:                                              ; preds = %459
  %464 = getelementptr inbounds i8, ptr %454, i64 36
  %465 = load float, ptr %464, align 4, !tbaa !103
  %466 = getelementptr inbounds i8, ptr %12, i64 4
  %467 = load float, ptr %466, align 4, !tbaa !119
  %468 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %465, float noundef %467)
  %.pre509 = load ptr, ptr %4, align 8, !tbaa !5
  br label %472

469:                                              ; preds = %459
  %470 = getelementptr inbounds i8, ptr %12, i64 4
  %471 = load float, ptr %470, align 4, !tbaa !119
  br label %472

472:                                              ; preds = %469, %463
  %473 = phi ptr [ %.pre509, %463 ], [ %454, %469 ]
  %474 = phi float [ %468, %463 ], [ %471, %469 ]
  %475 = getelementptr inbounds i8, ptr %13, i64 4
  store float %474, ptr %475, align 4, !tbaa !119
  %476 = getelementptr inbounds i8, ptr %473, i64 36
  store float %474, ptr %476, align 4, !tbaa !103
  br label %477

477:                                              ; preds = %472, %455, %.thread472
  %478 = phi ptr [ %473, %472 ], [ %454, %455 ], [ %454, %.thread472 ]
  %479 = getelementptr inbounds i8, ptr %478, i64 125
  %480 = load i8, ptr %479, align 1, !tbaa !117, !range !54, !noundef !55
  %481 = trunc nuw i8 %480 to i1
  br i1 %481, label %483, label %482

482:                                              ; preds = %477
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %478)
  %.pre510 = load ptr, ptr %4, align 8, !tbaa !5
  br label %483

483:                                              ; preds = %434, %482, %477, %424, %425
  %484 = phi ptr [ %.pre507, %434 ], [ %.pre510, %482 ], [ %478, %477 ], [ %.pre507, %424 ], [ %.pre507, %425 ]
  %485 = getelementptr inbounds i8, ptr %484, i64 32
  %.sroa.076.0.copyload = load <2 x float>, ptr %485, align 8
  %486 = call <2 x float> @_ZL23CalcSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %484, <2 x float> %.sroa.076.0.copyload)
  %487 = load ptr, ptr %4, align 8
  %488 = getelementptr inbounds i8, ptr %487, i64 32
  store <2 x float> %486, ptr %488, align 8
  %489 = getelementptr inbounds i8, ptr %487, i64 125
  %490 = load i8, ptr %489, align 1, !tbaa !117, !range !54, !noundef !55
  %491 = trunc nuw i8 %490 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #14
  %.not438 = xor i1 %491, true
  %brmerge439 = or i1 %161, %.not438
  br i1 %brmerge439, label %498, label %492

492:                                              ; preds = %483
  %493 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(976) %487)
  %494 = extractvalue { <2 x float>, <2 x float> } %493, 0
  store <2 x float> %494, ptr %14, align 8
  %495 = getelementptr inbounds i8, ptr %14, i64 8
  %496 = extractvalue { <2 x float>, <2 x float> } %493, 1
  store <2 x float> %496, ptr %495, align 8
  %497 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %14)
  %.pre511 = load ptr, ptr %4, align 8
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre511, i64 125
  %.pre512 = load i8, ptr %.phi.trans.insert, align 1, !tbaa !117, !range !54
  br label %498

498:                                              ; preds = %483, %492
  %499 = phi i8 [ %.pre512, %492 ], [ %490, %483 ]
  %500 = phi ptr [ %.pre511, %492 ], [ %487, %483 ]
  %.sroa.074.0 = phi <2 x float> [ %497, %492 ], [ %486, %483 ]
  %501 = getelementptr inbounds i8, ptr %500, i64 24
  store <2 x float> %.sroa.074.0, ptr %501, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #14
  %502 = trunc nuw i8 %499 to i1
  br i1 %502, label %577, label %503

503:                                              ; preds = %498
  %504 = load float, ptr %13, align 4, !tbaa !118
  %505 = fcmp une float %504, 0x47EFFFFFE0000000
  %.in400.v = select i1 %505, i64 32, i64 40
  %.in400 = getelementptr inbounds i8, ptr %500, i64 %.in400.v
  %506 = load float, ptr %.in400, align 8, !tbaa !100
  %507 = getelementptr inbounds i8, ptr %13, i64 4
  %508 = load float, ptr %507, align 4, !tbaa !119
  %509 = fcmp une float %508, 0x47EFFFFFE0000000
  %.in401.v = select i1 %509, i64 36, i64 44
  %.in401 = getelementptr inbounds i8, ptr %500, i64 %.in401.v
  %510 = load float, ptr %.in401, align 4, !tbaa !100
  %511 = and i32 %.1, 16384
  %.not402 = icmp eq i32 %511, 0
  br i1 %.not402, label %512, label %.thread473

512:                                              ; preds = %503
  %513 = getelementptr inbounds i8, ptr %500, i64 52
  %514 = load float, ptr %513, align 4, !tbaa !123
  %515 = fcmp ogt float %514, %510
  %516 = and i32 %.1, 8
  %.not403 = icmp eq i32 %516, 0
  %517 = and i1 %.not403, %515
  %518 = getelementptr inbounds i8, ptr %500, i64 121
  %519 = zext i1 %517 to i8
  store i8 %519, ptr %518, align 1, !tbaa !124
  %520 = and i32 %.1, 32768
  %.not404 = icmp eq i32 %520, 0
  br i1 %.not404, label %526, label %.thread477

.thread473:                                       ; preds = %503
  %521 = getelementptr inbounds i8, ptr %500, i64 121
  store i8 1, ptr %521, align 1, !tbaa !124
  %522 = and i32 %.1, 32768
  %.not404474 = icmp eq i32 %522, 0
  br i1 %.not404474, label %.thread475, label %.thread477.thread

.thread477.thread:                                ; preds = %.thread473
  %523 = getelementptr inbounds i8, ptr %500, i64 120
  store i8 1, ptr %523, align 8, !tbaa !125
  br label %.thread551

.thread475:                                       ; preds = %.thread473
  %524 = getelementptr inbounds i8, ptr %500, i64 48
  %525 = load float, ptr %524, align 8, !tbaa !126
  %.pre545 = and i32 %.1, 8
  br label %529

526:                                              ; preds = %512
  %527 = getelementptr inbounds i8, ptr %500, i64 48
  %528 = load float, ptr %527, align 8, !tbaa !126
  br i1 %517, label %529, label %534

529:                                              ; preds = %.thread475, %526
  %.pre543.pre-phi = phi i32 [ %.pre545, %.thread475 ], [ 0, %526 ]
  %530 = phi float [ %525, %.thread475 ], [ %528, %526 ]
  %531 = phi ptr [ %521, %.thread475 ], [ %518, %526 ]
  %532 = getelementptr inbounds i8, ptr %71, i64 5508
  %533 = load float, ptr %532, align 4, !tbaa !127
  br label %534

534:                                              ; preds = %526, %529
  %.pre-phi = phi i32 [ %516, %526 ], [ %.pre543.pre-phi, %529 ]
  %535 = phi i8 [ 0, %526 ], [ 1, %529 ]
  %536 = phi float [ %528, %526 ], [ %530, %529 ]
  %537 = phi i1 [ false, %526 ], [ true, %529 ]
  %538 = phi ptr [ %518, %526 ], [ %531, %529 ]
  %539 = phi float [ 0.000000e+00, %526 ], [ %533, %529 ]
  %540 = fsub float %506, %539
  %541 = fcmp ogt float %536, %540
  %.not405 = icmp eq i32 %.pre-phi, 0
  %or.cond440 = and i1 %.not405, %541
  br i1 %or.cond440, label %544, label %.thread478

.thread478:                                       ; preds = %534
  %542 = getelementptr inbounds i8, ptr %500, i64 120
  store i8 0, ptr %542, align 8, !tbaa !125
  br label %559

.thread477:                                       ; preds = %512
  %543 = getelementptr inbounds i8, ptr %500, i64 120
  store i8 1, ptr %543, align 8, !tbaa !125
  br i1 %517, label %.thread551, label %548

544:                                              ; preds = %534
  %545 = and i32 %.1, 2048
  %.not487 = icmp eq i32 %545, 0
  %546 = getelementptr inbounds i8, ptr %500, i64 120
  %.lobit = lshr exact i32 %545, 11
  %547 = trunc nuw nsw i32 %.lobit to i8
  store i8 %547, ptr %546, align 8, !tbaa !125
  %brmerge485 = or i1 %.not487, %537
  %not..not487 = xor i1 %.not487, true
  br i1 %brmerge485, label %559, label %._crit_edge513

._crit_edge513:                                   ; preds = %544
  %.phi.trans.insert514 = getelementptr inbounds i8, ptr %500, i64 52
  %.pre515 = load float, ptr %.phi.trans.insert514, align 4, !tbaa !123
  br label %548

548:                                              ; preds = %._crit_edge513, %.thread477
  %.pre-phi544 = phi i32 [ 0, %._crit_edge513 ], [ %516, %.thread477 ]
  %549 = phi float [ %.pre515, %._crit_edge513 ], [ %514, %.thread477 ]
  %550 = phi ptr [ %538, %._crit_edge513 ], [ %518, %.thread477 ]
  %551 = getelementptr inbounds i8, ptr %71, i64 5508
  %552 = load float, ptr %551, align 4, !tbaa !127
  %553 = fsub float %510, %552
  %554 = fcmp ogt float %549, %553
  %.not406 = icmp eq i32 %.pre-phi544, 0
  %555 = and i1 %.not406, %554
  %556 = zext i1 %555 to i8
  store i8 %556, ptr %550, align 1, !tbaa !124
  br label %559

.thread551:                                       ; preds = %.thread477.thread, %.thread477
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  %557 = getelementptr inbounds i8, ptr %71, i64 5508
  %558 = load float, ptr %557, align 4, !tbaa !127
  br label %567

559:                                              ; preds = %544, %.thread478, %548
  %560 = phi i8 [ %556, %548 ], [ %535, %544 ], [ %535, %.thread478 ]
  %561 = phi i1 [ true, %548 ], [ %not..not487, %544 ], [ false, %.thread478 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  %562 = trunc nuw i8 %560 to i1
  br i1 %562, label %563, label %566

563:                                              ; preds = %559
  %564 = getelementptr inbounds i8, ptr %71, i64 5508
  %565 = load float, ptr %564, align 4, !tbaa !127
  br i1 %561, label %567, label %571

566:                                              ; preds = %559
  br i1 %561, label %567, label %571

567:                                              ; preds = %.thread551, %563, %566
  %568 = phi float [ %565, %563 ], [ 0.000000e+00, %566 ], [ %558, %.thread551 ]
  %569 = getelementptr inbounds i8, ptr %71, i64 5508
  %570 = load float, ptr %569, align 4, !tbaa !127
  br label %571

571:                                              ; preds = %563, %566, %567
  %572 = phi float [ %568, %567 ], [ 0.000000e+00, %566 ], [ %565, %563 ]
  %573 = phi float [ %570, %567 ], [ 0.000000e+00, %566 ], [ 0.000000e+00, %563 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %572, float noundef %573)
  %574 = load ptr, ptr %4, align 8, !tbaa !5
  %575 = getelementptr inbounds i8, ptr %574, i64 112
  %576 = load i64, ptr %15, align 8
  store i64 %576, ptr %575, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #14
  br label %577

577:                                              ; preds = %571, %498
  %578 = phi ptr [ %574, %571 ], [ %500, %498 ]
  br i1 %.0338.in, label %579, label %588

579:                                              ; preds = %577
  %580 = getelementptr inbounds i8, ptr %578, i64 164
  store i32 -1, ptr %580, align 4, !tbaa !128
  %brmerge441 = or i1 %.not376, %.0340.shrunk
  br i1 %brmerge441, label %588, label %581

581:                                              ; preds = %579
  %582 = getelementptr inbounds i8, ptr %71, i64 6648
  %583 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %582)
  %584 = getelementptr inbounds i8, ptr %583, i64 32
  %585 = load ptr, ptr %4, align 8, !tbaa !5
  %586 = getelementptr inbounds i8, ptr %585, i64 16
  %587 = load i64, ptr %584, align 8
  store i64 %587, ptr %586, align 8
  br label %588

588:                                              ; preds = %579, %581, %577
  %589 = phi ptr [ %578, %579 ], [ %585, %581 ], [ %578, %577 ]
  br i1 %161, label %590, label %598

590:                                              ; preds = %588
  %591 = getelementptr inbounds i8, ptr %158, i64 336
  %592 = load i32, ptr %591, align 8, !tbaa !129
  %593 = getelementptr inbounds i8, ptr %589, i64 132
  store i32 %592, ptr %593, align 4, !tbaa !95
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %591, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %.not376.not = xor i1 %.not376, true
  %brmerge442 = or i1 %.0340.shrunk, %.not376.not
  %brmerge443 = or i1 %268, %brmerge442
  %.pre516 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge443, label %598, label %594

594:                                              ; preds = %590
  %595 = getelementptr inbounds i8, ptr %158, i64 200
  %596 = getelementptr inbounds i8, ptr %.pre516, i64 16
  %597 = load i64, ptr %595, align 8
  store i64 %597, ptr %596, align 8
  br label %598

598:                                              ; preds = %590, %594, %588
  %599 = phi ptr [ %.pre516, %590 ], [ %.pre516, %594 ], [ %589, %588 ]
  %600 = getelementptr inbounds i8, ptr %599, i64 184
  %601 = load float, ptr %600, align 8, !tbaa !130
  %602 = fcmp une float %601, 0x47EFFFFFE0000000
  br i1 %602, label %603, label %.critedge

603:                                              ; preds = %598
  %604 = getelementptr inbounds i8, ptr %599, i64 168
  %605 = load i32, ptr %604, align 8, !tbaa !68
  %606 = icmp eq i32 %605, 0
  br i1 %606, label %607, label %.critedge

607:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #14
  %608 = getelementptr inbounds i8, ptr %71, i64 5540
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #14
  %609 = getelementptr inbounds i8, ptr %599, i64 32
  %610 = getelementptr inbounds i8, ptr %599, i64 192
  %611 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %609, ptr noundef nonnull align 4 dereferenceable(8) %610)
  store <2 x float> %611, ptr %18, align 8
  %612 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %600, ptr noundef nonnull align 4 dereferenceable(8) %18)
  store <2 x float> %612, ptr %17, align 8
  %613 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %608, ptr noundef nonnull align 4 dereferenceable(8) %17)
  store <2 x float> %613, ptr %16, align 8
  call void @_ZL12SetWindowPosP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %599, ptr noundef nonnull align 4 dereferenceable(8) %16, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #14
  %.pre517.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %629

.critedge:                                        ; preds = %598, %603
  %614 = and i32 %.1, 268435456
  %.not407 = icmp eq i32 %614, 0
  br i1 %.not407, label %619, label %615

615:                                              ; preds = %.critedge
  %616 = call <2 x float> @_ZL25FindBestWindowPosForPopupP11ImGuiWindow(ptr noundef nonnull %599)
  %617 = load ptr, ptr %4, align 8, !tbaa !5
  %618 = getelementptr inbounds i8, ptr %617, i64 16
  store <2 x float> %616, ptr %618, align 8
  br label %629

619:                                              ; preds = %.critedge
  %brmerge444 = or i1 %.not376, %.0340.shrunk
  %brmerge446 = or i1 %brmerge444, %.not426
  br i1 %brmerge446, label %624, label %620

620:                                              ; preds = %619
  %621 = call <2 x float> @_ZL25FindBestWindowPosForPopupP11ImGuiWindow(ptr noundef nonnull %599)
  %622 = load ptr, ptr %4, align 8, !tbaa !5
  %623 = getelementptr inbounds i8, ptr %622, i64 16
  store <2 x float> %621, ptr %623, align 8
  br label %629

624:                                              ; preds = %619
  %brmerge447 = or i1 %.not387, %.0340.shrunk
  %brmerge448 = or i1 %268, %brmerge447
  br i1 %brmerge448, label %629, label %625

625:                                              ; preds = %624
  %626 = call <2 x float> @_ZL25FindBestWindowPosForPopupP11ImGuiWindow(ptr noundef nonnull %599)
  %627 = load ptr, ptr %4, align 8, !tbaa !5
  %628 = getelementptr inbounds i8, ptr %627, i64 16
  store <2 x float> %626, ptr %628, align 8
  br label %629

629:                                              ; preds = %624, %615, %625, %620, %607
  %.pre517 = phi ptr [ %599, %624 ], [ %617, %615 ], [ %627, %625 ], [ %622, %620 ], [ %.pre517.pre, %607 ]
  %brmerge449 = or i1 %161, %.0340.shrunk
  br i1 %brmerge449, label %668, label %630

630:                                              ; preds = %629
  %631 = getelementptr inbounds i8, ptr %.pre517, i64 148
  %632 = load i32, ptr %631, align 4, !tbaa !120
  %633 = icmp slt i32 %632, 1
  br i1 %633, label %634, label %.thread550

634:                                              ; preds = %630
  %635 = getelementptr inbounds i8, ptr %.pre517, i64 152
  %636 = load i32, ptr %635, align 8, !tbaa !121
  %637 = icmp slt i32 %636, 1
  br i1 %637, label %638, label %.thread550

638:                                              ; preds = %634
  %639 = getelementptr inbounds i8, ptr %71, i64 16
  %640 = load float, ptr %639, align 8, !tbaa !131
  %641 = fcmp ogt float %640, 0.000000e+00
  br i1 %641, label %642, label %.thread550

642:                                              ; preds = %638
  %643 = getelementptr inbounds i8, ptr %71, i64 20
  %644 = load float, ptr %643, align 4, !tbaa !132
  %645 = fcmp ogt float %644, 0.000000e+00
  br i1 %645, label %646, label %.thread550

646:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #14
  %647 = getelementptr inbounds i8, ptr %71, i64 5532
  %648 = getelementptr inbounds i8, ptr %71, i64 5540
  %649 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %647, ptr noundef nonnull align 4 dereferenceable(8) %648)
  store <2 x float> %649, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #14
  %650 = load ptr, ptr %4, align 8, !tbaa !5
  %651 = getelementptr inbounds i8, ptr %650, i64 16
  %652 = getelementptr inbounds i8, ptr %650, i64 24
  %653 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %651, ptr noundef nonnull align 4 dereferenceable(8) %652)
  store <2 x float> %653, ptr %21, align 8
  %654 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %21, ptr noundef nonnull align 4 dereferenceable(8) %19)
  store <2 x float> %654, ptr %20, align 8
  %655 = load ptr, ptr %4, align 8, !tbaa !5
  %656 = getelementptr inbounds i8, ptr %655, i64 24
  %657 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(8) %656)
  %658 = load ptr, ptr %4, align 8, !tbaa !5
  %659 = getelementptr inbounds i8, ptr %658, i64 16
  store <2 x float> %657, ptr %659, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #14
  %660 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %639, ptr noundef nonnull align 4 dereferenceable(8) %19)
  store <2 x float> %660, ptr %22, align 8
  %661 = call <2 x float> @_ZL5ImMinRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %659, ptr noundef nonnull align 4 dereferenceable(8) %22)
  %662 = load ptr, ptr %4, align 8, !tbaa !5
  %663 = getelementptr inbounds i8, ptr %662, i64 16
  store <2 x float> %661, ptr %663, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #14
  br label %.thread550

.thread550:                                       ; preds = %630, %634, %638, %642, %646
  %.ph = phi ptr [ %662, %646 ], [ %.pre517, %642 ], [ %.pre517, %638 ], [ %.pre517, %634 ], [ %.pre517, %630 ]
  %664 = getelementptr inbounds i8, ptr %.ph, i64 16
  %665 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %664)
  %666 = load ptr, ptr %4, align 8, !tbaa !5
  %667 = getelementptr inbounds i8, ptr %666, i64 16
  store <2 x float> %665, ptr %667, align 8
  br label %673

668:                                              ; preds = %629
  %669 = getelementptr inbounds i8, ptr %.pre517, i64 16
  %670 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %669)
  %671 = load ptr, ptr %4, align 8, !tbaa !5
  %672 = getelementptr inbounds i8, ptr %671, i64 16
  store <2 x float> %670, ptr %672, align 8
  br i1 %161, label %675, label %673

673:                                              ; preds = %.thread550, %668
  %674 = phi ptr [ %666, %.thread550 ], [ %671, %668 ]
  %.not376.not450 = xor i1 %.not376, true
  %or.cond451 = and i1 %.not388, %.not376.not450
  %.554 = select i1 %or.cond451, i64 5452, i64 5420
  br label %675

675:                                              ; preds = %673, %668
  %.sink553 = phi i64 [ 5444, %668 ], [ %.554, %673 ]
  %676 = phi ptr [ %671, %668 ], [ %674, %673 ]
  %677 = getelementptr inbounds i8, ptr %71, i64 %.sink553
  %678 = load float, ptr %677, align 4, !tbaa !100
  %679 = getelementptr inbounds i8, ptr %676, i64 72
  store float %678, ptr %679, align 8, !tbaa !133
  %680 = getelementptr inbounds i8, ptr %676, i64 968
  %681 = load i32, ptr %680, align 8, !tbaa !134
  %682 = icmp eq i32 %681, 2147483647
  br i1 %682, label %691, label %683

683:                                              ; preds = %675
  %684 = getelementptr inbounds i8, ptr %676, i64 952
  %685 = load i32, ptr %684, align 8, !tbaa !135
  %686 = icmp eq i32 %685, -1
  br i1 %686, label %691, label %687

687:                                              ; preds = %683
  %688 = add nuw nsw i32 %685, 1
  %689 = add nsw i32 %688, %681
  %690 = srem i32 %689, %688
  br label %691

691:                                              ; preds = %675, %683, %687
  %692 = phi i32 [ %690, %687 ], [ 2147483647, %683 ], [ 2147483647, %675 ]
  %693 = getelementptr inbounds i8, ptr %676, i64 960
  store i32 %692, ptr %693, align 8, !tbaa !136
  %694 = getelementptr inbounds i8, ptr %676, i64 972
  %695 = load i32, ptr %694, align 4, !tbaa !137
  %696 = icmp eq i32 %695, 2147483647
  br i1 %696, label %705, label %697

697:                                              ; preds = %691
  %698 = getelementptr inbounds i8, ptr %676, i64 956
  %699 = load i32, ptr %698, align 4, !tbaa !138
  %700 = icmp eq i32 %699, -1
  br i1 %700, label %705, label %701

701:                                              ; preds = %697
  %702 = add nuw nsw i32 %699, 1
  %703 = add nsw i32 %702, %695
  %704 = srem i32 %703, %702
  br label %705

705:                                              ; preds = %691, %697, %701
  %706 = phi i32 [ %704, %701 ], [ 2147483647, %697 ], [ 2147483647, %691 ]
  %707 = getelementptr inbounds i8, ptr %676, i64 964
  store i32 %706, ptr %707, align 4, !tbaa !139
  %708 = getelementptr inbounds i8, ptr %676, i64 956
  store i32 -1, ptr %708, align 4, !tbaa !138
  %709 = getelementptr inbounds i8, ptr %676, i64 952
  store i32 -1, ptr %709, align 8, !tbaa !135
  store i32 2147483647, ptr %694, align 4, !tbaa !137
  store i32 2147483647, ptr %680, align 8, !tbaa !134
  %710 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef nonnull %676, i1 noundef zeroext true)
  %711 = load ptr, ptr %4, align 8, !tbaa !5
  %712 = getelementptr inbounds i8, ptr %711, i64 88
  store <2 x float> %710, ptr %712, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %713 = load ptr, ptr %4, align 8, !tbaa !5
  %714 = getelementptr inbounds i8, ptr %713, i64 96
  %715 = load i64, ptr %23, align 8
  store i64 %715, ptr %714, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #14
  %716 = and i32 %.1, 4096
  %.not410 = icmp eq i32 %716, 0
  %or.cond452 = and i1 %.not410, %.0338.in
  br i1 %or.cond452, label %717, label %718

717:                                              ; preds = %705
  %.not411 = icmp eq i32 %267, 0
  %.not376.not453 = xor i1 %.not376, true
  %brmerge454 = or i1 %.not411, %.not376.not453
  br label %718

718:                                              ; preds = %717, %705
  %.0343 = phi i1 [ false, %705 ], [ %brmerge454, %717 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #14
  store i32 -1, ptr %24, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %25, i8 0, i64 16, i1 false)
  %719 = and i32 %.1, 131072
  %.not412 = icmp eq i32 %719, 0
  %720 = select i1 %.not412, i32 1, i32 2
  %721 = getelementptr inbounds i8, ptr %71, i64 6240
  %722 = load float, ptr %721, align 8, !tbaa !140
  %723 = fmul float %722, 0x3FF59999A0000000
  %724 = getelementptr inbounds i8, ptr %713, i64 72
  %725 = load float, ptr %724, align 8, !tbaa !133
  %726 = fadd float %725, 1.000000e+00
  %727 = call float @llvm.fmuladd.f32(float %722, float 0x3FC99999A0000000, float %726)
  %728 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %723, float noundef %727)
  %729 = fptosi float %728 to i32
  %730 = sitofp i32 %729 to float
  %731 = load ptr, ptr %4, align 8, !tbaa !5
  %732 = getelementptr inbounds i8, ptr %731, i64 125
  %733 = load i8, ptr %732, align 1, !tbaa !117, !range !54, !noundef !55
  %734 = trunc nuw i8 %733 to i1
  br i1 %734, label %736, label %735

735:                                              ; preds = %718
  call void @_ZN5ImGuiL18UpdateManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(ptr noundef nonnull %731, ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull %24, i32 noundef %720, ptr noundef nonnull %25)
  %.pre518 = load ptr, ptr %4, align 8, !tbaa !5
  br label %736

736:                                              ; preds = %735, %718
  %737 = phi ptr [ %.pre518, %735 ], [ %731, %718 ]
  %738 = getelementptr inbounds i8, ptr %737, i64 24
  %739 = load float, ptr %738, align 8, !tbaa !102
  %740 = fcmp ule float %739, 0.000000e+00
  %.not387.not = xor i1 %.not387, true
  %brmerge456 = or i1 %740, %.not387.not
  %brmerge457 = or i1 %.not399, %brmerge456
  br i1 %brmerge457, label %743, label %741

741:                                              ; preds = %736
  %742 = fmul float %739, 0x3FE4CCCCC0000000
  br label %746

743:                                              ; preds = %736
  %744 = load float, ptr %721, align 8, !tbaa !140
  %745 = fmul float %744, 1.600000e+01
  br label %746

746:                                              ; preds = %743, %741
  %.sink.in.in = phi float [ %745, %743 ], [ %742, %741 ]
  %.sink.in = fptosi float %.sink.in.in to i32
  %.sink = sitofp i32 %.sink.in to float
  %747 = getelementptr inbounds i8, ptr %737, i64 596
  store float %.sink, ptr %747, align 4
  %748 = getelementptr inbounds i8, ptr %737, i64 688
  %749 = load ptr, ptr %748, align 8, !tbaa !141
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168) %749)
  %750 = getelementptr inbounds i8, ptr %71, i64 5552
  %751 = load i8, ptr %750, align 8, !tbaa !142, !range !54, !noundef !55
  %752 = zext nneg i8 %751 to i32
  %753 = getelementptr inbounds i8, ptr %71, i64 5553
  %754 = load i8, ptr %753, align 1, !tbaa !143, !range !54, !noundef !55
  %755 = trunc nuw i8 %754 to i1
  %756 = select i1 %755, i32 2, i32 0
  %757 = or disjoint i32 %756, %752
  %758 = load ptr, ptr %4, align 8, !tbaa !5
  %759 = getelementptr inbounds i8, ptr %758, i64 688
  %760 = load ptr, ptr %759, align 8, !tbaa !141
  %761 = getelementptr inbounds i8, ptr %760, i64 48
  store i32 %757, ptr %761, align 8, !tbaa !144
  %762 = getelementptr inbounds i8, ptr %71, i64 6232
  %763 = load ptr, ptr %762, align 8, !tbaa !145
  %764 = getelementptr inbounds i8, ptr %763, i64 88
  %765 = load ptr, ptr %764, align 8, !tbaa !146
  %766 = getelementptr inbounds i8, ptr %765, i64 8
  %767 = load ptr, ptr %766, align 8, !tbaa !147
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %760, ptr noundef %767)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #14
  %768 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %769 = extractvalue { <2 x float>, <2 x float> } %768, 0
  store <2 x float> %769, ptr %26, align 8
  %770 = getelementptr inbounds i8, ptr %26, i64 8
  %771 = extractvalue { <2 x float>, <2 x float> } %768, 1
  store <2 x float> %771, ptr %770, align 8
  %.not376.not459 = xor i1 %.not376, true
  %brmerge460 = or i1 %.not427, %.not376.not459
  %brmerge461 = or i1 %268, %brmerge460
  br i1 %brmerge461, label %775, label %772

772:                                              ; preds = %746
  %773 = getelementptr inbounds i8, ptr %158, i64 512
  %774 = getelementptr inbounds i8, ptr %158, i64 520
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %773, ptr noundef nonnull align 4 dereferenceable(8) %774, i1 noundef zeroext true)
  br label %776

775:                                              ; preds = %746
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %770, i1 noundef zeroext true)
  br label %776

776:                                              ; preds = %775, %772
  br i1 %.not388, label %788, label %777

777:                                              ; preds = %776
  %778 = load ptr, ptr %4, align 8, !tbaa !5
  %779 = call noundef ptr @_ZN5ImGui22GetFrontMostPopupModalEv()
  %780 = icmp eq ptr %778, %779
  br i1 %780, label %781, label %788

781:                                              ; preds = %777
  %782 = load ptr, ptr %4, align 8, !tbaa !5
  %783 = getelementptr inbounds i8, ptr %782, i64 688
  %784 = load ptr, ptr %783, align 8, !tbaa !141
  %785 = getelementptr inbounds i8, ptr %71, i64 7152
  %786 = load float, ptr %785, align 8, !tbaa !151
  %787 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 38, float noundef %786)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %784, ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %770, i32 noundef %787, float noundef 0.000000e+00, i32 noundef 15)
  br label %788

788:                                              ; preds = %781, %777, %776
  %789 = getelementptr inbounds i8, ptr %71, i64 6848
  %790 = load ptr, ptr %789, align 8, !tbaa !152
  %791 = load ptr, ptr %4, align 8, !tbaa !5
  %792 = icmp eq ptr %790, %791
  br i1 %792, label %793, label %811

793:                                              ; preds = %788
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #14
  %794 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(976) %791)
  %795 = extractvalue { <2 x float>, <2 x float> } %794, 0
  store <2 x float> %795, ptr %27, align 8
  %796 = getelementptr inbounds i8, ptr %27, i64 8
  %797 = extractvalue { <2 x float>, <2 x float> } %794, 1
  store <2 x float> %797, ptr %796, align 8
  %798 = load float, ptr %721, align 8, !tbaa !140
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %27, float noundef %798)
  %799 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %27, ptr noundef nonnull align 4 dereferenceable(16) %26)
  br i1 %799, label %810, label %800

800:                                              ; preds = %793
  %801 = load ptr, ptr %4, align 8, !tbaa !5
  %802 = getelementptr inbounds i8, ptr %801, i64 688
  %803 = load ptr, ptr %802, align 8, !tbaa !141
  %804 = getelementptr inbounds i8, ptr %71, i64 6860
  %805 = load float, ptr %804, align 4, !tbaa !153
  %806 = fmul float %805, 2.500000e-01
  %807 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 41, float noundef %806)
  %808 = getelementptr inbounds i8, ptr %71, i64 5420
  %809 = load float, ptr %808, align 4, !tbaa !154
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %803, ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %796, i32 noundef %807, float noundef %809, i32 noundef 15)
  br label %810

810:                                              ; preds = %800, %793
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #14
  %.pre519 = load ptr, ptr %4, align 8, !tbaa !5
  br label %811

811:                                              ; preds = %810, %788
  %812 = phi ptr [ %.pre519, %810 ], [ %791, %788 ]
  %813 = getelementptr inbounds i8, ptr %812, i64 72
  %814 = load float, ptr %813, align 8, !tbaa !133
  %815 = getelementptr inbounds i8, ptr %812, i64 76
  %816 = load float, ptr %815, align 4, !tbaa !105
  br i1 %.0343, label %826, label %817

817:                                              ; preds = %811
  %818 = getelementptr inbounds i8, ptr %71, i64 6784
  %819 = load ptr, ptr %818, align 8, !tbaa !155
  %.not414 = icmp eq ptr %819, null
  br i1 %.not414, label %826, label %820

820:                                              ; preds = %817
  %821 = getelementptr inbounds i8, ptr %812, i64 880
  %822 = load ptr, ptr %821, align 8, !tbaa !89
  %823 = getelementptr inbounds i8, ptr %819, i64 880
  %824 = load ptr, ptr %823, align 8, !tbaa !89
  %825 = icmp eq ptr %822, %824
  br label %826

826:                                              ; preds = %817, %820, %811
  %827 = phi i1 [ true, %811 ], [ false, %817 ], [ %825, %820 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #14
  %828 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(976) %812)
  %829 = extractvalue { <2 x float>, <2 x float> } %828, 0
  store <2 x float> %829, ptr %28, align 8
  %830 = getelementptr inbounds i8, ptr %28, i64 8
  %831 = extractvalue { <2 x float>, <2 x float> } %828, 1
  store <2 x float> %831, ptr %830, align 8
  %832 = load ptr, ptr %4, align 8, !tbaa !5
  %833 = getelementptr inbounds i8, ptr %832, i64 125
  %834 = load i8, ptr %833, align 1, !tbaa !117, !range !54, !noundef !55
  %835 = trunc nuw i8 %834 to i1
  br i1 %835, label %836, label %847

836:                                              ; preds = %826
  %837 = getelementptr inbounds i8, ptr %71, i64 5472
  %838 = load float, ptr %837, align 4, !tbaa !156
  %839 = getelementptr inbounds i8, ptr %832, i64 76
  %840 = load float, ptr %839, align 4, !tbaa !105
  store float %840, ptr %837, align 8, !tbaa !157
  br i1 %827, label %841, label %.thread479

841:                                              ; preds = %836
  %842 = getelementptr inbounds i8, ptr %71, i64 6878
  %843 = load i8, ptr %842, align 2, !tbaa !158, !range !54, !noundef !55
  %844 = trunc nuw i8 %843 to i1
  %spec.select486 = select i1 %844, i32 12, i32 11
  br label %.thread479

.thread479:                                       ; preds = %841, %836
  %845 = phi i32 [ 12, %836 ], [ %spec.select486, %841 ]
  %846 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %845, float noundef 1.000000e+00)
  %.sroa.032.0.copyload = load <2 x float>, ptr %28, align 8
  %.sroa.031.0.copyload = load <2 x float>, ptr %830, align 8
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.032.0.copyload, <2 x float> %.sroa.031.0.copyload, i32 noundef %846, i1 noundef zeroext true, float noundef %814)
  store float %838, ptr %837, align 8, !tbaa !157
  br label %1020

847:                                              ; preds = %826
  %848 = call noundef i32 @_ZL28GetWindowBgColorIdxFromFlagsi(i32 noundef %.1)
  %849 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %848, float noundef 1.000000e+00)
  %850 = getelementptr inbounds i8, ptr %71, i64 6688
  %851 = load i32, ptr %850, align 8, !tbaa !159
  %.not415 = icmp eq i32 %851, 0
  br i1 %.not415, label %861, label %852

852:                                              ; preds = %847
  %853 = and i32 %849, 16777215
  %854 = getelementptr inbounds i8, ptr %71, i64 6760
  %855 = load float, ptr %854, align 8, !tbaa !160
  %856 = call noundef float @_ZL10ImSaturatef(float noundef %855)
  %857 = call float @llvm.fmuladd.f32(float %856, float 2.550000e+02, float 5.000000e-01)
  %858 = fptosi float %857 to i32
  %859 = shl i32 %858, 24
  %860 = or disjoint i32 %859, %853
  store i32 0, ptr %850, align 8, !tbaa !159
  br label %861

861:                                              ; preds = %852, %847
  %.0344 = phi i32 [ %860, %852 ], [ %849, %847 ]
  %862 = load ptr, ptr %4, align 8, !tbaa !5
  %863 = getelementptr inbounds i8, ptr %862, i64 688
  %864 = load ptr, ptr %863, align 8, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #14
  %865 = getelementptr inbounds i8, ptr %862, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  %866 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %862)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef %866)
  %867 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %865, ptr noundef nonnull align 4 dereferenceable(8) %30)
  store <2 x float> %867, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  %868 = load ptr, ptr %4, align 8, !tbaa !5
  %869 = getelementptr inbounds i8, ptr %868, i64 16
  %870 = getelementptr inbounds i8, ptr %868, i64 24
  %871 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %869, ptr noundef nonnull align 4 dereferenceable(8) %870)
  store <2 x float> %871, ptr %31, align 8
  %872 = select i1 %.not397, i32 12, i32 15
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %864, ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %31, i32 noundef %.0344, float noundef %814, i32 noundef %872)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #14
  %873 = load ptr, ptr %4, align 8, !tbaa !5
  %874 = getelementptr inbounds i8, ptr %873, i64 125
  %875 = load i8, ptr %874, align 1, !tbaa !117, !range !54, !noundef !55
  %876 = trunc nuw i8 %875 to i1
  %877 = select i1 %827, i32 11, i32 10
  %spec.select462 = select i1 %876, i32 12, i32 %877
  %878 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %spec.select462, float noundef 1.000000e+00)
  br i1 %.not397, label %879, label %883

879:                                              ; preds = %861
  %880 = load ptr, ptr %4, align 8, !tbaa !5
  %881 = getelementptr inbounds i8, ptr %880, i64 688
  %882 = load ptr, ptr %881, align 8, !tbaa !141
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %882, ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %830, i32 noundef %878, float noundef %814, i32 noundef 3)
  br label %883

883:                                              ; preds = %879, %861
  %884 = and i32 %.1, 1024
  %.not416 = icmp eq i32 %884, 0
  %.pre521 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not416, label %920, label %885

885:                                              ; preds = %883
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #14
  %886 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow11MenuBarRectEv(ptr noundef nonnull align 8 dereferenceable(976) %.pre521)
  %887 = extractvalue { <2 x float>, <2 x float> } %886, 0
  store <2 x float> %887, ptr %32, align 8
  %888 = getelementptr inbounds i8, ptr %32, i64 8
  %889 = extractvalue { <2 x float>, <2 x float> } %886, 1
  store <2 x float> %889, ptr %888, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #14
  %890 = load ptr, ptr %4, align 8, !tbaa !5
  %891 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(976) %890)
  %892 = extractvalue { <2 x float>, <2 x float> } %891, 0
  store <2 x float> %892, ptr %33, align 8
  %893 = getelementptr inbounds i8, ptr %33, i64 8
  %894 = extractvalue { <2 x float>, <2 x float> } %891, 1
  store <2 x float> %894, ptr %893, align 8
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(16) %33)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #14
  %895 = load ptr, ptr %4, align 8, !tbaa !5
  %896 = getelementptr inbounds i8, ptr %895, i64 688
  %897 = load ptr, ptr %896, align 8, !tbaa !141
  %898 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 13, float noundef 1.000000e+00)
  %899 = select i1 %.not397, float 0.000000e+00, float %814
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %897, ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef nonnull align 4 dereferenceable(8) %888, i32 noundef %898, float noundef %899, i32 noundef 3)
  %900 = getelementptr inbounds i8, ptr %71, i64 5472
  %901 = load float, ptr %900, align 4, !tbaa !156
  %902 = fcmp ogt float %901, 0.000000e+00
  %.pre520.pre536 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %902, label %903, label %919

903:                                              ; preds = %885
  %904 = getelementptr inbounds i8, ptr %32, i64 12
  %905 = load float, ptr %904, align 4, !tbaa !161
  %906 = getelementptr inbounds i8, ptr %.pre520.pre536, i64 20
  %907 = load float, ptr %906, align 4, !tbaa !162
  %908 = getelementptr inbounds i8, ptr %.pre520.pre536, i64 28
  %909 = load float, ptr %908, align 4, !tbaa !104
  %910 = fadd float %907, %909
  %911 = fcmp olt float %905, %910
  br i1 %911, label %912, label %919

912:                                              ; preds = %903
  %913 = getelementptr inbounds i8, ptr %.pre520.pre536, i64 688
  %914 = load ptr, ptr %913, align 8, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  %915 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %32)
  store <2 x float> %915, ptr %34, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  %916 = call <2 x float> @_ZNK6ImRect5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %32)
  store <2 x float> %916, ptr %35, align 8
  %917 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 5, float noundef 1.000000e+00)
  %918 = load float, ptr %900, align 4, !tbaa !156
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %914, ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %35, i32 noundef %917, float noundef %918)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  %.pre520.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %919

919:                                              ; preds = %912, %903, %885
  %.pre520 = phi ptr [ %.pre520.pre, %912 ], [ %.pre520.pre536, %903 ], [ %.pre520.pre536, %885 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #14
  br label %920

920:                                              ; preds = %919, %883
  %921 = phi ptr [ %.pre520, %919 ], [ %.pre521, %883 ]
  %922 = getelementptr inbounds i8, ptr %921, i64 120
  %923 = load i8, ptr %922, align 8, !tbaa !125, !range !54, !noundef !55
  %924 = trunc nuw i8 %923 to i1
  br i1 %924, label %925, label %926

925:                                              ; preds = %920
  call void @_ZN5ImGui9ScrollbarEi(i32 noundef 1)
  %.pre522 = load ptr, ptr %4, align 8, !tbaa !5
  br label %926

926:                                              ; preds = %925, %920
  %927 = phi ptr [ %.pre522, %925 ], [ %921, %920 ]
  %928 = getelementptr inbounds i8, ptr %927, i64 121
  %929 = load i8, ptr %928, align 1, !tbaa !124, !range !54, !noundef !55
  %930 = trunc nuw i8 %929 to i1
  br i1 %930, label %931, label %932

931:                                              ; preds = %926
  call void @_ZN5ImGui9ScrollbarEi(i32 noundef 0)
  br label %932

932:                                              ; preds = %931, %926
  %933 = and i32 %.1, 2
  %.not417 = icmp eq i32 %933, 0
  br i1 %.not417, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %932
  %934 = fadd float %814, %816
  %935 = getelementptr inbounds i8, ptr %36, i64 4
  %wide.trip.count = zext nneg i32 %720 to i64
  br label %936

936:                                              ; preds = %.preheader, %958
  %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %958 ]
  %937 = getelementptr inbounds [4 x %struct.ImGuiResizeGripDef], ptr @_ZL15resize_grip_def, i64 0, i64 %indvars.iv
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #14
  %938 = load ptr, ptr %4, align 8, !tbaa !5
  %939 = getelementptr inbounds i8, ptr %938, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #14
  %940 = getelementptr inbounds i8, ptr %938, i64 24
  %941 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %939, ptr noundef nonnull align 4 dereferenceable(8) %940)
  store <2 x float> %941, ptr %37, align 8
  %942 = call <2 x float> @_ZL6ImLerpRK6ImVec2S1_S1_(ptr noundef nonnull align 4 dereferenceable(8) %939, ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %937)
  store <2 x float> %942, ptr %36, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #14
  %943 = load ptr, ptr %4, align 8, !tbaa !5
  %944 = getelementptr inbounds i8, ptr %943, i64 688
  %945 = load ptr, ptr %944, align 8, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #14
  %946 = getelementptr inbounds i8, ptr %937, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #14
  %947 = and i64 %indvars.iv, 1
  %.not418 = icmp eq i64 %947, 0
  br i1 %.not418, label %949, label %948

948:                                              ; preds = %936
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef %816, float noundef %730)
  br label %950

949:                                              ; preds = %936
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef %730, float noundef %816)
  br label %950

950:                                              ; preds = %949, %948
  %951 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %946, ptr noundef nonnull align 4 dereferenceable(8) %40)
  store <2 x float> %951, ptr %39, align 8
  %952 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %39)
  store <2 x float> %952, ptr %38, align 8
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(168) %945, ptr noundef nonnull align 4 dereferenceable(8) %38)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #14
  %953 = load ptr, ptr %4, align 8, !tbaa !5
  %954 = getelementptr inbounds i8, ptr %953, i64 688
  %955 = load ptr, ptr %954, align 8, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #14
  br i1 %.not418, label %957, label %956

956:                                              ; preds = %950
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %730, float noundef %816)
  br label %958

957:                                              ; preds = %950
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %816, float noundef %730)
  br label %958

958:                                              ; preds = %957, %956
  %959 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %946, ptr noundef nonnull align 4 dereferenceable(8) %43)
  store <2 x float> %959, ptr %42, align 8
  %960 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %42)
  store <2 x float> %960, ptr %41, align 8
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(168) %955, ptr noundef nonnull align 4 dereferenceable(8) %41)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #14
  %961 = load ptr, ptr %4, align 8, !tbaa !5
  %962 = getelementptr inbounds i8, ptr %961, i64 688
  %963 = load ptr, ptr %962, align 8, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #14
  %964 = load float, ptr %36, align 8, !tbaa !118
  %965 = load float, ptr %946, align 8, !tbaa !163
  %966 = call float @llvm.fmuladd.f32(float %965, float %934, float %964)
  %967 = load float, ptr %935, align 4, !tbaa !119
  %968 = getelementptr inbounds i8, ptr %937, i64 12
  %969 = load float, ptr %968, align 4, !tbaa !165
  %970 = call float @llvm.fmuladd.f32(float %969, float %934, float %967)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef %966, float noundef %970)
  %971 = getelementptr inbounds i8, ptr %937, i64 16
  %972 = load i32, ptr %971, align 8, !tbaa !166
  %973 = getelementptr inbounds i8, ptr %937, i64 20
  %974 = load i32, ptr %973, align 4, !tbaa !167
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(168) %963, ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef %814, i32 noundef %972, i32 noundef %974)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #14
  %975 = load ptr, ptr %4, align 8, !tbaa !5
  %976 = getelementptr inbounds i8, ptr %975, i64 688
  %977 = load ptr, ptr %976, align 8, !tbaa !141
  %978 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %indvars.iv
  %979 = load i32, ptr %978, align 4, !tbaa !77
  call void @_ZN10ImDrawList14PathFillConvexEj(ptr noundef nonnull align 8 dereferenceable(168) %977, i32 noundef %979)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #14
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %936, !llvm.loop !168

.loopexit:                                        ; preds = %958, %932
  %980 = fcmp ogt float %816, 0.000000e+00
  br i1 %980, label %981, label %989

981:                                              ; preds = %.loopexit
  %982 = load ptr, ptr %4, align 8, !tbaa !5
  %983 = getelementptr inbounds i8, ptr %982, i64 688
  %984 = load ptr, ptr %983, align 8, !tbaa !141
  %985 = getelementptr inbounds i8, ptr %982, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #14
  %986 = getelementptr inbounds i8, ptr %982, i64 24
  %987 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %985, ptr noundef nonnull align 4 dereferenceable(8) %986)
  store <2 x float> %987, ptr %45, align 8
  %988 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 5, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %984, ptr noundef nonnull align 4 dereferenceable(8) %985, ptr noundef nonnull align 4 dereferenceable(8) %45, i32 noundef %988, float noundef %814, i32 noundef 15, float noundef %816)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #14
  br label %989

989:                                              ; preds = %981, %.loopexit
  %990 = load i32, ptr %24, align 4, !tbaa !77
  %.not419 = icmp eq i32 %990, -1
  br i1 %.not419, label %1002, label %991

991:                                              ; preds = %989
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #14
  %992 = load ptr, ptr %4, align 8, !tbaa !5
  %993 = call { <2 x float>, <2 x float> } @_ZL13GetBorderRectP11ImGuiWindowiff(ptr noundef %992, i32 noundef %990, float noundef %730, float noundef 0.000000e+00)
  %994 = extractvalue { <2 x float>, <2 x float> } %993, 0
  store <2 x float> %994, ptr %46, align 8
  %995 = getelementptr inbounds i8, ptr %46, i64 8
  %996 = extractvalue { <2 x float>, <2 x float> } %993, 1
  store <2 x float> %996, ptr %995, align 8
  %997 = load ptr, ptr %4, align 8, !tbaa !5
  %998 = getelementptr inbounds i8, ptr %997, i64 688
  %999 = load ptr, ptr %998, align 8, !tbaa !141
  %1000 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 29, float noundef 1.000000e+00)
  %1001 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 1.000000e+00, float noundef %816)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %999, ptr noundef nonnull align 4 dereferenceable(8) %46, ptr noundef nonnull align 4 dereferenceable(8) %995, i32 noundef %1000, float noundef %1001)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #14
  br label %1002

1002:                                             ; preds = %991, %989
  %1003 = getelementptr inbounds i8, ptr %71, i64 5472
  %1004 = load float, ptr %1003, align 4, !tbaa !156
  %1005 = fcmp ogt float %1004, 0.000000e+00
  %brmerge464.not = and i1 %.not397, %1005
  br i1 %brmerge464.not, label %1006, label %1020

1006:                                             ; preds = %1002
  %1007 = load ptr, ptr %4, align 8, !tbaa !5
  %1008 = getelementptr inbounds i8, ptr %1007, i64 688
  %1009 = load ptr, ptr %1008, align 8, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #14
  %1010 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %28)
  store <2 x float> %1010, ptr %48, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #14
  %1011 = getelementptr inbounds i8, ptr %71, i64 5424
  %1012 = load float, ptr %1011, align 4, !tbaa !169
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %1012, float noundef -1.000000e+00)
  %1013 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %48, ptr noundef nonnull align 4 dereferenceable(8) %49)
  store <2 x float> %1013, ptr %47, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #14
  %1014 = call <2 x float> @_ZNK6ImRect5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %28)
  store <2 x float> %1014, ptr %51, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #14
  %1015 = load float, ptr %1011, align 4, !tbaa !169
  %1016 = fneg float %1015
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1016, float noundef -1.000000e+00)
  %1017 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %51, ptr noundef nonnull align 4 dereferenceable(8) %52)
  store <2 x float> %1017, ptr %50, align 8
  %1018 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 5, float noundef 1.000000e+00)
  %1019 = load float, ptr %1003, align 4, !tbaa !156
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1009, ptr noundef nonnull align 4 dereferenceable(8) %47, ptr noundef nonnull align 4 dereferenceable(8) %50, i32 noundef %1018, float noundef %1019)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #14
  br label %1020

1020:                                             ; preds = %1006, %1002, %.thread479
  %1021 = load ptr, ptr %789, align 8, !tbaa !152
  %1022 = load ptr, ptr %4, align 8, !tbaa !5
  %1023 = icmp eq ptr %1021, %1022
  br i1 %1023, label %1024, label %1050

1024:                                             ; preds = %1020
  %1025 = getelementptr inbounds i8, ptr %1022, i64 72
  %1026 = load float, ptr %1025, align 8, !tbaa !133
  %1027 = getelementptr inbounds i8, ptr %71, i64 5420
  %1028 = load float, ptr %1027, align 4, !tbaa !154
  %1029 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1026, float noundef %1028)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #14
  %1030 = load ptr, ptr %4, align 8, !tbaa !5
  %1031 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(976) %1030)
  %1032 = extractvalue { <2 x float>, <2 x float> } %1031, 0
  store <2 x float> %1032, ptr %53, align 8
  %1033 = getelementptr inbounds i8, ptr %53, i64 8
  %1034 = extractvalue { <2 x float>, <2 x float> } %1031, 1
  store <2 x float> %1034, ptr %1033, align 8
  %1035 = load float, ptr %721, align 8, !tbaa !140
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %53, float noundef %1035)
  %1036 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %53, ptr noundef nonnull align 4 dereferenceable(16) %26)
  br i1 %1036, label %1037, label %._crit_edge523

._crit_edge523:                                   ; preds = %1024
  %.pre524 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1043

1037:                                             ; preds = %1024
  %1038 = load float, ptr %721, align 8, !tbaa !140
  %1039 = fsub float -1.000000e+00, %1038
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %53, float noundef %1039)
  %1040 = load ptr, ptr %4, align 8, !tbaa !5
  %1041 = getelementptr inbounds i8, ptr %1040, i64 72
  %1042 = load float, ptr %1041, align 8, !tbaa !133
  br label %1043

1043:                                             ; preds = %._crit_edge523, %1037
  %1044 = phi ptr [ %1040, %1037 ], [ %.pre524, %._crit_edge523 ]
  %.0346 = phi float [ %1042, %1037 ], [ %1029, %._crit_edge523 ]
  %1045 = getelementptr inbounds i8, ptr %1044, i64 688
  %1046 = load ptr, ptr %1045, align 8, !tbaa !141
  %1047 = getelementptr inbounds i8, ptr %71, i64 6860
  %1048 = load float, ptr %1047, align 4, !tbaa !153
  %1049 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 41, float noundef %1048)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %1046, ptr noundef nonnull align 4 dereferenceable(8) %53, ptr noundef nonnull align 4 dereferenceable(8) %1033, i32 noundef %1049, float noundef %.0346, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #14
  %.pre525 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1050

1050:                                             ; preds = %1043, %1020
  %1051 = phi ptr [ %.pre525, %1043 ], [ %1022, %1020 ]
  %1052 = getelementptr inbounds i8, ptr %1051, i64 32
  %1053 = getelementptr inbounds i8, ptr %1051, i64 40
  %1054 = load i64, ptr %1052, align 8
  store i64 %1054, ptr %1053, align 8
  %1055 = getelementptr inbounds i8, ptr %1051, i64 16
  %1056 = load float, ptr %1055, align 8, !tbaa !170
  %1057 = getelementptr inbounds i8, ptr %1051, i64 88
  %1058 = load float, ptr %1057, align 8, !tbaa !171
  %1059 = fsub float %1056, %1058
  %1060 = getelementptr inbounds i8, ptr %1051, i64 64
  %1061 = load float, ptr %1060, align 8, !tbaa !172
  %1062 = fadd float %1059, %1061
  %1063 = getelementptr inbounds i8, ptr %1051, i64 576
  store float %1062, ptr %1063, align 8, !tbaa !173
  %1064 = getelementptr inbounds i8, ptr %1051, i64 20
  %1065 = load float, ptr %1064, align 4, !tbaa !162
  %1066 = getelementptr inbounds i8, ptr %1051, i64 92
  %1067 = load float, ptr %1066, align 4, !tbaa !174
  %1068 = fsub float %1065, %1067
  %1069 = getelementptr inbounds i8, ptr %1051, i64 68
  %1070 = load float, ptr %1069, align 4, !tbaa !175
  %1071 = fadd float %1068, %1070
  %1072 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %1051)
  %1073 = fadd float %1071, %1072
  %1074 = load ptr, ptr %4, align 8, !tbaa !5
  %1075 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %1074)
  %1076 = fadd float %1073, %1075
  %1077 = load ptr, ptr %4, align 8, !tbaa !5
  %1078 = getelementptr inbounds i8, ptr %1077, i64 580
  store float %1076, ptr %1078, align 4, !tbaa !176
  %1079 = getelementptr inbounds i8, ptr %1077, i64 16
  %1080 = load float, ptr %1079, align 8, !tbaa !170
  %1081 = getelementptr inbounds i8, ptr %1077, i64 88
  %1082 = load float, ptr %1081, align 8, !tbaa !171
  %1083 = fsub float %1080, %1082
  %1084 = getelementptr inbounds i8, ptr %1077, i64 64
  %1085 = load float, ptr %1084, align 8, !tbaa !172
  %1086 = fsub float %1083, %1085
  %1087 = getelementptr inbounds i8, ptr %1077, i64 56
  %1088 = load float, ptr %1087, align 8, !tbaa !177
  %1089 = fcmp une float %1088, 0.000000e+00
  br i1 %1089, label %1096, label %1090

1090:                                             ; preds = %1050
  %1091 = getelementptr inbounds i8, ptr %1077, i64 24
  %1092 = load float, ptr %1091, align 8, !tbaa !102
  %1093 = getelementptr inbounds i8, ptr %1077, i64 112
  %1094 = load float, ptr %1093, align 8, !tbaa !178
  %1095 = fsub float %1092, %1094
  br label %1096

1096:                                             ; preds = %1050, %1090
  %1097 = phi float [ %1095, %1090 ], [ %1088, %1050 ]
  %1098 = fadd float %1086, %1097
  %1099 = getelementptr inbounds i8, ptr %1077, i64 584
  store float %1098, ptr %1099, align 8, !tbaa !179
  %1100 = getelementptr inbounds i8, ptr %1077, i64 20
  %1101 = load float, ptr %1100, align 4, !tbaa !162
  %1102 = getelementptr inbounds i8, ptr %1077, i64 92
  %1103 = load float, ptr %1102, align 4, !tbaa !174
  %1104 = fsub float %1101, %1103
  %1105 = getelementptr inbounds i8, ptr %1077, i64 68
  %1106 = load float, ptr %1105, align 4, !tbaa !175
  %1107 = fsub float %1104, %1106
  %1108 = getelementptr inbounds i8, ptr %1077, i64 60
  %1109 = load float, ptr %1108, align 4, !tbaa !84
  %1110 = fcmp une float %1109, 0.000000e+00
  br i1 %1110, label %1117, label %1111

1111:                                             ; preds = %1096
  %1112 = getelementptr inbounds i8, ptr %1077, i64 28
  %1113 = load float, ptr %1112, align 4, !tbaa !104
  %1114 = getelementptr inbounds i8, ptr %1077, i64 116
  %1115 = load float, ptr %1114, align 4, !tbaa !180
  %1116 = fsub float %1113, %1115
  br label %1117

1117:                                             ; preds = %1096, %1111
  %1118 = phi float [ %1116, %1111 ], [ %1109, %1096 ]
  %1119 = fadd float %1107, %1118
  %1120 = getelementptr inbounds i8, ptr %1077, i64 588
  store float %1119, ptr %1120, align 4, !tbaa !181
  %1121 = fadd float %1085, 0.000000e+00
  %1122 = fsub float %1121, %1082
  %1123 = getelementptr inbounds i8, ptr %1077, i64 472
  store float %1122, ptr %1123, align 8, !tbaa !182
  %1124 = getelementptr inbounds i8, ptr %1077, i64 476
  store <2 x float> zeroinitializer, ptr %1124, align 4, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #14
  %1125 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %1077)
  %1126 = load ptr, ptr %4, align 8, !tbaa !5
  %1127 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %1126)
  %1128 = fadd float %1125, %1127
  %1129 = load ptr, ptr %4, align 8, !tbaa !5
  %1130 = getelementptr inbounds i8, ptr %1129, i64 68
  %1131 = load float, ptr %1130, align 4, !tbaa !175
  %1132 = fadd float %1128, %1131
  %1133 = getelementptr inbounds i8, ptr %1129, i64 92
  %1134 = load float, ptr %1133, align 4, !tbaa !174
  %1135 = fsub float %1132, %1134
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1122, float noundef %1135)
  %1136 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1079, ptr noundef nonnull align 4 dereferenceable(8) %54)
  %1137 = load ptr, ptr %4, align 8, !tbaa !5
  %1138 = getelementptr inbounds i8, ptr %1137, i64 216
  store <2 x float> %1136, ptr %1138, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #14
  %1139 = getelementptr inbounds i8, ptr %1137, i64 200
  store <2 x float> %1136, ptr %1139, align 8
  %1140 = getelementptr inbounds i8, ptr %1137, i64 208
  store <2 x float> %1136, ptr %1140, align 8
  %1141 = getelementptr inbounds i8, ptr %1137, i64 224
  store <2 x float> %1136, ptr %1141, align 8
  %1142 = getelementptr inbounds i8, ptr %1137, i64 232
  %1143 = getelementptr inbounds i8, ptr %1137, i64 300
  store i8 0, ptr %1143, align 4, !tbaa !183
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1142, i8 0, i64 16, i1 false)
  %1144 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1145 = fcmp ogt float %1144, 0.000000e+00
  %1146 = load ptr, ptr %4, align 8, !tbaa !5
  %1147 = getelementptr inbounds i8, ptr %1146, i64 301
  %1148 = zext i1 %1145 to i8
  store i8 %1148, ptr %1147, align 1, !tbaa !184
  %1149 = getelementptr inbounds i8, ptr %1146, i64 316
  %1150 = load i32, ptr %1149, align 4, !tbaa !185
  %1151 = getelementptr inbounds i8, ptr %1146, i64 312
  store i32 %1150, ptr %1151, align 8, !tbaa !186
  store i32 0, ptr %1149, align 4, !tbaa !185
  %1152 = getelementptr inbounds i8, ptr %1146, i64 320
  store i8 0, ptr %1152, align 8, !tbaa !187
  %1153 = getelementptr inbounds i8, ptr %1146, i64 204
  %1154 = load float, ptr %1153, align 4, !tbaa !188
  %1155 = fadd float %1154, -9.999000e+03
  %1156 = getelementptr inbounds i8, ptr %1146, i64 248
  store float %1155, ptr %1156, align 8, !tbaa !189
  %1157 = getelementptr inbounds i8, ptr %1146, i64 336
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1157, i32 noundef 0)
  %1158 = load ptr, ptr %4, align 8, !tbaa !5
  %1159 = getelementptr inbounds i8, ptr %1158, i64 360
  store i32 0, ptr %1159, align 8, !tbaa !190
  br i1 %159, label %.critedge466, label %1160

1160:                                             ; preds = %1117
  %1161 = getelementptr inbounds i8, ptr %158, i64 360
  %1162 = load i32, ptr %1161, align 8, !tbaa !190
  %1163 = getelementptr inbounds i8, ptr %158, i64 368
  %1164 = load i32, ptr %1163, align 8, !tbaa !191
  br label %.critedge466

.critedge466:                                     ; preds = %1117, %1160
  %.sink497 = phi i32 [ %1162, %1160 ], [ 0, %1117 ]
  %1165 = phi i32 [ %1164, %1160 ], [ 1, %1117 ]
  %1166 = getelementptr inbounds i8, ptr %1158, i64 364
  store i32 %.sink497, ptr %1166, align 4
  %1167 = getelementptr inbounds i8, ptr %1158, i64 368
  store i32 %1165, ptr %1167, align 8, !tbaa !191
  %1168 = getelementptr inbounds i8, ptr %1158, i64 596
  %1169 = load float, ptr %1168, align 4, !tbaa !192
  %1170 = getelementptr inbounds i8, ptr %1158, i64 372
  store float %1169, ptr %1170, align 4, !tbaa !193
  %1171 = getelementptr inbounds i8, ptr %1158, i64 376
  store float -1.000000e+00, ptr %1171, align 8, !tbaa !194
  %1172 = getelementptr inbounds i8, ptr %1158, i64 384
  call void @_ZN8ImVectorIiE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1172, i32 noundef 0)
  %1173 = load ptr, ptr %4, align 8, !tbaa !5
  %1174 = getelementptr inbounds i8, ptr %1173, i64 400
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1174, i32 noundef 0)
  %1175 = load ptr, ptr %4, align 8, !tbaa !5
  %1176 = getelementptr inbounds i8, ptr %1175, i64 416
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1176, i32 noundef 0)
  %1177 = load ptr, ptr %4, align 8, !tbaa !5
  %1178 = getelementptr inbounds i8, ptr %1177, i64 488
  store ptr null, ptr %1178, align 8, !tbaa !195
  %1179 = getelementptr inbounds i8, ptr %1177, i64 252
  store i32 0, ptr %1179, align 4, !tbaa !196
  %1180 = getelementptr inbounds i8, ptr %1177, i64 256
  store i32 0, ptr %1180, align 8, !tbaa !197
  %1181 = getelementptr inbounds i8, ptr %1177, i64 648
  %1182 = getelementptr inbounds i8, ptr %1177, i64 352
  store ptr %1181, ptr %1182, align 8, !tbaa !198
  %1183 = getelementptr inbounds i8, ptr %1177, i64 432
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1183, i32 noundef 0)
  %1184 = load ptr, ptr %4, align 8, !tbaa !5
  %1185 = getelementptr inbounds i8, ptr %1184, i64 600
  %1186 = load float, ptr %358, align 4, !tbaa !107
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(48) %1185, i32 noundef 3, float noundef %1186, i1 noundef zeroext %.0338.in)
  %.pre527 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %161, label %1187, label %1194

1187:                                             ; preds = %.critedge466
  %1188 = getelementptr inbounds i8, ptr %.pre527, i64 368
  %1189 = load i32, ptr %1188, align 8, !tbaa !191
  %1190 = getelementptr inbounds i8, ptr %158, i64 368
  %1191 = load i32, ptr %1190, align 8, !tbaa !191
  %.not420 = icmp eq i32 %1189, %1191
  br i1 %.not420, label %1194, label %1192

1192:                                             ; preds = %1187
  store i32 %1191, ptr %1188, align 8, !tbaa !191
  %1193 = getelementptr inbounds i8, ptr %.pre527, i64 384
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %1193, ptr noundef nonnull align 4 dereferenceable(4) %1188)
  %.pre526 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1194

1194:                                             ; preds = %1192, %1187, %.critedge466
  %1195 = phi ptr [ %.pre526, %1192 ], [ %.pre527, %1187 ], [ %.pre527, %.critedge466 ]
  %1196 = getelementptr inbounds i8, ptr %1195, i64 148
  %1197 = load i32, ptr %1196, align 4, !tbaa !120
  %1198 = icmp sgt i32 %1197, 0
  br i1 %1198, label %1199, label %1201

1199:                                             ; preds = %1194
  %1200 = add nsw i32 %1197, -1
  store i32 %1200, ptr %1196, align 4, !tbaa !120
  br label %1201

1201:                                             ; preds = %1199, %1194
  %1202 = getelementptr inbounds i8, ptr %1195, i64 152
  %1203 = load i32, ptr %1202, align 8, !tbaa !121
  %1204 = icmp sgt i32 %1203, 0
  br i1 %1204, label %1205, label %1207

1205:                                             ; preds = %1201
  %1206 = add nsw i32 %1203, -1
  store i32 %1206, ptr %1202, align 8, !tbaa !121
  br label %1207

1207:                                             ; preds = %1205, %1201
  br i1 %.0343, label %1208, label %1210

1208:                                             ; preds = %1207
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %1195)
  %1209 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1209, i1 noundef zeroext false)
  %.pre529.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1210

1210:                                             ; preds = %1208, %1207
  %.pre529 = phi ptr [ %.pre529.pre, %1208 ], [ %1195, %1207 ]
  br i1 %.not397, label %1211, label %1325

1211:                                             ; preds = %1210
  %1212 = getelementptr inbounds i8, ptr %.pre529, i64 368
  %1213 = load i32, ptr %1212, align 8, !tbaa !191
  %1214 = or i32 %1213, 16
  store i32 %1214, ptr %1212, align 8, !tbaa !191
  %1215 = getelementptr inbounds i8, ptr %.pre529, i64 304
  %1216 = load i32, ptr %1215, align 8, !tbaa !199
  %1217 = add nsw i32 %1216, 1
  store i32 %1217, ptr %1215, align 8, !tbaa !199
  %1218 = getelementptr inbounds i8, ptr %.pre529, i64 308
  %1219 = load i32, ptr %1218, align 4, !tbaa !200
  %1220 = shl i32 %1219, 1
  store i32 %1220, ptr %1218, align 4, !tbaa !200
  br i1 %.not398, label %1221, label %1248

1221:                                             ; preds = %1211
  %1222 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976) %.pre529, ptr noundef nonnull @.str.76, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #14
  %1223 = load ptr, ptr %4, align 8, !tbaa !5
  %1224 = getelementptr inbounds i8, ptr %1223, i64 16
  %1225 = getelementptr inbounds i8, ptr %71, i64 5460
  %1226 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1224, ptr noundef nonnull align 4 dereferenceable(8) %1225)
  store <2 x float> %1226, ptr %57, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %58, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %1227 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %57, ptr noundef nonnull align 4 dereferenceable(8) %58)
  store <2 x float> %1227, ptr %56, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #14
  %1228 = load ptr, ptr %4, align 8, !tbaa !5
  %1229 = getelementptr inbounds i8, ptr %1228, i64 16
  %1230 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1229, ptr noundef nonnull align 4 dereferenceable(8) %1225)
  store <2 x float> %1230, ptr %61, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #14
  %1231 = load float, ptr %721, align 8, !tbaa !140
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %62, float noundef %1231, float noundef %1231)
  %1232 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %61, ptr noundef nonnull align 4 dereferenceable(8) %62)
  store <2 x float> %1232, ptr %60, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %63, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %1233 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %60, ptr noundef nonnull align 4 dereferenceable(8) %63)
  store <2 x float> %1233, ptr %59, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %55, ptr noundef nonnull align 4 dereferenceable(8) %56, ptr noundef nonnull align 4 dereferenceable(8) %59)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #14
  %1234 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %55, i32 noundef %1222, ptr noundef null)
  %1235 = call noundef zeroext i1 @_ZN5ImGui14ButtonBehaviorERK6ImRectjPbS3_i(ptr noundef nonnull align 4 dereferenceable(16) %55, i32 noundef %1222, ptr noundef null, ptr noundef null, i32 noundef 0)
  br i1 %1235, label %1236, label %1239

1236:                                             ; preds = %1221
  %1237 = load ptr, ptr %4, align 8, !tbaa !5
  %1238 = getelementptr inbounds i8, ptr %1237, i64 126
  store i8 1, ptr %1238, align 2, !tbaa !116
  br label %1239

1239:                                             ; preds = %1236, %1221
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %55, i32 noundef %1222, i32 noundef 1)
  %1240 = load ptr, ptr %4, align 8, !tbaa !5
  %1241 = getelementptr inbounds i8, ptr %1240, i64 16
  %1242 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1241, ptr noundef nonnull align 4 dereferenceable(8) %1225)
  %1243 = load ptr, ptr %4, align 8, !tbaa !5
  %1244 = getelementptr inbounds i8, ptr %1243, i64 125
  %1245 = load i8, ptr %1244, align 1, !tbaa !117, !range !54, !noundef !55
  %1246 = trunc nuw i8 %1245 to i1
  %1247 = select i1 %1246, i32 1, i32 3
  call void @_ZN5ImGui11RenderArrowE6ImVec2if(<2 x float> %1242, i32 noundef %1247, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #14
  br label %1248

1248:                                             ; preds = %1239, %1211
  br i1 %138, label %1249, label %1269

1249:                                             ; preds = %1248
  %1250 = getelementptr inbounds i8, ptr %71, i64 5464
  %1251 = load float, ptr %1250, align 4, !tbaa !201
  %1252 = load float, ptr %721, align 8, !tbaa !140
  %1253 = fmul float %1252, 5.000000e-01
  %1254 = load ptr, ptr %4, align 8, !tbaa !5
  %1255 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976) %1254, ptr noundef nonnull @.str.77, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #14
  %1256 = load ptr, ptr %4, align 8, !tbaa !5
  %1257 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(976) %1256)
  %1258 = extractvalue { <2 x float>, <2 x float> } %1257, 0
  store <2 x float> %1258, ptr %66, align 8
  %1259 = getelementptr inbounds i8, ptr %66, i64 8
  %1260 = extractvalue { <2 x float>, <2 x float> } %1257, 1
  store <2 x float> %1260, ptr %1259, align 8
  %1261 = call <2 x float> @_ZNK6ImRect5GetTREv(ptr noundef nonnull align 4 dereferenceable(16) %66)
  store <2 x float> %1261, ptr %65, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #14
  %1262 = fneg float %1251
  %1263 = fsub float %1262, %1253
  %1264 = fadd float %1251, %1253
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %67, float noundef %1263, float noundef %1264)
  %1265 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %65, ptr noundef nonnull align 4 dereferenceable(8) %67)
  store <2 x float> %1265, ptr %64, align 8
  %1266 = fadd float %1253, 1.000000e+00
  %1267 = call noundef zeroext i1 @_ZN5ImGui11CloseButtonEjRK6ImVec2f(i32 noundef %1255, ptr noundef nonnull align 4 dereferenceable(8) %64, float noundef %1266)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #14
  br i1 %1267, label %1268, label %1269

1268:                                             ; preds = %1249
  store i8 0, ptr %1, align 1, !tbaa !115
  br label %1269

1269:                                             ; preds = %1249, %1268, %1248
  %1270 = load ptr, ptr %4, align 8, !tbaa !5
  %1271 = getelementptr inbounds i8, ptr %1270, i64 304
  %1272 = load i32, ptr %1271, align 8, !tbaa !199
  %1273 = add nsw i32 %1272, -1
  store i32 %1273, ptr %1271, align 8, !tbaa !199
  %1274 = getelementptr inbounds i8, ptr %1270, i64 308
  %1275 = load i32, ptr %1274, align 4, !tbaa !200
  %1276 = ashr i32 %1275, 1
  store i32 %1276, ptr %1274, align 4, !tbaa !200
  %1277 = getelementptr inbounds i8, ptr %1270, i64 368
  store i32 %1213, ptr %1277, align 8, !tbaa !191
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #14
  %1278 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef nonnull %0, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %1278, ptr %68, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %69, ptr noundef nonnull align 8 dereferenceable(16) %28, i64 16, i1 false), !tbaa.struct !99
  %1279 = getelementptr inbounds i8, ptr %71, i64 5460
  %1280 = load float, ptr %1279, align 4, !tbaa !202
  br i1 %.not398, label %1281, label %1287

1281:                                             ; preds = %1269
  %1282 = load float, ptr %721, align 8, !tbaa !140
  %1283 = fadd float %1280, %1282
  %1284 = getelementptr inbounds i8, ptr %71, i64 5484
  %1285 = load float, ptr %1284, align 4, !tbaa !203
  %1286 = fadd float %1283, %1285
  br label %1287

1287:                                             ; preds = %1269, %1281
  %1288 = phi float [ %1286, %1281 ], [ %1280, %1269 ]
  %1289 = icmp eq ptr %1, null
  br i1 %1289, label %1296, label %1290

1290:                                             ; preds = %1287
  %1291 = load float, ptr %721, align 8, !tbaa !140
  %1292 = fadd float %1280, %1291
  %1293 = getelementptr inbounds i8, ptr %71, i64 5484
  %1294 = load float, ptr %1293, align 4, !tbaa !203
  %1295 = fadd float %1292, %1294
  br label %1296

1296:                                             ; preds = %1287, %1290
  %1297 = phi float [ %1295, %1290 ], [ %1280, %1287 ]
  %1298 = getelementptr inbounds i8, ptr %71, i64 5436
  %1299 = load float, ptr %1298, align 4, !tbaa !204
  %1300 = fcmp ogt float %1299, 0.000000e+00
  br i1 %1300, label %1301, label %1303

1301:                                             ; preds = %1296
  %1302 = call noundef float @_ZL6ImLerpIfET_S0_S0_f(float noundef %1297, float noundef %1288, float noundef %1299)
  br label %1303

1303:                                             ; preds = %1301, %1296
  %.0339 = phi float [ %1302, %1301 ], [ %1297, %1296 ]
  %1304 = load float, ptr %69, align 4, !tbaa !205
  %1305 = fadd float %1288, %1304
  store float %1305, ptr %69, align 4, !tbaa !205
  %1306 = getelementptr inbounds i8, ptr %69, i64 8
  %1307 = load float, ptr %1306, align 4, !tbaa !206
  %1308 = fsub float %1307, %.0339
  store float %1308, ptr %1306, align 4, !tbaa !206
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %70, ptr noundef nonnull align 4 dereferenceable(16) %69, i64 16, i1 false), !tbaa.struct !99
  %1309 = load ptr, ptr %4, align 8, !tbaa !5
  %1310 = getelementptr inbounds i8, ptr %1309, i64 16
  %1311 = load float, ptr %1310, align 8, !tbaa !170
  %1312 = getelementptr inbounds i8, ptr %1309, i64 24
  %1313 = load float, ptr %1312, align 8, !tbaa !102
  %1314 = fadd float %1311, %1313
  br i1 %138, label %1315, label %1318

1315:                                             ; preds = %1303
  %1316 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1317 = fadd float %1316, -3.000000e+00
  br label %1321

1318:                                             ; preds = %1303
  %1319 = getelementptr inbounds i8, ptr %71, i64 5460
  %1320 = load float, ptr %1319, align 4, !tbaa !202
  br label %1321

1321:                                             ; preds = %1318, %1315
  %1322 = phi float [ %1317, %1315 ], [ %1320, %1318 ]
  %1323 = fsub float %1314, %1322
  %1324 = getelementptr inbounds i8, ptr %70, i64 8
  store float %1323, ptr %1324, align 4, !tbaa !206
  call void @_ZN5ImGui17RenderTextClippedERK6ImVec2S2_PKcS4_PS1_S2_PK6ImRect(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %1306, ptr noundef nonnull %0, ptr noundef null, ptr noundef nonnull %68, ptr noundef nonnull align 4 dereferenceable(8) %1298, ptr noundef nonnull %70)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #14
  %.pre528 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1325

1325:                                             ; preds = %1210, %1321
  %1326 = phi ptr [ %.pre529, %1210 ], [ %.pre528, %1321 ]
  %1327 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(976) %1326)
  %1328 = extractvalue { <2 x float>, <2 x float> } %1327, 0
  %1329 = extractvalue { <2 x float>, <2 x float> } %1327, 1
  %1330 = load ptr, ptr %4, align 8, !tbaa !5
  %1331 = getelementptr inbounds i8, ptr %1330, i64 528
  store <2 x float> %1328, ptr %1331, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %1330, i64 536
  store <2 x float> %1329, ptr %.sroa.4.0..sroa_idx, align 8
  %1332 = getelementptr inbounds i8, ptr %1330, i64 512
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1331, ptr noundef nonnull align 4 dereferenceable(16) %1332)
  %1333 = load float, ptr %28, align 8, !tbaa !205
  %1334 = load ptr, ptr %4, align 8, !tbaa !5
  %1335 = getelementptr inbounds i8, ptr %1334, i64 76
  %1336 = load float, ptr %1335, align 4, !tbaa !105
  %1337 = fadd float %1333, %1336
  %1338 = getelementptr inbounds i8, ptr %1334, i64 544
  store float %1337, ptr %1338, align 8, !tbaa !207
  %1339 = getelementptr inbounds i8, ptr %28, i64 12
  %1340 = load float, ptr %1339, align 4, !tbaa !161
  %1341 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(976) %1334)
  %1342 = fadd float %1340, %1341
  %1343 = and i32 %.1, 1025
  %brmerge467.not = icmp eq i32 %1343, 1
  %1344 = getelementptr inbounds i8, ptr %71, i64 5472
  %1345 = load ptr, ptr %4, align 8
  %1346 = getelementptr inbounds i8, ptr %1345, i64 76
  %.in423 = select i1 %brmerge467.not, ptr %1346, ptr %1344
  %1347 = load float, ptr %.in423, align 4, !tbaa !100
  %1348 = fadd float %1342, %1347
  %1349 = getelementptr inbounds i8, ptr %1345, i64 548
  store float %1348, ptr %1349, align 4, !tbaa !208
  %1350 = getelementptr inbounds i8, ptr %1345, i64 16
  %1351 = getelementptr inbounds i8, ptr %1345, i64 24
  %1352 = getelementptr inbounds i8, ptr %1345, i64 112
  %1353 = load float, ptr %1346, align 4, !tbaa !105
  %1354 = getelementptr inbounds i8, ptr %1345, i64 552
  %1355 = load <2 x float>, ptr %1350, align 8, !tbaa !100
  %1356 = load <2 x float>, ptr %1351, align 8, !tbaa !100
  %1357 = fadd <2 x float> %1355, %1356
  %1358 = load <2 x float>, ptr %1352, align 8, !tbaa !100
  %1359 = fsub <2 x float> %1357, %1358
  %1360 = insertelement <2 x float> poison, float %1353, i64 0
  %1361 = shufflevector <2 x float> %1360, <2 x float> poison, <2 x i32> zeroinitializer
  %1362 = fsub <2 x float> %1359, %1361
  store <2 x float> %1362, ptr %1354, align 8, !tbaa !100
  %1363 = getelementptr inbounds i8, ptr %1345, i64 544
  %1364 = load float, ptr %1363, align 8, !tbaa !207
  %1365 = fadd float %1364, 5.000000e-01
  %1366 = getelementptr inbounds i8, ptr %1345, i64 64
  %1367 = load float, ptr %1366, align 8, !tbaa !172
  %1368 = fneg float %1353
  %1369 = call float @llvm.fmuladd.f32(float %1367, float 5.000000e-01, float %1368)
  %1370 = call noundef float @_ZL7ImFloorf(float noundef %1369)
  %1371 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1370)
  %1372 = fadd float %1365, %1371
  %1373 = call noundef float @_ZL7ImFloorf(float noundef %1372)
  %1374 = load ptr, ptr %4, align 8, !tbaa !5
  %1375 = getelementptr inbounds i8, ptr %1374, i64 560
  store float %1373, ptr %1375, align 8, !tbaa !209
  %1376 = getelementptr inbounds i8, ptr %1374, i64 548
  %1377 = load float, ptr %1376, align 4, !tbaa !208
  %1378 = fadd float %1377, 5.000000e-01
  %1379 = call noundef float @_ZL7ImFloorf(float noundef %1378)
  %1380 = load ptr, ptr %4, align 8, !tbaa !5
  %1381 = getelementptr inbounds i8, ptr %1380, i64 564
  store float %1379, ptr %1381, align 4, !tbaa !210
  %1382 = getelementptr inbounds i8, ptr %1380, i64 552
  %1383 = load float, ptr %1382, align 8, !tbaa !211
  %1384 = fadd float %1383, 5.000000e-01
  %1385 = getelementptr inbounds i8, ptr %1380, i64 64
  %1386 = load float, ptr %1385, align 8, !tbaa !172
  %1387 = getelementptr inbounds i8, ptr %1380, i64 76
  %1388 = load float, ptr %1387, align 4, !tbaa !105
  %1389 = fneg float %1388
  %1390 = call float @llvm.fmuladd.f32(float %1386, float 5.000000e-01, float %1389)
  %1391 = call noundef float @_ZL7ImFloorf(float noundef %1390)
  %1392 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1391)
  %1393 = fsub float %1384, %1392
  %1394 = call noundef float @_ZL7ImFloorf(float noundef %1393)
  %1395 = load ptr, ptr %4, align 8, !tbaa !5
  %1396 = getelementptr inbounds i8, ptr %1395, i64 568
  store float %1394, ptr %1396, align 8, !tbaa !212
  %1397 = getelementptr inbounds i8, ptr %1395, i64 556
  %1398 = load float, ptr %1397, align 4, !tbaa !213
  %1399 = fadd float %1398, 5.000000e-01
  %1400 = call noundef float @_ZL7ImFloorf(float noundef %1399)
  %1401 = load ptr, ptr %4, align 8, !tbaa !5
  %1402 = getelementptr inbounds i8, ptr %1401, i64 572
  store float %1400, ptr %1402, align 4, !tbaa !214
  %1403 = getelementptr inbounds i8, ptr %1401, i64 80
  %1404 = load i32, ptr %1403, align 8, !tbaa !215
  %1405 = getelementptr inbounds i8, ptr %1401, i64 260
  store i32 %1404, ptr %1405, align 4, !tbaa !216
  %1406 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %830, i1 noundef zeroext false)
  %1407 = zext i1 %1406 to i32
  %1408 = load ptr, ptr %4, align 8, !tbaa !5
  %1409 = getelementptr inbounds i8, ptr %1408, i64 264
  store i32 %1407, ptr %1409, align 8, !tbaa !217
  %1410 = getelementptr inbounds i8, ptr %1408, i64 268
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1410, ptr noundef nonnull align 8 dereferenceable(16) %28, i64 16, i1 false), !tbaa.struct !99
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #14
  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 4, ptr nonnull %24) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #14
  %1411 = getelementptr inbounds i8, ptr %1408, i64 560
  %1412 = getelementptr inbounds i8, ptr %1408, i64 568
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1411, ptr noundef nonnull align 4 dereferenceable(8) %1412, i1 noundef zeroext true)
  %1413 = load ptr, ptr %4, align 8, !tbaa !5
  %1414 = getelementptr inbounds i8, ptr %1413, i64 124
  store i8 0, ptr %1414, align 4, !tbaa !218
  br label %1418

.critedge469:                                     ; preds = %264
  %1415 = load ptr, ptr %4, align 8, !tbaa !5
  %1416 = getelementptr inbounds i8, ptr %1415, i64 560
  %1417 = getelementptr inbounds i8, ptr %1415, i64 568
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1416, ptr noundef nonnull align 4 dereferenceable(8) %1417, i1 noundef zeroext true)
  %.pre530 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1418

1418:                                             ; preds = %.critedge469, %1325
  %1419 = phi ptr [ %.pre530, %.critedge469 ], [ %1413, %1325 ]
  %1420 = getelementptr inbounds i8, ptr %1419, i64 140
  %1421 = load i32, ptr %1420, align 4, !tbaa !98
  %1422 = add nsw i32 %1421, 1
  store i32 %1422, ptr %1420, align 4, !tbaa !98
  call void @_ZN19ImGuiNextWindowData5ClearEv(ptr noundef nonnull align 8 dereferenceable(108) %181)
  br i1 %161, label %1423, label %._crit_edge539

._crit_edge539:                                   ; preds = %1418
  %.pre531.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1464

1423:                                             ; preds = %1418
  %1424 = and i32 %.1, 1
  %.not424 = icmp eq i32 %1424, 0
  br i1 %.not424, label %1425, label %1426

1425:                                             ; preds = %1423
  call void @__assert_fail(ptr noundef nonnull @.str.78, ptr noundef nonnull @.str.3, i32 noundef 6575, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

1426:                                             ; preds = %1423
  br i1 %159, label %1430, label %1427

1427:                                             ; preds = %1426
  %1428 = getelementptr inbounds i8, ptr %158, i64 125
  %1429 = load i8, ptr %1428, align 1, !tbaa !117, !range !54, !noundef !55
  br label %1430

1430:                                             ; preds = %1427, %1426
  %1431 = phi i8 [ 0, %1426 ], [ %1429, %1427 ]
  %1432 = load ptr, ptr %4, align 8, !tbaa !5
  %1433 = getelementptr inbounds i8, ptr %1432, i64 125
  store i8 %1431, ptr %1433, align 1, !tbaa !117
  %1434 = and i32 %.1, 64
  %.not425 = icmp eq i32 %1434, 0
  br i1 %.not425, label %1435, label %1459

1435:                                             ; preds = %1430
  %1436 = getelementptr inbounds i8, ptr %1432, i64 148
  %1437 = load i32, ptr %1436, align 4, !tbaa !120
  %1438 = icmp slt i32 %1437, 1
  br i1 %1438, label %1439, label %1459

1439:                                             ; preds = %1435
  %1440 = getelementptr inbounds i8, ptr %1432, i64 152
  %1441 = load i32, ptr %1440, align 8, !tbaa !121
  %1442 = icmp slt i32 %1441, 1
  br i1 %1442, label %1443, label %1459

1443:                                             ; preds = %1439
  %1444 = getelementptr inbounds i8, ptr %1432, i64 528
  %1445 = load float, ptr %1444, align 8, !tbaa !219
  %1446 = getelementptr inbounds i8, ptr %1432, i64 536
  %1447 = load float, ptr %1446, align 8, !tbaa !220
  %1448 = fcmp ult float %1445, %1447
  br i1 %1448, label %1449, label %1456

1449:                                             ; preds = %1443
  %1450 = getelementptr inbounds i8, ptr %1432, i64 532
  %1451 = load float, ptr %1450, align 4, !tbaa !221
  %1452 = getelementptr inbounds i8, ptr %1432, i64 540
  %1453 = load float, ptr %1452, align 4, !tbaa !222
  %1454 = fcmp oge float %1451, %1453
  %1455 = zext i1 %1454 to i8
  br label %1456

1456:                                             ; preds = %1449, %1443
  %1457 = phi i8 [ 1, %1443 ], [ %1455, %1449 ]
  %1458 = or i8 %1457, %1431
  store i8 %1458, ptr %1433, align 1, !tbaa !117
  br label %1459

1459:                                             ; preds = %1456, %1439, %1435, %1430
  %1460 = phi i8 [ %1458, %1456 ], [ %1431, %1439 ], [ %1431, %1435 ], [ %1431, %1430 ]
  %1461 = trunc nuw i8 %1460 to i1
  br i1 %1461, label %1462, label %1464

1462:                                             ; preds = %1459
  %1463 = getelementptr inbounds i8, ptr %1432, i64 122
  store i8 0, ptr %1463, align 2, !tbaa !94
  br label %1464

1464:                                             ; preds = %._crit_edge539, %1459, %1462
  %.pre531 = phi ptr [ %.pre531.pre, %._crit_edge539 ], [ %1432, %1459 ], [ %1432, %1462 ]
  %1465 = load float, ptr %72, align 4, !tbaa !223
  %1466 = fcmp ugt float %1465, 0.000000e+00
  br i1 %1466, label %1469, label %1467

1467:                                             ; preds = %1464
  %1468 = getelementptr inbounds i8, ptr %.pre531, i64 122
  store i8 0, ptr %1468, align 2, !tbaa !94
  br label %1469

1469:                                             ; preds = %1467, %1464
  %1470 = getelementptr inbounds i8, ptr %.pre531, i64 125
  %1471 = load i8, ptr %1470, align 1, !tbaa !117, !range !54, !noundef !55
  %1472 = trunc nuw i8 %1471 to i1
  br i1 %1472, label %1477, label %1473

1473:                                             ; preds = %1469
  %1474 = getelementptr inbounds i8, ptr %.pre531, i64 122
  %1475 = load i8, ptr %1474, align 2, !tbaa !94, !range !54, !noundef !55
  %1476 = trunc nuw i8 %1475 to i1
  br i1 %1476, label %1486, label %1477

1477:                                             ; preds = %1473, %1469
  %1478 = getelementptr inbounds i8, ptr %.pre531, i64 148
  %1479 = load i32, ptr %1478, align 4, !tbaa !120
  %1480 = icmp slt i32 %1479, 1
  br i1 %1480, label %1481, label %1486

1481:                                             ; preds = %1477
  %1482 = getelementptr inbounds i8, ptr %.pre531, i64 152
  %1483 = load i32, ptr %1482, align 8, !tbaa !121
  %1484 = icmp slt i32 %1483, 1
  %1485 = zext i1 %1484 to i8
  br label %1486

1486:                                             ; preds = %1481, %1477, %1473
  %1487 = phi i8 [ 0, %1477 ], [ 0, %1473 ], [ %1485, %1481 ]
  %1488 = getelementptr inbounds i8, ptr %.pre531, i64 127
  store i8 %1487, ptr %1488, align 1, !tbaa !224
  %1489 = trunc nuw i8 %1487 to i1
  %1490 = xor i1 %1489, true
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14
  ret i1 %1490
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #9

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11RenderArrowE6ImVec2if(<2 x float>, i32 noundef, float noundef) local_unnamed_addr #9

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 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 #9 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 nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefEixEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL28GetWindowBgColorIdxFromFlagsi(i32 noundef) local_unnamed_addr #1

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

declare void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(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) local_unnamed_addr #10

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui9ScrollbarEi(i32 noundef) local_unnamed_addr #9

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden { <2 x float>, <2 x float> } @_ZL13GetBorderRectP11ImGuiWindowiff(ptr noundef, i32 noundef, float noundef, float noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #7

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui14ButtonBehaviorERK6ImRectjPbS3_i(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui11CloseButtonEjRK6ImVec2f(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), float noundef) local_unnamed_addr #9

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

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

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

!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, !11, i64 0}
!10 = !{!"_ZTS12ImGuiContext", !11, i64 0, !11, i64 1, !12, i64 8, !16, i64 5408, !6, i64 6232, !15, i64 6240, !15, i64 6244, !17, i64 6248, !15, i64 6384, !13, i64 6388, !13, i64 6392, !13, i64 6396, !19, i64 6400, !19, i64 6416, !19, i64 6432, !20, i64 6448, !13, i64 6464, !6, i64 6472, !6, i64 6480, !6, i64 6488, !13, i64 6496, !11, i64 6500, !13, i64 6504, !15, i64 6508, !13, i64 6512, !13, i64 6516, !15, i64 6520, !11, i64 6524, !11, i64 6525, !11, i64 6526, !11, i64 6527, !11, i64 6528, !11, i64 6529, !13, i64 6532, !14, i64 6536, !6, i64 6544, !6, i64 6552, !22, i64 6560, !13, i64 6564, !15, i64 6568, !6, i64 6576, !23, i64 6584, !24, i64 6600, !25, i64 6616, !26, i64 6632, !26, i64 6648, !27, i64 6664, !11, i64 6776, !13, i64 6780, !6, i64 6784, !13, i64 6792, !13, i64 6796, !13, i64 6800, !13, i64 6804, !13, i64 6808, !13, i64 6812, !13, i64 6816, !13, i64 6820, !22, i64 6824, !28, i64 6828, !13, i64 6844, !6, i64 6848, !15, i64 6856, !15, i64 6860, !11, i64 6864, !13, i64 6868, !13, i64 6872, !11, i64 6876, !11, i64 6877, !11, i64 6878, !11, i64 6879, !11, i64 6880, !11, i64 6881, !11, i64 6882, !13, i64 6884, !28, i64 6888, !11, i64 6904, !11, i64 6905, !13, i64 6908, !29, i64 6912, !13, i64 6916, !13, i64 6920, !13, i64 6924, !30, i64 6928, !30, i64 6976, !30, i64 7024, !31, i64 7072, !32, i64 7120, !15, i64 7152, !33, i64 7160, !13, i64 7328, !11, i64 7332, !13, i64 7336, !13, i64 7340, !41, i64 7344, !28, i64 7408, !13, i64 7424, !13, i64 7428, !15, i64 7432, !13, i64 7436, !13, i64 7440, !13, i64 7444, !42, i64 7448, !7, i64 7464, !43, i64 7472, !48, i64 11176, !13, i64 11288, !13, i64 11292, !18, i64 11296, !11, i64 11312, !15, i64 11316, !15, i64 11320, !14, i64 11324, !13, i64 11332, !44, i64 11336, !14, i64 11352, !14, i64 11360, !11, i64 11368, !15, i64 11372, !51, i64 11376, !52, i64 11392, !53, i64 11408, !11, i64 11424, !6, i64 11432, !51, i64 11440, !13, i64 11456, !13, i64 11460, !7, i64 11464, !13, i64 11944, !15, i64 11948, !13, i64 11952, !13, i64 11956, !13, i64 11960, !7, i64 11964}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTS7ImGuiIO", !13, i64 0, !13, i64 4, !14, i64 8, !15, i64 16, !15, i64 20, !6, i64 24, !6, i64 32, !15, i64 40, !15, i64 44, !15, i64 48, !7, i64 52, !15, i64 136, !15, i64 140, !6, i64 144, !6, i64 152, !15, i64 160, !11, i64 164, !6, i64 168, !14, i64 176, !14, i64 184, !14, i64 192, !11, i64 200, !11, i64 201, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !14, i64 256, !7, i64 264, !15, i64 272, !15, i64 276, !11, i64 280, !11, i64 281, !11, i64 282, !11, i64 283, !11, i64 284, !7, i64 285, !7, i64 798, !7, i64 832, !11, i64 916, !11, i64 917, !11, i64 918, !11, i64 919, !11, i64 920, !11, i64 921, !11, i64 922, !15, i64 924, !13, i64 928, !13, i64 932, !13, i64 936, !14, i64 940, !14, i64 948, !7, i64 956, !7, i64 996, !7, i64 1016, !7, i64 1021, !7, i64 1026, !7, i64 1031, !7, i64 1036, !7, i64 1056, !7, i64 1076, !7, i64 1116, !7, i64 1136, !7, i64 3184, !7, i64 5232, !7, i64 5316}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS6ImVec2", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!"_ZTS10ImGuiStyle", !15, i64 0, !14, i64 4, !15, i64 12, !15, i64 16, !14, i64 20, !14, i64 28, !15, i64 36, !15, i64 40, !15, i64 44, !15, i64 48, !14, i64 52, !15, i64 60, !15, i64 64, !14, i64 68, !14, i64 76, !14, i64 84, !15, i64 92, !15, i64 96, !15, i64 100, !15, i64 104, !15, i64 108, !15, i64 112, !14, i64 116, !14, i64 124, !14, i64 132, !15, i64 140, !11, i64 144, !11, i64 145, !15, i64 148, !7, i64 152}
!17 = !{!"_ZTS20ImDrawListSharedData", !14, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !18, i64 24, !7, i64 40}
!18 = !{!"_ZTS6ImVec4", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12}
!19 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !13, i64 0, !13, i64 4, !6, i64 8}
!20 = !{!"_ZTS12ImGuiStorage", !21, i64 0}
!21 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !13, i64 0, !13, i64 4, !6, i64 8}
!22 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!23 = !{!"_ZTS8ImVectorI11ImGuiColModE", !13, i64 0, !13, i64 4, !6, i64 8}
!24 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !13, i64 0, !13, i64 4, !6, i64 8}
!25 = !{!"_ZTS8ImVectorIP6ImFontE", !13, i64 0, !13, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorI13ImGuiPopupRefE", !13, i64 0, !13, i64 4, !6, i64 8}
!27 = !{!"_ZTS19ImGuiNextWindowData", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !14, i64 28, !14, i64 36, !14, i64 44, !14, i64 52, !11, i64 60, !28, i64 64, !6, i64 80, !6, i64 88, !15, i64 96, !14, i64 100}
!28 = !{!"_ZTS6ImRect", !14, i64 0, !14, i64 8}
!29 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!30 = !{!"_ZTS18ImGuiNavMoveResult", !13, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24, !28, i64 28}
!31 = !{!"_ZTS10ImDrawData", !11, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !13, i64 24, !14, i64 28, !14, i64 36}
!32 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!33 = !{!"_ZTS10ImDrawList", !34, i64 0, !35, i64 16, !36, i64 32, !13, i64 48, !6, i64 56, !6, i64 64, !13, i64 72, !6, i64 80, !6, i64 88, !37, i64 96, !38, i64 112, !39, i64 128, !13, i64 144, !13, i64 148, !40, i64 152}
!34 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !13, i64 0, !13, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorItE", !13, i64 0, !13, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI10ImDrawVertE", !13, i64 0, !13, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorI6ImVec4E", !13, i64 0, !13, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorIPvE", !13, i64 0, !13, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorI6ImVec2E", !13, i64 0, !13, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !13, i64 0, !13, i64 4, !6, i64 8}
!41 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !7, i64 24, !11, i64 57, !11, i64 58}
!42 = !{!"_ZTS8ImVectorIhE", !13, i64 0, !13, i64 4, !6, i64 8}
!43 = !{!"_ZTS18ImGuiTextEditState", !13, i64 0, !35, i64 8, !44, i64 24, !44, i64 40, !13, i64 56, !13, i64 60, !13, i64 64, !15, i64 68, !45, i64 72, !15, i64 3692, !11, i64 3696, !11, i64 3697}
!44 = !{!"_ZTS8ImVectorIcE", !13, i64 0, !13, i64 4, !6, i64 8}
!45 = !{!"_ZTSN8ImGuiStb17STB_TexteditStateE", !13, i64 0, !13, i64 4, !13, 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, !15, i64 20, !46, i64 24}
!46 = !{!"_ZTSN8ImGuiStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !47, i64 3582, !47, i64 3584, !13, i64 3588, !13, i64 3592}
!47 = !{!"short", !7, i64 0}
!48 = !{!"_ZTS6ImFont", !15, i64 0, !15, i64 4, !14, i64 8, !49, i64 16, !50, i64 32, !35, i64 48, !6, i64 64, !15, i64 72, !47, i64 76, !47, i64 78, !6, i64 80, !6, i64 88, !15, i64 96, !15, i64 100, !11, i64 104, !13, i64 108}
!49 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !13, i64 0, !13, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorIfE", !13, i64 0, !13, i64 4, !6, i64 8}
!51 = !{!"_ZTS15ImGuiTextBuffer", !44, i64 0}
!52 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !13, i64 0, !13, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !13, i64 0, !13, i64 4, !6, i64 8}
!54 = !{i8 0, i8 2}
!55 = !{}
!56 = !{!10, !13, i64 6392}
!57 = !{!10, !13, i64 6388}
!58 = !{!10, !13, i64 6668}
!59 = !{!60, !13, i64 592}
!60 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !13, i64 8, !13, i64 12, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !15, i64 72, !15, i64 76, !13, i64 80, !13, i64 84, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !11, i64 120, !11, i64 121, !11, i64 122, !11, i64 123, !11, i64 124, !11, i64 125, !11, i64 126, !11, i64 127, !11, i64 128, !11, i64 129, !13, i64 132, !13, i64 136, !13, i64 140, !13, i64 144, !13, i64 148, !13, i64 152, !11, i64 156, !13, i64 160, !13, i64 164, !13, i64 168, !13, i64 172, !13, i64 176, !13, i64 180, !14, i64 184, !14, i64 192, !61, i64 200, !64, i64 496, !28, i64 512, !28, i64 528, !28, i64 544, !28, i64 560, !28, i64 576, !13, i64 592, !15, i64 596, !65, i64 600, !20, i64 648, !66, i64 664, !15, i64 680, !13, i64 684, !6, i64 688, !33, i64 696, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !7, i64 912, !7, i64 920, !13, i64 952, !13, i64 956, !13, i64 960, !13, i64 964, !13, i64 968, !13, i64 972}
!61 = !{!"_ZTS19ImGuiWindowTempData", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !15, i64 32, !15, i64 36, !15, i64 40, !15, i64 44, !15, i64 48, !13, i64 52, !13, i64 56, !13, i64 60, !13, i64 64, !28, i64 68, !28, i64 84, !11, i64 100, !11, i64 101, !13, i64 104, !13, i64 108, !13, i64 112, !13, i64 116, !11, i64 120, !14, i64 124, !19, i64 136, !6, i64 152, !13, i64 160, !13, i64 164, !13, i64 168, !15, i64 172, !15, i64 176, !62, i64 184, !50, i64 200, !50, i64 216, !63, i64 232, !7, i64 248, !15, i64 272, !15, i64 276, !15, i64 280, !6, i64 288}
!62 = !{!"_ZTS8ImVectorIiE", !13, i64 0, !13, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorIjE", !13, i64 0, !13, i64 4, !6, i64 8}
!65 = !{!"_ZTS16ImGuiMenuColumns", !13, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !7, i64 16, !7, i64 32}
!66 = !{!"_ZTS8ImVectorI15ImGuiColumnsSetE", !13, i64 0, !13, i64 4, !6, i64 8}
!67 = !{!60, !13, i64 12}
!68 = !{!60, !13, i64 168}
!69 = !{!10, !13, i64 6648}
!70 = !{!60, !13, i64 144}
!71 = !{!72, !13, i64 0}
!72 = !{!"_ZTS13ImGuiPopupRef", !13, i64 0, !6, i64 8, !6, i64 16, !13, i64 24, !13, i64 28, !14, i64 32, !14, i64 40}
!73 = !{!72, !6, i64 8}
!74 = !{!60, !11, i64 128}
!75 = !{!60, !11, i64 129}
!76 = !{!60, !6, i64 864}
!77 = !{!13, !13, i64 0}
!78 = !{!10, !13, i64 6664}
!79 = !{!60, !13, i64 172}
!80 = !{!60, !13, i64 176}
!81 = !{!10, !15, i64 6708}
!82 = !{!10, !15, i64 6712}
!83 = !{!10, !13, i64 6672}
!84 = !{!60, !15, i64 60}
!85 = !{!10, !13, i64 6676}
!86 = !{!10, !11, i64 6724}
!87 = !{!10, !13, i64 6684}
!88 = !{!60, !6, i64 872}
!89 = !{!60, !6, i64 880}
!90 = !{!60, !6, i64 888}
!91 = distinct !{!91, !92}
!92 = !{!"llvm.loop.mustprogress"}
!93 = !{!60, !6, i64 896}
!94 = !{!60, !11, i64 122}
!95 = !{!60, !13, i64 132}
!96 = !{!10, !13, i64 6464}
!97 = !{!60, !13, i64 136}
!98 = !{!60, !13, i64 140}
!99 = !{i64 0, i64 4, !100, i64 4, i64 4, !100, i64 8, i64 4, !100, i64 12, i64 4, !100}
!100 = !{!15, !15, i64 0}
!101 = !{!60, !15, i64 32}
!102 = !{!60, !15, i64 24}
!103 = !{!60, !15, i64 36}
!104 = !{!60, !15, i64 28}
!105 = !{!60, !15, i64 76}
!106 = !{!16, !15, i64 8}
!107 = !{!16, !15, i64 68}
!108 = !{!10, !15, i64 6764}
!109 = !{!60, !15, i64 324}
!110 = !{!10, !15, i64 6768}
!111 = !{!60, !15, i64 328}
!112 = !{!10, !6, i64 6480}
!113 = !{!10, !13, i64 6496}
!114 = !{!10, !13, i64 6504}
!115 = !{!11, !11, i64 0}
!116 = !{!60, !11, i64 126}
!117 = !{!60, !11, i64 125}
!118 = !{!14, !15, i64 0}
!119 = !{!14, !15, i64 4}
!120 = !{!60, !13, i64 148}
!121 = !{!60, !13, i64 152}
!122 = !{!60, !11, i64 156}
!123 = !{!60, !15, i64 52}
!124 = !{!60, !11, i64 121}
!125 = !{!60, !11, i64 120}
!126 = !{!60, !15, i64 48}
!127 = !{!16, !15, i64 100}
!128 = !{!60, !13, i64 164}
!129 = !{!60, !13, i64 336}
!130 = !{!60, !15, i64 184}
!131 = !{!10, !15, i64 16}
!132 = !{!10, !15, i64 20}
!133 = !{!60, !15, i64 72}
!134 = !{!60, !13, i64 968}
!135 = !{!60, !13, i64 952}
!136 = !{!60, !13, i64 960}
!137 = !{!60, !13, i64 972}
!138 = !{!60, !13, i64 956}
!139 = !{!60, !13, i64 964}
!140 = !{!10, !15, i64 6240}
!141 = !{!60, !6, i64 688}
!142 = !{!10, !11, i64 5552}
!143 = !{!10, !11, i64 5553}
!144 = !{!33, !13, i64 48}
!145 = !{!10, !6, i64 6232}
!146 = !{!48, !6, i64 88}
!147 = !{!148, !6, i64 8}
!148 = !{!"_ZTS11ImFontAtlas", !13, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !6, i64 24, !6, i64 32, !13, i64 40, !13, i64 44, !14, i64 48, !14, i64 56, !25, i64 64, !149, i64 80, !150, i64 96, !7, i64 112}
!149 = !{!"_ZTS8ImVectorIN11ImFontAtlas10CustomRectEE", !13, i64 0, !13, i64 4, !6, i64 8}
!150 = !{!"_ZTS8ImVectorI12ImFontConfigE", !13, i64 0, !13, i64 4, !6, i64 8}
!151 = !{!10, !15, i64 7152}
!152 = !{!10, !6, i64 6848}
!153 = !{!10, !15, i64 6860}
!154 = !{!10, !15, i64 5420}
!155 = !{!10, !6, i64 6784}
!156 = !{!16, !15, i64 64}
!157 = !{!10, !15, i64 5472}
!158 = !{!10, !11, i64 6878}
!159 = !{!10, !13, i64 6688}
!160 = !{!10, !15, i64 6760}
!161 = !{!28, !15, i64 12}
!162 = !{!60, !15, i64 20}
!163 = !{!164, !15, i64 8}
!164 = !{!"_ZTS18ImGuiResizeGripDef", !14, i64 0, !14, i64 8, !13, i64 16, !13, i64 20}
!165 = !{!164, !15, i64 12}
!166 = !{!164, !13, i64 16}
!167 = !{!164, !13, i64 20}
!168 = distinct !{!168, !92}
!169 = !{!16, !15, i64 16}
!170 = !{!60, !15, i64 16}
!171 = !{!60, !15, i64 88}
!172 = !{!60, !15, i64 64}
!173 = !{!60, !15, i64 576}
!174 = !{!60, !15, i64 92}
!175 = !{!60, !15, i64 68}
!176 = !{!60, !15, i64 580}
!177 = !{!60, !15, i64 56}
!178 = !{!60, !15, i64 112}
!179 = !{!60, !15, i64 584}
!180 = !{!60, !15, i64 116}
!181 = !{!60, !15, i64 588}
!182 = !{!60, !15, i64 472}
!183 = !{!60, !11, i64 300}
!184 = !{!60, !11, i64 301}
!185 = !{!60, !13, i64 316}
!186 = !{!60, !13, i64 312}
!187 = !{!60, !11, i64 320}
!188 = !{!60, !15, i64 204}
!189 = !{!60, !15, i64 248}
!190 = !{!60, !13, i64 360}
!191 = !{!60, !13, i64 368}
!192 = !{!60, !15, i64 596}
!193 = !{!60, !15, i64 372}
!194 = !{!60, !15, i64 376}
!195 = !{!60, !6, i64 488}
!196 = !{!60, !13, i64 252}
!197 = !{!60, !13, i64 256}
!198 = !{!60, !6, i64 352}
!199 = !{!60, !13, i64 304}
!200 = !{!60, !13, i64 308}
!201 = !{!16, !15, i64 56}
!202 = !{!16, !15, i64 52}
!203 = !{!16, !15, i64 76}
!204 = !{!16, !15, i64 28}
!205 = !{!28, !15, i64 0}
!206 = !{!28, !15, i64 8}
!207 = !{!60, !15, i64 544}
!208 = !{!60, !15, i64 548}
!209 = !{!60, !15, i64 560}
!210 = !{!60, !15, i64 564}
!211 = !{!60, !15, i64 552}
!212 = !{!60, !15, i64 568}
!213 = !{!60, !15, i64 556}
!214 = !{!60, !15, i64 572}
!215 = !{!60, !13, i64 80}
!216 = !{!60, !13, i64 260}
!217 = !{!60, !13, i64 264}
!218 = !{!60, !11, i64 124}
!219 = !{!60, !15, i64 528}
!220 = !{!60, !15, i64 536}
!221 = !{!60, !15, i64 532}
!222 = !{!60, !15, i64 540}
!223 = !{!16, !15, i64 0}
!224 = !{!60, !11, i64 127}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass