; LLVM IR from Eukky/TRender :: lib/imgui/imgui.ll (ZN5ImGui8NewFrameEv)

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

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [109 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv = external hidden unnamed_addr constant [23 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [156 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [187 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [15 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> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8), float noundef) #3

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui13ClearActiveIDEv() #1

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui18UpdateMovingWindowEv() #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui34UpdateHoveredWindowAndCaptureFlagsEv() #9

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5ImGui8NewFrameEv() #8 {
  %1 = alloca ptr, align 8
  %2 = alloca i32, align 4
  %3 = alloca %struct.ImVec4, align 4
  %4 = alloca i32, align 4
  %5 = alloca %struct.ImVec2, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i8, align 1
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca %struct.ImVec2, align 4
  %12 = alloca %struct.ImVec2, align 4
  %13 = alloca %struct.ImVec2, align 4
  %14 = alloca %struct.ImVec2, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca %struct.ImVec2, align 4
  %20 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %21 = icmp ne ptr %20, null
  br i1 %21, label %22, label %23

22:                                               ; preds = %0
  br label %23

23:                                               ; preds = %22, %0
  %24 = phi i1 [ false, %0 ], [ true, %22 ]
  br i1 %24, label %25, label %26

25:                                               ; preds = %23
  br label %28

26:                                               ; preds = %23
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.3, i32 noundef 3656, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

27:                                               ; No predecessors!
  br label %28

28:                                               ; preds = %27, %25
  call void @llvm.lifetime.start.p0(i64 8, ptr %1) #13
  %29 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %29, ptr %1, align 8, !tbaa !5
  %30 = load ptr, ptr %1, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.ImGuiContext, ptr %30, i32 0, i32 0
  %32 = load i8, ptr %31, align 8, !tbaa !9, !range !54, !noundef !55
  %33 = trunc i8 %32 to i1
  br i1 %33, label %34, label %35

34:                                               ; preds = %28
  br label %37

35:                                               ; preds = %28
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.3, i32 noundef 3661, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

36:                                               ; No predecessors!
  br label %37

37:                                               ; preds = %36, %34
  %38 = load ptr, ptr %1, align 8, !tbaa !5
  %39 = getelementptr inbounds %struct.ImGuiContext, ptr %38, i32 0, i32 3
  %40 = getelementptr inbounds %struct.ImGuiIO, ptr %39, i32 0, i32 3
  %41 = load float, ptr %40, align 8, !tbaa !56
  %42 = fcmp oge float %41, 0.000000e+00
  br i1 %42, label %43, label %44

43:                                               ; preds = %37
  br label %44

44:                                               ; preds = %43, %37
  %45 = phi i1 [ false, %37 ], [ true, %43 ]
  br i1 %45, label %46, label %47

46:                                               ; preds = %44
  br label %49

47:                                               ; preds = %44
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str.3, i32 noundef 3662, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

48:                                               ; No predecessors!
  br label %49

49:                                               ; preds = %48, %46
  %50 = load ptr, ptr %1, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.ImGuiContext, ptr %50, i32 0, i32 3
  %52 = getelementptr inbounds %struct.ImGuiIO, ptr %51, i32 0, i32 2
  %53 = getelementptr inbounds %struct.ImVec2, ptr %52, i32 0, i32 0
  %54 = load float, ptr %53, align 8, !tbaa !57
  %55 = fcmp oge float %54, 0.000000e+00
  br i1 %55, label %56, label %64

56:                                               ; preds = %49
  %57 = load ptr, ptr %1, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.ImGuiContext, ptr %57, i32 0, i32 3
  %59 = getelementptr inbounds %struct.ImGuiIO, ptr %58, i32 0, i32 2
  %60 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 1
  %61 = load float, ptr %60, align 4, !tbaa !58
  %62 = fcmp oge float %61, 0.000000e+00
  br i1 %62, label %63, label %64

63:                                               ; preds = %56
  br label %64

64:                                               ; preds = %63, %56, %49
  %65 = phi i1 [ false, %56 ], [ false, %49 ], [ true, %63 ]
  br i1 %65, label %66, label %67

66:                                               ; preds = %64
  br label %69

67:                                               ; preds = %64
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str.3, i32 noundef 3663, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

68:                                               ; No predecessors!
  br label %69

69:                                               ; preds = %68, %66
  %70 = load ptr, ptr %1, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.ImGuiContext, ptr %70, i32 0, i32 3
  %72 = getelementptr inbounds %struct.ImGuiIO, ptr %71, i32 0, i32 14
  %73 = load ptr, ptr %72, align 8, !tbaa !59
  %74 = getelementptr inbounds %struct.ImFontAtlas, ptr %73, i32 0, i32 11
  %75 = getelementptr inbounds %class.ImVector.3, ptr %74, i32 0, i32 0
  %76 = load i32, ptr %75, align 8, !tbaa !60
  %77 = icmp sgt i32 %76, 0
  br i1 %77, label %78, label %79

78:                                               ; preds = %69
  br label %79

79:                                               ; preds = %78, %69
  %80 = phi i1 [ false, %69 ], [ true, %78 ]
  br i1 %80, label %81, label %82

81:                                               ; preds = %79
  br label %84

82:                                               ; preds = %79
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.3, i32 noundef 3664, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

83:                                               ; No predecessors!
  br label %84

84:                                               ; preds = %83, %81
  %85 = load ptr, ptr %1, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.ImGuiContext, ptr %85, i32 0, i32 3
  %87 = getelementptr inbounds %struct.ImGuiIO, ptr %86, i32 0, i32 14
  %88 = load ptr, ptr %87, align 8, !tbaa !59
  %89 = getelementptr inbounds %struct.ImFontAtlas, ptr %88, i32 0, i32 11
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP6ImFontEixEi(ptr noundef nonnull align 8 dereferenceable(16) %89, i32 noundef 0)
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %92 = call noundef zeroext i1 @_ZNK6ImFont8IsLoadedEv(ptr noundef nonnull align 8 dereferenceable(112) %91)
  br i1 %92, label %93, label %94

93:                                               ; preds = %84
  br label %94

94:                                               ; preds = %93, %84
  %95 = phi i1 [ false, %84 ], [ true, %93 ]
  br i1 %95, label %96, label %97

96:                                               ; preds = %94
  br label %99

97:                                               ; preds = %94
  call void @__assert_fail(ptr noundef @.str.33, ptr noundef @.str.3, i32 noundef 3665, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

98:                                               ; No predecessors!
  br label %99

99:                                               ; preds = %98, %96
  %100 = load ptr, ptr %1, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.ImGuiContext, ptr %100, i32 0, i32 4
  %102 = getelementptr inbounds %struct.ImGuiStyle, ptr %101, i32 0, i32 28
  %103 = load float, ptr %102, align 4, !tbaa !64
  %104 = fcmp ogt float %103, 0.000000e+00
  br i1 %104, label %105, label %106

105:                                              ; preds = %99
  br label %106

106:                                              ; preds = %105, %99
  %107 = phi i1 [ false, %99 ], [ true, %105 ]
  br i1 %107, label %108, label %109

108:                                              ; preds = %106
  br label %111

109:                                              ; preds = %106
  call void @__assert_fail(ptr noundef @.str.35, ptr noundef @.str.3, i32 noundef 3666, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

110:                                              ; No predecessors!
  br label %111

111:                                              ; preds = %110, %108
  %112 = load ptr, ptr %1, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.ImGuiContext, ptr %112, i32 0, i32 4
  %114 = getelementptr inbounds %struct.ImGuiStyle, ptr %113, i32 0, i32 0
  %115 = load float, ptr %114, align 8, !tbaa !65
  %116 = fcmp oge float %115, 0.000000e+00
  br i1 %116, label %117, label %124

117:                                              ; preds = %111
  %118 = load ptr, ptr %1, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.ImGuiContext, ptr %118, i32 0, i32 4
  %120 = getelementptr inbounds %struct.ImGuiStyle, ptr %119, i32 0, i32 0
  %121 = load float, ptr %120, align 8, !tbaa !65
  %122 = fcmp ole float %121, 1.000000e+00
  br i1 %122, label %123, label %124

123:                                              ; preds = %117
  br label %124

124:                                              ; preds = %123, %117, %111
  %125 = phi i1 [ false, %117 ], [ false, %111 ], [ true, %123 ]
  br i1 %125, label %126, label %127

126:                                              ; preds = %124
  br label %129

127:                                              ; preds = %124
  call void @__assert_fail(ptr noundef @.str.37, ptr noundef @.str.3, i32 noundef 3667, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

128:                                              ; No predecessors!
  br label %129

129:                                              ; preds = %128, %126
  %130 = load ptr, ptr %1, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.ImGuiContext, ptr %130, i32 0, i32 10
  %132 = load i32, ptr %131, align 4, !tbaa !66
  %133 = icmp eq i32 %132, 0
  br i1 %133, label %142, label %134

134:                                              ; preds = %129
  %135 = load ptr, ptr %1, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.ImGuiContext, ptr %135, i32 0, i32 11
  %137 = load i32, ptr %136, align 8, !tbaa !67
  %138 = load ptr, ptr %1, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.ImGuiContext, ptr %138, i32 0, i32 10
  %140 = load i32, ptr %139, align 4, !tbaa !66
  %141 = icmp eq i32 %137, %140
  br i1 %141, label %142, label %143

142:                                              ; preds = %134, %129
  br label %143

143:                                              ; preds = %142, %134
  %144 = phi i1 [ false, %134 ], [ true, %142 ]
  br i1 %144, label %145, label %146

145:                                              ; preds = %143
  br label %148

146:                                              ; preds = %143
  call void @__assert_fail(ptr noundef @.str.39, ptr noundef @.str.3, i32 noundef 3668, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

147:                                              ; No predecessors!
  br label %148

148:                                              ; preds = %147, %145
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #13
  store i32 0, ptr %2, align 4, !tbaa !68
  br label %149

149:                                              ; preds = %178, %148
  %150 = load i32, ptr %2, align 4, !tbaa !68
  %151 = icmp slt i32 %150, 21
  br i1 %151, label %153, label %152

152:                                              ; preds = %149
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #13
  br label %181

153:                                              ; preds = %149
  %154 = load ptr, ptr %1, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.ImGuiContext, ptr %154, i32 0, i32 3
  %156 = getelementptr inbounds %struct.ImGuiIO, ptr %155, i32 0, i32 10
  %157 = load i32, ptr %2, align 4, !tbaa !68
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds [21 x i32], ptr %156, i64 0, i64 %158
  %160 = load i32, ptr %159, align 4, !tbaa !68
  %161 = icmp sge i32 %160, -1
  br i1 %161, label %162, label %172

162:                                              ; preds = %153
  %163 = load ptr, ptr %1, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.ImGuiContext, ptr %163, i32 0, i32 3
  %165 = getelementptr inbounds %struct.ImGuiIO, ptr %164, i32 0, i32 10
  %166 = load i32, ptr %2, align 4, !tbaa !68
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds [21 x i32], ptr %165, i64 0, i64 %167
  %169 = load i32, ptr %168, align 4, !tbaa !68
  %170 = icmp slt i32 %169, 512
  br i1 %170, label %171, label %172

171:                                              ; preds = %162
  br label %172

172:                                              ; preds = %171, %162, %153
  %173 = phi i1 [ false, %162 ], [ false, %153 ], [ true, %171 ]
  br i1 %173, label %174, label %175

174:                                              ; preds = %172
  br label %177

175:                                              ; preds = %172
  call void @__assert_fail(ptr noundef @.str.41, ptr noundef @.str.3, i32 noundef 3670, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

176:                                              ; No predecessors!
  br label %177

177:                                              ; preds = %176, %174
  br label %178

178:                                              ; preds = %177
  %179 = load i32, ptr %2, align 4, !tbaa !68
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %2, align 4, !tbaa !68
  br label %149, !llvm.loop !69

181:                                              ; preds = %152
  %182 = load ptr, ptr %1, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.ImGuiContext, ptr %182, i32 0, i32 3
  %184 = getelementptr inbounds %struct.ImGuiIO, ptr %183, i32 0, i32 0
  %185 = load i32, ptr %184, align 8, !tbaa !71
  %186 = and i32 %185, 1
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %188, label %202

188:                                              ; preds = %181
  %189 = load ptr, ptr %1, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.ImGuiContext, ptr %189, i32 0, i32 3
  %191 = getelementptr inbounds %struct.ImGuiIO, ptr %190, i32 0, i32 10
  %192 = getelementptr inbounds [21 x i32], ptr %191, i64 0, i64 12
  %193 = load i32, ptr %192, align 4, !tbaa !68
  %194 = icmp ne i32 %193, -1
  br i1 %194, label %195, label %196

195:                                              ; preds = %188
  br label %196

196:                                              ; preds = %195, %188
  %197 = phi i1 [ false, %188 ], [ true, %195 ]
  br i1 %197, label %198, label %199

198:                                              ; preds = %196
  br label %201

199:                                              ; preds = %196
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.3, i32 noundef 3674, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

200:                                              ; No predecessors!
  br label %201

201:                                              ; preds = %200, %198
  br label %202

202:                                              ; preds = %201, %181
  %203 = load ptr, ptr %1, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.ImGuiContext, ptr %203, i32 0, i32 129
  %205 = load i8, ptr %204, align 8, !tbaa !72, !range !54, !noundef !55
  %206 = trunc i8 %205 to i1
  br i1 %206, label %228, label %207

207:                                              ; preds = %202
  %208 = load ptr, ptr %1, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.ImGuiContext, ptr %208, i32 0, i32 134
  %210 = call noundef zeroext i1 @_ZNK8ImVectorI19ImGuiWindowSettingsE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %209)
  br i1 %210, label %211, label %212

211:                                              ; preds = %207
  br label %214

212:                                              ; preds = %207
  call void @__assert_fail(ptr noundef @.str.44, ptr noundef @.str.3, i32 noundef 3679, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

213:                                              ; No predecessors!
  br label %214

214:                                              ; preds = %213, %211
  %215 = load ptr, ptr %1, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.ImGuiContext, ptr %215, i32 0, i32 3
  %217 = getelementptr inbounds %struct.ImGuiIO, ptr %216, i32 0, i32 5
  %218 = load ptr, ptr %217, align 8, !tbaa !73
  %219 = icmp ne ptr %218, null
  br i1 %219, label %220, label %225

220:                                              ; preds = %214
  %221 = load ptr, ptr %1, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.ImGuiContext, ptr %221, i32 0, i32 3
  %223 = getelementptr inbounds %struct.ImGuiIO, ptr %222, i32 0, i32 5
  %224 = load ptr, ptr %223, align 8, !tbaa !73
  call void @_ZN5ImGui23LoadIniSettingsFromDiskEPKc(ptr noundef %224)
  br label %225

225:                                              ; preds = %220, %214
  %226 = load ptr, ptr %1, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.ImGuiContext, ptr %226, i32 0, i32 129
  store i8 1, ptr %227, align 8, !tbaa !72
  br label %228

228:                                              ; preds = %225, %202
  %229 = load ptr, ptr %1, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.ImGuiContext, ptr %229, i32 0, i32 131
  %231 = load float, ptr %230, align 4, !tbaa !74
  %232 = fcmp ogt float %231, 0.000000e+00
  br i1 %232, label %233, label %265

233:                                              ; preds = %228
  %234 = load ptr, ptr %1, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.ImGuiContext, ptr %234, i32 0, i32 3
  %236 = getelementptr inbounds %struct.ImGuiIO, ptr %235, i32 0, i32 3
  %237 = load float, ptr %236, align 8, !tbaa !56
  %238 = load ptr, ptr %1, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.ImGuiContext, ptr %238, i32 0, i32 131
  %240 = load float, ptr %239, align 4, !tbaa !74
  %241 = fsub float %240, %237
  store float %241, ptr %239, align 4, !tbaa !74
  %242 = load ptr, ptr %1, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.ImGuiContext, ptr %242, i32 0, i32 131
  %244 = load float, ptr %243, align 4, !tbaa !74
  %245 = fcmp ole float %244, 0.000000e+00
  br i1 %245, label %246, label %264

246:                                              ; preds = %233
  %247 = load ptr, ptr %1, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.ImGuiContext, ptr %247, i32 0, i32 3
  %249 = getelementptr inbounds %struct.ImGuiIO, ptr %248, i32 0, i32 5
  %250 = load ptr, ptr %249, align 8, !tbaa !73
  %251 = icmp ne ptr %250, null
  br i1 %251, label %252, label %257

252:                                              ; preds = %246
  %253 = load ptr, ptr %1, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.ImGuiContext, ptr %253, i32 0, i32 3
  %255 = getelementptr inbounds %struct.ImGuiIO, ptr %254, i32 0, i32 5
  %256 = load ptr, ptr %255, align 8, !tbaa !73
  call void @_ZN5ImGui21SaveIniSettingsToDiskEPKc(ptr noundef %256)
  br label %261

257:                                              ; preds = %246
  %258 = load ptr, ptr %1, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.ImGuiContext, ptr %258, i32 0, i32 3
  %260 = getelementptr inbounds %struct.ImGuiIO, ptr %259, i32 0, i32 45
  store i8 1, ptr %260, align 8, !tbaa !75
  br label %261

261:                                              ; preds = %257, %252
  %262 = load ptr, ptr %1, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.ImGuiContext, ptr %262, i32 0, i32 131
  store float 0.000000e+00, ptr %263, align 4, !tbaa !74
  br label %264

264:                                              ; preds = %261, %233
  br label %265

265:                                              ; preds = %264, %228
  %266 = load ptr, ptr %1, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.ImGuiContext, ptr %266, i32 0, i32 3
  %268 = getelementptr inbounds %struct.ImGuiIO, ptr %267, i32 0, i32 3
  %269 = load float, ptr %268, align 8, !tbaa !56
  %270 = load ptr, ptr %1, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.ImGuiContext, ptr %270, i32 0, i32 9
  %272 = load float, ptr %271, align 8, !tbaa !76
  %273 = fadd float %272, %269
  store float %273, ptr %271, align 8, !tbaa !76
  %274 = load ptr, ptr %1, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.ImGuiContext, ptr %274, i32 0, i32 10
  %276 = load i32, ptr %275, align 4, !tbaa !66
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr %275, align 4, !tbaa !66
  %278 = load ptr, ptr %1, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.ImGuiContext, ptr %278, i32 0, i32 125
  store i32 0, ptr %279, align 4, !tbaa !77
  %280 = load ptr, ptr %1, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ImGuiContext, ptr %280, i32 0, i32 17
  store i32 0, ptr %281, align 8, !tbaa !78
  %282 = call noundef ptr @_ZL14GetDefaultFontv()
  call void @_ZN5ImGui14SetCurrentFontEP6ImFont(ptr noundef %282)
  %283 = load ptr, ptr %1, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.ImGuiContext, ptr %283, i32 0, i32 5
  %285 = load ptr, ptr %284, align 8, !tbaa !79
  %286 = call noundef zeroext i1 @_ZNK6ImFont8IsLoadedEv(ptr noundef nonnull align 8 dereferenceable(112) %285)
  br i1 %286, label %287, label %288

287:                                              ; preds = %265
  br label %290

288:                                              ; preds = %265
  call void @__assert_fail(ptr noundef @.str.45, ptr noundef @.str.3, i32 noundef 3705, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #12
  unreachable

289:                                              ; No predecessors!
  br label %290

290:                                              ; preds = %289, %287
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #13
  %291 = load ptr, ptr %1, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.ImGuiContext, ptr %291, i32 0, i32 3
  %293 = getelementptr inbounds %struct.ImGuiIO, ptr %292, i32 0, i32 2
  %294 = getelementptr inbounds %struct.ImVec2, ptr %293, i32 0, i32 0
  %295 = load float, ptr %294, align 8, !tbaa !57
  %296 = load ptr, ptr %1, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.ImGuiContext, ptr %296, i32 0, i32 3
  %298 = getelementptr inbounds %struct.ImGuiIO, ptr %297, i32 0, i32 2
  %299 = getelementptr inbounds %struct.ImVec2, ptr %298, i32 0, i32 1
  %300 = load float, ptr %299, align 4, !tbaa !58
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %3, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %295, float noundef %300)
  %301 = load ptr, ptr %1, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.ImGuiContext, ptr %301, i32 0, i32 8
  %303 = getelementptr inbounds %struct.ImDrawListSharedData, ptr %302, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %303, ptr align 4 %3, i64 16, i1 false), !tbaa.struct !80
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #13
  %304 = load ptr, ptr %1, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.ImGuiContext, ptr %304, i32 0, i32 4
  %306 = getelementptr inbounds %struct.ImGuiStyle, ptr %305, i32 0, i32 28
  %307 = load float, ptr %306, align 4, !tbaa !64
  %308 = load ptr, ptr %1, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.ImGuiContext, ptr %308, i32 0, i32 8
  %310 = getelementptr inbounds %struct.ImDrawListSharedData, ptr %309, i32 0, i32 3
  store float %307, ptr %310, align 4, !tbaa !82
  %311 = load ptr, ptr %1, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.ImGuiContext, ptr %311, i32 0, i32 99
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168) %312)
  %313 = load ptr, ptr %1, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.ImGuiContext, ptr %313, i32 0, i32 99
  %315 = load ptr, ptr %1, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.ImGuiContext, ptr %315, i32 0, i32 3
  %317 = getelementptr inbounds %struct.ImGuiIO, ptr %316, i32 0, i32 14
  %318 = load ptr, ptr %317, align 8, !tbaa !59
  %319 = getelementptr inbounds %struct.ImFontAtlas, ptr %318, i32 0, i32 2
  %320 = load ptr, ptr %319, align 8, !tbaa !83
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %314, ptr noundef %320)
  %321 = load ptr, ptr %1, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.ImGuiContext, ptr %321, i32 0, i32 99
  call void @_ZN10ImDrawList22PushClipRectFullScreenEv(ptr noundef nonnull align 8 dereferenceable(168) %322)
  %323 = load ptr, ptr %1, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.ImGuiContext, ptr %323, i32 0, i32 4
  %325 = getelementptr inbounds %struct.ImGuiStyle, ptr %324, i32 0, i32 26
  %326 = load i8, ptr %325, align 8, !tbaa !84, !range !54, !noundef !55
  %327 = trunc i8 %326 to i1
  %328 = zext i1 %327 to i64
  %329 = select i1 %327, i32 1, i32 0
  %330 = load ptr, ptr %1, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.ImGuiContext, ptr %330, i32 0, i32 4
  %332 = getelementptr inbounds %struct.ImGuiStyle, ptr %331, i32 0, i32 27
  %333 = load i8, ptr %332, align 1, !tbaa !85, !range !54, !noundef !55
  %334 = trunc i8 %333 to i1
  %335 = zext i1 %334 to i64
  %336 = select i1 %334, i32 2, i32 0
  %337 = or i32 %329, %336
  %338 = load ptr, ptr %1, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.ImGuiContext, ptr %338, i32 0, i32 99
  %340 = getelementptr inbounds %struct.ImDrawList, ptr %339, i32 0, i32 3
  store i32 %337, ptr %340, align 8, !tbaa !86
  %341 = load ptr, ptr %1, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImGuiContext, ptr %341, i32 0, i32 95
  call void @_ZN10ImDrawData5ClearEv(ptr noundef nonnull align 8 dereferenceable(44) %342)
  %343 = load ptr, ptr %1, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.ImGuiContext, ptr %343, i32 0, i32 25
  %345 = load i32, ptr %344, align 8, !tbaa !87
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %350, label %347

347:                                              ; preds = %290
  %348 = load ptr, ptr %1, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.ImGuiContext, ptr %348, i32 0, i32 26
  store float 0.000000e+00, ptr %349, align 4, !tbaa !88
  br label %350

350:                                              ; preds = %347, %290
  %351 = load ptr, ptr %1, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.ImGuiContext, ptr %351, i32 0, i32 22
  %353 = load i32, ptr %352, align 8, !tbaa !89
  %354 = load ptr, ptr %1, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.ImGuiContext, ptr %354, i32 0, i32 25
  store i32 %353, ptr %355, align 8, !tbaa !87
  %356 = load ptr, ptr %1, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.ImGuiContext, ptr %356, i32 0, i32 22
  store i32 0, ptr %357, align 8, !tbaa !89
  %358 = load ptr, ptr %1, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.ImGuiContext, ptr %358, i32 0, i32 23
  store i8 0, ptr %359, align 4, !tbaa !90
  %360 = load ptr, ptr %1, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.ImGuiContext, ptr %360, i32 0, i32 30
  %362 = load i8, ptr %361, align 4, !tbaa !91, !range !54, !noundef !55
  %363 = trunc i8 %362 to i1
  br i1 %363, label %378, label %364

364:                                              ; preds = %350
  %365 = load ptr, ptr %1, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.ImGuiContext, ptr %365, i32 0, i32 28
  %367 = load i32, ptr %366, align 4, !tbaa !92
  %368 = load ptr, ptr %1, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.ImGuiContext, ptr %368, i32 0, i32 27
  %370 = load i32, ptr %369, align 8, !tbaa !93
  %371 = icmp eq i32 %367, %370
  br i1 %371, label %372, label %378

372:                                              ; preds = %364
  %373 = load ptr, ptr %1, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.ImGuiContext, ptr %373, i32 0, i32 27
  %375 = load i32, ptr %374, align 8, !tbaa !93
  %376 = icmp ne i32 %375, 0
  br i1 %376, label %377, label %378

377:                                              ; preds = %372
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %378

378:                                              ; preds = %377, %372, %364, %350
  %379 = load ptr, ptr %1, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.ImGuiContext, ptr %379, i32 0, i32 27
  %381 = load i32, ptr %380, align 8, !tbaa !93
  %382 = icmp ne i32 %381, 0
  br i1 %382, label %383, label %392

383:                                              ; preds = %378
  %384 = load ptr, ptr %1, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.ImGuiContext, ptr %384, i32 0, i32 3
  %386 = getelementptr inbounds %struct.ImGuiIO, ptr %385, i32 0, i32 3
  %387 = load float, ptr %386, align 8, !tbaa !56
  %388 = load ptr, ptr %1, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.ImGuiContext, ptr %388, i32 0, i32 29
  %390 = load float, ptr %389, align 8, !tbaa !94
  %391 = fadd float %390, %387
  store float %391, ptr %389, align 8, !tbaa !94
  br label %392

392:                                              ; preds = %383, %378
  %393 = load ptr, ptr %1, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.ImGuiContext, ptr %393, i32 0, i32 3
  %395 = getelementptr inbounds %struct.ImGuiIO, ptr %394, i32 0, i32 3
  %396 = load float, ptr %395, align 8, !tbaa !56
  %397 = load ptr, ptr %1, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.ImGuiContext, ptr %397, i32 0, i32 43
  %399 = load float, ptr %398, align 8, !tbaa !95
  %400 = fadd float %399, %396
  store float %400, ptr %398, align 8, !tbaa !95
  %401 = load ptr, ptr %1, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.ImGuiContext, ptr %401, i32 0, i32 27
  %403 = load i32, ptr %402, align 8, !tbaa !93
  %404 = load ptr, ptr %1, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.ImGuiContext, ptr %404, i32 0, i32 28
  store i32 %403, ptr %405, align 4, !tbaa !92
  %406 = load ptr, ptr %1, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.ImGuiContext, ptr %406, i32 0, i32 39
  %408 = load ptr, ptr %407, align 8, !tbaa !96
  %409 = load ptr, ptr %1, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.ImGuiContext, ptr %409, i32 0, i32 40
  store ptr %408, ptr %410, align 8, !tbaa !97
  %411 = load ptr, ptr %1, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.ImGuiContext, ptr %411, i32 0, i32 33
  %413 = load i8, ptr %412, align 1, !tbaa !98, !range !54, !noundef !55
  %414 = trunc i8 %413 to i1
  %415 = load ptr, ptr %1, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.ImGuiContext, ptr %415, i32 0, i32 35
  %417 = zext i1 %414 to i8
  store i8 %417, ptr %416, align 1, !tbaa !99
  %418 = load ptr, ptr %1, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.ImGuiContext, ptr %418, i32 0, i32 34
  store i8 0, ptr %419, align 8, !tbaa !100
  %420 = load ptr, ptr %1, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.ImGuiContext, ptr %420, i32 0, i32 30
  store i8 0, ptr %421, align 4, !tbaa !91
  %422 = load ptr, ptr %1, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.ImGuiContext, ptr %422, i32 0, i32 31
  store i8 0, ptr %423, align 1, !tbaa !101
  %424 = load ptr, ptr %1, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.ImGuiContext, ptr %424, i32 0, i32 117
  %426 = load i32, ptr %425, align 8, !tbaa !102
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %428, label %439

428:                                              ; preds = %392
  %429 = load ptr, ptr %1, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.ImGuiContext, ptr %429, i32 0, i32 27
  %431 = load i32, ptr %430, align 8, !tbaa !93
  %432 = load ptr, ptr %1, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.ImGuiContext, ptr %432, i32 0, i32 117
  %434 = load i32, ptr %433, align 8, !tbaa !102
  %435 = icmp ne i32 %431, %434
  br i1 %435, label %436, label %439

436:                                              ; preds = %428
  %437 = load ptr, ptr %1, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.ImGuiContext, ptr %437, i32 0, i32 117
  store i32 0, ptr %438, align 8, !tbaa !102
  br label %439

439:                                              ; preds = %436, %428, %392
  %440 = load ptr, ptr %1, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.ImGuiContext, ptr %440, i32 0, i32 101
  %442 = load i8, ptr %441, align 4, !tbaa !103, !range !54, !noundef !55
  %443 = trunc i8 %442 to i1
  br i1 %443, label %444, label %459

444:                                              ; preds = %439
  %445 = load ptr, ptr %1, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.ImGuiContext, ptr %445, i32 0, i32 105
  %447 = getelementptr inbounds %struct.ImGuiPayload, ptr %446, i32 0, i32 4
  %448 = load i32, ptr %447, align 4, !tbaa !104
  %449 = add nsw i32 %448, 1
  %450 = load ptr, ptr %1, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.ImGuiContext, ptr %450, i32 0, i32 10
  %452 = load i32, ptr %451, align 4, !tbaa !66
  %453 = icmp slt i32 %449, %452
  br i1 %453, label %454, label %459

454:                                              ; preds = %444
  call void @_ZN5ImGui13ClearDragDropEv()
  %455 = load ptr, ptr %1, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.ImGuiContext, ptr %455, i32 0, i32 113
  call void @_ZN8ImVectorIhE5clearEv(ptr noundef nonnull align 8 dereferenceable(16) %456)
  %457 = load ptr, ptr %1, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.ImGuiContext, ptr %457, i32 0, i32 114
  call void @llvm.memset.p0.i64(ptr align 8 %458, i8 0, i64 8, i1 false)
  br label %459

459:                                              ; preds = %454, %444, %439
  %460 = load ptr, ptr %1, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.ImGuiContext, ptr %460, i32 0, i32 110
  %462 = load i32, ptr %461, align 4, !tbaa !105
  %463 = load ptr, ptr %1, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.ImGuiContext, ptr %463, i32 0, i32 111
  store i32 %462, ptr %464, align 8, !tbaa !106
  %465 = load ptr, ptr %1, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.ImGuiContext, ptr %465, i32 0, i32 110
  store i32 0, ptr %466, align 4, !tbaa !105
  %467 = load ptr, ptr %1, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.ImGuiContext, ptr %467, i32 0, i32 109
  store float 0x47EFFFFFE0000000, ptr %468, align 8, !tbaa !107
  %469 = load ptr, ptr %1, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.ImGuiContext, ptr %469, i32 0, i32 3
  %471 = getelementptr inbounds %struct.ImGuiIO, ptr %470, i32 0, i32 65
  %472 = getelementptr inbounds [512 x float], ptr %471, i64 0, i64 0
  %473 = load ptr, ptr %1, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.ImGuiContext, ptr %473, i32 0, i32 3
  %475 = getelementptr inbounds %struct.ImGuiIO, ptr %474, i32 0, i32 64
  %476 = getelementptr inbounds [512 x float], ptr %475, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %472, ptr align 8 %476, i64 2048, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #13
  store i32 0, ptr %4, align 4, !tbaa !68
  br label %477

477:                                              ; preds = %524, %459
  %478 = load i32, ptr %4, align 4, !tbaa !68
  %479 = icmp slt i32 %478, 512
  br i1 %479, label %481, label %480

480:                                              ; preds = %477
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #13
  br label %527

481:                                              ; preds = %477
  %482 = load ptr, ptr %1, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.ImGuiContext, ptr %482, i32 0, i32 3
  %484 = getelementptr inbounds %struct.ImGuiIO, ptr %483, i32 0, i32 38
  %485 = load i32, ptr %4, align 4, !tbaa !68
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds [512 x i8], ptr %484, i64 0, i64 %486
  %488 = load i8, ptr %487, align 1, !tbaa !108, !range !54, !noundef !55
  %489 = trunc i8 %488 to i1
  br i1 %489, label %490, label %515

490:                                              ; preds = %481
  %491 = load ptr, ptr %1, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.ImGuiContext, ptr %491, i32 0, i32 3
  %493 = getelementptr inbounds %struct.ImGuiIO, ptr %492, i32 0, i32 64
  %494 = load i32, ptr %4, align 4, !tbaa !68
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds [512 x float], ptr %493, i64 0, i64 %495
  %497 = load float, ptr %496, align 4, !tbaa !81
  %498 = fcmp olt float %497, 0.000000e+00
  br i1 %498, label %499, label %500

499:                                              ; preds = %490
  br label %513

500:                                              ; preds = %490
  %501 = load ptr, ptr %1, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.ImGuiContext, ptr %501, i32 0, i32 3
  %503 = getelementptr inbounds %struct.ImGuiIO, ptr %502, i32 0, i32 64
  %504 = load i32, ptr %4, align 4, !tbaa !68
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds [512 x float], ptr %503, i64 0, i64 %505
  %507 = load float, ptr %506, align 4, !tbaa !81
  %508 = load ptr, ptr %1, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.ImGuiContext, ptr %508, i32 0, i32 3
  %510 = getelementptr inbounds %struct.ImGuiIO, ptr %509, i32 0, i32 3
  %511 = load float, ptr %510, align 8, !tbaa !56
  %512 = fadd float %507, %511
  br label %513

513:                                              ; preds = %500, %499
  %514 = phi float [ 0.000000e+00, %499 ], [ %512, %500 ]
  br label %516

515:                                              ; preds = %481
  br label %516

516:                                              ; preds = %515, %513
  %517 = phi float [ %514, %513 ], [ -1.000000e+00, %515 ]
  %518 = load ptr, ptr %1, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ImGuiContext, ptr %518, i32 0, i32 3
  %520 = getelementptr inbounds %struct.ImGuiIO, ptr %519, i32 0, i32 64
  %521 = load i32, ptr %4, align 4, !tbaa !68
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds [512 x float], ptr %520, i64 0, i64 %522
  store float %517, ptr %523, align 4, !tbaa !81
  br label %524

524:                                              ; preds = %516
  %525 = load i32, ptr %4, align 4, !tbaa !68
  %526 = add nsw i32 %525, 1
  store i32 %526, ptr %4, align 4, !tbaa !68
  br label %477, !llvm.loop !109

527:                                              ; preds = %480
  call void @_ZN5ImGuiL9NavUpdateEv()
  call void @_ZN5ImGuiL17UpdateMouseInputsEv()
  %528 = load ptr, ptr %1, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.ImGuiContext, ptr %528, i32 0, i32 3
  %530 = getelementptr inbounds %struct.ImGuiIO, ptr %529, i32 0, i32 3
  %531 = load float, ptr %530, align 8, !tbaa !56
  %532 = load ptr, ptr %1, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.ImGuiContext, ptr %532, i32 0, i32 141
  %534 = load ptr, ptr %1, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.ImGuiContext, ptr %534, i32 0, i32 142
  %536 = load i32, ptr %535, align 8, !tbaa !110
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds [120 x float], ptr %533, i64 0, i64 %537
  %539 = load float, ptr %538, align 4, !tbaa !81
  %540 = fsub float %531, %539
  %541 = load ptr, ptr %1, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.ImGuiContext, ptr %541, i32 0, i32 143
  %543 = load float, ptr %542, align 4, !tbaa !111
  %544 = fadd float %543, %540
  store float %544, ptr %542, align 4, !tbaa !111
  %545 = load ptr, ptr %1, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ImGuiContext, ptr %545, i32 0, i32 3
  %547 = getelementptr inbounds %struct.ImGuiIO, ptr %546, i32 0, i32 3
  %548 = load float, ptr %547, align 8, !tbaa !56
  %549 = load ptr, ptr %1, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ImGuiContext, ptr %549, i32 0, i32 141
  %551 = load ptr, ptr %1, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.ImGuiContext, ptr %551, i32 0, i32 142
  %553 = load i32, ptr %552, align 8, !tbaa !110
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds [120 x float], ptr %550, i64 0, i64 %554
  store float %548, ptr %555, align 4, !tbaa !81
  %556 = load ptr, ptr %1, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.ImGuiContext, ptr %556, i32 0, i32 142
  %558 = load i32, ptr %557, align 8, !tbaa !110
  %559 = add nsw i32 %558, 1
  %560 = srem i32 %559, 120
  %561 = load ptr, ptr %1, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.ImGuiContext, ptr %561, i32 0, i32 142
  store i32 %560, ptr %562, align 8, !tbaa !110
  %563 = load ptr, ptr %1, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.ImGuiContext, ptr %563, i32 0, i32 143
  %565 = load float, ptr %564, align 4, !tbaa !111
  %566 = fcmp ogt float %565, 0.000000e+00
  br i1 %566, label %567, label %573

567:                                              ; preds = %527
  %568 = load ptr, ptr %1, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.ImGuiContext, ptr %568, i32 0, i32 143
  %570 = load float, ptr %569, align 4, !tbaa !111
  %571 = fdiv float %570, 1.200000e+02
  %572 = fdiv float 1.000000e+00, %571
  br label %574

573:                                              ; preds = %527
  br label %574

574:                                              ; preds = %573, %567
  %575 = phi float [ %572, %567 ], [ 0x47EFFFFFE0000000, %573 ]
  %576 = load ptr, ptr %1, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.ImGuiContext, ptr %576, i32 0, i32 3
  %578 = getelementptr inbounds %struct.ImGuiIO, ptr %577, i32 0, i32 48
  store float %575, ptr %578, align 4, !tbaa !112
  call void @_ZN5ImGui18UpdateMovingWindowEv()
  call void @_ZN5ImGui34UpdateHoveredWindowAndCaptureFlagsEv()
  %579 = call noundef ptr @_ZN5ImGui22GetFrontMostPopupModalEv()
  %580 = icmp ne ptr %579, null
  br i1 %580, label %581, label %593

581:                                              ; preds = %574
  %582 = load ptr, ptr %1, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.ImGuiContext, ptr %582, i32 0, i32 97
  %584 = load float, ptr %583, align 8, !tbaa !113
  %585 = load ptr, ptr %1, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.ImGuiContext, ptr %585, i32 0, i32 3
  %587 = getelementptr inbounds %struct.ImGuiIO, ptr %586, i32 0, i32 3
  %588 = load float, ptr %587, align 8, !tbaa !56
  %589 = call float @llvm.fmuladd.f32(float %588, float 6.000000e+00, float %584)
  %590 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %589, float noundef 1.000000e+00)
  %591 = load ptr, ptr %1, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.ImGuiContext, ptr %591, i32 0, i32 97
  store float %590, ptr %592, align 8, !tbaa !113
  br label %596

593:                                              ; preds = %574
  %594 = load ptr, ptr %1, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.ImGuiContext, ptr %594, i32 0, i32 97
  store float 0.000000e+00, ptr %595, align 8, !tbaa !113
  br label %596

596:                                              ; preds = %593, %581
  %597 = load ptr, ptr %1, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.ImGuiContext, ptr %597, i32 0, i32 100
  store i32 0, ptr %598, align 8, !tbaa !114
  %599 = load ptr, ptr %1, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.ImGuiContext, ptr %599, i32 0, i32 146
  store i32 -1, ptr %600, align 8, !tbaa !115
  %601 = load ptr, ptr %1, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.ImGuiContext, ptr %601, i32 0, i32 145
  store i32 -1, ptr %602, align 4, !tbaa !116
  %603 = load ptr, ptr %1, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.ImGuiContext, ptr %603, i32 0, i32 144
  store i32 -1, ptr %604, align 8, !tbaa !117
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %5, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %605 = load ptr, ptr %1, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.ImGuiContext, ptr %605, i32 0, i32 127
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %606, ptr align 4 %5, i64 8, i1 false), !tbaa.struct !118
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #13
  %607 = load ptr, ptr %1, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.ImGuiContext, ptr %607, i32 0, i32 20
  %609 = load ptr, ptr %608, align 8, !tbaa !119
  %610 = icmp ne ptr %609, null
  br i1 %610, label %611, label %825

611:                                              ; preds = %596
  %612 = load ptr, ptr %1, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.ImGuiContext, ptr %612, i32 0, i32 20
  %614 = load ptr, ptr %613, align 8, !tbaa !119
  %615 = getelementptr inbounds %struct.ImGuiWindow, ptr %614, i32 0, i32 23
  %616 = load i8, ptr %615, align 1, !tbaa !120, !range !54, !noundef !55
  %617 = trunc i8 %616 to i1
  br i1 %617, label %825, label %618

618:                                              ; preds = %611
  %619 = load ptr, ptr %1, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.ImGuiContext, ptr %619, i32 0, i32 3
  %621 = getelementptr inbounds %struct.ImGuiIO, ptr %620, i32 0, i32 31
  %622 = load float, ptr %621, align 8, !tbaa !128
  %623 = fcmp une float %622, 0.000000e+00
  br i1 %623, label %630, label %624

624:                                              ; preds = %618
  %625 = load ptr, ptr %1, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImGuiContext, ptr %625, i32 0, i32 3
  %627 = getelementptr inbounds %struct.ImGuiIO, ptr %626, i32 0, i32 32
  %628 = load float, ptr %627, align 4, !tbaa !129
  %629 = fcmp une float %628, 0.000000e+00
  br i1 %629, label %630, label %825

630:                                              ; preds = %624, %618
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #13
  %631 = load ptr, ptr %1, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.ImGuiContext, ptr %631, i32 0, i32 20
  %633 = load ptr, ptr %632, align 8, !tbaa !119
  store ptr %633, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #13
  %634 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %634, ptr %7, align 8, !tbaa !5
  br label %635

635:                                              ; preds = %666, %630
  %636 = load ptr, ptr %7, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.ImGuiWindow, ptr %636, i32 0, i32 2
  %638 = load i32, ptr %637, align 4, !tbaa !130
  %639 = and i32 %638, 16777216
  %640 = icmp ne i32 %639, 0
  br i1 %640, label %641, label %664

641:                                              ; preds = %635
  %642 = load ptr, ptr %7, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.ImGuiWindow, ptr %642, i32 0, i32 2
  %644 = load i32, ptr %643, align 4, !tbaa !130
  %645 = and i32 %644, 16
  %646 = icmp ne i32 %645, 0
  br i1 %646, label %647, label %664

647:                                              ; preds = %641
  %648 = load ptr, ptr %7, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.ImGuiWindow, ptr %648, i32 0, i32 2
  %650 = load i32, ptr %649, align 4, !tbaa !130
  %651 = and i32 %650, 8
  %652 = icmp ne i32 %651, 0
  br i1 %652, label %664, label %653

653:                                              ; preds = %647
  %654 = load ptr, ptr %7, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.ImGuiWindow, ptr %654, i32 0, i32 2
  %656 = load i32, ptr %655, align 4, !tbaa !130
  %657 = and i32 %656, 512
  %658 = icmp ne i32 %657, 0
  br i1 %658, label %664, label %659

659:                                              ; preds = %653
  %660 = load ptr, ptr %7, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.ImGuiWindow, ptr %660, i32 0, i32 59
  %662 = load ptr, ptr %661, align 8, !tbaa !131
  %663 = icmp ne ptr %662, null
  br label %664

664:                                              ; preds = %659, %653, %647, %641, %635
  %665 = phi i1 [ false, %653 ], [ false, %647 ], [ false, %641 ], [ false, %635 ], [ %663, %659 ]
  br i1 %665, label %666, label %670

666:                                              ; preds = %664
  %667 = load ptr, ptr %7, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.ImGuiWindow, ptr %667, i32 0, i32 59
  %669 = load ptr, ptr %668, align 8, !tbaa !131
  store ptr %669, ptr %7, align 8, !tbaa !5
  br label %635, !llvm.loop !132

670:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #13
  %671 = load ptr, ptr %7, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.ImGuiWindow, ptr %671, i32 0, i32 2
  %673 = load i32, ptr %672, align 4, !tbaa !130
  %674 = and i32 %673, 16
  %675 = icmp ne i32 %674, 0
  br i1 %675, label %683, label %676

676:                                              ; preds = %670
  %677 = load ptr, ptr %7, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.ImGuiWindow, ptr %677, i32 0, i32 2
  %679 = load i32, ptr %678, align 4, !tbaa !130
  %680 = and i32 %679, 512
  %681 = icmp ne i32 %680, 0
  %682 = xor i1 %681, true
  br label %683

683:                                              ; preds = %676, %670
  %684 = phi i1 [ false, %670 ], [ %682, %676 ]
  %685 = zext i1 %684 to i8
  store i8 %685, ptr %8, align 1, !tbaa !108
  %686 = load ptr, ptr %1, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.ImGuiContext, ptr %686, i32 0, i32 3
  %688 = getelementptr inbounds %struct.ImGuiIO, ptr %687, i32 0, i32 31
  %689 = load float, ptr %688, align 8, !tbaa !128
  %690 = fcmp une float %689, 0.000000e+00
  br i1 %690, label %691, label %787

691:                                              ; preds = %683
  %692 = load ptr, ptr %1, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.ImGuiContext, ptr %692, i32 0, i32 3
  %694 = getelementptr inbounds %struct.ImGuiIO, ptr %693, i32 0, i32 34
  %695 = load i8, ptr %694, align 1, !tbaa !133, !range !54, !noundef !55
  %696 = trunc i8 %695 to i1
  br i1 %696, label %697, label %747

697:                                              ; preds = %691
  %698 = load ptr, ptr %1, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.ImGuiContext, ptr %698, i32 0, i32 3
  %700 = getelementptr inbounds %struct.ImGuiIO, ptr %699, i32 0, i32 16
  %701 = load i8, ptr %700, align 4, !tbaa !134, !range !54, !noundef !55
  %702 = trunc i8 %701 to i1
  br i1 %702, label %703, label %747

703:                                              ; preds = %697
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #13
  %704 = load ptr, ptr %6, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.ImGuiWindow, ptr %704, i32 0, i32 55
  %706 = load float, ptr %705, align 8, !tbaa !135
  %707 = load ptr, ptr %1, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.ImGuiContext, ptr %707, i32 0, i32 3
  %709 = getelementptr inbounds %struct.ImGuiIO, ptr %708, i32 0, i32 31
  %710 = load float, ptr %709, align 8, !tbaa !128
  %711 = call float @llvm.fmuladd.f32(float %710, float 0x3FB99999A0000000, float %706)
  %712 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %711, float noundef 5.000000e-01, float noundef 2.500000e+00)
  store float %712, ptr %9, align 4, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #13
  %713 = load float, ptr %9, align 4, !tbaa !81
  %714 = load ptr, ptr %6, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.ImGuiWindow, ptr %714, i32 0, i32 55
  %716 = load float, ptr %715, align 8, !tbaa !135
  %717 = fdiv float %713, %716
  store float %717, ptr %10, align 4, !tbaa !81
  %718 = load float, ptr %9, align 4, !tbaa !81
  %719 = load ptr, ptr %6, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.ImGuiWindow, ptr %719, i32 0, i32 55
  store float %718, ptr %720, align 8, !tbaa !135
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #13
  %721 = load ptr, ptr %6, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.ImGuiWindow, ptr %721, i32 0, i32 4
  %723 = load float, ptr %10, align 4, !tbaa !81
  %724 = fsub float 1.000000e+00, %723
  %725 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %722, float noundef %724)
  store <2 x float> %725, ptr %13, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #13
  %726 = load ptr, ptr %1, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.ImGuiContext, ptr %726, i32 0, i32 3
  %728 = getelementptr inbounds %struct.ImGuiIO, ptr %727, i32 0, i32 29
  %729 = load ptr, ptr %6, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.ImGuiWindow, ptr %729, i32 0, i32 3
  %731 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %728, ptr noundef nonnull align 4 dereferenceable(8) %730)
  store <2 x float> %731, ptr %14, align 4
  %732 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %14)
  store <2 x float> %732, ptr %12, align 4
  %733 = load ptr, ptr %6, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.ImGuiWindow, ptr %733, i32 0, i32 4
  %735 = call <2 x float> @_ZdvRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %734)
  store <2 x float> %735, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #13
  %736 = load ptr, ptr %6, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ImGuiWindow, ptr %736, i32 0, i32 3
  %738 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %737, ptr noundef nonnull align 4 dereferenceable(8) %11)
  %739 = load float, ptr %10, align 4, !tbaa !81
  %740 = load ptr, ptr %6, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.ImGuiWindow, ptr %740, i32 0, i32 4
  %742 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZmLR6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %741, float noundef %739)
  %743 = load float, ptr %10, align 4, !tbaa !81
  %744 = load ptr, ptr %6, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.ImGuiWindow, ptr %744, i32 0, i32 5
  %746 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZmLR6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %745, float noundef %743)
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #13
  br label %786

