; LLVM IR from Angelo1211/HybridRenderingEngine :: libs/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, i8, [5 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, [4 x i8], %class.ImVector, %class.ImVector, %class.ImVector, %class.ImVector, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, i32, i8, [3 x i8], i32, float, i32, i32, i32, float, i8, i8, i8, i8, i8, [3 x i8], i32, %struct.ImVec2, [4 x i8], 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, ptr, ptr, float, float, i8, [3 x i8], i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, [2 x i8], i32, i32, i32, i32, i32, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImDrawData, %struct.ImDrawDataBuilder, float, [4 x i8], %struct.ImDrawList, i32, i8, i8, [2 x i8], i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, %class.ImVector.13, [8 x i8], %struct.ImGuiInputTextState, %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, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, [512 x i8], [17 x i16], [21 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x 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, [43 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.ImGuiInputTextState = type { i32, %class.ImVector.7, %class.ImVector.14, %class.ImVector.14, i32, i32, i32, float, %"struct.ImGuiStb::STB_TexteditState", float, i8, i8, i32, ptr, ptr }
%"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, i8, i32, i32, i32, i32, i32, i32, i8, i32, 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, [2 x i32], [2 x %struct.ImRect], i32, i32, i32, i32, i32, i32 }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, %struct.ImVec2, 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], %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, ptr }
%class.ImVector.20 = type { i32, i32, ptr }
%class.ImVector.21 = type { i32, i32, ptr }
%struct.ImVec1 = type { float }
%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 <{ i8, [3 x i8], i32, 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 [87 x i8], align 1
@_ZL15resize_grip_def = external hidden global [4 x %struct.ImGuiResizeGripDef], align 16
@.str.62 = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.69 = 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #7

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

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

; 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: 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 @_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: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984), ptr noundef, ptr noundef) #8 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 @_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 @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) #8

; 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 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 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 ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %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 i8, align 1
  %64 = alloca i8, align 1
  %65 = alloca i32, align 4
  %66 = alloca %struct.ImRect, align 4
  %67 = alloca float, align 4
  %68 = alloca float, align 4
  %69 = alloca ptr, align 8
  %70 = alloca i8, align 1
  %71 = alloca %struct.ImRect, align 4
  %72 = alloca float, align 4
  %73 = alloca i32, align 4
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca %struct.ImVec2, align 4
  %76 = alloca i32, align 4
  %77 = alloca %struct.ImVec2, align 4
  %78 = alloca %struct.ImVec2, align 4
  %79 = alloca %struct.ImVec2, align 4
  %80 = alloca i32, align 4
  %81 = alloca %struct.ImRect, align 4
  %82 = alloca %struct.ImRect, align 4
  %83 = alloca %struct.ImVec2, align 4
  %84 = alloca %struct.ImVec2, align 4
  %85 = alloca i32, align 4
  %86 = alloca ptr, align 8
  %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.ImVec2, align 4
  %94 = alloca %struct.ImVec2, align 4
  %95 = alloca %struct.ImVec2, align 4
  %96 = alloca %struct.ImVec2, align 4
  %97 = alloca %struct.ImRect, align 4
  %98 = alloca %struct.ImVec2, align 4
  %99 = alloca %struct.ImVec2, align 4
  %100 = alloca %struct.ImVec2, align 4
  %101 = alloca %struct.ImVec2, align 4
  %102 = alloca %struct.ImVec2, align 4
  %103 = alloca %struct.ImVec2, align 4
  %104 = alloca float, align 4
  %105 = alloca %struct.ImRect, align 4
  %106 = alloca %struct.ImVec2, align 4
  %107 = alloca %struct.ImVec2, align 4
  %108 = alloca %struct.ImVec2, align 4
  %109 = alloca i32, align 4
  %110 = alloca float, align 4
  %111 = alloca float, align 4
  %112 = alloca %struct.ImVec2, align 4
  %113 = alloca %struct.ImVec2, align 4
  %114 = alloca %struct.ImRect, align 4
  %115 = alloca %struct.ImVec2, align 4
  %116 = alloca %struct.ImVec2, align 4
  %117 = alloca %struct.ImRect, align 4
  %118 = alloca float, align 4
  %119 = alloca float, align 4
  %120 = alloca %struct.ImRect, align 4
  %121 = 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
  %122 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %122, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #13
  %123 = load ptr, ptr %7, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.ImGuiContext, ptr %123, i32 0, i32 5
  store ptr %124, ptr %8, align 8, !tbaa !5
  %125 = load ptr, ptr %4, align 8, !tbaa !5
  %126 = icmp ne ptr %125, null
  br i1 %126, label %127, label %128

127:                                              ; preds = %3
  br label %130

128:                                              ; preds = %3
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.3, i32 noundef 4508, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

129:                                              ; No predecessors!
  br label %130

130:                                              ; preds = %129, %127
  %131 = load ptr, ptr %7, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.ImGuiContext, ptr %131, i32 0, i32 1
  %133 = load i8, ptr %132, align 1, !tbaa !11, !range !56, !noundef !57
  %134 = trunc i8 %133 to i1
  br i1 %134, label %135, label %136

135:                                              ; preds = %130
  br label %138

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

137:                                              ; No predecessors!
  br label %138

138:                                              ; preds = %137, %135
  %139 = load ptr, ptr %7, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.ImGuiContext, ptr %139, i32 0, i32 12
  %141 = load i32, ptr %140, align 4, !tbaa !58
  %142 = load ptr, ptr %7, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.ImGuiContext, ptr %142, i32 0, i32 11
  %144 = load i32, ptr %143, align 8, !tbaa !59
  %145 = icmp ne i32 %141, %144
  br i1 %145, label %146, label %147

146:                                              ; preds = %138
  br label %149

147:                                              ; preds = %138
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.3, i32 noundef 4510, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

148:                                              ; No predecessors!
  br label %149

149:                                              ; preds = %148, %146
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #13
  %150 = load ptr, ptr %4, align 8, !tbaa !5
  %151 = call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef %150)
  store ptr %151, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #13
  %152 = load ptr, ptr %9, align 8, !tbaa !5
  %153 = icmp eq ptr %152, null
  %154 = zext i1 %153 to i8
  store i8 %154, ptr %10, align 1, !tbaa !60
  %155 = load i8, ptr %10, align 1, !tbaa !60, !range !56, !noundef !57
  %156 = trunc i8 %155 to i1
  br i1 %156, label %157, label %173

157:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #13
  %158 = load ptr, ptr %7, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.ImGuiContext, ptr %158, i32 0, i32 55
  %160 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %159, i32 0, i32 1
  %161 = load i32, ptr %160, align 4, !tbaa !61
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %167

163:                                              ; preds = %157
  %164 = load ptr, ptr %7, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.ImGuiContext, ptr %164, i32 0, i32 55
  %166 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %165, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %11, ptr align 4 %166, i64 8, i1 false), !tbaa.struct !62
  br label %168

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

168:                                              ; preds = %167, %163
  %169 = 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 !62
  %170 = load i32, ptr %6, align 4, !tbaa !9
  %171 = load <2 x float>, ptr %12, align 4
  %172 = call noundef ptr @_ZL15CreateNewWindowPKc6ImVec2i(ptr noundef %169, <2 x float> %171, i32 noundef %170)
  store ptr %172, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #13
  br label %173

173:                                              ; preds = %168, %149
  %174 = load i32, ptr %6, align 4, !tbaa !9
  %175 = and i32 %174, 512
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %180

177:                                              ; preds = %173
  %178 = load i32, ptr %6, align 4, !tbaa !9
  %179 = or i32 %178, 6
  store i32 %179, ptr %6, align 4, !tbaa !9
  br label %180

180:                                              ; preds = %177, %173
  %181 = load i32, ptr %6, align 4, !tbaa !9
  %182 = and i32 %181, 8388608
  %183 = icmp ne i32 %182, 0
  br i1 %183, label %184, label %192

184:                                              ; preds = %180
  %185 = load i32, ptr %6, align 4, !tbaa !9
  %186 = and i32 %185, 16777216
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %188, label %189

188:                                              ; preds = %184
  br label %191

189:                                              ; preds = %184
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.3, i32 noundef 4526, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

190:                                              ; No predecessors!
  br label %191

191:                                              ; preds = %190, %188
  br label %192

192:                                              ; preds = %191, %180
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #13
  %193 = load ptr, ptr %7, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.ImGuiContext, ptr %193, i32 0, i32 11
  %195 = load i32, ptr %194, align 8, !tbaa !59
  store i32 %195, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #13
  %196 = load ptr, ptr %9, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.ImGuiWindow, ptr %196, i32 0, i32 52
  %198 = load i32, ptr %197, align 8, !tbaa !64
  %199 = load i32, ptr %13, align 4, !tbaa !9
  %200 = icmp ne i32 %198, %199
  %201 = zext i1 %200 to i8
  store i8 %201, ptr %14, align 1, !tbaa !60
  %202 = load i8, ptr %14, align 1, !tbaa !60, !range !56, !noundef !57
  %203 = trunc i8 %202 to i1
  br i1 %203, label %204, label %208

204:                                              ; preds = %192
  %205 = load i32, ptr %6, align 4, !tbaa !9
  %206 = load ptr, ptr %9, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.ImGuiWindow, ptr %206, i32 0, i32 2
  store i32 %205, ptr %207, align 4, !tbaa !73
  br label %212

208:                                              ; preds = %192
  %209 = load ptr, ptr %9, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.ImGuiWindow, ptr %209, i32 0, i32 2
  %211 = load i32, ptr %210, align 4, !tbaa !73
  store i32 %211, ptr %6, align 4, !tbaa !9
  br label %212

212:                                              ; preds = %208, %204
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #13
  %213 = load ptr, ptr %7, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.ImGuiContext, ptr %213, i32 0, i32 18
  %215 = call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %214)
  br i1 %215, label %216, label %217

216:                                              ; preds = %212
  br label %222

217:                                              ; preds = %212
  %218 = load ptr, ptr %7, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.ImGuiContext, ptr %218, i32 0, i32 18
  %220 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %219)
  %221 = load ptr, ptr %220, align 8, !tbaa !5
  br label %222

222:                                              ; preds = %217, %216
  %223 = phi ptr [ null, %216 ], [ %221, %217 ]
  store ptr %223, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #13
  %224 = load i8, ptr %14, align 1, !tbaa !60, !range !56, !noundef !57
  %225 = trunc i8 %224 to i1
  br i1 %225, label %226, label %235

226:                                              ; preds = %222
  %227 = load i32, ptr %6, align 4, !tbaa !9
  %228 = and i32 %227, 83886080
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %232

230:                                              ; preds = %226
  %231 = load ptr, ptr %15, align 8, !tbaa !5
  br label %233

232:                                              ; preds = %226
  br label %233

233:                                              ; preds = %232, %230
  %234 = phi ptr [ %231, %230 ], [ null, %232 ]
  br label %239

235:                                              ; preds = %222
  %236 = load ptr, ptr %9, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.ImGuiWindow, ptr %236, i32 0, i32 61
  %238 = load ptr, ptr %237, align 8, !tbaa !74
  br label %239

239:                                              ; preds = %235, %233
  %240 = phi ptr [ %234, %233 ], [ %238, %235 ]
  store ptr %240, ptr %16, align 8, !tbaa !5
  %241 = load ptr, ptr %16, align 8, !tbaa !5
  %242 = icmp ne ptr %241, null
  br i1 %242, label %248, label %243

243:                                              ; preds = %239
  %244 = load i32, ptr %6, align 4, !tbaa !9
  %245 = and i32 %244, 16777216
  %246 = icmp ne i32 %245, 0
  %247 = xor i1 %246, true
  br label %248

248:                                              ; preds = %243, %239
  %249 = phi i1 [ true, %239 ], [ %247, %243 ]
  br i1 %249, label %250, label %251

250:                                              ; preds = %248
  br label %253

251:                                              ; preds = %248
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.3, i32 noundef 4538, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

252:                                              ; No predecessors!
  br label %253

253:                                              ; preds = %252, %250
  %254 = load ptr, ptr %5, align 8, !tbaa !5
  %255 = icmp ne ptr %254, null
  %256 = load ptr, ptr %9, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.ImGuiWindow, ptr %256, i32 0, i32 28
  %258 = zext i1 %255 to i8
  store i8 %258, ptr %257, align 2, !tbaa !75
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #13
  %259 = load ptr, ptr %9, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.ImGuiWindow, ptr %259, i32 0, i32 52
  %261 = load i32, ptr %260, align 8, !tbaa !64
  %262 = load i32, ptr %13, align 4, !tbaa !9
  %263 = sub nsw i32 %262, 1
  %264 = icmp slt i32 %261, %263
  %265 = zext i1 %264 to i8
  store i8 %265, ptr %17, align 1, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #13
  %266 = load ptr, ptr %9, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.ImGuiWindow, ptr %266, i32 0, i32 39
  %268 = load i32, ptr %267, align 4, !tbaa !76
  %269 = icmp sgt i32 %268, 0
  %270 = zext i1 %269 to i8
  store i8 %270, ptr %18, align 1, !tbaa !60
  %271 = load i32, ptr %6, align 4, !tbaa !9
  %272 = and i32 %271, 67108864
  %273 = icmp ne i32 %272, 0
  br i1 %273, label %274, label %308

274:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  %275 = load ptr, ptr %7, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.ImGuiContext, ptr %275, i32 0, i32 53
  %277 = load ptr, ptr %7, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.ImGuiContext, ptr %277, i32 0, i32 54
  %279 = getelementptr inbounds %class.ImVector.4, ptr %278, i32 0, i32 0
  %280 = load i32, ptr %279, align 8, !tbaa !77
  %281 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefEixEi(ptr noundef nonnull align 8 dereferenceable(16) %276, i32 noundef %280)
  store ptr %281, ptr %19, align 8, !tbaa !5
  %282 = load ptr, ptr %9, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.ImGuiWindow, ptr %282, i32 0, i32 32
  %284 = load i32, ptr %283, align 8, !tbaa !78
  %285 = load ptr, ptr %19, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.ImGuiPopupRef, ptr %285, i32 0, i32 0
  %287 = load i32, ptr %286, align 8, !tbaa !79
  %288 = icmp ne i32 %284, %287
  %289 = zext i1 %288 to i32
  %290 = load i8, ptr %17, align 1, !tbaa !60, !range !56, !noundef !57
  %291 = trunc i8 %290 to i1
  %292 = zext i1 %291 to i32
  %293 = or i32 %292, %289
  %294 = icmp ne i32 %293, 0
  %295 = zext i1 %294 to i8
  store i8 %295, ptr %17, align 1, !tbaa !60
  %296 = load ptr, ptr %9, align 8, !tbaa !5
  %297 = load ptr, ptr %19, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.ImGuiPopupRef, ptr %297, i32 0, i32 1
  %299 = load ptr, ptr %298, align 8, !tbaa !81
  %300 = icmp ne ptr %296, %299
  %301 = zext i1 %300 to i32
  %302 = load i8, ptr %17, align 1, !tbaa !60, !range !56, !noundef !57
  %303 = trunc i8 %302 to i1
  %304 = zext i1 %303 to i32
  %305 = or i32 %304, %301
  %306 = icmp ne i32 %305, 0
  %307 = zext i1 %306 to i8
  store i8 %307, ptr %17, align 1, !tbaa !60
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  br label %308

308:                                              ; preds = %274, %253
  %309 = load i8, ptr %17, align 1, !tbaa !60, !range !56, !noundef !57
  %310 = trunc i8 %309 to i1
  br i1 %310, label %314, label %311

311:                                              ; preds = %308
  %312 = load i8, ptr %18, align 1, !tbaa !60, !range !56, !noundef !57
  %313 = trunc i8 %312 to i1
  br label %314

314:                                              ; preds = %311, %308
  %315 = phi i1 [ true, %308 ], [ %313, %311 ]
  %316 = load ptr, ptr %9, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.ImGuiWindow, ptr %316, i32 0, i32 26
  %318 = zext i1 %315 to i8
  store i8 %318, ptr %317, align 8, !tbaa !82
  %319 = load ptr, ptr %9, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.ImGuiWindow, ptr %319, i32 0, i32 26
  %321 = load i8, ptr %320, align 8, !tbaa !82, !range !56, !noundef !57
  %322 = trunc i8 %321 to i1
  br i1 %322, label %323, label %325

323:                                              ; preds = %314
  %324 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %324, i32 noundef 8, i1 noundef zeroext true)
  br label %325

325:                                              ; preds = %323, %314
  %326 = load ptr, ptr %7, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.ImGuiContext, ptr %326, i32 0, i32 18
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %327, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %328 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %328)
  %329 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL15CheckStacksSizeP11ImGuiWindowb(ptr noundef %329, i1 noundef zeroext true)
  %330 = load i32, ptr %6, align 4, !tbaa !9
  %331 = and i32 %330, 67108864
  %332 = icmp ne i32 %331, 0
  br i1 %332, label %333, label %352

333:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  %334 = load ptr, ptr %7, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.ImGuiContext, ptr %334, i32 0, i32 53
  %336 = load ptr, ptr %7, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.ImGuiContext, ptr %336, i32 0, i32 54
  %338 = getelementptr inbounds %class.ImVector.4, ptr %337, i32 0, i32 0
  %339 = load i32, ptr %338, align 8, !tbaa !77
  %340 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefEixEi(ptr noundef nonnull align 8 dereferenceable(16) %335, i32 noundef %339)
  store ptr %340, ptr %20, align 8, !tbaa !5
  %341 = load ptr, ptr %9, align 8, !tbaa !5
  %342 = load ptr, ptr %20, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.ImGuiPopupRef, ptr %342, i32 0, i32 1
  store ptr %341, ptr %343, align 8, !tbaa !81
  %344 = load ptr, ptr %7, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.ImGuiContext, ptr %344, i32 0, i32 54
  %346 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN8ImVectorI13ImGuiPopupRefE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %345, ptr noundef nonnull align 8 dereferenceable(48) %346)
  %347 = load ptr, ptr %20, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.ImGuiPopupRef, ptr %347, i32 0, i32 0
  %349 = load i32, ptr %348, align 8, !tbaa !79
  %350 = load ptr, ptr %9, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.ImGuiWindow, ptr %350, i32 0, i32 32
  store i32 %349, ptr %351, align 8, !tbaa !78
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %352

352:                                              ; preds = %333, %325
  %353 = load i8, ptr %18, align 1, !tbaa !60, !range !56, !noundef !57
  %354 = trunc i8 %353 to i1
  br i1 %354, label %355, label %363

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

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

363:                                              ; preds = %359, %355, %352
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  store i8 0, ptr %21, align 1, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #13
  store i8 0, ptr %22, align 1, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  store i8 0, ptr %23, align 1, !tbaa !60
  %364 = load ptr, ptr %7, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.ImGuiContext, ptr %364, i32 0, i32 55
  %366 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %365, i32 0, i32 0
  %367 = load i32, ptr %366, align 8, !tbaa !83
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %369, label %413

369:                                              ; preds = %363
  %370 = load ptr, ptr %9, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.ImGuiWindow, ptr %370, i32 0, i32 40
  %372 = load i32, ptr %371, align 8, !tbaa !84
  %373 = load ptr, ptr %7, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.ImGuiContext, ptr %373, i32 0, i32 55
  %375 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %374, i32 0, i32 0
  %376 = load i32, ptr %375, align 8, !tbaa !83
  %377 = and i32 %372, %376
  %378 = icmp ne i32 %377, 0
  %379 = zext i1 %378 to i8
  store i8 %379, ptr %21, align 1, !tbaa !60
  %380 = load i8, ptr %21, align 1, !tbaa !60, !range !56, !noundef !57
  %381 = trunc i8 %380 to i1
  br i1 %381, label %382, label %403

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

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

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

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

413:                                              ; preds = %412, %363
  %414 = load ptr, ptr %7, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.ImGuiContext, ptr %414, i32 0, i32 55
  %416 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %415, i32 0, i32 1
  %417 = load i32, ptr %416, align 4, !tbaa !61
  %418 = icmp ne i32 %417, 0
  br i1 %418, label %419, label %466

419:                                              ; preds = %413
  %420 = load ptr, ptr %9, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.ImGuiWindow, ptr %420, i32 0, i32 41
  %422 = load i32, ptr %421, align 4, !tbaa !85
  %423 = load ptr, ptr %7, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.ImGuiContext, ptr %423, i32 0, i32 55
  %425 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %424, i32 0, i32 1
  %426 = load i32, ptr %425, align 4, !tbaa !61
  %427 = and i32 %422, %426
  %428 = icmp ne i32 %427, 0
  br i1 %428, label %429, label %436

429:                                              ; preds = %419
  %430 = load ptr, ptr %7, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.ImGuiContext, ptr %430, i32 0, i32 55
  %432 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %431, i32 0, i32 9
  %433 = getelementptr inbounds %struct.ImVec2, ptr %432, i32 0, i32 0
  %434 = load float, ptr %433, align 4, !tbaa !86
  %435 = fcmp ogt float %434, 0.000000e+00
  br label %436

436:                                              ; preds = %429, %419
  %437 = phi i1 [ false, %419 ], [ %435, %429 ]
  %438 = zext i1 %437 to i8
  store i8 %438, ptr %22, align 1, !tbaa !60
  %439 = load ptr, ptr %9, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.ImGuiWindow, ptr %439, i32 0, i32 41
  %441 = load i32, ptr %440, align 4, !tbaa !85
  %442 = load ptr, ptr %7, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.ImGuiContext, ptr %442, i32 0, i32 55
  %444 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %443, i32 0, i32 1
  %445 = load i32, ptr %444, align 4, !tbaa !61
  %446 = and i32 %441, %445
  %447 = icmp ne i32 %446, 0
  br i1 %447, label %448, label %455

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

455:                                              ; preds = %448, %436
  %456 = phi i1 [ false, %436 ], [ %454, %448 ]
  %457 = zext i1 %456 to i8
  store i8 %457, ptr %23, align 1, !tbaa !60
  %458 = load ptr, ptr %9, align 8, !tbaa !5
  %459 = load ptr, ptr %7, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.ImGuiContext, ptr %459, i32 0, i32 55
  %461 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %460, i32 0, i32 9
  %462 = load ptr, ptr %7, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.ImGuiContext, ptr %462, i32 0, i32 55
  %464 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %463, i32 0, i32 1
  %465 = load i32, ptr %464, align 4, !tbaa !61
  call void @_ZL13SetWindowSizeP11ImGuiWindowRK6ImVec2i(ptr noundef %458, ptr noundef nonnull align 4 dereferenceable(8) %461, i32 noundef %465)
  br label %466

466:                                              ; preds = %455, %413
  %467 = load ptr, ptr %7, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.ImGuiContext, ptr %467, i32 0, i32 55
  %469 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %468, i32 0, i32 2
  %470 = load i32, ptr %469, align 8, !tbaa !88
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %472, label %495

472:                                              ; preds = %466
  %473 = load ptr, ptr %7, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.ImGuiContext, ptr %473, i32 0, i32 55
  %475 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %474, i32 0, i32 10
  %476 = load ptr, ptr %9, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.ImGuiWindow, ptr %476, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %477, ptr align 4 %475, i64 8, i1 false), !tbaa.struct !62
  %478 = load ptr, ptr %9, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.ImGuiWindow, ptr %478, i32 0, i32 8
  %480 = getelementptr inbounds %struct.ImVec2, ptr %479, i32 0, i32 1
  %481 = load float, ptr %480, align 4, !tbaa !89
  %482 = fcmp une float %481, 0.000000e+00
  br i1 %482, label %483, label %494

483:                                              ; preds = %472
  %484 = load ptr, ptr %9, align 8, !tbaa !5
  %485 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %484)
  %486 = load ptr, ptr %9, align 8, !tbaa !5
  %487 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %486)
  %488 = fadd float %485, %487
  %489 = load ptr, ptr %9, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.ImGuiWindow, ptr %489, i32 0, i32 8
  %491 = getelementptr inbounds %struct.ImVec2, ptr %490, i32 0, i32 1
  %492 = load float, ptr %491, align 4, !tbaa !89
  %493 = fadd float %492, %488
  store float %493, ptr %491, align 4, !tbaa !89
  br label %494

494:                                              ; preds = %483, %472
  br label %502

495:                                              ; preds = %466
  %496 = load i8, ptr %14, align 1, !tbaa !60, !range !56, !noundef !57
  %497 = trunc i8 %496 to i1
  br i1 %497, label %498, label %501

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

501:                                              ; preds = %498, %495
  br label %502

502:                                              ; preds = %501, %494
  %503 = load ptr, ptr %7, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.ImGuiContext, ptr %503, i32 0, i32 55
  %505 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %504, i32 0, i32 3
  %506 = load i32, ptr %505, align 4, !tbaa !90
  %507 = icmp ne i32 %506, 0
  br i1 %507, label %508, label %519

508:                                              ; preds = %502
  %509 = load ptr, ptr %9, align 8, !tbaa !5
  %510 = load ptr, ptr %7, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.ImGuiContext, ptr %510, i32 0, i32 55
  %512 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %511, i32 0, i32 11
  %513 = load i8, ptr %512, align 4, !tbaa !91, !range !56, !noundef !57
  %514 = trunc i8 %513 to i1
  %515 = load ptr, ptr %7, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.ImGuiContext, ptr %515, i32 0, i32 55
  %517 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %516, i32 0, i32 3
  %518 = load i32, ptr %517, align 4, !tbaa !90
  call void @_ZL18SetWindowCollapsedP11ImGuiWindowbi(ptr noundef %509, i1 noundef zeroext %514, i32 noundef %518)
  br label %519

519:                                              ; preds = %508, %502
  %520 = load ptr, ptr %7, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.ImGuiContext, ptr %520, i32 0, i32 55
  %522 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %521, i32 0, i32 5
  %523 = load i32, ptr %522, align 4, !tbaa !92
  %524 = icmp ne i32 %523, 0
  br i1 %524, label %525, label %527

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

527:                                              ; preds = %525, %519
  %528 = load ptr, ptr %9, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.ImGuiWindow, ptr %528, i32 0, i32 26
  %530 = load i8, ptr %529, align 8, !tbaa !82, !range !56, !noundef !57
  %531 = trunc i8 %530 to i1
  br i1 %531, label %532, label %534

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

534:                                              ; preds = %532, %527
  %535 = load i8, ptr %14, align 1, !tbaa !60, !range !56, !noundef !57
  %536 = trunc i8 %535 to i1
  br i1 %536, label %537, label %2774

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

541:                                              ; preds = %537
  %542 = load i32, ptr %6, align 4, !tbaa !9
  %543 = and i32 %542, 33554432
  %544 = icmp ne i32 %543, 0
  br label %545

545:                                              ; preds = %541, %537
  %546 = phi i1 [ false, %537 ], [ %544, %541 ]
  %547 = zext i1 %546 to i8
  store i8 %547, ptr %25, align 1, !tbaa !60
  %548 = load ptr, ptr %9, align 8, !tbaa !5
  %549 = load i32, ptr %6, align 4, !tbaa !9
  %550 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %548, i32 noundef %549, ptr noundef %550)
  %551 = load ptr, ptr %9, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.ImGuiWindow, ptr %551, i32 0, i32 20
  store i8 1, ptr %552, align 2, !tbaa !93
  %553 = load ptr, ptr %9, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.ImGuiWindow, ptr %553, i32 0, i32 30
  store i32 0, ptr %554, align 8, !tbaa !94
  %555 = load ptr, ptr %7, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.ImGuiContext, ptr %555, i32 0, i32 20
  %557 = load i32, ptr %556, align 8, !tbaa !95
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %556, align 8, !tbaa !95
  %559 = load ptr, ptr %9, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.ImGuiWindow, ptr %559, i32 0, i32 31
  store i32 %557, ptr %560, align 4, !tbaa !96
  %561 = load ptr, ptr %9, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.ImGuiWindow, ptr %561, i32 0, i32 29
  store i32 0, ptr %562, align 4, !tbaa !97
  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)
  %563 = load ptr, ptr %9, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.ImGuiWindow, ptr %563, i32 0, i32 47
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %564, ptr align 4 %26, i64 16, i1 false), !tbaa.struct !98
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #13
  %565 = load i32, ptr %13, align 4, !tbaa !9
  %566 = load ptr, ptr %9, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.ImGuiWindow, ptr %566, i32 0, i32 52
  store i32 %565, ptr %567, align 8, !tbaa !64
  %568 = load ptr, ptr %9, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.ImGuiWindow, ptr %568, i32 0, i32 46
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %569, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  %570 = load ptr, ptr %9, align 8, !tbaa !5
  %571 = call <2 x float> @_ZL16CalcSizeContentsP11ImGuiWindow(ptr noundef %570)
  store <2 x float> %571, ptr %28, align 4
  %572 = load ptr, ptr %9, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.ImGuiWindow, ptr %572, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %573, ptr align 4 %28, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  %574 = load ptr, ptr %9, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.ImGuiWindow, ptr %574, i32 0, i32 38
  %576 = load i32, ptr %575, align 8, !tbaa !99
  %577 = icmp sgt i32 %576, 0
  br i1 %577, label %578, label %583

578:                                              ; preds = %545
  %579 = load ptr, ptr %9, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.ImGuiWindow, ptr %579, i32 0, i32 38
  %581 = load i32, ptr %580, align 8, !tbaa !99
  %582 = add nsw i32 %581, -1
  store i32 %582, ptr %580, align 8, !tbaa !99
  br label %583

583:                                              ; preds = %578, %545
  %584 = load ptr, ptr %9, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.ImGuiWindow, ptr %584, i32 0, i32 39
  %586 = load i32, ptr %585, align 4, !tbaa !76
  %587 = icmp sgt i32 %586, 0
  br i1 %587, label %588, label %593

588:                                              ; preds = %583
  %589 = load ptr, ptr %9, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.ImGuiWindow, ptr %589, i32 0, i32 39
  %591 = load i32, ptr %590, align 4, !tbaa !76
  %592 = add nsw i32 %591, -1
  store i32 %592, ptr %590, align 4, !tbaa !76
  br label %593

593:                                              ; preds = %588, %583
  %594 = load i8, ptr %10, align 1, !tbaa !60, !range !56, !noundef !57
  %595 = trunc i8 %594 to i1
  br i1 %595, label %596, label %605

596:                                              ; preds = %593
  %597 = load i8, ptr %22, align 1, !tbaa !60, !range !56, !noundef !57
  %598 = trunc i8 %597 to i1
  br i1 %598, label %599, label %602

599:                                              ; preds = %596
  %600 = load i8, ptr %23, align 1, !tbaa !60, !range !56, !noundef !57
  %601 = trunc i8 %600 to i1
  br i1 %601, label %605, label %602

602:                                              ; preds = %599, %596
  %603 = load ptr, ptr %9, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.ImGuiWindow, ptr %603, i32 0, i32 39
  store i32 1, ptr %604, align 4, !tbaa !76
  br label %605

605:                                              ; preds = %602, %599, %593
  %606 = load i8, ptr %17, align 1, !tbaa !60, !range !56, !noundef !57
  %607 = trunc i8 %606 to i1
  br i1 %607, label %608, label %642

608:                                              ; preds = %605
  %609 = load i32, ptr %6, align 4, !tbaa !9
  %610 = and i32 %609, 100663296
  %611 = icmp ne i32 %610, 0
  br i1 %611, label %612, label %642

612:                                              ; preds = %608
  %613 = load ptr, ptr %9, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.ImGuiWindow, ptr %613, i32 0, i32 39
  store i32 1, ptr %614, align 4, !tbaa !76
  %615 = load i32, ptr %6, align 4, !tbaa !9
  %616 = and i32 %615, 64
  %617 = icmp ne i32 %616, 0
  br i1 %617, label %618, label %641

618:                                              ; preds = %612
  %619 = load i8, ptr %22, align 1, !tbaa !60, !range !56, !noundef !57
  %620 = trunc i8 %619 to i1
  br i1 %620, label %628, label %621

621:                                              ; preds = %618
  %622 = load ptr, ptr %9, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.ImGuiWindow, ptr %622, i32 0, i32 5
  %624 = getelementptr inbounds %struct.ImVec2, ptr %623, i32 0, i32 0
  store float 0.000000e+00, ptr %624, align 8, !tbaa !100
  %625 = load ptr, ptr %9, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImGuiWindow, ptr %625, i32 0, i32 4
  %627 = getelementptr inbounds %struct.ImVec2, ptr %626, i32 0, i32 0
  store float 0.000000e+00, ptr %627, align 8, !tbaa !101
  br label %628

628:                                              ; preds = %621, %618
  %629 = load i8, ptr %23, align 1, !tbaa !60, !range !56, !noundef !57
  %630 = trunc i8 %629 to i1
  br i1 %630, label %638, label %631

631:                                              ; preds = %628
  %632 = load ptr, ptr %9, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.ImGuiWindow, ptr %632, i32 0, i32 5
  %634 = getelementptr inbounds %struct.ImVec2, ptr %633, i32 0, i32 1
  store float 0.000000e+00, ptr %634, align 4, !tbaa !102
  %635 = load ptr, ptr %9, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.ImGuiWindow, ptr %635, i32 0, i32 4
  %637 = getelementptr inbounds %struct.ImVec2, ptr %636, i32 0, i32 1
  store float 0.000000e+00, ptr %637, align 4, !tbaa !103
  br label %638

638:                                              ; preds = %631, %628
  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)
  %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 %29, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  br label %641

641:                                              ; preds = %638, %612
  br label %642

642:                                              ; preds = %641, %608, %605
  %643 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %643)
  %644 = load i32, ptr %6, align 4, !tbaa !9
  %645 = and i32 %644, 16777216
  %646 = icmp ne i32 %645, 0
  br i1 %646, label %647, label %651

647:                                              ; preds = %642
  %648 = load ptr, ptr %8, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.ImGuiStyle, ptr %648, i32 0, i32 7
  %650 = load float, ptr %649, align 4, !tbaa !104
  br label %669

651:                                              ; preds = %642
  %652 = load i32, ptr %6, align 4, !tbaa !9
  %653 = and i32 %652, 100663296
  %654 = icmp ne i32 %653, 0
  br i1 %654, label %655, label %663

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

659:                                              ; preds = %655
  %660 = load ptr, ptr %8, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.ImGuiStyle, ptr %660, i32 0, i32 9
  %662 = load float, ptr %661, align 4, !tbaa !105
  br label %667

663:                                              ; preds = %655, %651
  %664 = load ptr, ptr %8, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.ImGuiStyle, ptr %664, i32 0, i32 3
  %666 = load float, ptr %665, align 4, !tbaa !106
  br label %667

667:                                              ; preds = %663, %659
  %668 = phi float [ %662, %659 ], [ %666, %663 ]
  br label %669

669:                                              ; preds = %667, %647
  %670 = phi float [ %650, %647 ], [ %668, %667 ]
  %671 = load ptr, ptr %9, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.ImGuiWindow, ptr %671, i32 0, i32 11
  store float %670, ptr %672, align 4, !tbaa !107
  %673 = load ptr, ptr %8, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.ImGuiStyle, ptr %673, i32 0, i32 1
  %675 = load ptr, ptr %9, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.ImGuiWindow, ptr %675, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %676, ptr align 4 %674, i64 8, i1 false), !tbaa.struct !62
  %677 = load i32, ptr %6, align 4, !tbaa !9
  %678 = and i32 %677, 16777216
  %679 = icmp ne i32 %678, 0
  br i1 %679, label %680, label %703

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

684:                                              ; preds = %680
  %685 = load ptr, ptr %9, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.ImGuiWindow, ptr %685, i32 0, i32 11
  %687 = load float, ptr %686, align 4, !tbaa !107
  %688 = fcmp oeq float %687, 0.000000e+00
  br i1 %688, label %689, label %703

689:                                              ; preds = %684
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #13
  %690 = load i32, ptr %6, align 4, !tbaa !9
  %691 = and i32 %690, 1024
  %692 = icmp ne i32 %691, 0
  br i1 %692, label %693, label %698

693:                                              ; preds = %689
  %694 = load ptr, ptr %8, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.ImGuiStyle, ptr %694, i32 0, i32 1
  %696 = getelementptr inbounds %struct.ImVec2, ptr %695, i32 0, i32 1
  %697 = load float, ptr %696, align 4, !tbaa !108
  br label %699

698:                                              ; preds = %689
  br label %699

699:                                              ; preds = %698, %693
  %700 = phi float [ %697, %693 ], [ 0.000000e+00, %698 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef %700)
  %701 = load ptr, ptr %9, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.ImGuiWindow, ptr %701, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %702, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  br label %703

703:                                              ; preds = %699, %684, %680, %669
  %704 = load ptr, ptr %9, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.ImGuiWindow, ptr %704, i32 0, i32 9
  %706 = getelementptr inbounds %struct.ImVec2, ptr %705, i32 0, i32 0
  %707 = load float, ptr %706, align 8, !tbaa !109
  %708 = load ptr, ptr %8, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.ImGuiStyle, ptr %708, i32 0, i32 13
  %710 = getelementptr inbounds %struct.ImVec2, ptr %709, i32 0, i32 0
  %711 = load float, ptr %710, align 4, !tbaa !110
  %712 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %707, float noundef %711)
  %713 = load ptr, ptr %7, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.ImGuiContext, ptr %713, i32 0, i32 55
  %715 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %714, i32 0, i32 17
  %716 = getelementptr inbounds %struct.ImVec2, ptr %715, i32 0, i32 0
  %717 = load float, ptr %716, align 4, !tbaa !111
  %718 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %712, float noundef %717)
  %719 = load ptr, ptr %9, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.ImGuiWindow, ptr %719, i32 0, i32 45
  %721 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %720, i32 0, i32 22
  %722 = getelementptr inbounds %struct.ImVec2, ptr %721, i32 0, i32 0
  store float %718, ptr %722, align 4, !tbaa !112
  %723 = load ptr, ptr %7, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.ImGuiContext, ptr %723, i32 0, i32 55
  %725 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %724, i32 0, i32 17
  %726 = getelementptr inbounds %struct.ImVec2, ptr %725, i32 0, i32 1
  %727 = load float, ptr %726, align 4, !tbaa !113
  %728 = load ptr, ptr %9, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.ImGuiWindow, ptr %728, i32 0, i32 45
  %730 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %729, i32 0, i32 22
  %731 = getelementptr inbounds %struct.ImVec2, ptr %730, i32 0, i32 1
  store float %727, ptr %731, align 4, !tbaa !114
  %732 = load i32, ptr %6, align 4, !tbaa !9
  %733 = and i32 %732, 1
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %792, label %735

735:                                              ; preds = %703
  %736 = load i32, ptr %6, align 4, !tbaa !9
  %737 = and i32 %736, 32
  %738 = icmp ne i32 %737, 0
  br i1 %738, label %792, label %739

739:                                              ; preds = %735
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #13
  %740 = load ptr, ptr %9, align 8, !tbaa !5
  %741 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(984) %740)
  %742 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %31, i32 0, i32 0
  %743 = extractvalue { <2 x float>, <2 x float> } %741, 0
  store <2 x float> %743, ptr %742, align 4
  %744 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %31, i32 0, i32 1
  %745 = extractvalue { <2 x float>, <2 x float> } %741, 1
  store <2 x float> %745, ptr %744, align 4
  %746 = load ptr, ptr %7, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.ImGuiContext, ptr %746, i32 0, i32 23
  %748 = load ptr, ptr %747, align 8, !tbaa !115
  %749 = load ptr, ptr %9, align 8, !tbaa !5
  %750 = icmp eq ptr %748, %749
  br i1 %750, label %751, label %775

751:                                              ; preds = %739
  %752 = load ptr, ptr %7, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.ImGuiContext, ptr %752, i32 0, i32 25
  %754 = load i32, ptr %753, align 8, !tbaa !116
  %755 = icmp eq i32 %754, 0
  br i1 %755, label %756, label %775

756:                                              ; preds = %751
  %757 = load ptr, ptr %7, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.ImGuiContext, ptr %757, i32 0, i32 28
  %759 = load i32, ptr %758, align 8, !tbaa !117
  %760 = icmp eq i32 %759, 0
  br i1 %760, label %761, label %775

761:                                              ; preds = %756
  %762 = getelementptr inbounds %struct.ImRect, ptr %31, i32 0, i32 0
  %763 = getelementptr inbounds %struct.ImRect, ptr %31, i32 0, i32 1
  %764 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %762, ptr noundef nonnull align 4 dereferenceable(8) %763, i1 noundef zeroext true)
  br i1 %764, label %765, label %775

765:                                              ; preds = %761
  %766 = load ptr, ptr %7, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.ImGuiContext, ptr %766, i32 0, i32 4
  %768 = getelementptr inbounds %struct.ImGuiIO, ptr %767, i32 0, i32 60
  %769 = getelementptr inbounds [5 x i8], ptr %768, i64 0, i64 0
  %770 = load i8, ptr %769, align 1, !tbaa !60, !range !56, !noundef !57
  %771 = trunc i8 %770 to i1
  br i1 %771, label %772, label %775

772:                                              ; preds = %765
  %773 = load ptr, ptr %9, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.ImGuiWindow, ptr %773, i32 0, i32 24
  store i8 1, ptr %774, align 2, !tbaa !118
  br label %775

775:                                              ; preds = %772, %765, %761, %756, %751, %739
  %776 = load ptr, ptr %9, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.ImGuiWindow, ptr %776, i32 0, i32 24
  %778 = load i8, ptr %777, align 2, !tbaa !118, !range !56, !noundef !57
  %779 = trunc i8 %778 to i1
  br i1 %779, label %780, label %791

780:                                              ; preds = %775
  %781 = load ptr, ptr %9, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.ImGuiWindow, ptr %781, i32 0, i32 23
  %783 = load i8, ptr %782, align 1, !tbaa !119, !range !56, !noundef !57
  %784 = trunc i8 %783 to i1
  %785 = xor i1 %784, true
  %786 = load ptr, ptr %9, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.ImGuiWindow, ptr %786, i32 0, i32 23
  %788 = zext i1 %785 to i8
  store i8 %788, ptr %787, align 1, !tbaa !119
  %789 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %789)
  %790 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %790)
  br label %791

791:                                              ; preds = %780, %775
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #13
  br label %795

792:                                              ; preds = %735, %703
  %793 = load ptr, ptr %9, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.ImGuiWindow, ptr %793, i32 0, i32 23
  store i8 0, ptr %794, align 1, !tbaa !119
  br label %795

795:                                              ; preds = %792, %791
  %796 = load ptr, ptr %9, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.ImGuiWindow, ptr %796, i32 0, i32 24
  store i8 0, ptr %797, align 2, !tbaa !118
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %798 = load ptr, ptr %9, align 8, !tbaa !5
  %799 = load ptr, ptr %9, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.ImGuiWindow, ptr %799, i32 0, i32 7
  %801 = call <2 x float> @_ZL15CalcSizeAutoFitP11ImGuiWindowRK6ImVec2(ptr noundef %798, ptr noundef nonnull align 4 dereferenceable(8) %800)
  store <2 x float> %801, 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)
  %802 = load i32, ptr %6, align 4, !tbaa !9
  %803 = and i32 %802, 64
  %804 = icmp ne i32 %803, 0
  br i1 %804, label %805, label %831

805:                                              ; preds = %795
  %806 = load ptr, ptr %9, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.ImGuiWindow, ptr %806, i32 0, i32 23
  %808 = load i8, ptr %807, align 1, !tbaa !119, !range !56, !noundef !57
  %809 = trunc i8 %808 to i1
  br i1 %809, label %831, label %810

810:                                              ; preds = %805
  %811 = load i8, ptr %22, align 1, !tbaa !60, !range !56, !noundef !57
  %812 = trunc i8 %811 to i1
  br i1 %812, label %820, label %813

813:                                              ; preds = %810
  %814 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 0
  %815 = load float, ptr %814, align 4, !tbaa !120
  %816 = getelementptr inbounds %struct.ImVec2, ptr %33, i32 0, i32 0
  store float %815, ptr %816, align 4, !tbaa !120
  %817 = load ptr, ptr %9, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.ImGuiWindow, ptr %817, i32 0, i32 5
  %819 = getelementptr inbounds %struct.ImVec2, ptr %818, i32 0, i32 0
  store float %815, ptr %819, align 8, !tbaa !100
  br label %820

820:                                              ; preds = %813, %810
  %821 = load i8, ptr %23, align 1, !tbaa !60, !range !56, !noundef !57
  %822 = trunc i8 %821 to i1
  br i1 %822, label %830, label %823

823:                                              ; preds = %820
  %824 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 1
  %825 = load float, ptr %824, align 4, !tbaa !121
  %826 = getelementptr inbounds %struct.ImVec2, ptr %33, i32 0, i32 1
  store float %825, ptr %826, align 4, !tbaa !121
  %827 = load ptr, ptr %9, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.ImGuiWindow, ptr %827, i32 0, i32 5
  %829 = getelementptr inbounds %struct.ImVec2, ptr %828, i32 0, i32 1
  store float %825, ptr %829, align 4, !tbaa !102
  br label %830

830:                                              ; preds = %823, %820
  br label %910

831:                                              ; preds = %805, %795
  %832 = load ptr, ptr %9, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.ImGuiWindow, ptr %832, i32 0, i32 33
  %834 = load i32, ptr %833, align 4, !tbaa !122
  %835 = icmp sgt i32 %834, 0
  br i1 %835, label %841, label %836

836:                                              ; preds = %831
  %837 = load ptr, ptr %9, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.ImGuiWindow, ptr %837, i32 0, i32 34
  %839 = load i32, ptr %838, align 8, !tbaa !123
  %840 = icmp sgt i32 %839, 0
  br i1 %840, label %841, label %909

841:                                              ; preds = %836, %831
  %842 = load i8, ptr %22, align 1, !tbaa !60, !range !56, !noundef !57
  %843 = trunc i8 %842 to i1
  br i1 %843, label %871, label %844

844:                                              ; preds = %841
  %845 = load ptr, ptr %9, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiWindow, ptr %845, i32 0, i32 33
  %847 = load i32, ptr %846, align 4, !tbaa !122
  %848 = icmp sgt i32 %847, 0
  br i1 %848, label %849, label %871

849:                                              ; preds = %844
  %850 = load ptr, ptr %9, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.ImGuiWindow, ptr %850, i32 0, i32 35
  %852 = load i8, ptr %851, align 4, !tbaa !124, !range !56, !noundef !57
  %853 = trunc i8 %852 to i1
  br i1 %853, label %854, label %862

854:                                              ; preds = %849
  %855 = load ptr, ptr %9, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.ImGuiWindow, ptr %855, i32 0, i32 5
  %857 = getelementptr inbounds %struct.ImVec2, ptr %856, i32 0, i32 0
  %858 = load float, ptr %857, align 8, !tbaa !100
  %859 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 0
  %860 = load float, ptr %859, align 4, !tbaa !120
  %861 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %858, float noundef %860)
  br label %865

862:                                              ; preds = %849
  %863 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 0
  %864 = load float, ptr %863, align 4, !tbaa !120
  br label %865

865:                                              ; preds = %862, %854
  %866 = phi float [ %861, %854 ], [ %864, %862 ]
  %867 = getelementptr inbounds %struct.ImVec2, ptr %33, i32 0, i32 0
  store float %866, ptr %867, align 4, !tbaa !120
  %868 = load ptr, ptr %9, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.ImGuiWindow, ptr %868, i32 0, i32 5
  %870 = getelementptr inbounds %struct.ImVec2, ptr %869, i32 0, i32 0
  store float %866, ptr %870, align 8, !tbaa !100
  br label %871

871:                                              ; preds = %865, %844, %841
  %872 = load i8, ptr %23, align 1, !tbaa !60, !range !56, !noundef !57
  %873 = trunc i8 %872 to i1
  br i1 %873, label %901, label %874

874:                                              ; preds = %871
  %875 = load ptr, ptr %9, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.ImGuiWindow, ptr %875, i32 0, i32 34
  %877 = load i32, ptr %876, align 8, !tbaa !123
  %878 = icmp sgt i32 %877, 0
  br i1 %878, label %879, label %901

879:                                              ; preds = %874
  %880 = load ptr, ptr %9, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.ImGuiWindow, ptr %880, i32 0, i32 35
  %882 = load i8, ptr %881, align 4, !tbaa !124, !range !56, !noundef !57
  %883 = trunc i8 %882 to i1
  br i1 %883, label %884, label %892

884:                                              ; preds = %879
  %885 = load ptr, ptr %9, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.ImGuiWindow, ptr %885, i32 0, i32 5
  %887 = getelementptr inbounds %struct.ImVec2, ptr %886, i32 0, i32 1
  %888 = load float, ptr %887, align 4, !tbaa !102
  %889 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 1
  %890 = load float, ptr %889, align 4, !tbaa !121
  %891 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %888, float noundef %890)
  br label %895

892:                                              ; preds = %879
  %893 = getelementptr inbounds %struct.ImVec2, ptr %32, i32 0, i32 1
  %894 = load float, ptr %893, align 4, !tbaa !121
  br label %895

895:                                              ; preds = %892, %884
  %896 = phi float [ %891, %884 ], [ %894, %892 ]
  %897 = getelementptr inbounds %struct.ImVec2, ptr %33, i32 0, i32 1
  store float %896, ptr %897, align 4, !tbaa !121
  %898 = load ptr, ptr %9, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.ImGuiWindow, ptr %898, i32 0, i32 5
  %900 = getelementptr inbounds %struct.ImVec2, ptr %899, i32 0, i32 1
  store float %896, ptr %900, align 4, !tbaa !102
  br label %901

901:                                              ; preds = %895, %874, %871
  %902 = load ptr, ptr %9, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.ImGuiWindow, ptr %902, i32 0, i32 23
  %904 = load i8, ptr %903, align 1, !tbaa !119, !range !56, !noundef !57
  %905 = trunc i8 %904 to i1
  br i1 %905, label %908, label %906

906:                                              ; preds = %901
  %907 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %907)
  br label %908

908:                                              ; preds = %906, %901
  br label %909

909:                                              ; preds = %908, %836
  br label %910

910:                                              ; preds = %909, %830
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %911 = load ptr, ptr %9, align 8, !tbaa !5
  %912 = load ptr, ptr %9, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.ImGuiWindow, ptr %912, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 8 %913, i64 8, i1 false), !tbaa.struct !62
  %914 = load <2 x float>, ptr %35, align 4
  %915 = call <2 x float> @_ZL23CalcSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %911, <2 x float> %914)
  store <2 x float> %915, ptr %34, align 4
  %916 = load ptr, ptr %9, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.ImGuiWindow, ptr %916, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %917, ptr align 4 %34, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #13
  %918 = load ptr, ptr %9, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.ImGuiWindow, ptr %918, i32 0, i32 23
  %920 = load i8, ptr %919, align 1, !tbaa !119, !range !56, !noundef !57
  %921 = trunc i8 %920 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #13
  br i1 %921, label %922, label %934

922:                                              ; preds = %910
  %923 = load i32, ptr %6, align 4, !tbaa !9
  %924 = and i32 %923, 16777216
  %925 = icmp ne i32 %924, 0
  br i1 %925, label %934, label %926

926:                                              ; preds = %922
  %927 = load ptr, ptr %9, align 8, !tbaa !5
  %928 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(984) %927)
  %929 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %37, i32 0, i32 0
  %930 = extractvalue { <2 x float>, <2 x float> } %928, 0
  store <2 x float> %930, ptr %929, align 4
  %931 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %37, i32 0, i32 1
  %932 = extractvalue { <2 x float>, <2 x float> } %928, 1
  store <2 x float> %932, ptr %931, align 4
  %933 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %933, ptr %36, align 4
  br label %937

934:                                              ; preds = %922, %910
  %935 = load ptr, ptr %9, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.ImGuiWindow, ptr %935, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 8 %936, i64 8, i1 false), !tbaa.struct !62
  br label %937

937:                                              ; preds = %934, %926
  %938 = load ptr, ptr %9, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.ImGuiWindow, ptr %938, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %939, ptr align 4 %36, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  %940 = load ptr, ptr %9, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.ImGuiWindow, ptr %940, i32 0, i32 23
  %942 = load i8, ptr %941, align 1, !tbaa !119, !range !56, !noundef !57
  %943 = trunc i8 %942 to i1
  br i1 %943, label %1089, label %944

944:                                              ; preds = %937
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #13
  %945 = getelementptr inbounds %struct.ImVec2, ptr %33, i32 0, i32 0
  %946 = load float, ptr %945, align 4, !tbaa !120
  %947 = fcmp une float %946, 0x47EFFFFFE0000000
  br i1 %947, label %948, label %953

948:                                              ; preds = %944
  %949 = load ptr, ptr %9, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.ImGuiWindow, ptr %949, i32 0, i32 5
  %951 = getelementptr inbounds %struct.ImVec2, ptr %950, i32 0, i32 0
  %952 = load float, ptr %951, align 8, !tbaa !100
  br label %958

953:                                              ; preds = %944
  %954 = load ptr, ptr %9, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImGuiWindow, ptr %954, i32 0, i32 6
  %956 = getelementptr inbounds %struct.ImVec2, ptr %955, i32 0, i32 0
  %957 = load float, ptr %956, align 8, !tbaa !125
  br label %958

958:                                              ; preds = %953, %948
  %959 = phi float [ %952, %948 ], [ %957, %953 ]
  store float %959, ptr %38, align 4, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #13
  %960 = getelementptr inbounds %struct.ImVec2, ptr %33, i32 0, i32 1
  %961 = load float, ptr %960, align 4, !tbaa !121
  %962 = fcmp une float %961, 0x47EFFFFFE0000000
  br i1 %962, label %963, label %968

963:                                              ; preds = %958
  %964 = load ptr, ptr %9, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.ImGuiWindow, ptr %964, i32 0, i32 5
  %966 = getelementptr inbounds %struct.ImVec2, ptr %965, i32 0, i32 1
  %967 = load float, ptr %966, align 4, !tbaa !102
  br label %973

968:                                              ; preds = %958
  %969 = load ptr, ptr %9, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.ImGuiWindow, ptr %969, i32 0, i32 6
  %971 = getelementptr inbounds %struct.ImVec2, ptr %970, i32 0, i32 1
  %972 = load float, ptr %971, align 4, !tbaa !126
  br label %973

973:                                              ; preds = %968, %963
  %974 = phi float [ %967, %963 ], [ %972, %968 ]
  store float %974, ptr %39, align 4, !tbaa !63
  %975 = load i32, ptr %6, align 4, !tbaa !9
  %976 = and i32 %975, 16384
  %977 = icmp ne i32 %976, 0
  br i1 %977, label %992, label %978

978:                                              ; preds = %973
  %979 = load ptr, ptr %9, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.ImGuiWindow, ptr %979, i32 0, i32 7
  %981 = getelementptr inbounds %struct.ImVec2, ptr %980, i32 0, i32 1
  %982 = load float, ptr %981, align 4, !tbaa !127
  %983 = load float, ptr %39, align 4, !tbaa !63
  %984 = fcmp ogt float %982, %983
  br i1 %984, label %985, label %990

985:                                              ; preds = %978
  %986 = load i32, ptr %6, align 4, !tbaa !9
  %987 = and i32 %986, 8
  %988 = icmp ne i32 %987, 0
  %989 = xor i1 %988, true
  br label %990

990:                                              ; preds = %985, %978
  %991 = phi i1 [ false, %978 ], [ %989, %985 ]
  br label %992

992:                                              ; preds = %990, %973
  %993 = phi i1 [ true, %973 ], [ %991, %990 ]
  %994 = load ptr, ptr %9, align 8, !tbaa !5
  %995 = getelementptr inbounds %struct.ImGuiWindow, ptr %994, i32 0, i32 19
  %996 = zext i1 %993 to i8
  store i8 %996, ptr %995, align 1, !tbaa !128
  %997 = load i32, ptr %6, align 4, !tbaa !9
  %998 = and i32 %997, 32768
  %999 = icmp ne i32 %998, 0
  br i1 %999, label %1029, label %1000

1000:                                             ; preds = %992
  %1001 = load ptr, ptr %9, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.ImGuiWindow, ptr %1001, i32 0, i32 7
  %1003 = getelementptr inbounds %struct.ImVec2, ptr %1002, i32 0, i32 0
  %1004 = load float, ptr %1003, align 8, !tbaa !129
  %1005 = load float, ptr %38, align 4, !tbaa !63
  %1006 = load ptr, ptr %9, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.ImGuiWindow, ptr %1006, i32 0, i32 19
  %1008 = load i8, ptr %1007, align 1, !tbaa !128, !range !56, !noundef !57
  %1009 = trunc i8 %1008 to i1
  br i1 %1009, label %1010, label %1014

1010:                                             ; preds = %1000
  %1011 = load ptr, ptr %8, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ImGuiStyle, ptr %1011, i32 0, i32 18
  %1013 = load float, ptr %1012, align 4, !tbaa !130
  br label %1015

1014:                                             ; preds = %1000
  br label %1015

1015:                                             ; preds = %1014, %1010
  %1016 = phi float [ %1013, %1010 ], [ 0.000000e+00, %1014 ]
  %1017 = fsub float %1005, %1016
  %1018 = fcmp ogt float %1004, %1017
  br i1 %1018, label %1019, label %1027

1019:                                             ; preds = %1015
  %1020 = load i32, ptr %6, align 4, !tbaa !9
  %1021 = and i32 %1020, 8
  %1022 = icmp ne i32 %1021, 0
  br i1 %1022, label %1027, label %1023

1023:                                             ; preds = %1019
  %1024 = load i32, ptr %6, align 4, !tbaa !9
  %1025 = and i32 %1024, 2048
  %1026 = icmp ne i32 %1025, 0
  br label %1027

1027:                                             ; preds = %1023, %1019, %1015
  %1028 = phi i1 [ false, %1019 ], [ false, %1015 ], [ %1026, %1023 ]
  br label %1029

1029:                                             ; preds = %1027, %992
  %1030 = phi i1 [ true, %992 ], [ %1028, %1027 ]
  %1031 = load ptr, ptr %9, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.ImGuiWindow, ptr %1031, i32 0, i32 18
  %1033 = zext i1 %1030 to i8
  store i8 %1033, ptr %1032, align 8, !tbaa !131
  %1034 = load ptr, ptr %9, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.ImGuiWindow, ptr %1034, i32 0, i32 18
  %1036 = load i8, ptr %1035, align 8, !tbaa !131, !range !56, !noundef !57
  %1037 = trunc i8 %1036 to i1
  br i1 %1037, label %1038, label %1064

1038:                                             ; preds = %1029
  %1039 = load ptr, ptr %9, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.ImGuiWindow, ptr %1039, i32 0, i32 19
  %1041 = load i8, ptr %1040, align 1, !tbaa !128, !range !56, !noundef !57
  %1042 = trunc i8 %1041 to i1
  br i1 %1042, label %1064, label %1043

1043:                                             ; preds = %1038
  %1044 = load ptr, ptr %9, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.ImGuiWindow, ptr %1044, i32 0, i32 7
  %1046 = getelementptr inbounds %struct.ImVec2, ptr %1045, i32 0, i32 1
  %1047 = load float, ptr %1046, align 4, !tbaa !127
  %1048 = load float, ptr %39, align 4, !tbaa !63
  %1049 = load ptr, ptr %8, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.ImGuiStyle, ptr %1049, i32 0, i32 18
  %1051 = load float, ptr %1050, align 4, !tbaa !130
  %1052 = fsub float %1048, %1051
  %1053 = fcmp ogt float %1047, %1052
  br i1 %1053, label %1054, label %1059

1054:                                             ; preds = %1043
  %1055 = load i32, ptr %6, align 4, !tbaa !9
  %1056 = and i32 %1055, 8
  %1057 = icmp ne i32 %1056, 0
  %1058 = xor i1 %1057, true
  br label %1059

1059:                                             ; preds = %1054, %1043
  %1060 = phi i1 [ false, %1043 ], [ %1058, %1054 ]
  %1061 = load ptr, ptr %9, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.ImGuiWindow, ptr %1061, i32 0, i32 19
  %1063 = zext i1 %1060 to i8
  store i8 %1063, ptr %1062, align 1, !tbaa !128
  br label %1064

1064:                                             ; preds = %1059, %1038, %1029
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  %1065 = load ptr, ptr %9, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.ImGuiWindow, ptr %1065, i32 0, i32 19
  %1067 = load i8, ptr %1066, align 1, !tbaa !128, !range !56, !noundef !57
  %1068 = trunc i8 %1067 to i1
  br i1 %1068, label %1069, label %1073

1069:                                             ; preds = %1064
  %1070 = load ptr, ptr %8, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.ImGuiStyle, ptr %1070, i32 0, i32 18
  %1072 = load float, ptr %1071, align 4, !tbaa !130
  br label %1074

1073:                                             ; preds = %1064
  br label %1074

1074:                                             ; preds = %1073, %1069
  %1075 = phi float [ %1072, %1069 ], [ 0.000000e+00, %1073 ]
  %1076 = load ptr, ptr %9, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ImGuiWindow, ptr %1076, i32 0, i32 18
  %1078 = load i8, ptr %1077, align 8, !tbaa !131, !range !56, !noundef !57
  %1079 = trunc i8 %1078 to i1
  br i1 %1079, label %1080, label %1084

1080:                                             ; preds = %1074
  %1081 = load ptr, ptr %8, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.ImGuiStyle, ptr %1081, i32 0, i32 18
  %1083 = load float, ptr %1082, align 4, !tbaa !130
  br label %1085

1084:                                             ; preds = %1074
  br label %1085

1085:                                             ; preds = %1084, %1080
  %1086 = phi float [ %1083, %1080 ], [ 0.000000e+00, %1084 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef %1075, float noundef %1086)
  %1087 = load ptr, ptr %9, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.ImGuiWindow, ptr %1087, i32 0, i32 17
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1088, ptr align 4 %40, i64 8, i1 false), !tbaa.struct !62
  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 %1089

1089:                                             ; preds = %1085, %937
  %1090 = load i8, ptr %17, align 1, !tbaa !60, !range !56, !noundef !57
  %1091 = trunc i8 %1090 to i1
  br i1 %1091, label %1092, label %1109

1092:                                             ; preds = %1089
  %1093 = load ptr, ptr %9, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.ImGuiWindow, ptr %1093, i32 0, i32 37
  store i32 -1, ptr %1094, align 4, !tbaa !132
  %1095 = load i32, ptr %6, align 4, !tbaa !9
  %1096 = and i32 %1095, 67108864
  %1097 = icmp ne i32 %1096, 0
  br i1 %1097, label %1098, label %1108

1098:                                             ; preds = %1092
  %1099 = load i8, ptr %21, align 1, !tbaa !60, !range !56, !noundef !57
  %1100 = trunc i8 %1099 to i1
  br i1 %1100, label %1108, label %1101

1101:                                             ; preds = %1098
  %1102 = load ptr, ptr %7, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.ImGuiContext, ptr %1102, i32 0, i32 54
  %1104 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1103)
  %1105 = getelementptr inbounds %struct.ImGuiPopupRef, ptr %1104, i32 0, i32 5
  %1106 = load ptr, ptr %9, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.ImGuiWindow, ptr %1106, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1107, ptr align 8 %1105, i64 8, i1 false), !tbaa.struct !62
  br label %1108

1108:                                             ; preds = %1101, %1098, %1092
  br label %1109

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

1113:                                             ; preds = %1109
  %1114 = load ptr, ptr %16, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.ImGuiWindow, ptr %1114, i32 0, i32 45
  %1116 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1115, i32 0, i32 23
  %1117 = getelementptr inbounds %class.ImVector, ptr %1116, i32 0, i32 0
  %1118 = load i32, ptr %1117, align 8, !tbaa !133
  %1119 = load ptr, ptr %9, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.ImGuiWindow, ptr %1119, i32 0, i32 30
  store i32 %1118, ptr %1120, align 8, !tbaa !94
  %1121 = load ptr, ptr %16, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.ImGuiWindow, ptr %1121, i32 0, i32 45
  %1123 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1122, i32 0, i32 23
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1123, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %1124 = load i32, ptr %6, align 4, !tbaa !9
  %1125 = and i32 %1124, 67108864
  %1126 = icmp ne i32 %1125, 0
  br i1 %1126, label %1139, label %1127

1127:                                             ; preds = %1113
  %1128 = load i8, ptr %21, align 1, !tbaa !60, !range !56, !noundef !57
  %1129 = trunc i8 %1128 to i1
  br i1 %1129, label %1139, label %1130

1130:                                             ; preds = %1127
  %1131 = load i8, ptr %25, align 1, !tbaa !60, !range !56, !noundef !57
  %1132 = trunc i8 %1131 to i1
  br i1 %1132, label %1139, label %1133

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

1139:                                             ; preds = %1133, %1130, %1127, %1113
  br label %1140

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

1146:                                             ; preds = %1140
  %1147 = load ptr, ptr %9, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.ImGuiWindow, ptr %1147, i32 0, i32 39
  %1149 = load i32, ptr %1148, align 4, !tbaa !76
  %1150 = icmp eq i32 %1149, 0
  br label %1151

1151:                                             ; preds = %1146, %1140
  %1152 = phi i1 [ false, %1140 ], [ %1150, %1146 ]
  %1153 = zext i1 %1152 to i8
  store i8 %1153, ptr %41, align 1, !tbaa !60
  %1154 = load i8, ptr %41, align 1, !tbaa !60, !range !56, !noundef !57
  %1155 = trunc i8 %1154 to i1
  br i1 %1155, label %1156, label %1169

1156:                                             ; preds = %1151
  %1157 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #13
  %1158 = load ptr, ptr %8, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.ImGuiStyle, ptr %1158, i32 0, i32 24
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %1160 = load ptr, ptr %9, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.ImGuiWindow, ptr %1160, i32 0, i32 43
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %1162 = load ptr, ptr %9, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiWindow, ptr %1162, i32 0, i32 5
  %1164 = load ptr, ptr %9, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.ImGuiWindow, ptr %1164, i32 0, i32 44
  %1166 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1163, ptr noundef nonnull align 4 dereferenceable(8) %1165)
  store <2 x float> %1166, ptr %44, align 4
  %1167 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1161, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %1167, ptr %43, align 4
  %1168 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1159, ptr noundef nonnull align 4 dereferenceable(8) %43)
  store <2 x float> %1168, ptr %42, align 4
  call void @_ZL12SetWindowPosP11ImGuiWindowRK6ImVec2i(ptr noundef %1157, 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 %1211

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

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

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

1182:                                             ; preds = %1178
  %1183 = load i8, ptr %21, align 1, !tbaa !60, !range !56, !noundef !57
  %1184 = trunc i8 %1183 to i1
  br i1 %1184, label %1193, label %1185

1185:                                             ; preds = %1182
  %1186 = load i8, ptr %18, align 1, !tbaa !60, !range !56, !noundef !57
  %1187 = trunc i8 %1186 to i1
  br i1 %1187, label %1188, label %1193

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

1193:                                             ; preds = %1185, %1182, %1178
  %1194 = load i32, ptr %6, align 4, !tbaa !9
  %1195 = and i32 %1194, 33554432
  %1196 = icmp ne i32 %1195, 0
  br i1 %1196, label %1197, label %1208

1197:                                             ; preds = %1193
  %1198 = load i8, ptr %21, align 1, !tbaa !60, !range !56, !noundef !57
  %1199 = trunc i8 %1198 to i1
  br i1 %1199, label %1208, label %1200

1200:                                             ; preds = %1197
  %1201 = load i8, ptr %25, align 1, !tbaa !60, !range !56, !noundef !57
  %1202 = trunc i8 %1201 to i1
  br i1 %1202, label %1208, label %1203

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

1208:                                             ; preds = %1203, %1200, %1197, %1193
  br label %1209

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

1210:                                             ; preds = %1209, %1173
  br label %1211

1211:                                             ; preds = %1210, %1156
  %1212 = load i32, ptr %6, align 4, !tbaa !9
  %1213 = and i32 %1212, 16777216
  %1214 = icmp ne i32 %1213, 0
  br i1 %1214, label %1269, label %1215

1215:                                             ; preds = %1211
  %1216 = load i8, ptr %21, align 1, !tbaa !60, !range !56, !noundef !57
  %1217 = trunc i8 %1216 to i1
  br i1 %1217, label %1268, label %1218

1218:                                             ; preds = %1215
  %1219 = load ptr, ptr %9, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.ImGuiWindow, ptr %1219, i32 0, i32 33
  %1221 = load i32, ptr %1220, align 4, !tbaa !122
  %1222 = icmp sle i32 %1221, 0
  br i1 %1222, label %1223, label %1268

1223:                                             ; preds = %1218
  %1224 = load ptr, ptr %9, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.ImGuiWindow, ptr %1224, i32 0, i32 34
  %1226 = load i32, ptr %1225, align 8, !tbaa !123
  %1227 = icmp sle i32 %1226, 0
  br i1 %1227, label %1228, label %1268

1228:                                             ; preds = %1223
  %1229 = load ptr, ptr %7, align 8, !tbaa !5
  %1230 = getelementptr inbounds %struct.ImGuiContext, ptr %1229, i32 0, i32 4
  %1231 = getelementptr inbounds %struct.ImGuiIO, ptr %1230, i32 0, i32 2
  %1232 = getelementptr inbounds %struct.ImVec2, ptr %1231, i32 0, i32 0
  %1233 = load float, ptr %1232, align 8, !tbaa !135
  %1234 = fcmp ogt float %1233, 0.000000e+00
  br i1 %1234, label %1235, label %1268

1235:                                             ; preds = %1228
  %1236 = load ptr, ptr %7, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.ImGuiContext, ptr %1236, i32 0, i32 4
  %1238 = getelementptr inbounds %struct.ImGuiIO, ptr %1237, i32 0, i32 2
  %1239 = getelementptr inbounds %struct.ImVec2, ptr %1238, i32 0, i32 1
  %1240 = load float, ptr %1239, align 4, !tbaa !136
  %1241 = fcmp ogt float %1240, 0.000000e+00
  br i1 %1241, label %1242, label %1268

1242:                                             ; preds = %1235
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #13
  %1243 = load ptr, ptr %8, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.ImGuiStyle, ptr %1243, i32 0, i32 23
  %1245 = load ptr, ptr %8, align 8, !tbaa !5
  %1246 = getelementptr inbounds %struct.ImGuiStyle, ptr %1245, i32 0, i32 24
  %1247 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1244, ptr noundef nonnull align 4 dereferenceable(8) %1246)
  store <2 x float> %1247, 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
  %1248 = load ptr, ptr %9, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.ImGuiWindow, ptr %1248, i32 0, i32 3
  %1250 = load ptr, ptr %9, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.ImGuiWindow, ptr %1250, i32 0, i32 4
  %1252 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1249, ptr noundef nonnull align 4 dereferenceable(8) %1251)
  store <2 x float> %1252, ptr %51, align 4
  %1253 = 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> %1253, ptr %50, align 4
  %1254 = load ptr, ptr %9, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.ImGuiWindow, ptr %1254, i32 0, i32 4
  %1256 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %50, ptr noundef nonnull align 4 dereferenceable(8) %1255)
  store <2 x float> %1256, ptr %49, align 4
  %1257 = load ptr, ptr %9, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.ImGuiWindow, ptr %1257, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1258, ptr align 4 %49, i64 8, i1 false), !tbaa.struct !62
  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
  %1259 = load ptr, ptr %9, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.ImGuiWindow, ptr %1259, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #13
  %1261 = load ptr, ptr %7, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.ImGuiContext, ptr %1261, i32 0, i32 4
  %1263 = getelementptr inbounds %struct.ImGuiIO, ptr %1262, i32 0, i32 2
  %1264 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1263, ptr noundef nonnull align 4 dereferenceable(8) %48)
  store <2 x float> %1264, ptr %53, align 4
  %1265 = call <2 x float> @_ZL5ImMinRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1260, ptr noundef nonnull align 4 dereferenceable(8) %53)
  store <2 x float> %1265, ptr %52, align 4
  %1266 = load ptr, ptr %9, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.ImGuiWindow, ptr %1266, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1267, ptr align 4 %52, i64 8, i1 false), !tbaa.struct !62
  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 %1268

1268:                                             ; preds = %1242, %1235, %1228, %1223, %1218, %1215
  br label %1269

1269:                                             ; preds = %1268, %1211
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #13
  %1270 = load ptr, ptr %9, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.ImGuiWindow, ptr %1270, i32 0, i32 3
  %1272 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1271)
  store <2 x float> %1272, ptr %54, align 4
  %1273 = load ptr, ptr %9, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.ImGuiWindow, ptr %1273, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1274, ptr align 4 %54, i64 8, i1 false), !tbaa.struct !62
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #13
  %1275 = load i32, ptr %6, align 4, !tbaa !9
  %1276 = and i32 %1275, 16777216
  %1277 = icmp ne i32 %1276, 0
  br i1 %1277, label %1278, label %1282

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

1282:                                             ; preds = %1269
  %1283 = load i32, ptr %6, align 4, !tbaa !9
  %1284 = and i32 %1283, 67108864
  %1285 = icmp ne i32 %1284, 0
  br i1 %1285, label %1286, label %1294

1286:                                             ; preds = %1282
  %1287 = load i32, ptr %6, align 4, !tbaa !9
  %1288 = and i32 %1287, 134217728
  %1289 = icmp ne i32 %1288, 0
  br i1 %1289, label %1294, label %1290

1290:                                             ; preds = %1286
  %1291 = load ptr, ptr %8, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.ImGuiStyle, ptr %1291, i32 0, i32 8
  %1293 = load float, ptr %1292, align 4, !tbaa !138
  br label %1298

1294:                                             ; preds = %1286, %1282
  %1295 = load ptr, ptr %8, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.ImGuiStyle, ptr %1295, i32 0, i32 2
  %1297 = load float, ptr %1296, align 4, !tbaa !139
  br label %1298

1298:                                             ; preds = %1294, %1290
  %1299 = phi float [ %1293, %1290 ], [ %1297, %1294 ]
  br label %1300

1300:                                             ; preds = %1298, %1278
  %1301 = phi float [ %1281, %1278 ], [ %1299, %1298 ]
  %1302 = load ptr, ptr %9, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.ImGuiWindow, ptr %1302, i32 0, i32 10
  store float %1301, ptr %1303, align 8, !tbaa !140
  %1304 = load ptr, ptr %9, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.ImGuiWindow, ptr %1304, i32 0, i32 72
  %1306 = load i32, ptr %1305, align 8, !tbaa !141
  %1307 = icmp eq i32 %1306, 2147483647
  br i1 %1307, label %1313, label %1308

1308:                                             ; preds = %1300
  %1309 = load ptr, ptr %9, align 8, !tbaa !5
  %1310 = getelementptr inbounds %struct.ImGuiWindow, ptr %1309, i32 0, i32 68
  %1311 = load i32, ptr %1310, align 8, !tbaa !142
  %1312 = icmp eq i32 %1311, -1
  br i1 %1312, label %1313, label %1314

1313:                                             ; preds = %1308, %1300
  br label %1328

1314:                                             ; preds = %1308
  %1315 = load ptr, ptr %9, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.ImGuiWindow, ptr %1315, i32 0, i32 72
  %1317 = load i32, ptr %1316, align 8, !tbaa !141
  %1318 = load ptr, ptr %9, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.ImGuiWindow, ptr %1318, i32 0, i32 68
  %1320 = load i32, ptr %1319, align 8, !tbaa !142
  %1321 = add nsw i32 %1320, 1
  %1322 = add nsw i32 %1317, %1321
  %1323 = load ptr, ptr %9, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiWindow, ptr %1323, i32 0, i32 68
  %1325 = load i32, ptr %1324, align 8, !tbaa !142
  %1326 = add nsw i32 %1325, 1
  %1327 = srem i32 %1322, %1326
  br label %1328

1328:                                             ; preds = %1314, %1313
  %1329 = phi i32 [ 2147483647, %1313 ], [ %1327, %1314 ]
  %1330 = load ptr, ptr %9, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.ImGuiWindow, ptr %1330, i32 0, i32 70
  store i32 %1329, ptr %1331, align 8, !tbaa !143
  %1332 = load ptr, ptr %9, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.ImGuiWindow, ptr %1332, i32 0, i32 73
  %1334 = load i32, ptr %1333, align 4, !tbaa !144
  %1335 = icmp eq i32 %1334, 2147483647
  br i1 %1335, label %1341, label %1336

1336:                                             ; preds = %1328
  %1337 = load ptr, ptr %9, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.ImGuiWindow, ptr %1337, i32 0, i32 69
  %1339 = load i32, ptr %1338, align 4, !tbaa !145
  %1340 = icmp eq i32 %1339, -1
  br i1 %1340, label %1341, label %1342

1341:                                             ; preds = %1336, %1328
  br label %1356

1342:                                             ; preds = %1336
  %1343 = load ptr, ptr %9, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.ImGuiWindow, ptr %1343, i32 0, i32 73
  %1345 = load i32, ptr %1344, align 4, !tbaa !144
  %1346 = load ptr, ptr %9, align 8, !tbaa !5
  %1347 = getelementptr inbounds %struct.ImGuiWindow, ptr %1346, i32 0, i32 69
  %1348 = load i32, ptr %1347, align 4, !tbaa !145
  %1349 = add nsw i32 %1348, 1
  %1350 = add nsw i32 %1345, %1349
  %1351 = load ptr, ptr %9, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.ImGuiWindow, ptr %1351, i32 0, i32 69
  %1353 = load i32, ptr %1352, align 4, !tbaa !145
  %1354 = add nsw i32 %1353, 1
  %1355 = srem i32 %1350, %1354
  br label %1356

1356:                                             ; preds = %1342, %1341
  %1357 = phi i32 [ 2147483647, %1341 ], [ %1355, %1342 ]
  %1358 = load ptr, ptr %9, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.ImGuiWindow, ptr %1358, i32 0, i32 71
  store i32 %1357, ptr %1359, align 4, !tbaa !146
  %1360 = load ptr, ptr %9, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.ImGuiWindow, ptr %1360, i32 0, i32 69
  store i32 -1, ptr %1361, align 4, !tbaa !145
  %1362 = load ptr, ptr %9, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.ImGuiWindow, ptr %1362, i32 0, i32 68
  store i32 -1, ptr %1363, align 8, !tbaa !142
  %1364 = load ptr, ptr %9, align 8, !tbaa !5
  %1365 = getelementptr inbounds %struct.ImGuiWindow, ptr %1364, i32 0, i32 73
  store i32 2147483647, ptr %1365, align 4, !tbaa !144
  %1366 = load ptr, ptr %9, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.ImGuiWindow, ptr %1366, i32 0, i32 72
  store i32 2147483647, ptr %1367, align 8, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #13
  %1368 = load ptr, ptr %9, align 8, !tbaa !5
  %1369 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef %1368, i1 noundef zeroext true)
  store <2 x float> %1369, ptr %55, align 4
  %1370 = load ptr, ptr %9, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.ImGuiWindow, ptr %1370, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1371, ptr align 4 %55, i64 8, i1 false), !tbaa.struct !62
  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)
  %1372 = load ptr, ptr %9, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.ImGuiWindow, ptr %1372, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1373, ptr align 4 %56, i64 8, i1 false), !tbaa.struct !62
  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 !60
  %1374 = load i8, ptr %17, align 1, !tbaa !60, !range !56, !noundef !57
  %1375 = trunc i8 %1374 to i1
  br i1 %1375, label %1376, label %1390

1376:                                             ; preds = %1356
  %1377 = load i32, ptr %6, align 4, !tbaa !9
  %1378 = and i32 %1377, 4096
  %1379 = icmp ne i32 %1378, 0
  br i1 %1379, label %1390, label %1380

1380:                                             ; preds = %1376
  %1381 = load i32, ptr %6, align 4, !tbaa !9
  %1382 = and i32 %1381, 50331648
  %1383 = icmp ne i32 %1382, 0
  br i1 %1383, label %1384, label %1388

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

1388:                                             ; preds = %1384, %1380
  store i8 1, ptr %57, align 1, !tbaa !60
  br label %1389

1389:                                             ; preds = %1388, %1384
  br label %1390

1390:                                             ; preds = %1389, %1376, %1356
  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
  %1391 = load ptr, ptr %7, align 8, !tbaa !5
  %1392 = getelementptr inbounds %struct.ImGuiContext, ptr %1391, i32 0, i32 4
  %1393 = getelementptr inbounds %struct.ImGuiIO, ptr %1392, i32 0, i32 24
  %1394 = load i8, ptr %1393, align 1, !tbaa !147, !range !56, !noundef !57
  %1395 = trunc i8 %1394 to i1
  %1396 = zext i1 %1395 to i64
  %1397 = select i1 %1395, i32 2, i32 1
  store i32 %1397, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  %1398 = load ptr, ptr %7, align 8, !tbaa !5
  %1399 = getelementptr inbounds %struct.ImGuiContext, ptr %1398, i32 0, i32 7
  %1400 = load float, ptr %1399, align 8, !tbaa !148
  %1401 = fmul float %1400, 0x3FF59999A0000000
  %1402 = load ptr, ptr %9, align 8, !tbaa !5
  %1403 = getelementptr inbounds %struct.ImGuiWindow, ptr %1402, i32 0, i32 10
  %1404 = load float, ptr %1403, align 8, !tbaa !140
  %1405 = fadd float %1404, 1.000000e+00
  %1406 = load ptr, ptr %7, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.ImGuiContext, ptr %1406, i32 0, i32 7
  %1408 = load float, ptr %1407, align 8, !tbaa !148
  %1409 = call float @llvm.fmuladd.f32(float %1408, float 0x3FC99999A0000000, float %1405)
  %1410 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1401, float noundef %1409)
  %1411 = fptosi float %1410 to i32
  %1412 = sitofp i32 %1411 to float
  store float %1412, ptr %61, align 4, !tbaa !63
  %1413 = load ptr, ptr %9, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.ImGuiWindow, ptr %1413, i32 0, i32 23
  %1415 = load i8, ptr %1414, align 1, !tbaa !119, !range !56, !noundef !57
  %1416 = trunc i8 %1415 to i1
  br i1 %1416, label %1421, label %1417

1417:                                             ; preds = %1390
  %1418 = load ptr, ptr %9, align 8, !tbaa !5
  %1419 = load i32, ptr %60, align 4, !tbaa !9
  %1420 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @_ZN5ImGuiL18UpdateManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(ptr noundef %1418, ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef %58, i32 noundef %1419, ptr noundef %1420)
  br label %1421

1421:                                             ; preds = %1417, %1390
  %1422 = load ptr, ptr %9, align 8, !tbaa !5
  %1423 = getelementptr inbounds %struct.ImGuiWindow, ptr %1422, i32 0, i32 4
  %1424 = getelementptr inbounds %struct.ImVec2, ptr %1423, i32 0, i32 0
  %1425 = load float, ptr %1424, align 8, !tbaa !101
  %1426 = fcmp ogt float %1425, 0.000000e+00
  br i1 %1426, label %1427, label %1445

1427:                                             ; preds = %1421
  %1428 = load i32, ptr %6, align 4, !tbaa !9
  %1429 = and i32 %1428, 33554432
  %1430 = icmp ne i32 %1429, 0
  br i1 %1430, label %1445, label %1431

1431:                                             ; preds = %1427
  %1432 = load i32, ptr %6, align 4, !tbaa !9
  %1433 = and i32 %1432, 64
  %1434 = icmp ne i32 %1433, 0
  br i1 %1434, label %1445, label %1435

1435:                                             ; preds = %1431
  %1436 = load ptr, ptr %9, align 8, !tbaa !5
  %1437 = getelementptr inbounds %struct.ImGuiWindow, ptr %1436, i32 0, i32 4
  %1438 = getelementptr inbounds %struct.ImVec2, ptr %1437, i32 0, i32 0
  %1439 = load float, ptr %1438, align 8, !tbaa !101
  %1440 = fmul float %1439, 0x3FE4CCCCC0000000
  %1441 = fptosi float %1440 to i32
  %1442 = sitofp i32 %1441 to float
  %1443 = load ptr, ptr %9, align 8, !tbaa !5
  %1444 = getelementptr inbounds %struct.ImGuiWindow, ptr %1443, i32 0, i32 53
  store float %1442, ptr %1444, align 4, !tbaa !149
  br label %1454

1445:                                             ; preds = %1431, %1427, %1421
  %1446 = load ptr, ptr %7, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.ImGuiContext, ptr %1446, i32 0, i32 7
  %1448 = load float, ptr %1447, align 8, !tbaa !148
  %1449 = fmul float %1448, 1.600000e+01
  %1450 = fptosi float %1449 to i32
  %1451 = sitofp i32 %1450 to float
  %1452 = load ptr, ptr %9, align 8, !tbaa !5
  %1453 = getelementptr inbounds %struct.ImGuiWindow, ptr %1452, i32 0, i32 53
  store float %1451, ptr %1453, align 4, !tbaa !149
  br label %1454

1454:                                             ; preds = %1445, %1435
  %1455 = load ptr, ptr %9, align 8, !tbaa !5
  %1456 = getelementptr inbounds %struct.ImGuiWindow, ptr %1455, i32 0, i32 59
  %1457 = load ptr, ptr %1456, align 8, !tbaa !150
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168) %1457)
  %1458 = load ptr, ptr %7, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.ImGuiContext, ptr %1458, i32 0, i32 5
  %1460 = getelementptr inbounds %struct.ImGuiStyle, ptr %1459, i32 0, i32 26
  %1461 = load i8, ptr %1460, align 8, !tbaa !151, !range !56, !noundef !57
  %1462 = trunc i8 %1461 to i1
  %1463 = zext i1 %1462 to i64
  %1464 = select i1 %1462, i32 1, i32 0
  %1465 = load ptr, ptr %7, align 8, !tbaa !5
  %1466 = getelementptr inbounds %struct.ImGuiContext, ptr %1465, i32 0, i32 5
  %1467 = getelementptr inbounds %struct.ImGuiStyle, ptr %1466, i32 0, i32 27
  %1468 = load i8, ptr %1467, align 1, !tbaa !152, !range !56, !noundef !57
  %1469 = trunc i8 %1468 to i1
  %1470 = zext i1 %1469 to i64
  %1471 = select i1 %1469, i32 2, i32 0
  %1472 = or i32 %1464, %1471
  %1473 = load ptr, ptr %9, align 8, !tbaa !5
  %1474 = getelementptr inbounds %struct.ImGuiWindow, ptr %1473, i32 0, i32 59
  %1475 = load ptr, ptr %1474, align 8, !tbaa !150
  %1476 = getelementptr inbounds %struct.ImDrawList, ptr %1475, i32 0, i32 3
  store i32 %1472, ptr %1476, align 8, !tbaa !153
  %1477 = load ptr, ptr %9, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.ImGuiWindow, ptr %1477, i32 0, i32 59
  %1479 = load ptr, ptr %1478, align 8, !tbaa !150
  %1480 = load ptr, ptr %7, align 8, !tbaa !5
  %1481 = getelementptr inbounds %struct.ImGuiContext, ptr %1480, i32 0, i32 6
  %1482 = load ptr, ptr %1481, align 8, !tbaa !154
  %1483 = getelementptr inbounds %struct.ImFont, ptr %1482, i32 0, i32 11
  %1484 = load ptr, ptr %1483, align 8, !tbaa !155
  %1485 = getelementptr inbounds %struct.ImFontAtlas, ptr %1484, i32 0, i32 3
  %1486 = load ptr, ptr %1485, align 8, !tbaa !156
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %1479, ptr noundef %1486)
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #13
  %1487 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %1488 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %62, i32 0, i32 0
  %1489 = extractvalue { <2 x float>, <2 x float> } %1487, 0
  store <2 x float> %1489, ptr %1488, align 4
  %1490 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %62, i32 0, i32 1
  %1491 = extractvalue { <2 x float>, <2 x float> } %1487, 1
  store <2 x float> %1491, ptr %1490, align 4
  %1492 = load i32, ptr %6, align 4, !tbaa !9
  %1493 = and i32 %1492, 16777216
  %1494 = icmp ne i32 %1493, 0
  br i1 %1494, label %1495, label %1509

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

1499:                                             ; preds = %1495
  %1500 = load i8, ptr %25, align 1, !tbaa !60, !range !56, !noundef !57
  %1501 = trunc i8 %1500 to i1
  br i1 %1501, label %1509, label %1502

1502:                                             ; preds = %1499
  %1503 = load ptr, ptr %16, align 8, !tbaa !5
  %1504 = getelementptr inbounds %struct.ImGuiWindow, ptr %1503, i32 0, i32 47
  %1505 = getelementptr inbounds %struct.ImRect, ptr %1504, i32 0, i32 0
  %1506 = load ptr, ptr %16, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.ImGuiWindow, ptr %1506, i32 0, i32 47
  %1508 = getelementptr inbounds %struct.ImRect, ptr %1507, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1505, ptr noundef nonnull align 4 dereferenceable(8) %1508, i1 noundef zeroext true)
  br label %1512

1509:                                             ; preds = %1499, %1495, %1454
  %1510 = getelementptr inbounds %struct.ImRect, ptr %62, i32 0, i32 0
  %1511 = getelementptr inbounds %struct.ImRect, ptr %62, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1510, ptr noundef nonnull align 4 dereferenceable(8) %1511, i1 noundef zeroext true)
  br label %1512

1512:                                             ; preds = %1509, %1502
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #13
  %1513 = load i32, ptr %6, align 4, !tbaa !9
  %1514 = and i32 %1513, 134217728
  %1515 = icmp ne i32 %1514, 0
  br i1 %1515, label %1516, label %1525

1516:                                             ; preds = %1512
  %1517 = load ptr, ptr %9, align 8, !tbaa !5
  %1518 = call noundef ptr @_ZN5ImGui22GetFrontMostPopupModalEv()
  %1519 = icmp eq ptr %1517, %1518
  br i1 %1519, label %1520, label %1525

1520:                                             ; preds = %1516
  %1521 = load ptr, ptr %9, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.ImGuiWindow, ptr %1521, i32 0, i32 39
  %1523 = load i32, ptr %1522, align 4, !tbaa !76
  %1524 = icmp sle i32 %1523, 0
  br label %1525

1525:                                             ; preds = %1520, %1516, %1512
  %1526 = phi i1 [ false, %1516 ], [ false, %1512 ], [ %1524, %1520 ]
  %1527 = zext i1 %1526 to i8
  store i8 %1527, ptr %63, align 1, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #13
  %1528 = load ptr, ptr %7, align 8, !tbaa !5
  %1529 = getelementptr inbounds %struct.ImGuiContext, ptr %1528, i32 0, i32 72
  %1530 = load ptr, ptr %1529, align 8, !tbaa !160
  %1531 = icmp ne ptr %1530, null
  br i1 %1531, label %1532, label %1540

1532:                                             ; preds = %1525
  %1533 = load ptr, ptr %9, align 8, !tbaa !5
  %1534 = load ptr, ptr %7, align 8, !tbaa !5
  %1535 = getelementptr inbounds %struct.ImGuiContext, ptr %1534, i32 0, i32 72
  %1536 = load ptr, ptr %1535, align 8, !tbaa !160
  %1537 = getelementptr inbounds %struct.ImGuiWindow, ptr %1536, i32 0, i32 62
  %1538 = load ptr, ptr %1537, align 8, !tbaa !161
  %1539 = icmp eq ptr %1533, %1538
  br label %1540

1540:                                             ; preds = %1532, %1525
  %1541 = phi i1 [ false, %1525 ], [ %1539, %1532 ]
  %1542 = zext i1 %1541 to i8
  store i8 %1542, ptr %64, align 1, !tbaa !60
  %1543 = load i8, ptr %63, align 1, !tbaa !60, !range !56, !noundef !57
  %1544 = trunc i8 %1543 to i1
  br i1 %1544, label %1548, label %1545

1545:                                             ; preds = %1540
  %1546 = load i8, ptr %64, align 1, !tbaa !60, !range !56, !noundef !57
  %1547 = trunc i8 %1546 to i1
  br i1 %1547, label %1548, label %1563

1548:                                             ; preds = %1545, %1540
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #13
  %1549 = load i8, ptr %63, align 1, !tbaa !60, !range !56, !noundef !57
  %1550 = trunc i8 %1549 to i1
  %1551 = zext i1 %1550 to i64
  %1552 = select i1 %1550, i32 42, i32 41
  %1553 = load ptr, ptr %7, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.ImGuiContext, ptr %1553, i32 0, i32 103
  %1555 = load float, ptr %1554, align 8, !tbaa !162
  %1556 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1552, float noundef %1555)
  store i32 %1556, ptr %65, align 4, !tbaa !9
  %1557 = load ptr, ptr %9, align 8, !tbaa !5
  %1558 = getelementptr inbounds %struct.ImGuiWindow, ptr %1557, i32 0, i32 59
  %1559 = load ptr, ptr %1558, align 8, !tbaa !150
  %1560 = getelementptr inbounds %struct.ImRect, ptr %62, i32 0, i32 0
  %1561 = getelementptr inbounds %struct.ImRect, ptr %62, i32 0, i32 1
  %1562 = load i32, ptr %65, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1559, ptr noundef nonnull align 4 dereferenceable(8) %1560, ptr noundef nonnull align 4 dereferenceable(8) %1561, i32 noundef %1562, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #13
  br label %1563

1563:                                             ; preds = %1548, %1545
  %1564 = load i8, ptr %64, align 1, !tbaa !60, !range !56, !noundef !57
  %1565 = trunc i8 %1564 to i1
  br i1 %1565, label %1566, label %1599

1566:                                             ; preds = %1563
  %1567 = load ptr, ptr %9, align 8, !tbaa !5
  %1568 = load ptr, ptr %7, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.ImGuiContext, ptr %1568, i32 0, i32 72
  %1570 = load ptr, ptr %1569, align 8, !tbaa !160
  %1571 = icmp eq ptr %1567, %1570
  br i1 %1571, label %1572, label %1599

1572:                                             ; preds = %1566
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #13
  %1573 = load ptr, ptr %9, align 8, !tbaa !5
  %1574 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(984) %1573)
  %1575 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %66, i32 0, i32 0
  %1576 = extractvalue { <2 x float>, <2 x float> } %1574, 0
  store <2 x float> %1576, ptr %1575, align 4
  %1577 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %66, i32 0, i32 1
  %1578 = extractvalue { <2 x float>, <2 x float> } %1574, 1
  store <2 x float> %1578, ptr %1577, align 4
  %1579 = load ptr, ptr %7, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.ImGuiContext, ptr %1579, i32 0, i32 7
  %1581 = load float, ptr %1580, align 8, !tbaa !148
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %66, float noundef %1581)
  %1582 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %66, ptr noundef nonnull align 4 dereferenceable(16) %62)
  br i1 %1582, label %1598, label %1583

1583:                                             ; preds = %1572
  %1584 = load ptr, ptr %9, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.ImGuiWindow, ptr %1584, i32 0, i32 59
  %1586 = load ptr, ptr %1585, align 8, !tbaa !150
  %1587 = getelementptr inbounds %struct.ImRect, ptr %66, i32 0, i32 0
  %1588 = getelementptr inbounds %struct.ImRect, ptr %66, i32 0, i32 1
  %1589 = load ptr, ptr %7, align 8, !tbaa !5
  %1590 = getelementptr inbounds %struct.ImGuiContext, ptr %1589, i32 0, i32 75
  %1591 = load float, ptr %1590, align 4, !tbaa !163
  %1592 = fmul float %1591, 2.500000e-01
  %1593 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 40, float noundef %1592)
  %1594 = load ptr, ptr %7, align 8, !tbaa !5
  %1595 = getelementptr inbounds %struct.ImGuiContext, ptr %1594, i32 0, i32 5
  %1596 = getelementptr inbounds %struct.ImGuiStyle, ptr %1595, i32 0, i32 2
  %1597 = load float, ptr %1596, align 4, !tbaa !164
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1586, ptr noundef nonnull align 4 dereferenceable(8) %1587, ptr noundef nonnull align 4 dereferenceable(8) %1588, i32 noundef %1593, float noundef %1597, i32 noundef 15)
  br label %1598

1598:                                             ; preds = %1583, %1572
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #13
  br label %1599

1599:                                             ; preds = %1598, %1566, %1563
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #13
  %1600 = load ptr, ptr %9, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct.ImGuiWindow, ptr %1600, i32 0, i32 10
  %1602 = load float, ptr %1601, align 8, !tbaa !140
  store float %1602, ptr %67, align 4, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #13
  %1603 = load ptr, ptr %9, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.ImGuiWindow, ptr %1603, i32 0, i32 11
  %1605 = load float, ptr %1604, align 4, !tbaa !107
  store float %1605, ptr %68, align 4, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #13
  %1606 = load ptr, ptr %7, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct.ImGuiContext, ptr %1606, i32 0, i32 71
  %1608 = load ptr, ptr %1607, align 8, !tbaa !165
  %1609 = icmp ne ptr %1608, null
  br i1 %1609, label %1610, label %1614

1610:                                             ; preds = %1599
  %1611 = load ptr, ptr %7, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.ImGuiContext, ptr %1611, i32 0, i32 71
  %1613 = load ptr, ptr %1612, align 8, !tbaa !165
  br label %1618

1614:                                             ; preds = %1599
  %1615 = load ptr, ptr %7, align 8, !tbaa !5
  %1616 = getelementptr inbounds %struct.ImGuiContext, ptr %1615, i32 0, i32 59
  %1617 = load ptr, ptr %1616, align 8, !tbaa !166
  br label %1618

1618:                                             ; preds = %1614, %1610
  %1619 = phi ptr [ %1613, %1610 ], [ %1617, %1614 ]
  store ptr %1619, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #13
  %1620 = load i8, ptr %57, align 1, !tbaa !60, !range !56, !noundef !57
  %1621 = trunc i8 %1620 to i1
  br i1 %1621, label %1635, label %1622

1622:                                             ; preds = %1618
  %1623 = load ptr, ptr %69, align 8, !tbaa !5
  %1624 = icmp ne ptr %1623, null
  br i1 %1624, label %1625, label %1633

1625:                                             ; preds = %1622
  %1626 = load ptr, ptr %9, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.ImGuiWindow, ptr %1626, i32 0, i32 63
  %1628 = load ptr, ptr %1627, align 8, !tbaa !167
  %1629 = load ptr, ptr %69, align 8, !tbaa !5
  %1630 = getelementptr inbounds %struct.ImGuiWindow, ptr %1629, i32 0, i32 63
  %1631 = load ptr, ptr %1630, align 8, !tbaa !167
  %1632 = icmp eq ptr %1628, %1631
  br label %1633

1633:                                             ; preds = %1625, %1622
  %1634 = phi i1 [ false, %1622 ], [ %1632, %1625 ]
  br label %1635

1635:                                             ; preds = %1633, %1618
  %1636 = phi i1 [ true, %1618 ], [ %1634, %1633 ]
  %1637 = zext i1 %1636 to i8
  store i8 %1637, ptr %70, align 1, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #13
  %1638 = load ptr, ptr %9, align 8, !tbaa !5
  %1639 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(984) %1638)
  %1640 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 0
  %1641 = extractvalue { <2 x float>, <2 x float> } %1639, 0
  store <2 x float> %1641, ptr %1640, align 4
  %1642 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 1
  %1643 = extractvalue { <2 x float>, <2 x float> } %1639, 1
  store <2 x float> %1643, ptr %1642, align 4
  %1644 = load ptr, ptr %9, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.ImGuiWindow, ptr %1644, i32 0, i32 23
  %1646 = load i8, ptr %1645, align 1, !tbaa !119, !range !56, !noundef !57
  %1647 = trunc i8 %1646 to i1
  br i1 %1647, label %1648, label %1681

1648:                                             ; preds = %1635
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #13
  %1649 = load ptr, ptr %8, align 8, !tbaa !5
  %1650 = getelementptr inbounds %struct.ImGuiStyle, ptr %1649, i32 0, i32 12
  %1651 = load float, ptr %1650, align 4, !tbaa !168
  store float %1651, ptr %72, align 4, !tbaa !63
  %1652 = load ptr, ptr %9, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.ImGuiWindow, ptr %1652, i32 0, i32 11
  %1654 = load float, ptr %1653, align 4, !tbaa !107
  %1655 = load ptr, ptr %7, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.ImGuiContext, ptr %1655, i32 0, i32 5
  %1657 = getelementptr inbounds %struct.ImGuiStyle, ptr %1656, i32 0, i32 12
  store float %1654, ptr %1657, align 8, !tbaa !169
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #13
  %1658 = load i8, ptr %70, align 1, !tbaa !60, !range !56, !noundef !57
  %1659 = trunc i8 %1658 to i1
  br i1 %1659, label %1660, label %1666

1660:                                             ; preds = %1648
  %1661 = load ptr, ptr %7, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.ImGuiContext, ptr %1661, i32 0, i32 82
  %1663 = load i8, ptr %1662, align 2, !tbaa !170, !range !56, !noundef !57
  %1664 = trunc i8 %1663 to i1
  %1665 = xor i1 %1664, true
  br label %1666

1666:                                             ; preds = %1660, %1648
  %1667 = phi i1 [ false, %1648 ], [ %1665, %1660 ]
  %1668 = zext i1 %1667 to i64
  %1669 = select i1 %1667, i32 11, i32 12
  %1670 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1669, float noundef 1.000000e+00)
  store i32 %1670, ptr %73, align 4, !tbaa !9
  %1671 = getelementptr inbounds %struct.ImRect, ptr %71, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %74, ptr align 4 %1671, i64 8, i1 false), !tbaa.struct !62
  %1672 = getelementptr inbounds %struct.ImRect, ptr %71, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %75, ptr align 4 %1672, i64 8, i1 false), !tbaa.struct !62
  %1673 = load i32, ptr %73, align 4, !tbaa !9
  %1674 = load float, ptr %67, align 4, !tbaa !63
  %1675 = load <2 x float>, ptr %74, align 4
  %1676 = load <2 x float>, ptr %75, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %1675, <2 x float> %1676, i32 noundef %1673, i1 noundef zeroext true, float noundef %1674)
  %1677 = load float, ptr %72, align 4, !tbaa !63
  %1678 = load ptr, ptr %7, align 8, !tbaa !5
  %1679 = getelementptr inbounds %struct.ImGuiContext, ptr %1678, i32 0, i32 5
  %1680 = getelementptr inbounds %struct.ImGuiStyle, ptr %1679, i32 0, i32 12
  store float %1677, ptr %1680, align 8, !tbaa !169
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #13
  br label %1987

1681:                                             ; preds = %1635
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #13
  %1682 = load i32, ptr %6, align 4, !tbaa !9
  %1683 = call noundef i32 @_ZL28GetWindowBgColorIdxFromFlagsi(i32 noundef %1682)
  %1684 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1683, float noundef 1.000000e+00)
  store i32 %1684, ptr %76, align 4, !tbaa !9
  %1685 = load ptr, ptr %7, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.ImGuiContext, ptr %1685, i32 0, i32 55
  %1687 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1686, i32 0, i32 6
  %1688 = load i32, ptr %1687, align 8, !tbaa !171
  %1689 = icmp ne i32 %1688, 0
  br i1 %1689, label %1690, label %1705

1690:                                             ; preds = %1681
  %1691 = load i32, ptr %76, align 4, !tbaa !9
  %1692 = and i32 %1691, 16777215
  %1693 = load ptr, ptr %7, align 8, !tbaa !5
  %1694 = getelementptr inbounds %struct.ImGuiContext, ptr %1693, i32 0, i32 55
  %1695 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1694, i32 0, i32 16
  %1696 = load float, ptr %1695, align 8, !tbaa !172
  %1697 = call noundef float @_ZL10ImSaturatef(float noundef %1696)
  %1698 = call float @llvm.fmuladd.f32(float %1697, float 2.550000e+02, float 5.000000e-01)
  %1699 = fptosi float %1698 to i32
  %1700 = shl i32 %1699, 24
  %1701 = or i32 %1692, %1700
  store i32 %1701, ptr %76, align 4, !tbaa !9
  %1702 = load ptr, ptr %7, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct.ImGuiContext, ptr %1702, i32 0, i32 55
  %1704 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1703, i32 0, i32 6
  store i32 0, ptr %1704, align 8, !tbaa !171
  br label %1705

1705:                                             ; preds = %1690, %1681
  %1706 = load ptr, ptr %9, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.ImGuiWindow, ptr %1706, i32 0, i32 59
  %1708 = load ptr, ptr %1707, align 8, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #13
  %1709 = load ptr, ptr %9, align 8, !tbaa !5
  %1710 = getelementptr inbounds %struct.ImGuiWindow, ptr %1709, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #13
  %1711 = load ptr, ptr %9, align 8, !tbaa !5
  %1712 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %1711)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %78, float noundef 0.000000e+00, float noundef %1712)
  %1713 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1710, ptr noundef nonnull align 4 dereferenceable(8) %78)
  store <2 x float> %1713, ptr %77, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #13
  %1714 = load ptr, ptr %9, align 8, !tbaa !5
  %1715 = getelementptr inbounds %struct.ImGuiWindow, ptr %1714, i32 0, i32 3
  %1716 = load ptr, ptr %9, align 8, !tbaa !5
  %1717 = getelementptr inbounds %struct.ImGuiWindow, ptr %1716, i32 0, i32 4
  %1718 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1715, ptr noundef nonnull align 4 dereferenceable(8) %1717)
  store <2 x float> %1718, ptr %79, align 4
  %1719 = load i32, ptr %76, align 4, !tbaa !9
  %1720 = load float, ptr %67, align 4, !tbaa !63
  %1721 = load i32, ptr %6, align 4, !tbaa !9
  %1722 = and i32 %1721, 1
  %1723 = icmp ne i32 %1722, 0
  %1724 = zext i1 %1723 to i64
  %1725 = select i1 %1723, i32 15, i32 12
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1708, ptr noundef nonnull align 4 dereferenceable(8) %77, ptr noundef nonnull align 4 dereferenceable(8) %79, i32 noundef %1719, float noundef %1720, i32 noundef %1725)
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #13
  %1726 = load ptr, ptr %9, align 8, !tbaa !5
  %1727 = getelementptr inbounds %struct.ImGuiWindow, ptr %1726, i32 0, i32 23
  %1728 = load i8, ptr %1727, align 1, !tbaa !119, !range !56, !noundef !57
  %1729 = trunc i8 %1728 to i1
  br i1 %1729, label %1730, label %1731

1730:                                             ; preds = %1705
  br label %1736

1731:                                             ; preds = %1705
  %1732 = load i8, ptr %70, align 1, !tbaa !60, !range !56, !noundef !57
  %1733 = trunc i8 %1732 to i1
  %1734 = zext i1 %1733 to i64
  %1735 = select i1 %1733, i32 11, i32 10
  br label %1736

1736:                                             ; preds = %1731, %1730
  %1737 = phi i32 [ 12, %1730 ], [ %1735, %1731 ]
  %1738 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1737, float noundef 1.000000e+00)
  store i32 %1738, ptr %80, align 4, !tbaa !9
  %1739 = load i32, ptr %6, align 4, !tbaa !9
  %1740 = and i32 %1739, 1
  %1741 = icmp ne i32 %1740, 0
  br i1 %1741, label %1750, label %1742

1742:                                             ; preds = %1736
  %1743 = load ptr, ptr %9, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.ImGuiWindow, ptr %1743, i32 0, i32 59
  %1745 = load ptr, ptr %1744, align 8, !tbaa !150
  %1746 = getelementptr inbounds %struct.ImRect, ptr %71, i32 0, i32 0
  %1747 = getelementptr inbounds %struct.ImRect, ptr %71, i32 0, i32 1
  %1748 = load i32, ptr %80, align 4, !tbaa !9
  %1749 = load float, ptr %67, align 4, !tbaa !63
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1745, ptr noundef nonnull align 4 dereferenceable(8) %1746, ptr noundef nonnull align 4 dereferenceable(8) %1747, i32 noundef %1748, float noundef %1749, i32 noundef 3)
  br label %1750

1750:                                             ; preds = %1742, %1736
  %1751 = load i32, ptr %6, align 4, !tbaa !9
  %1752 = and i32 %1751, 1024
  %1753 = icmp ne i32 %1752, 0
  br i1 %1753, label %1754, label %1810

1754:                                             ; preds = %1750
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #13
  %1755 = load ptr, ptr %9, align 8, !tbaa !5
  %1756 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow11MenuBarRectEv(ptr noundef nonnull align 8 dereferenceable(984) %1755)
  %1757 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %81, i32 0, i32 0
  %1758 = extractvalue { <2 x float>, <2 x float> } %1756, 0
  store <2 x float> %1758, ptr %1757, align 4
  %1759 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %81, i32 0, i32 1
  %1760 = extractvalue { <2 x float>, <2 x float> } %1756, 1
  store <2 x float> %1760, ptr %1759, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #13
  %1761 = load ptr, ptr %9, align 8, !tbaa !5
  %1762 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(984) %1761)
  %1763 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %82, i32 0, i32 0
  %1764 = extractvalue { <2 x float>, <2 x float> } %1762, 0
  store <2 x float> %1764, ptr %1763, align 4
  %1765 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %82, i32 0, i32 1
  %1766 = extractvalue { <2 x float>, <2 x float> } %1762, 1
  store <2 x float> %1766, ptr %1765, align 4
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %81, ptr noundef nonnull align 4 dereferenceable(16) %82)
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #13
  %1767 = load ptr, ptr %9, align 8, !tbaa !5
  %1768 = getelementptr inbounds %struct.ImGuiWindow, ptr %1767, i32 0, i32 59
  %1769 = load ptr, ptr %1768, align 8, !tbaa !150
  %1770 = getelementptr inbounds %struct.ImRect, ptr %81, i32 0, i32 0
  %1771 = getelementptr inbounds %struct.ImRect, ptr %81, i32 0, i32 1
  %1772 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 13, float noundef 1.000000e+00)
  %1773 = load i32, ptr %6, align 4, !tbaa !9
  %1774 = and i32 %1773, 1
  %1775 = icmp ne i32 %1774, 0
  br i1 %1775, label %1776, label %1778

1776:                                             ; preds = %1754
  %1777 = load float, ptr %67, align 4, !tbaa !63
  br label %1779

1778:                                             ; preds = %1754
  br label %1779

1779:                                             ; preds = %1778, %1776
  %1780 = phi float [ %1777, %1776 ], [ 0.000000e+00, %1778 ]
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1769, ptr noundef nonnull align 4 dereferenceable(8) %1770, ptr noundef nonnull align 4 dereferenceable(8) %1771, i32 noundef %1772, float noundef %1780, i32 noundef 3)
  %1781 = load ptr, ptr %8, align 8, !tbaa !5
  %1782 = getelementptr inbounds %struct.ImGuiStyle, ptr %1781, i32 0, i32 12
  %1783 = load float, ptr %1782, align 4, !tbaa !168
  %1784 = fcmp ogt float %1783, 0.000000e+00
  br i1 %1784, label %1785, label %1809

1785:                                             ; preds = %1779
  %1786 = getelementptr inbounds %struct.ImRect, ptr %81, i32 0, i32 1
  %1787 = getelementptr inbounds %struct.ImVec2, ptr %1786, i32 0, i32 1
  %1788 = load float, ptr %1787, align 4, !tbaa !173
  %1789 = load ptr, ptr %9, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.ImGuiWindow, ptr %1789, i32 0, i32 3
  %1791 = getelementptr inbounds %struct.ImVec2, ptr %1790, i32 0, i32 1
  %1792 = load float, ptr %1791, align 4, !tbaa !174
  %1793 = load ptr, ptr %9, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.ImGuiWindow, ptr %1793, i32 0, i32 4
  %1795 = getelementptr inbounds %struct.ImVec2, ptr %1794, i32 0, i32 1
  %1796 = load float, ptr %1795, align 4, !tbaa !103
  %1797 = fadd float %1792, %1796
  %1798 = fcmp olt float %1788, %1797
  br i1 %1798, label %1799, label %1809

1799:                                             ; preds = %1785
  %1800 = load ptr, ptr %9, align 8, !tbaa !5
  %1801 = getelementptr inbounds %struct.ImGuiWindow, ptr %1800, i32 0, i32 59
  %1802 = load ptr, ptr %1801, align 8, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #13
  %1803 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %81)
  store <2 x float> %1803, ptr %83, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #13
  %1804 = call <2 x float> @_ZNK6ImRect5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %81)
  store <2 x float> %1804, ptr %84, align 4
  %1805 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 5, float noundef 1.000000e+00)
  %1806 = load ptr, ptr %8, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.ImGuiStyle, ptr %1806, i32 0, i32 12
  %1808 = load float, ptr %1807, align 4, !tbaa !168
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1802, ptr noundef nonnull align 4 dereferenceable(8) %83, ptr noundef nonnull align 4 dereferenceable(8) %84, i32 noundef %1805, float noundef %1808)
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #13
  br label %1809

1809:                                             ; preds = %1799, %1785, %1779
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #13
  br label %1810

1810:                                             ; preds = %1809, %1750
  %1811 = load ptr, ptr %9, align 8, !tbaa !5
  %1812 = getelementptr inbounds %struct.ImGuiWindow, ptr %1811, i32 0, i32 18
  %1813 = load i8, ptr %1812, align 8, !tbaa !131, !range !56, !noundef !57
  %1814 = trunc i8 %1813 to i1
  br i1 %1814, label %1815, label %1816

1815:                                             ; preds = %1810
  call void @_ZN5ImGui9ScrollbarEi(i32 noundef 1)
  br label %1816

1816:                                             ; preds = %1815, %1810
  %1817 = load ptr, ptr %9, align 8, !tbaa !5
  %1818 = getelementptr inbounds %struct.ImGuiWindow, ptr %1817, i32 0, i32 19
  %1819 = load i8, ptr %1818, align 1, !tbaa !128, !range !56, !noundef !57
  %1820 = trunc i8 %1819 to i1
  br i1 %1820, label %1821, label %1822

1821:                                             ; preds = %1816
  call void @_ZN5ImGui9ScrollbarEi(i32 noundef 0)
  br label %1822

1822:                                             ; preds = %1821, %1816
  %1823 = load i32, ptr %6, align 4, !tbaa !9
  %1824 = and i32 %1823, 2
  %1825 = icmp ne i32 %1824, 0
  br i1 %1825, label %1921, label %1826

1826:                                             ; preds = %1822
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #13
  store i32 0, ptr %85, align 4, !tbaa !9
  br label %1827

1827:                                             ; preds = %1917, %1826
  %1828 = load i32, ptr %85, align 4, !tbaa !9
  %1829 = load i32, ptr %60, align 4, !tbaa !9
  %1830 = icmp slt i32 %1828, %1829
  br i1 %1830, label %1832, label %1831

1831:                                             ; preds = %1827
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #13
  br label %1920

1832:                                             ; preds = %1827
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #13
  %1833 = load i32, ptr %85, align 4, !tbaa !9
  %1834 = sext i32 %1833 to i64
  %1835 = getelementptr inbounds [4 x %struct.ImGuiResizeGripDef], ptr @_ZL15resize_grip_def, i64 0, i64 %1834
  store ptr %1835, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #13
  %1836 = load ptr, ptr %9, align 8, !tbaa !5
  %1837 = getelementptr inbounds %struct.ImGuiWindow, ptr %1836, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #13
  %1838 = load ptr, ptr %9, align 8, !tbaa !5
  %1839 = getelementptr inbounds %struct.ImGuiWindow, ptr %1838, i32 0, i32 3
  %1840 = load ptr, ptr %9, align 8, !tbaa !5
  %1841 = getelementptr inbounds %struct.ImGuiWindow, ptr %1840, i32 0, i32 4
  %1842 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1839, ptr noundef nonnull align 4 dereferenceable(8) %1841)
  store <2 x float> %1842, ptr %88, align 4
  %1843 = load ptr, ptr %86, align 8, !tbaa !5
  %1844 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1843, i32 0, i32 0
  %1845 = call <2 x float> @_ZL6ImLerpRK6ImVec2S1_S1_(ptr noundef nonnull align 4 dereferenceable(8) %1837, ptr noundef nonnull align 4 dereferenceable(8) %88, ptr noundef nonnull align 4 dereferenceable(8) %1844)
  store <2 x float> %1845, ptr %87, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #13
  %1846 = load ptr, ptr %9, align 8, !tbaa !5
  %1847 = getelementptr inbounds %struct.ImGuiWindow, ptr %1846, i32 0, i32 59
  %1848 = load ptr, ptr %1847, align 8, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #13
  %1849 = load ptr, ptr %86, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1849, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #13
  %1851 = load i32, ptr %85, align 4, !tbaa !9
  %1852 = and i32 %1851, 1
  %1853 = icmp ne i32 %1852, 0
  br i1 %1853, label %1854, label %1857

1854:                                             ; preds = %1832
  %1855 = load float, ptr %68, align 4, !tbaa !63
  %1856 = load float, ptr %61, align 4, !tbaa !63
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %91, float noundef %1855, float noundef %1856)
  br label %1860

1857:                                             ; preds = %1832
  %1858 = load float, ptr %61, align 4, !tbaa !63
  %1859 = load float, ptr %68, align 4, !tbaa !63
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %91, float noundef %1858, float noundef %1859)
  br label %1860

1860:                                             ; preds = %1857, %1854
  %1861 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1850, ptr noundef nonnull align 4 dereferenceable(8) %91)
  store <2 x float> %1861, ptr %90, align 4
  %1862 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %87, ptr noundef nonnull align 4 dereferenceable(8) %90)
  store <2 x float> %1862, ptr %89, align 4
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(168) %1848, ptr noundef nonnull align 4 dereferenceable(8) %89)
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #13
  %1863 = load ptr, ptr %9, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.ImGuiWindow, ptr %1863, i32 0, i32 59
  %1865 = load ptr, ptr %1864, align 8, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #13
  %1866 = load ptr, ptr %86, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1866, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #13
  %1868 = load i32, ptr %85, align 4, !tbaa !9
  %1869 = and i32 %1868, 1
  %1870 = icmp ne i32 %1869, 0
  br i1 %1870, label %1871, label %1874

1871:                                             ; preds = %1860
  %1872 = load float, ptr %61, align 4, !tbaa !63
  %1873 = load float, ptr %68, align 4, !tbaa !63
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %94, float noundef %1872, float noundef %1873)
  br label %1877

1874:                                             ; preds = %1860
  %1875 = load float, ptr %68, align 4, !tbaa !63
  %1876 = load float, ptr %61, align 4, !tbaa !63
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %94, float noundef %1875, float noundef %1876)
  br label %1877

1877:                                             ; preds = %1874, %1871
  %1878 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1867, ptr noundef nonnull align 4 dereferenceable(8) %94)
  store <2 x float> %1878, ptr %93, align 4
  %1879 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %87, ptr noundef nonnull align 4 dereferenceable(8) %93)
  store <2 x float> %1879, ptr %92, align 4
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(168) %1865, ptr noundef nonnull align 4 dereferenceable(8) %92)
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #13
  %1880 = load ptr, ptr %9, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.ImGuiWindow, ptr %1880, i32 0, i32 59
  %1882 = load ptr, ptr %1881, align 8, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #13
  %1883 = getelementptr inbounds %struct.ImVec2, ptr %87, i32 0, i32 0
  %1884 = load float, ptr %1883, align 4, !tbaa !120
  %1885 = load ptr, ptr %86, align 8, !tbaa !5
  %1886 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1885, i32 0, i32 1
  %1887 = getelementptr inbounds %struct.ImVec2, ptr %1886, i32 0, i32 0
  %1888 = load float, ptr %1887, align 4, !tbaa !175
  %1889 = load float, ptr %67, align 4, !tbaa !63
  %1890 = load float, ptr %68, align 4, !tbaa !63
  %1891 = fadd float %1889, %1890
  %1892 = call float @llvm.fmuladd.f32(float %1888, float %1891, float %1884)
  %1893 = getelementptr inbounds %struct.ImVec2, ptr %87, i32 0, i32 1
  %1894 = load float, ptr %1893, align 4, !tbaa !121
  %1895 = load ptr, ptr %86, align 8, !tbaa !5
  %1896 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1895, i32 0, i32 1
  %1897 = getelementptr inbounds %struct.ImVec2, ptr %1896, i32 0, i32 1
  %1898 = load float, ptr %1897, align 4, !tbaa !177
  %1899 = load float, ptr %67, align 4, !tbaa !63
  %1900 = load float, ptr %68, align 4, !tbaa !63
  %1901 = fadd float %1899, %1900
  %1902 = call float @llvm.fmuladd.f32(float %1898, float %1901, float %1894)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %95, float noundef %1892, float noundef %1902)
  %1903 = load float, ptr %67, align 4, !tbaa !63
  %1904 = load ptr, ptr %86, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1904, i32 0, i32 2
  %1906 = load i32, ptr %1905, align 4, !tbaa !178
  %1907 = load ptr, ptr %86, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.ImGuiResizeGripDef, ptr %1907, i32 0, i32 3
  %1909 = load i32, ptr %1908, align 4, !tbaa !179
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(168) %1882, ptr noundef nonnull align 4 dereferenceable(8) %95, float noundef %1903, i32 noundef %1906, i32 noundef %1909)
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #13
  %1910 = load ptr, ptr %9, align 8, !tbaa !5
  %1911 = getelementptr inbounds %struct.ImGuiWindow, ptr %1910, i32 0, i32 59
  %1912 = load ptr, ptr %1911, align 8, !tbaa !150
  %1913 = load i32, ptr %85, align 4, !tbaa !9
  %1914 = sext i32 %1913 to i64
  %1915 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %1914
  %1916 = load i32, ptr %1915, align 4, !tbaa !9
  call void @_ZN10ImDrawList14PathFillConvexEj(ptr noundef nonnull align 8 dereferenceable(168) %1912, i32 noundef %1916)
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #13
  br label %1917

1917:                                             ; preds = %1877
  %1918 = load i32, ptr %85, align 4, !tbaa !9
  %1919 = add nsw i32 %1918, 1
  store i32 %1919, ptr %85, align 4, !tbaa !9
  br label %1827, !llvm.loop !180

1920:                                             ; preds = %1831
  br label %1921

1921:                                             ; preds = %1920, %1822
  %1922 = load float, ptr %68, align 4, !tbaa !63
  %1923 = fcmp ogt float %1922, 0.000000e+00
  br i1 %1923, label %1924, label %1938

1924:                                             ; preds = %1921
  %1925 = load ptr, ptr %9, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.ImGuiWindow, ptr %1925, i32 0, i32 59
  %1927 = load ptr, ptr %1926, align 8, !tbaa !150
  %1928 = load ptr, ptr %9, align 8, !tbaa !5
  %1929 = getelementptr inbounds %struct.ImGuiWindow, ptr %1928, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #13
  %1930 = load ptr, ptr %9, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.ImGuiWindow, ptr %1930, i32 0, i32 3
  %1932 = load ptr, ptr %9, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.ImGuiWindow, ptr %1932, i32 0, i32 4
  %1934 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1931, ptr noundef nonnull align 4 dereferenceable(8) %1933)
  store <2 x float> %1934, ptr %96, align 4
  %1935 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 5, float noundef 1.000000e+00)
  %1936 = load float, ptr %67, align 4, !tbaa !63
  %1937 = load float, ptr %68, align 4, !tbaa !63
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %1927, ptr noundef nonnull align 4 dereferenceable(8) %1929, ptr noundef nonnull align 4 dereferenceable(8) %96, i32 noundef %1935, float noundef %1936, i32 noundef 15, float noundef %1937)
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #13
  br label %1938

1938:                                             ; preds = %1924, %1921
  %1939 = load i32, ptr %58, align 4, !tbaa !9
  %1940 = icmp ne i32 %1939, -1
  br i1 %1940, label %1941, label %1958

1941:                                             ; preds = %1938
  call void @llvm.lifetime.start.p0(i64 16, ptr %97) #13
  %1942 = load ptr, ptr %9, align 8, !tbaa !5
  %1943 = load i32, ptr %58, align 4, !tbaa !9
  %1944 = load float, ptr %61, align 4, !tbaa !63
  %1945 = call { <2 x float>, <2 x float> } @_ZL19GetResizeBorderRectP11ImGuiWindowiff(ptr noundef %1942, i32 noundef %1943, float noundef %1944, float noundef 0.000000e+00)
  %1946 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %97, i32 0, i32 0
  %1947 = extractvalue { <2 x float>, <2 x float> } %1945, 0
  store <2 x float> %1947, ptr %1946, align 4
  %1948 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %97, i32 0, i32 1
  %1949 = extractvalue { <2 x float>, <2 x float> } %1945, 1
  store <2 x float> %1949, ptr %1948, align 4
  %1950 = load ptr, ptr %9, align 8, !tbaa !5
  %1951 = getelementptr inbounds %struct.ImGuiWindow, ptr %1950, i32 0, i32 59
  %1952 = load ptr, ptr %1951, align 8, !tbaa !150
  %1953 = getelementptr inbounds %struct.ImRect, ptr %97, i32 0, i32 0
  %1954 = getelementptr inbounds %struct.ImRect, ptr %97, i32 0, i32 1
  %1955 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 29, float noundef 1.000000e+00)
  %1956 = load float, ptr %68, align 4, !tbaa !63
  %1957 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 1.000000e+00, float noundef %1956)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1952, ptr noundef nonnull align 4 dereferenceable(8) %1953, ptr noundef nonnull align 4 dereferenceable(8) %1954, i32 noundef %1955, float noundef %1957)
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #13
  br label %1958

1958:                                             ; preds = %1941, %1938
  %1959 = load ptr, ptr %8, align 8, !tbaa !5
  %1960 = getelementptr inbounds %struct.ImGuiStyle, ptr %1959, i32 0, i32 12
  %1961 = load float, ptr %1960, align 4, !tbaa !168
  %1962 = fcmp ogt float %1961, 0.000000e+00
  br i1 %1962, label %1963, label %1986

1963:                                             ; preds = %1958
  %1964 = load i32, ptr %6, align 4, !tbaa !9
  %1965 = and i32 %1964, 1
  %1966 = icmp ne i32 %1965, 0
  br i1 %1966, label %1986, label %1967

1967:                                             ; preds = %1963
  %1968 = load ptr, ptr %9, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.ImGuiWindow, ptr %1968, i32 0, i32 59
  %1970 = load ptr, ptr %1969, align 8, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #13
  %1971 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %71)
  store <2 x float> %1971, ptr %99, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #13
  %1972 = load ptr, ptr %8, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.ImGuiStyle, ptr %1972, i32 0, i32 3
  %1974 = load float, ptr %1973, align 4, !tbaa !106
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %100, float noundef %1974, float noundef -1.000000e+00)
  %1975 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %99, ptr noundef nonnull align 4 dereferenceable(8) %100)
  store <2 x float> %1975, ptr %98, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #13
  %1976 = call <2 x float> @_ZNK6ImRect5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %71)
  store <2 x float> %1976, ptr %102, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #13
  %1977 = load ptr, ptr %8, align 8, !tbaa !5
  %1978 = getelementptr inbounds %struct.ImGuiStyle, ptr %1977, i32 0, i32 3
  %1979 = load float, ptr %1978, align 4, !tbaa !106
  %1980 = fneg float %1979
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %103, float noundef %1980, float noundef -1.000000e+00)
  %1981 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %102, ptr noundef nonnull align 4 dereferenceable(8) %103)
  store <2 x float> %1981, ptr %101, align 4
  %1982 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 5, float noundef 1.000000e+00)
  %1983 = load ptr, ptr %8, align 8, !tbaa !5
  %1984 = getelementptr inbounds %struct.ImGuiStyle, ptr %1983, i32 0, i32 12
  %1985 = load float, ptr %1984, align 4, !tbaa !168
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1970, ptr noundef nonnull align 4 dereferenceable(8) %98, ptr noundef nonnull align 4 dereferenceable(8) %101, i32 noundef %1982, float noundef %1985)
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #13
  br label %1986

1986:                                             ; preds = %1967, %1963, %1958
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #13
  br label %1987

1987:                                             ; preds = %1986, %1666
  %1988 = load ptr, ptr %7, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.ImGuiContext, ptr %1988, i32 0, i32 72
  %1990 = load ptr, ptr %1989, align 8, !tbaa !160
  %1991 = load ptr, ptr %9, align 8, !tbaa !5
  %1992 = icmp eq ptr %1990, %1991
  br i1 %1992, label %1993, label %2032

1993:                                             ; preds = %1987
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #13
  %1994 = load ptr, ptr %9, align 8, !tbaa !5
  %1995 = getelementptr inbounds %struct.ImGuiWindow, ptr %1994, i32 0, i32 10
  %1996 = load float, ptr %1995, align 8, !tbaa !140
  %1997 = load ptr, ptr %7, align 8, !tbaa !5
  %1998 = getelementptr inbounds %struct.ImGuiContext, ptr %1997, i32 0, i32 5
  %1999 = getelementptr inbounds %struct.ImGuiStyle, ptr %1998, i32 0, i32 2
  %2000 = load float, ptr %1999, align 4, !tbaa !164
  %2001 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1996, float noundef %2000)
  store float %2001, ptr %104, align 4, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 16, ptr %105) #13
  %2002 = load ptr, ptr %9, align 8, !tbaa !5
  %2003 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(984) %2002)
  %2004 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %105, i32 0, i32 0
  %2005 = extractvalue { <2 x float>, <2 x float> } %2003, 0
  store <2 x float> %2005, ptr %2004, align 4
  %2006 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %105, i32 0, i32 1
  %2007 = extractvalue { <2 x float>, <2 x float> } %2003, 1
  store <2 x float> %2007, ptr %2006, align 4
  %2008 = load ptr, ptr %7, align 8, !tbaa !5
  %2009 = getelementptr inbounds %struct.ImGuiContext, ptr %2008, i32 0, i32 7
  %2010 = load float, ptr %2009, align 8, !tbaa !148
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %105, float noundef %2010)
  %2011 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %105, ptr noundef nonnull align 4 dereferenceable(16) %62)
  br i1 %2011, label %2012, label %2021

2012:                                             ; preds = %1993
  %2013 = load ptr, ptr %7, align 8, !tbaa !5
  %2014 = getelementptr inbounds %struct.ImGuiContext, ptr %2013, i32 0, i32 7
  %2015 = load float, ptr %2014, align 8, !tbaa !148
  %2016 = fneg float %2015
  %2017 = fsub float %2016, 1.000000e+00
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %105, float noundef %2017)
  %2018 = load ptr, ptr %9, align 8, !tbaa !5
  %2019 = getelementptr inbounds %struct.ImGuiWindow, ptr %2018, i32 0, i32 10
  %2020 = load float, ptr %2019, align 8, !tbaa !140
  store float %2020, ptr %104, align 4, !tbaa !63
  br label %2021

2021:                                             ; preds = %2012, %1993
  %2022 = load ptr, ptr %9, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.ImGuiWindow, ptr %2022, i32 0, i32 59
  %2024 = load ptr, ptr %2023, align 8, !tbaa !150
  %2025 = getelementptr inbounds %struct.ImRect, ptr %105, i32 0, i32 0
  %2026 = getelementptr inbounds %struct.ImRect, ptr %105, i32 0, i32 1
  %2027 = load ptr, ptr %7, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.ImGuiContext, ptr %2027, i32 0, i32 75
  %2029 = load float, ptr %2028, align 4, !tbaa !163
  %2030 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 40, float noundef %2029)
  %2031 = load float, ptr %104, align 4, !tbaa !63
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %2024, ptr noundef nonnull align 4 dereferenceable(8) %2025, ptr noundef nonnull align 4 dereferenceable(8) %2026, i32 noundef %2030, float noundef %2031, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #13
  br label %2032

2032:                                             ; preds = %2021, %1987
  %2033 = load ptr, ptr %9, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.ImGuiWindow, ptr %2033, i32 0, i32 5
  %2035 = load ptr, ptr %9, align 8, !tbaa !5
  %2036 = getelementptr inbounds %struct.ImGuiWindow, ptr %2035, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2036, ptr align 8 %2034, i64 8, i1 false), !tbaa.struct !62
  %2037 = load ptr, ptr %9, align 8, !tbaa !5
  %2038 = getelementptr inbounds %struct.ImGuiWindow, ptr %2037, i32 0, i32 3
  %2039 = getelementptr inbounds %struct.ImVec2, ptr %2038, i32 0, i32 0
  %2040 = load float, ptr %2039, align 8, !tbaa !182
  %2041 = load ptr, ptr %9, align 8, !tbaa !5
  %2042 = getelementptr inbounds %struct.ImGuiWindow, ptr %2041, i32 0, i32 14
  %2043 = getelementptr inbounds %struct.ImVec2, ptr %2042, i32 0, i32 0
  %2044 = load float, ptr %2043, align 8, !tbaa !183
  %2045 = fsub float %2040, %2044
  %2046 = load ptr, ptr %9, align 8, !tbaa !5
  %2047 = getelementptr inbounds %struct.ImGuiWindow, ptr %2046, i32 0, i32 9
  %2048 = getelementptr inbounds %struct.ImVec2, ptr %2047, i32 0, i32 0
  %2049 = load float, ptr %2048, align 8, !tbaa !109
  %2050 = fadd float %2045, %2049
  %2051 = load ptr, ptr %9, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.ImGuiWindow, ptr %2051, i32 0, i32 51
  %2053 = getelementptr inbounds %struct.ImRect, ptr %2052, i32 0, i32 0
  %2054 = getelementptr inbounds %struct.ImVec2, ptr %2053, i32 0, i32 0
  store float %2050, ptr %2054, align 8, !tbaa !184
  %2055 = load ptr, ptr %9, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.ImGuiWindow, ptr %2055, i32 0, i32 3
  %2057 = getelementptr inbounds %struct.ImVec2, ptr %2056, i32 0, i32 1
  %2058 = load float, ptr %2057, align 4, !tbaa !174
  %2059 = load ptr, ptr %9, align 8, !tbaa !5
  %2060 = getelementptr inbounds %struct.ImGuiWindow, ptr %2059, i32 0, i32 14
  %2061 = getelementptr inbounds %struct.ImVec2, ptr %2060, i32 0, i32 1
  %2062 = load float, ptr %2061, align 4, !tbaa !185
  %2063 = fsub float %2058, %2062
  %2064 = load ptr, ptr %9, align 8, !tbaa !5
  %2065 = getelementptr inbounds %struct.ImGuiWindow, ptr %2064, i32 0, i32 9
  %2066 = getelementptr inbounds %struct.ImVec2, ptr %2065, i32 0, i32 1
  %2067 = load float, ptr %2066, align 4, !tbaa !186
  %2068 = fadd float %2063, %2067
  %2069 = load ptr, ptr %9, align 8, !tbaa !5
  %2070 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %2069)
  %2071 = fadd float %2068, %2070
  %2072 = load ptr, ptr %9, align 8, !tbaa !5
  %2073 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %2072)
  %2074 = fadd float %2071, %2073
  %2075 = load ptr, ptr %9, align 8, !tbaa !5
  %2076 = getelementptr inbounds %struct.ImGuiWindow, ptr %2075, i32 0, i32 51
  %2077 = getelementptr inbounds %struct.ImRect, ptr %2076, i32 0, i32 0
  %2078 = getelementptr inbounds %struct.ImVec2, ptr %2077, i32 0, i32 1
  store float %2074, ptr %2078, align 4, !tbaa !187
  %2079 = load ptr, ptr %9, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.ImGuiWindow, ptr %2079, i32 0, i32 3
  %2081 = getelementptr inbounds %struct.ImVec2, ptr %2080, i32 0, i32 0
  %2082 = load float, ptr %2081, align 8, !tbaa !182
  %2083 = load ptr, ptr %9, align 8, !tbaa !5
  %2084 = getelementptr inbounds %struct.ImGuiWindow, ptr %2083, i32 0, i32 14
  %2085 = getelementptr inbounds %struct.ImVec2, ptr %2084, i32 0, i32 0
  %2086 = load float, ptr %2085, align 8, !tbaa !183
  %2087 = fsub float %2082, %2086
  %2088 = load ptr, ptr %9, align 8, !tbaa !5
  %2089 = getelementptr inbounds %struct.ImGuiWindow, ptr %2088, i32 0, i32 9
  %2090 = getelementptr inbounds %struct.ImVec2, ptr %2089, i32 0, i32 0
  %2091 = load float, ptr %2090, align 8, !tbaa !109
  %2092 = fsub float %2087, %2091
  %2093 = load ptr, ptr %9, align 8, !tbaa !5
  %2094 = getelementptr inbounds %struct.ImGuiWindow, ptr %2093, i32 0, i32 8
  %2095 = getelementptr inbounds %struct.ImVec2, ptr %2094, i32 0, i32 0
  %2096 = load float, ptr %2095, align 8, !tbaa !188
  %2097 = fcmp une float %2096, 0.000000e+00
  br i1 %2097, label %2098, label %2103

2098:                                             ; preds = %2032
  %2099 = load ptr, ptr %9, align 8, !tbaa !5
  %2100 = getelementptr inbounds %struct.ImGuiWindow, ptr %2099, i32 0, i32 8
  %2101 = getelementptr inbounds %struct.ImVec2, ptr %2100, i32 0, i32 0
  %2102 = load float, ptr %2101, align 8, !tbaa !188
  br label %2113

2103:                                             ; preds = %2032
  %2104 = load ptr, ptr %9, align 8, !tbaa !5
  %2105 = getelementptr inbounds %struct.ImGuiWindow, ptr %2104, i32 0, i32 4
  %2106 = getelementptr inbounds %struct.ImVec2, ptr %2105, i32 0, i32 0
  %2107 = load float, ptr %2106, align 8, !tbaa !101
  %2108 = load ptr, ptr %9, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.ImGuiWindow, ptr %2108, i32 0, i32 17
  %2110 = getelementptr inbounds %struct.ImVec2, ptr %2109, i32 0, i32 0
  %2111 = load float, ptr %2110, align 8, !tbaa !189
  %2112 = fsub float %2107, %2111
  br label %2113

2113:                                             ; preds = %2103, %2098
  %2114 = phi float [ %2102, %2098 ], [ %2112, %2103 ]
  %2115 = fadd float %2092, %2114
  %2116 = load ptr, ptr %9, align 8, !tbaa !5
  %2117 = getelementptr inbounds %struct.ImGuiWindow, ptr %2116, i32 0, i32 51
  %2118 = getelementptr inbounds %struct.ImRect, ptr %2117, i32 0, i32 1
  %2119 = getelementptr inbounds %struct.ImVec2, ptr %2118, i32 0, i32 0
  store float %2115, ptr %2119, align 8, !tbaa !190
  %2120 = load ptr, ptr %9, align 8, !tbaa !5
  %2121 = getelementptr inbounds %struct.ImGuiWindow, ptr %2120, i32 0, i32 3
  %2122 = getelementptr inbounds %struct.ImVec2, ptr %2121, i32 0, i32 1
  %2123 = load float, ptr %2122, align 4, !tbaa !174
  %2124 = load ptr, ptr %9, align 8, !tbaa !5
  %2125 = getelementptr inbounds %struct.ImGuiWindow, ptr %2124, i32 0, i32 14
  %2126 = getelementptr inbounds %struct.ImVec2, ptr %2125, i32 0, i32 1
  %2127 = load float, ptr %2126, align 4, !tbaa !185
  %2128 = fsub float %2123, %2127
  %2129 = load ptr, ptr %9, align 8, !tbaa !5
  %2130 = getelementptr inbounds %struct.ImGuiWindow, ptr %2129, i32 0, i32 9
  %2131 = getelementptr inbounds %struct.ImVec2, ptr %2130, i32 0, i32 1
  %2132 = load float, ptr %2131, align 4, !tbaa !186
  %2133 = fsub float %2128, %2132
  %2134 = load ptr, ptr %9, align 8, !tbaa !5
  %2135 = getelementptr inbounds %struct.ImGuiWindow, ptr %2134, i32 0, i32 8
  %2136 = getelementptr inbounds %struct.ImVec2, ptr %2135, i32 0, i32 1
  %2137 = load float, ptr %2136, align 4, !tbaa !89
  %2138 = fcmp une float %2137, 0.000000e+00
  br i1 %2138, label %2139, label %2144

2139:                                             ; preds = %2113
  %2140 = load ptr, ptr %9, align 8, !tbaa !5
  %2141 = getelementptr inbounds %struct.ImGuiWindow, ptr %2140, i32 0, i32 8
  %2142 = getelementptr inbounds %struct.ImVec2, ptr %2141, i32 0, i32 1
  %2143 = load float, ptr %2142, align 4, !tbaa !89
  br label %2154

2144:                                             ; preds = %2113
  %2145 = load ptr, ptr %9, align 8, !tbaa !5
  %2146 = getelementptr inbounds %struct.ImGuiWindow, ptr %2145, i32 0, i32 4
  %2147 = getelementptr inbounds %struct.ImVec2, ptr %2146, i32 0, i32 1
  %2148 = load float, ptr %2147, align 4, !tbaa !103
  %2149 = load ptr, ptr %9, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.ImGuiWindow, ptr %2149, i32 0, i32 17
  %2151 = getelementptr inbounds %struct.ImVec2, ptr %2150, i32 0, i32 1
  %2152 = load float, ptr %2151, align 4, !tbaa !191
  %2153 = fsub float %2148, %2152
  br label %2154

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

2284:                                             ; preds = %2154
  %2285 = load ptr, ptr %16, align 8, !tbaa !5
  %2286 = getelementptr inbounds %struct.ImGuiWindow, ptr %2285, i32 0, i32 45
  %2287 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2286, i32 0, i32 25
  %2288 = load i32, ptr %2287, align 8, !tbaa !205
  br label %2290

2289:                                             ; preds = %2154
  br label %2290

2290:                                             ; preds = %2289, %2284
  %2291 = phi i32 [ %2288, %2284 ], [ 0, %2289 ]
  %2292 = load ptr, ptr %9, align 8, !tbaa !5
  %2293 = getelementptr inbounds %struct.ImGuiWindow, ptr %2292, i32 0, i32 45
  %2294 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2293, i32 0, i32 26
  store i32 %2291, ptr %2294, align 4, !tbaa !206
  %2295 = load ptr, ptr %16, align 8, !tbaa !5
  %2296 = icmp ne ptr %2295, null
  br i1 %2296, label %2297, label %2302

2297:                                             ; preds = %2290
  %2298 = load ptr, ptr %16, align 8, !tbaa !5
  %2299 = getelementptr inbounds %struct.ImGuiWindow, ptr %2298, i32 0, i32 45
  %2300 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2299, i32 0, i32 27
  %2301 = load i32, ptr %2300, align 8, !tbaa !207
  br label %2303

2302:                                             ; preds = %2290
  br label %2303

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

2354:                                             ; preds = %2303
  %2355 = load ptr, ptr %9, align 8, !tbaa !5
  %2356 = getelementptr inbounds %struct.ImGuiWindow, ptr %2355, i32 0, i32 45
  %2357 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2356, i32 0, i32 27
  %2358 = load i32, ptr %2357, align 8, !tbaa !207
  %2359 = load ptr, ptr %16, align 8, !tbaa !5
  %2360 = getelementptr inbounds %struct.ImGuiWindow, ptr %2359, i32 0, i32 45
  %2361 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2360, i32 0, i32 27
  %2362 = load i32, ptr %2361, align 8, !tbaa !207
  %2363 = icmp ne i32 %2358, %2362
  br i1 %2363, label %2364, label %2378

2364:                                             ; preds = %2354
  %2365 = load ptr, ptr %16, align 8, !tbaa !5
  %2366 = getelementptr inbounds %struct.ImGuiWindow, ptr %2365, i32 0, i32 45
  %2367 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2366, i32 0, i32 27
  %2368 = load i32, ptr %2367, align 8, !tbaa !207
  %2369 = load ptr, ptr %9, align 8, !tbaa !5
  %2370 = getelementptr inbounds %struct.ImGuiWindow, ptr %2369, i32 0, i32 45
  %2371 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2370, i32 0, i32 27
  store i32 %2368, ptr %2371, align 8, !tbaa !207
  %2372 = load ptr, ptr %9, align 8, !tbaa !5
  %2373 = getelementptr inbounds %struct.ImGuiWindow, ptr %2372, i32 0, i32 45
  %2374 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2373, i32 0, i32 30
  %2375 = load ptr, ptr %9, align 8, !tbaa !5
  %2376 = getelementptr inbounds %struct.ImGuiWindow, ptr %2375, i32 0, i32 45
  %2377 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2376, i32 0, i32 27
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %2374, ptr noundef nonnull align 4 dereferenceable(4) %2377)
  br label %2378

2378:                                             ; preds = %2364, %2354, %2303
  %2379 = load ptr, ptr %9, align 8, !tbaa !5
  %2380 = getelementptr inbounds %struct.ImGuiWindow, ptr %2379, i32 0, i32 33
  %2381 = load i32, ptr %2380, align 4, !tbaa !122
  %2382 = icmp sgt i32 %2381, 0
  br i1 %2382, label %2383, label %2388

2383:                                             ; preds = %2378
  %2384 = load ptr, ptr %9, align 8, !tbaa !5
  %2385 = getelementptr inbounds %struct.ImGuiWindow, ptr %2384, i32 0, i32 33
  %2386 = load i32, ptr %2385, align 4, !tbaa !122
  %2387 = add nsw i32 %2386, -1
  store i32 %2387, ptr %2385, align 4, !tbaa !122
  br label %2388

2388:                                             ; preds = %2383, %2378
  %2389 = load ptr, ptr %9, align 8, !tbaa !5
  %2390 = getelementptr inbounds %struct.ImGuiWindow, ptr %2389, i32 0, i32 34
  %2391 = load i32, ptr %2390, align 8, !tbaa !123
  %2392 = icmp sgt i32 %2391, 0
  br i1 %2392, label %2393, label %2398

2393:                                             ; preds = %2388
  %2394 = load ptr, ptr %9, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.ImGuiWindow, ptr %2394, i32 0, i32 34
  %2396 = load i32, ptr %2395, align 8, !tbaa !123
  %2397 = add nsw i32 %2396, -1
  store i32 %2397, ptr %2395, align 8, !tbaa !123
  br label %2398

2398:                                             ; preds = %2393, %2388
  %2399 = load i8, ptr %57, align 1, !tbaa !60, !range !56, !noundef !57
  %2400 = trunc i8 %2399 to i1
  br i1 %2400, label %2401, label %2404

2401:                                             ; preds = %2398
  %2402 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %2402)
  %2403 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %2403, i1 noundef zeroext false)
  br label %2404

2404:                                             ; preds = %2401, %2398
  %2405 = load i32, ptr %6, align 4, !tbaa !9
  %2406 = and i32 %2405, 1
  %2407 = icmp ne i32 %2406, 0
  br i1 %2407, label %2593, label %2408

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

2431:                                             ; preds = %2408
  %2432 = load ptr, ptr %9, align 8, !tbaa !5
  %2433 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984) %2432, ptr noundef @.str.67, ptr noundef null)
  %2434 = load ptr, ptr %9, align 8, !tbaa !5
  %2435 = getelementptr inbounds %struct.ImGuiWindow, ptr %2434, i32 0, i32 3
  %2436 = call noundef zeroext i1 @_ZN5ImGui14CollapseButtonEjRK6ImVec2(i32 noundef %2433, ptr noundef nonnull align 4 dereferenceable(8) %2435)
  br i1 %2436, label %2437, label %2440

2437:                                             ; preds = %2431
  %2438 = load ptr, ptr %9, align 8, !tbaa !5
  %2439 = getelementptr inbounds %struct.ImGuiWindow, ptr %2438, i32 0, i32 24
  store i8 1, ptr %2439, align 2, !tbaa !118
  br label %2440

2440:                                             ; preds = %2437, %2431
  br label %2441

2441:                                             ; preds = %2440, %2408
  %2442 = load ptr, ptr %5, align 8, !tbaa !5
  %2443 = icmp ne ptr %2442, null
  br i1 %2443, label %2444, label %2476

2444:                                             ; preds = %2441
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #13
  %2445 = load ptr, ptr %8, align 8, !tbaa !5
  %2446 = getelementptr inbounds %struct.ImGuiStyle, ptr %2445, i32 0, i32 10
  %2447 = getelementptr inbounds %struct.ImVec2, ptr %2446, i32 0, i32 1
  %2448 = load float, ptr %2447, align 4, !tbaa !216
  store float %2448, ptr %110, align 4, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #13
  %2449 = load ptr, ptr %7, align 8, !tbaa !5
  %2450 = getelementptr inbounds %struct.ImGuiContext, ptr %2449, i32 0, i32 7
  %2451 = load float, ptr %2450, align 8, !tbaa !148
  %2452 = fmul float %2451, 5.000000e-01
  store float %2452, ptr %111, align 4, !tbaa !63
  %2453 = load ptr, ptr %9, align 8, !tbaa !5
  %2454 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984) %2453, ptr noundef @.str.68, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %114) #13
  %2455 = load ptr, ptr %9, align 8, !tbaa !5
  %2456 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(984) %2455)
  %2457 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %114, i32 0, i32 0
  %2458 = extractvalue { <2 x float>, <2 x float> } %2456, 0
  store <2 x float> %2458, ptr %2457, align 4
  %2459 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %114, i32 0, i32 1
  %2460 = extractvalue { <2 x float>, <2 x float> } %2456, 1
  store <2 x float> %2460, ptr %2459, align 4
  %2461 = call <2 x float> @_ZNK6ImRect5GetTREv(ptr noundef nonnull align 4 dereferenceable(16) %114)
  store <2 x float> %2461, ptr %113, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #13
  %2462 = load float, ptr %110, align 4, !tbaa !63
  %2463 = fneg float %2462
  %2464 = load float, ptr %111, align 4, !tbaa !63
  %2465 = fsub float %2463, %2464
  %2466 = load float, ptr %110, align 4, !tbaa !63
  %2467 = load float, ptr %111, align 4, !tbaa !63
  %2468 = fadd float %2466, %2467
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %115, float noundef %2465, float noundef %2468)
  %2469 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %113, ptr noundef nonnull align 4 dereferenceable(8) %115)
  store <2 x float> %2469, ptr %112, align 4
  %2470 = load float, ptr %111, align 4, !tbaa !63
  %2471 = fadd float %2470, 1.000000e+00
  %2472 = call noundef zeroext i1 @_ZN5ImGui11CloseButtonEjRK6ImVec2f(i32 noundef %2454, ptr noundef nonnull align 4 dereferenceable(8) %112, float noundef %2471)
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #13
  call void @llvm.lifetime.end.p0(i64 16, 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
  br i1 %2472, label %2473, label %2475

2473:                                             ; preds = %2444
  %2474 = load ptr, ptr %5, align 8, !tbaa !5
  store i8 0, ptr %2474, align 1, !tbaa !60
  br label %2475

2475:                                             ; preds = %2473, %2444
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #13
  br label %2476

2476:                                             ; preds = %2475, %2441
  %2477 = load ptr, ptr %9, align 8, !tbaa !5
  %2478 = getelementptr inbounds %struct.ImGuiWindow, ptr %2477, i32 0, i32 45
  %2479 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2478, i32 0, i32 17
  %2480 = load i32, ptr %2479, align 8, !tbaa !214
  %2481 = add nsw i32 %2480, -1
  store i32 %2481, ptr %2479, align 8, !tbaa !214
  %2482 = load ptr, ptr %9, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.ImGuiWindow, ptr %2482, i32 0, i32 45
  %2484 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2483, i32 0, i32 18
  %2485 = load i32, ptr %2484, align 4, !tbaa !215
  %2486 = ashr i32 %2485, 1
  store i32 %2486, ptr %2484, align 4, !tbaa !215
  %2487 = load i32, ptr %109, align 4, !tbaa !9
  %2488 = load ptr, ptr %9, align 8, !tbaa !5
  %2489 = getelementptr inbounds %struct.ImGuiWindow, ptr %2488, i32 0, i32 45
  %2490 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2489, i32 0, i32 27
  store i32 %2487, ptr %2490, align 8, !tbaa !207
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #13
  %2491 = load ptr, ptr %4, align 8, !tbaa !5
  %2492 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %2491, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %2492, ptr %116, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %117) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %117, ptr align 4 %71, i64 16, i1 false), !tbaa.struct !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #13
  %2493 = load i32, ptr %6, align 4, !tbaa !9
  %2494 = and i32 %2493, 32
  %2495 = icmp ne i32 %2494, 0
  br i1 %2495, label %2496, label %2501

2496:                                             ; preds = %2476
  %2497 = load ptr, ptr %8, align 8, !tbaa !5
  %2498 = getelementptr inbounds %struct.ImGuiStyle, ptr %2497, i32 0, i32 10
  %2499 = getelementptr inbounds %struct.ImVec2, ptr %2498, i32 0, i32 0
  %2500 = load float, ptr %2499, align 4, !tbaa !217
  br label %2515

2501:                                             ; preds = %2476
  %2502 = load ptr, ptr %8, align 8, !tbaa !5
  %2503 = getelementptr inbounds %struct.ImGuiStyle, ptr %2502, i32 0, i32 10
  %2504 = getelementptr inbounds %struct.ImVec2, ptr %2503, i32 0, i32 0
  %2505 = load float, ptr %2504, align 4, !tbaa !217
  %2506 = load ptr, ptr %7, align 8, !tbaa !5
  %2507 = getelementptr inbounds %struct.ImGuiContext, ptr %2506, i32 0, i32 7
  %2508 = load float, ptr %2507, align 8, !tbaa !148
  %2509 = fadd float %2505, %2508
  %2510 = load ptr, ptr %8, align 8, !tbaa !5
  %2511 = getelementptr inbounds %struct.ImGuiStyle, ptr %2510, i32 0, i32 14
  %2512 = getelementptr inbounds %struct.ImVec2, ptr %2511, i32 0, i32 0
  %2513 = load float, ptr %2512, align 4, !tbaa !218
  %2514 = fadd float %2509, %2513
  br label %2515

2515:                                             ; preds = %2501, %2496
  %2516 = phi float [ %2500, %2496 ], [ %2514, %2501 ]
  store float %2516, ptr %118, align 4, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #13
  %2517 = load ptr, ptr %5, align 8, !tbaa !5
  %2518 = icmp eq ptr %2517, null
  br i1 %2518, label %2519, label %2524

2519:                                             ; preds = %2515
  %2520 = load ptr, ptr %8, align 8, !tbaa !5
  %2521 = getelementptr inbounds %struct.ImGuiStyle, ptr %2520, i32 0, i32 10
  %2522 = getelementptr inbounds %struct.ImVec2, ptr %2521, i32 0, i32 0
  %2523 = load float, ptr %2522, align 4, !tbaa !217
  br label %2538

2524:                                             ; preds = %2515
  %2525 = load ptr, ptr %8, align 8, !tbaa !5
  %2526 = getelementptr inbounds %struct.ImGuiStyle, ptr %2525, i32 0, i32 10
  %2527 = getelementptr inbounds %struct.ImVec2, ptr %2526, i32 0, i32 0
  %2528 = load float, ptr %2527, align 4, !tbaa !217
  %2529 = load ptr, ptr %7, align 8, !tbaa !5
  %2530 = getelementptr inbounds %struct.ImGuiContext, ptr %2529, i32 0, i32 7
  %2531 = load float, ptr %2530, align 8, !tbaa !148
  %2532 = fadd float %2528, %2531
  %2533 = load ptr, ptr %8, align 8, !tbaa !5
  %2534 = getelementptr inbounds %struct.ImGuiStyle, ptr %2533, i32 0, i32 14
  %2535 = getelementptr inbounds %struct.ImVec2, ptr %2534, i32 0, i32 0
  %2536 = load float, ptr %2535, align 4, !tbaa !218
  %2537 = fadd float %2532, %2536
  br label %2538

2538:                                             ; preds = %2524, %2519
  %2539 = phi float [ %2523, %2519 ], [ %2537, %2524 ]
  store float %2539, ptr %119, align 4, !tbaa !63
  %2540 = load ptr, ptr %8, align 8, !tbaa !5
  %2541 = getelementptr inbounds %struct.ImGuiStyle, ptr %2540, i32 0, i32 5
  %2542 = getelementptr inbounds %struct.ImVec2, ptr %2541, i32 0, i32 0
  %2543 = load float, ptr %2542, align 4, !tbaa !219
  %2544 = fcmp ogt float %2543, 0.000000e+00
  br i1 %2544, label %2545, label %2553

2545:                                             ; preds = %2538
  %2546 = load float, ptr %119, align 4, !tbaa !63
  %2547 = load float, ptr %118, align 4, !tbaa !63
  %2548 = load ptr, ptr %8, align 8, !tbaa !5
  %2549 = getelementptr inbounds %struct.ImGuiStyle, ptr %2548, i32 0, i32 5
  %2550 = getelementptr inbounds %struct.ImVec2, ptr %2549, i32 0, i32 0
  %2551 = load float, ptr %2550, align 4, !tbaa !219
  %2552 = call noundef float @_ZL6ImLerpIfET_S0_S0_f(float noundef %2546, float noundef %2547, float noundef %2551)
  store float %2552, ptr %119, align 4, !tbaa !63
  br label %2553

2553:                                             ; preds = %2545, %2538
  %2554 = load float, ptr %118, align 4, !tbaa !63
  %2555 = getelementptr inbounds %struct.ImRect, ptr %117, i32 0, i32 0
  %2556 = getelementptr inbounds %struct.ImVec2, ptr %2555, i32 0, i32 0
  %2557 = load float, ptr %2556, align 4, !tbaa !220
  %2558 = fadd float %2557, %2554
  store float %2558, ptr %2556, align 4, !tbaa !220
  %2559 = load float, ptr %119, align 4, !tbaa !63
  %2560 = getelementptr inbounds %struct.ImRect, ptr %117, i32 0, i32 1
  %2561 = getelementptr inbounds %struct.ImVec2, ptr %2560, i32 0, i32 0
  %2562 = load float, ptr %2561, align 4, !tbaa !221
  %2563 = fsub float %2562, %2559
  store float %2563, ptr %2561, align 4, !tbaa !221
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %120, ptr align 4 %117, i64 16, i1 false), !tbaa.struct !98
  %2564 = load ptr, ptr %9, align 8, !tbaa !5
  %2565 = getelementptr inbounds %struct.ImGuiWindow, ptr %2564, i32 0, i32 3
  %2566 = getelementptr inbounds %struct.ImVec2, ptr %2565, i32 0, i32 0
  %2567 = load float, ptr %2566, align 8, !tbaa !182
  %2568 = load ptr, ptr %9, align 8, !tbaa !5
  %2569 = getelementptr inbounds %struct.ImGuiWindow, ptr %2568, i32 0, i32 4
  %2570 = getelementptr inbounds %struct.ImVec2, ptr %2569, i32 0, i32 0
  %2571 = load float, ptr %2570, align 8, !tbaa !101
  %2572 = fadd float %2567, %2571
  %2573 = load ptr, ptr %5, align 8, !tbaa !5
  %2574 = icmp ne ptr %2573, null
  br i1 %2574, label %2575, label %2578

2575:                                             ; preds = %2553
  %2576 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %71)
  %2577 = fsub float %2576, 3.000000e+00
  br label %2583

2578:                                             ; preds = %2553
  %2579 = load ptr, ptr %8, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.ImGuiStyle, ptr %2579, i32 0, i32 10
  %2581 = getelementptr inbounds %struct.ImVec2, ptr %2580, i32 0, i32 0
  %2582 = load float, ptr %2581, align 4, !tbaa !217
  br label %2583

2583:                                             ; preds = %2578, %2575
  %2584 = phi float [ %2577, %2575 ], [ %2582, %2578 ]
  %2585 = fsub float %2572, %2584
  %2586 = getelementptr inbounds %struct.ImRect, ptr %120, i32 0, i32 1
  %2587 = getelementptr inbounds %struct.ImVec2, ptr %2586, i32 0, i32 0
  store float %2585, ptr %2587, align 4, !tbaa !221
  %2588 = getelementptr inbounds %struct.ImRect, ptr %117, i32 0, i32 0
  %2589 = getelementptr inbounds %struct.ImRect, ptr %117, i32 0, i32 1
  %2590 = load ptr, ptr %4, align 8, !tbaa !5
  %2591 = load ptr, ptr %8, align 8, !tbaa !5
  %2592 = getelementptr inbounds %struct.ImGuiStyle, ptr %2591, i32 0, i32 5
  call void @_ZN5ImGui17RenderTextClippedERK6ImVec2S2_PKcS4_PS1_S2_PK6ImRect(ptr noundef nonnull align 4 dereferenceable(8) %2588, ptr noundef nonnull align 4 dereferenceable(8) %2589, ptr noundef %2590, ptr noundef null, ptr noundef %116, ptr noundef nonnull align 4 dereferenceable(8) %2592, ptr noundef %120)
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %117) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #13
  br label %2593

2593:                                             ; preds = %2583, %2404
  call void @llvm.lifetime.start.p0(i64 16, ptr %121) #13
  %2594 = load ptr, ptr %9, align 8, !tbaa !5
  %2595 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(984) %2594)
  %2596 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %121, i32 0, i32 0
  %2597 = extractvalue { <2 x float>, <2 x float> } %2595, 0
  store <2 x float> %2597, ptr %2596, align 4
  %2598 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %121, i32 0, i32 1
  %2599 = extractvalue { <2 x float>, <2 x float> } %2595, 1
  store <2 x float> %2599, ptr %2598, align 4
  %2600 = load ptr, ptr %9, align 8, !tbaa !5
  %2601 = getelementptr inbounds %struct.ImGuiWindow, ptr %2600, i32 0, i32 48
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2601, ptr align 4 %121, i64 16, i1 false), !tbaa.struct !98
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #13
  %2602 = load ptr, ptr %9, align 8, !tbaa !5
  %2603 = getelementptr inbounds %struct.ImGuiWindow, ptr %2602, i32 0, i32 48
  %2604 = load ptr, ptr %9, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.ImGuiWindow, ptr %2604, i32 0, i32 47
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2603, ptr noundef nonnull align 4 dereferenceable(16) %2605)
  %2606 = getelementptr inbounds %struct.ImRect, ptr %71, i32 0, i32 0
  %2607 = getelementptr inbounds %struct.ImVec2, ptr %2606, i32 0, i32 0
  %2608 = load float, ptr %2607, align 4, !tbaa !220
  %2609 = load ptr, ptr %9, align 8, !tbaa !5
  %2610 = getelementptr inbounds %struct.ImGuiWindow, ptr %2609, i32 0, i32 11
  %2611 = load float, ptr %2610, align 4, !tbaa !107
  %2612 = fadd float %2608, %2611
  %2613 = load ptr, ptr %9, align 8, !tbaa !5
  %2614 = getelementptr inbounds %struct.ImGuiWindow, ptr %2613, i32 0, i32 49
  %2615 = getelementptr inbounds %struct.ImRect, ptr %2614, i32 0, i32 0
  %2616 = getelementptr inbounds %struct.ImVec2, ptr %2615, i32 0, i32 0
  store float %2612, ptr %2616, align 8, !tbaa !222
  %2617 = getelementptr inbounds %struct.ImRect, ptr %71, i32 0, i32 1
  %2618 = getelementptr inbounds %struct.ImVec2, ptr %2617, i32 0, i32 1
  %2619 = load float, ptr %2618, align 4, !tbaa !173
  %2620 = load ptr, ptr %9, align 8, !tbaa !5
  %2621 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %2620)
  %2622 = fadd float %2619, %2621
  %2623 = load i32, ptr %6, align 4, !tbaa !9
  %2624 = and i32 %2623, 1024
  %2625 = icmp ne i32 %2624, 0
  br i1 %2625, label %2630, label %2626

2626:                                             ; preds = %2593
  %2627 = load i32, ptr %6, align 4, !tbaa !9
  %2628 = and i32 %2627, 1
  %2629 = icmp ne i32 %2628, 0
  br i1 %2629, label %2634, label %2630

2630:                                             ; preds = %2626, %2593
  %2631 = load ptr, ptr %8, align 8, !tbaa !5
  %2632 = getelementptr inbounds %struct.ImGuiStyle, ptr %2631, i32 0, i32 12
  %2633 = load float, ptr %2632, align 4, !tbaa !168
  br label %2638

2634:                                             ; preds = %2626
  %2635 = load ptr, ptr %9, align 8, !tbaa !5
  %2636 = getelementptr inbounds %struct.ImGuiWindow, ptr %2635, i32 0, i32 11
  %2637 = load float, ptr %2636, align 4, !tbaa !107
  br label %2638

2638:                                             ; preds = %2634, %2630
  %2639 = phi float [ %2633, %2630 ], [ %2637, %2634 ]
  %2640 = fadd float %2622, %2639
  %2641 = load ptr, ptr %9, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.ImGuiWindow, ptr %2641, i32 0, i32 49
  %2643 = getelementptr inbounds %struct.ImRect, ptr %2642, i32 0, i32 0
  %2644 = getelementptr inbounds %struct.ImVec2, ptr %2643, i32 0, i32 1
  store float %2640, ptr %2644, align 4, !tbaa !223
  %2645 = load ptr, ptr %9, align 8, !tbaa !5
  %2646 = getelementptr inbounds %struct.ImGuiWindow, ptr %2645, i32 0, i32 3
  %2647 = getelementptr inbounds %struct.ImVec2, ptr %2646, i32 0, i32 0
  %2648 = load float, ptr %2647, align 8, !tbaa !182
  %2649 = load ptr, ptr %9, align 8, !tbaa !5
  %2650 = getelementptr inbounds %struct.ImGuiWindow, ptr %2649, i32 0, i32 4
  %2651 = getelementptr inbounds %struct.ImVec2, ptr %2650, i32 0, i32 0
  %2652 = load float, ptr %2651, align 8, !tbaa !101
  %2653 = fadd float %2648, %2652
  %2654 = load ptr, ptr %9, align 8, !tbaa !5
  %2655 = getelementptr inbounds %struct.ImGuiWindow, ptr %2654, i32 0, i32 17
  %2656 = getelementptr inbounds %struct.ImVec2, ptr %2655, i32 0, i32 0
  %2657 = load float, ptr %2656, align 8, !tbaa !189
  %2658 = fsub float %2653, %2657
  %2659 = load ptr, ptr %9, align 8, !tbaa !5
  %2660 = getelementptr inbounds %struct.ImGuiWindow, ptr %2659, i32 0, i32 11
  %2661 = load float, ptr %2660, align 4, !tbaa !107
  %2662 = fsub float %2658, %2661
  %2663 = load ptr, ptr %9, align 8, !tbaa !5
  %2664 = getelementptr inbounds %struct.ImGuiWindow, ptr %2663, i32 0, i32 49
  %2665 = getelementptr inbounds %struct.ImRect, ptr %2664, i32 0, i32 1
  %2666 = getelementptr inbounds %struct.ImVec2, ptr %2665, i32 0, i32 0
  store float %2662, ptr %2666, align 8, !tbaa !224
  %2667 = load ptr, ptr %9, align 8, !tbaa !5
  %2668 = getelementptr inbounds %struct.ImGuiWindow, ptr %2667, i32 0, i32 3
  %2669 = getelementptr inbounds %struct.ImVec2, ptr %2668, i32 0, i32 1
  %2670 = load float, ptr %2669, align 4, !tbaa !174
  %2671 = load ptr, ptr %9, align 8, !tbaa !5
  %2672 = getelementptr inbounds %struct.ImGuiWindow, ptr %2671, i32 0, i32 4
  %2673 = getelementptr inbounds %struct.ImVec2, ptr %2672, i32 0, i32 1
  %2674 = load float, ptr %2673, align 4, !tbaa !103
  %2675 = fadd float %2670, %2674
  %2676 = load ptr, ptr %9, align 8, !tbaa !5
  %2677 = getelementptr inbounds %struct.ImGuiWindow, ptr %2676, i32 0, i32 17
  %2678 = getelementptr inbounds %struct.ImVec2, ptr %2677, i32 0, i32 1
  %2679 = load float, ptr %2678, align 4, !tbaa !191
  %2680 = fsub float %2675, %2679
  %2681 = load ptr, ptr %9, align 8, !tbaa !5
  %2682 = getelementptr inbounds %struct.ImGuiWindow, ptr %2681, i32 0, i32 11
  %2683 = load float, ptr %2682, align 4, !tbaa !107
  %2684 = fsub float %2680, %2683
  %2685 = load ptr, ptr %9, align 8, !tbaa !5
  %2686 = getelementptr inbounds %struct.ImGuiWindow, ptr %2685, i32 0, i32 49
  %2687 = getelementptr inbounds %struct.ImRect, ptr %2686, i32 0, i32 1
  %2688 = getelementptr inbounds %struct.ImVec2, ptr %2687, i32 0, i32 1
  store float %2684, ptr %2688, align 4, !tbaa !225
  %2689 = load ptr, ptr %9, align 8, !tbaa !5
  %2690 = getelementptr inbounds %struct.ImGuiWindow, ptr %2689, i32 0, i32 49
  %2691 = getelementptr inbounds %struct.ImRect, ptr %2690, i32 0, i32 0
  %2692 = getelementptr inbounds %struct.ImVec2, ptr %2691, i32 0, i32 0
  %2693 = load float, ptr %2692, align 8, !tbaa !222
  %2694 = fadd float 5.000000e-01, %2693
  %2695 = load ptr, ptr %9, align 8, !tbaa !5
  %2696 = getelementptr inbounds %struct.ImGuiWindow, ptr %2695, i32 0, i32 9
  %2697 = getelementptr inbounds %struct.ImVec2, ptr %2696, i32 0, i32 0
  %2698 = load float, ptr %2697, align 8, !tbaa !109
  %2699 = load ptr, ptr %9, align 8, !tbaa !5
  %2700 = getelementptr inbounds %struct.ImGuiWindow, ptr %2699, i32 0, i32 11
  %2701 = load float, ptr %2700, align 4, !tbaa !107
  %2702 = fneg float %2701
  %2703 = call float @llvm.fmuladd.f32(float %2698, float 5.000000e-01, float %2702)
  %2704 = call noundef float @_ZL7ImFloorf(float noundef %2703)
  %2705 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2704)
  %2706 = fadd float %2694, %2705
  %2707 = call noundef float @_ZL7ImFloorf(float noundef %2706)
  %2708 = load ptr, ptr %9, align 8, !tbaa !5
  %2709 = getelementptr inbounds %struct.ImGuiWindow, ptr %2708, i32 0, i32 50
  %2710 = getelementptr inbounds %struct.ImRect, ptr %2709, i32 0, i32 0
  %2711 = getelementptr inbounds %struct.ImVec2, ptr %2710, i32 0, i32 0
  store float %2707, ptr %2711, align 8, !tbaa !226
  %2712 = load ptr, ptr %9, align 8, !tbaa !5
  %2713 = getelementptr inbounds %struct.ImGuiWindow, ptr %2712, i32 0, i32 49
  %2714 = getelementptr inbounds %struct.ImRect, ptr %2713, i32 0, i32 0
  %2715 = getelementptr inbounds %struct.ImVec2, ptr %2714, i32 0, i32 1
  %2716 = load float, ptr %2715, align 4, !tbaa !223
  %2717 = fadd float 5.000000e-01, %2716
  %2718 = call noundef float @_ZL7ImFloorf(float noundef %2717)
  %2719 = load ptr, ptr %9, align 8, !tbaa !5
  %2720 = getelementptr inbounds %struct.ImGuiWindow, ptr %2719, i32 0, i32 50
  %2721 = getelementptr inbounds %struct.ImRect, ptr %2720, i32 0, i32 0
  %2722 = getelementptr inbounds %struct.ImVec2, ptr %2721, i32 0, i32 1
  store float %2718, ptr %2722, align 4, !tbaa !227
  %2723 = load ptr, ptr %9, align 8, !tbaa !5
  %2724 = getelementptr inbounds %struct.ImGuiWindow, ptr %2723, i32 0, i32 49
  %2725 = getelementptr inbounds %struct.ImRect, ptr %2724, i32 0, i32 1
  %2726 = getelementptr inbounds %struct.ImVec2, ptr %2725, i32 0, i32 0
  %2727 = load float, ptr %2726, align 8, !tbaa !224
  %2728 = fadd float 5.000000e-01, %2727
  %2729 = load ptr, ptr %9, align 8, !tbaa !5
  %2730 = getelementptr inbounds %struct.ImGuiWindow, ptr %2729, i32 0, i32 9
  %2731 = getelementptr inbounds %struct.ImVec2, ptr %2730, i32 0, i32 0
  %2732 = load float, ptr %2731, align 8, !tbaa !109
  %2733 = load ptr, ptr %9, align 8, !tbaa !5
  %2734 = getelementptr inbounds %struct.ImGuiWindow, ptr %2733, i32 0, i32 11
  %2735 = load float, ptr %2734, align 4, !tbaa !107
  %2736 = fneg float %2735
  %2737 = call float @llvm.fmuladd.f32(float %2732, float 5.000000e-01, float %2736)
  %2738 = call noundef float @_ZL7ImFloorf(float noundef %2737)
  %2739 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2738)
  %2740 = fsub float %2728, %2739
  %2741 = call noundef float @_ZL7ImFloorf(float noundef %2740)
  %2742 = load ptr, ptr %9, align 8, !tbaa !5
  %2743 = getelementptr inbounds %struct.ImGuiWindow, ptr %2742, i32 0, i32 50
  %2744 = getelementptr inbounds %struct.ImRect, ptr %2743, i32 0, i32 1
  %2745 = getelementptr inbounds %struct.ImVec2, ptr %2744, i32 0, i32 0
  store float %2741, ptr %2745, align 8, !tbaa !228
  %2746 = load ptr, ptr %9, align 8, !tbaa !5
  %2747 = getelementptr inbounds %struct.ImGuiWindow, ptr %2746, i32 0, i32 49
  %2748 = getelementptr inbounds %struct.ImRect, ptr %2747, i32 0, i32 1
  %2749 = getelementptr inbounds %struct.ImVec2, ptr %2748, i32 0, i32 1
  %2750 = load float, ptr %2749, align 4, !tbaa !225
  %2751 = fadd float 5.000000e-01, %2750
  %2752 = call noundef float @_ZL7ImFloorf(float noundef %2751)
  %2753 = load ptr, ptr %9, align 8, !tbaa !5
  %2754 = getelementptr inbounds %struct.ImGuiWindow, ptr %2753, i32 0, i32 50
  %2755 = getelementptr inbounds %struct.ImRect, ptr %2754, i32 0, i32 1
  %2756 = getelementptr inbounds %struct.ImVec2, ptr %2755, i32 0, i32 1
  store float %2752, ptr %2756, align 4, !tbaa !229
  %2757 = load ptr, ptr %9, align 8, !tbaa !5
  %2758 = getelementptr inbounds %struct.ImGuiWindow, ptr %2757, i32 0, i32 12
  %2759 = load i32, ptr %2758, align 8, !tbaa !230
  %2760 = load ptr, ptr %9, align 8, !tbaa !5
  %2761 = getelementptr inbounds %struct.ImGuiWindow, ptr %2760, i32 0, i32 45
  %2762 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2761, i32 0, i32 11
  store i32 %2759, ptr %2762, align 4, !tbaa !231
  %2763 = getelementptr inbounds %struct.ImRect, ptr %71, i32 0, i32 0
  %2764 = getelementptr inbounds %struct.ImRect, ptr %71, i32 0, i32 1
  %2765 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2763, ptr noundef nonnull align 4 dereferenceable(8) %2764, i1 noundef zeroext false)
  %2766 = zext i1 %2765 to i64
  %2767 = select i1 %2765, i32 1, i32 0
  %2768 = load ptr, ptr %9, align 8, !tbaa !5
  %2769 = getelementptr inbounds %struct.ImGuiWindow, ptr %2768, i32 0, i32 45
  %2770 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2769, i32 0, i32 12
  store i32 %2767, ptr %2770, align 8, !tbaa !232
  %2771 = load ptr, ptr %9, align 8, !tbaa !5
  %2772 = getelementptr inbounds %struct.ImGuiWindow, ptr %2771, i32 0, i32 45
  %2773 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2772, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2773, ptr align 4 %71, i64 16, i1 false), !tbaa.struct !98
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #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 %2774

2774:                                             ; preds = %2638, %534
  %2775 = load ptr, ptr %9, align 8, !tbaa !5
  %2776 = getelementptr inbounds %struct.ImGuiWindow, ptr %2775, i32 0, i32 50
  %2777 = getelementptr inbounds %struct.ImRect, ptr %2776, i32 0, i32 0
  %2778 = load ptr, ptr %9, align 8, !tbaa !5
  %2779 = getelementptr inbounds %struct.ImGuiWindow, ptr %2778, i32 0, i32 50
  %2780 = getelementptr inbounds %struct.ImRect, ptr %2779, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2777, ptr noundef nonnull align 4 dereferenceable(8) %2780, i1 noundef zeroext true)
  %2781 = load i8, ptr %14, align 1, !tbaa !60, !range !56, !noundef !57
  %2782 = trunc i8 %2781 to i1
  br i1 %2782, label %2783, label %2786

2783:                                             ; preds = %2774
  %2784 = load ptr, ptr %9, align 8, !tbaa !5
  %2785 = getelementptr inbounds %struct.ImGuiWindow, ptr %2784, i32 0, i32 22
  store i8 0, ptr %2785, align 4, !tbaa !233
  br label %2786

2786:                                             ; preds = %2783, %2774
  %2787 = load ptr, ptr %9, align 8, !tbaa !5
  %2788 = getelementptr inbounds %struct.ImGuiWindow, ptr %2787, i32 0, i32 29
  %2789 = load i32, ptr %2788, align 4, !tbaa !97
  %2790 = add nsw i32 %2789, 1
  store i32 %2790, ptr %2788, align 4, !tbaa !97
  %2791 = load ptr, ptr %7, align 8, !tbaa !5
  %2792 = getelementptr inbounds %struct.ImGuiContext, ptr %2791, i32 0, i32 55
  call void @_ZN19ImGuiNextWindowData5ClearEv(ptr noundef nonnull align 8 dereferenceable(108) %2792)
  %2793 = load i32, ptr %6, align 4, !tbaa !9
  %2794 = and i32 %2793, 16777216
  %2795 = icmp ne i32 %2794, 0
  br i1 %2795, label %2796, label %2862

2796:                                             ; preds = %2786
  %2797 = load i32, ptr %6, align 4, !tbaa !9
  %2798 = and i32 %2797, 1
  %2799 = icmp ne i32 %2798, 0
  br i1 %2799, label %2800, label %2801

2800:                                             ; preds = %2796
  br label %2803

2801:                                             ; preds = %2796
  call void @__assert_fail(ptr noundef @.str.69, ptr noundef @.str.3, i32 noundef 5071, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

2802:                                             ; No predecessors!
  br label %2803

2803:                                             ; preds = %2802, %2800
  %2804 = load i32, ptr %6, align 4, !tbaa !9
  %2805 = and i32 %2804, 64
  %2806 = icmp ne i32 %2805, 0
  br i1 %2806, label %2845, label %2807

2807:                                             ; preds = %2803
  %2808 = load ptr, ptr %9, align 8, !tbaa !5
  %2809 = getelementptr inbounds %struct.ImGuiWindow, ptr %2808, i32 0, i32 33
  %2810 = load i32, ptr %2809, align 4, !tbaa !122
  %2811 = icmp sle i32 %2810, 0
  br i1 %2811, label %2812, label %2845

2812:                                             ; preds = %2807
  %2813 = load ptr, ptr %9, align 8, !tbaa !5
  %2814 = getelementptr inbounds %struct.ImGuiWindow, ptr %2813, i32 0, i32 34
  %2815 = load i32, ptr %2814, align 8, !tbaa !123
  %2816 = icmp sle i32 %2815, 0
  br i1 %2816, label %2817, label %2845

2817:                                             ; preds = %2812
  %2818 = load ptr, ptr %9, align 8, !tbaa !5
  %2819 = getelementptr inbounds %struct.ImGuiWindow, ptr %2818, i32 0, i32 48
  %2820 = getelementptr inbounds %struct.ImRect, ptr %2819, i32 0, i32 0
  %2821 = getelementptr inbounds %struct.ImVec2, ptr %2820, i32 0, i32 0
  %2822 = load float, ptr %2821, align 8, !tbaa !234
  %2823 = load ptr, ptr %9, align 8, !tbaa !5
  %2824 = getelementptr inbounds %struct.ImGuiWindow, ptr %2823, i32 0, i32 48
  %2825 = getelementptr inbounds %struct.ImRect, ptr %2824, i32 0, i32 1
  %2826 = getelementptr inbounds %struct.ImVec2, ptr %2825, i32 0, i32 0
  %2827 = load float, ptr %2826, align 8, !tbaa !235
  %2828 = fcmp oge float %2822, %2827
  br i1 %2828, label %2841, label %2829

2829:                                             ; preds = %2817
  %2830 = load ptr, ptr %9, align 8, !tbaa !5
  %2831 = getelementptr inbounds %struct.ImGuiWindow, ptr %2830, i32 0, i32 48
  %2832 = getelementptr inbounds %struct.ImRect, ptr %2831, i32 0, i32 0
  %2833 = getelementptr inbounds %struct.ImVec2, ptr %2832, i32 0, i32 1
  %2834 = load float, ptr %2833, align 4, !tbaa !236
  %2835 = load ptr, ptr %9, align 8, !tbaa !5
  %2836 = getelementptr inbounds %struct.ImGuiWindow, ptr %2835, i32 0, i32 48
  %2837 = getelementptr inbounds %struct.ImRect, ptr %2836, i32 0, i32 1
  %2838 = getelementptr inbounds %struct.ImVec2, ptr %2837, i32 0, i32 1
  %2839 = load float, ptr %2838, align 4, !tbaa !237
  %2840 = fcmp oge float %2834, %2839
  br i1 %2840, label %2841, label %2844

2841:                                             ; preds = %2829, %2817
  %2842 = load ptr, ptr %9, align 8, !tbaa !5
  %2843 = getelementptr inbounds %struct.ImGuiWindow, ptr %2842, i32 0, i32 38
  store i32 1, ptr %2843, align 8, !tbaa !99
  br label %2844

2844:                                             ; preds = %2841, %2829
  br label %2845

2845:                                             ; preds = %2844, %2812, %2807, %2803
  %2846 = load ptr, ptr %16, align 8, !tbaa !5
  %2847 = icmp ne ptr %2846, null
  br i1 %2847, label %2848, label %2861

2848:                                             ; preds = %2845
  %2849 = load ptr, ptr %16, align 8, !tbaa !5
  %2850 = getelementptr inbounds %struct.ImGuiWindow, ptr %2849, i32 0, i32 23
  %2851 = load i8, ptr %2850, align 1, !tbaa !119, !range !56, !noundef !57
  %2852 = trunc i8 %2851 to i1
  br i1 %2852, label %2858, label %2853

2853:                                             ; preds = %2848
  %2854 = load ptr, ptr %16, align 8, !tbaa !5
  %2855 = getelementptr inbounds %struct.ImGuiWindow, ptr %2854, i32 0, i32 27
  %2856 = load i8, ptr %2855, align 1, !tbaa !238, !range !56, !noundef !57
  %2857 = trunc i8 %2856 to i1
  br i1 %2857, label %2858, label %2861

2858:                                             ; preds = %2853, %2848
  %2859 = load ptr, ptr %9, align 8, !tbaa !5
  %2860 = getelementptr inbounds %struct.ImGuiWindow, ptr %2859, i32 0, i32 38
  store i32 1, ptr %2860, align 8, !tbaa !99
  br label %2861

2861:                                             ; preds = %2858, %2853, %2845
  br label %2862

2862:                                             ; preds = %2861, %2786
  %2863 = load ptr, ptr %8, align 8, !tbaa !5
  %2864 = getelementptr inbounds %struct.ImGuiStyle, ptr %2863, i32 0, i32 0
  %2865 = load float, ptr %2864, align 4, !tbaa !239
  %2866 = fcmp ole float %2865, 0.000000e+00
  br i1 %2866, label %2867, label %2870

2867:                                             ; preds = %2862
  %2868 = load ptr, ptr %9, align 8, !tbaa !5
  %2869 = getelementptr inbounds %struct.ImGuiWindow, ptr %2868, i32 0, i32 38
  store i32 1, ptr %2869, align 8, !tbaa !99
  br label %2870

2870:                                             ; preds = %2867, %2862
  %2871 = load ptr, ptr %9, align 8, !tbaa !5
  %2872 = getelementptr inbounds %struct.ImGuiWindow, ptr %2871, i32 0, i32 38
  %2873 = load i32, ptr %2872, align 8, !tbaa !99
  %2874 = icmp sgt i32 %2873, 0
  br i1 %2874, label %2880, label %2875

2875:                                             ; preds = %2870
  %2876 = load ptr, ptr %9, align 8, !tbaa !5
  %2877 = getelementptr inbounds %struct.ImGuiWindow, ptr %2876, i32 0, i32 39
  %2878 = load i32, ptr %2877, align 4, !tbaa !76
  %2879 = icmp ne i32 %2878, 0
  br label %2880

2880:                                             ; preds = %2875, %2870
  %2881 = phi i1 [ true, %2870 ], [ %2879, %2875 ]
  %2882 = load ptr, ptr %9, align 8, !tbaa !5
  %2883 = getelementptr inbounds %struct.ImGuiWindow, ptr %2882, i32 0, i32 27
  %2884 = zext i1 %2881 to i8
  store i8 %2884, ptr %2883, align 1, !tbaa !238
  %2885 = load ptr, ptr %9, align 8, !tbaa !5
  %2886 = getelementptr inbounds %struct.ImGuiWindow, ptr %2885, i32 0, i32 23
  %2887 = load i8, ptr %2886, align 1, !tbaa !119, !range !56, !noundef !57
  %2888 = trunc i8 %2887 to i1
  br i1 %2888, label %2899, label %2889

2889:                                             ; preds = %2880
  %2890 = load ptr, ptr %9, align 8, !tbaa !5
  %2891 = getelementptr inbounds %struct.ImGuiWindow, ptr %2890, i32 0, i32 20
  %2892 = load i8, ptr %2891, align 2, !tbaa !93, !range !56, !noundef !57
  %2893 = trunc i8 %2892 to i1
  br i1 %2893, label %2894, label %2899

2894:                                             ; preds = %2889
  %2895 = load ptr, ptr %9, align 8, !tbaa !5
  %2896 = getelementptr inbounds %struct.ImGuiWindow, ptr %2895, i32 0, i32 27
  %2897 = load i8, ptr %2896, align 1, !tbaa !238, !range !56, !noundef !57
  %2898 = trunc i8 %2897 to i1
  br i1 %2898, label %2899, label %2914

2899:                                             ; preds = %2894, %2889, %2880
  %2900 = load ptr, ptr %9, align 8, !tbaa !5
  %2901 = getelementptr inbounds %struct.ImGuiWindow, ptr %2900, i32 0, i32 33
  %2902 = load i32, ptr %2901, align 4, !tbaa !122
  %2903 = icmp sle i32 %2902, 0
  br i1 %2903, label %2904, label %2914

2904:                                             ; preds = %2899
  %2905 = load ptr, ptr %9, align 8, !tbaa !5
  %2906 = getelementptr inbounds %struct.ImGuiWindow, ptr %2905, i32 0, i32 34
  %2907 = load i32, ptr %2906, align 8, !tbaa !123
  %2908 = icmp sle i32 %2907, 0
  br i1 %2908, label %2909, label %2914

2909:                                             ; preds = %2904
  %2910 = load ptr, ptr %9, align 8, !tbaa !5
  %2911 = getelementptr inbounds %struct.ImGuiWindow, ptr %2910, i32 0, i32 39
  %2912 = load i32, ptr %2911, align 4, !tbaa !76
  %2913 = icmp sle i32 %2912, 0
  br label %2914

2914:                                             ; preds = %2909, %2904, %2899, %2894
  %2915 = phi i1 [ false, %2904 ], [ false, %2899 ], [ false, %2894 ], [ %2913, %2909 ]
  %2916 = load ptr, ptr %9, align 8, !tbaa !5
  %2917 = getelementptr inbounds %struct.ImGuiWindow, ptr %2916, i32 0, i32 25
  %2918 = zext i1 %2915 to i8
  store i8 %2918, ptr %2917, align 1, !tbaa !240
  %2919 = load ptr, ptr %9, align 8, !tbaa !5
  %2920 = getelementptr inbounds %struct.ImGuiWindow, ptr %2919, i32 0, i32 25
  %2921 = load i8, ptr %2920, align 1, !tbaa !240, !range !56, !noundef !57
  %2922 = trunc i8 %2921 to i1
  %2923 = xor i1 %2922, 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 1, ptr %18) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #13
  call void @llvm.lifetime.end.p0(i64 8, 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 %2923
}

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

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

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

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

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

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

; 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: mustprogress nounwind uwtable
declare hidden void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef, i32 noundef, i1 noundef zeroext) #1

; 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 uwtable
declare hidden void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef) #8

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

; 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 uwtable
declare hidden void @_ZL13SetWindowSizeP11ImGuiWindowRK6ImVec2i(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) #8

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef) #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() #8

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

declare void @_ZN5ImGui9ScrollbarEi(i32 noundef) #10

; 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> } @_ZL19GetResizeBorderRectP11ImGuiWindowiff(ptr noundef, i32 noundef, float noundef, float noundef) #9

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN5ImGui14CollapseButtonEjRK6ImVec2(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8)) #10

declare noundef zeroext i1 @_ZN5ImGui11CloseButtonEjRK6ImVec2f(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), float noundef) #10

; 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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 #8 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 1}
!12 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !13, i64 2, !14, i64 8, !17, i64 5440, !6, i64 6280, !16, i64 6288, !16, i64 6292, !18, i64 6296, !20, i64 6432, !10, i64 6440, !10, i64 6444, !10, i64 6448, !21, i64 6456, !21, i64 6472, !21, i64 6488, !21, i64 6504, !22, i64 6520, !10, i64 6536, !6, i64 6544, !6, i64 6552, !6, i64 6560, !10, i64 6568, !13, i64 6572, !10, i64 6576, !16, i64 6580, !10, i64 6584, !10, i64 6588, !10, i64 6592, !16, i64 6596, !13, i64 6600, !13, i64 6601, !13, i64 6602, !13, i64 6603, !13, i64 6604, !10, i64 6608, !15, i64 6612, !6, i64 6624, !6, i64 6632, !24, i64 6640, !10, i64 6644, !16, i64 6648, !6, i64 6656, !25, i64 6664, !26, i64 6680, !27, i64 6696, !28, i64 6712, !28, i64 6728, !29, i64 6744, !13, i64 6856, !10, i64 6860, !6, i64 6864, !10, i64 6872, !10, i64 6876, !10, i64 6880, !10, i64 6884, !10, i64 6888, !10, i64 6892, !10, i64 6896, !10, i64 6900, !24, i64 6904, !30, i64 6908, !10, i64 6924, !6, i64 6928, !6, i64 6936, !6, i64 6944, !16, i64 6952, !16, i64 6956, !13, i64 6960, !10, i64 6964, !10, i64 6968, !13, i64 6972, !13, i64 6973, !13, i64 6974, !13, i64 6975, !13, i64 6976, !13, i64 6977, !13, i64 6978, !10, i64 6980, !30, i64 6984, !13, i64 7000, !13, i64 7001, !10, i64 7004, !31, i64 7008, !10, i64 7012, !10, i64 7016, !10, i64 7020, !32, i64 7024, !32, i64 7072, !32, i64 7120, !33, i64 7168, !34, i64 7216, !16, i64 7248, !35, i64 7256, !10, i64 7424, !13, i64 7428, !13, i64 7429, !10, i64 7432, !10, i64 7436, !10, i64 7440, !43, i64 7448, !30, i64 7512, !10, i64 7528, !10, i64 7532, !16, i64 7536, !10, i64 7540, !10, i64 7544, !10, i64 7548, !44, i64 7552, !7, i64 7568, !45, i64 7576, !50, i64 11296, !10, i64 11408, !10, i64 11412, !19, i64 11416, !13, i64 11432, !16, i64 11436, !16, i64 11440, !15, i64 11444, !10, i64 11452, !46, i64 11456, !15, i64 11472, !15, i64 11480, !13, i64 11488, !16, i64 11492, !53, i64 11496, !54, i64 11512, !55, i64 11528, !13, i64 11544, !6, i64 11552, !53, i64 11560, !10, i64 11576, !10, i64 11580, !7, i64 11584, !10, i64 12064, !16, i64 12068, !10, i64 12072, !10, i64 12076, !10, i64 12080, !7, i64 12084}
!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, !13, i64 202, !13, i64 203, !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, !7, i64 284, !7, i64 796, !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, !10, i64 940, !10, i64 944, !15, i64 948, !15, i64 956, !7, i64 964, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1088, !7, i64 1108, !7, i64 1148, !7, i64 1168, !7, i64 3216, !7, i64 5264, !7, i64 5348}
!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 = !{!"double", !7, i64 0}
!21 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!22 = !{!"_ZTS12ImGuiStorage", !23, i64 0}
!23 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!25 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorI13ImGuiPopupRefE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_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, !30, i64 64, !6, i64 80, !6, i64 88, !16, i64 96, !15, i64 100}
!30 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!31 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!32 = !{!"_ZTS18ImGuiNavMoveResult", !10, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !30, i64 28}
!33 = !{!"_ZTS10ImDrawData", !13, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !15, i64 28, !15, i64 36}
!34 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!35 = !{!"_ZTS10ImDrawList", !36, i64 0, !37, i64 16, !38, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !6, i64 80, !6, i64 88, !39, i64 96, !40, i64 112, !41, i64 128, !10, i64 144, !10, i64 148, !42, i64 152}
!36 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_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}
!44 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !37, i64 8, !46, i64 24, !46, i64 40, !10, i64 56, !10, i64 60, !10, i64 64, !16, i64 68, !47, i64 72, !16, i64 3692, !13, i64 3696, !13, i64 3697, !10, i64 3700, !6, i64 3704, !6, i64 3712}
!46 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!47 = !{!"_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, !48, i64 24}
!48 = !{!"_ZTSN8ImGuiStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !49, i64 3582, !49, i64 3584, !10, i64 3588, !10, i64 3592}
!49 = !{!"short", !7, i64 0}
!50 = !{!"_ZTS6ImFont", !16, i64 0, !16, i64 4, !15, i64 8, !51, i64 16, !52, i64 32, !37, i64 48, !6, i64 64, !16, i64 72, !49, i64 76, !49, i64 78, !6, i64 80, !6, i64 88, !16, i64 96, !16, i64 100, !13, i64 104, !10, i64 108}
!51 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS15ImGuiTextBuffer", !46, i64 0}
!54 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{i8 0, i8 2}
!57 = !{}
!58 = !{!12, !10, i64 6444}
!59 = !{!12, !10, i64 6440}
!60 = !{!13, !13, i64 0}
!61 = !{!12, !10, i64 6748}
!62 = !{i64 0, i64 4, !63, i64 4, i64 4, !63}
!63 = !{!16, !16, i64 0}
!64 = !{!65, !10, i64 608}
!65 = !{!"_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, !13, i64 130, !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, !10, i64 184, !15, i64 188, !15, i64 196, !66, i64 208, !70, i64 512, !30, i64 528, !30, i64 544, !30, i64 560, !30, i64 576, !30, i64 592, !10, i64 608, !16, i64 612, !71, i64 616, !22, i64 664, !72, i64 680, !16, i64 696, !10, i64 700, !6, i64 704, !35, i64 712, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !7, i64 920, !7, i64 928, !10, i64 960, !10, i64 964, !10, i64 968, !10, i64 972, !10, i64 976, !10, i64 980}
!66 = !{!"_ZTS19ImGuiWindowTempData", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !15, i64 44, !16, i64 52, !16, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !30, i64 76, !30, i64 92, !13, i64 108, !13, i64 109, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !13, i64 128, !15, i64 132, !21, i64 144, !6, i64 160, !10, i64 168, !10, i64 172, !10, i64 176, !16, i64 180, !16, i64 184, !67, i64 192, !52, i64 208, !52, i64 224, !68, i64 240, !7, i64 256, !69, i64 280, !69, i64 284, !69, i64 288, !6, i64 296}
!67 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS6ImVec1", !16, i64 0}
!70 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !16, i64 4, !16, i64 8, !16, i64 12, !7, i64 16, !7, i64 32}
!72 = !{!"_ZTS8ImVectorI15ImGuiColumnsSetE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!65, !10, i64 12}
!74 = !{!65, !6, i64 880}
!75 = !{!65, !13, i64 130}
!76 = !{!65, !10, i64 172}
!77 = !{!12, !10, i64 6728}
!78 = !{!65, !10, i64 144}
!79 = !{!80, !10, i64 0}
!80 = !{!"_ZTS13ImGuiPopupRef", !10, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !15, i64 32, !15, i64 40}
!81 = !{!80, !6, i64 8}
!82 = !{!65, !13, i64 128}
!83 = !{!12, !10, i64 6744}
!84 = !{!65, !10, i64 176}
!85 = !{!65, !10, i64 180}
!86 = !{!12, !16, i64 6788}
!87 = !{!12, !16, i64 6792}
!88 = !{!12, !10, i64 6752}
!89 = !{!65, !16, i64 60}
!90 = !{!12, !10, i64 6756}
!91 = !{!12, !13, i64 6804}
!92 = !{!12, !10, i64 6764}
!93 = !{!65, !13, i64 122}
!94 = !{!65, !10, i64 136}
!95 = !{!12, !10, i64 6536}
!96 = !{!65, !10, i64 140}
!97 = !{!65, !10, i64 132}
!98 = !{i64 0, i64 4, !63, i64 4, i64 4, !63, i64 8, i64 4, !63, i64 12, i64 4, !63}
!99 = !{!65, !10, i64 168}
!100 = !{!65, !16, i64 32}
!101 = !{!65, !16, i64 24}
!102 = !{!65, !16, i64 36}
!103 = !{!65, !16, i64 28}
!104 = !{!17, !16, i64 40}
!105 = !{!17, !16, i64 48}
!106 = !{!17, !16, i64 16}
!107 = !{!65, !16, i64 76}
!108 = !{!17, !16, i64 8}
!109 = !{!65, !16, i64 64}
!110 = !{!17, !16, i64 68}
!111 = !{!12, !16, i64 6844}
!112 = !{!65, !16, i64 340}
!113 = !{!12, !16, i64 6848}
!114 = !{!65, !16, i64 344}
!115 = !{!12, !6, i64 6552}
!116 = !{!12, !10, i64 6568}
!117 = !{!12, !10, i64 6576}
!118 = !{!65, !13, i64 126}
!119 = !{!65, !13, i64 125}
!120 = !{!15, !16, i64 0}
!121 = !{!15, !16, i64 4}
!122 = !{!65, !10, i64 148}
!123 = !{!65, !10, i64 152}
!124 = !{!65, !13, i64 156}
!125 = !{!65, !16, i64 40}
!126 = !{!65, !16, i64 44}
!127 = !{!65, !16, i64 52}
!128 = !{!65, !13, i64 121}
!129 = !{!65, !16, i64 48}
!130 = !{!17, !16, i64 100}
!131 = !{!65, !13, i64 120}
!132 = !{!65, !10, i64 164}
!133 = !{!65, !10, i64 352}
!134 = !{!65, !16, i64 188}
!135 = !{!12, !16, i64 16}
!136 = !{!12, !16, i64 20}
!137 = !{!17, !16, i64 36}
!138 = !{!17, !16, i64 44}
!139 = !{!17, !16, i64 12}
!140 = !{!65, !16, i64 72}
!141 = !{!65, !10, i64 976}
!142 = !{!65, !10, i64 960}
!143 = !{!65, !10, i64 968}
!144 = !{!65, !10, i64 980}
!145 = !{!65, !10, i64 964}
!146 = !{!65, !10, i64 972}
!147 = !{!12, !13, i64 211}
!148 = !{!12, !16, i64 6288}
!149 = !{!65, !16, i64 612}
!150 = !{!65, !6, i64 704}
!151 = !{!12, !13, i64 5584}
!152 = !{!12, !13, i64 5585}
!153 = !{!35, !10, i64 48}
!154 = !{!12, !6, i64 6280}
!155 = !{!50, !6, i64 88}
!156 = !{!157, !6, i64 8}
!157 = !{!"_ZTS11ImFontAtlas", !13, i64 0, !10, i64 4, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !15, i64 48, !15, i64 56, !27, i64 64, !158, i64 80, !159, i64 96, !7, i64 112}
!158 = !{!"_ZTS8ImVectorIN11ImFontAtlas10CustomRectEE", !10, i64 0, !10, i64 4, !6, i64 8}
!159 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!160 = !{!12, !6, i64 6936}
!161 = !{!65, !6, i64 888}
!162 = !{!12, !16, i64 7248}
!163 = !{!12, !16, i64 6956}
!164 = !{!12, !16, i64 5452}
!165 = !{!12, !6, i64 6928}
!166 = !{!12, !6, i64 6864}
!167 = !{!65, !6, i64 896}
!168 = !{!17, !16, i64 64}
!169 = !{!12, !16, i64 5504}
!170 = !{!12, !13, i64 6974}
!171 = !{!12, !10, i64 6768}
!172 = !{!12, !16, i64 6840}
!173 = !{!30, !16, i64 12}
!174 = !{!65, !16, i64 20}
!175 = !{!176, !16, i64 8}
!176 = !{!"_ZTS18ImGuiResizeGripDef", !15, i64 0, !15, i64 8, !10, i64 16, !10, i64 20}
!177 = !{!176, !16, i64 12}
!178 = !{!176, !10, i64 16}
!179 = !{!176, !10, i64 20}
!180 = distinct !{!180, !181}
!181 = !{!"llvm.loop.mustprogress"}
!182 = !{!65, !16, i64 16}
!183 = !{!65, !16, i64 88}
!184 = !{!65, !16, i64 592}
!185 = !{!65, !16, i64 92}
!186 = !{!65, !16, i64 68}
!187 = !{!65, !16, i64 596}
!188 = !{!65, !16, i64 56}
!189 = !{!65, !16, i64 112}
!190 = !{!65, !16, i64 600}
!191 = !{!65, !16, i64 116}
!192 = !{!65, !16, i64 604}
!193 = !{!65, !16, i64 488}
!194 = !{!65, !16, i64 492}
!195 = !{!65, !16, i64 496}
!196 = !{!65, !16, i64 260}
!197 = !{!65, !16, i64 248}
!198 = !{!65, !13, i64 316}
!199 = !{!65, !13, i64 317}
!200 = !{!65, !10, i64 332}
!201 = !{!65, !10, i64 328}
!202 = !{!65, !13, i64 336}
!203 = !{!65, !16, i64 212}
!204 = !{!65, !16, i64 264}
!205 = !{!65, !10, i64 376}
!206 = !{!65, !10, i64 380}
!207 = !{!65, !10, i64 384}
!208 = !{!65, !16, i64 388}
!209 = !{!65, !16, i64 392}
!210 = !{!65, !6, i64 504}
!211 = !{!65, !10, i64 268}
!212 = !{!65, !10, i64 272}
!213 = !{!65, !6, i64 368}
!214 = !{!65, !10, i64 320}
!215 = !{!65, !10, i64 324}
!216 = !{!17, !16, i64 56}
!217 = !{!17, !16, i64 52}
!218 = !{!17, !16, i64 76}
!219 = !{!17, !16, i64 28}
!220 = !{!30, !16, i64 0}
!221 = !{!30, !16, i64 8}
!222 = !{!65, !16, i64 560}
!223 = !{!65, !16, i64 564}
!224 = !{!65, !16, i64 568}
!225 = !{!65, !16, i64 572}
!226 = !{!65, !16, i64 576}
!227 = !{!65, !16, i64 580}
!228 = !{!65, !16, i64 584}
!229 = !{!65, !16, i64 588}
!230 = !{!65, !10, i64 80}
!231 = !{!65, !10, i64 276}
!232 = !{!65, !10, i64 280}
!233 = !{!65, !13, i64 124}
!234 = !{!65, !16, i64 544}
!235 = !{!65, !16, i64 552}
!236 = !{!65, !16, i64 548}
!237 = !{!65, !16, i64 556}
!238 = !{!65, !13, i64 129}
!239 = !{!17, !16, i64 0}
!240 = !{!65, !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 [87 x i8], align 1
@_ZL15resize_grip_def = external hidden global [4 x %struct.ImGuiResizeGripDef], align 16
@.str.62 = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.69 = 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #7

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

; 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: 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 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: 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 @_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: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984), ptr noundef, ptr noundef) local_unnamed_addr #8 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 @_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 @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) local_unnamed_addr #8

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

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

; 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 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.ImVec2, align 8
  %56 = alloca %struct.ImVec2, align 8
  %57 = alloca %struct.ImVec2, align 8
  %58 = alloca %struct.ImRect, align 8
  %59 = alloca %struct.ImVec2, align 4
  %60 = alloca %struct.ImVec2, align 8
  %61 = alloca %struct.ImRect, align 4
  %62 = alloca %struct.ImRect, align 4
  %63 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %64 = getelementptr inbounds i8, ptr %63, i64 5440
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %65, label %66

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

66:                                               ; preds = %3
  %67 = getelementptr inbounds i8, ptr %63, i64 1
  %68 = load i8, ptr %67, align 1, !tbaa !9, !range !55, !noundef !56
  %69 = trunc nuw i8 %68 to i1
  br i1 %69, label %71, label %70

70:                                               ; preds = %66
  tail call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.3, i32 noundef 4509, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

71:                                               ; preds = %66
  %72 = getelementptr inbounds i8, ptr %63, i64 6444
  %73 = load i32, ptr %72, align 4, !tbaa !57
  %74 = getelementptr inbounds i8, ptr %63, i64 6440
  %75 = load i32, ptr %74, align 8, !tbaa !58
  %.not368 = icmp eq i32 %73, %75
  br i1 %.not368, label %76, label %77

76:                                               ; preds = %71
  tail call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.3, i32 noundef 4510, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

77:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #14
  %78 = tail call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef nonnull %0)
  store ptr %78, ptr %4, align 8, !tbaa !5
  %79 = icmp ne ptr %78, null
  br i1 %79, label %90, label %80

80:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #14
  %81 = getelementptr inbounds i8, ptr %63, i64 6748
  %82 = load i32, ptr %81, align 4, !tbaa !59
  %.not369 = icmp eq i32 %82, 0
  br i1 %.not369, label %87, label %83

83:                                               ; preds = %80
  %84 = getelementptr inbounds i8, ptr %63, i64 6788
  %85 = load i64, ptr %84, align 4
  store i64 %85, ptr %5, align 8
  %86 = bitcast i64 %85 to <2 x float>
  br label %88

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

88:                                               ; preds = %87, %83
  %.sroa.0139.0.copyload = phi <2 x float> [ %.sroa.0139.0.copyload.pre, %87 ], [ %86, %83 ]
  %89 = call noundef ptr @_ZL15CreateNewWindowPKc6ImVec2i(ptr noundef nonnull %0, <2 x float> %.sroa.0139.0.copyload, i32 noundef %2)
  store ptr %89, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #14
  br label %90

90:                                               ; preds = %88, %77
  %91 = phi ptr [ %89, %88 ], [ %78, %77 ]
  %92 = and i32 %2, 512
  %.not370 = icmp eq i32 %92, 0
  %93 = or i32 %2, 6
  %spec.select = select i1 %.not370, i32 %2, i32 %93
  %94 = and i32 %spec.select, 25165824
  %or.cond = icmp eq i32 %94, 8388608
  br i1 %or.cond, label %95, label %96

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

96:                                               ; preds = %90
  %97 = load i32, ptr %74, align 8, !tbaa !58
  %98 = getelementptr inbounds i8, ptr %91, i64 608
  %99 = load i32, ptr %98, align 8, !tbaa !60
  %.not373 = icmp eq i32 %99, %97
  %100 = getelementptr inbounds i8, ptr %91, i64 12
  br i1 %.not373, label %102, label %101

101:                                              ; preds = %96
  store i32 %spec.select, ptr %100, align 4, !tbaa !69
  br label %104

102:                                              ; preds = %96
  %103 = load i32, ptr %100, align 4, !tbaa !69
  br label %104

104:                                              ; preds = %102, %101
  %.1 = phi i32 [ %spec.select, %101 ], [ %103, %102 ]
  %105 = getelementptr inbounds i8, ptr %63, i64 6504
  %106 = call noundef zeroext i1 @_ZNK8ImVectorIP11ImGuiWindowE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %105)
  br i1 %106, label %110, label %107

107:                                              ; preds = %104
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %105)
  %109 = load ptr, ptr %108, align 8, !tbaa !5
  br label %110

110:                                              ; preds = %104, %107
  %111 = phi ptr [ %109, %107 ], [ null, %104 ]
  br i1 %.not373, label %115, label %112

112:                                              ; preds = %110
  %113 = and i32 %.1, 83886080
  %.not374 = icmp eq i32 %113, 0
  %114 = select i1 %.not374, ptr null, ptr %111
  br label %119

115:                                              ; preds = %110
  %116 = load ptr, ptr %4, align 8, !tbaa !5
  %117 = getelementptr inbounds i8, ptr %116, i64 880
  %118 = load ptr, ptr %117, align 8, !tbaa !70
  br label %119

119:                                              ; preds = %115, %112
  %120 = phi ptr [ %114, %112 ], [ %118, %115 ]
  %121 = icmp eq ptr %120, null
  %122 = and i32 %.1, 16777216
  %123 = icmp ne i32 %122, 0
  %.not376 = select i1 %121, i1 %123, i1 false
  br i1 %.not376, label %124, label %125

124:                                              ; preds = %119
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.3, i32 noundef 4538, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

125:                                              ; preds = %119
  %126 = icmp ne ptr %1, null
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds i8, ptr %127, i64 130
  %129 = zext i1 %126 to i8
  store i8 %129, ptr %128, align 2, !tbaa !71
  %130 = getelementptr inbounds i8, ptr %127, i64 608
  %131 = load i32, ptr %130, align 8, !tbaa !60
  %132 = add nsw i32 %97, -1
  %133 = icmp slt i32 %131, %132
  %134 = getelementptr inbounds i8, ptr %127, i64 172
  %135 = load i32, ptr %134, align 4, !tbaa !72
  %136 = icmp sgt i32 %135, 0
  %137 = and i32 %.1, 67108864
  %.not377 = icmp eq i32 %137, 0
  br i1 %.not377, label %153, label %138

138:                                              ; preds = %125
  %139 = getelementptr inbounds i8, ptr %63, i64 6712
  %140 = getelementptr inbounds i8, ptr %63, i64 6728
  %141 = load i32, ptr %140, align 8, !tbaa !73
  %142 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefEixEi(ptr noundef nonnull align 8 dereferenceable(16) %139, i32 noundef %141)
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  %144 = getelementptr inbounds i8, ptr %143, i64 144
  %145 = load i32, ptr %144, align 8, !tbaa !74
  %146 = load i32, ptr %142, align 8, !tbaa !75
  %147 = icmp ne i32 %145, %146
  %148 = getelementptr inbounds i8, ptr %142, i64 8
  %149 = load ptr, ptr %148, align 8, !tbaa !77
  %150 = icmp ne ptr %143, %149
  %151 = or i1 %147, %150
  %152 = or i1 %133, %151
  br label %153

153:                                              ; preds = %138, %125
  %154 = phi ptr [ %143, %138 ], [ %127, %125 ]
  %.0333.in = phi i1 [ %152, %138 ], [ %133, %125 ]
  %155 = select i1 %.0333.in, i1 true, i1 %136
  %156 = getelementptr inbounds i8, ptr %154, i64 128
  %157 = zext i1 %155 to i8
  store i8 %157, ptr %156, align 8, !tbaa !78
  br i1 %155, label %158, label %159

158:                                              ; preds = %153
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %154, i32 noundef 8, i1 noundef zeroext true)
  br label %159

159:                                              ; preds = %158, %153
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %105, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %160 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %160)
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL15CheckStacksSizeP11ImGuiWindowb(ptr noundef %161, i1 noundef zeroext true)
  br i1 %.not377, label %172, label %162

162:                                              ; preds = %159
  %163 = getelementptr inbounds i8, ptr %63, i64 6712
  %164 = getelementptr inbounds i8, ptr %63, i64 6728
  %165 = load i32, ptr %164, align 8, !tbaa !73
  %166 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefEixEi(ptr noundef nonnull align 8 dereferenceable(16) %163, i32 noundef %165)
  %167 = load ptr, ptr %4, align 8, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %166, i64 8
  store ptr %167, ptr %168, align 8, !tbaa !77
  call void @_ZN8ImVectorI13ImGuiPopupRefE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %164, ptr noundef nonnull align 8 dereferenceable(48) %166)
  %169 = load i32, ptr %166, align 8, !tbaa !75
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = getelementptr inbounds i8, ptr %170, i64 144
  store i32 %169, ptr %171, align 8, !tbaa !74
  br label %172

172:                                              ; preds = %162, %159
  %.not422 = xor i1 %136, true
  %brmerge = select i1 %.not422, i1 true, i1 %123
  br i1 %brmerge, label %176, label %173

173:                                              ; preds = %172
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds i8, ptr %174, i64 920
  store i32 0, ptr %175, align 8, !tbaa !79
  br label %176

176:                                              ; preds = %172, %173
  %177 = getelementptr inbounds i8, ptr %63, i64 6744
  %178 = load i32, ptr %177, align 8, !tbaa !80
  %.not378 = icmp eq i32 %178, 0
  br i1 %.not378, label %202, label %179

179:                                              ; preds = %176
  %180 = load ptr, ptr %4, align 8, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %180, i64 176
  %182 = load i32, ptr %181, align 8, !tbaa !81
  %183 = and i32 %182, %178
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %185, label %198

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

._crit_edge:                                      ; preds = %185
  %.pre490 = load i32, ptr %177, align 8, !tbaa !80
  br label %198

189:                                              ; preds = %185
  %190 = getelementptr inbounds i8, ptr %63, i64 6772
  %191 = getelementptr inbounds i8, ptr %.pre, i64 188
  %192 = load i64, ptr %190, align 4
  store i64 %192, ptr %191, align 4
  %193 = getelementptr inbounds i8, ptr %.pre, i64 196
  %194 = load i64, ptr %186, align 4
  store i64 %194, ptr %193, align 4
  %195 = getelementptr inbounds i8, ptr %.pre, i64 176
  %196 = load i32, ptr %195, align 8, !tbaa !81
  %197 = and i32 %196, -15
  store i32 %197, ptr %195, align 8, !tbaa !81
  br label %202

198:                                              ; preds = %._crit_edge, %179
  %199 = phi i32 [ %.pre490, %._crit_edge ], [ %178, %179 ]
  %200 = phi ptr [ %.pre, %._crit_edge ], [ %180, %179 ]
  %201 = getelementptr inbounds i8, ptr %63, i64 6772
  call void @_ZL12SetWindowPosP11ImGuiWindowRK6ImVec2i(ptr noundef %200, ptr noundef nonnull align 4 dereferenceable(8) %201, i32 noundef %199)
  br label %202

202:                                              ; preds = %189, %198, %176
  %.0335.shrunk = phi i1 [ true, %189 ], [ %184, %198 ], [ false, %176 ]
  %203 = getelementptr inbounds i8, ptr %63, i64 6748
  %204 = load i32, ptr %203, align 4, !tbaa !59
  %.not379 = icmp eq i32 %204, 0
  br i1 %.not379, label %220, label %205

205:                                              ; preds = %202
  %206 = load ptr, ptr %4, align 8, !tbaa !5
  %207 = getelementptr inbounds i8, ptr %206, i64 180
  %208 = load i32, ptr %207, align 4, !tbaa !82
  %209 = and i32 %208, %204
  %.not380 = icmp eq i32 %209, 0
  br i1 %.not380, label %.thread, label %210

210:                                              ; preds = %205
  %211 = getelementptr inbounds i8, ptr %63, i64 6788
  %212 = load float, ptr %211, align 4, !tbaa !83
  %213 = fcmp ogt float %212, 0.000000e+00
  %214 = getelementptr inbounds i8, ptr %63, i64 6792
  %215 = load float, ptr %214, align 4, !tbaa !84
  %216 = fcmp ogt float %215, 0.000000e+00
  br label %.thread

.thread:                                          ; preds = %205, %210
  %217 = phi i1 [ %213, %210 ], [ false, %205 ]
  %218 = phi i1 [ %216, %210 ], [ false, %205 ]
  %219 = getelementptr inbounds i8, ptr %63, i64 6788
  call void @_ZL13SetWindowSizeP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %206, ptr noundef nonnull align 4 dereferenceable(8) %219, i32 noundef %204)
  br label %220

220:                                              ; preds = %.thread, %202
  %.0337 = phi i1 [ %218, %.thread ], [ false, %202 ]
  %.0336 = phi i1 [ %217, %.thread ], [ false, %202 ]
  %221 = getelementptr inbounds i8, ptr %63, i64 6752
  %222 = load i32, ptr %221, align 8, !tbaa !85
  %.not382 = icmp eq i32 %222, 0
  br i1 %.not382, label %238, label %223

223:                                              ; preds = %220
  %224 = getelementptr inbounds i8, ptr %63, i64 6796
  %225 = load ptr, ptr %4, align 8, !tbaa !5
  %226 = getelementptr inbounds i8, ptr %225, i64 56
  %227 = load i64, ptr %224, align 4
  store i64 %227, ptr %226, align 8
  %228 = and i64 %227, 9223372032559808512
  %.not538 = icmp eq i64 %228, 0
  br i1 %.not538, label %243, label %229

229:                                              ; preds = %223
  %230 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %225)
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  %232 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %231)
  %233 = fadd float %230, %232
  %234 = load ptr, ptr %4, align 8, !tbaa !5
  %235 = getelementptr inbounds i8, ptr %234, i64 60
  %236 = load float, ptr %235, align 4, !tbaa !86
  %237 = fadd float %233, %236
  store float %237, ptr %235, align 4, !tbaa !86
  br label %243

238:                                              ; preds = %220
  br i1 %.not373, label %._crit_edge533, label %239

._crit_edge533:                                   ; preds = %238
  %.pre492.pre526.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %243

239:                                              ; preds = %238
  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)
  %240 = load ptr, ptr %4, align 8, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %240, i64 56
  %242 = load i64, ptr %6, align 8
  store i64 %242, ptr %241, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #14
  br label %243

243:                                              ; preds = %._crit_edge533, %239, %223, %229
  %.pre492.pre526 = phi ptr [ %.pre492.pre526.pre, %._crit_edge533 ], [ %240, %239 ], [ %225, %223 ], [ %234, %229 ]
  %244 = getelementptr inbounds i8, ptr %63, i64 6756
  %245 = load i32, ptr %244, align 4, !tbaa !87
  %.not383 = icmp eq i32 %245, 0
  br i1 %.not383, label %250, label %246

246:                                              ; preds = %243
  %247 = getelementptr inbounds i8, ptr %63, i64 6804
  %248 = load i8, ptr %247, align 4, !tbaa !88, !range !55, !noundef !56
  %249 = trunc nuw i8 %248 to i1
  call void @_ZL18SetWindowCollapsedP11ImGuiWindowbi(ptr noundef %.pre492.pre526, i1 noundef zeroext %249, i32 noundef %245)
  %.pre492.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %250

250:                                              ; preds = %246, %243
  %.pre492 = phi ptr [ %.pre492.pre, %246 ], [ %.pre492.pre526, %243 ]
  %251 = getelementptr inbounds i8, ptr %63, i64 6764
  %252 = load i32, ptr %251, align 4, !tbaa !89
  %.not384 = icmp eq i32 %252, 0
  br i1 %.not384, label %254, label %253

253:                                              ; preds = %250
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %.pre492)
  %.pre491 = load ptr, ptr %4, align 8, !tbaa !5
  br label %254

254:                                              ; preds = %253, %250
  %255 = phi ptr [ %.pre491, %253 ], [ %.pre492, %250 ]
  %256 = getelementptr inbounds i8, ptr %255, i64 128
  %257 = load i8, ptr %256, align 8, !tbaa !78, !range !55, !noundef !56
  %258 = trunc nuw i8 %257 to i1
  br i1 %258, label %259, label %260

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

260:                                              ; preds = %259, %254
  br i1 %.not373, label %.critedge460, label %261

261:                                              ; preds = %260
  %262 = and i32 %.1, 33554432
  %.not385 = icmp eq i32 %262, 0
  %263 = and i32 %.1, 50331648
  %264 = icmp eq i32 %263, 50331648
  %265 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %265, i32 noundef %.1, ptr noundef %120)
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  %267 = getelementptr inbounds i8, ptr %266, i64 122
  store i8 1, ptr %267, align 2, !tbaa !90
  %268 = getelementptr inbounds i8, ptr %266, i64 136
  store i32 0, ptr %268, align 8, !tbaa !91
  %269 = getelementptr inbounds i8, ptr %63, i64 6536
  %270 = load i32, ptr %269, align 8, !tbaa !92
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %269, align 8, !tbaa !92
  %272 = getelementptr inbounds i8, ptr %266, i64 140
  store i32 %270, ptr %272, align 4, !tbaa !93
  %273 = getelementptr inbounds i8, ptr %266, i64 132
  store i32 0, ptr %273, align 4, !tbaa !94
  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)
  %274 = load ptr, ptr %4, align 8, !tbaa !5
  %275 = getelementptr inbounds i8, ptr %274, i64 528
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %275, ptr noundef nonnull align 4 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !95
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #14
  %276 = getelementptr inbounds i8, ptr %274, i64 608
  store i32 %97, ptr %276, align 8, !tbaa !60
  %277 = getelementptr inbounds i8, ptr %274, i64 512
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %277, i32 noundef 1)
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = call <2 x float> @_ZL16CalcSizeContentsP11ImGuiWindow(ptr noundef %278)
  %280 = load ptr, ptr %4, align 8, !tbaa !5
  %281 = getelementptr inbounds i8, ptr %280, i64 48
  store <2 x float> %279, ptr %281, align 8
  %282 = getelementptr inbounds i8, ptr %280, i64 168
  %283 = load i32, ptr %282, align 8, !tbaa !97
  %284 = icmp sgt i32 %283, 0
  br i1 %284, label %285, label %287

285:                                              ; preds = %261
  %286 = add nsw i32 %283, -1
  store i32 %286, ptr %282, align 8, !tbaa !97
  br label %287

287:                                              ; preds = %285, %261
  %288 = getelementptr inbounds i8, ptr %280, i64 172
  %289 = load i32, ptr %288, align 4, !tbaa !72
  %290 = icmp slt i32 %289, 1
  %291 = select i1 %.0336, i1 %.0337, i1 false
  %or.cond482 = select i1 %79, i1 true, i1 %291
  %.not486 = and i1 %290, %or.cond482
  br i1 %.not486, label %294, label %292

292:                                              ; preds = %287
  %293 = add nsw i32 %289, -1
  %simplifycfg.merge483 = select i1 %or.cond482, i32 %293, i32 1
  store i32 %simplifycfg.merge483, ptr %288, align 4, !tbaa !72
  br label %294

294:                                              ; preds = %287, %292
  %295 = and i32 %.1, 100663296
  %.not386 = icmp ne i32 %295, 0
  %or.cond424.not = select i1 %.0333.in, i1 %.not386, i1 false
  br i1 %or.cond424.not, label %296, label %310

296:                                              ; preds = %294
  store i32 1, ptr %288, align 4, !tbaa !72
  %297 = and i32 %.1, 64
  %.not387 = icmp eq i32 %297, 0
  br i1 %.not387, label %310, label %298

298:                                              ; preds = %296
  br i1 %.0336, label %302, label %299

299:                                              ; preds = %298
  %300 = getelementptr inbounds i8, ptr %280, i64 32
  store float 0.000000e+00, ptr %300, align 8, !tbaa !98
  %301 = getelementptr inbounds i8, ptr %280, i64 24
  store float 0.000000e+00, ptr %301, align 8, !tbaa !99
  br label %302

302:                                              ; preds = %299, %298
  br i1 %.0337, label %306, label %303

303:                                              ; preds = %302
  %304 = getelementptr inbounds i8, ptr %280, i64 36
  store float 0.000000e+00, ptr %304, align 4, !tbaa !100
  %305 = getelementptr inbounds i8, ptr %280, i64 28
  store float 0.000000e+00, ptr %305, align 4, !tbaa !101
  br label %306

306:                                              ; preds = %303, %302
  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)
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = getelementptr inbounds i8, ptr %307, i64 48
  %309 = load i64, ptr %9, align 8
  store i64 %309, ptr %308, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %310

310:                                              ; preds = %296, %306, %294
  %311 = phi ptr [ %280, %296 ], [ %307, %306 ], [ %280, %294 ]
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef nonnull %311)
  %312 = and i32 %.1, 134217728
  %.not389 = icmp eq i32 %312, 0
  %or.cond425 = and i1 %.not386, %.not389
  %. = select i1 %or.cond425, i64 5488, i64 5456
  %.sink545 = select i1 %123, i64 5480, i64 %.
  %313 = getelementptr inbounds i8, ptr %63, i64 %.sink545
  %314 = load float, ptr %313, align 4, !tbaa !96
  %315 = load ptr, ptr %4, align 8, !tbaa !5
  %316 = getelementptr inbounds i8, ptr %315, i64 76
  store float %314, ptr %316, align 4, !tbaa !102
  %317 = getelementptr inbounds i8, ptr %63, i64 5444
  %318 = getelementptr inbounds i8, ptr %315, i64 64
  %319 = load i64, ptr %317, align 4
  store i64 %319, ptr %318, align 8
  %320 = and i32 %.1, 83951616
  %or.cond426 = icmp eq i32 %320, 16777216
  %321 = fcmp oeq float %314, 0.000000e+00
  %or.cond474 = select i1 %or.cond426, i1 %321, i1 false
  br i1 %or.cond474, label %322, label %332

322:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  %323 = and i32 %.1, 1024
  %.not391 = icmp eq i32 %323, 0
  br i1 %.not391, label %327, label %324

324:                                              ; preds = %322
  %325 = getelementptr inbounds i8, ptr %63, i64 5448
  %326 = load float, ptr %325, align 4, !tbaa !103
  br label %327

327:                                              ; preds = %322, %324
  %328 = phi float [ %326, %324 ], [ 0.000000e+00, %322 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef %328)
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds i8, ptr %329, i64 64
  %331 = load i64, ptr %10, align 8
  store i64 %331, ptr %330, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  br label %332

332:                                              ; preds = %327, %310
  %.in539.in = phi i64 [ %331, %327 ], [ %319, %310 ]
  %.in539 = trunc i64 %.in539.in to i32
  %333 = bitcast i32 %.in539 to float
  %334 = getelementptr inbounds i8, ptr %63, i64 5508
  %335 = load float, ptr %334, align 4, !tbaa !104
  %336 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %333, float noundef %335)
  %337 = getelementptr inbounds i8, ptr %63, i64 6844
  %338 = load float, ptr %337, align 4, !tbaa !105
  %339 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %336, float noundef %338)
  %340 = load ptr, ptr %4, align 8, !tbaa !5
  %341 = getelementptr inbounds i8, ptr %340, i64 340
  store float %339, ptr %341, align 4, !tbaa !106
  %342 = getelementptr inbounds i8, ptr %63, i64 6848
  %343 = load float, ptr %342, align 4, !tbaa !107
  %344 = getelementptr inbounds i8, ptr %340, i64 344
  store float %343, ptr %344, align 4, !tbaa !108
  %345 = and i32 %.1, 1
  %.not392 = icmp eq i32 %345, 0
  %346 = and i32 %.1, 32
  %.not393 = icmp eq i32 %346, 0
  %347 = and i32 %.1, 33
  %or.cond427 = icmp eq i32 %347, 0
  br i1 %or.cond427, label %348, label %384

348:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #14
  %349 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(984) %340)
  %350 = extractvalue { <2 x float>, <2 x float> } %349, 0
  store <2 x float> %350, ptr %11, align 8
  %351 = getelementptr inbounds i8, ptr %11, i64 8
  %352 = extractvalue { <2 x float>, <2 x float> } %349, 1
  store <2 x float> %352, ptr %351, align 8
  %353 = getelementptr inbounds i8, ptr %63, i64 6552
  %354 = load ptr, ptr %353, align 8, !tbaa !109
  %355 = load ptr, ptr %4, align 8, !tbaa !5
  %356 = icmp eq ptr %354, %355
  br i1 %356, label %357, label %373

357:                                              ; preds = %348
  %358 = getelementptr inbounds i8, ptr %63, i64 6568
  %359 = load i32, ptr %358, align 8, !tbaa !110
  %360 = icmp eq i32 %359, 0
  br i1 %360, label %361, label %373

361:                                              ; preds = %357
  %362 = getelementptr inbounds i8, ptr %63, i64 6576
  %363 = load i32, ptr %362, align 8, !tbaa !111
  %364 = icmp eq i32 %363, 0
  br i1 %364, label %365, label %373

365:                                              ; preds = %361
  %366 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %351, i1 noundef zeroext true)
  br i1 %366, label %367, label %._crit_edge493

._crit_edge493:                                   ; preds = %365
  %.pre494 = load ptr, ptr %4, align 8, !tbaa !5
  br label %373

367:                                              ; preds = %365
  %368 = getelementptr inbounds i8, ptr %63, i64 1061
  %369 = load i8, ptr %368, align 1, !tbaa !112, !range !55, !noundef !56
  %370 = trunc nuw i8 %369 to i1
  %.pre495 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %370, label %371, label %373

371:                                              ; preds = %367
  %372 = getelementptr inbounds i8, ptr %.pre495, i64 126
  store i8 1, ptr %372, align 2, !tbaa !113
  br label %373

373:                                              ; preds = %._crit_edge493, %371, %367, %361, %357, %348
  %374 = phi ptr [ %.pre494, %._crit_edge493 ], [ %.pre495, %371 ], [ %.pre495, %367 ], [ %355, %361 ], [ %355, %357 ], [ %355, %348 ]
  %375 = getelementptr inbounds i8, ptr %374, i64 126
  %376 = load i8, ptr %375, align 2, !tbaa !113, !range !55, !noundef !56
  %377 = trunc nuw i8 %376 to i1
  br i1 %377, label %378, label %383

378:                                              ; preds = %373
  %379 = getelementptr inbounds i8, ptr %374, i64 125
  %380 = load i8, ptr %379, align 1, !tbaa !114, !range !55, !noundef !56
  %381 = xor i8 %380, 1
  store i8 %381, ptr %379, align 1, !tbaa !114
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %374)
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %382)
  %.pre496.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %383

383:                                              ; preds = %378, %373
  %.pre496 = phi ptr [ %.pre496.pre, %378 ], [ %374, %373 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #14
  br label %386

384:                                              ; preds = %332
  %385 = getelementptr inbounds i8, ptr %340, i64 125
  store i8 0, ptr %385, align 1, !tbaa !114
  br label %386

386:                                              ; preds = %384, %383
  %387 = phi ptr [ %340, %384 ], [ %.pre496, %383 ]
  %388 = getelementptr inbounds i8, ptr %387, i64 126
  store i8 0, ptr %388, align 2, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #14
  %389 = getelementptr inbounds i8, ptr %387, i64 48
  %390 = call <2 x float> @_ZL15CalcSizeAutoFitP11ImGuiWindowRK6ImVec2(ptr noundef %387, ptr noundef nonnull align 4 dereferenceable(8) %389)
  store <2 x float> %390, 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)
  %391 = and i32 %.1, 64
  %.not394 = icmp ne i32 %391, 0
  %.pre497 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not394, label %392, label %406

392:                                              ; preds = %386
  %393 = getelementptr inbounds i8, ptr %.pre497, i64 125
  %394 = load i8, ptr %393, align 1, !tbaa !114, !range !55, !noundef !56
  %395 = trunc nuw i8 %394 to i1
  br i1 %395, label %406, label %396

396:                                              ; preds = %392
  br i1 %.0336, label %400, label %397

397:                                              ; preds = %396
  %398 = load float, ptr %12, align 8, !tbaa !115
  store float %398, ptr %13, align 4, !tbaa !115
  %399 = getelementptr inbounds i8, ptr %.pre497, i64 32
  store float %398, ptr %399, align 8, !tbaa !98
  br label %400

400:                                              ; preds = %397, %396
  br i1 %.0337, label %459, label %401

401:                                              ; preds = %400
  %402 = getelementptr inbounds i8, ptr %12, i64 4
  %403 = load float, ptr %402, align 4, !tbaa !116
  %404 = getelementptr inbounds i8, ptr %13, i64 4
  store float %403, ptr %404, align 4, !tbaa !116
  %405 = getelementptr inbounds i8, ptr %.pre497, i64 36
  store float %403, ptr %405, align 4, !tbaa !100
  br label %459

406:                                              ; preds = %392, %386
  %407 = getelementptr inbounds i8, ptr %.pre497, i64 148
  %408 = load i32, ptr %407, align 4, !tbaa !117
  %409 = icmp sgt i32 %408, 0
  br i1 %409, label %414, label %410

410:                                              ; preds = %406
  %411 = getelementptr inbounds i8, ptr %.pre497, i64 152
  %412 = load i32, ptr %411, align 8, !tbaa !118
  %413 = icmp sgt i32 %412, 0
  br i1 %413, label %.thread463, label %459

414:                                              ; preds = %406
  br i1 %.0336, label %.thread463, label %415

415:                                              ; preds = %414
  %416 = getelementptr inbounds i8, ptr %.pre497, i64 156
  %417 = load i8, ptr %416, align 4, !tbaa !119, !range !55, !noundef !56
  %418 = trunc nuw i8 %417 to i1
  br i1 %418, label %419, label %424

419:                                              ; preds = %415
  %420 = getelementptr inbounds i8, ptr %.pre497, i64 32
  %421 = load float, ptr %420, align 8, !tbaa !98
  %422 = load float, ptr %12, align 8, !tbaa !115
  %423 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %421, float noundef %422)
  %.pre498 = load ptr, ptr %4, align 8, !tbaa !5
  br label %426

424:                                              ; preds = %415
  %425 = load float, ptr %12, align 8, !tbaa !115
  br label %426

426:                                              ; preds = %424, %419
  %427 = phi ptr [ %.pre498, %419 ], [ %.pre497, %424 ]
  %428 = phi float [ %423, %419 ], [ %425, %424 ]
  store float %428, ptr %13, align 4, !tbaa !115
  %429 = getelementptr inbounds i8, ptr %427, i64 32
  store float %428, ptr %429, align 8, !tbaa !98
  br label %.thread463

.thread463:                                       ; preds = %410, %426, %414
  %430 = phi ptr [ %.pre497, %410 ], [ %427, %426 ], [ %.pre497, %414 ]
  br i1 %.0337, label %453, label %431

431:                                              ; preds = %.thread463
  %432 = getelementptr inbounds i8, ptr %430, i64 152
  %433 = load i32, ptr %432, align 8, !tbaa !118
  %434 = icmp sgt i32 %433, 0
  br i1 %434, label %435, label %453

435:                                              ; preds = %431
  %436 = getelementptr inbounds i8, ptr %430, i64 156
  %437 = load i8, ptr %436, align 4, !tbaa !119, !range !55, !noundef !56
  %438 = trunc nuw i8 %437 to i1
  br i1 %438, label %439, label %445

439:                                              ; preds = %435
  %440 = getelementptr inbounds i8, ptr %430, i64 36
  %441 = load float, ptr %440, align 4, !tbaa !100
  %442 = getelementptr inbounds i8, ptr %12, i64 4
  %443 = load float, ptr %442, align 4, !tbaa !116
  %444 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %441, float noundef %443)
  %.pre499 = load ptr, ptr %4, align 8, !tbaa !5
  br label %448

445:                                              ; preds = %435
  %446 = getelementptr inbounds i8, ptr %12, i64 4
  %447 = load float, ptr %446, align 4, !tbaa !116
  br label %448

448:                                              ; preds = %445, %439
  %449 = phi ptr [ %.pre499, %439 ], [ %430, %445 ]
  %450 = phi float [ %444, %439 ], [ %447, %445 ]
  %451 = getelementptr inbounds i8, ptr %13, i64 4
  store float %450, ptr %451, align 4, !tbaa !116
  %452 = getelementptr inbounds i8, ptr %449, i64 36
  store float %450, ptr %452, align 4, !tbaa !100
  br label %453

453:                                              ; preds = %448, %431, %.thread463
  %454 = phi ptr [ %449, %448 ], [ %430, %431 ], [ %430, %.thread463 ]
  %455 = getelementptr inbounds i8, ptr %454, i64 125
  %456 = load i8, ptr %455, align 1, !tbaa !114, !range !55, !noundef !56
  %457 = trunc nuw i8 %456 to i1
  br i1 %457, label %459, label %458

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

459:                                              ; preds = %410, %458, %453, %400, %401
  %460 = phi ptr [ %.pre497, %410 ], [ %.pre500, %458 ], [ %454, %453 ], [ %.pre497, %400 ], [ %.pre497, %401 ]
  %461 = getelementptr inbounds i8, ptr %460, i64 32
  %.sroa.079.0.copyload = load <2 x float>, ptr %461, align 8
  %462 = call <2 x float> @_ZL23CalcSizeAfterConstraintP11ImGuiWindow6ImVec2(ptr noundef %460, <2 x float> %.sroa.079.0.copyload)
  %463 = load ptr, ptr %4, align 8
  %464 = getelementptr inbounds i8, ptr %463, i64 32
  store <2 x float> %462, ptr %464, align 8
  %465 = getelementptr inbounds i8, ptr %463, i64 125
  %466 = load i8, ptr %465, align 1, !tbaa !114, !range !55, !noundef !56
  %467 = trunc nuw i8 %466 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #14
  %.not428 = xor i1 %467, true
  %brmerge429 = select i1 %.not428, i1 true, i1 %123
  br i1 %brmerge429, label %474, label %468

468:                                              ; preds = %459
  %469 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(984) %463)
  %470 = extractvalue { <2 x float>, <2 x float> } %469, 0
  store <2 x float> %470, ptr %14, align 8
  %471 = getelementptr inbounds i8, ptr %14, i64 8
  %472 = extractvalue { <2 x float>, <2 x float> } %469, 1
  store <2 x float> %472, ptr %471, align 8
  %473 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %14)
  %.pre501 = load ptr, ptr %4, align 8
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre501, i64 125
  %.pre502 = load i8, ptr %.phi.trans.insert, align 1, !tbaa !114, !range !55
  br label %474

474:                                              ; preds = %459, %468
  %475 = phi i8 [ %.pre502, %468 ], [ %466, %459 ]
  %476 = phi ptr [ %.pre501, %468 ], [ %463, %459 ]
  %.sroa.077.0 = phi <2 x float> [ %473, %468 ], [ %462, %459 ]
  %477 = getelementptr inbounds i8, ptr %476, i64 24
  store <2 x float> %.sroa.077.0, ptr %477, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #14
  %478 = trunc nuw i8 %475 to i1
  br i1 %478, label %553, label %479

479:                                              ; preds = %474
  %480 = load float, ptr %13, align 4, !tbaa !115
  %481 = fcmp une float %480, 0x47EFFFFFE0000000
  %.in395.v = select i1 %481, i64 32, i64 40
  %.in395 = getelementptr inbounds i8, ptr %476, i64 %.in395.v
  %482 = load float, ptr %.in395, align 8, !tbaa !96
  %483 = getelementptr inbounds i8, ptr %13, i64 4
  %484 = load float, ptr %483, align 4, !tbaa !116
  %485 = fcmp une float %484, 0x47EFFFFFE0000000
  %.in396.v = select i1 %485, i64 36, i64 44
  %.in396 = getelementptr inbounds i8, ptr %476, i64 %.in396.v
  %486 = load float, ptr %.in396, align 4, !tbaa !96
  %487 = and i32 %.1, 16384
  %.not397 = icmp eq i32 %487, 0
  br i1 %.not397, label %488, label %.thread464

488:                                              ; preds = %479
  %489 = getelementptr inbounds i8, ptr %476, i64 52
  %490 = load float, ptr %489, align 4, !tbaa !120
  %491 = fcmp ogt float %490, %486
  %492 = and i32 %.1, 8
  %.not398 = icmp eq i32 %492, 0
  %493 = select i1 %491, i1 %.not398, i1 false
  %494 = getelementptr inbounds i8, ptr %476, i64 121
  %495 = zext i1 %493 to i8
  store i8 %495, ptr %494, align 1, !tbaa !121
  %496 = and i32 %.1, 32768
  %.not399 = icmp eq i32 %496, 0
  br i1 %.not399, label %502, label %.thread468

.thread464:                                       ; preds = %479
  %497 = getelementptr inbounds i8, ptr %476, i64 121
  store i8 1, ptr %497, align 1, !tbaa !121
  %498 = and i32 %.1, 32768
  %.not399465 = icmp eq i32 %498, 0
  br i1 %.not399465, label %.thread466, label %.thread468.thread

.thread468.thread:                                ; preds = %.thread464
  %499 = getelementptr inbounds i8, ptr %476, i64 120
  store i8 1, ptr %499, align 8, !tbaa !122
  br label %.thread544

.thread466:                                       ; preds = %.thread464
  %500 = getelementptr inbounds i8, ptr %476, i64 48
  %501 = load float, ptr %500, align 8, !tbaa !123
  %.pre537 = and i32 %.1, 8
  br label %505

502:                                              ; preds = %488
  %503 = getelementptr inbounds i8, ptr %476, i64 48
  %504 = load float, ptr %503, align 8, !tbaa !123
  br i1 %493, label %505, label %510

505:                                              ; preds = %.thread466, %502
  %.pre535.pre-phi = phi i32 [ %.pre537, %.thread466 ], [ 0, %502 ]
  %506 = phi float [ %501, %.thread466 ], [ %504, %502 ]
  %507 = phi ptr [ %497, %.thread466 ], [ %494, %502 ]
  %508 = getelementptr inbounds i8, ptr %63, i64 5540
  %509 = load float, ptr %508, align 4, !tbaa !124
  br label %510

510:                                              ; preds = %502, %505
  %.pre-phi = phi i32 [ %492, %502 ], [ %.pre535.pre-phi, %505 ]
  %511 = phi i8 [ 0, %502 ], [ 1, %505 ]
  %512 = phi float [ %504, %502 ], [ %506, %505 ]
  %513 = phi i1 [ false, %502 ], [ true, %505 ]
  %514 = phi ptr [ %494, %502 ], [ %507, %505 ]
  %515 = phi float [ 0.000000e+00, %502 ], [ %509, %505 ]
  %516 = fsub float %482, %515
  %517 = fcmp ogt float %512, %516
  %.not400 = icmp eq i32 %.pre-phi, 0
  %or.cond430 = select i1 %517, i1 %.not400, i1 false
  br i1 %or.cond430, label %520, label %.thread469

.thread469:                                       ; preds = %510
  %518 = getelementptr inbounds i8, ptr %476, i64 120
  store i8 0, ptr %518, align 8, !tbaa !122
  br label %535

.thread468:                                       ; preds = %488
  %519 = getelementptr inbounds i8, ptr %476, i64 120
  store i8 1, ptr %519, align 8, !tbaa !122
  br i1 %493, label %.thread544, label %524

520:                                              ; preds = %510
  %521 = and i32 %.1, 2048
  %.not479 = icmp eq i32 %521, 0
  %522 = getelementptr inbounds i8, ptr %476, i64 120
  %.lobit = lshr exact i32 %521, 11
  %523 = trunc nuw nsw i32 %.lobit to i8
  store i8 %523, ptr %522, align 8, !tbaa !122
  %brmerge476 = or i1 %.not479, %513
  %not..not479 = xor i1 %.not479, true
  br i1 %brmerge476, label %535, label %._crit_edge503

._crit_edge503:                                   ; preds = %520
  %.phi.trans.insert504 = getelementptr inbounds i8, ptr %476, i64 52
  %.pre505 = load float, ptr %.phi.trans.insert504, align 4, !tbaa !120
  br label %524

524:                                              ; preds = %._crit_edge503, %.thread468
  %.pre-phi536 = phi i32 [ 0, %._crit_edge503 ], [ %492, %.thread468 ]
  %525 = phi float [ %.pre505, %._crit_edge503 ], [ %490, %.thread468 ]
  %526 = phi ptr [ %514, %._crit_edge503 ], [ %494, %.thread468 ]
  %527 = getelementptr inbounds i8, ptr %63, i64 5540
  %528 = load float, ptr %527, align 4, !tbaa !124
  %529 = fsub float %486, %528
  %530 = fcmp ogt float %525, %529
  %.not401 = icmp eq i32 %.pre-phi536, 0
  %531 = select i1 %530, i1 %.not401, i1 false
  %532 = zext i1 %531 to i8
  store i8 %532, ptr %526, align 1, !tbaa !121
  br label %535

.thread544:                                       ; preds = %.thread468.thread, %.thread468
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  %533 = getelementptr inbounds i8, ptr %63, i64 5540
  %534 = load float, ptr %533, align 4, !tbaa !124
  br label %543

535:                                              ; preds = %520, %.thread469, %524
  %536 = phi i8 [ %532, %524 ], [ %511, %520 ], [ %511, %.thread469 ]
  %537 = phi i1 [ true, %524 ], [ %not..not479, %520 ], [ false, %.thread469 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  %538 = trunc nuw i8 %536 to i1
  br i1 %538, label %539, label %542

539:                                              ; preds = %535
  %540 = getelementptr inbounds i8, ptr %63, i64 5540
  %541 = load float, ptr %540, align 4, !tbaa !124
  br i1 %537, label %543, label %547

542:                                              ; preds = %535
  br i1 %537, label %543, label %547

543:                                              ; preds = %.thread544, %539, %542
  %544 = phi float [ %541, %539 ], [ 0.000000e+00, %542 ], [ %534, %.thread544 ]
  %545 = getelementptr inbounds i8, ptr %63, i64 5540
  %546 = load float, ptr %545, align 4, !tbaa !124
  br label %547

547:                                              ; preds = %539, %542, %543
  %548 = phi float [ %544, %543 ], [ 0.000000e+00, %542 ], [ %541, %539 ]
  %549 = phi float [ %546, %543 ], [ 0.000000e+00, %542 ], [ 0.000000e+00, %539 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %548, float noundef %549)
  %550 = load ptr, ptr %4, align 8, !tbaa !5
  %551 = getelementptr inbounds i8, ptr %550, i64 112
  %552 = load i64, ptr %15, align 8
  store i64 %552, ptr %551, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #14
  br label %553

553:                                              ; preds = %547, %474
  %554 = phi ptr [ %550, %547 ], [ %476, %474 ]
  br i1 %.0333.in, label %555, label %564

555:                                              ; preds = %553
  %556 = getelementptr inbounds i8, ptr %554, i64 164
  store i32 -1, ptr %556, align 4, !tbaa !125
  %brmerge431 = or i1 %.not377, %.0335.shrunk
  br i1 %brmerge431, label %564, label %557

557:                                              ; preds = %555
  %558 = getelementptr inbounds i8, ptr %63, i64 6728
  %559 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI13ImGuiPopupRefE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %558)
  %560 = getelementptr inbounds i8, ptr %559, i64 32
  %561 = load ptr, ptr %4, align 8, !tbaa !5
  %562 = getelementptr inbounds i8, ptr %561, i64 16
  %563 = load i64, ptr %560, align 8
  store i64 %563, ptr %562, align 8
  br label %564

564:                                              ; preds = %555, %557, %553
  %565 = phi ptr [ %554, %555 ], [ %561, %557 ], [ %554, %553 ]
  br i1 %123, label %566, label %574

566:                                              ; preds = %564
  %567 = getelementptr inbounds i8, ptr %120, i64 352
  %568 = load i32, ptr %567, align 8, !tbaa !126
  %569 = getelementptr inbounds i8, ptr %565, i64 136
  store i32 %568, ptr %569, align 8, !tbaa !91
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %567, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %.not377.not = xor i1 %.not377, true
  %brmerge432 = or i1 %.0335.shrunk, %.not377.not
  %brmerge433 = select i1 %brmerge432, i1 true, i1 %264
  %.pre506 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge433, label %574, label %570

570:                                              ; preds = %566
  %571 = getelementptr inbounds i8, ptr %120, i64 208
  %572 = getelementptr inbounds i8, ptr %.pre506, i64 16
  %573 = load i64, ptr %571, align 8
  store i64 %573, ptr %572, align 8
  br label %574

574:                                              ; preds = %566, %570, %564
  %575 = phi ptr [ %.pre506, %566 ], [ %.pre506, %570 ], [ %565, %564 ]
  %576 = getelementptr inbounds i8, ptr %575, i64 188
  %577 = load float, ptr %576, align 4, !tbaa !127
  %578 = fcmp une float %577, 0x47EFFFFFE0000000
  br i1 %578, label %579, label %.critedge

579:                                              ; preds = %574
  %580 = getelementptr inbounds i8, ptr %575, i64 172
  %581 = load i32, ptr %580, align 4, !tbaa !72
  %582 = icmp eq i32 %581, 0
  br i1 %582, label %583, label %.critedge

583:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #14
  %584 = getelementptr inbounds i8, ptr %63, i64 5572
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #14
  %585 = getelementptr inbounds i8, ptr %575, i64 32
  %586 = getelementptr inbounds i8, ptr %575, i64 196
  %587 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %585, ptr noundef nonnull align 4 dereferenceable(8) %586)
  store <2 x float> %587, ptr %18, align 8
  %588 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %576, ptr noundef nonnull align 4 dereferenceable(8) %18)
  store <2 x float> %588, ptr %17, align 8
  %589 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %584, ptr noundef nonnull align 4 dereferenceable(8) %17)
  store <2 x float> %589, ptr %16, align 8
  call void @_ZL12SetWindowPosP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %575, 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
  %.pre507.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %605

.critedge:                                        ; preds = %574, %579
  %590 = and i32 %.1, 268435456
  %.not402 = icmp eq i32 %590, 0
  br i1 %.not402, label %595, label %591

591:                                              ; preds = %.critedge
  %592 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %575)
  %593 = load ptr, ptr %4, align 8, !tbaa !5
  %594 = getelementptr inbounds i8, ptr %593, i64 16
  store <2 x float> %592, ptr %594, align 8
  br label %605

595:                                              ; preds = %.critedge
  %brmerge434 = or i1 %.not377, %.0335.shrunk
  %brmerge436 = or i1 %brmerge434, %.not422
  br i1 %brmerge436, label %600, label %596

596:                                              ; preds = %595
  %597 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %575)
  %598 = load ptr, ptr %4, align 8, !tbaa !5
  %599 = getelementptr inbounds i8, ptr %598, i64 16
  store <2 x float> %597, ptr %599, align 8
  br label %605

600:                                              ; preds = %595
  %brmerge437 = or i1 %.not385, %.0335.shrunk
  %brmerge438 = select i1 %brmerge437, i1 true, i1 %264
  br i1 %brmerge438, label %605, label %601

601:                                              ; preds = %600
  %602 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %575)
  %603 = load ptr, ptr %4, align 8, !tbaa !5
  %604 = getelementptr inbounds i8, ptr %603, i64 16
  store <2 x float> %602, ptr %604, align 8
  br label %605

605:                                              ; preds = %600, %591, %601, %596, %583
  %.pre507 = phi ptr [ %575, %600 ], [ %593, %591 ], [ %603, %601 ], [ %598, %596 ], [ %.pre507.pre, %583 ]
  %brmerge439 = or i1 %123, %.0335.shrunk
  br i1 %brmerge439, label %644, label %606

606:                                              ; preds = %605
  %607 = getelementptr inbounds i8, ptr %.pre507, i64 148
  %608 = load i32, ptr %607, align 4, !tbaa !117
  %609 = icmp slt i32 %608, 1
  br i1 %609, label %610, label %.thread542

610:                                              ; preds = %606
  %611 = getelementptr inbounds i8, ptr %.pre507, i64 152
  %612 = load i32, ptr %611, align 8, !tbaa !118
  %613 = icmp slt i32 %612, 1
  br i1 %613, label %614, label %.thread542

614:                                              ; preds = %610
  %615 = getelementptr inbounds i8, ptr %63, i64 16
  %616 = load float, ptr %615, align 8, !tbaa !128
  %617 = fcmp ogt float %616, 0.000000e+00
  br i1 %617, label %618, label %.thread542

618:                                              ; preds = %614
  %619 = getelementptr inbounds i8, ptr %63, i64 20
  %620 = load float, ptr %619, align 4, !tbaa !129
  %621 = fcmp ogt float %620, 0.000000e+00
  br i1 %621, label %622, label %.thread542

622:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #14
  %623 = getelementptr inbounds i8, ptr %63, i64 5564
  %624 = getelementptr inbounds i8, ptr %63, i64 5572
  %625 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %623, ptr noundef nonnull align 4 dereferenceable(8) %624)
  store <2 x float> %625, 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
  %626 = load ptr, ptr %4, align 8, !tbaa !5
  %627 = getelementptr inbounds i8, ptr %626, i64 16
  %628 = getelementptr inbounds i8, ptr %626, i64 24
  %629 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %627, ptr noundef nonnull align 4 dereferenceable(8) %628)
  store <2 x float> %629, ptr %21, align 8
  %630 = 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> %630, ptr %20, align 8
  %631 = load ptr, ptr %4, align 8, !tbaa !5
  %632 = getelementptr inbounds i8, ptr %631, i64 24
  %633 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(8) %632)
  %634 = load ptr, ptr %4, align 8, !tbaa !5
  %635 = getelementptr inbounds i8, ptr %634, i64 16
  store <2 x float> %633, ptr %635, 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
  %636 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %615, ptr noundef nonnull align 4 dereferenceable(8) %19)
  store <2 x float> %636, ptr %22, align 8
  %637 = call <2 x float> @_ZL5ImMinRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %635, ptr noundef nonnull align 4 dereferenceable(8) %22)
  %638 = load ptr, ptr %4, align 8, !tbaa !5
  %639 = getelementptr inbounds i8, ptr %638, i64 16
  store <2 x float> %637, ptr %639, 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 %.thread542

.thread542:                                       ; preds = %606, %610, %614, %618, %622
  %.ph = phi ptr [ %638, %622 ], [ %.pre507, %618 ], [ %.pre507, %614 ], [ %.pre507, %610 ], [ %.pre507, %606 ]
  %640 = getelementptr inbounds i8, ptr %.ph, i64 16
  %641 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %640)
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  %643 = getelementptr inbounds i8, ptr %642, i64 16
  store <2 x float> %641, ptr %643, align 8
  br label %649

644:                                              ; preds = %605
  %645 = getelementptr inbounds i8, ptr %.pre507, i64 16
  %646 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %645)
  %647 = load ptr, ptr %4, align 8, !tbaa !5
  %648 = getelementptr inbounds i8, ptr %647, i64 16
  store <2 x float> %646, ptr %648, align 8
  br i1 %123, label %652, label %649

649:                                              ; preds = %.thread542, %644
  %650 = phi ptr [ %642, %.thread542 ], [ %647, %644 ]
  %651 = and i32 %.1, 201326592
  %or.cond441.not.not = icmp eq i32 %651, 67108864
  %.547 = select i1 %or.cond441.not.not, i64 5484, i64 5452
  br label %652

652:                                              ; preds = %649, %644
  %.sink546 = phi i64 [ 5476, %644 ], [ %.547, %649 ]
  %653 = phi ptr [ %647, %644 ], [ %650, %649 ]
  %654 = getelementptr inbounds i8, ptr %63, i64 %.sink546
  %655 = load float, ptr %654, align 4, !tbaa !96
  %656 = getelementptr inbounds i8, ptr %653, i64 72
  store float %655, ptr %656, align 8, !tbaa !130
  %657 = getelementptr inbounds i8, ptr %653, i64 976
  %658 = load i32, ptr %657, align 8, !tbaa !131
  %659 = icmp eq i32 %658, 2147483647
  br i1 %659, label %668, label %660

660:                                              ; preds = %652
  %661 = getelementptr inbounds i8, ptr %653, i64 960
  %662 = load i32, ptr %661, align 8, !tbaa !132
  %663 = icmp eq i32 %662, -1
  br i1 %663, label %668, label %664

664:                                              ; preds = %660
  %665 = add nuw nsw i32 %662, 1
  %666 = add nsw i32 %665, %658
  %667 = srem i32 %666, %665
  br label %668

668:                                              ; preds = %652, %660, %664
  %669 = phi i32 [ %667, %664 ], [ 2147483647, %660 ], [ 2147483647, %652 ]
  %670 = getelementptr inbounds i8, ptr %653, i64 968
  store i32 %669, ptr %670, align 8, !tbaa !133
  %671 = getelementptr inbounds i8, ptr %653, i64 980
  %672 = load i32, ptr %671, align 4, !tbaa !134
  %673 = icmp eq i32 %672, 2147483647
  br i1 %673, label %682, label %674

674:                                              ; preds = %668
  %675 = getelementptr inbounds i8, ptr %653, i64 964
  %676 = load i32, ptr %675, align 4, !tbaa !135
  %677 = icmp eq i32 %676, -1
  br i1 %677, label %682, label %678

678:                                              ; preds = %674
  %679 = add nuw nsw i32 %676, 1
  %680 = add nsw i32 %679, %672
  %681 = srem i32 %680, %679
  br label %682

682:                                              ; preds = %668, %674, %678
  %683 = phi i32 [ %681, %678 ], [ 2147483647, %674 ], [ 2147483647, %668 ]
  %684 = getelementptr inbounds i8, ptr %653, i64 972
  store i32 %683, ptr %684, align 4, !tbaa !136
  %685 = getelementptr inbounds i8, ptr %653, i64 964
  store i32 -1, ptr %685, align 4, !tbaa !135
  %686 = getelementptr inbounds i8, ptr %653, i64 960
  store i32 -1, ptr %686, align 8, !tbaa !132
  store i32 2147483647, ptr %671, align 4, !tbaa !134
  store i32 2147483647, ptr %657, align 8, !tbaa !131
  %687 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindowb(ptr noundef nonnull %653, i1 noundef zeroext true)
  %688 = load ptr, ptr %4, align 8, !tbaa !5
  %689 = getelementptr inbounds i8, ptr %688, i64 88
  store <2 x float> %687, ptr %689, 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)
  %690 = load ptr, ptr %4, align 8, !tbaa !5
  %691 = getelementptr inbounds i8, ptr %690, i64 96
  %692 = load i64, ptr %23, align 8
  store i64 %692, ptr %691, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #14
  %693 = and i32 %.1, 4096
  %.not405 = icmp eq i32 %693, 0
  %or.cond442 = select i1 %.0333.in, i1 %.not405, i1 false
  br i1 %or.cond442, label %694, label %695

694:                                              ; preds = %682
  %.not406 = icmp eq i32 %263, 0
  %.not377.not443 = xor i1 %.not377, true
  %brmerge444 = or i1 %.not406, %.not377.not443
  br label %695

695:                                              ; preds = %694, %682
  %.0338 = phi i1 [ false, %682 ], [ %brmerge444, %694 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #14
  store i32 -1, ptr %24, align 4, !tbaa !79
  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)
  %696 = getelementptr inbounds i8, ptr %63, i64 211
  %697 = load i8, ptr %696, align 1, !tbaa !137, !range !55, !noundef !56
  %698 = trunc nuw i8 %697 to i1
  %699 = select i1 %698, i32 2, i32 1
  %700 = getelementptr inbounds i8, ptr %63, i64 6288
  %701 = load float, ptr %700, align 8, !tbaa !138
  %702 = fmul float %701, 0x3FF59999A0000000
  %703 = getelementptr inbounds i8, ptr %690, i64 72
  %704 = load float, ptr %703, align 8, !tbaa !130
  %705 = fadd float %704, 1.000000e+00
  %706 = call float @llvm.fmuladd.f32(float %701, float 0x3FC99999A0000000, float %705)
  %707 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %702, float noundef %706)
  %708 = fptosi float %707 to i32
  %709 = sitofp i32 %708 to float
  %710 = load ptr, ptr %4, align 8, !tbaa !5
  %711 = getelementptr inbounds i8, ptr %710, i64 125
  %712 = load i8, ptr %711, align 1, !tbaa !114, !range !55, !noundef !56
  %713 = trunc nuw i8 %712 to i1
  br i1 %713, label %715, label %714

714:                                              ; preds = %695
  call void @_ZN5ImGuiL18UpdateManualResizeEP11ImGuiWindowRK6ImVec2PiiPj(ptr noundef nonnull %710, ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull %24, i32 noundef %699, ptr noundef nonnull %25)
  %.pre508 = load ptr, ptr %4, align 8, !tbaa !5
  br label %715

715:                                              ; preds = %714, %695
  %716 = phi ptr [ %.pre508, %714 ], [ %710, %695 ]
  %717 = getelementptr inbounds i8, ptr %716, i64 24
  %718 = load float, ptr %717, align 8, !tbaa !99
  %719 = fcmp ule float %718, 0.000000e+00
  %.not385.not = xor i1 %.not385, true
  %brmerge446 = select i1 %719, i1 true, i1 %.not385.not
  %brmerge447 = or i1 %.not394, %brmerge446
  br i1 %brmerge447, label %722, label %720

720:                                              ; preds = %715
  %721 = fmul float %718, 0x3FE4CCCCC0000000
  br label %725

722:                                              ; preds = %715
  %723 = load float, ptr %700, align 8, !tbaa !138
  %724 = fmul float %723, 1.600000e+01
  br label %725

725:                                              ; preds = %722, %720
  %.sink.in.in = phi float [ %724, %722 ], [ %721, %720 ]
  %.sink.in = fptosi float %.sink.in.in to i32
  %.sink = sitofp i32 %.sink.in to float
  %726 = getelementptr inbounds i8, ptr %716, i64 612
  store float %.sink, ptr %726, align 4
  %727 = getelementptr inbounds i8, ptr %716, i64 704
  %728 = load ptr, ptr %727, align 8, !tbaa !139
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168) %728)
  %729 = getelementptr inbounds i8, ptr %63, i64 5584
  %730 = load i8, ptr %729, align 8, !tbaa !140, !range !55, !noundef !56
  %731 = zext nneg i8 %730 to i32
  %732 = getelementptr inbounds i8, ptr %63, i64 5585
  %733 = load i8, ptr %732, align 1, !tbaa !141, !range !55, !noundef !56
  %734 = trunc nuw i8 %733 to i1
  %735 = select i1 %734, i32 2, i32 0
  %736 = or disjoint i32 %735, %731
  %737 = load ptr, ptr %4, align 8, !tbaa !5
  %738 = getelementptr inbounds i8, ptr %737, i64 704
  %739 = load ptr, ptr %738, align 8, !tbaa !139
  %740 = getelementptr inbounds i8, ptr %739, i64 48
  store i32 %736, ptr %740, align 8, !tbaa !142
  %741 = getelementptr inbounds i8, ptr %63, i64 6280
  %742 = load ptr, ptr %741, align 8, !tbaa !143
  %743 = getelementptr inbounds i8, ptr %742, i64 88
  %744 = load ptr, ptr %743, align 8, !tbaa !144
  %745 = getelementptr inbounds i8, ptr %744, i64 8
  %746 = load ptr, ptr %745, align 8, !tbaa !145
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %739, ptr noundef %746)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #14
  %747 = call { <2 x float>, <2 x float> } @_ZL15GetViewportRectv()
  %748 = extractvalue { <2 x float>, <2 x float> } %747, 0
  store <2 x float> %748, ptr %26, align 8
  %749 = getelementptr inbounds i8, ptr %26, i64 8
  %750 = extractvalue { <2 x float>, <2 x float> } %747, 1
  store <2 x float> %750, ptr %749, align 8
  %751 = and i32 %.1, 83886080
  %brmerge450.demorgan = icmp ne i32 %751, 16777216
  %brmerge451 = or i1 %brmerge450.demorgan, %264
  br i1 %brmerge451, label %755, label %752

752:                                              ; preds = %725
  %753 = getelementptr inbounds i8, ptr %120, i64 528
  %754 = getelementptr inbounds i8, ptr %120, i64 536
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %753, ptr noundef nonnull align 4 dereferenceable(8) %754, i1 noundef zeroext true)
  br label %756

755:                                              ; preds = %725
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %749, i1 noundef zeroext true)
  br label %756

756:                                              ; preds = %755, %752
  %757 = and i32 %.1, 134217728
  %.not407 = icmp eq i32 %757, 0
  br i1 %.not407, label %767, label %758

758:                                              ; preds = %756
  %759 = load ptr, ptr %4, align 8, !tbaa !5
  %760 = call noundef ptr @_ZN5ImGui22GetFrontMostPopupModalEv()
  %761 = icmp eq ptr %759, %760
  br i1 %761, label %762, label %767

762:                                              ; preds = %758
  %763 = load ptr, ptr %4, align 8, !tbaa !5
  %764 = getelementptr inbounds i8, ptr %763, i64 172
  %765 = load i32, ptr %764, align 4, !tbaa !72
  %766 = icmp slt i32 %765, 1
  br label %767

767:                                              ; preds = %762, %758, %756
  %768 = phi i1 [ false, %758 ], [ false, %756 ], [ %766, %762 ]
  %769 = getelementptr inbounds i8, ptr %63, i64 6936
  %770 = load ptr, ptr %769, align 8, !tbaa !149
  %.not408 = icmp eq ptr %770, null
  br i1 %.not408, label %776, label %771

771:                                              ; preds = %767
  %772 = load ptr, ptr %4, align 8, !tbaa !5
  %773 = getelementptr inbounds i8, ptr %770, i64 888
  %774 = load ptr, ptr %773, align 8, !tbaa !150
  %775 = icmp eq ptr %772, %774
  br label %776

776:                                              ; preds = %771, %767
  %777 = phi i1 [ false, %767 ], [ %775, %771 ]
  %brmerge452 = select i1 %768, i1 true, i1 %777
  br i1 %brmerge452, label %778, label %785

778:                                              ; preds = %776
  %.mux = select i1 %768, i32 42, i32 41
  %779 = getelementptr inbounds i8, ptr %63, i64 7248
  %780 = load float, ptr %779, align 8, !tbaa !151
  %781 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %.mux, float noundef %780)
  %782 = load ptr, ptr %4, align 8, !tbaa !5
  %783 = getelementptr inbounds i8, ptr %782, i64 704
  %784 = load ptr, ptr %783, align 8, !tbaa !139
  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) %749, i32 noundef %781, float noundef 0.000000e+00, i32 noundef 15)
  br label %785

785:                                              ; preds = %776, %778
  %.pre510 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %777, label %786, label %807

786:                                              ; preds = %785
  %787 = load ptr, ptr %769, align 8, !tbaa !149
  %788 = icmp eq ptr %.pre510, %787
  br i1 %788, label %789, label %807

789:                                              ; preds = %786
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #14
  %790 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(984) %.pre510)
  %791 = extractvalue { <2 x float>, <2 x float> } %790, 0
  store <2 x float> %791, ptr %27, align 8
  %792 = getelementptr inbounds i8, ptr %27, i64 8
  %793 = extractvalue { <2 x float>, <2 x float> } %790, 1
  store <2 x float> %793, ptr %792, align 8
  %794 = load float, ptr %700, align 8, !tbaa !138
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %27, float noundef %794)
  %795 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %27, ptr noundef nonnull align 4 dereferenceable(16) %26)
  br i1 %795, label %806, label %796

796:                                              ; preds = %789
  %797 = load ptr, ptr %4, align 8, !tbaa !5
  %798 = getelementptr inbounds i8, ptr %797, i64 704
  %799 = load ptr, ptr %798, align 8, !tbaa !139
  %800 = getelementptr inbounds i8, ptr %63, i64 6956
  %801 = load float, ptr %800, align 4, !tbaa !152
  %802 = fmul float %801, 2.500000e-01
  %803 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 40, float noundef %802)
  %804 = getelementptr inbounds i8, ptr %63, i64 5452
  %805 = load float, ptr %804, align 4, !tbaa !153
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %799, ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %792, i32 noundef %803, float noundef %805, i32 noundef 15)
  br label %806

806:                                              ; preds = %796, %789
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #14
  %.pre509 = load ptr, ptr %4, align 8, !tbaa !5
  br label %807

807:                                              ; preds = %806, %786, %785
  %808 = phi ptr [ %.pre509, %806 ], [ %.pre510, %786 ], [ %.pre510, %785 ]
  %809 = getelementptr inbounds i8, ptr %808, i64 72
  %810 = load float, ptr %809, align 8, !tbaa !130
  %811 = getelementptr inbounds i8, ptr %808, i64 76
  %812 = load float, ptr %811, align 4, !tbaa !102
  %813 = getelementptr inbounds i8, ptr %63, i64 6928
  %814 = load ptr, ptr %813, align 8, !tbaa !154
  %.not409 = icmp eq ptr %814, null
  br i1 %.not409, label %815, label %818

815:                                              ; preds = %807
  %816 = getelementptr inbounds i8, ptr %63, i64 6864
  %817 = load ptr, ptr %816, align 8, !tbaa !155
  br label %818

818:                                              ; preds = %807, %815
  %819 = phi ptr [ %817, %815 ], [ %814, %807 ]
  br i1 %.0338, label %827, label %820

820:                                              ; preds = %818
  %.not410 = icmp eq ptr %819, null
  br i1 %.not410, label %827, label %821

821:                                              ; preds = %820
  %822 = getelementptr inbounds i8, ptr %808, i64 896
  %823 = load ptr, ptr %822, align 8, !tbaa !156
  %824 = getelementptr inbounds i8, ptr %819, i64 896
  %825 = load ptr, ptr %824, align 8, !tbaa !156
  %826 = icmp eq ptr %823, %825
  br label %827

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

837:                                              ; preds = %827
  %838 = getelementptr inbounds i8, ptr %63, i64 5504
  %839 = load float, ptr %838, align 4, !tbaa !157
  %840 = getelementptr inbounds i8, ptr %833, i64 76
  %841 = load float, ptr %840, align 4, !tbaa !102
  store float %841, ptr %838, align 8, !tbaa !158
  br i1 %828, label %842, label %.thread470

842:                                              ; preds = %837
  %843 = getelementptr inbounds i8, ptr %63, i64 6974
  %844 = load i8, ptr %843, align 2, !tbaa !159, !range !55, !noundef !56
  %845 = trunc nuw i8 %844 to i1
  %spec.select478 = select i1 %845, i32 12, i32 11
  br label %.thread470

.thread470:                                       ; preds = %842, %837
  %846 = phi i32 [ 12, %837 ], [ %spec.select478, %842 ]
  %847 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %846, float noundef 1.000000e+00)
  %.sroa.028.0.copyload = load <2 x float>, ptr %28, align 8
  %.sroa.027.0.copyload = load <2 x float>, ptr %831, align 8
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.028.0.copyload, <2 x float> %.sroa.027.0.copyload, i32 noundef %847, i1 noundef zeroext true, float noundef %810)
  store float %839, ptr %838, align 8, !tbaa !158
  br label %1021

848:                                              ; preds = %827
  %849 = call noundef i32 @_ZL28GetWindowBgColorIdxFromFlagsi(i32 noundef %.1)
  %850 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %849, float noundef 1.000000e+00)
  %851 = getelementptr inbounds i8, ptr %63, i64 6768
  %852 = load i32, ptr %851, align 8, !tbaa !160
  %.not411 = icmp eq i32 %852, 0
  br i1 %.not411, label %862, label %853

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

862:                                              ; preds = %853, %848
  %.0340 = phi i32 [ %861, %853 ], [ %850, %848 ]
  %863 = load ptr, ptr %4, align 8, !tbaa !5
  %864 = getelementptr inbounds i8, ptr %863, i64 704
  %865 = load ptr, ptr %864, align 8, !tbaa !139
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #14
  %866 = getelementptr inbounds i8, ptr %863, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  %867 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %863)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef %867)
  %868 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %866, ptr noundef nonnull align 4 dereferenceable(8) %30)
  store <2 x float> %868, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  %869 = load ptr, ptr %4, align 8, !tbaa !5
  %870 = getelementptr inbounds i8, ptr %869, i64 16
  %871 = getelementptr inbounds i8, ptr %869, i64 24
  %872 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %870, ptr noundef nonnull align 4 dereferenceable(8) %871)
  store <2 x float> %872, ptr %31, align 8
  %873 = select i1 %.not392, i32 12, i32 15
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %865, ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %31, i32 noundef %.0340, float noundef %810, i32 noundef %873)
  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
  %874 = load ptr, ptr %4, align 8, !tbaa !5
  %875 = getelementptr inbounds i8, ptr %874, i64 125
  %876 = load i8, ptr %875, align 1, !tbaa !114, !range !55, !noundef !56
  %877 = trunc nuw i8 %876 to i1
  %878 = select i1 %828, i32 11, i32 10
  %spec.select453 = select i1 %877, i32 12, i32 %878
  %879 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %spec.select453, float noundef 1.000000e+00)
  br i1 %.not392, label %880, label %884

880:                                              ; preds = %862
  %881 = load ptr, ptr %4, align 8, !tbaa !5
  %882 = getelementptr inbounds i8, ptr %881, i64 704
  %883 = load ptr, ptr %882, align 8, !tbaa !139
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %883, ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %831, i32 noundef %879, float noundef %810, i32 noundef 3)
  br label %884

884:                                              ; preds = %880, %862
  %885 = and i32 %.1, 1024
  %.not412 = icmp eq i32 %885, 0
  %.pre512 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not412, label %921, label %886

886:                                              ; preds = %884
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #14
  %887 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow11MenuBarRectEv(ptr noundef nonnull align 8 dereferenceable(984) %.pre512)
  %888 = extractvalue { <2 x float>, <2 x float> } %887, 0
  store <2 x float> %888, ptr %32, align 8
  %889 = getelementptr inbounds i8, ptr %32, i64 8
  %890 = extractvalue { <2 x float>, <2 x float> } %887, 1
  store <2 x float> %890, ptr %889, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #14
  %891 = load ptr, ptr %4, align 8, !tbaa !5
  %892 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(984) %891)
  %893 = extractvalue { <2 x float>, <2 x float> } %892, 0
  store <2 x float> %893, ptr %33, align 8
  %894 = getelementptr inbounds i8, ptr %33, i64 8
  %895 = extractvalue { <2 x float>, <2 x float> } %892, 1
  store <2 x float> %895, ptr %894, 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
  %896 = load ptr, ptr %4, align 8, !tbaa !5
  %897 = getelementptr inbounds i8, ptr %896, i64 704
  %898 = load ptr, ptr %897, align 8, !tbaa !139
  %899 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 13, float noundef 1.000000e+00)
  %900 = select i1 %.not392, float 0.000000e+00, float %810
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %898, ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef nonnull align 4 dereferenceable(8) %889, i32 noundef %899, float noundef %900, i32 noundef 3)
  %901 = getelementptr inbounds i8, ptr %63, i64 5504
  %902 = load float, ptr %901, align 4, !tbaa !157
  %903 = fcmp ogt float %902, 0.000000e+00
  %.pre511.pre530 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %903, label %904, label %920

904:                                              ; preds = %886
  %905 = getelementptr inbounds i8, ptr %32, i64 12
  %906 = load float, ptr %905, align 4, !tbaa !162
  %907 = getelementptr inbounds i8, ptr %.pre511.pre530, i64 20
  %908 = load float, ptr %907, align 4, !tbaa !163
  %909 = getelementptr inbounds i8, ptr %.pre511.pre530, i64 28
  %910 = load float, ptr %909, align 4, !tbaa !101
  %911 = fadd float %908, %910
  %912 = fcmp olt float %906, %911
  br i1 %912, label %913, label %920

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

920:                                              ; preds = %913, %904, %886
  %.pre511 = phi ptr [ %.pre511.pre, %913 ], [ %.pre511.pre530, %904 ], [ %.pre511.pre530, %886 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #14
  br label %921

921:                                              ; preds = %920, %884
  %922 = phi ptr [ %.pre511, %920 ], [ %.pre512, %884 ]
  %923 = getelementptr inbounds i8, ptr %922, i64 120
  %924 = load i8, ptr %923, align 8, !tbaa !122, !range !55, !noundef !56
  %925 = trunc nuw i8 %924 to i1
  br i1 %925, label %926, label %927

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

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

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

933:                                              ; preds = %932, %927
  %934 = and i32 %.1, 2
  %.not413 = icmp eq i32 %934, 0
  br i1 %.not413, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %933
  %935 = fadd float %810, %812
  %936 = getelementptr inbounds i8, ptr %36, i64 4
  %wide.trip.count = zext nneg i32 %699 to i64
  br label %937

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

949:                                              ; preds = %937
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef %812, float noundef %709)
  br label %951

950:                                              ; preds = %937
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef %709, float noundef %812)
  br label %951

951:                                              ; preds = %950, %949
  %952 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %947, ptr noundef nonnull align 4 dereferenceable(8) %40)
  store <2 x float> %952, ptr %39, align 8
  %953 = 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> %953, ptr %38, align 8
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(168) %946, 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
  %954 = load ptr, ptr %4, align 8, !tbaa !5
  %955 = getelementptr inbounds i8, ptr %954, i64 704
  %956 = load ptr, ptr %955, align 8, !tbaa !139
  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 %.not414, label %958, label %957

957:                                              ; preds = %951
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %709, float noundef %812)
  br label %959

958:                                              ; preds = %951
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %812, float noundef %709)
  br label %959

959:                                              ; preds = %958, %957
  %960 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %947, ptr noundef nonnull align 4 dereferenceable(8) %43)
  store <2 x float> %960, ptr %42, align 8
  %961 = 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> %961, ptr %41, align 8
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(168) %956, 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
  %962 = load ptr, ptr %4, align 8, !tbaa !5
  %963 = getelementptr inbounds i8, ptr %962, i64 704
  %964 = load ptr, ptr %963, align 8, !tbaa !139
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #14
  %965 = load float, ptr %36, align 8, !tbaa !115
  %966 = load float, ptr %947, align 8, !tbaa !164
  %967 = call float @llvm.fmuladd.f32(float %966, float %935, float %965)
  %968 = load float, ptr %936, align 4, !tbaa !116
  %969 = getelementptr inbounds i8, ptr %938, i64 12
  %970 = load float, ptr %969, align 4, !tbaa !166
  %971 = call float @llvm.fmuladd.f32(float %970, float %935, float %968)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef %967, float noundef %971)
  %972 = getelementptr inbounds i8, ptr %938, i64 16
  %973 = load i32, ptr %972, align 8, !tbaa !167
  %974 = getelementptr inbounds i8, ptr %938, i64 20
  %975 = load i32, ptr %974, align 4, !tbaa !168
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(168) %964, ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef %810, i32 noundef %973, i32 noundef %975)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #14
  %976 = load ptr, ptr %4, align 8, !tbaa !5
  %977 = getelementptr inbounds i8, ptr %976, i64 704
  %978 = load ptr, ptr %977, align 8, !tbaa !139
  %979 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %indvars.iv
  %980 = load i32, ptr %979, align 4, !tbaa !79
  call void @_ZN10ImDrawList14PathFillConvexEj(ptr noundef nonnull align 8 dereferenceable(168) %978, i32 noundef %980)
  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 %937, !llvm.loop !169

.loopexit:                                        ; preds = %959, %933
  %981 = fcmp ogt float %812, 0.000000e+00
  br i1 %981, label %982, label %990

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

990:                                              ; preds = %982, %.loopexit
  %991 = load i32, ptr %24, align 4, !tbaa !79
  %.not415 = icmp eq i32 %991, -1
  br i1 %.not415, label %1003, label %992

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

1003:                                             ; preds = %992, %990
  %1004 = getelementptr inbounds i8, ptr %63, i64 5504
  %1005 = load float, ptr %1004, align 4, !tbaa !157
  %1006 = fcmp ogt float %1005, 0.000000e+00
  %brmerge455.not = and i1 %.not392, %1006
  br i1 %brmerge455.not, label %1007, label %1021

1007:                                             ; preds = %1003
  %1008 = load ptr, ptr %4, align 8, !tbaa !5
  %1009 = getelementptr inbounds i8, ptr %1008, i64 704
  %1010 = load ptr, ptr %1009, align 8, !tbaa !139
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #14
  %1011 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %28)
  store <2 x float> %1011, ptr %48, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #14
  %1012 = getelementptr inbounds i8, ptr %63, i64 5456
  %1013 = load float, ptr %1012, align 4, !tbaa !171
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %1013, float noundef -1.000000e+00)
  %1014 = 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> %1014, 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
  %1015 = call <2 x float> @_ZNK6ImRect5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %28)
  store <2 x float> %1015, ptr %51, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #14
  %1016 = load float, ptr %1012, align 4, !tbaa !171
  %1017 = fneg float %1016
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1017, float noundef -1.000000e+00)
  %1018 = 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> %1018, ptr %50, align 8
  %1019 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 5, float noundef 1.000000e+00)
  %1020 = load float, ptr %1004, align 4, !tbaa !157
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1010, ptr noundef nonnull align 4 dereferenceable(8) %47, ptr noundef nonnull align 4 dereferenceable(8) %50, i32 noundef %1019, float noundef %1020)
  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 %1021

1021:                                             ; preds = %1007, %1003, %.thread470
  %1022 = load ptr, ptr %769, align 8, !tbaa !149
  %1023 = load ptr, ptr %4, align 8, !tbaa !5
  %1024 = icmp eq ptr %1022, %1023
  br i1 %1024, label %1025, label %1051

1025:                                             ; preds = %1021
  %1026 = getelementptr inbounds i8, ptr %1023, i64 72
  %1027 = load float, ptr %1026, align 8, !tbaa !130
  %1028 = getelementptr inbounds i8, ptr %63, i64 5452
  %1029 = load float, ptr %1028, align 4, !tbaa !153
  %1030 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1027, float noundef %1029)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #14
  %1031 = load ptr, ptr %4, align 8, !tbaa !5
  %1032 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(984) %1031)
  %1033 = extractvalue { <2 x float>, <2 x float> } %1032, 0
  store <2 x float> %1033, ptr %53, align 8
  %1034 = getelementptr inbounds i8, ptr %53, i64 8
  %1035 = extractvalue { <2 x float>, <2 x float> } %1032, 1
  store <2 x float> %1035, ptr %1034, align 8
  %1036 = load float, ptr %700, align 8, !tbaa !138
  call void @_ZN6ImRect6ExpandEf(ptr noundef nonnull align 4 dereferenceable(16) %53, float noundef %1036)
  %1037 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %53, ptr noundef nonnull align 4 dereferenceable(16) %26)
  br i1 %1037, label %1038, label %._crit_edge514

._crit_edge514:                                   ; preds = %1025
  %.pre515 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1044

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

1044:                                             ; preds = %._crit_edge514, %1038
  %1045 = phi ptr [ %1041, %1038 ], [ %.pre515, %._crit_edge514 ]
  %.0339 = phi float [ %1043, %1038 ], [ %1030, %._crit_edge514 ]
  %1046 = getelementptr inbounds i8, ptr %1045, i64 704
  %1047 = load ptr, ptr %1046, align 8, !tbaa !139
  %1048 = getelementptr inbounds i8, ptr %63, i64 6956
  %1049 = load float, ptr %1048, align 4, !tbaa !152
  %1050 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 40, float noundef %1049)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(168) %1047, ptr noundef nonnull align 4 dereferenceable(8) %53, ptr noundef nonnull align 4 dereferenceable(8) %1034, i32 noundef %1050, float noundef %.0339, i32 noundef -1, float noundef 3.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #14
  %.pre516 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1051

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

1091:                                             ; preds = %1051
  %1092 = getelementptr inbounds i8, ptr %1078, i64 24
  %1093 = load float, ptr %1092, align 8, !tbaa !99
  %1094 = getelementptr inbounds i8, ptr %1078, i64 112
  %1095 = load float, ptr %1094, align 8, !tbaa !180
  %1096 = fsub float %1093, %1095
  br label %1097

1097:                                             ; preds = %1051, %1091
  %1098 = phi float [ %1096, %1091 ], [ %1089, %1051 ]
  %1099 = fadd float %1087, %1098
  %1100 = getelementptr inbounds i8, ptr %1078, i64 600
  store float %1099, ptr %1100, align 8, !tbaa !181
  %1101 = getelementptr inbounds i8, ptr %1078, i64 20
  %1102 = load float, ptr %1101, align 4, !tbaa !163
  %1103 = getelementptr inbounds i8, ptr %1078, i64 92
  %1104 = load float, ptr %1103, align 4, !tbaa !176
  %1105 = fsub float %1102, %1104
  %1106 = getelementptr inbounds i8, ptr %1078, i64 68
  %1107 = load float, ptr %1106, align 4, !tbaa !177
  %1108 = fsub float %1105, %1107
  %1109 = getelementptr inbounds i8, ptr %1078, i64 60
  %1110 = load float, ptr %1109, align 4, !tbaa !86
  %1111 = fcmp une float %1110, 0.000000e+00
  br i1 %1111, label %1118, label %1112

1112:                                             ; preds = %1097
  %1113 = getelementptr inbounds i8, ptr %1078, i64 28
  %1114 = load float, ptr %1113, align 4, !tbaa !101
  %1115 = getelementptr inbounds i8, ptr %1078, i64 116
  %1116 = load float, ptr %1115, align 4, !tbaa !182
  %1117 = fsub float %1114, %1116
  br label %1118

1118:                                             ; preds = %1097, %1112
  %1119 = phi float [ %1117, %1112 ], [ %1110, %1097 ]
  %1120 = fadd float %1108, %1119
  %1121 = getelementptr inbounds i8, ptr %1078, i64 604
  store float %1120, ptr %1121, align 4, !tbaa !183
  %1122 = fadd float %1086, 0.000000e+00
  %1123 = fsub float %1122, %1083
  %1124 = getelementptr inbounds i8, ptr %1078, i64 488
  store float %1123, ptr %1124, align 8, !tbaa !184
  %1125 = getelementptr inbounds i8, ptr %1078, i64 492
  store <2 x float> zeroinitializer, ptr %1125, align 4, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #14
  %1126 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %1078)
  %1127 = load ptr, ptr %4, align 8, !tbaa !5
  %1128 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %1127)
  %1129 = fadd float %1126, %1128
  %1130 = load ptr, ptr %4, align 8, !tbaa !5
  %1131 = getelementptr inbounds i8, ptr %1130, i64 68
  %1132 = load float, ptr %1131, align 4, !tbaa !177
  %1133 = fadd float %1129, %1132
  %1134 = getelementptr inbounds i8, ptr %1130, i64 92
  %1135 = load float, ptr %1134, align 4, !tbaa !176
  %1136 = fsub float %1133, %1135
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1123, float noundef %1136)
  %1137 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1080, ptr noundef nonnull align 4 dereferenceable(8) %54)
  %1138 = load ptr, ptr %4, align 8, !tbaa !5
  %1139 = getelementptr inbounds i8, ptr %1138, i64 224
  store <2 x float> %1137, ptr %1139, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #14
  %1140 = getelementptr inbounds i8, ptr %1138, i64 208
  store <2 x float> %1137, ptr %1140, align 8
  %1141 = getelementptr inbounds i8, ptr %1138, i64 216
  store <2 x float> %1137, ptr %1141, align 8
  %1142 = getelementptr inbounds i8, ptr %1138, i64 232
  store <2 x float> %1137, ptr %1142, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1143 = load ptr, ptr %4, align 8, !tbaa !5
  %1144 = getelementptr inbounds i8, ptr %1143, i64 252
  %1145 = load i64, ptr %55, align 8
  store i64 %1145, ptr %1144, align 4
  %1146 = getelementptr inbounds i8, ptr %1143, i64 240
  store i64 %1145, ptr %1146, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #14
  %1147 = getelementptr inbounds i8, ptr %1143, i64 260
  store float 0.000000e+00, ptr %1147, align 4, !tbaa !185
  %1148 = getelementptr inbounds i8, ptr %1143, i64 248
  store float 0.000000e+00, ptr %1148, align 8, !tbaa !186
  %1149 = getelementptr inbounds i8, ptr %1143, i64 316
  store i8 0, ptr %1149, align 4, !tbaa !187
  %1150 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1151 = fcmp ogt float %1150, 0.000000e+00
  %1152 = load ptr, ptr %4, align 8, !tbaa !5
  %1153 = getelementptr inbounds i8, ptr %1152, i64 317
  %1154 = zext i1 %1151 to i8
  store i8 %1154, ptr %1153, align 1, !tbaa !188
  %1155 = getelementptr inbounds i8, ptr %1152, i64 332
  %1156 = load i32, ptr %1155, align 4, !tbaa !189
  %1157 = getelementptr inbounds i8, ptr %1152, i64 328
  store i32 %1156, ptr %1157, align 8, !tbaa !190
  store i32 0, ptr %1155, align 4, !tbaa !189
  %1158 = getelementptr inbounds i8, ptr %1152, i64 336
  store i8 0, ptr %1158, align 8, !tbaa !191
  %1159 = getelementptr inbounds i8, ptr %1152, i64 212
  %1160 = load float, ptr %1159, align 4, !tbaa !192
  %1161 = fadd float %1160, -9.999000e+03
  %1162 = getelementptr inbounds i8, ptr %1152, i64 264
  store float %1161, ptr %1162, align 8, !tbaa !193
  %1163 = getelementptr inbounds i8, ptr %1152, i64 352
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1163, i32 noundef 0)
  %1164 = load ptr, ptr %4, align 8, !tbaa !5
  %1165 = getelementptr inbounds i8, ptr %1164, i64 376
  store i32 0, ptr %1165, align 8, !tbaa !194
  br i1 %121, label %.critedge457, label %1166

1166:                                             ; preds = %1118
  %1167 = getelementptr inbounds i8, ptr %120, i64 376
  %1168 = load i32, ptr %1167, align 8, !tbaa !194
  %1169 = getelementptr inbounds i8, ptr %120, i64 384
  %1170 = load i32, ptr %1169, align 8, !tbaa !195
  br label %.critedge457

.critedge457:                                     ; preds = %1118, %1166
  %.sink488 = phi i32 [ %1168, %1166 ], [ 0, %1118 ]
  %1171 = phi i32 [ %1170, %1166 ], [ 1, %1118 ]
  %1172 = getelementptr inbounds i8, ptr %1164, i64 380
  store i32 %.sink488, ptr %1172, align 4
  %1173 = getelementptr inbounds i8, ptr %1164, i64 384
  store i32 %1171, ptr %1173, align 8, !tbaa !195
  %1174 = getelementptr inbounds i8, ptr %1164, i64 612
  %1175 = load float, ptr %1174, align 4, !tbaa !196
  %1176 = getelementptr inbounds i8, ptr %1164, i64 388
  store float %1175, ptr %1176, align 4, !tbaa !197
  %1177 = getelementptr inbounds i8, ptr %1164, i64 392
  store float -1.000000e+00, ptr %1177, align 8, !tbaa !198
  %1178 = getelementptr inbounds i8, ptr %1164, i64 400
  call void @_ZN8ImVectorIiE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1178, i32 noundef 0)
  %1179 = load ptr, ptr %4, align 8, !tbaa !5
  %1180 = getelementptr inbounds i8, ptr %1179, i64 416
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1180, i32 noundef 0)
  %1181 = load ptr, ptr %4, align 8, !tbaa !5
  %1182 = getelementptr inbounds i8, ptr %1181, i64 432
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1182, i32 noundef 0)
  %1183 = load ptr, ptr %4, align 8, !tbaa !5
  %1184 = getelementptr inbounds i8, ptr %1183, i64 504
  store ptr null, ptr %1184, align 8, !tbaa !199
  %1185 = getelementptr inbounds i8, ptr %1183, i64 268
  store i32 0, ptr %1185, align 4, !tbaa !200
  %1186 = getelementptr inbounds i8, ptr %1183, i64 272
  store i32 0, ptr %1186, align 8, !tbaa !201
  %1187 = getelementptr inbounds i8, ptr %1183, i64 664
  %1188 = getelementptr inbounds i8, ptr %1183, i64 368
  store ptr %1187, ptr %1188, align 8, !tbaa !202
  %1189 = getelementptr inbounds i8, ptr %1183, i64 448
  call void @_ZN8ImVectorI14ImGuiGroupDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1189, i32 noundef 0)
  %1190 = load ptr, ptr %4, align 8, !tbaa !5
  %1191 = getelementptr inbounds i8, ptr %1190, i64 616
  %1192 = load float, ptr %334, align 4, !tbaa !104
  call void @_ZN16ImGuiMenuColumns6UpdateEifb(ptr noundef nonnull align 4 dereferenceable(48) %1191, i32 noundef 3, float noundef %1192, i1 noundef zeroext %.0333.in)
  %.pre518 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %123, label %1193, label %1200

1193:                                             ; preds = %.critedge457
  %1194 = getelementptr inbounds i8, ptr %.pre518, i64 384
  %1195 = load i32, ptr %1194, align 8, !tbaa !195
  %1196 = getelementptr inbounds i8, ptr %120, i64 384
  %1197 = load i32, ptr %1196, align 8, !tbaa !195
  %.not416 = icmp eq i32 %1195, %1197
  br i1 %.not416, label %1200, label %1198

1198:                                             ; preds = %1193
  store i32 %1197, ptr %1194, align 8, !tbaa !195
  %1199 = getelementptr inbounds i8, ptr %.pre518, i64 400
  call void @_ZN8ImVectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %1199, ptr noundef nonnull align 4 dereferenceable(4) %1194)
  %.pre517 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1200

1200:                                             ; preds = %1198, %1193, %.critedge457
  %1201 = phi ptr [ %.pre517, %1198 ], [ %.pre518, %1193 ], [ %.pre518, %.critedge457 ]
  %1202 = getelementptr inbounds i8, ptr %1201, i64 148
  %1203 = load i32, ptr %1202, align 4, !tbaa !117
  %1204 = icmp sgt i32 %1203, 0
  br i1 %1204, label %1205, label %1207

1205:                                             ; preds = %1200
  %1206 = add nsw i32 %1203, -1
  store i32 %1206, ptr %1202, align 4, !tbaa !117
  br label %1207

1207:                                             ; preds = %1205, %1200
  %1208 = getelementptr inbounds i8, ptr %1201, i64 152
  %1209 = load i32, ptr %1208, align 8, !tbaa !118
  %1210 = icmp sgt i32 %1209, 0
  br i1 %1210, label %1211, label %1213

1211:                                             ; preds = %1207
  %1212 = add nsw i32 %1209, -1
  store i32 %1212, ptr %1208, align 8, !tbaa !118
  br label %1213

1213:                                             ; preds = %1211, %1207
  br i1 %.0338, label %1214, label %1216

1214:                                             ; preds = %1213
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %1201)
  %1215 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1215, i1 noundef zeroext false)
  %.pre520.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1216

1216:                                             ; preds = %1214, %1213
  %.pre520 = phi ptr [ %.pre520.pre, %1214 ], [ %1201, %1213 ]
  br i1 %.not392, label %1217, label %1312

1217:                                             ; preds = %1216
  %1218 = getelementptr inbounds i8, ptr %.pre520, i64 384
  %1219 = load i32, ptr %1218, align 8, !tbaa !195
  %1220 = or i32 %1219, 16
  store i32 %1220, ptr %1218, align 8, !tbaa !195
  %1221 = getelementptr inbounds i8, ptr %.pre520, i64 320
  %1222 = load i32, ptr %1221, align 8, !tbaa !203
  %1223 = add nsw i32 %1222, 1
  store i32 %1223, ptr %1221, align 8, !tbaa !203
  %1224 = getelementptr inbounds i8, ptr %.pre520, i64 324
  %1225 = load i32, ptr %1224, align 4, !tbaa !204
  %1226 = shl i32 %1225, 1
  store i32 %1226, ptr %1224, align 4, !tbaa !204
  br i1 %.not393, label %1227, label %1235

1227:                                             ; preds = %1217
  %1228 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984) %.pre520, ptr noundef nonnull @.str.67, ptr noundef null)
  %1229 = load ptr, ptr %4, align 8, !tbaa !5
  %1230 = getelementptr inbounds i8, ptr %1229, i64 16
  %1231 = call noundef zeroext i1 @_ZN5ImGui14CollapseButtonEjRK6ImVec2(i32 noundef %1228, ptr noundef nonnull align 4 dereferenceable(8) %1230)
  br i1 %1231, label %1232, label %1235

1232:                                             ; preds = %1227
  %1233 = load ptr, ptr %4, align 8, !tbaa !5
  %1234 = getelementptr inbounds i8, ptr %1233, i64 126
  store i8 1, ptr %1234, align 2, !tbaa !113
  br label %1235

1235:                                             ; preds = %1227, %1232, %1217
  br i1 %126, label %1236, label %1256

1236:                                             ; preds = %1235
  %1237 = getelementptr inbounds i8, ptr %63, i64 5496
  %1238 = load float, ptr %1237, align 4, !tbaa !205
  %1239 = load float, ptr %700, align 8, !tbaa !138
  %1240 = fmul float %1239, 5.000000e-01
  %1241 = load ptr, ptr %4, align 8, !tbaa !5
  %1242 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984) %1241, ptr noundef nonnull @.str.68, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #14
  %1243 = load ptr, ptr %4, align 8, !tbaa !5
  %1244 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(984) %1243)
  %1245 = extractvalue { <2 x float>, <2 x float> } %1244, 0
  store <2 x float> %1245, ptr %58, align 8
  %1246 = getelementptr inbounds i8, ptr %58, i64 8
  %1247 = extractvalue { <2 x float>, <2 x float> } %1244, 1
  store <2 x float> %1247, ptr %1246, align 8
  %1248 = call <2 x float> @_ZNK6ImRect5GetTREv(ptr noundef nonnull align 4 dereferenceable(16) %58)
  store <2 x float> %1248, ptr %57, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #14
  %1249 = fneg float %1238
  %1250 = fsub float %1249, %1240
  %1251 = fadd float %1238, %1240
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %59, float noundef %1250, float noundef %1251)
  %1252 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %57, ptr noundef nonnull align 4 dereferenceable(8) %59)
  store <2 x float> %1252, ptr %56, align 8
  %1253 = fadd float %1240, 1.000000e+00
  %1254 = call noundef zeroext i1 @_ZN5ImGui11CloseButtonEjRK6ImVec2f(i32 noundef %1242, ptr noundef nonnull align 4 dereferenceable(8) %56, float noundef %1253)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #14
  call void @llvm.lifetime.end.p0(i64 16, 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
  br i1 %1254, label %1255, label %1256

1255:                                             ; preds = %1236
  store i8 0, ptr %1, align 1, !tbaa !112
  br label %1256

1256:                                             ; preds = %1236, %1255, %1235
  %1257 = load ptr, ptr %4, align 8, !tbaa !5
  %1258 = getelementptr inbounds i8, ptr %1257, i64 320
  %1259 = load i32, ptr %1258, align 8, !tbaa !203
  %1260 = add nsw i32 %1259, -1
  store i32 %1260, ptr %1258, align 8, !tbaa !203
  %1261 = getelementptr inbounds i8, ptr %1257, i64 324
  %1262 = load i32, ptr %1261, align 4, !tbaa !204
  %1263 = ashr i32 %1262, 1
  store i32 %1263, ptr %1261, align 4, !tbaa !204
  %1264 = getelementptr inbounds i8, ptr %1257, i64 384
  store i32 %1219, ptr %1264, align 8, !tbaa !195
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #14
  %1265 = 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> %1265, ptr %60, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %61, ptr noundef nonnull align 8 dereferenceable(16) %28, i64 16, i1 false), !tbaa.struct !95
  %1266 = getelementptr inbounds i8, ptr %63, i64 5492
  %1267 = load float, ptr %1266, align 4, !tbaa !206
  br i1 %.not393, label %1268, label %1274

1268:                                             ; preds = %1256
  %1269 = load float, ptr %700, align 8, !tbaa !138
  %1270 = fadd float %1267, %1269
  %1271 = getelementptr inbounds i8, ptr %63, i64 5516
  %1272 = load float, ptr %1271, align 4, !tbaa !207
  %1273 = fadd float %1270, %1272
  br label %1274

1274:                                             ; preds = %1256, %1268
  %1275 = phi float [ %1273, %1268 ], [ %1267, %1256 ]
  %1276 = icmp eq ptr %1, null
  br i1 %1276, label %1283, label %1277

1277:                                             ; preds = %1274
  %1278 = load float, ptr %700, align 8, !tbaa !138
  %1279 = fadd float %1267, %1278
  %1280 = getelementptr inbounds i8, ptr %63, i64 5516
  %1281 = load float, ptr %1280, align 4, !tbaa !207
  %1282 = fadd float %1279, %1281
  br label %1283

1283:                                             ; preds = %1274, %1277
  %1284 = phi float [ %1282, %1277 ], [ %1267, %1274 ]
  %1285 = getelementptr inbounds i8, ptr %63, i64 5468
  %1286 = load float, ptr %1285, align 4, !tbaa !208
  %1287 = fcmp ogt float %1286, 0.000000e+00
  br i1 %1287, label %1288, label %1290

1288:                                             ; preds = %1283
  %1289 = call noundef float @_ZL6ImLerpIfET_S0_S0_f(float noundef %1284, float noundef %1275, float noundef %1286)
  br label %1290

1290:                                             ; preds = %1288, %1283
  %.0334 = phi float [ %1289, %1288 ], [ %1284, %1283 ]
  %1291 = load float, ptr %61, align 4, !tbaa !209
  %1292 = fadd float %1275, %1291
  store float %1292, ptr %61, align 4, !tbaa !209
  %1293 = getelementptr inbounds i8, ptr %61, i64 8
  %1294 = load float, ptr %1293, align 4, !tbaa !210
  %1295 = fsub float %1294, %.0334
  store float %1295, ptr %1293, align 4, !tbaa !210
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %62) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %62, ptr noundef nonnull align 4 dereferenceable(16) %61, i64 16, i1 false), !tbaa.struct !95
  %1296 = load ptr, ptr %4, align 8, !tbaa !5
  %1297 = getelementptr inbounds i8, ptr %1296, i64 16
  %1298 = load float, ptr %1297, align 8, !tbaa !172
  %1299 = getelementptr inbounds i8, ptr %1296, i64 24
  %1300 = load float, ptr %1299, align 8, !tbaa !99
  %1301 = fadd float %1298, %1300
  br i1 %126, label %1302, label %1305

1302:                                             ; preds = %1290
  %1303 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1304 = fadd float %1303, -3.000000e+00
  br label %1308

1305:                                             ; preds = %1290
  %1306 = getelementptr inbounds i8, ptr %63, i64 5492
  %1307 = load float, ptr %1306, align 4, !tbaa !206
  br label %1308

1308:                                             ; preds = %1305, %1302
  %1309 = phi float [ %1304, %1302 ], [ %1307, %1305 ]
  %1310 = fsub float %1301, %1309
  %1311 = getelementptr inbounds i8, ptr %62, i64 8
  store float %1310, ptr %1311, align 4, !tbaa !210
  call void @_ZN5ImGui17RenderTextClippedERK6ImVec2S2_PKcS4_PS1_S2_PK6ImRect(ptr noundef nonnull align 4 dereferenceable(8) %61, ptr noundef nonnull align 4 dereferenceable(8) %1293, ptr noundef nonnull %0, ptr noundef null, ptr noundef nonnull %60, ptr noundef nonnull align 4 dereferenceable(8) %1285, ptr noundef nonnull %62)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #14
  %.pre519 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1312

1312:                                             ; preds = %1216, %1308
  %1313 = phi ptr [ %.pre520, %1216 ], [ %.pre519, %1308 ]
  %1314 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(984) %1313)
  %1315 = extractvalue { <2 x float>, <2 x float> } %1314, 0
  %1316 = extractvalue { <2 x float>, <2 x float> } %1314, 1
  %1317 = load ptr, ptr %4, align 8, !tbaa !5
  %1318 = getelementptr inbounds i8, ptr %1317, i64 544
  store <2 x float> %1315, ptr %1318, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %1317, i64 552
  store <2 x float> %1316, ptr %.sroa.4.0..sroa_idx, align 8
  %1319 = getelementptr inbounds i8, ptr %1317, i64 528
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1318, ptr noundef nonnull align 4 dereferenceable(16) %1319)
  %1320 = load float, ptr %28, align 8, !tbaa !209
  %1321 = load ptr, ptr %4, align 8, !tbaa !5
  %1322 = getelementptr inbounds i8, ptr %1321, i64 76
  %1323 = load float, ptr %1322, align 4, !tbaa !102
  %1324 = fadd float %1320, %1323
  %1325 = getelementptr inbounds i8, ptr %1321, i64 560
  store float %1324, ptr %1325, align 8, !tbaa !211
  %1326 = getelementptr inbounds i8, ptr %28, i64 12
  %1327 = load float, ptr %1326, align 4, !tbaa !162
  %1328 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(984) %1321)
  %1329 = fadd float %1327, %1328
  %1330 = and i32 %.1, 1025
  %brmerge458.not = icmp eq i32 %1330, 1
  %1331 = getelementptr inbounds i8, ptr %63, i64 5504
  %1332 = load ptr, ptr %4, align 8
  %1333 = getelementptr inbounds i8, ptr %1332, i64 76
  %.in419 = select i1 %brmerge458.not, ptr %1333, ptr %1331
  %1334 = load float, ptr %.in419, align 4, !tbaa !96
  %1335 = fadd float %1329, %1334
  %1336 = getelementptr inbounds i8, ptr %1332, i64 564
  store float %1335, ptr %1336, align 4, !tbaa !212
  %1337 = getelementptr inbounds i8, ptr %1332, i64 16
  %1338 = getelementptr inbounds i8, ptr %1332, i64 24
  %1339 = getelementptr inbounds i8, ptr %1332, i64 112
  %1340 = load float, ptr %1333, align 4, !tbaa !102
  %1341 = getelementptr inbounds i8, ptr %1332, i64 568
  %1342 = load <2 x float>, ptr %1337, align 8, !tbaa !96
  %1343 = load <2 x float>, ptr %1338, align 8, !tbaa !96
  %1344 = fadd <2 x float> %1342, %1343
  %1345 = load <2 x float>, ptr %1339, align 8, !tbaa !96
  %1346 = fsub <2 x float> %1344, %1345
  %1347 = insertelement <2 x float> poison, float %1340, i64 0
  %1348 = shufflevector <2 x float> %1347, <2 x float> poison, <2 x i32> zeroinitializer
  %1349 = fsub <2 x float> %1346, %1348
  store <2 x float> %1349, ptr %1341, align 8, !tbaa !96
  %1350 = getelementptr inbounds i8, ptr %1332, i64 560
  %1351 = load float, ptr %1350, align 8, !tbaa !211
  %1352 = fadd float %1351, 5.000000e-01
  %1353 = getelementptr inbounds i8, ptr %1332, i64 64
  %1354 = load float, ptr %1353, align 8, !tbaa !174
  %1355 = fneg float %1340
  %1356 = call float @llvm.fmuladd.f32(float %1354, float 5.000000e-01, float %1355)
  %1357 = call noundef float @_ZL7ImFloorf(float noundef %1356)
  %1358 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1357)
  %1359 = fadd float %1352, %1358
  %1360 = call noundef float @_ZL7ImFloorf(float noundef %1359)
  %1361 = load ptr, ptr %4, align 8, !tbaa !5
  %1362 = getelementptr inbounds i8, ptr %1361, i64 576
  store float %1360, ptr %1362, align 8, !tbaa !213
  %1363 = getelementptr inbounds i8, ptr %1361, i64 564
  %1364 = load float, ptr %1363, align 4, !tbaa !212
  %1365 = fadd float %1364, 5.000000e-01
  %1366 = call noundef float @_ZL7ImFloorf(float noundef %1365)
  %1367 = load ptr, ptr %4, align 8, !tbaa !5
  %1368 = getelementptr inbounds i8, ptr %1367, i64 580
  store float %1366, ptr %1368, align 4, !tbaa !214
  %1369 = getelementptr inbounds i8, ptr %1367, i64 568
  %1370 = load float, ptr %1369, align 8, !tbaa !215
  %1371 = fadd float %1370, 5.000000e-01
  %1372 = getelementptr inbounds i8, ptr %1367, i64 64
  %1373 = load float, ptr %1372, align 8, !tbaa !174
  %1374 = getelementptr inbounds i8, ptr %1367, i64 76
  %1375 = load float, ptr %1374, align 4, !tbaa !102
  %1376 = fneg float %1375
  %1377 = call float @llvm.fmuladd.f32(float %1373, float 5.000000e-01, float %1376)
  %1378 = call noundef float @_ZL7ImFloorf(float noundef %1377)
  %1379 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1378)
  %1380 = fsub float %1371, %1379
  %1381 = call noundef float @_ZL7ImFloorf(float noundef %1380)
  %1382 = load ptr, ptr %4, align 8, !tbaa !5
  %1383 = getelementptr inbounds i8, ptr %1382, i64 584
  store float %1381, ptr %1383, align 8, !tbaa !216
  %1384 = getelementptr inbounds i8, ptr %1382, i64 572
  %1385 = load float, ptr %1384, align 4, !tbaa !217
  %1386 = fadd float %1385, 5.000000e-01
  %1387 = call noundef float @_ZL7ImFloorf(float noundef %1386)
  %1388 = load ptr, ptr %4, align 8, !tbaa !5
  %1389 = getelementptr inbounds i8, ptr %1388, i64 588
  store float %1387, ptr %1389, align 4, !tbaa !218
  %1390 = getelementptr inbounds i8, ptr %1388, i64 80
  %1391 = load i32, ptr %1390, align 8, !tbaa !219
  %1392 = getelementptr inbounds i8, ptr %1388, i64 276
  store i32 %1391, ptr %1392, align 4, !tbaa !220
  %1393 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %831, i1 noundef zeroext false)
  %1394 = zext i1 %1393 to i32
  %1395 = load ptr, ptr %4, align 8, !tbaa !5
  %1396 = getelementptr inbounds i8, ptr %1395, i64 280
  store i32 %1394, ptr %1396, align 8, !tbaa !221
  %1397 = getelementptr inbounds i8, ptr %1395, i64 284
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1397, ptr noundef nonnull align 8 dereferenceable(16) %28, i64 16, i1 false), !tbaa.struct !95
  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
  %1398 = getelementptr inbounds i8, ptr %1395, i64 576
  %1399 = getelementptr inbounds i8, ptr %1395, i64 584
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1398, ptr noundef nonnull align 4 dereferenceable(8) %1399, i1 noundef zeroext true)
  %1400 = load ptr, ptr %4, align 8, !tbaa !5
  %1401 = getelementptr inbounds i8, ptr %1400, i64 124
  store i8 0, ptr %1401, align 4, !tbaa !222
  br label %1405

.critedge460:                                     ; preds = %260
  %1402 = load ptr, ptr %4, align 8, !tbaa !5
  %1403 = getelementptr inbounds i8, ptr %1402, i64 576
  %1404 = getelementptr inbounds i8, ptr %1402, i64 584
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1403, ptr noundef nonnull align 4 dereferenceable(8) %1404, i1 noundef zeroext true)
  %.pre521 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1405

1405:                                             ; preds = %.critedge460, %1312
  %1406 = phi ptr [ %.pre521, %.critedge460 ], [ %1400, %1312 ]
  %1407 = getelementptr inbounds i8, ptr %1406, i64 132
  %1408 = load i32, ptr %1407, align 4, !tbaa !94
  %1409 = add nsw i32 %1408, 1
  store i32 %1409, ptr %1407, align 4, !tbaa !94
  call void @_ZN19ImGuiNextWindowData5ClearEv(ptr noundef nonnull align 8 dereferenceable(108) %177)
  br i1 %123, label %1410, label %1450

1410:                                             ; preds = %1405
  %1411 = and i32 %.1, 1
  %.not420 = icmp eq i32 %1411, 0
  br i1 %.not420, label %1412, label %1413

1412:                                             ; preds = %1410
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.3, i32 noundef 5071, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

1413:                                             ; preds = %1410
  %1414 = and i32 %.1, 64
  %.not421 = icmp eq i32 %1414, 0
  br i1 %.not421, label %1415, label %1438

1415:                                             ; preds = %1413
  %1416 = load ptr, ptr %4, align 8, !tbaa !5
  %1417 = getelementptr inbounds i8, ptr %1416, i64 148
  %1418 = load i32, ptr %1417, align 4, !tbaa !117
  %1419 = icmp slt i32 %1418, 1
  br i1 %1419, label %1420, label %1438

1420:                                             ; preds = %1415
  %1421 = getelementptr inbounds i8, ptr %1416, i64 152
  %1422 = load i32, ptr %1421, align 8, !tbaa !118
  %1423 = icmp slt i32 %1422, 1
  br i1 %1423, label %1424, label %1438

1424:                                             ; preds = %1420
  %1425 = getelementptr inbounds i8, ptr %1416, i64 544
  %1426 = load float, ptr %1425, align 8, !tbaa !223
  %1427 = getelementptr inbounds i8, ptr %1416, i64 552
  %1428 = load float, ptr %1427, align 8, !tbaa !224
  %1429 = fcmp ult float %1426, %1428
  br i1 %1429, label %1430, label %1436

1430:                                             ; preds = %1424
  %1431 = getelementptr inbounds i8, ptr %1416, i64 548
  %1432 = load float, ptr %1431, align 4, !tbaa !225
  %1433 = getelementptr inbounds i8, ptr %1416, i64 556
  %1434 = load float, ptr %1433, align 4, !tbaa !226
  %1435 = fcmp ult float %1432, %1434
  br i1 %1435, label %1438, label %1436

1436:                                             ; preds = %1430, %1424
  %1437 = getelementptr inbounds i8, ptr %1416, i64 168
  store i32 1, ptr %1437, align 8, !tbaa !97
  br label %1438

1438:                                             ; preds = %1430, %1436, %1420, %1415, %1413
  br i1 %121, label %1450, label %1439

1439:                                             ; preds = %1438
  %1440 = getelementptr inbounds i8, ptr %120, i64 125
  %1441 = load i8, ptr %1440, align 1, !tbaa !114, !range !55, !noundef !56
  %1442 = trunc nuw i8 %1441 to i1
  br i1 %1442, label %1447, label %1443

1443:                                             ; preds = %1439
  %1444 = getelementptr inbounds i8, ptr %120, i64 129
  %1445 = load i8, ptr %1444, align 1, !tbaa !227, !range !55, !noundef !56
  %1446 = trunc nuw i8 %1445 to i1
  br i1 %1446, label %1447, label %1450

1447:                                             ; preds = %1443, %1439
  %1448 = load ptr, ptr %4, align 8, !tbaa !5
  %1449 = getelementptr inbounds i8, ptr %1448, i64 168
  store i32 1, ptr %1449, align 8, !tbaa !97
  br label %1450

1450:                                             ; preds = %1438, %1443, %1447, %1405
  %1451 = load float, ptr %64, align 4, !tbaa !228
  %1452 = fcmp ugt float %1451, 0.000000e+00
  %.pre522 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert524 = getelementptr inbounds i8, ptr %.pre522, i64 168
  br i1 %1452, label %1453, label %.thread543

.thread543:                                       ; preds = %1450
  store i32 1, ptr %.phi.trans.insert524, align 8, !tbaa !97
  br label %1460

1453:                                             ; preds = %1450
  %.pre525 = load i32, ptr %.phi.trans.insert524, align 8, !tbaa !97
  %1454 = icmp sgt i32 %.pre525, 0
  br i1 %1454, label %1460, label %1455

1455:                                             ; preds = %1453
  %1456 = getelementptr inbounds i8, ptr %.pre522, i64 172
  %1457 = load i32, ptr %1456, align 4, !tbaa !72
  %1458 = icmp ne i32 %1457, 0
  %1459 = zext i1 %1458 to i8
  br label %1460

1460:                                             ; preds = %.thread543, %1455, %1453
  %1461 = phi i8 [ 1, %1453 ], [ %1459, %1455 ], [ 1, %.thread543 ]
  %1462 = getelementptr inbounds i8, ptr %.pre522, i64 129
  store i8 %1461, ptr %1462, align 1, !tbaa !227
  %1463 = getelementptr inbounds i8, ptr %.pre522, i64 125
  %1464 = load i8, ptr %1463, align 1, !tbaa !114, !range !55, !noundef !56
  %1465 = trunc nuw i8 %1464 to i1
  br i1 %1465, label %1472, label %1466

1466:                                             ; preds = %1460
  %1467 = getelementptr inbounds i8, ptr %.pre522, i64 122
  %1468 = load i8, ptr %1467, align 2, !tbaa !90, !range !55, !noundef !56
  %1469 = trunc nuw i8 %1468 to i1
  br i1 %1469, label %1470, label %1472

1470:                                             ; preds = %1466
  %1471 = trunc nuw i8 %1461 to i1
  br i1 %1471, label %1472, label %1485

1472:                                             ; preds = %1470, %1466, %1460
  %1473 = getelementptr inbounds i8, ptr %.pre522, i64 148
  %1474 = load i32, ptr %1473, align 4, !tbaa !117
  %1475 = icmp slt i32 %1474, 1
  br i1 %1475, label %1476, label %1485

1476:                                             ; preds = %1472
  %1477 = getelementptr inbounds i8, ptr %.pre522, i64 152
  %1478 = load i32, ptr %1477, align 8, !tbaa !118
  %1479 = icmp slt i32 %1478, 1
  br i1 %1479, label %1480, label %1485

1480:                                             ; preds = %1476
  %1481 = getelementptr inbounds i8, ptr %.pre522, i64 172
  %1482 = load i32, ptr %1481, align 4, !tbaa !72
  %1483 = icmp slt i32 %1482, 1
  %1484 = zext i1 %1483 to i8
  br label %1485

1485:                                             ; preds = %1480, %1476, %1472, %1470
  %1486 = phi i8 [ 0, %1476 ], [ 0, %1472 ], [ 0, %1470 ], [ %1484, %1480 ]
  %1487 = getelementptr inbounds i8, ptr %.pre522, i64 127
  store i8 %1486, ptr %1487, align 1, !tbaa !229
  %1488 = trunc nuw i8 %1486 to i1
  %1489 = xor i1 %1488, true
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14
  ret i1 %1489
}

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

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

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

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

; 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: mustprogress nounwind uwtable
declare hidden void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_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 uwtable
declare hidden void @_ZL13SetWindowSizeP11ImGuiWindowRK6ImVec2i(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) local_unnamed_addr #8

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef) local_unnamed_addr #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 #8

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

declare void @_ZN5ImGui9ScrollbarEi(i32 noundef) local_unnamed_addr #10

; 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> } @_ZL19GetResizeBorderRectP11ImGuiWindowiff(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 #8

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN5ImGui14CollapseButtonEjRK6ImVec2(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #10

declare noundef zeroext i1 @_ZN5ImGui11CloseButtonEjRK6ImVec2f(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), float noundef) local_unnamed_addr #10

; 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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 #8 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 1}
!10 = !{!"_ZTS12ImGuiContext", !11, i64 0, !11, i64 1, !11, i64 2, !12, i64 8, !16, i64 5440, !6, i64 6280, !15, i64 6288, !15, i64 6292, !17, i64 6296, !19, i64 6432, !13, i64 6440, !13, i64 6444, !13, i64 6448, !20, i64 6456, !20, i64 6472, !20, i64 6488, !20, i64 6504, !21, i64 6520, !13, i64 6536, !6, i64 6544, !6, i64 6552, !6, i64 6560, !13, i64 6568, !11, i64 6572, !13, i64 6576, !15, i64 6580, !13, i64 6584, !13, i64 6588, !13, i64 6592, !15, i64 6596, !11, i64 6600, !11, i64 6601, !11, i64 6602, !11, i64 6603, !11, i64 6604, !13, i64 6608, !14, i64 6612, !6, i64 6624, !6, i64 6632, !23, i64 6640, !13, i64 6644, !15, i64 6648, !6, i64 6656, !24, i64 6664, !25, i64 6680, !26, i64 6696, !27, i64 6712, !27, i64 6728, !28, i64 6744, !11, i64 6856, !13, i64 6860, !6, i64 6864, !13, i64 6872, !13, i64 6876, !13, i64 6880, !13, i64 6884, !13, i64 6888, !13, i64 6892, !13, i64 6896, !13, i64 6900, !23, i64 6904, !29, i64 6908, !13, i64 6924, !6, i64 6928, !6, i64 6936, !6, i64 6944, !15, i64 6952, !15, i64 6956, !11, i64 6960, !13, i64 6964, !13, i64 6968, !11, i64 6972, !11, i64 6973, !11, i64 6974, !11, i64 6975, !11, i64 6976, !11, i64 6977, !11, i64 6978, !13, i64 6980, !29, i64 6984, !11, i64 7000, !11, i64 7001, !13, i64 7004, !30, i64 7008, !13, i64 7012, !13, i64 7016, !13, i64 7020, !31, i64 7024, !31, i64 7072, !31, i64 7120, !32, i64 7168, !33, i64 7216, !15, i64 7248, !34, i64 7256, !13, i64 7424, !11, i64 7428, !11, i64 7429, !13, i64 7432, !13, i64 7436, !13, i64 7440, !42, i64 7448, !29, i64 7512, !13, i64 7528, !13, i64 7532, !15, i64 7536, !13, i64 7540, !13, i64 7544, !13, i64 7548, !43, i64 7552, !7, i64 7568, !44, i64 7576, !49, i64 11296, !13, i64 11408, !13, i64 11412, !18, i64 11416, !11, i64 11432, !15, i64 11436, !15, i64 11440, !14, i64 11444, !13, i64 11452, !45, i64 11456, !14, i64 11472, !14, i64 11480, !11, i64 11488, !15, i64 11492, !52, i64 11496, !53, i64 11512, !54, i64 11528, !11, i64 11544, !6, i64 11552, !52, i64 11560, !13, i64 11576, !13, i64 11580, !7, i64 11584, !13, i64 12064, !15, i64 12068, !13, i64 12072, !13, i64 12076, !13, i64 12080, !7, i64 12084}
!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, !11, i64 202, !11, i64 203, !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, !7, i64 284, !7, i64 796, !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, !13, i64 940, !13, i64 944, !14, i64 948, !14, i64 956, !7, i64 964, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1088, !7, i64 1108, !7, i64 1148, !7, i64 1168, !7, i64 3216, !7, i64 5264, !7, i64 5348}
!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 = !{!"double", !7, i64 0}
!20 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !13, i64 0, !13, i64 4, !6, i64 8}
!21 = !{!"_ZTS12ImGuiStorage", !22, i64 0}
!22 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !13, i64 0, !13, i64 4, !6, i64 8}
!23 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!24 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !13, i64 0, !13, i64 4, !6, i64 8}
!25 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !13, i64 0, !13, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorIP6ImFontE", !13, i64 0, !13, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorI13ImGuiPopupRefE", !13, i64 0, !13, i64 4, !6, i64 8}
!28 = !{!"_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, !29, i64 64, !6, i64 80, !6, i64 88, !15, i64 96, !14, i64 100}
!29 = !{!"_ZTS6ImRect", !14, i64 0, !14, i64 8}
!30 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!31 = !{!"_ZTS18ImGuiNavMoveResult", !13, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24, !29, i64 28}
!32 = !{!"_ZTS10ImDrawData", !11, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !13, i64 24, !14, i64 28, !14, i64 36}
!33 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!34 = !{!"_ZTS10ImDrawList", !35, i64 0, !36, i64 16, !37, i64 32, !13, i64 48, !6, i64 56, !6, i64 64, !13, i64 72, !6, i64 80, !6, i64 88, !38, i64 96, !39, i64 112, !40, i64 128, !13, i64 144, !13, i64 148, !41, i64 152}
!35 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !13, i64 0, !13, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorItE", !13, i64 0, !13, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorI10ImDrawVertE", !13, i64 0, !13, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI6ImVec4E", !13, i64 0, !13, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorIPvE", !13, i64 0, !13, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorI6ImVec2E", !13, i64 0, !13, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !13, i64 0, !13, i64 4, !6, i64 8}
!42 = !{!"_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}
!43 = !{!"_ZTS8ImVectorIhE", !13, i64 0, !13, i64 4, !6, i64 8}
!44 = !{!"_ZTS19ImGuiInputTextState", !13, i64 0, !36, i64 8, !45, i64 24, !45, i64 40, !13, i64 56, !13, i64 60, !13, i64 64, !15, i64 68, !46, i64 72, !15, i64 3692, !11, i64 3696, !11, i64 3697, !13, i64 3700, !6, i64 3704, !6, i64 3712}
!45 = !{!"_ZTS8ImVectorIcE", !13, i64 0, !13, i64 4, !6, i64 8}
!46 = !{!"_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, !47, i64 24}
!47 = !{!"_ZTSN8ImGuiStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !48, i64 3582, !48, i64 3584, !13, i64 3588, !13, i64 3592}
!48 = !{!"short", !7, i64 0}
!49 = !{!"_ZTS6ImFont", !15, i64 0, !15, i64 4, !14, i64 8, !50, i64 16, !51, i64 32, !36, i64 48, !6, i64 64, !15, i64 72, !48, i64 76, !48, i64 78, !6, i64 80, !6, i64 88, !15, i64 96, !15, i64 100, !11, i64 104, !13, i64 108}
!50 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !13, i64 0, !13, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorIfE", !13, i64 0, !13, i64 4, !6, i64 8}
!52 = !{!"_ZTS15ImGuiTextBuffer", !45, i64 0}
!53 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !13, i64 0, !13, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !13, i64 0, !13, i64 4, !6, i64 8}
!55 = !{i8 0, i8 2}
!56 = !{}
!57 = !{!10, !13, i64 6444}
!58 = !{!10, !13, i64 6440}
!59 = !{!10, !13, i64 6748}
!60 = !{!61, !13, i64 608}
!61 = !{!"_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, !11, i64 130, !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, !13, i64 184, !14, i64 188, !14, i64 196, !62, i64 208, !66, i64 512, !29, i64 528, !29, i64 544, !29, i64 560, !29, i64 576, !29, i64 592, !13, i64 608, !15, i64 612, !67, i64 616, !21, i64 664, !68, i64 680, !15, i64 696, !13, i64 700, !6, i64 704, !34, i64 712, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !7, i64 920, !7, i64 928, !13, i64 960, !13, i64 964, !13, i64 968, !13, i64 972, !13, i64 976, !13, i64 980}
!62 = !{!"_ZTS19ImGuiWindowTempData", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !15, i64 40, !14, i64 44, !15, i64 52, !15, i64 56, !13, i64 60, !13, i64 64, !13, i64 68, !13, i64 72, !29, i64 76, !29, i64 92, !11, i64 108, !11, i64 109, !13, i64 112, !13, i64 116, !13, i64 120, !13, i64 124, !11, i64 128, !14, i64 132, !20, i64 144, !6, i64 160, !13, i64 168, !13, i64 172, !13, i64 176, !15, i64 180, !15, i64 184, !63, i64 192, !51, i64 208, !51, i64 224, !64, i64 240, !7, i64 256, !65, i64 280, !65, i64 284, !65, i64 288, !6, i64 296}
!63 = !{!"_ZTS8ImVectorIiE", !13, i64 0, !13, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!65 = !{!"_ZTS6ImVec1", !15, i64 0}
!66 = !{!"_ZTS8ImVectorIjE", !13, i64 0, !13, i64 4, !6, i64 8}
!67 = !{!"_ZTS16ImGuiMenuColumns", !13, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !7, i64 16, !7, i64 32}
!68 = !{!"_ZTS8ImVectorI15ImGuiColumnsSetE", !13, i64 0, !13, i64 4, !6, i64 8}
!69 = !{!61, !13, i64 12}
!70 = !{!61, !6, i64 880}
!71 = !{!61, !11, i64 130}
!72 = !{!61, !13, i64 172}
!73 = !{!10, !13, i64 6728}
!74 = !{!61, !13, i64 144}
!75 = !{!76, !13, i64 0}
!76 = !{!"_ZTS13ImGuiPopupRef", !13, i64 0, !6, i64 8, !6, i64 16, !13, i64 24, !13, i64 28, !14, i64 32, !14, i64 40}
!77 = !{!76, !6, i64 8}
!78 = !{!61, !11, i64 128}
!79 = !{!13, !13, i64 0}
!80 = !{!10, !13, i64 6744}
!81 = !{!61, !13, i64 176}
!82 = !{!61, !13, i64 180}
!83 = !{!10, !15, i64 6788}
!84 = !{!10, !15, i64 6792}
!85 = !{!10, !13, i64 6752}
!86 = !{!61, !15, i64 60}
!87 = !{!10, !13, i64 6756}
!88 = !{!10, !11, i64 6804}
!89 = !{!10, !13, i64 6764}
!90 = !{!61, !11, i64 122}
!91 = !{!61, !13, i64 136}
!92 = !{!10, !13, i64 6536}
!93 = !{!61, !13, i64 140}
!94 = !{!61, !13, i64 132}
!95 = !{i64 0, i64 4, !96, i64 4, i64 4, !96, i64 8, i64 4, !96, i64 12, i64 4, !96}
!96 = !{!15, !15, i64 0}
!97 = !{!61, !13, i64 168}
!98 = !{!61, !15, i64 32}
!99 = !{!61, !15, i64 24}
!100 = !{!61, !15, i64 36}
!101 = !{!61, !15, i64 28}
!102 = !{!61, !15, i64 76}
!103 = !{!16, !15, i64 8}
!104 = !{!16, !15, i64 68}
!105 = !{!10, !15, i64 6844}
!106 = !{!61, !15, i64 340}
!107 = !{!10, !15, i64 6848}
!108 = !{!61, !15, i64 344}
!109 = !{!10, !6, i64 6552}
!110 = !{!10, !13, i64 6568}
!111 = !{!10, !13, i64 6576}
!112 = !{!11, !11, i64 0}
!113 = !{!61, !11, i64 126}
!114 = !{!61, !11, i64 125}
!115 = !{!14, !15, i64 0}
!116 = !{!14, !15, i64 4}
!117 = !{!61, !13, i64 148}
!118 = !{!61, !13, i64 152}
!119 = !{!61, !11, i64 156}
!120 = !{!61, !15, i64 52}
!121 = !{!61, !11, i64 121}
!122 = !{!61, !11, i64 120}
!123 = !{!61, !15, i64 48}
!124 = !{!16, !15, i64 100}
!125 = !{!61, !13, i64 164}
!126 = !{!61, !13, i64 352}
!127 = !{!61, !15, i64 188}
!128 = !{!10, !15, i64 16}
!129 = !{!10, !15, i64 20}
!130 = !{!61, !15, i64 72}
!131 = !{!61, !13, i64 976}
!132 = !{!61, !13, i64 960}
!133 = !{!61, !13, i64 968}
!134 = !{!61, !13, i64 980}
!135 = !{!61, !13, i64 964}
!136 = !{!61, !13, i64 972}
!137 = !{!10, !11, i64 211}
!138 = !{!10, !15, i64 6288}
!139 = !{!61, !6, i64 704}
!140 = !{!10, !11, i64 5584}
!141 = !{!10, !11, i64 5585}
!142 = !{!34, !13, i64 48}
!143 = !{!10, !6, i64 6280}
!144 = !{!49, !6, i64 88}
!145 = !{!146, !6, i64 8}
!146 = !{!"_ZTS11ImFontAtlas", !11, i64 0, !13, i64 4, !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, !26, i64 64, !147, i64 80, !148, i64 96, !7, i64 112}
!147 = !{!"_ZTS8ImVectorIN11ImFontAtlas10CustomRectEE", !13, i64 0, !13, i64 4, !6, i64 8}
!148 = !{!"_ZTS8ImVectorI12ImFontConfigE", !13, i64 0, !13, i64 4, !6, i64 8}
!149 = !{!10, !6, i64 6936}
!150 = !{!61, !6, i64 888}
!151 = !{!10, !15, i64 7248}
!152 = !{!10, !15, i64 6956}
!153 = !{!10, !15, i64 5452}
!154 = !{!10, !6, i64 6928}
!155 = !{!10, !6, i64 6864}
!156 = !{!61, !6, i64 896}
!157 = !{!16, !15, i64 64}
!158 = !{!10, !15, i64 5504}
!159 = !{!10, !11, i64 6974}
!160 = !{!10, !13, i64 6768}
!161 = !{!10, !15, i64 6840}
!162 = !{!29, !15, i64 12}
!163 = !{!61, !15, i64 20}
!164 = !{!165, !15, i64 8}
!165 = !{!"_ZTS18ImGuiResizeGripDef", !14, i64 0, !14, i64 8, !13, i64 16, !13, i64 20}
!166 = !{!165, !15, i64 12}
!167 = !{!165, !13, i64 16}
!168 = !{!165, !13, i64 20}
!169 = distinct !{!169, !170}
!170 = !{!"llvm.loop.mustprogress"}
!171 = !{!16, !15, i64 16}
!172 = !{!61, !15, i64 16}
!173 = !{!61, !15, i64 88}
!174 = !{!61, !15, i64 64}
!175 = !{!61, !15, i64 592}
!176 = !{!61, !15, i64 92}
!177 = !{!61, !15, i64 68}
!178 = !{!61, !15, i64 596}
!179 = !{!61, !15, i64 56}
!180 = !{!61, !15, i64 112}
!181 = !{!61, !15, i64 600}
!182 = !{!61, !15, i64 116}
!183 = !{!61, !15, i64 604}
!184 = !{!61, !15, i64 488}
!185 = !{!61, !15, i64 260}
!186 = !{!61, !15, i64 248}
!187 = !{!61, !11, i64 316}
!188 = !{!61, !11, i64 317}
!189 = !{!61, !13, i64 332}
!190 = !{!61, !13, i64 328}
!191 = !{!61, !11, i64 336}
!192 = !{!61, !15, i64 212}
!193 = !{!61, !15, i64 264}
!194 = !{!61, !13, i64 376}
!195 = !{!61, !13, i64 384}
!196 = !{!61, !15, i64 612}
!197 = !{!61, !15, i64 388}
!198 = !{!61, !15, i64 392}
!199 = !{!61, !6, i64 504}
!200 = !{!61, !13, i64 268}
!201 = !{!61, !13, i64 272}
!202 = !{!61, !6, i64 368}
!203 = !{!61, !13, i64 320}
!204 = !{!61, !13, i64 324}
!205 = !{!16, !15, i64 56}
!206 = !{!16, !15, i64 52}
!207 = !{!16, !15, i64 76}
!208 = !{!16, !15, i64 28}
!209 = !{!29, !15, i64 0}
!210 = !{!29, !15, i64 8}
!211 = !{!61, !15, i64 560}
!212 = !{!61, !15, i64 564}
!213 = !{!61, !15, i64 576}
!214 = !{!61, !15, i64 580}
!215 = !{!61, !15, i64 568}
!216 = !{!61, !15, i64 584}
!217 = !{!61, !15, i64 572}
!218 = !{!61, !15, i64 588}
!219 = !{!61, !13, i64 80}
!220 = !{!61, !13, i64 276}
!221 = !{!61, !13, i64 280}
!222 = !{!61, !11, i64 124}
!223 = !{!61, !15, i64 544}
!224 = !{!61, !15, i64 552}
!225 = !{!61, !15, i64 548}
!226 = !{!61, !15, i64 556}
!227 = !{!61, !11, i64 129}
!228 = !{!16, !15, i64 0}
!229 = !{!61, !11, i64 127}


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