747:                                              ; preds = %697, %691
  %748 = load ptr, ptr %1, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.ImGuiContext, ptr %748, i32 0, i32 3
  %750 = getelementptr inbounds %struct.ImGuiIO, ptr %749, i32 0, i32 34
  %751 = load i8, ptr %750, align 1, !tbaa !133, !range !54, !noundef !55
  %752 = trunc i8 %751 to i1
  br i1 %752, label %785, label %753

753:                                              ; preds = %747
  %754 = load i8, ptr %8, align 1, !tbaa !108, !range !54, !noundef !55
  %755 = trunc i8 %754 to i1
  br i1 %755, label %756, label %785

756:                                              ; preds = %753
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #13
  %757 = load ptr, ptr %7, align 8, !tbaa !5
  %758 = call noundef float @_ZNK11ImGuiWindow12CalcFontSizeEv(ptr noundef nonnull align 8 dereferenceable(976) %757)
  %759 = fmul float 5.000000e+00, %758
  store float %759, ptr %15, align 4, !tbaa !81
  %760 = load float, ptr %15, align 4, !tbaa !81
  %761 = load ptr, ptr %7, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.ImGuiWindow, ptr %761, i32 0, i32 49
  %763 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %762)
  %764 = load ptr, ptr %7, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.ImGuiWindow, ptr %764, i32 0, i32 9
  %766 = getelementptr inbounds %struct.ImVec2, ptr %765, i32 0, i32 1
  %767 = load float, ptr %766, align 4, !tbaa !136
  %768 = call float @llvm.fmuladd.f32(float %767, float 2.000000e+00, float %763)
  %769 = fmul float %768, 0x3FE570A3E0000000
  %770 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %760, float noundef %769)
  %771 = fptosi float %770 to i32
  %772 = sitofp i32 %771 to float
  store float %772, ptr %15, align 4, !tbaa !81
  %773 = load ptr, ptr %7, align 8, !tbaa !5
  %774 = load ptr, ptr %7, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.ImGuiWindow, ptr %774, i32 0, i32 14
  %776 = getelementptr inbounds %struct.ImVec2, ptr %775, i32 0, i32 1
  %777 = load float, ptr %776, align 4, !tbaa !137
  %778 = load ptr, ptr %1, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.ImGuiContext, ptr %778, i32 0, i32 3
  %780 = getelementptr inbounds %struct.ImGuiIO, ptr %779, i32 0, i32 31
  %781 = load float, ptr %780, align 8, !tbaa !128
  %782 = load float, ptr %15, align 4, !tbaa !81
  %783 = fneg float %781
  %784 = call float @llvm.fmuladd.f32(float %783, float %782, float %777)
  call void @_ZL16SetWindowScrollYP11ImGuiWindowf(ptr noundef %773, float noundef %784)
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #13
  br label %785

785:                                              ; preds = %756, %753, %747
  br label %786

786:                                              ; preds = %785, %703
  br label %787

787:                                              ; preds = %786, %683
  %788 = load ptr, ptr %1, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.ImGuiContext, ptr %788, i32 0, i32 3
  %790 = getelementptr inbounds %struct.ImGuiIO, ptr %789, i32 0, i32 32
  %791 = load float, ptr %790, align 4, !tbaa !129
  %792 = fcmp une float %791, 0.000000e+00
  br i1 %792, label %793, label %824

793:                                              ; preds = %787
  %794 = load i8, ptr %8, align 1, !tbaa !108, !range !54, !noundef !55
  %795 = trunc i8 %794 to i1
  br i1 %795, label %796, label %824

796:                                              ; preds = %793
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #13
  %797 = load ptr, ptr %7, align 8, !tbaa !5
  %798 = call noundef float @_ZNK11ImGuiWindow12CalcFontSizeEv(ptr noundef nonnull align 8 dereferenceable(976) %797)
  store float %798, ptr %16, align 4, !tbaa !81
  %799 = load ptr, ptr %1, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.ImGuiContext, ptr %799, i32 0, i32 3
  %801 = getelementptr inbounds %struct.ImGuiIO, ptr %800, i32 0, i32 34
  %802 = load i8, ptr %801, align 1, !tbaa !133, !range !54, !noundef !55
  %803 = trunc i8 %802 to i1
  br i1 %803, label %823, label %804

804:                                              ; preds = %796
  %805 = load ptr, ptr %6, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.ImGuiWindow, ptr %805, i32 0, i32 2
  %807 = load i32, ptr %806, align 4, !tbaa !130
  %808 = and i32 %807, 16
  %809 = icmp ne i32 %808, 0
  br i1 %809, label %823, label %810

810:                                              ; preds = %804
  %811 = load ptr, ptr %6, align 8, !tbaa !5
  %812 = load ptr, ptr %6, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.ImGuiWindow, ptr %812, i32 0, i32 14
  %814 = getelementptr inbounds %struct.ImVec2, ptr %813, i32 0, i32 0
  %815 = load float, ptr %814, align 8, !tbaa !138
  %816 = load ptr, ptr %1, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.ImGuiContext, ptr %816, i32 0, i32 3
  %818 = getelementptr inbounds %struct.ImGuiIO, ptr %817, i32 0, i32 32
  %819 = load float, ptr %818, align 4, !tbaa !129
  %820 = load float, ptr %16, align 4, !tbaa !81
  %821 = fneg float %819
  %822 = call float @llvm.fmuladd.f32(float %821, float %820, float %815)
  call void @_ZL16SetWindowScrollXP11ImGuiWindowf(ptr noundef %811, float noundef %822)
  br label %823

823:                                              ; preds = %810, %804, %796
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #13
  br label %824

824:                                              ; preds = %823, %793, %787
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #13
  br label %825

825:                                              ; preds = %824, %624, %611, %596
  %826 = load ptr, ptr %1, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.ImGuiContext, ptr %826, i32 0, i32 27
  %828 = load i32, ptr %827, align 8, !tbaa !93
  %829 = icmp eq i32 %828, 0
  br i1 %829, label %830, label %898

830:                                              ; preds = %825
  %831 = load ptr, ptr %1, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImGuiContext, ptr %831, i32 0, i32 55
  %833 = load ptr, ptr %832, align 8, !tbaa !139
  %834 = icmp ne ptr %833, null
  br i1 %834, label %835, label %898

835:                                              ; preds = %830
  %836 = load ptr, ptr %1, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.ImGuiContext, ptr %836, i32 0, i32 55
  %838 = load ptr, ptr %837, align 8, !tbaa !139
  %839 = getelementptr inbounds %struct.ImGuiWindow, ptr %838, i32 0, i32 20
  %840 = load i8, ptr %839, align 2, !tbaa !140, !range !54, !noundef !55
  %841 = trunc i8 %840 to i1
  br i1 %841, label %842, label %898

842:                                              ; preds = %835
  %843 = load ptr, ptr %1, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.ImGuiContext, ptr %843, i32 0, i32 55
  %845 = load ptr, ptr %844, align 8, !tbaa !139
  %846 = getelementptr inbounds %struct.ImGuiWindow, ptr %845, i32 0, i32 2
  %847 = load i32, ptr %846, align 4, !tbaa !130
  %848 = and i32 %847, 262144
  %849 = icmp ne i32 %848, 0
  br i1 %849, label %898, label %850

850:                                              ; preds = %842
  %851 = load ptr, ptr %1, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.ImGuiContext, ptr %851, i32 0, i32 3
  %853 = getelementptr inbounds %struct.ImGuiIO, ptr %852, i32 0, i32 34
  %854 = load i8, ptr %853, align 1, !tbaa !133, !range !54, !noundef !55
  %855 = trunc i8 %854 to i1
  br i1 %855, label %898, label %856

856:                                              ; preds = %850
  %857 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 0, i1 noundef zeroext false)
  br i1 %857, label %858, label %898

858:                                              ; preds = %856
  %859 = load ptr, ptr %1, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.ImGuiContext, ptr %859, i32 0, i32 56
  %861 = load i32, ptr %860, align 8, !tbaa !141
  %862 = icmp ne i32 %861, 0
  br i1 %862, label %863, label %885

863:                                              ; preds = %858
  %864 = load ptr, ptr %1, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.ImGuiContext, ptr %864, i32 0, i32 73
  %866 = load i32, ptr %865, align 8, !tbaa !142
  %867 = icmp ne i32 %866, 2147483647
  br i1 %867, label %868, label %885

868:                                              ; preds = %863
  %869 = load ptr, ptr %1, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.ImGuiContext, ptr %869, i32 0, i32 73
  %871 = load i32, ptr %870, align 8, !tbaa !142
  %872 = add nsw i32 %871, 1
  %873 = load ptr, ptr %1, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.ImGuiContext, ptr %873, i32 0, i32 3
  %875 = getelementptr inbounds %struct.ImGuiIO, ptr %874, i32 0, i32 35
  %876 = load i8, ptr %875, align 2, !tbaa !143, !range !54, !noundef !55
  %877 = trunc i8 %876 to i1
  %878 = zext i1 %877 to i64
  %879 = select i1 %877, i32 -1, i32 1
  %880 = add nsw i32 %872, %879
  %881 = load ptr, ptr %1, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.ImGuiContext, ptr %881, i32 0, i32 55
  %883 = load ptr, ptr %882, align 8, !tbaa !139
  %884 = getelementptr inbounds %struct.ImGuiWindow, ptr %883, i32 0, i32 72
  store i32 %880, ptr %884, align 4, !tbaa !144
  br label %897

885:                                              ; preds = %863, %858
  %886 = load ptr, ptr %1, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.ImGuiContext, ptr %886, i32 0, i32 3
  %888 = getelementptr inbounds %struct.ImGuiIO, ptr %887, i32 0, i32 35
  %889 = load i8, ptr %888, align 2, !tbaa !143, !range !54, !noundef !55
  %890 = trunc i8 %889 to i1
  %891 = zext i1 %890 to i64
  %892 = select i1 %890, i32 -1, i32 0
  %893 = load ptr, ptr %1, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.ImGuiContext, ptr %893, i32 0, i32 55
  %895 = load ptr, ptr %894, align 8, !tbaa !139
  %896 = getelementptr inbounds %struct.ImGuiWindow, ptr %895, i32 0, i32 72
  store i32 %892, ptr %896, align 4, !tbaa !144
  br label %897

897:                                              ; preds = %885, %868
  br label %898

898:                                              ; preds = %897, %856, %850, %842, %835, %830, %825
  %899 = load ptr, ptr %1, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.ImGuiContext, ptr %899, i32 0, i32 73
  store i32 2147483647, ptr %900, align 8, !tbaa !142
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #13
  store i32 0, ptr %17, align 4, !tbaa !68
  br label %901

901:                                              ; preds = %926, %898
  %902 = load i32, ptr %17, align 4, !tbaa !68
  %903 = load ptr, ptr %1, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.ImGuiContext, ptr %903, i32 0, i32 13
  %905 = getelementptr inbounds %class.ImVector, ptr %904, i32 0, i32 0
  %906 = load i32, ptr %905, align 8, !tbaa !145
  %907 = icmp ne i32 %902, %906
  br i1 %907, label %909, label %908

908:                                              ; preds = %901
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #13
  br label %929

909:                                              ; preds = %901
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #13
  %910 = load ptr, ptr %1, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.ImGuiContext, ptr %910, i32 0, i32 13
  %912 = load i32, ptr %17, align 4, !tbaa !68
  %913 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %911, i32 noundef %912)
  %914 = load ptr, ptr %913, align 8, !tbaa !5
  store ptr %914, ptr %18, align 8, !tbaa !5
  %915 = load ptr, ptr %18, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.ImGuiWindow, ptr %915, i32 0, i32 20
  %917 = load i8, ptr %916, align 2, !tbaa !140, !range !54, !noundef !55
  %918 = trunc i8 %917 to i1
  %919 = load ptr, ptr %18, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.ImGuiWindow, ptr %919, i32 0, i32 21
  %921 = zext i1 %918 to i8
  store i8 %921, ptr %920, align 1, !tbaa !146
  %922 = load ptr, ptr %18, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.ImGuiWindow, ptr %922, i32 0, i32 20
  store i8 0, ptr %923, align 2, !tbaa !140
  %924 = load ptr, ptr %18, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.ImGuiWindow, ptr %924, i32 0, i32 22
  store i8 0, ptr %925, align 4, !tbaa !147
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  br label %926

926:                                              ; preds = %909
  %927 = load i32, ptr %17, align 4, !tbaa !68
  %928 = add nsw i32 %927, 1
  store i32 %928, ptr %17, align 4, !tbaa !68
  br label %901, !llvm.loop !148

929:                                              ; preds = %908
  %930 = load ptr, ptr %1, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.ImGuiContext, ptr %930, i32 0, i32 55
  %932 = load ptr, ptr %931, align 8, !tbaa !139
  %933 = icmp ne ptr %932, null
  br i1 %933, label %934, label %942

934:                                              ; preds = %929
  %935 = load ptr, ptr %1, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.ImGuiContext, ptr %935, i32 0, i32 55
  %937 = load ptr, ptr %936, align 8, !tbaa !139
  %938 = getelementptr inbounds %struct.ImGuiWindow, ptr %937, i32 0, i32 21
  %939 = load i8, ptr %938, align 1, !tbaa !146, !range !54, !noundef !55
  %940 = trunc i8 %939 to i1
  br i1 %940, label %942, label %941

941:                                              ; preds = %934
  call void @_ZN5ImGuiL26FocusFrontMostActiveWindowEP11ImGuiWindow(ptr noundef null)
  br label %942

942:                                              ; preds = %941, %934, %929
  %943 = load ptr, ptr %1, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.ImGuiContext, ptr %943, i32 0, i32 15
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %944, i32 noundef 0)
  %945 = load ptr, ptr %1, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.ImGuiContext, ptr %945, i32 0, i32 50
  call void @_ZN8ImVectorI13ImGuiPopupRefE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %946, i32 noundef 0)
  %947 = load ptr, ptr %1, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.ImGuiContext, ptr %947, i32 0, i32 55
  %949 = load ptr, ptr %948, align 8, !tbaa !139
  call void @_ZN5ImGui21ClosePopupsOverWindowEP11ImGuiWindow(ptr noundef %949)
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef 4.000000e+02, float noundef 4.000000e+02)
  call void @_ZN5ImGui17SetNextWindowSizeERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8) %19, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  %950 = call noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef @.str.46, ptr noundef null, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %1) #13
  ret void
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6ImFont8IsLoadedEv(ptr noundef nonnull align 8 dereferenceable(112)) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui23LoadIniSettingsFromDiskEPKc(ptr noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui21SaveIniSettingsToDiskEPKc(ptr noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui14SetCurrentFontEP6ImFont(ptr noundef) #9

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL14GetDefaultFontv() #9

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawData5ClearEv(ptr noundef nonnull align 8 dereferenceable(44)) #9 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13ClearDragDropEv() #9

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL9NavUpdateEv() #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL17UpdateMouseInputsEv() #8

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZdvRK6ImVec2S1_(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 nounwind uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow12CalcFontSizeEv(ptr noundef nonnull align 8 dereferenceable(976)) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL16SetWindowScrollYP11ImGuiWindowf(ptr noundef, float noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL16SetWindowScrollXP11ImGuiWindowf(ptr noundef, float noundef) #1

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL26FocusFrontMostActiveWindowEP11ImGuiWindow(ptr noundef) #9

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui21ClosePopupsOverWindowEP11ImGuiWindow(ptr noundef) #9

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

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

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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 #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"="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 #9 = { 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 #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 = { noreturn nounwind }
attributes #13 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTS12ImGuiContext", !11, i64 0, !11, i64 1, !12, i64 8, !16, i64 5408, !6, i64 6232, !15, i64 6240, !15, i64 6244, !17, i64 6248, !15, i64 6384, !13, i64 6388, !13, i64 6392, !13, i64 6396, !19, i64 6400, !19, i64 6416, !19, i64 6432, !20, i64 6448, !13, i64 6464, !6, i64 6472, !6, i64 6480, !6, i64 6488, !13, i64 6496, !11, i64 6500, !13, i64 6504, !15, i64 6508, !13, i64 6512, !13, i64 6516, !15, i64 6520, !11, i64 6524, !11, i64 6525, !11, i64 6526, !11, i64 6527, !11, i64 6528, !11, i64 6529, !13, i64 6532, !14, i64 6536, !6, i64 6544, !6, i64 6552, !22, i64 6560, !13, i64 6564, !15, i64 6568, !6, i64 6576, !23, i64 6584, !24, i64 6600, !25, i64 6616, !26, i64 6632, !26, i64 6648, !27, i64 6664, !11, i64 6776, !13, i64 6780, !6, i64 6784, !13, i64 6792, !13, i64 6796, !13, i64 6800, !13, i64 6804, !13, i64 6808, !13, i64 6812, !13, i64 6816, !13, i64 6820, !22, i64 6824, !28, i64 6828, !13, i64 6844, !6, i64 6848, !15, i64 6856, !15, i64 6860, !11, i64 6864, !13, i64 6868, !13, i64 6872, !11, i64 6876, !11, i64 6877, !11, i64 6878, !11, i64 6879, !11, i64 6880, !11, i64 6881, !11, i64 6882, !13, i64 6884, !28, i64 6888, !11, i64 6904, !11, i64 6905, !13, i64 6908, !29, i64 6912, !13, i64 6916, !13, i64 6920, !13, i64 6924, !30, i64 6928, !30, i64 6976, !30, i64 7024, !31, i64 7072, !32, i64 7120, !15, i64 7152, !33, i64 7160, !13, i64 7328, !11, i64 7332, !13, i64 7336, !13, i64 7340, !41, i64 7344, !28, i64 7408, !13, i64 7424, !13, i64 7428, !15, i64 7432, !13, i64 7436, !13, i64 7440, !13, i64 7444, !42, i64 7448, !7, i64 7464, !43, i64 7472, !48, i64 11176, !13, i64 11288, !13, i64 11292, !18, i64 11296, !11, i64 11312, !15, i64 11316, !15, i64 11320, !14, i64 11324, !13, i64 11332, !44, i64 11336, !14, i64 11352, !14, i64 11360, !11, i64 11368, !15, i64 11372, !51, i64 11376, !52, i64 11392, !53, i64 11408, !11, i64 11424, !6, i64 11432, !51, i64 11440, !13, i64 11456, !13, i64 11460, !7, i64 11464, !13, i64 11944, !15, i64 11948, !13, i64 11952, !13, i64 11956, !13, i64 11960, !7, i64 11964}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTS7ImGuiIO", !13, i64 0, !13, i64 4, !14, i64 8, !15, i64 16, !15, i64 20, !6, i64 24, !6, i64 32, !15, i64 40, !15, i64 44, !15, i64 48, !7, i64 52, !15, i64 136, !15, i64 140, !6, i64 144, !6, i64 152, !15, i64 160, !11, i64 164, !6, i64 168, !14, i64 176, !14, i64 184, !14, i64 192, !11, i64 200, !11, i64 201, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !14, i64 256, !7, i64 264, !15, i64 272, !15, i64 276, !11, i64 280, !11, i64 281, !11, i64 282, !11, i64 283, !11, i64 284, !7, i64 285, !7, i64 798, !7, i64 832, !11, i64 916, !11, i64 917, !11, i64 918, !11, i64 919, !11, i64 920, !11, i64 921, !11, i64 922, !15, i64 924, !13, i64 928, !13, i64 932, !13, i64 936, !14, i64 940, !14, i64 948, !7, i64 956, !7, i64 996, !7, i64 1016, !7, i64 1021, !7, i64 1026, !7, i64 1031, !7, i64 1036, !7, i64 1056, !7, i64 1076, !7, i64 1116, !7, i64 1136, !7, i64 3184, !7, i64 5232, !7, i64 5316}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS6ImVec2", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!"_ZTS10ImGuiStyle", !15, i64 0, !14, i64 4, !15, i64 12, !15, i64 16, !14, i64 20, !14, i64 28, !15, i64 36, !15, i64 40, !15, i64 44, !15, i64 48, !14, i64 52, !15, i64 60, !15, i64 64, !14, i64 68, !14, i64 76, !14, i64 84, !15, i64 92, !15, i64 96, !15, i64 100, !15, i64 104, !15, i64 108, !15, i64 112, !14, i64 116, !14, i64 124, !14, i64 132, !15, i64 140, !11, i64 144, !11, i64 145, !15, i64 148, !7, i64 152}
!17 = !{!"_ZTS20ImDrawListSharedData", !14, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !18, i64 24, !7, i64 40}
!18 = !{!"_ZTS6ImVec4", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12}
!19 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !13, i64 0, !13, i64 4, !6, i64 8}
!20 = !{!"_ZTS12ImGuiStorage", !21, i64 0}
!21 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !13, i64 0, !13, i64 4, !6, i64 8}
!22 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!23 = !{!"_ZTS8ImVectorI11ImGuiColModE", !13, i64 0, !13, i64 4, !6, i64 8}
!24 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !13, i64 0, !13, i64 4, !6, i64 8}
!25 = !{!"_ZTS8ImVectorIP6ImFontE", !13, i64 0, !13, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorI13ImGuiPopupRefE", !13, i64 0, !13, i64 4, !6, i64 8}
!27 = !{!"_ZTS19ImGuiNextWindowData", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !14, i64 28, !14, i64 36, !14, i64 44, !14, i64 52, !11, i64 60, !28, i64 64, !6, i64 80, !6, i64 88, !15, i64 96, !14, i64 100}
!28 = !{!"_ZTS6ImRect", !14, i64 0, !14, i64 8}
!29 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!30 = !{!"_ZTS18ImGuiNavMoveResult", !13, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24, !28, i64 28}
!31 = !{!"_ZTS10ImDrawData", !11, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !13, i64 24, !14, i64 28, !14, i64 36}
!32 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!33 = !{!"_ZTS10ImDrawList", !34, i64 0, !35, i64 16, !36, i64 32, !13, i64 48, !6, i64 56, !6, i64 64, !13, i64 72, !6, i64 80, !6, i64 88, !37, i64 96, !38, i64 112, !39, i64 128, !13, i64 144, !13, i64 148, !40, i64 152}
!34 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !13, i64 0, !13, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorItE", !13, i64 0, !13, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI10ImDrawVertE", !13, i64 0, !13, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorI6ImVec4E", !13, i64 0, !13, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorIPvE", !13, i64 0, !13, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorI6ImVec2E", !13, i64 0, !13, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !13, i64 0, !13, i64 4, !6, i64 8}
!41 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !7, i64 24, !11, i64 57, !11, i64 58}
!42 = !{!"_ZTS8ImVectorIhE", !13, i64 0, !13, i64 4, !6, i64 8}
!43 = !{!"_ZTS18ImGuiTextEditState", !13, i64 0, !35, i64 8, !44, i64 24, !44, i64 40, !13, i64 56, !13, i64 60, !13, i64 64, !15, i64 68, !45, i64 72, !15, i64 3692, !11, i64 3696, !11, i64 3697}
!44 = !{!"_ZTS8ImVectorIcE", !13, i64 0, !13, i64 4, !6, i64 8}
!45 = !{!"_ZTSN8ImGuiStb17STB_TexteditStateE", !13, i64 0, !13, i64 4, !13, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !15, i64 20, !46, i64 24}
!46 = !{!"_ZTSN8ImGuiStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !47, i64 3582, !47, i64 3584, !13, i64 3588, !13, i64 3592}
!47 = !{!"short", !7, i64 0}
!48 = !{!"_ZTS6ImFont", !15, i64 0, !15, i64 4, !14, i64 8, !49, i64 16, !50, i64 32, !35, i64 48, !6, i64 64, !15, i64 72, !47, i64 76, !47, i64 78, !6, i64 80, !6, i64 88, !15, i64 96, !15, i64 100, !11, i64 104, !13, i64 108}
!49 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !13, i64 0, !13, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorIfE", !13, i64 0, !13, i64 4, !6, i64 8}
!51 = !{!"_ZTS15ImGuiTextBuffer", !44, i64 0}
!52 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !13, i64 0, !13, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !13, i64 0, !13, i64 4, !6, i64 8}
!54 = !{i8 0, i8 2}
!55 = !{}
!56 = !{!10, !15, i64 24}
!57 = !{!10, !15, i64 16}
!58 = !{!10, !15, i64 20}
!59 = !{!10, !6, i64 160}
!60 = !{!61, !13, i64 64}
!61 = !{!"_ZTS11ImFontAtlas", !13, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !6, i64 24, !6, i64 32, !13, i64 40, !13, i64 44, !14, i64 48, !14, i64 56, !25, i64 64, !62, i64 80, !63, i64 96, !7, i64 112}
!62 = !{!"_ZTS8ImVectorIN11ImFontAtlas10CustomRectEE", !13, i64 0, !13, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI12ImFontConfigE", !13, i64 0, !13, i64 4, !6, i64 8}
!64 = !{!10, !15, i64 5556}
!65 = !{!10, !15, i64 5408}
!66 = !{!10, !13, i64 6388}
!67 = !{!10, !13, i64 6392}
!68 = !{!13, !13, i64 0}
!69 = distinct !{!69, !70}
!70 = !{!"llvm.loop.mustprogress"}
!71 = !{!10, !13, i64 8}
!72 = !{!10, !11, i64 11368}
!73 = !{!10, !6, i64 32}
!74 = !{!10, !15, i64 11372}
!75 = !{!10, !11, i64 928}
!76 = !{!10, !15, i64 6384}
!77 = !{!10, !13, i64 11332}
!78 = !{!10, !13, i64 6464}
!79 = !{!10, !6, i64 6232}
!80 = !{i64 0, i64 4, !81, i64 4, i64 4, !81, i64 8, i64 4, !81, i64 12, i64 4, !81}
!81 = !{!15, !15, i64 0}
!82 = !{!10, !15, i64 6268}
!83 = !{!61, !6, i64 8}
!84 = !{!10, !11, i64 5552}
!85 = !{!10, !11, i64 5553}
!86 = !{!10, !13, i64 7208}
!87 = !{!10, !13, i64 6504}
!88 = !{!10, !15, i64 6508}
!89 = !{!10, !13, i64 6496}
!90 = !{!10, !11, i64 6500}
!91 = !{!10, !11, i64 6524}
!92 = !{!10, !13, i64 6516}
!93 = !{!10, !13, i64 6512}
!94 = !{!10, !15, i64 6520}
!95 = !{!10, !15, i64 6568}
!96 = !{!10, !6, i64 6544}
!97 = !{!10, !6, i64 6552}
!98 = !{!10, !11, i64 6527}
!99 = !{!10, !11, i64 6529}
!100 = !{!10, !11, i64 6528}
!101 = !{!10, !11, i64 6525}
!102 = !{!10, !13, i64 11288}
!103 = !{!10, !11, i64 7332}
!104 = !{!10, !13, i64 7364}
!105 = !{!10, !13, i64 7436}
!106 = !{!10, !13, i64 7440}
!107 = !{!10, !15, i64 7432}
!108 = !{!11, !11, i64 0}
!109 = distinct !{!109, !70}
!110 = !{!10, !13, i64 11944}
!111 = !{!10, !15, i64 11948}
!112 = !{!10, !15, i64 932}
!113 = !{!10, !15, i64 7152}
!114 = !{!10, !13, i64 7328}
!115 = !{!10, !13, i64 11960}
!116 = !{!10, !13, i64 11956}
!117 = !{!10, !13, i64 11952}
!118 = !{i64 0, i64 4, !81, i64 4, i64 4, !81}
!119 = !{!10, !6, i64 6480}
!120 = !{!121, !11, i64 125}
!121 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !13, i64 8, !13, i64 12, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !15, i64 72, !15, i64 76, !13, i64 80, !13, i64 84, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !11, i64 120, !11, i64 121, !11, i64 122, !11, i64 123, !11, i64 124, !11, i64 125, !11, i64 126, !11, i64 127, !11, i64 128, !11, i64 129, !13, i64 132, !13, i64 136, !13, i64 140, !13, i64 144, !13, i64 148, !13, i64 152, !11, i64 156, !13, i64 160, !13, i64 164, !13, i64 168, !13, i64 172, !13, i64 176, !13, i64 180, !14, i64 184, !14, i64 192, !122, i64 200, !125, i64 496, !28, i64 512, !28, i64 528, !28, i64 544, !28, i64 560, !28, i64 576, !13, i64 592, !15, i64 596, !126, i64 600, !20, i64 648, !127, i64 664, !15, i64 680, !13, i64 684, !6, i64 688, !33, i64 696, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !7, i64 912, !7, i64 920, !13, i64 952, !13, i64 956, !13, i64 960, !13, i64 964, !13, i64 968, !13, i64 972}
!122 = !{!"_ZTS19ImGuiWindowTempData", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !15, i64 32, !15, i64 36, !15, i64 40, !15, i64 44, !15, i64 48, !13, i64 52, !13, i64 56, !13, i64 60, !13, i64 64, !28, i64 68, !28, i64 84, !11, i64 100, !11, i64 101, !13, i64 104, !13, i64 108, !13, i64 112, !13, i64 116, !11, i64 120, !14, i64 124, !19, i64 136, !6, i64 152, !13, i64 160, !13, i64 164, !13, i64 168, !15, i64 172, !15, i64 176, !123, i64 184, !50, i64 200, !50, i64 216, !124, i64 232, !7, i64 248, !15, i64 272, !15, i64 276, !15, i64 280, !6, i64 288}
!123 = !{!"_ZTS8ImVectorIiE", !13, i64 0, !13, i64 4, !6, i64 8}
!124 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!125 = !{!"_ZTS8ImVectorIjE", !13, i64 0, !13, i64 4, !6, i64 8}
!126 = !{!"_ZTS16ImGuiMenuColumns", !13, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !7, i64 16, !7, i64 32}
!127 = !{!"_ZTS8ImVectorI15ImGuiColumnsSetE", !13, i64 0, !13, i64 4, !6, i64 8}
!128 = !{!10, !15, i64 280}
!129 = !{!10, !15, i64 284}
!130 = !{!121, !13, i64 12}
!131 = !{!121, !6, i64 864}
!132 = distinct !{!132, !70}
!133 = !{!10, !11, i64 289}
!134 = !{!10, !11, i64 172}
!135 = !{!121, !15, i64 680}
!136 = !{!121, !15, i64 68}
!137 = !{!121, !15, i64 92}
!138 = !{!121, !15, i64 88}
!139 = !{!10, !6, i64 6784}
!140 = !{!121, !11, i64 122}
!141 = !{!10, !13, i64 6792}
!142 = !{!10, !13, i64 6872}
!143 = !{!10, !11, i64 290}
!144 = !{!121, !13, i64 972}
!145 = !{!10, !13, i64 6400}
!146 = !{!121, !11, i64 123}
!147 = !{!121, !11, i64 124}
!148 = distinct !{!148, !70}


; 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.ImVec4 = type { float, float, float, float }
%struct.ImVec2 = type { float, float }

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [109 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv = external hidden unnamed_addr constant [23 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [156 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [187 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [15 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> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8), float noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui18UpdateMovingWindowEv() local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui34UpdateHoveredWindowAndCaptureFlagsEv() local_unnamed_addr #8

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5ImGui8NewFrameEv() local_unnamed_addr #7 {
  %1 = alloca %struct.ImVec4, align 4
  %2 = alloca %struct.ImVec2, align 8
  %3 = alloca %struct.ImVec2, align 8
  %4 = alloca %struct.ImVec2, align 8
  %5 = alloca %struct.ImVec2, align 8
  %6 = alloca %struct.ImVec2, align 8
  %7 = alloca %struct.ImVec2, align 4
  %8 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %.not = icmp eq ptr %8, null
  br i1 %.not, label %9, label %10

9:                                                ; preds = %0
  tail call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.3, i32 noundef 3656, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

10:                                               ; preds = %0
  %11 = load i8, ptr %8, align 8, !tbaa !9, !range !54, !noundef !55
  %12 = trunc nuw i8 %11 to i1
  br i1 %12, label %14, label %13

13:                                               ; preds = %10
  tail call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.3, i32 noundef 3661, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

14:                                               ; preds = %10
  %15 = getelementptr inbounds i8, ptr %8, i64 8
  %16 = getelementptr inbounds i8, ptr %8, i64 24
  %17 = load float, ptr %16, align 8, !tbaa !56
  %18 = fcmp ult float %17, 0.000000e+00
  br i1 %18, label %19, label %20

19:                                               ; preds = %14
  tail call void @__assert_fail(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.3, i32 noundef 3662, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

20:                                               ; preds = %14
  %21 = getelementptr inbounds i8, ptr %8, i64 16
  %22 = load float, ptr %21, align 8, !tbaa !57
  %23 = fcmp ult float %22, 0.000000e+00
  br i1 %23, label %.critedge, label %24

24:                                               ; preds = %20
  %25 = getelementptr inbounds i8, ptr %8, i64 20
  %26 = load float, ptr %25, align 4, !tbaa !58
  %27 = fcmp ult float %26, 0.000000e+00
  br i1 %27, label %.critedge, label %28

28:                                               ; preds = %24
  %29 = getelementptr inbounds i8, ptr %8, i64 160
  %30 = load ptr, ptr %29, align 8, !tbaa !59
  %31 = getelementptr inbounds i8, ptr %30, i64 64
  %32 = load i32, ptr %31, align 8, !tbaa !60
  %33 = icmp sgt i32 %32, 0
  br i1 %33, label %35, label %34

.critedge:                                        ; preds = %24, %20
  tail call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.3, i32 noundef 3663, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

34:                                               ; preds = %28
  tail call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.3, i32 noundef 3664, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

35:                                               ; preds = %28
  %36 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP6ImFontEixEi(ptr noundef nonnull align 8 dereferenceable(16) %31, i32 noundef 0)
  %37 = load ptr, ptr %36, align 8, !tbaa !5
  %38 = tail call noundef zeroext i1 @_ZNK6ImFont8IsLoadedEv(ptr noundef nonnull align 8 dereferenceable(112) %37)
  br i1 %38, label %40, label %39

39:                                               ; preds = %35
  tail call void @__assert_fail(ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.3, i32 noundef 3665, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

40:                                               ; preds = %35
  %41 = getelementptr inbounds i8, ptr %8, i64 5556
  %42 = load float, ptr %41, align 4, !tbaa !64
  %43 = fcmp ogt float %42, 0.000000e+00
  br i1 %43, label %45, label %44

44:                                               ; preds = %40
  tail call void @__assert_fail(ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.3, i32 noundef 3666, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

45:                                               ; preds = %40
  %46 = getelementptr inbounds i8, ptr %8, i64 5408
  %47 = load float, ptr %46, align 8, !tbaa !65
  %48 = fcmp ult float %47, 0.000000e+00
  %49 = fcmp ugt float %47, 1.000000e+00
  %or.cond = or i1 %48, %49
  br i1 %or.cond, label %.critedge3, label %50

50:                                               ; preds = %45
  %51 = getelementptr inbounds i8, ptr %8, i64 6388
  %52 = load i32, ptr %51, align 4, !tbaa !66
  %53 = icmp eq i32 %52, 0
  br i1 %53, label %58, label %54

.critedge3:                                       ; preds = %45
  tail call void @__assert_fail(ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.3, i32 noundef 3667, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

54:                                               ; preds = %50
  %55 = getelementptr inbounds i8, ptr %8, i64 6392
  %56 = load i32, ptr %55, align 8, !tbaa !67
  %57 = icmp eq i32 %56, %52
  br i1 %57, label %58, label %.critedge5

58:                                               ; preds = %54, %50
  %59 = getelementptr inbounds i8, ptr %8, i64 60
  %60 = load i32, ptr %59, align 4, !tbaa !68
  %61 = add i32 %60, 1
  %or.cond257 = icmp ult i32 %61, 513
  br i1 %or.cond257, label %62, label %.critedge8

.critedge5:                                       ; preds = %54
  tail call void @__assert_fail(ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.3, i32 noundef 3668, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

62:                                               ; preds = %58
  %63 = getelementptr inbounds i8, ptr %8, i64 64
  %64 = load i32, ptr %63, align 4, !tbaa !68
  %65 = add i32 %64, 1
  %or.cond257.1 = icmp ult i32 %65, 513
  br i1 %or.cond257.1, label %66, label %.critedge8

66:                                               ; preds = %62
  %67 = getelementptr inbounds i8, ptr %8, i64 68
  %68 = load i32, ptr %67, align 4, !tbaa !68
  %69 = add i32 %68, 1
  %or.cond257.2 = icmp ult i32 %69, 513
  br i1 %or.cond257.2, label %70, label %.critedge8

70:                                               ; preds = %66
  %71 = getelementptr inbounds i8, ptr %8, i64 72
  %72 = load i32, ptr %71, align 4, !tbaa !68
  %73 = add i32 %72, 1
  %or.cond257.3 = icmp ult i32 %73, 513
  br i1 %or.cond257.3, label %74, label %.critedge8

74:                                               ; preds = %70
  %75 = getelementptr inbounds i8, ptr %8, i64 76
  %76 = load i32, ptr %75, align 4, !tbaa !68
  %77 = add i32 %76, 1
  %or.cond257.4 = icmp ult i32 %77, 513
  br i1 %or.cond257.4, label %78, label %.critedge8

78:                                               ; preds = %74
  %79 = getelementptr inbounds i8, ptr %8, i64 80
  %80 = load i32, ptr %79, align 4, !tbaa !68
  %81 = add i32 %80, 1
  %or.cond257.5 = icmp ult i32 %81, 513
  br i1 %or.cond257.5, label %82, label %.critedge8

82:                                               ; preds = %78
  %83 = getelementptr inbounds i8, ptr %8, i64 84
  %84 = load i32, ptr %83, align 4, !tbaa !68
  %85 = add i32 %84, 1
  %or.cond257.6 = icmp ult i32 %85, 513
  br i1 %or.cond257.6, label %86, label %.critedge8

86:                                               ; preds = %82
  %87 = getelementptr inbounds i8, ptr %8, i64 88
  %88 = load i32, ptr %87, align 4, !tbaa !68
  %89 = add i32 %88, 1
  %or.cond257.7 = icmp ult i32 %89, 513
  br i1 %or.cond257.7, label %90, label %.critedge8

90:                                               ; preds = %86
  %91 = getelementptr inbounds i8, ptr %8, i64 92
  %92 = load i32, ptr %91, align 4, !tbaa !68
  %93 = add i32 %92, 1
  %or.cond257.8 = icmp ult i32 %93, 513
  br i1 %or.cond257.8, label %94, label %.critedge8

94:                                               ; preds = %90
  %95 = getelementptr inbounds i8, ptr %8, i64 96
  %96 = load i32, ptr %95, align 4, !tbaa !68
  %97 = add i32 %96, 1
  %or.cond257.9 = icmp ult i32 %97, 513
  br i1 %or.cond257.9, label %98, label %.critedge8

98:                                               ; preds = %94
  %99 = getelementptr inbounds i8, ptr %8, i64 100
  %100 = load i32, ptr %99, align 4, !tbaa !68
  %101 = add i32 %100, 1
  %or.cond257.10 = icmp ult i32 %101, 513
  br i1 %or.cond257.10, label %102, label %.critedge8

102:                                              ; preds = %98
  %103 = getelementptr inbounds i8, ptr %8, i64 104
  %104 = load i32, ptr %103, align 4, !tbaa !68
  %105 = add i32 %104, 1
  %or.cond257.11 = icmp ult i32 %105, 513
  br i1 %or.cond257.11, label %106, label %.critedge8

106:                                              ; preds = %102
  %107 = getelementptr inbounds i8, ptr %8, i64 108
  %108 = load i32, ptr %107, align 4, !tbaa !68
  %109 = add i32 %108, 1
  %or.cond257.12 = icmp ult i32 %109, 513
  br i1 %or.cond257.12, label %110, label %.critedge8

110:                                              ; preds = %106
  %111 = getelementptr inbounds i8, ptr %8, i64 112
  %112 = load i32, ptr %111, align 4, !tbaa !68
  %113 = add i32 %112, 1
  %or.cond257.13 = icmp ult i32 %113, 513
  br i1 %or.cond257.13, label %114, label %.critedge8

114:                                              ; preds = %110
  %115 = getelementptr inbounds i8, ptr %8, i64 116
  %116 = load i32, ptr %115, align 4, !tbaa !68
  %117 = add i32 %116, 1
  %or.cond257.14 = icmp ult i32 %117, 513
  br i1 %or.cond257.14, label %118, label %.critedge8

118:                                              ; preds = %114
  %119 = getelementptr inbounds i8, ptr %8, i64 120
  %120 = load i32, ptr %119, align 4, !tbaa !68
  %121 = add i32 %120, 1
  %or.cond257.15 = icmp ult i32 %121, 513
  br i1 %or.cond257.15, label %122, label %.critedge8

122:                                              ; preds = %118
  %123 = getelementptr inbounds i8, ptr %8, i64 124
  %124 = load i32, ptr %123, align 4, !tbaa !68
  %125 = add i32 %124, 1
  %or.cond257.16 = icmp ult i32 %125, 513
  br i1 %or.cond257.16, label %126, label %.critedge8

126:                                              ; preds = %122
  %127 = getelementptr inbounds i8, ptr %8, i64 128
  %128 = load i32, ptr %127, align 4, !tbaa !68
  %129 = add i32 %128, 1
  %or.cond257.17 = icmp ult i32 %129, 513
  br i1 %or.cond257.17, label %130, label %.critedge8

130:                                              ; preds = %126
  %131 = getelementptr inbounds i8, ptr %8, i64 132
  %132 = load i32, ptr %131, align 4, !tbaa !68
  %133 = add i32 %132, 1
  %or.cond257.18 = icmp ult i32 %133, 513
  br i1 %or.cond257.18, label %134, label %.critedge8

134:                                              ; preds = %130
  %135 = getelementptr inbounds i8, ptr %8, i64 136
  %136 = load i32, ptr %135, align 4, !tbaa !68
  %137 = add i32 %136, 1
  %or.cond257.19 = icmp ult i32 %137, 513
  br i1 %or.cond257.19, label %138, label %.critedge8

138:                                              ; preds = %134
  %139 = getelementptr inbounds i8, ptr %8, i64 140
  %140 = load i32, ptr %139, align 4, !tbaa !68
  %141 = add i32 %140, 1
  %or.cond257.20 = icmp ult i32 %141, 513
  br i1 %or.cond257.20, label %142, label %.critedge8

142:                                              ; preds = %138
  %143 = load i32, ptr %15, align 8, !tbaa !69
  %144 = and i32 %143, 1
  %.not232 = icmp ne i32 %144, 0
  %.not233 = icmp eq i32 %108, -1
  %or.cond280 = and i1 %.not232, %.not233
  br i1 %or.cond280, label %145, label %146

.critedge8:                                       ; preds = %138, %134, %130, %126, %122, %118, %114, %110, %106, %102, %98, %94, %90, %86, %82, %78, %74, %70, %66, %62, %58
  tail call void @__assert_fail(ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.3, i32 noundef 3670, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

145:                                              ; preds = %142
  tail call void @__assert_fail(ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.3, i32 noundef 3674, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

146:                                              ; preds = %142
  %147 = getelementptr inbounds i8, ptr %8, i64 11368
  %148 = load i8, ptr %147, align 8, !tbaa !70, !range !54, !noundef !55
  %149 = trunc nuw i8 %148 to i1
  br i1 %149, label %159, label %150

150:                                              ; preds = %146
  %151 = getelementptr inbounds i8, ptr %8, i64 11408
  %152 = tail call noundef zeroext i1 @_ZNK8ImVectorI19ImGuiWindowSettingsE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %151)
  br i1 %152, label %154, label %153

153:                                              ; preds = %150
  tail call void @__assert_fail(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.3, i32 noundef 3679, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

154:                                              ; preds = %150
  %155 = getelementptr inbounds i8, ptr %8, i64 32
  %156 = load ptr, ptr %155, align 8, !tbaa !71
  %.not234 = icmp eq ptr %156, null
  br i1 %.not234, label %158, label %157

157:                                              ; preds = %154
  tail call void @_ZN5ImGui23LoadIniSettingsFromDiskEPKc(ptr noundef nonnull %156)
  br label %158

158:                                              ; preds = %157, %154
  store i8 1, ptr %147, align 8, !tbaa !70
  br label %159

159:                                              ; preds = %158, %146
  %160 = getelementptr inbounds i8, ptr %8, i64 11372
  %161 = load float, ptr %160, align 4, !tbaa !72
  %162 = fcmp ogt float %161, 0.000000e+00
  %.pre276 = load float, ptr %16, align 8, !tbaa !56
  br i1 %162, label %163, label %173

163:                                              ; preds = %159
  %164 = fsub float %161, %.pre276
  store float %164, ptr %160, align 4, !tbaa !72
  %165 = fcmp ugt float %164, 0.000000e+00
  br i1 %165, label %173, label %166

166:                                              ; preds = %163
  %167 = getelementptr inbounds i8, ptr %8, i64 32
  %168 = load ptr, ptr %167, align 8, !tbaa !71
  %.not235 = icmp eq ptr %168, null
  br i1 %.not235, label %170, label %169

169:                                              ; preds = %166
  tail call void @_ZN5ImGui21SaveIniSettingsToDiskEPKc(ptr noundef nonnull %168)
  %.pre.pre = load float, ptr %16, align 8, !tbaa !56
  br label %172

170:                                              ; preds = %166
  %171 = getelementptr inbounds i8, ptr %8, i64 928
  store i8 1, ptr %171, align 8, !tbaa !73
  br label %172

172:                                              ; preds = %170, %169
  %.pre = phi float [ %.pre276, %170 ], [ %.pre.pre, %169 ]
  store float 0.000000e+00, ptr %160, align 4, !tbaa !72
  br label %173

173:                                              ; preds = %163, %172, %159
  %174 = phi float [ %.pre276, %163 ], [ %.pre, %172 ], [ %.pre276, %159 ]
  %175 = getelementptr inbounds i8, ptr %8, i64 6384
  %176 = load float, ptr %175, align 8, !tbaa !74
  %177 = fadd float %174, %176
  store float %177, ptr %175, align 8, !tbaa !74
  %178 = load i32, ptr %51, align 4, !tbaa !66
  %179 = add nsw i32 %178, 1
  store i32 %179, ptr %51, align 4, !tbaa !66
  %180 = getelementptr inbounds i8, ptr %8, i64 11332
  store i32 0, ptr %180, align 4, !tbaa !75
  %181 = getelementptr inbounds i8, ptr %8, i64 6464
  store i32 0, ptr %181, align 8, !tbaa !76
  %182 = tail call noundef ptr @_ZL14GetDefaultFontv()
  tail call void @_ZN5ImGui14SetCurrentFontEP6ImFont(ptr noundef %182)
  %183 = getelementptr inbounds i8, ptr %8, i64 6232
  %184 = load ptr, ptr %183, align 8, !tbaa !77
  %185 = tail call noundef zeroext i1 @_ZNK6ImFont8IsLoadedEv(ptr noundef nonnull align 8 dereferenceable(112) %184)
  br i1 %185, label %187, label %186

186:                                              ; preds = %173
  tail call void @__assert_fail(ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.3, i32 noundef 3705, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui8NewFrameEv) #11
  unreachable

187:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #12
  %188 = load float, ptr %21, align 8, !tbaa !57
  %189 = load float, ptr %25, align 4, !tbaa !58
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %1, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %188, float noundef %189)
  %190 = getelementptr inbounds i8, ptr %8, i64 6272
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %190, ptr noundef nonnull align 4 dereferenceable(16) %1, i64 16, i1 false), !tbaa.struct !78
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #12
  %191 = load float, ptr %41, align 4, !tbaa !64
  %192 = getelementptr inbounds i8, ptr %8, i64 6268
  store float %191, ptr %192, align 4, !tbaa !80
  %193 = getelementptr inbounds i8, ptr %8, i64 7160
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(168) %193)
  %194 = load ptr, ptr %29, align 8, !tbaa !59
  %195 = getelementptr inbounds i8, ptr %194, i64 8
  %196 = load ptr, ptr %195, align 8, !tbaa !81
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(168) %193, ptr noundef %196)
  call void @_ZN10ImDrawList22PushClipRectFullScreenEv(ptr noundef nonnull align 8 dereferenceable(168) %193)
  %197 = getelementptr inbounds i8, ptr %8, i64 5552
  %198 = load i8, ptr %197, align 8, !tbaa !82, !range !54, !noundef !55
  %199 = zext nneg i8 %198 to i32
  %200 = getelementptr inbounds i8, ptr %8, i64 5553
  %201 = load i8, ptr %200, align 1, !tbaa !83, !range !54, !noundef !55
  %202 = trunc nuw i8 %201 to i1
  %203 = select i1 %202, i32 2, i32 0
  %204 = or disjoint i32 %203, %199
  %205 = getelementptr inbounds i8, ptr %8, i64 7208
  store i32 %204, ptr %205, align 8, !tbaa !84
  %206 = getelementptr inbounds i8, ptr %8, i64 7072
  call void @_ZN10ImDrawData5ClearEv(ptr noundef nonnull align 8 dereferenceable(44) %206)
  %207 = getelementptr inbounds i8, ptr %8, i64 6504
  %208 = load i32, ptr %207, align 8, !tbaa !85
  %.not236 = icmp eq i32 %208, 0
  br i1 %.not236, label %209, label %211

209:                                              ; preds = %187
  %210 = getelementptr inbounds i8, ptr %8, i64 6508
  store float 0.000000e+00, ptr %210, align 4, !tbaa !86
  br label %211

211:                                              ; preds = %209, %187
  %212 = getelementptr inbounds i8, ptr %8, i64 6496
  %213 = load i32, ptr %212, align 8, !tbaa !87
  store i32 %213, ptr %207, align 8, !tbaa !85
  store i32 0, ptr %212, align 8, !tbaa !87
  %214 = getelementptr inbounds i8, ptr %8, i64 6500
  store i8 0, ptr %214, align 4, !tbaa !88
  %215 = getelementptr inbounds i8, ptr %8, i64 6524
  %216 = load i8, ptr %215, align 4, !tbaa !89, !range !54, !noundef !55
  %217 = trunc nuw i8 %216 to i1
  br i1 %217, label %225, label %218

218:                                              ; preds = %211
  %219 = getelementptr inbounds i8, ptr %8, i64 6516
  %220 = load i32, ptr %219, align 4, !tbaa !90
  %221 = getelementptr inbounds i8, ptr %8, i64 6512
  %222 = load i32, ptr %221, align 8, !tbaa !91
  %223 = icmp ne i32 %220, %222
  %.not237 = icmp eq i32 %222, 0
  %or.cond258 = or i1 %223, %.not237
  br i1 %or.cond258, label %225, label %224

224:                                              ; preds = %218
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %225

225:                                              ; preds = %224, %218, %211
  %226 = getelementptr inbounds i8, ptr %8, i64 6512
  %227 = load i32, ptr %226, align 8, !tbaa !91
  %.not238 = icmp eq i32 %227, 0
  %.pre277 = load float, ptr %16, align 8, !tbaa !56
  br i1 %.not238, label %232, label %228

228:                                              ; preds = %225
  %229 = getelementptr inbounds i8, ptr %8, i64 6520
  %230 = load float, ptr %229, align 8, !tbaa !92
  %231 = fadd float %.pre277, %230
  store float %231, ptr %229, align 8, !tbaa !92
  br label %232

232:                                              ; preds = %228, %225
  %233 = getelementptr inbounds i8, ptr %8, i64 6568
  %234 = load float, ptr %233, align 8, !tbaa !93
  %235 = fadd float %.pre277, %234
  store float %235, ptr %233, align 8, !tbaa !93
  %236 = getelementptr inbounds i8, ptr %8, i64 6516
  store i32 %227, ptr %236, align 4, !tbaa !90
  %237 = getelementptr inbounds i8, ptr %8, i64 6544
  %238 = load ptr, ptr %237, align 8, !tbaa !94
  %239 = getelementptr inbounds i8, ptr %8, i64 6552
  store ptr %238, ptr %239, align 8, !tbaa !95
  %240 = getelementptr inbounds i8, ptr %8, i64 6527
  %241 = load i8, ptr %240, align 1, !tbaa !96, !range !54, !noundef !55
  %242 = getelementptr inbounds i8, ptr %8, i64 6529
  store i8 %241, ptr %242, align 1, !tbaa !97
  %243 = getelementptr inbounds i8, ptr %8, i64 6528
  store i8 0, ptr %243, align 8, !tbaa !98
  store i8 0, ptr %215, align 4, !tbaa !89
  %244 = getelementptr inbounds i8, ptr %8, i64 6525
  store i8 0, ptr %244, align 1, !tbaa !99
  %245 = getelementptr inbounds i8, ptr %8, i64 11288
  %246 = load i32, ptr %245, align 8, !tbaa !100
  %.not239 = icmp eq i32 %246, 0
  %.not240 = icmp eq i32 %227, %246
  %or.cond268 = or i1 %.not239, %.not240
  br i1 %or.cond268, label %248, label %247

247:                                              ; preds = %232
  store i32 0, ptr %245, align 8, !tbaa !100
  br label %248

248:                                              ; preds = %247, %232
  %249 = getelementptr inbounds i8, ptr %8, i64 7332
  %250 = load i8, ptr %249, align 4, !tbaa !101, !range !54, !noundef !55
  %251 = trunc nuw i8 %250 to i1
  br i1 %251, label %252, label %261

252:                                              ; preds = %248
  %253 = getelementptr inbounds i8, ptr %8, i64 7364
  %254 = load i32, ptr %253, align 4, !tbaa !102
  %255 = add nsw i32 %254, 1
  %256 = load i32, ptr %51, align 4, !tbaa !66
  %257 = icmp slt i32 %255, %256
  br i1 %257, label %258, label %261

258:                                              ; preds = %252
  call void @_ZN5ImGui13ClearDragDropEv()
  %259 = getelementptr inbounds i8, ptr %8, i64 7448
  call void @_ZN8ImVectorIhE5clearEv(ptr noundef nonnull align 8 dereferenceable(16) %259)
  %260 = getelementptr inbounds i8, ptr %8, i64 7464
  store i64 0, ptr %260, align 8
  br label %261

261:                                              ; preds = %258, %252, %248
  %262 = getelementptr inbounds i8, ptr %8, i64 7436
  %263 = load i32, ptr %262, align 4, !tbaa !103
  %264 = getelementptr inbounds i8, ptr %8, i64 7440
  store i32 %263, ptr %264, align 8, !tbaa !104
  store i32 0, ptr %262, align 4, !tbaa !103
  %265 = getelementptr inbounds i8, ptr %8, i64 7432
  store float 0x47EFFFFFE0000000, ptr %265, align 8, !tbaa !105
  %266 = getelementptr inbounds i8, ptr %8, i64 3192
  %267 = getelementptr inbounds i8, ptr %8, i64 1144
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2048) %266, ptr noundef nonnull align 8 dereferenceable(2048) %267, i64 2048, i1 false)
  %268 = getelementptr inbounds i8, ptr %8, i64 293
  br label %291

269:                                              ; preds = %315
  call void @_ZN5ImGuiL9NavUpdateEv()
  call void @_ZN5ImGuiL17UpdateMouseInputsEv()
  %270 = load float, ptr %16, align 8, !tbaa !56
  %271 = getelementptr inbounds i8, ptr %8, i64 11464
  %272 = getelementptr inbounds i8, ptr %8, i64 11944
  %273 = load i32, ptr %272, align 8, !tbaa !106
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds [120 x float], ptr %271, i64 0, i64 %274
  %276 = load float, ptr %275, align 4, !tbaa !79
  %277 = fsub float %270, %276
  %278 = getelementptr inbounds i8, ptr %8, i64 11948
  %279 = load float, ptr %278, align 4, !tbaa !107
  %280 = fadd float %279, %277
  store float %280, ptr %278, align 4, !tbaa !107
  store float %270, ptr %275, align 4, !tbaa !79
  %281 = add nsw i32 %273, 1
  %282 = srem i32 %281, 120
  store i32 %282, ptr %272, align 8, !tbaa !106
  %283 = load float, ptr %278, align 4, !tbaa !107
  %284 = fcmp ogt float %283, 0.000000e+00
  %285 = fdiv float %283, 1.200000e+02
  %286 = fdiv float 1.000000e+00, %285
  %287 = select i1 %284, float %286, float 0x47EFFFFFE0000000
  %288 = getelementptr inbounds i8, ptr %8, i64 932
  store float %287, ptr %288, align 4, !tbaa !108
  call void @_ZN5ImGui18UpdateMovingWindowEv()
  call void @_ZN5ImGui34UpdateHoveredWindowAndCaptureFlagsEv()
  %289 = call noundef ptr @_ZN5ImGui22GetFrontMostPopupModalEv()
  %.not241 = icmp eq ptr %289, null
  %290 = getelementptr inbounds i8, ptr %8, i64 7152
  br i1 %.not241, label %323, label %318

291:                                              ; preds = %315, %261
  %indvars.iv = phi i64 [ 0, %261 ], [ %indvars.iv.next.1, %315 ]
  %292 = getelementptr inbounds [512 x i8], ptr %268, i64 0, i64 %indvars.iv
  %293 = load i8, ptr %292, align 1, !tbaa !109, !range !54, !noundef !55
  %294 = trunc nuw i8 %293 to i1
  br i1 %294, label %295, label %302

295:                                              ; preds = %291
  %296 = getelementptr inbounds [512 x float], ptr %267, i64 0, i64 %indvars.iv
  %297 = load float, ptr %296, align 4, !tbaa !79
  %298 = fcmp olt float %297, 0.000000e+00
  br i1 %298, label %302, label %299

299:                                              ; preds = %295
  %300 = load float, ptr %16, align 8, !tbaa !56
  %301 = fadd float %297, %300
  br label %302

302:                                              ; preds = %291, %299, %295
  %303 = phi float [ %301, %299 ], [ 0.000000e+00, %295 ], [ -1.000000e+00, %291 ]
  %304 = getelementptr inbounds [512 x float], ptr %267, i64 0, i64 %indvars.iv
  store float %303, ptr %304, align 4, !tbaa !79
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %305 = getelementptr inbounds [512 x i8], ptr %268, i64 0, i64 %indvars.iv.next
  %306 = load i8, ptr %305, align 1, !tbaa !109, !range !54, !noundef !55
  %307 = trunc nuw i8 %306 to i1
  br i1 %307, label %308, label %315

308:                                              ; preds = %302
  %309 = getelementptr inbounds [512 x float], ptr %267, i64 0, i64 %indvars.iv.next
  %310 = load float, ptr %309, align 4, !tbaa !79
  %311 = fcmp olt float %310, 0.000000e+00
  br i1 %311, label %315, label %312

312:                                              ; preds = %308
  %313 = load float, ptr %16, align 8, !tbaa !56
  %314 = fadd float %310, %313
  br label %315

315:                                              ; preds = %312, %308, %302
  %316 = phi float [ %314, %312 ], [ 0.000000e+00, %308 ], [ -1.000000e+00, %302 ]
  %317 = getelementptr inbounds [512 x float], ptr %267, i64 0, i64 %indvars.iv.next
  store float %316, ptr %317, align 4, !tbaa !79
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, 512
  br i1 %exitcond.not.1, label %269, label %291, !llvm.loop !110

318:                                              ; preds = %269
  %319 = load float, ptr %290, align 8, !tbaa !112
  %320 = load float, ptr %16, align 8, !tbaa !56
  %321 = call float @llvm.fmuladd.f32(float %320, float 6.000000e+00, float %319)
  %322 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %321, float noundef 1.000000e+00)
  br label %323

323:                                              ; preds = %269, %318
  %.sink = phi float [ %322, %318 ], [ 0.000000e+00, %269 ]
  store float %.sink, ptr %290, align 8, !tbaa !112
  %324 = getelementptr inbounds i8, ptr %8, i64 7328
  store i32 0, ptr %324, align 8, !tbaa !113
  %325 = getelementptr inbounds i8, ptr %8, i64 11960
  store i32 -1, ptr %325, align 8, !tbaa !114
  %326 = getelementptr inbounds i8, ptr %8, i64 11956
  store i32 -1, ptr %326, align 4, !tbaa !115
  %327 = getelementptr inbounds i8, ptr %8, i64 11952
  store i32 -1, ptr %327, align 8, !tbaa !116
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %2, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %328 = getelementptr inbounds i8, ptr %8, i64 11352
  %329 = load i64, ptr %2, align 8
  store i64 %329, ptr %328, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #12
  %330 = getelementptr inbounds i8, ptr %8, i64 6480
  %331 = load ptr, ptr %330, align 8, !tbaa !117
  %.not242 = icmp eq ptr %331, null
  br i1 %.not242, label %.thread.thread, label %332

332:                                              ; preds = %323
  %333 = getelementptr inbounds i8, ptr %331, i64 125
  %334 = load i8, ptr %333, align 1, !tbaa !118, !range !54, !noundef !55
  %335 = trunc nuw i8 %334 to i1
  br i1 %335, label %.thread.thread, label %336

336:                                              ; preds = %332
  %337 = getelementptr inbounds i8, ptr %8, i64 280
  %338 = load float, ptr %337, align 8, !tbaa !126
  %339 = fcmp une float %338, 0.000000e+00
  br i1 %339, label %.preheader, label %340

340:                                              ; preds = %336
  %341 = getelementptr inbounds i8, ptr %8, i64 284
  %342 = load float, ptr %341, align 4, !tbaa !127
  %343 = fcmp une float %342, 0.000000e+00
  br i1 %343, label %.preheader, label %.thread.thread

.preheader:                                       ; preds = %340, %336
  br label %344

344:                                              ; preds = %.preheader, %348
  %.0214 = phi ptr [ %350, %348 ], [ %331, %.preheader ]
  %345 = getelementptr inbounds i8, ptr %.0214, i64 12
  %346 = load i32, ptr %345, align 4, !tbaa !128
  %347 = and i32 %346, 16777752
  %or.cond261 = icmp eq i32 %347, 16777232
  br i1 %or.cond261, label %348, label %.critedge11

348:                                              ; preds = %344
  %349 = getelementptr inbounds i8, ptr %.0214, i64 864
  %350 = load ptr, ptr %349, align 8, !tbaa !129
  %.not247 = icmp eq ptr %350, null
  br i1 %.not247, label %.critedge11, label %344, !llvm.loop !130

.critedge11:                                      ; preds = %344, %348
  %351 = and i32 %346, 528
  %352 = icmp ne i32 %351, 0
  br i1 %339, label %353, label %.thread

353:                                              ; preds = %.critedge11
  %354 = getelementptr inbounds i8, ptr %8, i64 289
  %355 = load i8, ptr %354, align 1, !tbaa !131, !range !54, !noundef !55
  %356 = trunc nuw i8 %355 to i1
  br i1 %356, label %357, label %380

357:                                              ; preds = %353
  %358 = getelementptr inbounds i8, ptr %8, i64 172
  %359 = load i8, ptr %358, align 4, !tbaa !132, !range !54, !noundef !55
  %360 = trunc nuw i8 %359 to i1
  br i1 %360, label %361, label %.thread

361:                                              ; preds = %357
  %362 = getelementptr inbounds i8, ptr %331, i64 680
  %363 = load float, ptr %362, align 8, !tbaa !133
  %364 = call float @llvm.fmuladd.f32(float %338, float 0x3FB99999A0000000, float %363)
  %365 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %364, float noundef 5.000000e-01, float noundef 2.500000e+00)
  %366 = load float, ptr %362, align 8, !tbaa !133
  %367 = fdiv float %365, %366
  store float %365, ptr %362, align 8, !tbaa !133
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #12
  %368 = getelementptr inbounds i8, ptr %331, i64 24
  %369 = fsub float 1.000000e+00, %367
  %370 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %368, float noundef %369)
  store <2 x float> %370, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #12
  %371 = getelementptr inbounds i8, ptr %8, i64 264
  %372 = getelementptr inbounds i8, ptr %331, i64 16
  %373 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %371, ptr noundef nonnull align 4 dereferenceable(8) %372)
  store <2 x float> %373, ptr %6, align 8
  %374 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %5, ptr noundef nonnull align 4 dereferenceable(8) %6)
  store <2 x float> %374, ptr %4, align 8
  %375 = call <2 x float> @_ZdvRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %4, ptr noundef nonnull align 4 dereferenceable(8) %368)
  store <2 x float> %375, ptr %3, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  %376 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %372, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %377 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZmLR6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %368, float noundef %367)
  %378 = getelementptr inbounds i8, ptr %331, i64 32
  %379 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZmLR6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %378, float noundef %367)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #12
  br label %.thread

380:                                              ; preds = %353
  br i1 %352, label %.thread.thread, label %381

381:                                              ; preds = %380
  %382 = call noundef float @_ZNK11ImGuiWindow12CalcFontSizeEv(ptr noundef nonnull align 8 dereferenceable(976) %.0214)
  %383 = fmul float %382, 5.000000e+00
  %384 = getelementptr inbounds i8, ptr %.0214, i64 576
  %385 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %384)
  %386 = getelementptr inbounds i8, ptr %.0214, i64 68
  %387 = load float, ptr %386, align 4, !tbaa !134
  %388 = call float @llvm.fmuladd.f32(float %387, float 2.000000e+00, float %385)
  %389 = fmul float %388, 0x3FE570A3E0000000
  %390 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %383, float noundef %389)
  %391 = fptosi float %390 to i32
  %392 = sitofp i32 %391 to float
  %393 = getelementptr inbounds i8, ptr %.0214, i64 92
  %394 = load float, ptr %393, align 4, !tbaa !135
  %395 = load float, ptr %337, align 8, !tbaa !126
  %396 = fneg float %395
  %397 = call float @llvm.fmuladd.f32(float %396, float %392, float %394)
  call void @_ZL16SetWindowScrollYP11ImGuiWindowf(ptr noundef nonnull %.0214, float noundef %397)
  br label %.thread

.thread:                                          ; preds = %357, %361, %381, %.critedge11
  %398 = getelementptr inbounds i8, ptr %8, i64 284
  %399 = load float, ptr %398, align 4, !tbaa !127
  %400 = fcmp oeq float %399, 0.000000e+00
  %brmerge265 = or i1 %352, %400
  br i1 %brmerge265, label %.thread.thread, label %401

401:                                              ; preds = %.thread
  %402 = call noundef float @_ZNK11ImGuiWindow12CalcFontSizeEv(ptr noundef nonnull align 8 dereferenceable(976) %.0214)
  %403 = getelementptr inbounds i8, ptr %8, i64 289
  %404 = load i8, ptr %403, align 1, !tbaa !131, !range !54, !noundef !55
  %405 = trunc nuw i8 %404 to i1
  br i1 %405, label %.thread.thread, label %406

406:                                              ; preds = %401
  %407 = getelementptr inbounds i8, ptr %331, i64 12
  %408 = load i32, ptr %407, align 4, !tbaa !128
  %409 = and i32 %408, 16
  %.not250 = icmp eq i32 %409, 0
  br i1 %.not250, label %410, label %.thread.thread

410:                                              ; preds = %406
  %411 = getelementptr inbounds i8, ptr %331, i64 88
  %412 = load float, ptr %411, align 8, !tbaa !136
  %413 = load float, ptr %398, align 4, !tbaa !127
  %414 = fneg float %413
  %415 = call float @llvm.fmuladd.f32(float %414, float %402, float %412)
  call void @_ZL16SetWindowScrollXP11ImGuiWindowf(ptr noundef nonnull %331, float noundef %415)
  br label %.thread.thread

.thread.thread:                                   ; preds = %380, %.thread, %410, %406, %401, %340, %332, %323
  %416 = load i32, ptr %226, align 8, !tbaa !91
  %417 = icmp eq i32 %416, 0
  br i1 %417, label %418, label %455

418:                                              ; preds = %.thread.thread
  %419 = getelementptr inbounds i8, ptr %8, i64 6784
  %420 = load ptr, ptr %419, align 8, !tbaa !137
  %.not251 = icmp eq ptr %420, null
  br i1 %.not251, label %455, label %421

421:                                              ; preds = %418
  %422 = getelementptr inbounds i8, ptr %420, i64 122
  %423 = load i8, ptr %422, align 2, !tbaa !138, !range !54, !noundef !55
  %424 = trunc nuw i8 %423 to i1
  br i1 %424, label %425, label %455

425:                                              ; preds = %421
  %426 = getelementptr inbounds i8, ptr %420, i64 12
  %427 = load i32, ptr %426, align 4, !tbaa !128
  %428 = and i32 %427, 262144
  %.not252 = icmp eq i32 %428, 0
  br i1 %.not252, label %429, label %455

429:                                              ; preds = %425
  %430 = getelementptr inbounds i8, ptr %8, i64 289
  %431 = load i8, ptr %430, align 1, !tbaa !131, !range !54, !noundef !55
  %432 = trunc nuw i8 %431 to i1
  br i1 %432, label %455, label %433

433:                                              ; preds = %429
  %434 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 0, i1 noundef zeroext false)
  br i1 %434, label %435, label %455

435:                                              ; preds = %433
  %436 = getelementptr inbounds i8, ptr %8, i64 6792
  %437 = load i32, ptr %436, align 8, !tbaa !139
  %.not253 = icmp eq i32 %437, 0
  br i1 %.not253, label %448, label %438

438:                                              ; preds = %435
  %439 = getelementptr inbounds i8, ptr %8, i64 6872
  %440 = load i32, ptr %439, align 8, !tbaa !140
  %.not254 = icmp eq i32 %440, 2147483647
  br i1 %.not254, label %448, label %441

441:                                              ; preds = %438
  %442 = add nsw i32 %440, 1
  %443 = getelementptr inbounds i8, ptr %8, i64 290
  %444 = load i8, ptr %443, align 2, !tbaa !141, !range !54, !noundef !55
  %445 = trunc nuw i8 %444 to i1
  %446 = select i1 %445, i32 -1, i32 1
  %447 = add nsw i32 %442, %446
  br label %.sink.split

448:                                              ; preds = %438, %435
  %449 = getelementptr inbounds i8, ptr %8, i64 290
  %450 = load i8, ptr %449, align 2, !tbaa !141, !range !54, !noundef !55
  %451 = zext nneg i8 %450 to i32
  %452 = sub nsw i32 0, %451
  br label %.sink.split

.sink.split:                                      ; preds = %448, %441
  %.sink281 = phi i32 [ %447, %441 ], [ %452, %448 ]
  %453 = load ptr, ptr %419, align 8, !tbaa !137
  %454 = getelementptr inbounds i8, ptr %453, i64 972
  store i32 %.sink281, ptr %454, align 4, !tbaa !142
  br label %455

455:                                              ; preds = %.sink.split, %433, %429, %425, %421, %418, %.thread.thread
  %456 = getelementptr inbounds i8, ptr %8, i64 6872
  store i32 2147483647, ptr %456, align 8, !tbaa !140
  %457 = getelementptr inbounds i8, ptr %8, i64 6400
  %458 = load i32, ptr %457, align 8, !tbaa !143
  %.not255272 = icmp eq i32 %458, 0
  br i1 %.not255272, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %455
  %459 = getelementptr inbounds i8, ptr %8, i64 6784
  %460 = load ptr, ptr %459, align 8, !tbaa !137
  %.not256 = icmp eq ptr %460, null
  br i1 %.not256, label %474, label %469

.lr.ph:                                           ; preds = %455, %.lr.ph
  %.0212273 = phi i32 [ %467, %.lr.ph ], [ 0, %455 ]
  %461 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %457, i32 noundef %.0212273)
  %462 = load ptr, ptr %461, align 8, !tbaa !5
  %463 = getelementptr inbounds i8, ptr %462, i64 122
  %464 = load i8, ptr %463, align 2, !tbaa !138, !range !54, !noundef !55
  %465 = getelementptr inbounds i8, ptr %462, i64 123
  store i8 %464, ptr %465, align 1, !tbaa !144
  store i8 0, ptr %463, align 2, !tbaa !138
  %466 = getelementptr inbounds i8, ptr %462, i64 124
  store i8 0, ptr %466, align 4, !tbaa !145
  %467 = add nuw nsw i32 %.0212273, 1
  %468 = load i32, ptr %457, align 8, !tbaa !143
  %.not255 = icmp eq i32 %467, %468
  br i1 %.not255, label %._crit_edge, label %.lr.ph, !llvm.loop !146

469:                                              ; preds = %._crit_edge
  %470 = getelementptr inbounds i8, ptr %460, i64 123
  %471 = load i8, ptr %470, align 1, !tbaa !144, !range !54, !noundef !55
  %472 = trunc nuw i8 %471 to i1
  br i1 %472, label %474, label %473

473:                                              ; preds = %469
  call void @_ZN5ImGuiL26FocusFrontMostActiveWindowEP11ImGuiWindow(ptr noundef null)
  br label %474

474:                                              ; preds = %473, %469, %._crit_edge
  %475 = getelementptr inbounds i8, ptr %8, i64 6432
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %475, i32 noundef 0)
  %476 = getelementptr inbounds i8, ptr %8, i64 6648
  call void @_ZN8ImVectorI13ImGuiPopupRefE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %476, i32 noundef 0)
  %477 = load ptr, ptr %459, align 8, !tbaa !137
  call void @_ZN5ImGui21ClosePopupsOverWindowEP11ImGuiWindow(ptr noundef %477)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %7, float noundef 4.000000e+02, float noundef 4.000000e+02)
  call void @_ZN5ImGui17SetNextWindowSizeERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8) %7, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #12
  %478 = call noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef nonnull @.str.46, ptr noundef null, i32 noundef 0)
  ret void
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6ImFont8IsLoadedEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

declare void @_ZN10ImDrawList22PushClipRectFullScreenEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawData5ClearEv(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13ClearDragDropEv() local_unnamed_addr #8

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL9NavUpdateEv() local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL17UpdateMouseInputsEv() local_unnamed_addr #7

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZdvRK6ImVec2S1_(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 nounwind uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow12CalcFontSizeEv(ptr noundef nonnull align 8 dereferenceable(976)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL16SetWindowScrollYP11ImGuiWindowf(ptr noundef, float noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL16SetWindowScrollXP11ImGuiWindowf(ptr noundef, float noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTS12ImGuiContext", !11, i64 0, !11, i64 1, !12, i64 8, !16, i64 5408, !6, i64 6232, !15, i64 6240, !15, i64 6244, !17, i64 6248, !15, i64 6384, !13, i64 6388, !13, i64 6392, !13, i64 6396, !19, i64 6400, !19, i64 6416, !19, i64 6432, !20, i64 6448, !13, i64 6464, !6, i64 6472, !6, i64 6480, !6, i64 6488, !13, i64 6496, !11, i64 6500, !13, i64 6504, !15, i64 6508, !13, i64 6512, !13, i64 6516, !15, i64 6520, !11, i64 6524, !11, i64 6525, !11, i64 6526, !11, i64 6527, !11, i64 6528, !11, i64 6529, !13, i64 6532, !14, i64 6536, !6, i64 6544, !6, i64 6552, !22, i64 6560, !13, i64 6564, !15, i64 6568, !6, i64 6576, !23, i64 6584, !24, i64 6600, !25, i64 6616, !26, i64 6632, !26, i64 6648, !27, i64 6664, !11, i64 6776, !13, i64 6780, !6, i64 6784, !13, i64 6792, !13, i64 6796, !13, i64 6800, !13, i64 6804, !13, i64 6808, !13, i64 6812, !13, i64 6816, !13, i64 6820, !22, i64 6824, !28, i64 6828, !13, i64 6844, !6, i64 6848, !15, i64 6856, !15, i64 6860, !11, i64 6864, !13, i64 6868, !13, i64 6872, !11, i64 6876, !11, i64 6877, !11, i64 6878, !11, i64 6879, !11, i64 6880, !11, i64 6881, !11, i64 6882, !13, i64 6884, !28, i64 6888, !11, i64 6904, !11, i64 6905, !13, i64 6908, !29, i64 6912, !13, i64 6916, !13, i64 6920, !13, i64 6924, !30, i64 6928, !30, i64 6976, !30, i64 7024, !31, i64 7072, !32, i64 7120, !15, i64 7152, !33, i64 7160, !13, i64 7328, !11, i64 7332, !13, i64 7336, !13, i64 7340, !41, i64 7344, !28, i64 7408, !13, i64 7424, !13, i64 7428, !15, i64 7432, !13, i64 7436, !13, i64 7440, !13, i64 7444, !42, i64 7448, !7, i64 7464, !43, i64 7472, !48, i64 11176, !13, i64 11288, !13, i64 11292, !18, i64 11296, !11, i64 11312, !15, i64 11316, !15, i64 11320, !14, i64 11324, !13, i64 11332, !44, i64 11336, !14, i64 11352, !14, i64 11360, !11, i64 11368, !15, i64 11372, !51, i64 11376, !52, i64 11392, !53, i64 11408, !11, i64 11424, !6, i64 11432, !51, i64 11440, !13, i64 11456, !13, i64 11460, !7, i64 11464, !13, i64 11944, !15, i64 11948, !13, i64 11952, !13, i64 11956, !13, i64 11960, !7, i64 11964}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTS7ImGuiIO", !13, i64 0, !13, i64 4, !14, i64 8, !15, i64 16, !15, i64 20, !6, i64 24, !6, i64 32, !15, i64 40, !15, i64 44, !15, i64 48, !7, i64 52, !15, i64 136, !15, i64 140, !6, i64 144, !6, i64 152, !15, i64 160, !11, i64 164, !6, i64 168, !14, i64 176, !14, i64 184, !14, i64 192, !11, i64 200, !11, i64 201, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !14, i64 256, !7, i64 264, !15, i64 272, !15, i64 276, !11, i64 280, !11, i64 281, !11, i64 282, !11, i64 283, !11, i64 284, !7, i64 285, !7, i64 798, !7, i64 832, !11, i64 916, !11, i64 917, !11, i64 918, !11, i64 919, !11, i64 920, !11, i64 921, !11, i64 922, !15, i64 924, !13, i64 928, !13, i64 932, !13, i64 936, !14, i64 940, !14, i64 948, !7, i64 956, !7, i64 996, !7, i64 1016, !7, i64 1021, !7, i64 1026, !7, i64 1031, !7, i64 1036, !7, i64 1056, !7, i64 1076, !7, i64 1116, !7, i64 1136, !7, i64 3184, !7, i64 5232, !7, i64 5316}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS6ImVec2", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!"_ZTS10ImGuiStyle", !15, i64 0, !14, i64 4, !15, i64 12, !15, i64 16, !14, i64 20, !14, i64 28, !15, i64 36, !15, i64 40, !15, i64 44, !15, i64 48, !14, i64 52, !15, i64 60, !15, i64 64, !14, i64 68, !14, i64 76, !14, i64 84, !15, i64 92, !15, i64 96, !15, i64 100, !15, i64 104, !15, i64 108, !15, i64 112, !14, i64 116, !14, i64 124, !14, i64 132, !15, i64 140, !11, i64 144, !11, i64 145, !15, i64 148, !7, i64 152}
!17 = !{!"_ZTS20ImDrawListSharedData", !14, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !18, i64 24, !7, i64 40}
!18 = !{!"_ZTS6ImVec4", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12}
!19 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !13, i64 0, !13, i64 4, !6, i64 8}
!20 = !{!"_ZTS12ImGuiStorage", !21, i64 0}
!21 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !13, i64 0, !13, i64 4, !6, i64 8}
!22 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!23 = !{!"_ZTS8ImVectorI11ImGuiColModE", !13, i64 0, !13, i64 4, !6, i64 8}
!24 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !13, i64 0, !13, i64 4, !6, i64 8}
!25 = !{!"_ZTS8ImVectorIP6ImFontE", !13, i64 0, !13, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorI13ImGuiPopupRefE", !13, i64 0, !13, i64 4, !6, i64 8}
!27 = !{!"_ZTS19ImGuiNextWindowData", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !14, i64 28, !14, i64 36, !14, i64 44, !14, i64 52, !11, i64 60, !28, i64 64, !6, i64 80, !6, i64 88, !15, i64 96, !14, i64 100}
!28 = !{!"_ZTS6ImRect", !14, i64 0, !14, i64 8}
!29 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!30 = !{!"_ZTS18ImGuiNavMoveResult", !13, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24, !28, i64 28}
!31 = !{!"_ZTS10ImDrawData", !11, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !13, i64 24, !14, i64 28, !14, i64 36}
!32 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!33 = !{!"_ZTS10ImDrawList", !34, i64 0, !35, i64 16, !36, i64 32, !13, i64 48, !6, i64 56, !6, i64 64, !13, i64 72, !6, i64 80, !6, i64 88, !37, i64 96, !38, i64 112, !39, i64 128, !13, i64 144, !13, i64 148, !40, i64 152}
!34 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !13, i64 0, !13, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorItE", !13, i64 0, !13, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI10ImDrawVertE", !13, i64 0, !13, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorI6ImVec4E", !13, i64 0, !13, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorIPvE", !13, i64 0, !13, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorI6ImVec2E", !13, i64 0, !13, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !13, i64 0, !13, i64 4, !6, i64 8}
!41 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !7, i64 24, !11, i64 57, !11, i64 58}
!42 = !{!"_ZTS8ImVectorIhE", !13, i64 0, !13, i64 4, !6, i64 8}
!43 = !{!"_ZTS18ImGuiTextEditState", !13, i64 0, !35, i64 8, !44, i64 24, !44, i64 40, !13, i64 56, !13, i64 60, !13, i64 64, !15, i64 68, !45, i64 72, !15, i64 3692, !11, i64 3696, !11, i64 3697}
!44 = !{!"_ZTS8ImVectorIcE", !13, i64 0, !13, i64 4, !6, i64 8}
!45 = !{!"_ZTSN8ImGuiStb17STB_TexteditStateE", !13, i64 0, !13, i64 4, !13, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !15, i64 20, !46, i64 24}
!46 = !{!"_ZTSN8ImGuiStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !47, i64 3582, !47, i64 3584, !13, i64 3588, !13, i64 3592}
!47 = !{!"short", !7, i64 0}
!48 = !{!"_ZTS6ImFont", !15, i64 0, !15, i64 4, !14, i64 8, !49, i64 16, !50, i64 32, !35, i64 48, !6, i64 64, !15, i64 72, !47, i64 76, !47, i64 78, !6, i64 80, !6, i64 88, !15, i64 96, !15, i64 100, !11, i64 104, !13, i64 108}
!49 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !13, i64 0, !13, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorIfE", !13, i64 0, !13, i64 4, !6, i64 8}
!51 = !{!"_ZTS15ImGuiTextBuffer", !44, i64 0}
!52 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !13, i64 0, !13, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !13, i64 0, !13, i64 4, !6, i64 8}
!54 = !{i8 0, i8 2}
!55 = !{}
!56 = !{!10, !15, i64 24}
!57 = !{!10, !15, i64 16}
!58 = !{!10, !15, i64 20}
!59 = !{!10, !6, i64 160}
!60 = !{!61, !13, i64 64}
!61 = !{!"_ZTS11ImFontAtlas", !13, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !6, i64 24, !6, i64 32, !13, i64 40, !13, i64 44, !14, i64 48, !14, i64 56, !25, i64 64, !62, i64 80, !63, i64 96, !7, i64 112}
!62 = !{!"_ZTS8ImVectorIN11ImFontAtlas10CustomRectEE", !13, i64 0, !13, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI12ImFontConfigE", !13, i64 0, !13, i64 4, !6, i64 8}
!64 = !{!10, !15, i64 5556}
!65 = !{!10, !15, i64 5408}
!66 = !{!10, !13, i64 6388}
!67 = !{!10, !13, i64 6392}
!68 = !{!13, !13, i64 0}
!69 = !{!10, !13, i64 8}
!70 = !{!10, !11, i64 11368}
!71 = !{!10, !6, i64 32}
!72 = !{!10, !15, i64 11372}
!73 = !{!10, !11, i64 928}
!74 = !{!10, !15, i64 6384}
!75 = !{!10, !13, i64 11332}
!76 = !{!10, !13, i64 6464}
!77 = !{!10, !6, i64 6232}
!78 = !{i64 0, i64 4, !79, i64 4, i64 4, !79, i64 8, i64 4, !79, i64 12, i64 4, !79}
!79 = !{!15, !15, i64 0}
!80 = !{!10, !15, i64 6268}
!81 = !{!61, !6, i64 8}
!82 = !{!10, !11, i64 5552}
!83 = !{!10, !11, i64 5553}
!84 = !{!10, !13, i64 7208}
!85 = !{!10, !13, i64 6504}
!86 = !{!10, !15, i64 6508}
!87 = !{!10, !13, i64 6496}
!88 = !{!10, !11, i64 6500}
!89 = !{!10, !11, i64 6524}
!90 = !{!10, !13, i64 6516}
!91 = !{!10, !13, i64 6512}
!92 = !{!10, !15, i64 6520}
!93 = !{!10, !15, i64 6568}
!94 = !{!10, !6, i64 6544}
!95 = !{!10, !6, i64 6552}
!96 = !{!10, !11, i64 6527}
!97 = !{!10, !11, i64 6529}
!98 = !{!10, !11, i64 6528}
!99 = !{!10, !11, i64 6525}
!100 = !{!10, !13, i64 11288}
!101 = !{!10, !11, i64 7332}
!102 = !{!10, !13, i64 7364}
!103 = !{!10, !13, i64 7436}
!104 = !{!10, !13, i64 7440}
!105 = !{!10, !15, i64 7432}
!106 = !{!10, !13, i64 11944}
!107 = !{!10, !15, i64 11948}
!108 = !{!10, !15, i64 932}
!109 = !{!11, !11, i64 0}
!110 = distinct !{!110, !111}
!111 = !{!"llvm.loop.mustprogress"}
!112 = !{!10, !15, i64 7152}
!113 = !{!10, !13, i64 7328}
!114 = !{!10, !13, i64 11960}
!115 = !{!10, !13, i64 11956}
!116 = !{!10, !13, i64 11952}
!117 = !{!10, !6, i64 6480}
!118 = !{!119, !11, i64 125}
!119 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !13, i64 8, !13, i64 12, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !15, i64 72, !15, i64 76, !13, i64 80, !13, i64 84, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !11, i64 120, !11, i64 121, !11, i64 122, !11, i64 123, !11, i64 124, !11, i64 125, !11, i64 126, !11, i64 127, !11, i64 128, !11, i64 129, !13, i64 132, !13, i64 136, !13, i64 140, !13, i64 144, !13, i64 148, !13, i64 152, !11, i64 156, !13, i64 160, !13, i64 164, !13, i64 168, !13, i64 172, !13, i64 176, !13, i64 180, !14, i64 184, !14, i64 192, !120, i64 200, !123, i64 496, !28, i64 512, !28, i64 528, !28, i64 544, !28, i64 560, !28, i64 576, !13, i64 592, !15, i64 596, !124, i64 600, !20, i64 648, !125, i64 664, !15, i64 680, !13, i64 684, !6, i64 688, !33, i64 696, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !7, i64 912, !7, i64 920, !13, i64 952, !13, i64 956, !13, i64 960, !13, i64 964, !13, i64 968, !13, i64 972}
!120 = !{!"_ZTS19ImGuiWindowTempData", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !15, i64 32, !15, i64 36, !15, i64 40, !15, i64 44, !15, i64 48, !13, i64 52, !13, i64 56, !13, i64 60, !13, i64 64, !28, i64 68, !28, i64 84, !11, i64 100, !11, i64 101, !13, i64 104, !13, i64 108, !13, i64 112, !13, i64 116, !11, i64 120, !14, i64 124, !19, i64 136, !6, i64 152, !13, i64 160, !13, i64 164, !13, i64 168, !15, i64 172, !15, i64 176, !121, i64 184, !50, i64 200, !50, i64 216, !122, i64 232, !7, i64 248, !15, i64 272, !15, i64 276, !15, i64 280, !6, i64 288}
!121 = !{!"_ZTS8ImVectorIiE", !13, i64 0, !13, i64 4, !6, i64 8}
!122 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!123 = !{!"_ZTS8ImVectorIjE", !13, i64 0, !13, i64 4, !6, i64 8}
!124 = !{!"_ZTS16ImGuiMenuColumns", !13, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !7, i64 16, !7, i64 32}
!125 = !{!"_ZTS8ImVectorI15ImGuiColumnsSetE", !13, i64 0, !13, i64 4, !6, i64 8}
!126 = !{!10, !15, i64 280}
!127 = !{!10, !15, i64 284}
!128 = !{!119, !13, i64 12}
!129 = !{!119, !6, i64 864}
!130 = distinct !{!130, !111}
!131 = !{!10, !11, i64 289}
!132 = !{!10, !11, i64 172}
!133 = !{!119, !15, i64 680}
!134 = !{!119, !15, i64 68}
!135 = !{!119, !15, i64 92}
!136 = !{!119, !15, i64 88}
!137 = !{!10, !6, i64 6784}
!138 = !{!119, !11, i64 122}
!139 = !{!10, !13, i64 6792}
!140 = !{!10, !13, i64 6872}
!141 = !{!10, !11, i64 290}
!142 = !{!119, !13, i64 972}
!143 = !{!10, !13, i64 6400}
!144 = !{!119, !11, i64 123}
!145 = !{!119, !11, i64 124}
!146 = distinct !{!146, !111}


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