; LLVM IR from DarrenSweeney/3D-Physics-Engine :: Physics Engine/Imgui/imgui.ll (ZN5ImGui5BeginEPKcPbRK6ImVec2fi)

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

%struct.ImVec2 = type { float, float }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiAabb = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiState = type { i8, [7 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, %struct.ImVec2, float, i32, i32, %class.ImVector.1, ptr, %class.ImVector.1, ptr, ptr, ptr, i32, i32, i32, i8, i8, ptr, float, %class.ImVector.2, %class.ImVector.3, %class.ImVector.4, %class.ImVector, %struct.ImVec2, i32, %struct.ImVec2, i32, i8, i32, i8, i8, i32, %class.ImVector.5, %class.ImVector.1, %struct.ImGuiTextEditState, i32, %struct.ImGuiStorage, i32, [1024 x i8], ptr, i8, ptr, ptr, i32, i32, [120 x float], i32, float }
%struct.ImGuiIO = type <{ %struct.ImVec2, float, float, ptr, ptr, float, float, [17 x i32], [4 x i8], ptr, ptr, float, i8, [3 x i8], %struct.ImVec2, %struct.ImVec2, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], [3 x i8], float, i8, i8, i8, [512 x i8], i8, [17 x i16], i8, i8, float, %struct.ImVec2, %struct.ImVec2, [5 x i8], [3 x i8], [5 x %struct.ImVec2], [5 x float], [5 x i8], [5 x i8], [2 x i8], [5 x float], [512 x float], [4 x i8] }>
%struct.ImGuiStyle = type { float, %struct.ImVec2, %struct.ImVec2, float, float, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, [39 x %struct.ImVec4] }
%class.ImVector.2 = type { i64, i64, ptr }
%class.ImVector.3 = type { i64, i64, ptr }
%class.ImVector.4 = type { i64, i64, ptr }
%class.ImVector = type { i64, i64, ptr }
%class.ImVector.5 = type { i64, i64, ptr }
%class.ImVector.1 = type { i64, i64, ptr }
%struct.ImGuiTextEditState = type <{ i32, [1024 x i16], [3073 x i8], [3 x i8], i64, float, float, %struct.STB_TexteditState, float, %struct.ImVec2, i8, [7 x i8], ptr, float, [4 x i8] }>
%struct.STB_TexteditState = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, %struct.StbUndoState }
%struct.StbUndoState = type { [99 x %struct.StbUndoRecord], [999 x i16], i16, i16, i16, i16 }
%struct.StbUndoRecord = type { i32, i16, i16, i16 }
%struct.ImGuiStorage = type { %class.ImVector.6 }
%class.ImVector.6 = type { i64, i64, ptr }
%struct.ImGuiWindow = type { ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, i8, i8, i8, i32, i8, i32, i32, i32, %struct.ImGuiDrawContext, %class.ImVector.11, %class.ImVector.12, %struct.ImGuiAabb, i32, float, %struct.ImGuiStorage, float, ptr, ptr, i32, i32, i32, i32, i32, i32 }
%struct.ImGuiDrawContext = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, i32, i32, %struct.ImGuiAabb, i8, %class.ImVector.1, %class.ImVector.9, %class.ImVector.10, %class.ImVector.10, i32, ptr, float, float, i32, i32, %struct.ImVec2, float, float, i8, i32, %class.ImVector.10 }
%class.ImVector.9 = type { i64, i64, ptr }
%class.ImVector.10 = type { i64, i64, ptr }
%class.ImVector.11 = type { i64, i64, ptr }
%class.ImVector.12 = type { i64, i64, ptr }
%struct.ImFont = type { float, float, %struct.ImVec2, i16, ptr, %class.ImVector.16, ptr, float, %class.ImVector.10, %class.ImVector.17 }
%class.ImVector.16 = type { i64, i64, ptr }
%class.ImVector.17 = type { i64, i64, ptr }
%struct.ImFontAtlas = type { ptr, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %class.ImVector, %class.ImVector.0 }
%class.ImVector.0 = type { i64, i64, ptr }

@_ZL6GImGui = external hidden global ptr, align 8
@.str.10 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [6 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbRK6ImVec2fi = external hidden unnamed_addr constant [81 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

; 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 #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480), ptr noundef) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL15RegisterAliveIdRKj(ptr noundef nonnull align 4 dereferenceable(4)) #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK8ImVectorIP11ImGuiWindowE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL11SetActiveIdj(i32 noundef) #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480)) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIP11ImGuiWindowE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #8 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbRK6ImVec2fi(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 4 dereferenceable(8) %2, float noundef %3, i32 noundef %4) #9 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca float, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %struct.ImVec2, align 4
  %15 = alloca i8, align 1
  %16 = alloca %struct.ImVec2, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i64, align 8
  %19 = alloca i32, align 4
  %20 = alloca i8, align 1
  %21 = alloca %struct.ImVec4, align 4
  %22 = alloca %struct.ImVec4, align 4
  %23 = alloca i32, align 4
  %24 = alloca %struct.ImVec2, align 4
  %25 = alloca %struct.ImVec2, align 4
  %26 = alloca %struct.ImVec2, align 4
  %27 = alloca %struct.ImVec2, align 4
  %28 = alloca %struct.ImVec2, align 4
  %29 = alloca %struct.ImVec2, align 4
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 4
  %33 = alloca %struct.ImVec2, align 4
  %34 = alloca %struct.ImVec2, align 4
  %35 = alloca %struct.ImVec2, align 4
  %36 = alloca %struct.ImVec2, align 4
  %37 = alloca %struct.ImGuiAabb, align 4
  %38 = alloca float, align 4
  %39 = alloca %struct.ImVec2, align 4
  %40 = alloca %struct.ImVec2, align 4
  %41 = alloca %struct.ImVec2, align 4
  %42 = alloca %struct.ImVec2, align 4
  %43 = alloca %struct.ImVec2, align 4
  %44 = alloca %struct.ImVec2, align 4
  %45 = alloca %struct.ImVec2, align 4
  %46 = alloca %struct.ImVec2, align 4
  %47 = alloca %struct.ImVec2, align 4
  %48 = alloca %struct.ImVec2, align 4
  %49 = alloca %struct.ImVec2, align 4
  %50 = alloca i32, align 4
  %51 = alloca %struct.ImVec2, align 4
  %52 = alloca %struct.ImVec2, align 4
  %53 = alloca %struct.ImVec2, align 4
  %54 = alloca %struct.ImVec2, align 4
  %55 = alloca %struct.ImVec2, align 4
  %56 = alloca %struct.ImVec2, align 4
  %57 = alloca %struct.ImVec2, align 4
  %58 = alloca %struct.ImVec2, align 4
  %59 = alloca %struct.ImGuiAabb, align 4
  %60 = alloca %struct.ImVec2, align 4
  %61 = alloca %struct.ImVec2, align 4
  %62 = alloca %struct.ImGuiAabb, align 4
  %63 = alloca %struct.ImVec2, align 4
  %64 = alloca %struct.ImVec2, align 4
  %65 = alloca %struct.ImGuiAabb, align 4
  %66 = alloca i32, align 4
  %67 = alloca i8, align 1
  %68 = alloca i8, align 1
  %69 = alloca %struct.ImVec2, align 4
  %70 = alloca %struct.ImVec2, align 4
  %71 = alloca %struct.ImGuiAabb, align 4
  %72 = alloca %struct.ImVec2, align 4
  %73 = alloca %struct.ImVec2, align 4
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca %struct.ImVec2, align 4
  %76 = alloca %struct.ImVec2, align 4
  %77 = alloca %struct.ImVec2, align 4
  %78 = alloca %struct.ImVec2, align 4
  %79 = alloca %struct.ImVec2, align 4
  %80 = alloca %struct.ImVec2, align 4
  %81 = alloca %struct.ImVec2, align 4
  %82 = alloca %struct.ImVec2, align 4
  %83 = alloca %struct.ImVec2, align 4
  %84 = alloca %struct.ImVec2, align 4
  %85 = alloca %struct.ImVec2, align 4
  %86 = alloca %struct.ImVec2, align 4
  %87 = alloca %struct.ImVec2, align 4
  %88 = alloca %struct.ImGuiAabb, align 4
  %89 = alloca %struct.ImGuiAabb, align 4
  %90 = alloca %struct.ImGuiAabb, align 4
  %91 = alloca %struct.ImGuiAabb, align 4
  %92 = alloca %struct.ImVec2, align 4
  %93 = alloca float, align 4
  %94 = alloca float, align 4
  %95 = alloca i8, align 1
  %96 = alloca i8, align 1
  %97 = alloca i32, align 4
  %98 = alloca float, align 4
  %99 = alloca float, align 4
  %100 = alloca i32, align 4
  %101 = alloca %struct.ImVec2, align 4
  %102 = alloca %struct.ImVec2, align 4
  %103 = alloca float, align 4
  %104 = alloca %struct.ImVec2, align 4
  %105 = alloca %struct.ImGuiAabb, align 4
  %106 = alloca %struct.ImVec2, align 4
  %107 = alloca %struct.ImVec2, align 4
  %108 = alloca %struct.ImVec2, align 4
  %109 = alloca %struct.ImVec2, align 4
  %110 = alloca %struct.ImVec2, align 4
  %111 = alloca %struct.ImVec2, align 4
  %112 = alloca %struct.ImVec2, align 4
  %113 = alloca %struct.ImVec2, align 4
  %114 = alloca %struct.ImVec2, align 4
  %115 = alloca %struct.ImVec2, align 4
  %116 = alloca %struct.ImVec2, align 4
  %117 = alloca %struct.ImVec2, align 4
  %118 = alloca %struct.ImVec2, align 4
  %119 = alloca %struct.ImVec2, align 4
  %120 = alloca %struct.ImVec2, align 4
  %121 = alloca %struct.ImVec2, align 4
  %122 = alloca %struct.ImVec2, align 4
  %123 = alloca %struct.ImVec2, align 4
  %124 = alloca %struct.ImVec2, align 4
  %125 = alloca %struct.ImVec2, align 4
  %126 = alloca %struct.ImVec2, align 4
  %127 = alloca %struct.ImVec2, align 4
  %128 = alloca %struct.ImVec2, align 4
  %129 = alloca %struct.ImVec2, align 4
  %130 = alloca %struct.ImVec2, align 4
  %131 = alloca i8, align 1
  %132 = alloca float, align 4
  %133 = alloca %struct.ImVec2, align 4
  %134 = alloca %struct.ImVec2, align 4
  %135 = alloca %struct.ImVec2, align 4
  %136 = alloca %struct.ImVec2, align 4
  %137 = alloca %struct.ImVec2, align 4
  %138 = alloca %struct.ImVec2, align 4
  %139 = alloca %struct.ImVec2, align 4
  %140 = alloca %struct.ImGuiAabb, align 4
  %141 = alloca %struct.ImGuiAabb, align 4
  %142 = alloca %struct.ImGuiAabb, align 4
  %143 = alloca %struct.ImVec4, align 4
  %144 = alloca %struct.ImVec2, align 4
  %145 = alloca %struct.ImGuiAabb, align 4
  %146 = alloca %struct.ImVec2, align 4
  %147 = alloca %struct.ImGuiAabb, align 4
  %148 = alloca %struct.ImVec4, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store float %3, ptr %9, align 4, !tbaa !9
  store i32 %4, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #11
  %149 = load ptr, ptr @_ZL6GImGui, align 8, !tbaa !5
  store ptr %149, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  %150 = load ptr, ptr %11, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.ImGuiState, ptr %150, i32 0, i32 3
  store ptr %151, ptr %12, align 8, !tbaa !5
  %152 = load ptr, ptr %11, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.ImGuiState, ptr %152, i32 0, i32 0
  %154 = load i8, ptr %153, align 8, !tbaa !13, !range !32, !noundef !33
  %155 = trunc i8 %154 to i1
  br i1 %155, label %156, label %157

156:                                              ; preds = %5
  br label %159

157:                                              ; preds = %5
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.10, i32 noundef 2728, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbRK6ImVec2fi) #12
  unreachable

158:                                              ; No predecessors!
  br label %159

159:                                              ; preds = %158, %156
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  %161 = icmp ne ptr %160, null
  br i1 %161, label %162, label %163

162:                                              ; preds = %159
  br label %165

163:                                              ; preds = %159
  call void @__assert_fail(ptr noundef @.str.31, ptr noundef @.str.10, i32 noundef 2729, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbRK6ImVec2fi) #12
  unreachable

164:                                              ; No predecessors!
  br label %165

165:                                              ; preds = %164, %162
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  %166 = load ptr, ptr %6, align 8, !tbaa !5
  %167 = call noundef ptr @_ZL16FindWindowByNamePKc(ptr noundef %166)
  store ptr %167, ptr %13, align 8, !tbaa !5
  %168 = load ptr, ptr %13, align 8, !tbaa !5
  %169 = icmp ne ptr %168, null
  br i1 %169, label %176, label %170

170:                                              ; preds = %165
  %171 = load ptr, ptr %6, align 8, !tbaa !5
  %172 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 4 %172, i64 8, i1 false), !tbaa.struct !34
  %173 = load i32, ptr %10, align 4, !tbaa !11
  %174 = load <2 x float>, ptr %14, align 4
  %175 = call noundef ptr @_ZL15CreateNewWindowPKc6ImVec2i(ptr noundef %171, <2 x float> %174, i32 noundef %173)
  store ptr %175, ptr %13, align 8, !tbaa !5
  br label %176

176:                                              ; preds = %170, %165
  %177 = load i32, ptr %10, align 4, !tbaa !11
  %178 = load ptr, ptr %13, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.ImGuiWindow, ptr %178, i32 0, i32 2
  store i32 %177, ptr %179, align 4, !tbaa !35
  %180 = load ptr, ptr %11, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.ImGuiState, ptr %180, i32 0, i32 12
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %181, ptr noundef nonnull align 8 dereferenceable(8) %13)
  %182 = load ptr, ptr %13, align 8, !tbaa !5
  %183 = load ptr, ptr %11, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.ImGuiState, ptr %183, i32 0, i32 11
  store ptr %182, ptr %184, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #11
  store i8 0, ptr %15, align 1, !tbaa !44
  %185 = load ptr, ptr %11, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.ImGuiState, ptr %185, i32 0, i32 28
  %187 = load i32, ptr %186, align 8, !tbaa !45
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %189, label %203

189:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #11
  %190 = load ptr, ptr %13, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.ImGuiWindow, ptr %190, i32 0, i32 20
  %192 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %191, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %16, ptr align 8 %192, i64 8, i1 false), !tbaa.struct !34
  %193 = load ptr, ptr %11, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.ImGuiState, ptr %193, i32 0, i32 27
  %195 = load ptr, ptr %11, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.ImGuiState, ptr %195, i32 0, i32 28
  %197 = load i32, ptr %196, align 8, !tbaa !45
  call void @_ZN5ImGui12SetWindowPosERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8) %194, i32 noundef %197)
  %198 = load ptr, ptr %13, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.ImGuiWindow, ptr %198, i32 0, i32 20
  %200 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %199, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %200, ptr align 4 %16, i64 8, i1 false), !tbaa.struct !34
  store i8 1, ptr %15, align 1, !tbaa !44
  %201 = load ptr, ptr %11, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.ImGuiState, ptr %201, i32 0, i32 28
  store i32 0, ptr %202, align 8, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  br label %203

203:                                              ; preds = %189, %176
  %204 = load ptr, ptr %11, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.ImGuiState, ptr %204, i32 0, i32 30
  %206 = load i32, ptr %205, align 4, !tbaa !46
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %216

208:                                              ; preds = %203
  %209 = load ptr, ptr %11, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.ImGuiState, ptr %209, i32 0, i32 29
  %211 = load ptr, ptr %11, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.ImGuiState, ptr %211, i32 0, i32 30
  %213 = load i32, ptr %212, align 4, !tbaa !46
  call void @_ZN5ImGui13SetWindowSizeERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8) %210, i32 noundef %213)
  %214 = load ptr, ptr %11, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.ImGuiState, ptr %214, i32 0, i32 30
  store i32 0, ptr %215, align 4, !tbaa !46
  br label %216

216:                                              ; preds = %208, %203
  %217 = load ptr, ptr %11, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.ImGuiState, ptr %217, i32 0, i32 32
  %219 = load i32, ptr %218, align 4, !tbaa !47
  %220 = icmp ne i32 %219, 0
  br i1 %220, label %221, label %231

221:                                              ; preds = %216
  %222 = load ptr, ptr %11, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.ImGuiState, ptr %222, i32 0, i32 31
  %224 = load i8, ptr %223, align 8, !tbaa !48, !range !32, !noundef !33
  %225 = trunc i8 %224 to i1
  %226 = load ptr, ptr %11, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.ImGuiState, ptr %226, i32 0, i32 32
  %228 = load i32, ptr %227, align 4, !tbaa !47
  call void @_ZN5ImGui18SetWindowCollapsedEbi(i1 noundef zeroext %225, i32 noundef %228)
  %229 = load ptr, ptr %11, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.ImGuiState, ptr %229, i32 0, i32 32
  store i32 0, ptr %230, align 4, !tbaa !47
  br label %231

231:                                              ; preds = %221, %216
  %232 = load ptr, ptr %11, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.ImGuiState, ptr %232, i32 0, i32 33
  %234 = load i8, ptr %233, align 8, !tbaa !49, !range !32, !noundef !33
  %235 = trunc i8 %234 to i1
  br i1 %235, label %236, label %239

236:                                              ; preds = %231
  call void @_ZN5ImGui14SetWindowFocusEv()
  %237 = load ptr, ptr %11, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.ImGuiState, ptr %237, i32 0, i32 33
  store i8 0, ptr %238, align 8, !tbaa !49
  br label %239

239:                                              ; preds = %236, %231
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #11
  %240 = load i32, ptr %10, align 4, !tbaa !11
  %241 = and i32 %240, 512
  %242 = icmp ne i32 %241, 0
  br i1 %242, label %243, label %252

243:                                              ; preds = %239
  %244 = load ptr, ptr %11, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.ImGuiState, ptr %244, i32 0, i32 12
  %246 = load ptr, ptr %11, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.ImGuiState, ptr %246, i32 0, i32 12
  %248 = call noundef i64 @_ZNK8ImVectorIP11ImGuiWindowE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %247)
  %249 = sub i64 %248, 2
  %250 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEm(ptr noundef nonnull align 8 dereferenceable(24) %245, i64 noundef %249)
  %251 = load ptr, ptr %250, align 8, !tbaa !5
  br label %253

252:                                              ; preds = %239
  br label %253

253:                                              ; preds = %252, %243
  %254 = phi ptr [ %251, %243 ], [ null, %252 ]
  store ptr %254, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #11
  %255 = load ptr, ptr %11, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.ImGuiState, ptr %255, i32 0, i32 12
  %257 = call noundef i64 @_ZNK8ImVectorIP11ImGuiWindowE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %256)
  %258 = sub i64 %257, 1
  store i64 %258, ptr %18, align 8, !tbaa !50
  br label %259

259:                                              ; preds = %273, %253
  %260 = load i64, ptr %18, align 8, !tbaa !50
  %261 = icmp ugt i64 %260, 0
  br i1 %261, label %262, label %276

262:                                              ; preds = %259
  %263 = load ptr, ptr %11, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.ImGuiState, ptr %263, i32 0, i32 12
  %265 = load i64, ptr %18, align 8, !tbaa !50
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %265)
  %267 = load ptr, ptr %266, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.ImGuiWindow, ptr %267, i32 0, i32 2
  %269 = load i32, ptr %268, align 4, !tbaa !35
  %270 = and i32 %269, 512
  %271 = icmp eq i32 %270, 0
  br i1 %271, label %272, label %273

272:                                              ; preds = %262
  br label %276

273:                                              ; preds = %262
  %274 = load i64, ptr %18, align 8, !tbaa !50
  %275 = add i64 %274, -1
  store i64 %275, ptr %18, align 8, !tbaa !50
  br label %259, !llvm.loop !51

276:                                              ; preds = %272, %259
  %277 = load ptr, ptr %11, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.ImGuiState, ptr %277, i32 0, i32 12
  %279 = load i64, ptr %18, align 8, !tbaa !50
  %280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEm(ptr noundef nonnull align 8 dereferenceable(24) %278, i64 noundef %279)
  %281 = load ptr, ptr %280, align 8, !tbaa !5
  %282 = load ptr, ptr %13, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.ImGuiWindow, ptr %282, i32 0, i32 29
  store ptr %281, ptr %283, align 8, !tbaa !53
  %284 = load float, ptr %9, align 4, !tbaa !9
  %285 = fcmp olt float %284, 0.000000e+00
  br i1 %285, label %286, label %290

286:                                              ; preds = %276
  %287 = load ptr, ptr %12, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.ImGuiStyle, ptr %287, i32 0, i32 11
  %289 = load float, ptr %288, align 4, !tbaa !54
  store float %289, ptr %9, align 4, !tbaa !9
  br label %290

290:                                              ; preds = %286, %276
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  %291 = call noundef i32 @_ZN5ImGui13GetFrameCountEv()
  store i32 %291, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #11
  %292 = load ptr, ptr %13, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.ImGuiWindow, ptr %292, i32 0, i32 24
  %294 = load i32, ptr %293, align 8, !tbaa !55
  %295 = load i32, ptr %19, align 4, !tbaa !11
  %296 = icmp ne i32 %294, %295
  %297 = zext i1 %296 to i8
  store i8 %297, ptr %20, align 1, !tbaa !44
  %298 = load i8, ptr %20, align 1, !tbaa !44, !range !32, !noundef !33
  %299 = trunc i8 %298 to i1
  br i1 %299, label %300, label %338

300:                                              ; preds = %290
  %301 = load ptr, ptr %13, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.ImGuiWindow, ptr %301, i32 0, i32 28
  %303 = load ptr, ptr %302, align 8, !tbaa !56
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(104) %303)
  %304 = load ptr, ptr %13, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.ImGuiWindow, ptr %304, i32 0, i32 11
  store i8 1, ptr %305, align 1, !tbaa !57
  %306 = load ptr, ptr %13, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.ImGuiWindow, ptr %306, i32 0, i32 24
  %308 = load i32, ptr %307, align 8, !tbaa !55
  %309 = load i32, ptr %19, align 4, !tbaa !11
  %310 = sub nsw i32 %309, 1
  %311 = icmp slt i32 %308, %310
  br i1 %311, label %312, label %314

312:                                              ; preds = %300
  %313 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef %313)
  br label %314

314:                                              ; preds = %312, %300
  %315 = load i32, ptr %19, align 4, !tbaa !11
  %316 = load ptr, ptr %13, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.ImGuiWindow, ptr %316, i32 0, i32 24
  store i32 %315, ptr %317, align 8, !tbaa !55
  %318 = load ptr, ptr %13, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.ImGuiWindow, ptr %318, i32 0, i32 22
  call void @_ZN8ImVectorI6ImVec4E6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %319, i64 noundef 0)
  %320 = load i32, ptr %10, align 4, !tbaa !11
  %321 = and i32 %320, 512
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %337

323:                                              ; preds = %314
  %324 = load ptr, ptr %17, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.ImGuiWindow, ptr %324, i32 0, i32 20
  %326 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %325, i32 0, i32 10
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %326, ptr noundef nonnull align 8 dereferenceable(8) %13)
  %327 = load ptr, ptr %17, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.ImGuiWindow, ptr %327, i32 0, i32 20
  %329 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %328, i32 0, i32 0
  %330 = load ptr, ptr %13, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.ImGuiWindow, ptr %330, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %331, ptr align 8 %329, i64 8, i1 false), !tbaa.struct !34
  %332 = load ptr, ptr %13, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.ImGuiWindow, ptr %332, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %333, ptr align 4 %331, i64 8, i1 false), !tbaa.struct !34
  %334 = load ptr, ptr %8, align 8, !tbaa !5
  %335 = load ptr, ptr %13, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.ImGuiWindow, ptr %335, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %336, ptr align 4 %334, i64 8, i1 false), !tbaa.struct !34
  br label %337

337:                                              ; preds = %323, %314
  br label %338

338:                                              ; preds = %337, %290
  %339 = load ptr, ptr %13, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.ImGuiWindow, ptr %339, i32 0, i32 28
  %341 = load ptr, ptr %340, align 8, !tbaa !56
  %342 = load ptr, ptr %11, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.ImGuiState, ptr %342, i32 0, i32 4
  %344 = load ptr, ptr %343, align 8, !tbaa !58
  %345 = getelementptr inbounds %struct.ImFont, ptr %344, i32 0, i32 4
  %346 = load ptr, ptr %345, align 8, !tbaa !59
  %347 = getelementptr inbounds %struct.ImFontAtlas, ptr %346, i32 0, i32 0
  call void @_ZN10ImDrawList13PushTextureIDERKPv(ptr noundef nonnull align 8 dereferenceable(104) %341, ptr noundef nonnull align 8 dereferenceable(8) %347)
  %348 = load i32, ptr %10, align 4, !tbaa !11
  %349 = and i32 %348, 512
  %350 = icmp ne i32 %349, 0
  br i1 %350, label %351, label %359

351:                                              ; preds = %338
  %352 = load i32, ptr %10, align 4, !tbaa !11
  %353 = and i32 %352, 4096
  %354 = icmp ne i32 %353, 0
  br i1 %354, label %359, label %355

355:                                              ; preds = %351
  %356 = load ptr, ptr %17, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.ImGuiWindow, ptr %356, i32 0, i32 22
  %358 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN8ImVectorI6ImVec4E4backEv(ptr noundef nonnull align 8 dereferenceable(24) %357)
  call void @_ZL12PushClipRectRK6ImVec4b(ptr noundef nonnull align 4 dereferenceable(16) %358, i1 noundef zeroext true)
  br label %416

359:                                              ; preds = %351, %338
  %360 = load ptr, ptr %11, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.ImGuiState, ptr %360, i32 0, i32 2
  %362 = getelementptr inbounds %struct.ImGuiIO, ptr %361, i32 0, i32 14
  %363 = getelementptr inbounds %struct.ImVec2, ptr %362, i32 0, i32 0
  %364 = load float, ptr %363, align 8, !tbaa !63
  %365 = load ptr, ptr %11, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.ImGuiState, ptr %365, i32 0, i32 2
  %367 = getelementptr inbounds %struct.ImGuiIO, ptr %366, i32 0, i32 15
  %368 = getelementptr inbounds %struct.ImVec2, ptr %367, i32 0, i32 0
  %369 = load float, ptr %368, align 8, !tbaa !64
  %370 = fcmp une float %364, %369
  br i1 %370, label %371, label %404

371:                                              ; preds = %359
  %372 = load ptr, ptr %11, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.ImGuiState, ptr %372, i32 0, i32 2
  %374 = getelementptr inbounds %struct.ImGuiIO, ptr %373, i32 0, i32 14
  %375 = getelementptr inbounds %struct.ImVec2, ptr %374, i32 0, i32 1
  %376 = load float, ptr %375, align 4, !tbaa !65
  %377 = load ptr, ptr %11, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.ImGuiState, ptr %377, i32 0, i32 2
  %379 = getelementptr inbounds %struct.ImGuiIO, ptr %378, i32 0, i32 15
  %380 = getelementptr inbounds %struct.ImVec2, ptr %379, i32 0, i32 1
  %381 = load float, ptr %380, align 4, !tbaa !66
  %382 = fcmp une float %376, %381
  br i1 %382, label %383, label %404

383:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #11
  %384 = load ptr, ptr %11, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.ImGuiState, ptr %384, i32 0, i32 2
  %386 = getelementptr inbounds %struct.ImGuiIO, ptr %385, i32 0, i32 14
  %387 = getelementptr inbounds %struct.ImVec2, ptr %386, i32 0, i32 0
  %388 = load float, ptr %387, align 8, !tbaa !63
  %389 = load ptr, ptr %11, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.ImGuiState, ptr %389, i32 0, i32 2
  %391 = getelementptr inbounds %struct.ImGuiIO, ptr %390, i32 0, i32 14
  %392 = getelementptr inbounds %struct.ImVec2, ptr %391, i32 0, i32 1
  %393 = load float, ptr %392, align 4, !tbaa !65
  %394 = load ptr, ptr %11, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.ImGuiState, ptr %394, i32 0, i32 2
  %396 = getelementptr inbounds %struct.ImGuiIO, ptr %395, i32 0, i32 15
  %397 = getelementptr inbounds %struct.ImVec2, ptr %396, i32 0, i32 0
  %398 = load float, ptr %397, align 8, !tbaa !64
  %399 = load ptr, ptr %11, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.ImGuiState, ptr %399, i32 0, i32 2
  %401 = getelementptr inbounds %struct.ImGuiIO, ptr %400, i32 0, i32 15
  %402 = getelementptr inbounds %struct.ImVec2, ptr %401, i32 0, i32 1
  %403 = load float, ptr %402, align 4, !tbaa !66
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %21, float noundef %388, float noundef %393, float noundef %398, float noundef %403)
  call void @_ZL12PushClipRectRK6ImVec4b(ptr noundef nonnull align 4 dereferenceable(16) %21, i1 noundef zeroext true)
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #11
  br label %415

404:                                              ; preds = %371, %359
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #11
  %405 = load ptr, ptr %11, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.ImGuiState, ptr %405, i32 0, i32 2
  %407 = getelementptr inbounds %struct.ImGuiIO, ptr %406, i32 0, i32 0
  %408 = getelementptr inbounds %struct.ImVec2, ptr %407, i32 0, i32 0
  %409 = load float, ptr %408, align 8, !tbaa !67
  %410 = load ptr, ptr %11, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.ImGuiState, ptr %410, i32 0, i32 2
  %412 = getelementptr inbounds %struct.ImGuiIO, ptr %411, i32 0, i32 0
  %413 = getelementptr inbounds %struct.ImVec2, ptr %412, i32 0, i32 1
  %414 = load float, ptr %413, align 4, !tbaa !68
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %22, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %409, float noundef %414)
  call void @_ZL12PushClipRectRK6ImVec4b(ptr noundef nonnull align 4 dereferenceable(16) %22, i1 noundef zeroext true)
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #11
  br label %415

415:                                              ; preds = %404, %383
  br label %416

416:                                              ; preds = %415, %355
  %417 = load i8, ptr %20, align 1, !tbaa !44, !range !32, !noundef !33
  %418 = trunc i8 %417 to i1
  br i1 %418, label %419, label %1639

419:                                              ; preds = %416
  %420 = load ptr, ptr %13, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.ImGuiWindow, ptr %420, i32 0, i32 21
  call void @_ZN8ImVectorIjE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %421, i64 noundef 0)
  %422 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN5ImGui6PushIDEPKv(ptr noundef %422)
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  %423 = load ptr, ptr %13, align 8, !tbaa !5
  %424 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %423, ptr noundef @.str.20)
  store i32 %424, ptr %23, align 4, !tbaa !11
  call void @_ZL15RegisterAliveIdRKj(ptr noundef nonnull align 4 dereferenceable(4) %23)
  %425 = load ptr, ptr %11, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.ImGuiState, ptr %425, i32 0, i32 17
  %427 = load i32, ptr %426, align 4, !tbaa !69
  %428 = load i32, ptr %23, align 4, !tbaa !11
  %429 = icmp eq i32 %427, %428
  br i1 %429, label %430, label %473

430:                                              ; preds = %419
  %431 = load ptr, ptr %11, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.ImGuiState, ptr %431, i32 0, i32 2
  %433 = getelementptr inbounds %struct.ImGuiIO, ptr %432, i32 0, i32 24
  %434 = getelementptr inbounds [5 x i8], ptr %433, i64 0, i64 0
  %435 = load i8, ptr %434, align 8, !tbaa !44, !range !32, !noundef !33
  %436 = trunc i8 %435 to i1
  br i1 %436, label %437, label %469

437:                                              ; preds = %430
  %438 = load ptr, ptr %13, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.ImGuiWindow, ptr %438, i32 0, i32 2
  %440 = load i32, ptr %439, align 4, !tbaa !35
  %441 = and i32 %440, 4
  %442 = icmp ne i32 %441, 0
  br i1 %442, label %457, label %443

443:                                              ; preds = %437
  %444 = load ptr, ptr %11, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.ImGuiState, ptr %444, i32 0, i32 2
  %446 = getelementptr inbounds %struct.ImGuiIO, ptr %445, i32 0, i32 37
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.ImGuiWindow, ptr %447, i32 0, i32 3
  %449 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %448, ptr noundef nonnull align 4 dereferenceable(8) %446)
  %450 = load ptr, ptr %13, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.ImGuiWindow, ptr %450, i32 0, i32 2
  %452 = load i32, ptr %451, align 4, !tbaa !35
  %453 = and i32 %452, 256
  %454 = icmp ne i32 %453, 0
  br i1 %454, label %456, label %455

455:                                              ; preds = %443
  call void @_ZL17MarkSettingsDirtyv()
  br label %456

456:                                              ; preds = %455, %443
  br label %457

457:                                              ; preds = %456, %437
  %458 = load ptr, ptr %11, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.ImGuiState, ptr %458, i32 0, i32 21
  %460 = load ptr, ptr %459, align 8, !tbaa !70
  %461 = icmp ne ptr %460, null
  br i1 %461, label %462, label %463

462:                                              ; preds = %457
  br label %465

463:                                              ; preds = %457
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.10, i32 noundef 2838, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbRK6ImVec2fi) #12
  unreachable

464:                                              ; No predecessors!
  br label %465

465:                                              ; preds = %464, %462
  %466 = load ptr, ptr %11, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.ImGuiState, ptr %466, i32 0, i32 21
  %468 = load ptr, ptr %467, align 8, !tbaa !70
  call void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef %468)
  br label %472

469:                                              ; preds = %430
  call void @_ZL11SetActiveIdj(i32 noundef 0)
  %470 = load ptr, ptr %11, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.ImGuiState, ptr %470, i32 0, i32 21
  store ptr null, ptr %471, align 8, !tbaa !70
  br label %472

472:                                              ; preds = %469, %465
  br label %473

473:                                              ; preds = %472, %419
  %474 = load i8, ptr %15, align 1, !tbaa !44, !range !32, !noundef !33
  %475 = trunc i8 %474 to i1
  br i1 %475, label %493, label %476

476:                                              ; preds = %473
  %477 = load ptr, ptr %13, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.ImGuiWindow, ptr %477, i32 0, i32 2
  %479 = load i32, ptr %478, align 4, !tbaa !35
  %480 = and i32 %479, 8192
  %481 = icmp ne i32 %480, 0
  br i1 %481, label %482, label %493

482:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  %483 = load ptr, ptr %11, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.ImGuiState, ptr %483, i32 0, i32 2
  %485 = getelementptr inbounds %struct.ImGuiIO, ptr %484, i32 0, i32 23
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %26, float noundef 3.200000e+01, float noundef 1.600000e+01)
  %486 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %485, ptr noundef nonnull align 4 dereferenceable(8) %26)
  store <2 x float> %486, ptr %25, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #11
  %487 = load ptr, ptr %12, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.ImGuiStyle, ptr %487, i32 0, i32 5
  %489 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %488, float noundef 2.000000e+00)
  store <2 x float> %489, ptr %27, align 4
  %490 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(8) %27)
  store <2 x float> %490, ptr %24, align 4
  %491 = load ptr, ptr %13, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.ImGuiWindow, ptr %491, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %492, ptr align 4 %24, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %493

493:                                              ; preds = %482, %476, %473
  %494 = load ptr, ptr %13, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.ImGuiWindow, ptr %494, i32 0, i32 2
  %496 = load i32, ptr %495, align 4, !tbaa !35
  %497 = and i32 %496, 512
  %498 = icmp ne i32 %497, 0
  br i1 %498, label %554, label %499

499:                                              ; preds = %493
  %500 = load ptr, ptr %13, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.ImGuiWindow, ptr %500, i32 0, i32 2
  %502 = load i32, ptr %501, align 4, !tbaa !35
  %503 = and i32 %502, 8192
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %554, label %505

505:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #11
  %506 = load ptr, ptr %13, align 8, !tbaa !5
  %507 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %506)
  %508 = fmul float %507, 2.000000e+00
  %509 = load ptr, ptr %13, align 8, !tbaa !5
  %510 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %509)
  %511 = fmul float %510, 2.000000e+00
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef %508, float noundef %511)
  %512 = load ptr, ptr %11, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.ImGuiState, ptr %512, i32 0, i32 2
  %514 = getelementptr inbounds %struct.ImGuiIO, ptr %513, i32 0, i32 0
  %515 = getelementptr inbounds %struct.ImVec2, ptr %514, i32 0, i32 0
  %516 = load float, ptr %515, align 8, !tbaa !67
  %517 = fcmp ogt float %516, 0.000000e+00
  br i1 %517, label %518, label %546

518:                                              ; preds = %505
  %519 = load ptr, ptr %11, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.ImGuiState, ptr %519, i32 0, i32 2
  %521 = getelementptr inbounds %struct.ImGuiIO, ptr %520, i32 0, i32 0
  %522 = getelementptr inbounds %struct.ImVec2, ptr %521, i32 0, i32 1
  %523 = load float, ptr %522, align 4, !tbaa !68
  %524 = fcmp ogt float %523, 0.000000e+00
  br i1 %524, label %525, label %546

525:                                              ; preds = %518
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 4 %28, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  %526 = load ptr, ptr %11, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.ImGuiState, ptr %526, i32 0, i32 2
  %528 = getelementptr inbounds %struct.ImGuiIO, ptr %527, i32 0, i32 0
  %529 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %528, ptr noundef nonnull align 4 dereferenceable(8) %28)
  store <2 x float> %529, ptr %30, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #11
  %530 = load ptr, ptr %13, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.ImGuiWindow, ptr %530, i32 0, i32 3
  %532 = load ptr, ptr %13, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.ImGuiWindow, ptr %532, i32 0, i32 5
  %534 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %531, ptr noundef nonnull align 4 dereferenceable(8) %533)
  store <2 x float> %534, ptr %33, align 4
  %535 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %29)
  store <2 x float> %535, ptr %32, align 4
  %536 = load ptr, ptr %13, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.ImGuiWindow, ptr %536, i32 0, i32 5
  %538 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef nonnull align 4 dereferenceable(8) %537)
  store <2 x float> %538, ptr %31, align 4
  %539 = load ptr, ptr %13, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.ImGuiWindow, ptr %539, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %540, ptr align 4 %31, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #11
  %541 = load ptr, ptr %13, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.ImGuiWindow, ptr %541, i32 0, i32 3
  %543 = call <2 x float> @_ZL5ImMinRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %542, ptr noundef nonnull align 4 dereferenceable(8) %30)
  store <2 x float> %543, ptr %34, align 4
  %544 = load ptr, ptr %13, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.ImGuiWindow, ptr %544, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %545, ptr align 4 %34, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %546

546:                                              ; preds = %525, %518, %505
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %547 = load ptr, ptr %13, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.ImGuiWindow, ptr %547, i32 0, i32 6
  %549 = load ptr, ptr %12, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ImGuiStyle, ptr %549, i32 0, i32 2
  %551 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %548, ptr noundef nonnull align 4 dereferenceable(8) %550)
  store <2 x float> %551, ptr %35, align 4
  %552 = load ptr, ptr %13, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.ImGuiWindow, ptr %552, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %553, ptr align 4 %35, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  br label %554

554:                                              ; preds = %546, %499, %493
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #11
  %555 = load ptr, ptr %13, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.ImGuiWindow, ptr %555, i32 0, i32 3
  %557 = getelementptr inbounds %struct.ImVec2, ptr %556, i32 0, i32 0
  %558 = load float, ptr %557, align 8, !tbaa !71
  %559 = fptosi float %558 to i32
  %560 = sitofp i32 %559 to float
  %561 = load ptr, ptr %13, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.ImGuiWindow, ptr %561, i32 0, i32 3
  %563 = getelementptr inbounds %struct.ImVec2, ptr %562, i32 0, i32 1
  %564 = load float, ptr %563, align 4, !tbaa !72
  %565 = fptosi float %564 to i32
  %566 = sitofp i32 %565 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %36, float noundef %560, float noundef %566)
  %567 = load ptr, ptr %13, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.ImGuiWindow, ptr %567, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %568, ptr align 4 %36, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  %569 = load ptr, ptr %13, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.ImGuiWindow, ptr %569, i32 0, i32 5
  %571 = getelementptr inbounds %struct.ImVec2, ptr %570, i32 0, i32 0
  %572 = load float, ptr %571, align 8, !tbaa !73
  %573 = fcmp ogt float %572, 0.000000e+00
  br i1 %573, label %574, label %596

574:                                              ; preds = %554
  %575 = load ptr, ptr %13, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiWindow, ptr %575, i32 0, i32 2
  %577 = load i32, ptr %576, align 4, !tbaa !35
  %578 = and i32 %577, 8192
  %579 = icmp ne i32 %578, 0
  br i1 %579, label %596, label %580

580:                                              ; preds = %574
  %581 = load ptr, ptr %13, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.ImGuiWindow, ptr %581, i32 0, i32 2
  %583 = load i32, ptr %582, align 4, !tbaa !35
  %584 = and i32 %583, 64
  %585 = icmp ne i32 %584, 0
  br i1 %585, label %596, label %586

586:                                              ; preds = %580
  %587 = load ptr, ptr %13, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.ImGuiWindow, ptr %587, i32 0, i32 5
  %589 = getelementptr inbounds %struct.ImVec2, ptr %588, i32 0, i32 0
  %590 = load float, ptr %589, align 8, !tbaa !73
  %591 = fmul float %590, 0x3FE4CCCCC0000000
  %592 = fptosi float %591 to i32
  %593 = sitofp i32 %592 to float
  %594 = load ptr, ptr %13, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.ImGuiWindow, ptr %594, i32 0, i32 25
  store float %593, ptr %595, align 4, !tbaa !74
  br label %599

596:                                              ; preds = %580, %574, %554
  %597 = load ptr, ptr %13, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.ImGuiWindow, ptr %597, i32 0, i32 25
  store float 2.000000e+02, ptr %598, align 4, !tbaa !74
  br label %599

599:                                              ; preds = %596, %586
  %600 = load ptr, ptr %13, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.ImGuiWindow, ptr %600, i32 0, i32 34
  %602 = load i32, ptr %601, align 8, !tbaa !75
  %603 = icmp eq i32 %602, 2147483647
  br i1 %603, label %609, label %604

604:                                              ; preds = %599
  %605 = load ptr, ptr %13, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.ImGuiWindow, ptr %605, i32 0, i32 30
  %607 = load i32, ptr %606, align 8, !tbaa !76
  %608 = icmp eq i32 %607, -1
  br i1 %608, label %609, label %612

609:                                              ; preds = %604, %599
  %610 = load ptr, ptr %13, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.ImGuiWindow, ptr %610, i32 0, i32 32
  store i32 2147483647, ptr %611, align 8, !tbaa !77
  br label %628

612:                                              ; preds = %604
  %613 = load ptr, ptr %13, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.ImGuiWindow, ptr %613, i32 0, i32 34
  %615 = load i32, ptr %614, align 8, !tbaa !75
  %616 = load ptr, ptr %13, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.ImGuiWindow, ptr %616, i32 0, i32 30
  %618 = load i32, ptr %617, align 8, !tbaa !76
  %619 = add nsw i32 %618, 1
  %620 = add nsw i32 %615, %619
  %621 = load ptr, ptr %13, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.ImGuiWindow, ptr %621, i32 0, i32 30
  %623 = load i32, ptr %622, align 8, !tbaa !76
  %624 = add nsw i32 %623, 1
  %625 = srem i32 %620, %624
  %626 = load ptr, ptr %13, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.ImGuiWindow, ptr %626, i32 0, i32 32
  store i32 %625, ptr %627, align 8, !tbaa !77
  br label %628

628:                                              ; preds = %612, %609
  %629 = load ptr, ptr %13, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.ImGuiWindow, ptr %629, i32 0, i32 35
  %631 = load i32, ptr %630, align 4, !tbaa !78
  %632 = icmp eq i32 %631, 2147483647
  br i1 %632, label %638, label %633

633:                                              ; preds = %628
  %634 = load ptr, ptr %13, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.ImGuiWindow, ptr %634, i32 0, i32 31
  %636 = load i32, ptr %635, align 4, !tbaa !79
  %637 = icmp eq i32 %636, -1
  br i1 %637, label %638, label %641

638:                                              ; preds = %633, %628
  %639 = load ptr, ptr %13, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.ImGuiWindow, ptr %639, i32 0, i32 33
  store i32 2147483647, ptr %640, align 4, !tbaa !80
  br label %657

641:                                              ; preds = %633
  %642 = load ptr, ptr %13, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.ImGuiWindow, ptr %642, i32 0, i32 35
  %644 = load i32, ptr %643, align 4, !tbaa !78
  %645 = load ptr, ptr %13, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.ImGuiWindow, ptr %645, i32 0, i32 31
  %647 = load i32, ptr %646, align 4, !tbaa !79
  %648 = add nsw i32 %647, 1
  %649 = add nsw i32 %644, %648
  %650 = load ptr, ptr %13, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.ImGuiWindow, ptr %650, i32 0, i32 31
  %652 = load i32, ptr %651, align 4, !tbaa !79
  %653 = add nsw i32 %652, 1
  %654 = srem i32 %649, %653
  %655 = load ptr, ptr %13, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.ImGuiWindow, ptr %655, i32 0, i32 33
  store i32 %654, ptr %656, align 4, !tbaa !80
  br label %657

657:                                              ; preds = %641, %638
  %658 = load ptr, ptr %13, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.ImGuiWindow, ptr %658, i32 0, i32 31
  store i32 -1, ptr %659, align 4, !tbaa !79
  %660 = load ptr, ptr %13, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.ImGuiWindow, ptr %660, i32 0, i32 30
  store i32 -1, ptr %661, align 8, !tbaa !76
  %662 = load ptr, ptr %13, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.ImGuiWindow, ptr %662, i32 0, i32 35
  store i32 2147483647, ptr %663, align 4, !tbaa !78
  %664 = load ptr, ptr %13, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.ImGuiWindow, ptr %664, i32 0, i32 34
  store i32 2147483647, ptr %665, align 8, !tbaa !75
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #11
  %666 = load ptr, ptr %13, align 8, !tbaa !5
  %667 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarAabbEv(ptr noundef nonnull align 8 dereferenceable(480) %666)
  %668 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %37, i32 0, i32 0
  %669 = extractvalue { <2 x float>, <2 x float> } %667, 0
  store <2 x float> %669, ptr %668, align 4
  %670 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %37, i32 0, i32 1
  %671 = extractvalue { <2 x float>, <2 x float> } %667, 1
  store <2 x float> %671, ptr %670, align 4
  %672 = load ptr, ptr %13, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.ImGuiWindow, ptr %672, i32 0, i32 9
  %674 = load float, ptr %673, align 4, !tbaa !81
  %675 = load ptr, ptr %13, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.ImGuiWindow, ptr %675, i32 0, i32 8
  store float %674, ptr %676, align 8, !tbaa !82
  %677 = load ptr, ptr %13, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.ImGuiWindow, ptr %677, i32 0, i32 8
  %679 = load float, ptr %678, align 8, !tbaa !82
  %680 = call noundef float @_ZL5ImMaxff(float noundef %679, float noundef 0.000000e+00)
  %681 = load ptr, ptr %13, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.ImGuiWindow, ptr %681, i32 0, i32 8
  store float %680, ptr %682, align 8, !tbaa !82
  %683 = load ptr, ptr %13, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.ImGuiWindow, ptr %683, i32 0, i32 13
  %685 = load i8, ptr %684, align 1, !tbaa !83, !range !32, !noundef !33
  %686 = trunc i8 %685 to i1
  br i1 %686, label %709, label %687

687:                                              ; preds = %657
  %688 = load ptr, ptr %13, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.ImGuiWindow, ptr %688, i32 0, i32 14
  %690 = load i8, ptr %689, align 4, !tbaa !84, !range !32, !noundef !33
  %691 = trunc i8 %690 to i1
  br i1 %691, label %709, label %692

692:                                              ; preds = %687
  %693 = load ptr, ptr %13, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.ImGuiWindow, ptr %693, i32 0, i32 8
  %695 = load float, ptr %694, align 8, !tbaa !82
  %696 = load ptr, ptr %13, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.ImGuiWindow, ptr %696, i32 0, i32 7
  %698 = getelementptr inbounds %struct.ImVec2, ptr %697, i32 0, i32 1
  %699 = load float, ptr %698, align 4, !tbaa !85
  %700 = load ptr, ptr %13, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.ImGuiWindow, ptr %700, i32 0, i32 6
  %702 = getelementptr inbounds %struct.ImVec2, ptr %701, i32 0, i32 1
  %703 = load float, ptr %702, align 4, !tbaa !86
  %704 = fsub float %699, %703
  %705 = call noundef float @_ZL5ImMaxff(float noundef 0.000000e+00, float noundef %704)
  %706 = call noundef float @_ZL5ImMinff(float noundef %695, float noundef %705)
  %707 = load ptr, ptr %13, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.ImGuiWindow, ptr %707, i32 0, i32 8
  store float %706, ptr %708, align 8, !tbaa !82
  br label %709

709:                                              ; preds = %692, %687, %657
  %710 = load ptr, ptr %13, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.ImGuiWindow, ptr %710, i32 0, i32 8
  %712 = load float, ptr %711, align 8, !tbaa !82
  %713 = load ptr, ptr %13, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.ImGuiWindow, ptr %713, i32 0, i32 9
  store float %712, ptr %714, align 4, !tbaa !81
  %715 = load ptr, ptr %13, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.ImGuiWindow, ptr %715, i32 0, i32 2
  %717 = load i32, ptr %716, align 4, !tbaa !35
  %718 = and i32 %717, 1
  %719 = icmp ne i32 %718, 0
  br i1 %719, label %759, label %720

720:                                              ; preds = %709
  %721 = load ptr, ptr %13, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.ImGuiWindow, ptr %721, i32 0, i32 2
  %723 = load i32, ptr %722, align 4, !tbaa !35
  %724 = and i32 %723, 32
  %725 = icmp ne i32 %724, 0
  br i1 %725, label %758, label %726

726:                                              ; preds = %720
  %727 = load ptr, ptr %11, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.ImGuiState, ptr %727, i32 0, i32 14
  %729 = load ptr, ptr %728, align 8, !tbaa !87
  %730 = load ptr, ptr %13, align 8, !tbaa !5
  %731 = icmp eq ptr %729, %730
  br i1 %731, label %732, label %758

732:                                              ; preds = %726
  %733 = call noundef zeroext i1 @_ZL18IsMouseHoveringBoxRK9ImGuiAabb(ptr noundef nonnull align 4 dereferenceable(16) %37)
  br i1 %733, label %734, label %758

734:                                              ; preds = %732
  %735 = load ptr, ptr %11, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.ImGuiState, ptr %735, i32 0, i32 2
  %737 = getelementptr inbounds %struct.ImGuiIO, ptr %736, i32 0, i32 42
  %738 = getelementptr inbounds [5 x i8], ptr %737, i64 0, i64 0
  %739 = load i8, ptr %738, align 4, !tbaa !44, !range !32, !noundef !33
  %740 = trunc i8 %739 to i1
  br i1 %740, label %741, label %758

741:                                              ; preds = %734
  %742 = load ptr, ptr %13, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.ImGuiWindow, ptr %742, i32 0, i32 13
  %744 = load i8, ptr %743, align 1, !tbaa !83, !range !32, !noundef !33
  %745 = trunc i8 %744 to i1
  %746 = xor i1 %745, true
  %747 = load ptr, ptr %13, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.ImGuiWindow, ptr %747, i32 0, i32 13
  %749 = zext i1 %746 to i8
  store i8 %749, ptr %748, align 1, !tbaa !83
  %750 = load ptr, ptr %13, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.ImGuiWindow, ptr %750, i32 0, i32 2
  %752 = load i32, ptr %751, align 4, !tbaa !35
  %753 = and i32 %752, 256
  %754 = icmp ne i32 %753, 0
  br i1 %754, label %756, label %755

755:                                              ; preds = %741
  call void @_ZL17MarkSettingsDirtyv()
  br label %756

756:                                              ; preds = %755, %741
  %757 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef %757)
  br label %758

758:                                              ; preds = %756, %734, %732, %726, %720
  br label %762

759:                                              ; preds = %709
  %760 = load ptr, ptr %13, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.ImGuiWindow, ptr %760, i32 0, i32 13
  store i8 0, ptr %761, align 1, !tbaa !83
  br label %762

762:                                              ; preds = %759, %758
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #11
  %763 = load ptr, ptr %13, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.ImGuiWindow, ptr %763, i32 0, i32 2
  %765 = load i32, ptr %764, align 4, !tbaa !35
  %766 = and i32 %765, 512
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %772

768:                                              ; preds = %762
  %769 = load ptr, ptr %12, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.ImGuiStyle, ptr %769, i32 0, i32 4
  %771 = load float, ptr %770, align 4, !tbaa !88
  br label %776

772:                                              ; preds = %762
  %773 = load ptr, ptr %12, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.ImGuiStyle, ptr %773, i32 0, i32 3
  %775 = load float, ptr %774, align 4, !tbaa !89
  br label %776

776:                                              ; preds = %772, %768
  %777 = phi float [ %771, %768 ], [ %775, %772 ]
  store float %777, ptr %38, align 4, !tbaa !9
  %778 = load ptr, ptr %13, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.ImGuiWindow, ptr %778, i32 0, i32 13
  %780 = load i8, ptr %779, align 1, !tbaa !83, !range !32, !noundef !33
  %781 = trunc i8 %780 to i1
  br i1 %781, label %782, label %819

782:                                              ; preds = %776
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  %783 = call <2 x float> @_ZNK9ImGuiAabb7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %783, ptr %39, align 4
  %784 = load ptr, ptr %13, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.ImGuiWindow, ptr %784, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %785, ptr align 4 %39, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  %786 = load ptr, ptr %13, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.ImGuiWindow, ptr %786, i32 0, i32 28
  %788 = load ptr, ptr %787, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #11
  %789 = call <2 x float> @_ZNK9ImGuiAabb5GetTLEv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %789, ptr %40, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #11
  %790 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %790, ptr %41, align 4
  %791 = load ptr, ptr %13, align 8, !tbaa !5
  %792 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %791, i32 noundef 7, float noundef 1.000000e+00)
  %793 = load float, ptr %38, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %788, ptr noundef nonnull align 4 dereferenceable(8) %40, ptr noundef nonnull align 4 dereferenceable(8) %41, i32 noundef %792, float noundef %793, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  %794 = load ptr, ptr %13, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.ImGuiWindow, ptr %794, i32 0, i32 2
  %796 = load i32, ptr %795, align 4, !tbaa !35
  %797 = and i32 %796, 128
  %798 = icmp ne i32 %797, 0
  br i1 %798, label %799, label %818

799:                                              ; preds = %782
  %800 = load ptr, ptr %13, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.ImGuiWindow, ptr %800, i32 0, i32 28
  %802 = load ptr, ptr %801, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #11
  %803 = call <2 x float> @_ZNK9ImGuiAabb5GetTLEv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %803, ptr %43, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %804 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %43, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %804, ptr %42, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #11
  %805 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %805, ptr %46, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %47, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %806 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %46, ptr noundef nonnull align 4 dereferenceable(8) %47)
  store <2 x float> %806, ptr %45, align 4
  %807 = load ptr, ptr %13, align 8, !tbaa !5
  %808 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %807, i32 noundef 4, float noundef 1.000000e+00)
  %809 = load float, ptr %38, align 4, !tbaa !9
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %802, ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef nonnull align 4 dereferenceable(8) %45, i32 noundef %808, float noundef %809, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #11
  %810 = load ptr, ptr %13, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.ImGuiWindow, ptr %810, i32 0, i32 28
  %812 = load ptr, ptr %811, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %813 = call <2 x float> @_ZNK9ImGuiAabb5GetTLEv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %813, ptr %48, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #11
  %814 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %814, ptr %49, align 4
  %815 = load ptr, ptr %13, align 8, !tbaa !5
  %816 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %815, i32 noundef 3, float noundef 1.000000e+00)
  %817 = load float, ptr %38, align 4, !tbaa !9
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %812, ptr noundef nonnull align 4 dereferenceable(8) %48, ptr noundef nonnull align 4 dereferenceable(8) %49, i32 noundef %816, float noundef %817, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  br label %818

818:                                              ; preds = %799, %782
  br label %1416

819:                                              ; preds = %776
  %820 = load ptr, ptr %13, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.ImGuiWindow, ptr %820, i32 0, i32 6
  %822 = load ptr, ptr %13, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.ImGuiWindow, ptr %822, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %823, ptr align 8 %821, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  store i32 0, ptr %50, align 4, !tbaa !11
  %824 = load ptr, ptr %13, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.ImGuiWindow, ptr %824, i32 0, i32 2
  %826 = load i32, ptr %825, align 4, !tbaa !35
  %827 = and i32 %826, 8192
  %828 = icmp ne i32 %827, 0
  br i1 %828, label %829, label %842

829:                                              ; preds = %819
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #11
  %830 = load ptr, ptr %13, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.ImGuiWindow, ptr %830, i32 0, i32 7
  %832 = load ptr, ptr %12, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.ImGuiStyle, ptr %832, i32 0, i32 1
  %834 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %831, ptr noundef nonnull align 4 dereferenceable(8) %833)
  store <2 x float> %834, ptr %52, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #11
  %835 = load ptr, ptr %12, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.ImGuiStyle, ptr %835, i32 0, i32 7
  %837 = getelementptr inbounds %struct.ImVec2, ptr %836, i32 0, i32 1
  %838 = load float, ptr %837, align 4, !tbaa !90
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef 0.000000e+00, float noundef %838)
  %839 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %52, ptr noundef nonnull align 4 dereferenceable(8) %53)
  store <2 x float> %839, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  %840 = load ptr, ptr %13, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.ImGuiWindow, ptr %840, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %841, ptr align 4 %51, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  br label %999

842:                                              ; preds = %819
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #11
  %843 = load ptr, ptr %13, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.ImGuiWindow, ptr %843, i32 0, i32 7
  %845 = load ptr, ptr %12, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiStyle, ptr %845, i32 0, i32 10
  %847 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %844, ptr noundef nonnull align 4 dereferenceable(8) %846)
  store <2 x float> %847, ptr %55, align 4
  %848 = load ptr, ptr %12, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.ImGuiStyle, ptr %848, i32 0, i32 2
  %850 = load ptr, ptr %12, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.ImGuiStyle, ptr %850, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #11
  %852 = load ptr, ptr %11, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.ImGuiState, ptr %852, i32 0, i32 2
  %854 = getelementptr inbounds %struct.ImGuiIO, ptr %853, i32 0, i32 0
  %855 = load ptr, ptr %12, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.ImGuiStyle, ptr %855, i32 0, i32 10
  %857 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %854, ptr noundef nonnull align 4 dereferenceable(8) %856)
  store <2 x float> %857, ptr %57, align 4
  %858 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %851, ptr noundef nonnull align 4 dereferenceable(8) %57)
  store <2 x float> %858, ptr %56, align 4
  %859 = load <2 x float>, ptr %56, align 4
  %860 = call <2 x float> @_ZL7ImClampRK6ImVec2S1_S_(ptr noundef nonnull align 4 dereferenceable(8) %55, ptr noundef nonnull align 4 dereferenceable(8) %849, <2 x float> %859)
  store <2 x float> %860, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #11
  %861 = load ptr, ptr %13, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.ImGuiWindow, ptr %861, i32 0, i32 2
  %863 = load i32, ptr %862, align 4, !tbaa !35
  %864 = and i32 %863, 64
  %865 = icmp ne i32 %864, 0
  br i1 %865, label %866, label %869

866:                                              ; preds = %842
  %867 = load ptr, ptr %13, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.ImGuiWindow, ptr %867, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %868, ptr align 4 %54, i64 8, i1 false), !tbaa.struct !34
  br label %992

869:                                              ; preds = %842
  %870 = load ptr, ptr %13, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.ImGuiWindow, ptr %870, i32 0, i32 15
  %872 = load i32, ptr %871, align 8, !tbaa !91
  %873 = icmp sgt i32 %872, 0
  br i1 %873, label %874, label %896

874:                                              ; preds = %869
  %875 = load ptr, ptr %13, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.ImGuiWindow, ptr %875, i32 0, i32 16
  %877 = load i8, ptr %876, align 4, !tbaa !92, !range !32, !noundef !33
  %878 = trunc i8 %877 to i1
  br i1 %878, label %879, label %885

879:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #11
  %880 = load ptr, ptr %13, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.ImGuiWindow, ptr %880, i32 0, i32 6
  %882 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %881, ptr noundef nonnull align 4 dereferenceable(8) %54)
  store <2 x float> %882, ptr %58, align 4
  %883 = load ptr, ptr %13, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.ImGuiWindow, ptr %883, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %884, ptr align 4 %58, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  br label %888

885:                                              ; preds = %874
  %886 = load ptr, ptr %13, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.ImGuiWindow, ptr %886, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %887, ptr align 4 %54, i64 8, i1 false), !tbaa.struct !34
  br label %888

888:                                              ; preds = %885, %879
  %889 = load ptr, ptr %13, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.ImGuiWindow, ptr %889, i32 0, i32 2
  %891 = load i32, ptr %890, align 4, !tbaa !35
  %892 = and i32 %891, 256
  %893 = icmp ne i32 %892, 0
  br i1 %893, label %895, label %894

894:                                              ; preds = %888
  call void @_ZL17MarkSettingsDirtyv()
  br label %895

895:                                              ; preds = %894, %888
  br label %991

896:                                              ; preds = %869
  %897 = load ptr, ptr %13, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.ImGuiWindow, ptr %897, i32 0, i32 2
  %899 = load i32, ptr %898, align 4, !tbaa !35
  %900 = and i32 %899, 2
  %901 = icmp ne i32 %900, 0
  br i1 %901, label %990, label %902

902:                                              ; preds = %896
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #11
  %903 = load ptr, ptr %13, align 8, !tbaa !5
  %904 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %903)
  %905 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %62, i32 0, i32 0
  %906 = extractvalue { <2 x float>, <2 x float> } %904, 0
  store <2 x float> %906, ptr %905, align 4
  %907 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %62, i32 0, i32 1
  %908 = extractvalue { <2 x float>, <2 x float> } %904, 1
  store <2 x float> %908, ptr %907, align 4
  %909 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %62)
  store <2 x float> %909, ptr %61, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %63, float noundef 1.800000e+01, float noundef 1.800000e+01)
  %910 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %61, ptr noundef nonnull align 4 dereferenceable(8) %63)
  store <2 x float> %910, ptr %60, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #11
  %911 = load ptr, ptr %13, align 8, !tbaa !5
  %912 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %911)
  %913 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %65, i32 0, i32 0
  %914 = extractvalue { <2 x float>, <2 x float> } %912, 0
  store <2 x float> %914, ptr %913, align 4
  %915 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %65, i32 0, i32 1
  %916 = extractvalue { <2 x float>, <2 x float> } %912, 1
  store <2 x float> %916, ptr %915, align 4
  %917 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %65)
  store <2 x float> %917, ptr %64, align 4
  call void @_ZN9ImGuiAabbC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %59, ptr noundef nonnull align 4 dereferenceable(8) %60, ptr noundef nonnull align 4 dereferenceable(8) %64)
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #11
  %918 = load ptr, ptr %13, align 8, !tbaa !5
  %919 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %918, ptr noundef @.str.33)
  store i32 %919, ptr %66, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #11
  %920 = call noundef zeroext i1 @_ZL15ButtonBehaviourRK9ImGuiAabbRKjPbS4_bbb(ptr noundef nonnull align 4 dereferenceable(16) %59, ptr noundef nonnull align 4 dereferenceable(4) %66, ptr noundef %67, ptr noundef %68, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext false)
  %921 = load ptr, ptr %13, align 8, !tbaa !5
  %922 = load i8, ptr %68, align 1, !tbaa !44, !range !32, !noundef !33
  %923 = trunc i8 %922 to i1
  br i1 %923, label %924, label %925

924:                                              ; preds = %902
  br label %930

925:                                              ; preds = %902
  %926 = load i8, ptr %67, align 1, !tbaa !44, !range !32, !noundef !33
  %927 = trunc i8 %926 to i1
  %928 = zext i1 %927 to i64
  %929 = select i1 %927, i32 28, i32 27
  br label %930

930:                                              ; preds = %925, %924
  %931 = phi i32 [ 29, %924 ], [ %929, %925 ]
  %932 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %921, i32 noundef %931, float noundef 1.000000e+00)
  store i32 %932, ptr %50, align 4, !tbaa !11
  %933 = load ptr, ptr %11, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.ImGuiState, ptr %933, i32 0, i32 14
  %935 = load ptr, ptr %934, align 8, !tbaa !87
  %936 = load ptr, ptr %13, align 8, !tbaa !5
  %937 = icmp eq ptr %935, %936
  br i1 %937, label %938, label %962

938:                                              ; preds = %930
  %939 = load i8, ptr %68, align 1, !tbaa !44, !range !32, !noundef !33
  %940 = trunc i8 %939 to i1
  br i1 %940, label %941, label %962

941:                                              ; preds = %938
  %942 = load ptr, ptr %11, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.ImGuiState, ptr %942, i32 0, i32 2
  %944 = getelementptr inbounds %struct.ImGuiIO, ptr %943, i32 0, i32 42
  %945 = getelementptr inbounds [5 x i8], ptr %944, i64 0, i64 0
  %946 = load i8, ptr %945, align 4, !tbaa !44, !range !32, !noundef !33
  %947 = trunc i8 %946 to i1
  br i1 %947, label %948, label %962

948:                                              ; preds = %941
  %949 = load ptr, ptr %13, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.ImGuiWindow, ptr %949, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %950, ptr align 4 %54, i64 8, i1 false), !tbaa.struct !34
  %951 = load ptr, ptr %13, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.ImGuiWindow, ptr %951, i32 0, i32 6
  %953 = load ptr, ptr %13, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.ImGuiWindow, ptr %953, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %954, ptr align 8 %952, i64 8, i1 false), !tbaa.struct !34
  %955 = load ptr, ptr %13, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.ImGuiWindow, ptr %955, i32 0, i32 2
  %957 = load i32, ptr %956, align 4, !tbaa !35
  %958 = and i32 %957, 256
  %959 = icmp ne i32 %958, 0
  br i1 %959, label %961, label %960

960:                                              ; preds = %948
  call void @_ZL17MarkSettingsDirtyv()
  br label %961

961:                                              ; preds = %960, %948
  br label %989

962:                                              ; preds = %941, %938, %930
  %963 = load i8, ptr %68, align 1, !tbaa !44, !range !32, !noundef !33
  %964 = trunc i8 %963 to i1
  br i1 %964, label %965, label %988

965:                                              ; preds = %962
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #11
  %966 = load ptr, ptr %13, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.ImGuiWindow, ptr %966, i32 0, i32 6
  %968 = load ptr, ptr %11, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImGuiState, ptr %968, i32 0, i32 2
  %970 = getelementptr inbounds %struct.ImGuiIO, ptr %969, i32 0, i32 37
  %971 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %967, ptr noundef nonnull align 4 dereferenceable(8) %970)
  store <2 x float> %971, ptr %70, align 4
  %972 = load ptr, ptr %12, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.ImGuiStyle, ptr %972, i32 0, i32 2
  %974 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %70, ptr noundef nonnull align 4 dereferenceable(8) %973)
  store <2 x float> %974, ptr %69, align 4
  %975 = load ptr, ptr %13, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.ImGuiWindow, ptr %975, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %976, ptr align 4 %69, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  %977 = load ptr, ptr %13, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.ImGuiWindow, ptr %977, i32 0, i32 6
  %979 = load ptr, ptr %13, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.ImGuiWindow, ptr %979, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %980, ptr align 8 %978, i64 8, i1 false), !tbaa.struct !34
  %981 = load ptr, ptr %13, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.ImGuiWindow, ptr %981, i32 0, i32 2
  %983 = load i32, ptr %982, align 4, !tbaa !35
  %984 = and i32 %983, 256
  %985 = icmp ne i32 %984, 0
  br i1 %985, label %987, label %986

986:                                              ; preds = %965
  call void @_ZL17MarkSettingsDirtyv()
  br label %987

987:                                              ; preds = %986, %965
  br label %988

988:                                              ; preds = %987, %962
  br label %989

989:                                              ; preds = %988, %961
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #11
  br label %990

990:                                              ; preds = %989, %896
  br label %991

991:                                              ; preds = %990, %895
  br label %992

992:                                              ; preds = %991, %866
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #11
  %993 = load ptr, ptr %13, align 8, !tbaa !5
  %994 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarAabbEv(ptr noundef nonnull align 8 dereferenceable(480) %993)
  %995 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 0
  %996 = extractvalue { <2 x float>, <2 x float> } %994, 0
  store <2 x float> %996, ptr %995, align 4
  %997 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 1
  %998 = extractvalue { <2 x float>, <2 x float> } %994, 1
  store <2 x float> %998, ptr %997, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 4 %71, i64 16, i1 false), !tbaa.struct !93
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  br label %999

999:                                              ; preds = %992, %829
  %1000 = load ptr, ptr %13, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.ImGuiWindow, ptr %1000, i32 0, i32 7
  %1002 = getelementptr inbounds %struct.ImVec2, ptr %1001, i32 0, i32 1
  %1003 = load float, ptr %1002, align 4, !tbaa !85
  %1004 = load ptr, ptr %13, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.ImGuiWindow, ptr %1004, i32 0, i32 5
  %1006 = getelementptr inbounds %struct.ImVec2, ptr %1005, i32 0, i32 1
  %1007 = load float, ptr %1006, align 4, !tbaa !94
  %1008 = fcmp ogt float %1003, %1007
  br i1 %1008, label %1009, label %1016

1009:                                             ; preds = %999
  %1010 = load ptr, ptr %13, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.ImGuiWindow, ptr %1010, i32 0, i32 2
  %1012 = load i32, ptr %1011, align 4, !tbaa !35
  %1013 = and i32 %1012, 8
  %1014 = icmp ne i32 %1013, 0
  %1015 = xor i1 %1014, true
  br label %1016

1016:                                             ; preds = %1009, %999
  %1017 = phi i1 [ false, %999 ], [ %1015, %1009 ]
  %1018 = load ptr, ptr %13, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.ImGuiWindow, ptr %1018, i32 0, i32 10
  %1020 = zext i1 %1017 to i8
  store i8 %1020, ptr %1019, align 8, !tbaa !95
  %1021 = load float, ptr %9, align 4, !tbaa !9
  %1022 = fcmp ogt float %1021, 0.000000e+00
  br i1 %1022, label %1023, label %1122

1023:                                             ; preds = %1016
  %1024 = load ptr, ptr %13, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.ImGuiWindow, ptr %1024, i32 0, i32 2
  %1026 = load i32, ptr %1025, align 4, !tbaa !35
  %1027 = and i32 %1026, 4096
  %1028 = icmp ne i32 %1027, 0
  br i1 %1028, label %1029, label %1044

1029:                                             ; preds = %1023
  %1030 = load ptr, ptr %13, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.ImGuiWindow, ptr %1030, i32 0, i32 28
  %1032 = load ptr, ptr %1031, align 8, !tbaa !56
  %1033 = load ptr, ptr %13, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.ImGuiWindow, ptr %1033, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #11
  %1035 = load ptr, ptr %13, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.ImGuiWindow, ptr %1035, i32 0, i32 4
  %1037 = load ptr, ptr %13, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.ImGuiWindow, ptr %1037, i32 0, i32 5
  %1039 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1036, ptr noundef nonnull align 4 dereferenceable(8) %1038)
  store <2 x float> %1039, ptr %72, align 4
  %1040 = load ptr, ptr %13, align 8, !tbaa !5
  %1041 = load float, ptr %9, align 4, !tbaa !9
  %1042 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1040, i32 noundef 12, float noundef %1041)
  %1043 = load float, ptr %38, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1032, ptr noundef nonnull align 4 dereferenceable(8) %1034, ptr noundef nonnull align 4 dereferenceable(8) %72, i32 noundef %1042, float noundef %1043, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #11
  br label %1121

1044:                                             ; preds = %1023
  %1045 = load ptr, ptr %13, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.ImGuiWindow, ptr %1045, i32 0, i32 2
  %1047 = load i32, ptr %1046, align 4, !tbaa !35
  %1048 = and i32 %1047, 8192
  %1049 = icmp ne i32 %1048, 0
  br i1 %1049, label %1050, label %1065

1050:                                             ; preds = %1044
  %1051 = load ptr, ptr %13, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.ImGuiWindow, ptr %1051, i32 0, i32 28
  %1053 = load ptr, ptr %1052, align 8, !tbaa !56
  %1054 = load ptr, ptr %13, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.ImGuiWindow, ptr %1054, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #11
  %1056 = load ptr, ptr %13, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.ImGuiWindow, ptr %1056, i32 0, i32 4
  %1058 = load ptr, ptr %13, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.ImGuiWindow, ptr %1058, i32 0, i32 5
  %1060 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1057, ptr noundef nonnull align 4 dereferenceable(8) %1059)
  store <2 x float> %1060, ptr %73, align 4
  %1061 = load ptr, ptr %13, align 8, !tbaa !5
  %1062 = load float, ptr %9, align 4, !tbaa !9
  %1063 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1061, i32 noundef 38, float noundef %1062)
  %1064 = load float, ptr %38, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1053, ptr noundef nonnull align 4 dereferenceable(8) %1055, ptr noundef nonnull align 4 dereferenceable(8) %73, i32 noundef %1063, float noundef %1064, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #11
  br label %1120

1065:                                             ; preds = %1044
  %1066 = load ptr, ptr %13, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ImGuiWindow, ptr %1066, i32 0, i32 2
  %1068 = load i32, ptr %1067, align 4, !tbaa !35
  %1069 = and i32 %1068, 512
  %1070 = icmp ne i32 %1069, 0
  br i1 %1070, label %1071, label %1104

1071:                                             ; preds = %1065
  %1072 = load ptr, ptr %13, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.ImGuiWindow, ptr %1072, i32 0, i32 28
  %1074 = load ptr, ptr %1073, align 8, !tbaa !56
  %1075 = load ptr, ptr %13, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.ImGuiWindow, ptr %1075, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #11
  %1077 = load ptr, ptr %13, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.ImGuiWindow, ptr %1077, i32 0, i32 4
  %1079 = load ptr, ptr %13, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.ImGuiWindow, ptr %1079, i32 0, i32 5
  %1081 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1078, ptr noundef nonnull align 4 dereferenceable(8) %1080)
  store <2 x float> %1081, ptr %75, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #11
  %1082 = load ptr, ptr %13, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.ImGuiWindow, ptr %1082, i32 0, i32 10
  %1084 = load i8, ptr %1083, align 8, !tbaa !95, !range !32, !noundef !33
  %1085 = trunc i8 %1084 to i1
  br i1 %1085, label %1086, label %1090

1086:                                             ; preds = %1071
  %1087 = load ptr, ptr %12, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.ImGuiStyle, ptr %1087, i32 0, i32 14
  %1089 = load float, ptr %1088, align 4, !tbaa !96
  br label %1091

1090:                                             ; preds = %1071
  br label %1091

1091:                                             ; preds = %1090, %1086
  %1092 = phi float [ %1089, %1086 ], [ 0.000000e+00, %1090 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %76, float noundef %1092, float noundef 0.000000e+00)
  %1093 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %75, ptr noundef nonnull align 4 dereferenceable(8) %76)
  store <2 x float> %1093, ptr %74, align 4
  %1094 = load ptr, ptr %13, align 8, !tbaa !5
  %1095 = load float, ptr %9, align 4, !tbaa !9
  %1096 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1094, i32 noundef 2, float noundef %1095)
  %1097 = load float, ptr %38, align 4, !tbaa !9
  %1098 = load ptr, ptr %13, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.ImGuiWindow, ptr %1098, i32 0, i32 10
  %1100 = load i8, ptr %1099, align 8, !tbaa !95, !range !32, !noundef !33
  %1101 = trunc i8 %1100 to i1
  %1102 = zext i1 %1101 to i64
  %1103 = select i1 %1101, i32 9, i32 15
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1074, ptr noundef nonnull align 4 dereferenceable(8) %1076, ptr noundef nonnull align 4 dereferenceable(8) %74, i32 noundef %1096, float noundef %1097, i32 noundef %1103)
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #11
  br label %1119

1104:                                             ; preds = %1065
  %1105 = load ptr, ptr %13, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.ImGuiWindow, ptr %1105, i32 0, i32 28
  %1107 = load ptr, ptr %1106, align 8, !tbaa !56
  %1108 = load ptr, ptr %13, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.ImGuiWindow, ptr %1108, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #11
  %1110 = load ptr, ptr %13, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.ImGuiWindow, ptr %1110, i32 0, i32 4
  %1112 = load ptr, ptr %13, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.ImGuiWindow, ptr %1112, i32 0, i32 5
  %1114 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1111, ptr noundef nonnull align 4 dereferenceable(8) %1113)
  store <2 x float> %1114, ptr %77, align 4
  %1115 = load ptr, ptr %13, align 8, !tbaa !5
  %1116 = load float, ptr %9, align 4, !tbaa !9
  %1117 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1115, i32 noundef 1, float noundef %1116)
  %1118 = load float, ptr %38, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1107, ptr noundef nonnull align 4 dereferenceable(8) %1109, ptr noundef nonnull align 4 dereferenceable(8) %77, i32 noundef %1117, float noundef %1118, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  br label %1119

1119:                                             ; preds = %1104, %1091
  br label %1120

1120:                                             ; preds = %1119, %1050
  br label %1121

1121:                                             ; preds = %1120, %1029
  br label %1122

1122:                                             ; preds = %1121, %1016
  %1123 = load ptr, ptr %13, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.ImGuiWindow, ptr %1123, i32 0, i32 2
  %1125 = load i32, ptr %1124, align 4, !tbaa !35
  %1126 = and i32 %1125, 1
  %1127 = icmp ne i32 %1126, 0
  br i1 %1127, label %1137, label %1128

1128:                                             ; preds = %1122
  %1129 = load ptr, ptr %13, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.ImGuiWindow, ptr %1129, i32 0, i32 28
  %1131 = load ptr, ptr %1130, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #11
  %1132 = call <2 x float> @_ZNK9ImGuiAabb5GetTLEv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %1132, ptr %78, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #11
  %1133 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %1133, ptr %79, align 4
  %1134 = load ptr, ptr %13, align 8, !tbaa !5
  %1135 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1134, i32 noundef 6, float noundef 1.000000e+00)
  %1136 = load float, ptr %38, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1131, ptr noundef nonnull align 4 dereferenceable(8) %78, ptr noundef nonnull align 4 dereferenceable(8) %79, i32 noundef %1135, float noundef %1136, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #11
  br label %1137

1137:                                             ; preds = %1128, %1122
  %1138 = load ptr, ptr %13, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.ImGuiWindow, ptr %1138, i32 0, i32 2
  %1140 = load i32, ptr %1139, align 4, !tbaa !35
  %1141 = and i32 %1140, 128
  %1142 = icmp ne i32 %1141, 0
  br i1 %1142, label %1143, label %1186

1143:                                             ; preds = %1137
  %1144 = load ptr, ptr %13, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.ImGuiWindow, ptr %1144, i32 0, i32 28
  %1146 = load ptr, ptr %1145, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #11
  %1147 = load ptr, ptr %13, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.ImGuiWindow, ptr %1147, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %81, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %1149 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1148, ptr noundef nonnull align 4 dereferenceable(8) %81)
  store <2 x float> %1149, ptr %80, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #11
  %1150 = load ptr, ptr %13, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.ImGuiWindow, ptr %1150, i32 0, i32 4
  %1152 = load ptr, ptr %13, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.ImGuiWindow, ptr %1152, i32 0, i32 5
  %1154 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1151, ptr noundef nonnull align 4 dereferenceable(8) %1153)
  store <2 x float> %1154, ptr %83, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %84, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %1155 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %83, ptr noundef nonnull align 4 dereferenceable(8) %84)
  store <2 x float> %1155, ptr %82, align 4
  %1156 = load ptr, ptr %13, align 8, !tbaa !5
  %1157 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1156, i32 noundef 4, float noundef 1.000000e+00)
  %1158 = load float, ptr %38, align 4, !tbaa !9
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1146, ptr noundef nonnull align 4 dereferenceable(8) %80, ptr noundef nonnull align 4 dereferenceable(8) %82, i32 noundef %1157, float noundef %1158, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #11
  %1159 = load ptr, ptr %13, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.ImGuiWindow, ptr %1159, i32 0, i32 28
  %1161 = load ptr, ptr %1160, align 8, !tbaa !56
  %1162 = load ptr, ptr %13, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiWindow, ptr %1162, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #11
  %1164 = load ptr, ptr %13, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.ImGuiWindow, ptr %1164, i32 0, i32 4
  %1166 = load ptr, ptr %13, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.ImGuiWindow, ptr %1166, i32 0, i32 5
  %1168 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1165, ptr noundef nonnull align 4 dereferenceable(8) %1167)
  store <2 x float> %1168, ptr %85, align 4
  %1169 = load ptr, ptr %13, align 8, !tbaa !5
  %1170 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1169, i32 noundef 3, float noundef 1.000000e+00)
  %1171 = load float, ptr %38, align 4, !tbaa !9
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1161, ptr noundef nonnull align 4 dereferenceable(8) %1163, ptr noundef nonnull align 4 dereferenceable(8) %85, i32 noundef %1170, float noundef %1171, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #11
  %1172 = load ptr, ptr %13, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.ImGuiWindow, ptr %1172, i32 0, i32 2
  %1174 = load i32, ptr %1173, align 4, !tbaa !35
  %1175 = and i32 %1174, 1
  %1176 = icmp ne i32 %1175, 0
  br i1 %1176, label %1185, label %1177

1177:                                             ; preds = %1143
  %1178 = load ptr, ptr %13, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.ImGuiWindow, ptr %1178, i32 0, i32 28
  %1180 = load ptr, ptr %1179, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #11
  %1181 = call <2 x float> @_ZNK9ImGuiAabb5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %1181, ptr %86, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #11
  %1182 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  store <2 x float> %1182, ptr %87, align 4
  %1183 = load ptr, ptr %13, align 8, !tbaa !5
  %1184 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1183, i32 noundef 3, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_j(ptr noundef nonnull align 8 dereferenceable(104) %1180, ptr noundef nonnull align 4 dereferenceable(8) %86, ptr noundef nonnull align 4 dereferenceable(8) %87, i32 noundef %1184)
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #11
  br label %1185

1185:                                             ; preds = %1177, %1143
  br label %1186

1186:                                             ; preds = %1185, %1137
  %1187 = load ptr, ptr %13, align 8, !tbaa !5
  %1188 = getelementptr inbounds %struct.ImGuiWindow, ptr %1187, i32 0, i32 10
  %1189 = load i8, ptr %1188, align 8, !tbaa !95, !range !32, !noundef !33
  %1190 = trunc i8 %1189 to i1
  br i1 %1190, label %1191, label %1351

1191:                                             ; preds = %1186
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %89) #11
  %1192 = load ptr, ptr %13, align 8, !tbaa !5
  %1193 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %1192)
  %1194 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %89, i32 0, i32 0
  %1195 = extractvalue { <2 x float>, <2 x float> } %1193, 0
  store <2 x float> %1195, ptr %1194, align 4
  %1196 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %89, i32 0, i32 1
  %1197 = extractvalue { <2 x float>, <2 x float> } %1193, 1
  store <2 x float> %1197, ptr %1196, align 4
  %1198 = getelementptr inbounds %struct.ImGuiAabb, ptr %89, i32 0, i32 1
  %1199 = getelementptr inbounds %struct.ImVec2, ptr %1198, i32 0, i32 0
  %1200 = load float, ptr %1199, align 4, !tbaa !97
  %1201 = load ptr, ptr %12, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.ImGuiStyle, ptr %1201, i32 0, i32 14
  %1203 = load float, ptr %1202, align 4, !tbaa !96
  %1204 = fsub float %1200, %1203
  %1205 = getelementptr inbounds %struct.ImGuiAabb, ptr %37, i32 0, i32 1
  %1206 = getelementptr inbounds %struct.ImVec2, ptr %1205, i32 0, i32 1
  %1207 = load float, ptr %1206, align 4, !tbaa !98
  %1208 = fadd float %1207, 1.000000e+00
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #11
  %1209 = load ptr, ptr %13, align 8, !tbaa !5
  %1210 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %1209)
  %1211 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %90, i32 0, i32 0
  %1212 = extractvalue { <2 x float>, <2 x float> } %1210, 0
  store <2 x float> %1212, ptr %1211, align 4
  %1213 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %90, i32 0, i32 1
  %1214 = extractvalue { <2 x float>, <2 x float> } %1210, 1
  store <2 x float> %1214, ptr %1213, align 4
  %1215 = getelementptr inbounds %struct.ImGuiAabb, ptr %90, i32 0, i32 1
  %1216 = getelementptr inbounds %struct.ImVec2, ptr %1215, i32 0, i32 0
  %1217 = load float, ptr %1216, align 4, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #11
  %1218 = load ptr, ptr %13, align 8, !tbaa !5
  %1219 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %1218)
  %1220 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %91, i32 0, i32 0
  %1221 = extractvalue { <2 x float>, <2 x float> } %1219, 0
  store <2 x float> %1221, ptr %1220, align 4
  %1222 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %91, i32 0, i32 1
  %1223 = extractvalue { <2 x float>, <2 x float> } %1219, 1
  store <2 x float> %1223, ptr %1222, align 4
  %1224 = getelementptr inbounds %struct.ImGuiAabb, ptr %91, i32 0, i32 1
  %1225 = getelementptr inbounds %struct.ImVec2, ptr %1224, i32 0, i32 1
  %1226 = load float, ptr %1225, align 4, !tbaa !98
  %1227 = fsub float %1226, 1.000000e+00
  call void @_ZN9ImGuiAabbC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %88, float noundef %1204, float noundef %1208, float noundef %1217, float noundef %1227)
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #11
  %1228 = load ptr, ptr %13, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.ImGuiWindow, ptr %1228, i32 0, i32 28
  %1230 = load ptr, ptr %1229, align 8, !tbaa !56
  %1231 = getelementptr inbounds %struct.ImGuiAabb, ptr %88, i32 0, i32 0
  %1232 = getelementptr inbounds %struct.ImGuiAabb, ptr %88, i32 0, i32 1
  %1233 = load ptr, ptr %13, align 8, !tbaa !5
  %1234 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1233, i32 noundef 8, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1230, ptr noundef nonnull align 4 dereferenceable(8) %1231, ptr noundef nonnull align 4 dereferenceable(8) %1232, i32 noundef %1234, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %92, float noundef -3.000000e+00, float noundef -3.000000e+00)
  call void @_ZN9ImGuiAabb6ExpandERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(16) %88, ptr noundef nonnull align 4 dereferenceable(8) %92)
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #11
  %1235 = load ptr, ptr %13, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.ImGuiWindow, ptr %1235, i32 0, i32 5
  %1237 = getelementptr inbounds %struct.ImVec2, ptr %1236, i32 0, i32 1
  %1238 = load float, ptr %1237, align 4, !tbaa !94
  %1239 = load ptr, ptr %13, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.ImGuiWindow, ptr %1239, i32 0, i32 7
  %1241 = getelementptr inbounds %struct.ImVec2, ptr %1240, i32 0, i32 1
  %1242 = load float, ptr %1241, align 4, !tbaa !85
  %1243 = load ptr, ptr %13, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.ImGuiWindow, ptr %1243, i32 0, i32 5
  %1245 = getelementptr inbounds %struct.ImVec2, ptr %1244, i32 0, i32 1
  %1246 = load float, ptr %1245, align 4, !tbaa !94
  %1247 = call noundef float @_ZL5ImMaxff(float noundef %1242, float noundef %1246)
  %1248 = fdiv float %1238, %1247
  %1249 = call noundef float @_ZL10ImSaturatef(float noundef %1248)
  store float %1249, ptr %93, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #11
  %1250 = call noundef float @_ZNK9ImGuiAabb9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %88)
  %1251 = load float, ptr %93, align 4, !tbaa !9
  %1252 = fmul float %1250, %1251
  store float %1252, ptr %94, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #11
  store i8 0, ptr %95, align 1, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #11
  store i8 0, ptr %96, align 1, !tbaa !44
  %1253 = load float, ptr %93, align 4, !tbaa !9
  %1254 = fcmp olt float %1253, 1.000000e+00
  br i1 %1254, label %1255, label %1300

1255:                                             ; preds = %1191
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #11
  %1256 = load ptr, ptr %13, align 8, !tbaa !5
  %1257 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %1256, ptr noundef @.str.34)
  store i32 %1257, ptr %97, align 4, !tbaa !11
  %1258 = call noundef zeroext i1 @_ZL15ButtonBehaviourRK9ImGuiAabbRKjPbS4_bbb(ptr noundef nonnull align 4 dereferenceable(16) %88, ptr noundef nonnull align 4 dereferenceable(4) %97, ptr noundef %96, ptr noundef %95, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext false)
  %1259 = load i8, ptr %95, align 1, !tbaa !44, !range !32, !noundef !33
  %1260 = trunc i8 %1259 to i1
  br i1 %1260, label %1261, label %1299

1261:                                             ; preds = %1255
  %1262 = load i32, ptr %97, align 4, !tbaa !11
  %1263 = load ptr, ptr %11, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.ImGuiState, ptr %1263, i32 0, i32 16
  store i32 %1262, ptr %1264, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #11
  %1265 = load ptr, ptr %11, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.ImGuiState, ptr %1265, i32 0, i32 2
  %1267 = getelementptr inbounds %struct.ImGuiIO, ptr %1266, i32 0, i32 23
  %1268 = getelementptr inbounds %struct.ImVec2, ptr %1267, i32 0, i32 1
  %1269 = load float, ptr %1268, align 4, !tbaa !100
  %1270 = getelementptr inbounds %struct.ImGuiAabb, ptr %88, i32 0, i32 0
  %1271 = getelementptr inbounds %struct.ImVec2, ptr %1270, i32 0, i32 1
  %1272 = load float, ptr %1271, align 4, !tbaa !101
  %1273 = load float, ptr %94, align 4, !tbaa !9
  %1274 = call float @llvm.fmuladd.f32(float %1273, float 5.000000e-01, float %1272)
  %1275 = fsub float %1269, %1274
  %1276 = call noundef float @_ZNK9ImGuiAabb9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %88)
  %1277 = load float, ptr %94, align 4, !tbaa !9
  %1278 = fsub float %1276, %1277
  %1279 = fdiv float %1275, %1278
  %1280 = call noundef float @_ZL10ImSaturatef(float noundef %1279)
  %1281 = load float, ptr %93, align 4, !tbaa !9
  %1282 = fsub float 1.000000e+00, %1281
  %1283 = fmul float %1280, %1282
  store float %1283, ptr %98, align 4, !tbaa !9
  %1284 = load float, ptr %98, align 4, !tbaa !9
  %1285 = load ptr, ptr %13, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.ImGuiWindow, ptr %1285, i32 0, i32 7
  %1287 = getelementptr inbounds %struct.ImVec2, ptr %1286, i32 0, i32 1
  %1288 = load float, ptr %1287, align 4, !tbaa !85
  %1289 = fmul float %1284, %1288
  %1290 = fptosi float %1289 to i32
  %1291 = sitofp i32 %1290 to float
  %1292 = load ptr, ptr %13, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.ImGuiWindow, ptr %1292, i32 0, i32 8
  store float %1291, ptr %1293, align 8, !tbaa !82
  %1294 = load ptr, ptr %13, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.ImGuiWindow, ptr %1294, i32 0, i32 8
  %1296 = load float, ptr %1295, align 8, !tbaa !82
  %1297 = load ptr, ptr %13, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.ImGuiWindow, ptr %1297, i32 0, i32 9
  store float %1296, ptr %1298, align 4, !tbaa !81
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #11
  br label %1299

1299:                                             ; preds = %1261, %1255
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #11
  br label %1300

1300:                                             ; preds = %1299, %1191
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #11
  %1301 = load ptr, ptr %13, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.ImGuiWindow, ptr %1301, i32 0, i32 8
  %1303 = load float, ptr %1302, align 8, !tbaa !82
  %1304 = load ptr, ptr %13, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.ImGuiWindow, ptr %1304, i32 0, i32 7
  %1306 = getelementptr inbounds %struct.ImVec2, ptr %1305, i32 0, i32 1
  %1307 = load float, ptr %1306, align 4, !tbaa !85
  %1308 = call noundef float @_ZL5ImMaxff(float noundef 0.000000e+00, float noundef %1307)
  %1309 = fdiv float %1303, %1308
  %1310 = call noundef float @_ZL10ImSaturatef(float noundef %1309)
  store float %1310, ptr %99, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #11
  %1311 = load ptr, ptr %13, align 8, !tbaa !5
  %1312 = load i8, ptr %95, align 1, !tbaa !44, !range !32, !noundef !33
  %1313 = trunc i8 %1312 to i1
  br i1 %1313, label %1314, label %1315

1314:                                             ; preds = %1300
  br label %1320

1315:                                             ; preds = %1300
  %1316 = load i8, ptr %96, align 1, !tbaa !44, !range !32, !noundef !33
  %1317 = trunc i8 %1316 to i1
  %1318 = zext i1 %1317 to i64
  %1319 = select i1 %1317, i32 10, i32 9
  br label %1320

1320:                                             ; preds = %1315, %1314
  %1321 = phi i32 [ 11, %1314 ], [ %1319, %1315 ]
  %1322 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1311, i32 noundef %1321, float noundef 1.000000e+00)
  store i32 %1322, ptr %100, align 4, !tbaa !11
  %1323 = load ptr, ptr %13, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiWindow, ptr %1323, i32 0, i32 28
  %1325 = load ptr, ptr %1324, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #11
  %1326 = getelementptr inbounds %struct.ImGuiAabb, ptr %88, i32 0, i32 0
  %1327 = getelementptr inbounds %struct.ImVec2, ptr %1326, i32 0, i32 0
  %1328 = load float, ptr %1327, align 4, !tbaa !102
  %1329 = getelementptr inbounds %struct.ImGuiAabb, ptr %88, i32 0, i32 0
  %1330 = getelementptr inbounds %struct.ImVec2, ptr %1329, i32 0, i32 1
  %1331 = load float, ptr %1330, align 4, !tbaa !101
  %1332 = getelementptr inbounds %struct.ImGuiAabb, ptr %88, i32 0, i32 1
  %1333 = getelementptr inbounds %struct.ImVec2, ptr %1332, i32 0, i32 1
  %1334 = load float, ptr %1333, align 4, !tbaa !98
  %1335 = load float, ptr %99, align 4, !tbaa !9
  %1336 = call noundef float @_ZL6ImLerpfff(float noundef %1331, float noundef %1334, float noundef %1335)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %101, float noundef %1328, float noundef %1336)
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #11
  %1337 = getelementptr inbounds %struct.ImGuiAabb, ptr %88, i32 0, i32 1
  %1338 = getelementptr inbounds %struct.ImVec2, ptr %1337, i32 0, i32 0
  %1339 = load float, ptr %1338, align 4, !tbaa !97
  %1340 = getelementptr inbounds %struct.ImGuiAabb, ptr %88, i32 0, i32 0
  %1341 = getelementptr inbounds %struct.ImVec2, ptr %1340, i32 0, i32 1
  %1342 = load float, ptr %1341, align 4, !tbaa !101
  %1343 = getelementptr inbounds %struct.ImGuiAabb, ptr %88, i32 0, i32 1
  %1344 = getelementptr inbounds %struct.ImVec2, ptr %1343, i32 0, i32 1
  %1345 = load float, ptr %1344, align 4, !tbaa !98
  %1346 = load float, ptr %99, align 4, !tbaa !9
  %1347 = load float, ptr %93, align 4, !tbaa !9
  %1348 = fadd float %1346, %1347
  %1349 = call noundef float @_ZL6ImLerpfff(float noundef %1342, float noundef %1345, float noundef %1348)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %102, float noundef %1339, float noundef %1349)
  %1350 = load i32, ptr %100, align 4, !tbaa !11
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1325, ptr noundef nonnull align 4 dereferenceable(8) %101, ptr noundef nonnull align 4 dereferenceable(8) %102, i32 noundef %1350, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #11
  br label %1351

1351:                                             ; preds = %1320, %1186
  %1352 = load ptr, ptr %13, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.ImGuiWindow, ptr %1352, i32 0, i32 2
  %1354 = load i32, ptr %1353, align 4, !tbaa !35
  %1355 = and i32 %1354, 2
  %1356 = icmp ne i32 %1355, 0
  br i1 %1356, label %1415, label %1357

1357:                                             ; preds = %1351
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #11
  %1358 = load float, ptr %38, align 4, !tbaa !9
  store float %1358, ptr %103, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %105) #11
  %1359 = load ptr, ptr %13, align 8, !tbaa !5
  %1360 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %1359)
  %1361 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %105, i32 0, i32 0
  %1362 = extractvalue { <2 x float>, <2 x float> } %1360, 0
  store <2 x float> %1362, ptr %1361, align 4
  %1363 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %105, i32 0, i32 1
  %1364 = extractvalue { <2 x float>, <2 x float> } %1360, 1
  store <2 x float> %1364, ptr %1363, align 4
  %1365 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %105)
  store <2 x float> %1365, ptr %104, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #11
  %1366 = load float, ptr %103, align 4, !tbaa !9
  %1367 = fcmp oeq float %1366, 0.000000e+00
  br i1 %1367, label %1368, label %1375

1368:                                             ; preds = %1357
  %1369 = load ptr, ptr %13, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.ImGuiWindow, ptr %1369, i32 0, i32 28
  %1371 = load ptr, ptr %1370, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %107, float noundef 0.000000e+00, float noundef 1.400000e+01)
  %1372 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %107)
  store <2 x float> %1372, ptr %106, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %109, float noundef 1.400000e+01, float noundef 0.000000e+00)
  %1373 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %109)
  store <2 x float> %1373, ptr %108, align 4
  %1374 = load i32, ptr %50, align 4, !tbaa !11
  call void @_ZN10ImDrawList17AddTriangleFilledERK6ImVec2S2_S2_j(ptr noundef nonnull align 8 dereferenceable(104) %1371, ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %106, ptr noundef nonnull align 4 dereferenceable(8) %108, i32 noundef %1374)
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #11
  br label %1414

1375:                                             ; preds = %1357
  %1376 = load ptr, ptr %13, align 8, !tbaa !5
  %1377 = getelementptr inbounds %struct.ImGuiWindow, ptr %1376, i32 0, i32 28
  %1378 = load ptr, ptr %1377, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #11
  %1379 = load float, ptr %103, align 4, !tbaa !9
  %1380 = load float, ptr %103, align 4, !tbaa !9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %111, float noundef %1379, float noundef %1380)
  %1381 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %111)
  store <2 x float> %1381, ptr %110, align 4
  %1382 = load float, ptr %103, align 4, !tbaa !9
  %1383 = load i32, ptr %50, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %112, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @_ZN10ImDrawList6AddArcERK6ImVec2fjiibS2_(ptr noundef nonnull align 8 dereferenceable(104) %1378, ptr noundef nonnull align 4 dereferenceable(8) %110, float noundef %1382, i32 noundef %1383, i32 noundef 6, i32 noundef 9, i1 noundef zeroext true, ptr noundef nonnull align 4 dereferenceable(8) %112)
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #11
  %1384 = load ptr, ptr %13, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.ImGuiWindow, ptr %1384, i32 0, i32 28
  %1386 = load ptr, ptr %1385, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #11
  %1387 = load float, ptr %103, align 4, !tbaa !9
  %1388 = fmul float -2.000000e+00, %1387
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %114, float noundef 0.000000e+00, float noundef %1388)
  %1389 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %114)
  store <2 x float> %1389, ptr %113, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #11
  %1390 = load float, ptr %103, align 4, !tbaa !9
  %1391 = fneg float %1390
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %116, float noundef 0.000000e+00, float noundef %1391)
  %1392 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %116)
  store <2 x float> %1392, ptr %115, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #11
  %1393 = load float, ptr %103, align 4, !tbaa !9
  %1394 = fneg float %1393
  %1395 = load float, ptr %103, align 4, !tbaa !9
  %1396 = fneg float %1395
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %118, float noundef %1394, float noundef %1396)
  %1397 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %118)
  store <2 x float> %1397, ptr %117, align 4
  %1398 = load i32, ptr %50, align 4, !tbaa !11
  call void @_ZN10ImDrawList17AddTriangleFilledERK6ImVec2S2_S2_j(ptr noundef nonnull align 8 dereferenceable(104) %1386, ptr noundef nonnull align 4 dereferenceable(8) %113, ptr noundef nonnull align 4 dereferenceable(8) %115, ptr noundef nonnull align 4 dereferenceable(8) %117, i32 noundef %1398)
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #11
  %1399 = load ptr, ptr %13, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.ImGuiWindow, ptr %1399, i32 0, i32 28
  %1401 = load ptr, ptr %1400, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #11
  %1402 = load float, ptr %103, align 4, !tbaa !9
  %1403 = fneg float %1402
  %1404 = load float, ptr %103, align 4, !tbaa !9
  %1405 = fneg float %1404
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %120, float noundef %1403, float noundef %1405)
  %1406 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %120)
  store <2 x float> %1406, ptr %119, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #11
  %1407 = load float, ptr %103, align 4, !tbaa !9
  %1408 = fneg float %1407
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %122, float noundef %1408, float noundef 0.000000e+00)
  %1409 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %122)
  store <2 x float> %1409, ptr %121, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #11
  %1410 = load float, ptr %103, align 4, !tbaa !9
  %1411 = fmul float -2.000000e+00, %1410
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %124, float noundef %1411, float noundef 0.000000e+00)
  %1412 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %124)
  store <2 x float> %1412, ptr %123, align 4
  %1413 = load i32, ptr %50, align 4, !tbaa !11
  call void @_ZN10ImDrawList17AddTriangleFilledERK6ImVec2S2_S2_j(ptr noundef nonnull align 8 dereferenceable(104) %1401, ptr noundef nonnull align 4 dereferenceable(8) %119, ptr noundef nonnull align 4 dereferenceable(8) %121, ptr noundef nonnull align 4 dereferenceable(8) %123, i32 noundef %1413)
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #11
  br label %1414

1414:                                             ; preds = %1375, %1368
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #11
  br label %1415

1415:                                             ; preds = %1414, %1351
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %1416

1416:                                             ; preds = %1415, %818
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #11
  %1417 = load ptr, ptr %13, align 8, !tbaa !5
  %1418 = call <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480) %1417)
  store <2 x float> %1418, ptr %125, align 4
  %1419 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %1420 = load float, ptr %1419, align 4, !tbaa !103
  %1421 = load ptr, ptr %13, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.ImGuiWindow, ptr %1421, i32 0, i32 20
  %1423 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1422, i32 0, i32 16
  store float %1420, ptr %1423, align 8, !tbaa !104
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #11
  %1424 = load ptr, ptr %13, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.ImGuiWindow, ptr %1424, i32 0, i32 20
  %1426 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1425, i32 0, i32 17
  store float 0.000000e+00, ptr %1426, align 4, !tbaa !105
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #11
  %1427 = load ptr, ptr %13, align 8, !tbaa !5
  %1428 = getelementptr inbounds %struct.ImGuiWindow, ptr %1427, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #11
  %1429 = load ptr, ptr %13, align 8, !tbaa !5
  %1430 = getelementptr inbounds %struct.ImGuiWindow, ptr %1429, i32 0, i32 20
  %1431 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1430, i32 0, i32 16
  %1432 = load float, ptr %1431, align 8, !tbaa !104
  %1433 = load ptr, ptr %13, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.ImGuiWindow, ptr %1433, i32 0, i32 20
  %1435 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1434, i32 0, i32 17
  %1436 = load float, ptr %1435, align 4, !tbaa !105
  %1437 = fadd float %1432, %1436
  %1438 = load ptr, ptr %13, align 8, !tbaa !5
  %1439 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(480) %1438)
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #11
  %1440 = load ptr, ptr %13, align 8, !tbaa !5
  %1441 = call <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480) %1440)
  store <2 x float> %1441, ptr %129, align 4
  %1442 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 1
  %1443 = load float, ptr %1442, align 4, !tbaa !106
  %1444 = fadd float %1439, %1443
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %128, float noundef %1437, float noundef %1444)
  %1445 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1428, ptr noundef nonnull align 4 dereferenceable(8) %128)
  store <2 x float> %1445, ptr %127, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #11
  %1446 = load ptr, ptr %13, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.ImGuiWindow, ptr %1446, i32 0, i32 8
  %1448 = load float, ptr %1447, align 8, !tbaa !82
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %130, float noundef 0.000000e+00, float noundef %1448)
  %1449 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %127, ptr noundef nonnull align 4 dereferenceable(8) %130)
  store <2 x float> %1449, ptr %126, align 4
  %1450 = load ptr, ptr %13, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct.ImGuiWindow, ptr %1450, i32 0, i32 20
  %1452 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1451, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1452, ptr align 4 %126, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #11
  %1453 = load ptr, ptr %13, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.ImGuiWindow, ptr %1453, i32 0, i32 20
  %1455 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1454, i32 0, i32 2
  %1456 = load ptr, ptr %13, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.ImGuiWindow, ptr %1456, i32 0, i32 20
  %1458 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1457, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1458, ptr align 8 %1455, i64 8, i1 false), !tbaa.struct !34
  %1459 = load ptr, ptr %13, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.ImGuiWindow, ptr %1459, i32 0, i32 20
  %1461 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1460, i32 0, i32 0
  %1462 = load ptr, ptr %13, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.ImGuiWindow, ptr %1462, i32 0, i32 20
  %1464 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1463, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1464, ptr align 8 %1461, i64 8, i1 false), !tbaa.struct !34
  %1465 = load ptr, ptr %13, align 8, !tbaa !5
  %1466 = getelementptr inbounds %struct.ImGuiWindow, ptr %1465, i32 0, i32 20
  %1467 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1466, i32 0, i32 4
  store float 0.000000e+00, ptr %1467, align 4, !tbaa !107
  %1468 = load ptr, ptr %13, align 8, !tbaa !5
  %1469 = getelementptr inbounds %struct.ImGuiWindow, ptr %1468, i32 0, i32 20
  %1470 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1469, i32 0, i32 3
  store float 0.000000e+00, ptr %1470, align 8, !tbaa !108
  %1471 = load ptr, ptr %13, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.ImGuiWindow, ptr %1471, i32 0, i32 20
  %1473 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1472, i32 0, i32 0
  %1474 = getelementptr inbounds %struct.ImVec2, ptr %1473, i32 0, i32 1
  %1475 = load float, ptr %1474, align 4, !tbaa !109
  %1476 = fsub float %1475, 9.999000e+03
  %1477 = load ptr, ptr %13, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.ImGuiWindow, ptr %1477, i32 0, i32 20
  %1479 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1478, i32 0, i32 5
  store float %1476, ptr %1479, align 8, !tbaa !110
  %1480 = load ptr, ptr %13, align 8, !tbaa !5
  %1481 = getelementptr inbounds %struct.ImGuiWindow, ptr %1480, i32 0, i32 20
  %1482 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1481, i32 0, i32 10
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %1482, i64 noundef 0)
  %1483 = load ptr, ptr %13, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.ImGuiWindow, ptr %1483, i32 0, i32 20
  %1485 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1484, i32 0, i32 12
  call void @_ZN8ImVectorIfE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %1485, i64 noundef 0)
  %1486 = load ptr, ptr %13, align 8, !tbaa !5
  %1487 = getelementptr inbounds %struct.ImGuiWindow, ptr %1486, i32 0, i32 20
  %1488 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1487, i32 0, i32 12
  %1489 = load ptr, ptr %13, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.ImGuiWindow, ptr %1489, i32 0, i32 25
  call void @_ZN8ImVectorIfE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %1488, ptr noundef nonnull align 4 dereferenceable(4) %1490)
  %1491 = load ptr, ptr %13, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.ImGuiWindow, ptr %1491, i32 0, i32 20
  %1493 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1492, i32 0, i32 11
  call void @_ZN8ImVectorIbE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %1493, i64 noundef 0)
  %1494 = load ptr, ptr %13, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.ImGuiWindow, ptr %1494, i32 0, i32 20
  %1496 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1495, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 1, ptr %131) #11
  store i8 1, ptr %131, align 1, !tbaa !44
  call void @_ZN8ImVectorIbE9push_backERKb(ptr noundef nonnull align 8 dereferenceable(24) %1496, ptr noundef nonnull align 1 dereferenceable(1) %131)
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #11
  %1497 = load ptr, ptr %13, align 8, !tbaa !5
  %1498 = getelementptr inbounds %struct.ImGuiWindow, ptr %1497, i32 0, i32 20
  %1499 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1498, i32 0, i32 13
  call void @_ZN8ImVectorIfE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %1499, i64 noundef 0)
  %1500 = load ptr, ptr %13, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.ImGuiWindow, ptr %1500, i32 0, i32 20
  %1502 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1501, i32 0, i32 13
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #11
  store float -1.000000e+00, ptr %132, align 4, !tbaa !9
  call void @_ZN8ImVectorIfE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %1502, ptr noundef nonnull align 4 dereferenceable(4) %132)
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #11
  %1503 = load ptr, ptr %13, align 8, !tbaa !5
  %1504 = getelementptr inbounds %struct.ImGuiWindow, ptr %1503, i32 0, i32 20
  %1505 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1504, i32 0, i32 14
  store i32 -2, ptr %1505, align 8, !tbaa !111
  %1506 = load ptr, ptr %13, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.ImGuiWindow, ptr %1506, i32 0, i32 20
  %1508 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1507, i32 0, i32 18
  store i32 0, ptr %1508, align 8, !tbaa !112
  %1509 = load ptr, ptr %13, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.ImGuiWindow, ptr %1509, i32 0, i32 20
  %1511 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1510, i32 0, i32 19
  store i32 1, ptr %1511, align 4, !tbaa !113
  %1512 = load ptr, ptr %13, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.ImGuiWindow, ptr %1512, i32 0, i32 20
  %1514 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1513, i32 0, i32 0
  %1515 = load ptr, ptr %13, align 8, !tbaa !5
  %1516 = getelementptr inbounds %struct.ImGuiWindow, ptr %1515, i32 0, i32 20
  %1517 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1516, i32 0, i32 20
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1517, ptr align 8 %1514, i64 8, i1 false), !tbaa.struct !34
  %1518 = load ptr, ptr %13, align 8, !tbaa !5
  %1519 = getelementptr inbounds %struct.ImGuiWindow, ptr %1518, i32 0, i32 20
  %1520 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1519, i32 0, i32 20
  %1521 = getelementptr inbounds %struct.ImVec2, ptr %1520, i32 0, i32 1
  %1522 = load float, ptr %1521, align 4, !tbaa !114
  %1523 = load ptr, ptr %13, align 8, !tbaa !5
  %1524 = getelementptr inbounds %struct.ImGuiWindow, ptr %1523, i32 0, i32 20
  %1525 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1524, i32 0, i32 22
  store float %1522, ptr %1525, align 4, !tbaa !115
  %1526 = load ptr, ptr %13, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.ImGuiWindow, ptr %1526, i32 0, i32 20
  %1528 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1527, i32 0, i32 21
  store float %1522, ptr %1528, align 8, !tbaa !116
  %1529 = load ptr, ptr %13, align 8, !tbaa !5
  %1530 = getelementptr inbounds %struct.ImGuiWindow, ptr %1529, i32 0, i32 20
  %1531 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1530, i32 0, i32 6
  store i32 0, ptr %1531, align 4, !tbaa !117
  %1532 = load ptr, ptr %13, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.ImGuiWindow, ptr %1532, i32 0, i32 26
  %1534 = load ptr, ptr %13, align 8, !tbaa !5
  %1535 = getelementptr inbounds %struct.ImGuiWindow, ptr %1534, i32 0, i32 20
  %1536 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %1535, i32 0, i32 15
  store ptr %1533, ptr %1536, align 8, !tbaa !118
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %133, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1537 = load ptr, ptr %13, align 8, !tbaa !5
  %1538 = getelementptr inbounds %struct.ImGuiWindow, ptr %1537, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1538, ptr align 4 %133, i64 8, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #11
  %1539 = load ptr, ptr %13, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.ImGuiWindow, ptr %1539, i32 0, i32 15
  %1541 = load i32, ptr %1540, align 8, !tbaa !91
  %1542 = icmp sgt i32 %1541, 0
  br i1 %1542, label %1543, label %1548

1543:                                             ; preds = %1416
  %1544 = load ptr, ptr %13, align 8, !tbaa !5
  %1545 = getelementptr inbounds %struct.ImGuiWindow, ptr %1544, i32 0, i32 15
  %1546 = load i32, ptr %1545, align 8, !tbaa !91
  %1547 = add nsw i32 %1546, -1
  store i32 %1547, ptr %1545, align 8, !tbaa !91
  br label %1548

1548:                                             ; preds = %1543, %1416
  %1549 = load ptr, ptr %13, align 8, !tbaa !5
  %1550 = getelementptr inbounds %struct.ImGuiWindow, ptr %1549, i32 0, i32 2
  %1551 = load i32, ptr %1550, align 4, !tbaa !35
  %1552 = and i32 %1551, 1
  %1553 = icmp ne i32 %1552, 0
  br i1 %1553, label %1625, label %1554

1554:                                             ; preds = %1548
  %1555 = load ptr, ptr %7, align 8, !tbaa !5
  %1556 = icmp ne ptr %1555, null
  br i1 %1556, label %1557, label %1560

1557:                                             ; preds = %1554
  %1558 = load ptr, ptr %7, align 8, !tbaa !5
  %1559 = call noundef zeroext i1 @_ZL17CloseWindowButtonPb(ptr noundef %1558)
  br label %1560

1560:                                             ; preds = %1557, %1554
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #11
  %1561 = load ptr, ptr %13, align 8, !tbaa !5
  %1562 = getelementptr inbounds %struct.ImGuiWindow, ptr %1561, i32 0, i32 4
  %1563 = load ptr, ptr %12, align 8, !tbaa !5
  %1564 = getelementptr inbounds %struct.ImGuiStyle, ptr %1563, i32 0, i32 5
  %1565 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1562, ptr noundef nonnull align 4 dereferenceable(8) %1564)
  store <2 x float> %1565, ptr %134, align 4
  %1566 = load ptr, ptr %13, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.ImGuiWindow, ptr %1566, i32 0, i32 2
  %1568 = load i32, ptr %1567, align 4, !tbaa !35
  %1569 = and i32 %1568, 32
  %1570 = icmp ne i32 %1569, 0
  br i1 %1570, label %1593, label %1571

1571:                                             ; preds = %1560
  %1572 = load ptr, ptr %13, align 8, !tbaa !5
  %1573 = getelementptr inbounds %struct.ImGuiWindow, ptr %1572, i32 0, i32 4
  %1574 = load ptr, ptr %12, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.ImGuiStyle, ptr %1574, i32 0, i32 5
  %1576 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1573, ptr noundef nonnull align 4 dereferenceable(8) %1575)
  store <2 x float> %1576, ptr %135, align 4
  %1577 = load ptr, ptr %13, align 8, !tbaa !5
  %1578 = getelementptr inbounds %struct.ImGuiWindow, ptr %1577, i32 0, i32 13
  %1579 = load i8, ptr %1578, align 1, !tbaa !83, !range !32, !noundef !33
  %1580 = trunc i8 %1579 to i1
  %1581 = xor i1 %1580, true
  %1582 = load <2 x float>, ptr %135, align 4
  call void @_ZL22RenderCollapseTriangle6ImVec2bfb(<2 x float> %1582, i1 noundef zeroext %1581, float noundef 1.000000e+00, i1 noundef zeroext true)
  %1583 = load ptr, ptr %13, align 8, !tbaa !5
  %1584 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %1583)
  %1585 = load ptr, ptr %12, align 8, !tbaa !5
  %1586 = getelementptr inbounds %struct.ImGuiStyle, ptr %1585, i32 0, i32 8
  %1587 = getelementptr inbounds %struct.ImVec2, ptr %1586, i32 0, i32 0
  %1588 = load float, ptr %1587, align 4, !tbaa !119
  %1589 = fadd float %1584, %1588
  %1590 = getelementptr inbounds %struct.ImVec2, ptr %134, i32 0, i32 0
  %1591 = load float, ptr %1590, align 4, !tbaa !103
  %1592 = fadd float %1591, %1589
  store float %1592, ptr %1590, align 4, !tbaa !103
  br label %1593

1593:                                             ; preds = %1571, %1560
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #11
  %1594 = load ptr, ptr %6, align 8, !tbaa !5
  %1595 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %1594, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %1595, ptr %136, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #11
  %1596 = load ptr, ptr %13, align 8, !tbaa !5
  %1597 = getelementptr inbounds %struct.ImGuiWindow, ptr %1596, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #11
  %1598 = load ptr, ptr %13, align 8, !tbaa !5
  %1599 = getelementptr inbounds %struct.ImGuiWindow, ptr %1598, i32 0, i32 5
  %1600 = getelementptr inbounds %struct.ImVec2, ptr %1599, i32 0, i32 0
  %1601 = load float, ptr %1600, align 8, !tbaa !73
  %1602 = load ptr, ptr %7, align 8, !tbaa !5
  %1603 = icmp ne ptr %1602, null
  br i1 %1603, label %1604, label %1607

1604:                                             ; preds = %1593
  %1605 = call noundef float @_ZNK9ImGuiAabb9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %37)
  %1606 = fsub float %1605, 3.000000e+00
  br label %1612

1607:                                             ; preds = %1593
  %1608 = load ptr, ptr %12, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.ImGuiStyle, ptr %1608, i32 0, i32 5
  %1610 = getelementptr inbounds %struct.ImVec2, ptr %1609, i32 0, i32 0
  %1611 = load float, ptr %1610, align 4, !tbaa !120
  br label %1612

1612:                                             ; preds = %1607, %1604
  %1613 = phi float [ %1606, %1604 ], [ %1611, %1607 ]
  %1614 = fsub float %1601, %1613
  %1615 = load ptr, ptr %12, align 8, !tbaa !5
  %1616 = getelementptr inbounds %struct.ImGuiStyle, ptr %1615, i32 0, i32 5
  %1617 = getelementptr inbounds %struct.ImVec2, ptr %1616, i32 0, i32 1
  %1618 = load float, ptr %1617, align 4, !tbaa !121
  %1619 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 1
  %1620 = load float, ptr %1619, align 4, !tbaa !106
  %1621 = call float @llvm.fmuladd.f32(float %1618, float 2.000000e+00, float %1620)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %138, float noundef %1614, float noundef %1621)
  %1622 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1597, ptr noundef nonnull align 4 dereferenceable(8) %138)
  store <2 x float> %1622, ptr %137, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %139, ptr align 4 %134, i64 8, i1 false), !tbaa.struct !34
  %1623 = load ptr, ptr %6, align 8, !tbaa !5
  %1624 = load <2 x float>, ptr %139, align 4
  call void @_ZL17RenderTextClipped6ImVec2PKcS1_PKS_RS2_(<2 x float> %1624, ptr noundef %1623, ptr noundef null, ptr noundef %136, ptr noundef nonnull align 4 dereferenceable(8) %137)
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #11
  br label %1625

1625:                                             ; preds = %1612, %1548
  call void @llvm.lifetime.start.p0(i64 16, ptr %140) #11
  %1626 = load ptr, ptr %13, align 8, !tbaa !5
  %1627 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %1626)
  %1628 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %140, i32 0, i32 0
  %1629 = extractvalue { <2 x float>, <2 x float> } %1627, 0
  store <2 x float> %1629, ptr %1628, align 4
  %1630 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %140, i32 0, i32 1
  %1631 = extractvalue { <2 x float>, <2 x float> } %1627, 1
  store <2 x float> %1631, ptr %1630, align 4
  %1632 = load ptr, ptr %13, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.ImGuiWindow, ptr %1632, i32 0, i32 23
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1633, ptr align 4 %140, i64 16, i1 false), !tbaa.struct !93
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #11
  %1634 = load ptr, ptr %13, align 8, !tbaa !5
  %1635 = getelementptr inbounds %struct.ImGuiWindow, ptr %1634, i32 0, i32 23
  call void @llvm.lifetime.start.p0(i64 16, ptr %141) #11
  %1636 = load ptr, ptr %13, align 8, !tbaa !5
  %1637 = getelementptr inbounds %struct.ImGuiWindow, ptr %1636, i32 0, i32 22
  %1638 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN8ImVectorI6ImVec4E5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1637)
  call void @_ZN9ImGuiAabbC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %141, ptr noundef nonnull align 4 dereferenceable(16) %1638)
  call void @_ZN9ImGuiAabb4ClipERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1635, ptr noundef nonnull align 4 dereferenceable(16) %141)
  call void @llvm.lifetime.end.p0(i64 16, ptr %141) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %1639

1639:                                             ; preds = %1625, %416
  call void @llvm.lifetime.start.p0(i64 16, ptr %142) #11
  %1640 = load ptr, ptr %13, align 8, !tbaa !5
  %1641 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarAabbEv(ptr noundef nonnull align 8 dereferenceable(480) %1640)
  %1642 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %142, i32 0, i32 0
  %1643 = extractvalue { <2 x float>, <2 x float> } %1641, 0
  store <2 x float> %1643, ptr %1642, align 4
  %1644 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %142, i32 0, i32 1
  %1645 = extractvalue { <2 x float>, <2 x float> } %1641, 1
  store <2 x float> %1645, ptr %1644, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %143) #11
  %1646 = getelementptr inbounds %struct.ImGuiAabb, ptr %142, i32 0, i32 0
  %1647 = getelementptr inbounds %struct.ImVec2, ptr %1646, i32 0, i32 0
  %1648 = load float, ptr %1647, align 4, !tbaa !102
  %1649 = fadd float %1648, 5.000000e-01
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #11
  %1650 = load ptr, ptr %13, align 8, !tbaa !5
  %1651 = call <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480) %1650)
  store <2 x float> %1651, ptr %144, align 4
  %1652 = getelementptr inbounds %struct.ImVec2, ptr %144, i32 0, i32 0
  %1653 = load float, ptr %1652, align 4, !tbaa !103
  %1654 = call float @llvm.fmuladd.f32(float %1653, float 5.000000e-01, float %1649)
  %1655 = getelementptr inbounds %struct.ImGuiAabb, ptr %142, i32 0, i32 1
  %1656 = getelementptr inbounds %struct.ImVec2, ptr %1655, i32 0, i32 1
  %1657 = load float, ptr %1656, align 4, !tbaa !98
  %1658 = fadd float %1657, 5.000000e-01
  call void @llvm.lifetime.start.p0(i64 16, ptr %145) #11
  %1659 = load ptr, ptr %13, align 8, !tbaa !5
  %1660 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %1659)
  %1661 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %145, i32 0, i32 0
  %1662 = extractvalue { <2 x float>, <2 x float> } %1660, 0
  store <2 x float> %1662, ptr %1661, align 4
  %1663 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %145, i32 0, i32 1
  %1664 = extractvalue { <2 x float>, <2 x float> } %1660, 1
  store <2 x float> %1664, ptr %1663, align 4
  %1665 = getelementptr inbounds %struct.ImGuiAabb, ptr %145, i32 0, i32 1
  %1666 = getelementptr inbounds %struct.ImVec2, ptr %1665, i32 0, i32 0
  %1667 = load float, ptr %1666, align 4, !tbaa !97
  %1668 = fadd float %1667, 5.000000e-01
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #11
  %1669 = load ptr, ptr %13, align 8, !tbaa !5
  %1670 = call <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480) %1669)
  store <2 x float> %1670, ptr %146, align 4
  %1671 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  %1672 = load float, ptr %1671, align 4, !tbaa !103
  %1673 = fneg float %1672
  %1674 = call float @llvm.fmuladd.f32(float %1673, float 5.000000e-01, float %1668)
  call void @llvm.lifetime.start.p0(i64 16, ptr %147) #11
  %1675 = load ptr, ptr %13, align 8, !tbaa !5
  %1676 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %1675)
  %1677 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %147, i32 0, i32 0
  %1678 = extractvalue { <2 x float>, <2 x float> } %1676, 0
  store <2 x float> %1678, ptr %1677, align 4
  %1679 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %147, i32 0, i32 1
  %1680 = extractvalue { <2 x float>, <2 x float> } %1676, 1
  store <2 x float> %1680, ptr %1679, align 4
  %1681 = getelementptr inbounds %struct.ImGuiAabb, ptr %147, i32 0, i32 1
  %1682 = getelementptr inbounds %struct.ImVec2, ptr %1681, i32 0, i32 1
  %1683 = load float, ptr %1682, align 4, !tbaa !98
  %1684 = fsub float %1683, 1.500000e+00
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %143, float noundef %1654, float noundef %1658, float noundef %1674, float noundef %1684)
  call void @llvm.lifetime.end.p0(i64 16, ptr %147) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %145) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #11
  %1685 = load ptr, ptr %13, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.ImGuiWindow, ptr %1685, i32 0, i32 10
  %1687 = load i8, ptr %1686, align 8, !tbaa !95, !range !32, !noundef !33
  %1688 = trunc i8 %1687 to i1
  br i1 %1688, label %1689, label %1696

1689:                                             ; preds = %1639
  %1690 = load ptr, ptr %12, align 8, !tbaa !5
  %1691 = getelementptr inbounds %struct.ImGuiStyle, ptr %1690, i32 0, i32 14
  %1692 = load float, ptr %1691, align 4, !tbaa !96
  %1693 = getelementptr inbounds %struct.ImVec4, ptr %143, i32 0, i32 2
  %1694 = load float, ptr %1693, align 4, !tbaa !122
  %1695 = fsub float %1694, %1692
  store float %1695, ptr %1693, align 4, !tbaa !122
  br label %1696

1696:                                             ; preds = %1689, %1639
  call void @_ZL12PushClipRectRK6ImVec4b(ptr noundef nonnull align 4 dereferenceable(16) %143, i1 noundef zeroext true)
  %1697 = load i8, ptr %20, align 1, !tbaa !44, !range !32, !noundef !33
  %1698 = trunc i8 %1697 to i1
  br i1 %1698, label %1699, label %1702

1699:                                             ; preds = %1696
  %1700 = load ptr, ptr %13, align 8, !tbaa !5
  %1701 = getelementptr inbounds %struct.ImGuiWindow, ptr %1700, i32 0, i32 12
  store i8 0, ptr %1701, align 2, !tbaa !124
  br label %1702

1702:                                             ; preds = %1699, %1696
  %1703 = load i32, ptr %10, align 4, !tbaa !11
  %1704 = and i32 %1703, 512
  %1705 = icmp ne i32 %1704, 0
  br i1 %1705, label %1706, label %1759

1706:                                             ; preds = %1702
  %1707 = load i32, ptr %10, align 4, !tbaa !11
  %1708 = and i32 %1707, 1
  %1709 = icmp ne i32 %1708, 0
  br i1 %1709, label %1710, label %1711

1710:                                             ; preds = %1706
  br label %1713

1711:                                             ; preds = %1706
  call void @__assert_fail(ptr noundef @.str.35, ptr noundef @.str.10, i32 noundef 3137, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbRK6ImVec2fi) #12
  unreachable

1712:                                             ; No predecessors!
  br label %1713

1713:                                             ; preds = %1712, %1710
  %1714 = load ptr, ptr %17, align 8, !tbaa !5
  %1715 = icmp ne ptr %1714, null
  br i1 %1715, label %1716, label %1721

1716:                                             ; preds = %1713
  %1717 = load ptr, ptr %17, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.ImGuiWindow, ptr %1717, i32 0, i32 13
  %1719 = load i8, ptr %1718, align 1, !tbaa !83, !range !32, !noundef !33
  %1720 = trunc i8 %1719 to i1
  br label %1721

1721:                                             ; preds = %1716, %1713
  %1722 = phi i1 [ false, %1713 ], [ %1720, %1716 ]
  %1723 = load ptr, ptr %13, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.ImGuiWindow, ptr %1723, i32 0, i32 13
  %1725 = zext i1 %1722 to i8
  store i8 %1725, ptr %1724, align 1, !tbaa !83
  call void @llvm.lifetime.start.p0(i64 16, ptr %148) #11
  %1726 = load ptr, ptr %13, align 8, !tbaa !5
  %1727 = getelementptr inbounds %struct.ImGuiWindow, ptr %1726, i32 0, i32 22
  %1728 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN8ImVectorI6ImVec4E4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1727)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %148, ptr align 4 %1728, i64 16, i1 false), !tbaa.struct !93
  %1729 = getelementptr inbounds %struct.ImVec4, ptr %148, i32 0, i32 0
  %1730 = load float, ptr %1729, align 4, !tbaa !125
  %1731 = getelementptr inbounds %struct.ImVec4, ptr %148, i32 0, i32 2
  %1732 = load float, ptr %1731, align 4, !tbaa !122
  %1733 = fcmp oge float %1730, %1732
  br i1 %1733, label %1740, label %1734

1734:                                             ; preds = %1721
  %1735 = getelementptr inbounds %struct.ImVec4, ptr %148, i32 0, i32 1
  %1736 = load float, ptr %1735, align 4, !tbaa !126
  %1737 = getelementptr inbounds %struct.ImVec4, ptr %148, i32 0, i32 3
  %1738 = load float, ptr %1737, align 4, !tbaa !127
  %1739 = fcmp oge float %1736, %1738
  br label %1740

1740:                                             ; preds = %1734, %1721
  %1741 = phi i1 [ true, %1721 ], [ %1739, %1734 ]
  %1742 = zext i1 %1741 to i32
  %1743 = load ptr, ptr %13, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.ImGuiWindow, ptr %1743, i32 0, i32 13
  %1745 = load i8, ptr %1744, align 1, !tbaa !83, !range !32, !noundef !33
  %1746 = trunc i8 %1745 to i1
  %1747 = zext i1 %1746 to i32
  %1748 = or i32 %1747, %1742
  %1749 = icmp ne i32 %1748, 0
  %1750 = zext i1 %1749 to i8
  store i8 %1750, ptr %1744, align 1, !tbaa !83
  %1751 = load ptr, ptr %13, align 8, !tbaa !5
  %1752 = getelementptr inbounds %struct.ImGuiWindow, ptr %1751, i32 0, i32 13
  %1753 = load i8, ptr %1752, align 1, !tbaa !83, !range !32, !noundef !33
  %1754 = trunc i8 %1753 to i1
  br i1 %1754, label %1755, label %1758

1755:                                             ; preds = %1740
  %1756 = load ptr, ptr %13, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.ImGuiWindow, ptr %1756, i32 0, i32 11
  store i8 0, ptr %1757, align 1, !tbaa !57
  br label %1758

1758:                                             ; preds = %1755, %1740
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #11
  br label %1759

1759:                                             ; preds = %1758, %1702
  %1760 = load ptr, ptr %12, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.ImGuiStyle, ptr %1760, i32 0, i32 0
  %1762 = load float, ptr %1761, align 4, !tbaa !128
  %1763 = fcmp ole float %1762, 0.000000e+00
  br i1 %1763, label %1764, label %1767

1764:                                             ; preds = %1759
  %1765 = load ptr, ptr %13, align 8, !tbaa !5
  %1766 = getelementptr inbounds %struct.ImGuiWindow, ptr %1765, i32 0, i32 11
  store i8 0, ptr %1766, align 1, !tbaa !57
  br label %1767

1767:                                             ; preds = %1764, %1759
  %1768 = load ptr, ptr %13, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.ImGuiWindow, ptr %1768, i32 0, i32 13
  %1770 = load i8, ptr %1769, align 1, !tbaa !83, !range !32, !noundef !33
  %1771 = trunc i8 %1770 to i1
  br i1 %1771, label %1784, label %1772

1772:                                             ; preds = %1767
  %1773 = load ptr, ptr %13, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.ImGuiWindow, ptr %1773, i32 0, i32 11
  %1775 = load i8, ptr %1774, align 1, !tbaa !57, !range !32, !noundef !33
  %1776 = trunc i8 %1775 to i1
  br i1 %1776, label %1782, label %1777

1777:                                             ; preds = %1772
  %1778 = load ptr, ptr %13, align 8, !tbaa !5
  %1779 = getelementptr inbounds %struct.ImGuiWindow, ptr %1778, i32 0, i32 15
  %1780 = load i32, ptr %1779, align 8, !tbaa !91
  %1781 = icmp eq i32 %1780, 0
  br label %1782

1782:                                             ; preds = %1777, %1772
  %1783 = phi i1 [ false, %1772 ], [ %1781, %1777 ]
  br label %1784

1784:                                             ; preds = %1782, %1767
  %1785 = phi i1 [ true, %1767 ], [ %1783, %1782 ]
  %1786 = load ptr, ptr %13, align 8, !tbaa !5
  %1787 = getelementptr inbounds %struct.ImGuiWindow, ptr %1786, i32 0, i32 14
  %1788 = zext i1 %1785 to i8
  store i8 %1788, ptr %1787, align 4, !tbaa !84
  %1789 = load ptr, ptr %13, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.ImGuiWindow, ptr %1789, i32 0, i32 14
  %1791 = load i8, ptr %1790, align 4, !tbaa !84, !range !32, !noundef !33
  %1792 = trunc i8 %1791 to i1
  %1793 = xor i1 %1792, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %143) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %142) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  ret i1 %1793
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(104)) #5 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL18IsMouseHoveringBoxRK9ImGuiAabb(ptr noundef nonnull align 4 dereferenceable(16)) #9

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN5ImGui13GetFrameCountEv() #0

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

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL16FindWindowByNamePKc(ptr noundef) #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui18SetWindowCollapsedEbi(i1 noundef zeroext, i32 noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui14SetWindowFocusEv() #5

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI6ImVec4E6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList13PushTextureIDERKPv(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL12PushClipRectRK6ImVec4b(ptr noundef nonnull align 4 dereferenceable(16), i1 noundef zeroext) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIjE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui6PushIDEPKv(ptr noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL17MarkSettingsDirtyv() #0

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480), i32 noundef, float noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL15ButtonBehaviourRK9ImGuiAabbRKjPbS4_bbb(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef, ptr noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) #5

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480)) #9 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIfE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #8 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIbE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #8 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIbE9push_backERKb(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 1 dereferenceable(1)) #8 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL17CloseWindowButtonPb(ptr noundef) #9

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !15, i64 0}
!14 = !{!"_ZTS10ImGuiState", !15, i64 0, !16, i64 8, !18, i64 2960, !6, i64 3672, !10, i64 3680, !17, i64 3684, !10, i64 3692, !12, i64 3696, !12, i64 3700, !19, i64 3704, !6, i64 3728, !19, i64 3736, !6, i64 3760, !6, i64 3768, !6, i64 3776, !12, i64 3784, !12, i64 3788, !12, i64 3792, !15, i64 3796, !15, i64 3797, !6, i64 3800, !10, i64 3808, !21, i64 3816, !22, i64 3840, !23, i64 3864, !24, i64 3888, !17, i64 3912, !12, i64 3920, !17, i64 3924, !12, i64 3932, !15, i64 3936, !12, i64 3940, !15, i64 3944, !15, i64 3945, !12, i64 3948, !25, i64 3952, !19, i64 3976, !26, i64 4000, !12, i64 12400, !30, i64 12408, !12, i64 12432, !7, i64 12436, !6, i64 13464, !15, i64 13472, !6, i64 13480, !6, i64 13488, !12, i64 13496, !12, i64 13500, !7, i64 13504, !12, i64 13984, !10, i64 13988}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"_ZTS7ImGuiIO", !17, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !10, i64 32, !10, i64 36, !7, i64 40, !6, i64 112, !6, i64 120, !10, i64 128, !15, i64 132, !17, i64 136, !17, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !17, i64 208, !7, i64 216, !10, i64 224, !15, i64 228, !15, i64 229, !15, i64 230, !7, i64 231, !7, i64 744, !15, i64 778, !15, i64 779, !10, i64 780, !17, i64 784, !17, i64 792, !7, i64 800, !7, i64 808, !7, i64 848, !7, i64 868, !7, i64 873, !7, i64 880, !7, i64 900}
!17 = !{!"_ZTS6ImVec2", !10, i64 0, !10, i64 4}
!18 = !{!"_ZTS10ImGuiStyle", !10, i64 0, !17, i64 4, !17, i64 12, !10, i64 20, !10, i64 24, !17, i64 28, !10, i64 36, !17, i64 40, !17, i64 48, !17, i64 56, !17, i64 64, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !7, i64 88}
!19 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !20, i64 0, !20, i64 8, !6, i64 16}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTS8ImVectorIP12ImGuiIniDataE", !20, i64 0, !20, i64 8, !6, i64 16}
!22 = !{!"_ZTS8ImVectorI11ImGuiColModE", !20, i64 0, !20, i64 8, !6, i64 16}
!23 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !20, i64 0, !20, i64 8, !6, i64 16}
!24 = !{!"_ZTS8ImVectorIP6ImFontE", !20, i64 0, !20, i64 8, !6, i64 16}
!25 = !{!"_ZTS8ImVectorIP10ImDrawListE", !20, i64 0, !20, i64 8, !6, i64 16}
!26 = !{!"_ZTS18ImGuiTextEditState", !12, i64 0, !7, i64 4, !7, i64 2052, !20, i64 5128, !10, i64 5136, !10, i64 5140, !27, i64 5144, !10, i64 8364, !17, i64 8368, !15, i64 8376, !6, i64 8384, !10, i64 8392}
!27 = !{!"_ZTS17STB_TexteditState", !12, i64 0, !12, i64 4, !12, 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, !10, i64 20, !28, i64 24}
!28 = !{!"_ZTS12StbUndoState", !7, i64 0, !7, i64 1188, !29, i64 3186, !29, i64 3188, !29, i64 3190, !29, i64 3192}
!29 = !{!"short", !7, i64 0}
!30 = !{!"_ZTS12ImGuiStorage", !31, i64 0}
!31 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !20, i64 0, !20, i64 8, !6, i64 16}
!32 = !{i8 0, i8 2}
!33 = !{}
!34 = !{i64 0, i64 4, !9, i64 4, i64 4, !9}
!35 = !{!36, !12, i64 12}
!36 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !12, i64 8, !12, i64 12, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !10, i64 56, !10, i64 60, !15, i64 64, !15, i64 65, !15, i64 66, !15, i64 67, !15, i64 68, !12, i64 72, !15, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !37, i64 96, !41, i64 336, !42, i64 360, !38, i64 384, !12, i64 400, !10, i64 404, !30, i64 408, !10, i64 432, !6, i64 440, !6, i64 448, !12, i64 456, !12, i64 460, !12, i64 464, !12, i64 468, !12, i64 472, !12, i64 476}
!37 = !{!"_ZTS16ImGuiDrawContext", !17, i64 0, !17, i64 8, !17, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !12, i64 36, !12, i64 40, !38, i64 44, !15, i64 60, !19, i64 64, !39, i64 88, !40, i64 112, !40, i64 136, !12, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !12, i64 184, !12, i64 188, !17, i64 192, !10, i64 200, !10, i64 204, !15, i64 208, !12, i64 212, !40, i64 216}
!38 = !{!"_ZTS9ImGuiAabb", !17, i64 0, !17, i64 8}
!39 = !{!"_ZTS8ImVectorIbE", !20, i64 0, !20, i64 8, !6, i64 16}
!40 = !{!"_ZTS8ImVectorIfE", !20, i64 0, !20, i64 8, !6, i64 16}
!41 = !{!"_ZTS8ImVectorIjE", !20, i64 0, !20, i64 8, !6, i64 16}
!42 = !{!"_ZTS8ImVectorI6ImVec4E", !20, i64 0, !20, i64 8, !6, i64 16}
!43 = !{!14, !6, i64 3728}
!44 = !{!15, !15, i64 0}
!45 = !{!14, !12, i64 3920}
!46 = !{!14, !12, i64 3932}
!47 = !{!14, !12, i64 3940}
!48 = !{!14, !15, i64 3936}
!49 = !{!14, !15, i64 3944}
!50 = !{!20, !20, i64 0}
!51 = distinct !{!51, !52}
!52 = !{!"llvm.loop.mustprogress"}
!53 = !{!36, !6, i64 448}
!54 = !{!18, !10, i64 72}
!55 = !{!36, !12, i64 400}
!56 = !{!36, !6, i64 440}
!57 = !{!36, !15, i64 65}
!58 = !{!14, !6, i64 3672}
!59 = !{!60, !6, i64 24}
!60 = !{!"_ZTS6ImFont", !10, i64 0, !10, i64 4, !17, i64 8, !29, i64 16, !6, i64 24, !61, i64 32, !6, i64 56, !10, i64 64, !40, i64 72, !62, i64 96}
!61 = !{!"_ZTS8ImVectorIN6ImFont5GlyphEE", !20, i64 0, !20, i64 8, !6, i64 16}
!62 = !{!"_ZTS8ImVectorIiE", !20, i64 0, !20, i64 8, !6, i64 16}
!63 = !{!14, !10, i64 144}
!64 = !{!14, !10, i64 152}
!65 = !{!14, !10, i64 148}
!66 = !{!14, !10, i64 156}
!67 = !{!14, !10, i64 8}
!68 = !{!14, !10, i64 12}
!69 = !{!14, !12, i64 3788}
!70 = !{!14, !6, i64 3800}
!71 = !{!36, !10, i64 16}
!72 = !{!36, !10, i64 20}
!73 = !{!36, !10, i64 32}
!74 = !{!36, !10, i64 404}
!75 = !{!36, !12, i64 472}
!76 = !{!36, !12, i64 456}
!77 = !{!36, !12, i64 464}
!78 = !{!36, !12, i64 476}
!79 = !{!36, !12, i64 460}
!80 = !{!36, !12, i64 468}
!81 = !{!36, !10, i64 60}
!82 = !{!36, !10, i64 56}
!83 = !{!36, !15, i64 67}
!84 = !{!36, !15, i64 68}
!85 = !{!36, !10, i64 52}
!86 = !{!36, !10, i64 44}
!87 = !{!14, !6, i64 3768}
!88 = !{!18, !10, i64 24}
!89 = !{!18, !10, i64 20}
!90 = !{!18, !10, i64 44}
!91 = !{!36, !12, i64 72}
!92 = !{!36, !15, i64 76}
!93 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9}
!94 = !{!36, !10, i64 36}
!95 = !{!36, !15, i64 64}
!96 = !{!18, !10, i64 84}
!97 = !{!38, !10, i64 8}
!98 = !{!38, !10, i64 12}
!99 = !{!14, !12, i64 3784}
!100 = !{!14, !10, i64 220}
!101 = !{!38, !10, i64 4}
!102 = !{!38, !10, i64 0}
!103 = !{!17, !10, i64 0}
!104 = !{!36, !10, i64 272}
!105 = !{!36, !10, i64 276}
!106 = !{!17, !10, i64 4}
!107 = !{!36, !10, i64 124}
!108 = !{!36, !10, i64 120}
!109 = !{!36, !10, i64 100}
!110 = !{!36, !10, i64 128}
!111 = !{!36, !12, i64 256}
!112 = !{!36, !12, i64 280}
!113 = !{!36, !12, i64 284}
!114 = !{!36, !10, i64 292}
!115 = !{!36, !10, i64 300}
!116 = !{!36, !10, i64 296}
!117 = !{!36, !12, i64 132}
!118 = !{!36, !6, i64 264}
!119 = !{!18, !10, i64 48}
!120 = !{!18, !10, i64 28}
!121 = !{!18, !10, i64 32}
!122 = !{!123, !10, i64 8}
!123 = !{!"_ZTS6ImVec4", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!124 = !{!36, !15, i64 66}
!125 = !{!123, !10, i64 0}
!126 = !{!123, !10, i64 4}
!127 = !{!123, !10, i64 12}
!128 = !{!18, !10, i64 0}


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

@_ZL6GImGui = external hidden local_unnamed_addr global ptr, align 8
@.str.10 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [6 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbRK6ImVec2fi = external hidden unnamed_addr constant [81 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

; 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 #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL15RegisterAliveIdRKj(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK8ImVectorIP11ImGuiWindowE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL11SetActiveIdj(i32 noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIP11ImGuiWindowE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbRK6ImVec2fi(ptr noundef %0, ptr noundef %1, ptr nocapture noundef nonnull readonly align 4 dereferenceable(8) %2, float noundef %3, i32 noundef %4) local_unnamed_addr #8 {
  %6 = alloca ptr, align 8
  %7 = alloca %struct.ImVec4, align 4
  %8 = alloca %struct.ImVec4, align 4
  %9 = alloca i32, align 4
  %10 = alloca %struct.ImVec2, align 8
  %11 = alloca %struct.ImVec2, align 4
  %12 = alloca %struct.ImVec2, align 8
  %13 = alloca %struct.ImVec2, align 8
  %14 = alloca %struct.ImVec2, align 8
  %15 = alloca %struct.ImVec2, align 8
  %16 = alloca %struct.ImVec2, align 8
  %17 = alloca %struct.ImVec2, align 8
  %18 = alloca %struct.ImVec2, align 8
  %19 = alloca %struct.ImGuiAabb, align 8
  %20 = alloca %struct.ImVec2, align 8
  %21 = alloca %struct.ImVec2, align 8
  %22 = alloca %struct.ImVec2, align 8
  %23 = alloca %struct.ImVec2, align 8
  %24 = alloca %struct.ImVec2, align 4
  %25 = alloca %struct.ImVec2, align 8
  %26 = alloca %struct.ImVec2, align 8
  %27 = alloca %struct.ImVec2, align 4
  %28 = alloca %struct.ImVec2, align 8
  %29 = alloca %struct.ImVec2, align 8
  %30 = alloca %struct.ImVec2, align 8
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 8
  %33 = alloca %struct.ImVec2, align 8
  %34 = alloca %struct.ImVec2, align 8
  %35 = alloca %struct.ImGuiAabb, align 4
  %36 = alloca %struct.ImVec2, align 8
  %37 = alloca %struct.ImVec2, align 8
  %38 = alloca %struct.ImGuiAabb, align 8
  %39 = alloca %struct.ImVec2, align 4
  %40 = alloca %struct.ImVec2, align 8
  %41 = alloca %struct.ImGuiAabb, align 8
  %42 = alloca i32, align 4
  %43 = alloca i8, align 1
  %44 = alloca i8, align 1
  %45 = alloca %struct.ImVec2, align 8
  %46 = alloca %struct.ImVec2, align 8
  %47 = alloca %struct.ImVec2, align 8
  %48 = alloca %struct.ImVec2, align 8
  %49 = alloca %struct.ImVec2, align 8
  %50 = alloca %struct.ImVec2, align 4
  %51 = alloca %struct.ImVec2, align 8
  %52 = alloca %struct.ImVec2, align 8
  %53 = alloca %struct.ImVec2, align 8
  %54 = alloca %struct.ImVec2, align 8
  %55 = alloca %struct.ImVec2, align 4
  %56 = alloca %struct.ImVec2, align 8
  %57 = alloca %struct.ImVec2, align 8
  %58 = alloca %struct.ImVec2, align 4
  %59 = alloca %struct.ImVec2, align 8
  %60 = alloca %struct.ImVec2, align 8
  %61 = alloca %struct.ImVec2, align 8
  %62 = alloca %struct.ImGuiAabb, align 4
  %63 = alloca %struct.ImVec2, align 4
  %64 = alloca i8, align 1
  %65 = alloca i8, align 1
  %66 = alloca i32, align 4
  %67 = alloca %struct.ImVec2, align 4
  %68 = alloca %struct.ImVec2, align 4
  %69 = alloca %struct.ImVec2, align 8
  %70 = alloca %struct.ImGuiAabb, align 8
  %71 = alloca %struct.ImVec2, align 8
  %72 = alloca %struct.ImVec2, align 4
  %73 = alloca %struct.ImVec2, align 8
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca %struct.ImVec2, align 8
  %76 = alloca %struct.ImVec2, align 4
  %77 = alloca %struct.ImVec2, align 4
  %78 = alloca %struct.ImVec2, align 8
  %79 = alloca %struct.ImVec2, align 4
  %80 = alloca %struct.ImVec2, align 8
  %81 = alloca %struct.ImVec2, align 4
  %82 = alloca %struct.ImVec2, align 8
  %83 = alloca %struct.ImVec2, align 4
  %84 = alloca %struct.ImVec2, align 8
  %85 = alloca %struct.ImVec2, align 4
  %86 = alloca %struct.ImVec2, align 8
  %87 = alloca %struct.ImVec2, align 4
  %88 = alloca %struct.ImVec2, align 8
  %89 = alloca %struct.ImVec2, align 4
  %90 = alloca %struct.ImVec2, align 8
  %91 = alloca %struct.ImVec2, align 4
  %92 = alloca %struct.ImVec2, align 4
  %93 = alloca i8, align 1
  %94 = alloca float, align 4
  %95 = alloca %struct.ImVec2, align 8
  %96 = alloca %struct.ImVec2, align 8
  %97 = alloca %struct.ImVec2, align 8
  %98 = alloca %struct.ImVec2, align 4
  %99 = alloca %struct.ImGuiAabb, align 4
  %100 = alloca %struct.ImVec4, align 4
  %101 = load ptr, ptr @_ZL6GImGui, align 8, !tbaa !5
  %102 = getelementptr inbounds i8, ptr %101, i64 2960
  %103 = load i8, ptr %101, align 8, !tbaa !9, !range !30, !noundef !31
  %104 = trunc nuw i8 %103 to i1
  br i1 %104, label %106, label %105

105:                                              ; preds = %5
  tail call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.10, i32 noundef 2728, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbRK6ImVec2fi) #10
  unreachable

106:                                              ; preds = %5
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %107, label %108

107:                                              ; preds = %106
  tail call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.10, i32 noundef 2729, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbRK6ImVec2fi) #10
  unreachable

108:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #11
  %109 = tail call noundef ptr @_ZL16FindWindowByNamePKc(ptr noundef nonnull %0)
  store ptr %109, ptr %6, align 8, !tbaa !5
  %.not204 = icmp eq ptr %109, null
  br i1 %.not204, label %110, label %112

110:                                              ; preds = %108
  %.sroa.086.0.copyload = load <2 x float>, ptr %2, align 4
  %111 = tail call noundef ptr @_ZL15CreateNewWindowPKc6ImVec2i(ptr noundef nonnull %0, <2 x float> %.sroa.086.0.copyload, i32 noundef %4)
  store ptr %111, ptr %6, align 8, !tbaa !5
  br label %112

112:                                              ; preds = %110, %108
  %113 = phi ptr [ %111, %110 ], [ %109, %108 ]
  %114 = getelementptr inbounds i8, ptr %113, i64 12
  store i32 %4, ptr %114, align 4, !tbaa !32
  %115 = getelementptr inbounds i8, ptr %101, i64 3736
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %115, ptr noundef nonnull align 8 dereferenceable(8) %6)
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = getelementptr inbounds i8, ptr %101, i64 3728
  store ptr %116, ptr %117, align 8, !tbaa !40
  %118 = getelementptr inbounds i8, ptr %101, i64 3920
  %119 = load i32, ptr %118, align 8, !tbaa !41
  %.not205.not = icmp eq i32 %119, 0
  br i1 %.not205.not, label %126, label %120

120:                                              ; preds = %112
  %121 = getelementptr inbounds i8, ptr %116, i64 96
  %122 = load i64, ptr %121, align 8
  %123 = getelementptr inbounds i8, ptr %101, i64 3912
  call void @_ZN5ImGui12SetWindowPosERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8) %123, i32 noundef %119)
  %124 = load ptr, ptr %6, align 8, !tbaa !5
  %125 = getelementptr inbounds i8, ptr %124, i64 96
  store i64 %122, ptr %125, align 8
  store i32 0, ptr %118, align 8, !tbaa !41
  br label %126

126:                                              ; preds = %120, %112
  %127 = getelementptr inbounds i8, ptr %101, i64 3932
  %128 = load i32, ptr %127, align 4, !tbaa !42
  %.not206 = icmp eq i32 %128, 0
  br i1 %.not206, label %131, label %129

129:                                              ; preds = %126
  %130 = getelementptr inbounds i8, ptr %101, i64 3924
  call void @_ZN5ImGui13SetWindowSizeERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8) %130, i32 noundef %128)
  store i32 0, ptr %127, align 4, !tbaa !42
  br label %131

131:                                              ; preds = %129, %126
  %132 = getelementptr inbounds i8, ptr %101, i64 3940
  %133 = load i32, ptr %132, align 4, !tbaa !43
  %.not207 = icmp eq i32 %133, 0
  br i1 %.not207, label %138, label %134

134:                                              ; preds = %131
  %135 = getelementptr inbounds i8, ptr %101, i64 3936
  %136 = load i8, ptr %135, align 8, !tbaa !44, !range !30, !noundef !31
  %137 = trunc nuw i8 %136 to i1
  call void @_ZN5ImGui18SetWindowCollapsedEbi(i1 noundef zeroext %137, i32 noundef %133)
  store i32 0, ptr %132, align 4, !tbaa !43
  br label %138

138:                                              ; preds = %134, %131
  %139 = getelementptr inbounds i8, ptr %101, i64 3944
  %140 = load i8, ptr %139, align 8, !tbaa !45, !range !30, !noundef !31
  %141 = trunc nuw i8 %140 to i1
  br i1 %141, label %142, label %143

142:                                              ; preds = %138
  call void @_ZN5ImGui14SetWindowFocusEv()
  store i8 0, ptr %139, align 8, !tbaa !45
  br label %143

143:                                              ; preds = %142, %138
  %144 = and i32 %4, 512
  %.not208.not = icmp eq i32 %144, 0
  br i1 %.not208.not, label %150, label %145

145:                                              ; preds = %143
  %146 = call noundef i64 @_ZNK8ImVectorIP11ImGuiWindowE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %115)
  %147 = add i64 %146, -2
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %147)
  %149 = load ptr, ptr %148, align 8, !tbaa !5
  br label %150

150:                                              ; preds = %143, %145
  %151 = phi ptr [ %149, %145 ], [ null, %143 ]
  %152 = call noundef i64 @_ZNK8ImVectorIP11ImGuiWindowE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %115)
  br label %153

153:                                              ; preds = %154, %150
  %.0185.in = phi i64 [ %152, %150 ], [ %.0185, %154 ]
  %.0185 = add i64 %.0185.in, -1
  %.not209 = icmp eq i64 %.0185, 0
  br i1 %.not209, label %161, label %154

154:                                              ; preds = %153
  %155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %.0185)
  %156 = load ptr, ptr %155, align 8, !tbaa !5
  %157 = getelementptr inbounds i8, ptr %156, i64 12
  %158 = load i32, ptr %157, align 4, !tbaa !32
  %159 = and i32 %158, 512
  %160 = icmp eq i32 %159, 0
  br i1 %160, label %161, label %153, !llvm.loop !46

161:                                              ; preds = %154, %153
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %.0185)
  %163 = load ptr, ptr %162, align 8, !tbaa !5
  %164 = load ptr, ptr %6, align 8, !tbaa !5
  %165 = getelementptr inbounds i8, ptr %164, i64 448
  store ptr %163, ptr %165, align 8, !tbaa !48
  %166 = fcmp olt float %3, 0.000000e+00
  br i1 %166, label %167, label %170

167:                                              ; preds = %161
  %168 = getelementptr inbounds i8, ptr %101, i64 3032
  %169 = load float, ptr %168, align 4, !tbaa !49
  br label %170

170:                                              ; preds = %167, %161
  %.0 = phi float [ %169, %167 ], [ %3, %161 ]
  %171 = call noundef i32 @_ZN5ImGui13GetFrameCountEv()
  %172 = load ptr, ptr %6, align 8, !tbaa !5
  %173 = getelementptr inbounds i8, ptr %172, i64 400
  %174 = load i32, ptr %173, align 8, !tbaa !50
  %.not210 = icmp eq i32 %174, %171
  br i1 %.not210, label %198, label %175

175:                                              ; preds = %170
  %176 = getelementptr inbounds i8, ptr %172, i64 440
  %177 = load ptr, ptr %176, align 8, !tbaa !51
  call void @_ZN10ImDrawList5ClearEv(ptr noundef nonnull align 8 dereferenceable(104) %177)
  %178 = load ptr, ptr %6, align 8, !tbaa !5
  %179 = getelementptr inbounds i8, ptr %178, i64 65
  store i8 1, ptr %179, align 1, !tbaa !52
  %180 = getelementptr inbounds i8, ptr %178, i64 400
  %181 = load i32, ptr %180, align 8, !tbaa !50
  %182 = add nsw i32 %171, -1
  %183 = icmp slt i32 %181, %182
  br i1 %183, label %184, label %185

184:                                              ; preds = %175
  call void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef nonnull %178)
  %.pre = load ptr, ptr %6, align 8, !tbaa !5
  br label %185

185:                                              ; preds = %184, %175
  %186 = phi ptr [ %.pre, %184 ], [ %178, %175 ]
  %187 = getelementptr inbounds i8, ptr %186, i64 400
  store i32 %171, ptr %187, align 8, !tbaa !50
  %188 = getelementptr inbounds i8, ptr %186, i64 360
  call void @_ZN8ImVectorI6ImVec4E6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %188, i64 noundef 0)
  br i1 %.not208.not, label %.critedge, label %189

189:                                              ; preds = %185
  %190 = getelementptr inbounds i8, ptr %151, i64 96
  %191 = getelementptr inbounds i8, ptr %151, i64 160
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %191, ptr noundef nonnull align 8 dereferenceable(8) %6)
  %192 = load ptr, ptr %6, align 8, !tbaa !5
  %193 = getelementptr inbounds i8, ptr %192, i64 16
  %194 = load i64, ptr %190, align 8
  store i64 %194, ptr %193, align 8
  %195 = getelementptr inbounds i8, ptr %192, i64 24
  store i64 %194, ptr %195, align 8
  %196 = getelementptr inbounds i8, ptr %192, i64 40
  %197 = load i64, ptr %2, align 4
  store i64 %197, ptr %196, align 8
  br label %198

198:                                              ; preds = %189, %170
  %199 = phi ptr [ %192, %189 ], [ %172, %170 ]
  %200 = getelementptr inbounds i8, ptr %199, i64 440
  %201 = load ptr, ptr %200, align 8, !tbaa !51
  %202 = getelementptr inbounds i8, ptr %101, i64 3672
  %203 = load ptr, ptr %202, align 8, !tbaa !53
  %204 = getelementptr inbounds i8, ptr %203, i64 24
  %205 = load ptr, ptr %204, align 8, !tbaa !54
  call void @_ZN10ImDrawList13PushTextureIDERKPv(ptr noundef nonnull align 8 dereferenceable(104) %201, ptr noundef nonnull align 8 dereferenceable(8) %205)
  %206 = and i32 %4, 4608
  %or.cond = icmp eq i32 %206, 512
  br i1 %or.cond, label %207, label %217

207:                                              ; preds = %198
  %208 = getelementptr inbounds i8, ptr %151, i64 360
  %209 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN8ImVectorI6ImVec4E4backEv(ptr noundef nonnull align 8 dereferenceable(24) %208)
  call void @_ZL12PushClipRectRK6ImVec4b(ptr noundef nonnull align 4 dereferenceable(16) %209, i1 noundef zeroext true)
  br label %235

.critedge:                                        ; preds = %185
  %210 = load ptr, ptr %6, align 8, !tbaa !5
  %211 = getelementptr inbounds i8, ptr %210, i64 440
  %212 = load ptr, ptr %211, align 8, !tbaa !51
  %213 = getelementptr inbounds i8, ptr %101, i64 3672
  %214 = load ptr, ptr %213, align 8, !tbaa !53
  %215 = getelementptr inbounds i8, ptr %214, i64 24
  %216 = load ptr, ptr %215, align 8, !tbaa !54
  call void @_ZN10ImDrawList13PushTextureIDERKPv(ptr noundef nonnull align 8 dereferenceable(104) %212, ptr noundef nonnull align 8 dereferenceable(8) %216)
  br label %217

217:                                              ; preds = %.critedge, %198
  %218 = getelementptr inbounds i8, ptr %101, i64 8
  %219 = getelementptr inbounds i8, ptr %101, i64 144
  %220 = load float, ptr %219, align 8, !tbaa !58
  %221 = getelementptr inbounds i8, ptr %101, i64 152
  %222 = load float, ptr %221, align 8, !tbaa !59
  %223 = fcmp une float %220, %222
  br i1 %223, label %224, label %231

224:                                              ; preds = %217
  %225 = getelementptr inbounds i8, ptr %101, i64 148
  %226 = load float, ptr %225, align 4, !tbaa !60
  %227 = getelementptr inbounds i8, ptr %101, i64 156
  %228 = load float, ptr %227, align 4, !tbaa !61
  %229 = fcmp une float %226, %228
  br i1 %229, label %230, label %231

230:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #11
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %7, float noundef %220, float noundef %226, float noundef %222, float noundef %228)
  call void @_ZL12PushClipRectRK6ImVec4b(ptr noundef nonnull align 4 dereferenceable(16) %7, i1 noundef zeroext true)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #11
  br label %235

231:                                              ; preds = %224, %217
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #11
  %232 = load float, ptr %218, align 8, !tbaa !62
  %233 = getelementptr inbounds i8, ptr %101, i64 12
  %234 = load float, ptr %233, align 4, !tbaa !63
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %232, float noundef %234)
  call void @_ZL12PushClipRectRK6ImVec4b(ptr noundef nonnull align 4 dereferenceable(16) %8, i1 noundef zeroext true)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #11
  br label %235

235:                                              ; preds = %230, %231, %207
  br i1 %.not210, label %950, label %236

236:                                              ; preds = %235
  %237 = load ptr, ptr %6, align 8, !tbaa !5
  %238 = getelementptr inbounds i8, ptr %237, i64 336
  call void @_ZN8ImVectorIjE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %238, i64 noundef 0)
  %239 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGui6PushIDEPKv(ptr noundef %239)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #11
  %240 = load ptr, ptr %6, align 8, !tbaa !5
  %241 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %240, ptr noundef nonnull @.str.20)
  store i32 %241, ptr %9, align 4, !tbaa !64
  call void @_ZL15RegisterAliveIdRKj(ptr noundef nonnull align 4 dereferenceable(4) %9)
  %242 = getelementptr inbounds i8, ptr %101, i64 3788
  %243 = load i32, ptr %242, align 4, !tbaa !65
  %244 = load i32, ptr %9, align 4, !tbaa !64
  %245 = icmp eq i32 %243, %244
  br i1 %245, label %246, label %271

246:                                              ; preds = %236
  %247 = getelementptr inbounds i8, ptr %101, i64 224
  %248 = load i8, ptr %247, align 8, !tbaa !66, !range !30, !noundef !31
  %249 = trunc nuw i8 %248 to i1
  br i1 %249, label %250, label %269

250:                                              ; preds = %246
  %251 = load ptr, ptr %6, align 8, !tbaa !5
  %252 = getelementptr inbounds i8, ptr %251, i64 12
  %253 = load i32, ptr %252, align 4, !tbaa !32
  %254 = and i32 %253, 4
  %.not212 = icmp eq i32 %254, 0
  br i1 %.not212, label %255, label %264

255:                                              ; preds = %250
  %256 = getelementptr inbounds i8, ptr %101, i64 800
  %257 = getelementptr inbounds i8, ptr %251, i64 16
  %258 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %257, ptr noundef nonnull align 4 dereferenceable(8) %256)
  %259 = load ptr, ptr %6, align 8, !tbaa !5
  %260 = getelementptr inbounds i8, ptr %259, i64 12
  %261 = load i32, ptr %260, align 4, !tbaa !32
  %262 = and i32 %261, 256
  %.not213 = icmp eq i32 %262, 0
  br i1 %.not213, label %263, label %264

263:                                              ; preds = %255
  call void @_ZL17MarkSettingsDirtyv()
  br label %264

264:                                              ; preds = %255, %263, %250
  %265 = getelementptr inbounds i8, ptr %101, i64 3800
  %266 = load ptr, ptr %265, align 8, !tbaa !67
  %.not214 = icmp eq ptr %266, null
  br i1 %.not214, label %267, label %268

267:                                              ; preds = %264
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.10, i32 noundef 2838, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbRK6ImVec2fi) #10
  unreachable

268:                                              ; preds = %264
  call void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef nonnull %266)
  br label %271

269:                                              ; preds = %246
  call void @_ZL11SetActiveIdj(i32 noundef 0)
  %270 = getelementptr inbounds i8, ptr %101, i64 3800
  store ptr null, ptr %270, align 8, !tbaa !67
  br label %271

271:                                              ; preds = %268, %269, %236
  %.pre246 = load ptr, ptr %6, align 8, !tbaa !5
  br i1 %.not205.not, label %272, label %284

272:                                              ; preds = %271
  %273 = getelementptr inbounds i8, ptr %.pre246, i64 12
  %274 = load i32, ptr %273, align 4, !tbaa !32
  %275 = and i32 %274, 8192
  %.not215 = icmp eq i32 %275, 0
  br i1 %.not215, label %284, label %276

276:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #11
  %277 = getelementptr inbounds i8, ptr %101, i64 216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 3.200000e+01, float noundef 1.600000e+01)
  %278 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %277, ptr noundef nonnull align 4 dereferenceable(8) %11)
  store <2 x float> %278, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #11
  %279 = getelementptr inbounds i8, ptr %101, i64 2988
  %280 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %279, float noundef 2.000000e+00)
  store <2 x float> %280, ptr %12, align 8
  %281 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %10, ptr noundef nonnull align 4 dereferenceable(8) %12)
  %282 = load ptr, ptr %6, align 8, !tbaa !5
  %283 = getelementptr inbounds i8, ptr %282, i64 16
  store <2 x float> %281, ptr %283, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  br label %284

284:                                              ; preds = %276, %272, %271
  %285 = phi ptr [ %282, %276 ], [ %.pre246, %272 ], [ %.pre246, %271 ]
  %286 = getelementptr inbounds i8, ptr %285, i64 12
  %287 = load i32, ptr %286, align 4, !tbaa !32
  %288 = and i32 %287, 8704
  %or.cond244 = icmp eq i32 %288, 0
  br i1 %or.cond244, label %289, label %325

289:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #11
  %290 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %285)
  %291 = fmul float %290, 2.000000e+00
  %292 = load ptr, ptr %6, align 8, !tbaa !5
  %293 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %292)
  %294 = fmul float %293, 2.000000e+00
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef %291, float noundef %294)
  %295 = getelementptr inbounds i8, ptr %101, i64 8
  %296 = load float, ptr %295, align 8, !tbaa !62
  %297 = fcmp ogt float %296, 0.000000e+00
  br i1 %297, label %298, label %318

298:                                              ; preds = %289
  %299 = getelementptr inbounds i8, ptr %101, i64 12
  %300 = load float, ptr %299, align 4, !tbaa !63
  %301 = fcmp ogt float %300, 0.000000e+00
  br i1 %301, label %302, label %318

302:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #11
  %303 = load i64, ptr %13, align 8
  store i64 %303, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #11
  %304 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %295, ptr noundef nonnull align 4 dereferenceable(8) %13)
  store <2 x float> %304, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  %305 = load ptr, ptr %6, align 8, !tbaa !5
  %306 = getelementptr inbounds i8, ptr %305, i64 16
  %307 = getelementptr inbounds i8, ptr %305, i64 32
  %308 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %306, ptr noundef nonnull align 4 dereferenceable(8) %307)
  store <2 x float> %308, ptr %17, align 8
  %309 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %17, ptr noundef nonnull align 4 dereferenceable(8) %14)
  store <2 x float> %309, ptr %16, align 8
  %310 = load ptr, ptr %6, align 8, !tbaa !5
  %311 = getelementptr inbounds i8, ptr %310, i64 32
  %312 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %311)
  %313 = load ptr, ptr %6, align 8, !tbaa !5
  %314 = getelementptr inbounds i8, ptr %313, i64 16
  store <2 x float> %312, ptr %314, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #11
  %315 = call <2 x float> @_ZL5ImMinRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %314, ptr noundef nonnull align 4 dereferenceable(8) %15)
  %316 = load ptr, ptr %6, align 8, !tbaa !5
  %317 = getelementptr inbounds i8, ptr %316, i64 16
  store <2 x float> %315, ptr %317, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  br label %318

318:                                              ; preds = %302, %298, %289
  %319 = load ptr, ptr %6, align 8, !tbaa !5
  %320 = getelementptr inbounds i8, ptr %319, i64 40
  %321 = getelementptr inbounds i8, ptr %101, i64 2972
  %322 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %320, ptr noundef nonnull align 4 dereferenceable(8) %321)
  %323 = load ptr, ptr %6, align 8, !tbaa !5
  %324 = getelementptr inbounds i8, ptr %323, i64 40
  store <2 x float> %322, ptr %324, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  br label %325

325:                                              ; preds = %318, %284
  %326 = phi ptr [ %323, %318 ], [ %285, %284 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #11
  %327 = getelementptr inbounds i8, ptr %326, i64 16
  %328 = load float, ptr %327, align 8, !tbaa !68
  %329 = fptosi float %328 to i32
  %330 = sitofp i32 %329 to float
  %331 = getelementptr inbounds i8, ptr %326, i64 20
  %332 = load float, ptr %331, align 4, !tbaa !69
  %333 = fptosi float %332 to i32
  %334 = sitofp i32 %333 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %18, float noundef %330, float noundef %334)
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = getelementptr inbounds i8, ptr %335, i64 24
  %337 = load i64, ptr %18, align 8
  store i64 %337, ptr %336, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  %338 = getelementptr inbounds i8, ptr %335, i64 32
  %339 = load float, ptr %338, align 8, !tbaa !70
  %340 = fcmp ogt float %339, 0.000000e+00
  br i1 %340, label %341, label %349

341:                                              ; preds = %325
  %342 = getelementptr inbounds i8, ptr %335, i64 12
  %343 = load i32, ptr %342, align 4, !tbaa !32
  %344 = and i32 %343, 8256
  %or.cond245 = icmp eq i32 %344, 0
  br i1 %or.cond245, label %345, label %349

345:                                              ; preds = %341
  %346 = fmul float %339, 0x3FE4CCCCC0000000
  %347 = fptosi float %346 to i32
  %348 = sitofp i32 %347 to float
  br label %349

349:                                              ; preds = %325, %341, %345
  %.sink = phi float [ %348, %345 ], [ 2.000000e+02, %341 ], [ 2.000000e+02, %325 ]
  %350 = getelementptr inbounds i8, ptr %335, i64 404
  store float %.sink, ptr %350, align 4, !tbaa !71
  %351 = getelementptr inbounds i8, ptr %335, i64 472
  %352 = load i32, ptr %351, align 8, !tbaa !72
  %353 = icmp eq i32 %352, 2147483647
  br i1 %353, label %362, label %354

354:                                              ; preds = %349
  %355 = getelementptr inbounds i8, ptr %335, i64 456
  %356 = load i32, ptr %355, align 8, !tbaa !73
  %357 = icmp eq i32 %356, -1
  br i1 %357, label %362, label %358

358:                                              ; preds = %354
  %359 = add nuw nsw i32 %356, 1
  %360 = add nsw i32 %359, %352
  %361 = srem i32 %360, %359
  br label %362

362:                                              ; preds = %349, %354, %358
  %.sink272 = phi i32 [ %361, %358 ], [ 2147483647, %354 ], [ 2147483647, %349 ]
  %363 = getelementptr inbounds i8, ptr %335, i64 464
  store i32 %.sink272, ptr %363, align 8, !tbaa !74
  %364 = getelementptr inbounds i8, ptr %335, i64 476
  %365 = load i32, ptr %364, align 4, !tbaa !75
  %366 = icmp eq i32 %365, 2147483647
  br i1 %366, label %375, label %367

367:                                              ; preds = %362
  %368 = getelementptr inbounds i8, ptr %335, i64 460
  %369 = load i32, ptr %368, align 4, !tbaa !76
  %370 = icmp eq i32 %369, -1
  br i1 %370, label %375, label %371

371:                                              ; preds = %367
  %372 = add nuw nsw i32 %369, 1
  %373 = add nsw i32 %372, %365
  %374 = srem i32 %373, %372
  br label %375

375:                                              ; preds = %362, %367, %371
  %.sink274 = phi i32 [ %374, %371 ], [ 2147483647, %367 ], [ 2147483647, %362 ]
  %376 = getelementptr inbounds i8, ptr %335, i64 468
  store i32 %.sink274, ptr %376, align 4, !tbaa !77
  %377 = getelementptr inbounds i8, ptr %335, i64 460
  store i32 -1, ptr %377, align 4, !tbaa !76
  %378 = getelementptr inbounds i8, ptr %335, i64 456
  store i32 -1, ptr %378, align 8, !tbaa !73
  store i32 2147483647, ptr %364, align 4, !tbaa !75
  store i32 2147483647, ptr %351, align 8, !tbaa !72
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #11
  %379 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarAabbEv(ptr noundef nonnull align 8 dereferenceable(480) %335)
  %380 = extractvalue { <2 x float>, <2 x float> } %379, 0
  store <2 x float> %380, ptr %19, align 8
  %381 = getelementptr inbounds i8, ptr %19, i64 8
  %382 = extractvalue { <2 x float>, <2 x float> } %379, 1
  store <2 x float> %382, ptr %381, align 8
  %383 = load ptr, ptr %6, align 8, !tbaa !5
  %384 = getelementptr inbounds i8, ptr %383, i64 60
  %385 = load float, ptr %384, align 4, !tbaa !78
  %386 = getelementptr inbounds i8, ptr %383, i64 56
  store float %385, ptr %386, align 8, !tbaa !79
  %387 = call noundef float @_ZL5ImMaxff(float noundef %385, float noundef 0.000000e+00)
  %388 = load ptr, ptr %6, align 8, !tbaa !5
  %389 = getelementptr inbounds i8, ptr %388, i64 56
  store float %387, ptr %389, align 8, !tbaa !79
  %390 = getelementptr inbounds i8, ptr %388, i64 67
  %391 = load i8, ptr %390, align 1, !tbaa !80, !range !30, !noundef !31
  %392 = trunc nuw i8 %391 to i1
  br i1 %392, label %407, label %393

393:                                              ; preds = %375
  %394 = getelementptr inbounds i8, ptr %388, i64 68
  %395 = load i8, ptr %394, align 4, !tbaa !81, !range !30, !noundef !31
  %396 = trunc nuw i8 %395 to i1
  br i1 %396, label %407, label %397

397:                                              ; preds = %393
  %398 = getelementptr inbounds i8, ptr %388, i64 52
  %399 = load float, ptr %398, align 4, !tbaa !82
  %400 = getelementptr inbounds i8, ptr %388, i64 44
  %401 = load float, ptr %400, align 4, !tbaa !83
  %402 = fsub float %399, %401
  %403 = call noundef float @_ZL5ImMaxff(float noundef 0.000000e+00, float noundef %402)
  %404 = call noundef float @_ZL5ImMinff(float noundef %387, float noundef %403)
  %405 = load ptr, ptr %6, align 8, !tbaa !5
  %406 = getelementptr inbounds i8, ptr %405, i64 56
  store float %404, ptr %406, align 8, !tbaa !79
  br label %407

407:                                              ; preds = %397, %393, %375
  %408 = phi float [ %404, %397 ], [ %387, %393 ], [ %387, %375 ]
  %409 = phi ptr [ %405, %397 ], [ %388, %393 ], [ %388, %375 ]
  %410 = getelementptr inbounds i8, ptr %409, i64 60
  store float %408, ptr %410, align 4, !tbaa !78
  %411 = getelementptr inbounds i8, ptr %409, i64 12
  %412 = load i32, ptr %411, align 4, !tbaa !32
  %413 = and i32 %412, 1
  %.not220 = icmp eq i32 %413, 0
  br i1 %.not220, label %414, label %437

414:                                              ; preds = %407
  %415 = and i32 %412, 32
  %.not221 = icmp eq i32 %415, 0
  br i1 %.not221, label %416, label %439

416:                                              ; preds = %414
  %417 = getelementptr inbounds i8, ptr %101, i64 3768
  %418 = load ptr, ptr %417, align 8, !tbaa !84
  %419 = icmp eq ptr %418, %409
  br i1 %419, label %420, label %439

420:                                              ; preds = %416
  %421 = call noundef zeroext i1 @_ZL18IsMouseHoveringBoxRK9ImGuiAabb(ptr noundef nonnull align 4 dereferenceable(16) %19)
  br i1 %421, label %422, label %439

422:                                              ; preds = %420
  %423 = getelementptr inbounds i8, ptr %101, i64 876
  %424 = load i8, ptr %423, align 4, !tbaa !66, !range !30, !noundef !31
  %425 = trunc nuw i8 %424 to i1
  br i1 %425, label %426, label %439

426:                                              ; preds = %422
  %427 = load ptr, ptr %6, align 8, !tbaa !5
  %428 = getelementptr inbounds i8, ptr %427, i64 67
  %429 = load i8, ptr %428, align 1, !tbaa !80, !range !30, !noundef !31
  %430 = xor i8 %429, 1
  store i8 %430, ptr %428, align 1, !tbaa !80
  %431 = getelementptr inbounds i8, ptr %427, i64 12
  %432 = load i32, ptr %431, align 4, !tbaa !32
  %433 = and i32 %432, 256
  %.not222 = icmp eq i32 %433, 0
  br i1 %.not222, label %434, label %435

434:                                              ; preds = %426
  call void @_ZL17MarkSettingsDirtyv()
  %.pre247 = load ptr, ptr %6, align 8, !tbaa !5
  br label %435

435:                                              ; preds = %434, %426
  %436 = phi ptr [ %.pre247, %434 ], [ %427, %426 ]
  call void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef %436)
  br label %439

437:                                              ; preds = %407
  %438 = getelementptr inbounds i8, ptr %409, i64 67
  store i8 0, ptr %438, align 1, !tbaa !80
  br label %439

439:                                              ; preds = %414, %416, %420, %422, %435, %437
  %440 = load ptr, ptr %6, align 8, !tbaa !5
  %441 = getelementptr inbounds i8, ptr %440, i64 12
  %442 = load i32, ptr %441, align 4, !tbaa !32
  %443 = and i32 %442, 512
  %.not223 = icmp eq i32 %443, 0
  %.in.v = select i1 %.not223, i64 2980, i64 2984
  %.in = getelementptr inbounds i8, ptr %101, i64 %.in.v
  %444 = load float, ptr %.in, align 4, !tbaa !85
  %445 = getelementptr inbounds i8, ptr %440, i64 67
  %446 = load i8, ptr %445, align 1, !tbaa !80, !range !30, !noundef !31
  %447 = trunc nuw i8 %446 to i1
  br i1 %447, label %448, label %478

448:                                              ; preds = %439
  %449 = call <2 x float> @_ZNK9ImGuiAabb7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  %450 = load ptr, ptr %6, align 8, !tbaa !5
  %451 = getelementptr inbounds i8, ptr %450, i64 32
  store <2 x float> %449, ptr %451, align 8
  %452 = getelementptr inbounds i8, ptr %450, i64 440
  %453 = load ptr, ptr %452, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #11
  %454 = call <2 x float> @_ZNK9ImGuiAabb5GetTLEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  store <2 x float> %454, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #11
  %455 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  store <2 x float> %455, ptr %21, align 8
  %456 = load ptr, ptr %6, align 8, !tbaa !5
  %457 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %456, i32 noundef 7, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %453, ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(8) %21, i32 noundef %457, float noundef %444, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #11
  %458 = load ptr, ptr %6, align 8, !tbaa !5
  %459 = getelementptr inbounds i8, ptr %458, i64 12
  %460 = load i32, ptr %459, align 4, !tbaa !32
  %461 = and i32 %460, 128
  %.not238 = icmp eq i32 %461, 0
  br i1 %.not238, label %831, label %462

462:                                              ; preds = %448
  %463 = getelementptr inbounds i8, ptr %458, i64 440
  %464 = load ptr, ptr %463, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #11
  %465 = call <2 x float> @_ZNK9ImGuiAabb5GetTLEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  store <2 x float> %465, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %24, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %466 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %23, ptr noundef nonnull align 4 dereferenceable(8) %24)
  store <2 x float> %466, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #11
  %467 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  store <2 x float> %467, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %468 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %27)
  store <2 x float> %468, ptr %25, align 8
  %469 = load ptr, ptr %6, align 8, !tbaa !5
  %470 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %469, i32 noundef 4, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %464, ptr noundef nonnull align 4 dereferenceable(8) %22, ptr noundef nonnull align 4 dereferenceable(8) %25, i32 noundef %470, float noundef %444, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #11
  %471 = load ptr, ptr %6, align 8, !tbaa !5
  %472 = getelementptr inbounds i8, ptr %471, i64 440
  %473 = load ptr, ptr %472, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #11
  %474 = call <2 x float> @_ZNK9ImGuiAabb5GetTLEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  store <2 x float> %474, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #11
  %475 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  store <2 x float> %475, ptr %29, align 8
  %476 = load ptr, ptr %6, align 8, !tbaa !5
  %477 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %476, i32 noundef 3, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %473, ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef %477, float noundef %444, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #11
  br label %831

478:                                              ; preds = %439
  %479 = getelementptr inbounds i8, ptr %440, i64 40
  %480 = getelementptr inbounds i8, ptr %440, i64 32
  %481 = load i64, ptr %479, align 8
  store i64 %481, ptr %480, align 8
  %482 = and i32 %442, 8192
  %.not224 = icmp eq i32 %482, 0
  br i1 %.not224, label %492, label %483

483:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #11
  %484 = getelementptr inbounds i8, ptr %440, i64 48
  %485 = getelementptr inbounds i8, ptr %101, i64 2964
  %486 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %484, ptr noundef nonnull align 4 dereferenceable(8) %485)
  store <2 x float> %486, ptr %30, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #11
  %487 = getelementptr inbounds i8, ptr %101, i64 3004
  %488 = load float, ptr %487, align 4, !tbaa !86
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef 0.000000e+00, float noundef %488)
  %489 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %31)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #11
  %490 = load ptr, ptr %6, align 8, !tbaa !5
  %491 = getelementptr inbounds i8, ptr %490, i64 40
  store <2 x float> %489, ptr %491, align 8
  br label %584

492:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #11
  %493 = getelementptr inbounds i8, ptr %440, i64 48
  %494 = getelementptr inbounds i8, ptr %101, i64 3024
  %495 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %493, ptr noundef nonnull align 4 dereferenceable(8) %494)
  store <2 x float> %495, ptr %33, align 8
  %496 = getelementptr inbounds i8, ptr %101, i64 2972
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #11
  %497 = getelementptr inbounds i8, ptr %101, i64 8
  %498 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %497, ptr noundef nonnull align 4 dereferenceable(8) %494)
  store <2 x float> %498, ptr %34, align 8
  %499 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %496, ptr noundef nonnull align 4 dereferenceable(8) %34)
  %500 = call <2 x float> @_ZL7ImClampRK6ImVec2S1_S_(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %496, <2 x float> %499)
  store <2 x float> %500, ptr %32, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #11
  %501 = load ptr, ptr %6, align 8, !tbaa !5
  %502 = getelementptr inbounds i8, ptr %501, i64 12
  %503 = load i32, ptr %502, align 4, !tbaa !32
  %504 = and i32 %503, 64
  %.not225 = icmp eq i32 %504, 0
  br i1 %.not225, label %507, label %505

505:                                              ; preds = %492
  %506 = getelementptr inbounds i8, ptr %501, i64 40
  store <2 x float> %500, ptr %506, align 8
  br label %579

507:                                              ; preds = %492
  %508 = getelementptr inbounds i8, ptr %501, i64 72
  %509 = load i32, ptr %508, align 8, !tbaa !87
  %510 = icmp sgt i32 %509, 0
  br i1 %510, label %511, label %525

511:                                              ; preds = %507
  %512 = getelementptr inbounds i8, ptr %501, i64 76
  %513 = load i8, ptr %512, align 4, !tbaa !88, !range !30, !noundef !31
  %514 = trunc nuw i8 %513 to i1
  %515 = getelementptr inbounds i8, ptr %501, i64 40
  br i1 %514, label %516, label %520

516:                                              ; preds = %511
  %517 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %515, ptr noundef nonnull align 4 dereferenceable(8) %32)
  %518 = load ptr, ptr %6, align 8, !tbaa !5
  %519 = getelementptr inbounds i8, ptr %518, i64 40
  store <2 x float> %517, ptr %519, align 8
  %.phi.trans.insert = getelementptr inbounds i8, ptr %518, i64 12
  %.pre249 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !32
  br label %521

520:                                              ; preds = %511
  store <2 x float> %500, ptr %515, align 8
  br label %521

521:                                              ; preds = %520, %516
  %522 = phi i32 [ %503, %520 ], [ %.pre249, %516 ]
  %523 = and i32 %522, 256
  %.not229 = icmp eq i32 %523, 0
  br i1 %.not229, label %524, label %579

524:                                              ; preds = %521
  call void @_ZL17MarkSettingsDirtyv()
  br label %579

525:                                              ; preds = %507
  %526 = and i32 %503, 2
  %.not226 = icmp eq i32 %526, 0
  br i1 %.not226, label %527, label %579

527:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #11
  %528 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %501)
  %529 = extractvalue { <2 x float>, <2 x float> } %528, 0
  store <2 x float> %529, ptr %38, align 8
  %530 = getelementptr inbounds i8, ptr %38, i64 8
  %531 = extractvalue { <2 x float>, <2 x float> } %528, 1
  store <2 x float> %531, ptr %530, align 8
  %532 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %38)
  store <2 x float> %532, ptr %37, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 1.800000e+01, float noundef 1.800000e+01)
  %533 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %39)
  store <2 x float> %533, ptr %36, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #11
  %534 = load ptr, ptr %6, align 8, !tbaa !5
  %535 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %534)
  %536 = extractvalue { <2 x float>, <2 x float> } %535, 0
  store <2 x float> %536, ptr %41, align 8
  %537 = getelementptr inbounds i8, ptr %41, i64 8
  %538 = extractvalue { <2 x float>, <2 x float> } %535, 1
  store <2 x float> %538, ptr %537, align 8
  %539 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %41)
  store <2 x float> %539, ptr %40, align 8
  call void @_ZN9ImGuiAabbC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %35, ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %40)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #11
  %540 = load ptr, ptr %6, align 8, !tbaa !5
  %541 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %540, ptr noundef nonnull @.str.33)
  store i32 %541, ptr %42, align 4, !tbaa !64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #11
  %542 = call noundef zeroext i1 @_ZL15ButtonBehaviourRK9ImGuiAabbRKjPbS4_bbb(ptr noundef nonnull align 4 dereferenceable(16) %35, ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef nonnull %43, ptr noundef nonnull %44, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext false)
  %543 = load ptr, ptr %6, align 8, !tbaa !5
  %544 = load i8, ptr %44, align 1, !tbaa !66, !range !30, !noundef !31
  %545 = trunc nuw i8 %544 to i1
  %546 = load i8, ptr %43, align 1, !range !30
  %547 = trunc nuw i8 %546 to i1
  %548 = select i1 %547, i32 28, i32 27
  %549 = select i1 %545, i32 29, i32 %548
  %550 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %543, i32 noundef %549, float noundef 1.000000e+00)
  %551 = getelementptr inbounds i8, ptr %101, i64 3768
  %552 = load ptr, ptr %551, align 8, !tbaa !84
  %553 = load ptr, ptr %6, align 8, !tbaa !5
  %554 = icmp eq ptr %552, %553
  %.pre248 = load i8, ptr %44, align 1, !tbaa !66, !range !30
  %555 = trunc nuw i8 %.pre248 to i1
  br i1 %554, label %556, label %568

556:                                              ; preds = %527
  br i1 %555, label %557, label %.thread269

557:                                              ; preds = %556
  %558 = getelementptr inbounds i8, ptr %101, i64 876
  %559 = load i8, ptr %558, align 4, !tbaa !66, !range !30, !noundef !31
  %560 = trunc nuw i8 %559 to i1
  br i1 %560, label %561, label %.thread

561:                                              ; preds = %557
  %562 = getelementptr inbounds i8, ptr %553, i64 40
  %563 = load i64, ptr %32, align 8
  store i64 %563, ptr %562, align 8
  %564 = getelementptr inbounds i8, ptr %553, i64 32
  store i64 %563, ptr %564, align 8
  %565 = getelementptr inbounds i8, ptr %553, i64 12
  %566 = load i32, ptr %565, align 4, !tbaa !32
  %567 = and i32 %566, 256
  %.not228 = icmp eq i32 %567, 0
  br i1 %.not228, label %.thread269.sink.split, label %.thread269

568:                                              ; preds = %527
  br i1 %555, label %.thread, label %.thread269

.thread:                                          ; preds = %557, %568
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #11
  %569 = getelementptr inbounds i8, ptr %553, i64 40
  %570 = getelementptr inbounds i8, ptr %101, i64 800
  %571 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %569, ptr noundef nonnull align 4 dereferenceable(8) %570)
  store <2 x float> %571, ptr %45, align 8
  %572 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %45, ptr noundef nonnull align 4 dereferenceable(8) %496)
  %573 = load ptr, ptr %6, align 8, !tbaa !5
  %574 = getelementptr inbounds i8, ptr %573, i64 40
  store <2 x float> %572, ptr %574, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #11
  %575 = getelementptr inbounds i8, ptr %573, i64 32
  store <2 x float> %572, ptr %575, align 8
  %576 = getelementptr inbounds i8, ptr %573, i64 12
  %577 = load i32, ptr %576, align 4, !tbaa !32
  %578 = and i32 %577, 256
  %.not227 = icmp eq i32 %578, 0
  br i1 %.not227, label %.thread269.sink.split, label %.thread269

.thread269.sink.split:                            ; preds = %.thread, %561
  call void @_ZL17MarkSettingsDirtyv()
  br label %.thread269

.thread269:                                       ; preds = %.thread269.sink.split, %556, %568, %.thread, %561
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #11
  br label %579

579:                                              ; preds = %524, %521, %.thread269, %525, %505
  %.0186 = phi i32 [ 0, %505 ], [ 0, %521 ], [ 0, %524 ], [ 0, %525 ], [ %550, %.thread269 ]
  %580 = load ptr, ptr %6, align 8, !tbaa !5
  %581 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarAabbEv(ptr noundef nonnull align 8 dereferenceable(480) %580)
  %582 = extractvalue { <2 x float>, <2 x float> } %581, 0
  %583 = extractvalue { <2 x float>, <2 x float> } %581, 1
  store <2 x float> %582, ptr %19, align 8
  store <2 x float> %583, ptr %381, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #11
  %.pre250 = load ptr, ptr %6, align 8, !tbaa !5
  br label %584

584:                                              ; preds = %579, %483
  %585 = phi ptr [ %490, %483 ], [ %.pre250, %579 ]
  %.1 = phi i32 [ 0, %483 ], [ %.0186, %579 ]
  %586 = getelementptr inbounds i8, ptr %585, i64 52
  %587 = load float, ptr %586, align 4, !tbaa !82
  %588 = getelementptr inbounds i8, ptr %585, i64 36
  %589 = load float, ptr %588, align 4, !tbaa !89
  %590 = fcmp ogt float %587, %589
  br i1 %590, label %591, label %595

591:                                              ; preds = %584
  %592 = getelementptr inbounds i8, ptr %585, i64 12
  %593 = load i32, ptr %592, align 4, !tbaa !32
  %594 = and i32 %593, 8
  %.not230 = icmp eq i32 %594, 0
  br label %595

595:                                              ; preds = %591, %584
  %596 = phi i1 [ false, %584 ], [ %.not230, %591 ]
  %597 = getelementptr inbounds i8, ptr %585, i64 64
  %598 = zext i1 %596 to i8
  store i8 %598, ptr %597, align 8, !tbaa !90
  %599 = fcmp ogt float %.0, 0.000000e+00
  br i1 %599, label %600, label %652

600:                                              ; preds = %595
  %601 = getelementptr inbounds i8, ptr %585, i64 12
  %602 = load i32, ptr %601, align 4, !tbaa !32
  %603 = and i32 %602, 4096
  %.not231 = icmp eq i32 %603, 0
  br i1 %.not231, label %612, label %604

604:                                              ; preds = %600
  %605 = getelementptr inbounds i8, ptr %585, i64 440
  %606 = load ptr, ptr %605, align 8, !tbaa !51
  %607 = getelementptr inbounds i8, ptr %585, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #11
  %608 = getelementptr inbounds i8, ptr %585, i64 32
  %609 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %607, ptr noundef nonnull align 4 dereferenceable(8) %608)
  store <2 x float> %609, ptr %46, align 8
  %610 = load ptr, ptr %6, align 8, !tbaa !5
  %611 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %610, i32 noundef 12, float noundef %.0)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %606, ptr noundef nonnull align 4 dereferenceable(8) %607, ptr noundef nonnull align 4 dereferenceable(8) %46, i32 noundef %611, float noundef %444, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #11
  br label %652

612:                                              ; preds = %600
  %613 = and i32 %602, 8192
  %.not232 = icmp eq i32 %613, 0
  br i1 %.not232, label %622, label %614

614:                                              ; preds = %612
  %615 = getelementptr inbounds i8, ptr %585, i64 440
  %616 = load ptr, ptr %615, align 8, !tbaa !51
  %617 = getelementptr inbounds i8, ptr %585, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #11
  %618 = getelementptr inbounds i8, ptr %585, i64 32
  %619 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %617, ptr noundef nonnull align 4 dereferenceable(8) %618)
  store <2 x float> %619, ptr %47, align 8
  %620 = load ptr, ptr %6, align 8, !tbaa !5
  %621 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %620, i32 noundef 38, float noundef %.0)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %616, ptr noundef nonnull align 4 dereferenceable(8) %617, ptr noundef nonnull align 4 dereferenceable(8) %47, i32 noundef %621, float noundef %444, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #11
  br label %652

622:                                              ; preds = %612
  %623 = and i32 %602, 512
  %.not233 = icmp eq i32 %623, 0
  %624 = getelementptr inbounds i8, ptr %585, i64 440
  %625 = load ptr, ptr %624, align 8, !tbaa !51
  %626 = getelementptr inbounds i8, ptr %585, i64 24
  br i1 %.not233, label %647, label %627

627:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #11
  %628 = getelementptr inbounds i8, ptr %585, i64 32
  %629 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %626, ptr noundef nonnull align 4 dereferenceable(8) %628)
  store <2 x float> %629, ptr %49, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #11
  %630 = load ptr, ptr %6, align 8, !tbaa !5
  %631 = getelementptr inbounds i8, ptr %630, i64 64
  %632 = load i8, ptr %631, align 8, !tbaa !90, !range !30, !noundef !31
  %633 = trunc nuw i8 %632 to i1
  br i1 %633, label %634, label %637

634:                                              ; preds = %627
  %635 = getelementptr inbounds i8, ptr %101, i64 3044
  %636 = load float, ptr %635, align 4, !tbaa !91
  br label %637

637:                                              ; preds = %627, %634
  %638 = phi float [ %636, %634 ], [ 0.000000e+00, %627 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %50, float noundef %638, float noundef 0.000000e+00)
  %639 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(8) %50)
  store <2 x float> %639, ptr %48, align 8
  %640 = load ptr, ptr %6, align 8, !tbaa !5
  %641 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %640, i32 noundef 2, float noundef %.0)
  %642 = load ptr, ptr %6, align 8, !tbaa !5
  %643 = getelementptr inbounds i8, ptr %642, i64 64
  %644 = load i8, ptr %643, align 8, !tbaa !90, !range !30, !noundef !31
  %645 = trunc nuw i8 %644 to i1
  %646 = select i1 %645, i32 9, i32 15
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %625, ptr noundef nonnull align 4 dereferenceable(8) %626, ptr noundef nonnull align 4 dereferenceable(8) %48, i32 noundef %641, float noundef %444, i32 noundef %646)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #11
  br label %652

647:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #11
  %648 = getelementptr inbounds i8, ptr %585, i64 32
  %649 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %626, ptr noundef nonnull align 4 dereferenceable(8) %648)
  store <2 x float> %649, ptr %51, align 8
  %650 = load ptr, ptr %6, align 8, !tbaa !5
  %651 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %650, i32 noundef 1, float noundef %.0)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %625, ptr noundef nonnull align 4 dereferenceable(8) %626, ptr noundef nonnull align 4 dereferenceable(8) %51, i32 noundef %651, float noundef %444, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #11
  br label %652

652:                                              ; preds = %604, %637, %647, %614, %595
  %653 = load ptr, ptr %6, align 8, !tbaa !5
  %654 = getelementptr inbounds i8, ptr %653, i64 12
  %655 = load i32, ptr %654, align 4, !tbaa !32
  %656 = and i32 %655, 1
  %.not234 = icmp eq i32 %656, 0
  br i1 %.not234, label %657, label %664

657:                                              ; preds = %652
  %658 = getelementptr inbounds i8, ptr %653, i64 440
  %659 = load ptr, ptr %658, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #11
  %660 = call <2 x float> @_ZNK9ImGuiAabb5GetTLEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  store <2 x float> %660, ptr %52, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #11
  %661 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  store <2 x float> %661, ptr %53, align 8
  %662 = load ptr, ptr %6, align 8, !tbaa !5
  %663 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %662, i32 noundef 6, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %659, ptr noundef nonnull align 4 dereferenceable(8) %52, ptr noundef nonnull align 4 dereferenceable(8) %53, i32 noundef %663, float noundef %444, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #11
  %.pre251 = load ptr, ptr %6, align 8, !tbaa !5
  %.phi.trans.insert252 = getelementptr inbounds i8, ptr %.pre251, i64 12
  %.pre253 = load i32, ptr %.phi.trans.insert252, align 4, !tbaa !32
  br label %664

664:                                              ; preds = %657, %652
  %665 = phi i32 [ %.pre253, %657 ], [ %655, %652 ]
  %666 = phi ptr [ %.pre251, %657 ], [ %653, %652 ]
  %667 = and i32 %665, 128
  %.not235 = icmp eq i32 %667, 0
  br i1 %.not235, label %699, label %668

668:                                              ; preds = %664
  %669 = getelementptr inbounds i8, ptr %666, i64 440
  %670 = load ptr, ptr %669, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #11
  %671 = getelementptr inbounds i8, ptr %666, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %672 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %671, ptr noundef nonnull align 4 dereferenceable(8) %55)
  store <2 x float> %672, ptr %54, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #11
  %673 = load ptr, ptr %6, align 8, !tbaa !5
  %674 = getelementptr inbounds i8, ptr %673, i64 24
  %675 = getelementptr inbounds i8, ptr %673, i64 32
  %676 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %674, ptr noundef nonnull align 4 dereferenceable(8) %675)
  store <2 x float> %676, ptr %57, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %58, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %677 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %57, ptr noundef nonnull align 4 dereferenceable(8) %58)
  store <2 x float> %677, ptr %56, align 8
  %678 = load ptr, ptr %6, align 8, !tbaa !5
  %679 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %678, i32 noundef 4, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %670, ptr noundef nonnull align 4 dereferenceable(8) %54, ptr noundef nonnull align 4 dereferenceable(8) %56, i32 noundef %679, float noundef %444, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #11
  %680 = load ptr, ptr %6, align 8, !tbaa !5
  %681 = getelementptr inbounds i8, ptr %680, i64 440
  %682 = load ptr, ptr %681, align 8, !tbaa !51
  %683 = getelementptr inbounds i8, ptr %680, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #11
  %684 = getelementptr inbounds i8, ptr %680, i64 32
  %685 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %683, ptr noundef nonnull align 4 dereferenceable(8) %684)
  store <2 x float> %685, ptr %59, align 8
  %686 = load ptr, ptr %6, align 8, !tbaa !5
  %687 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %686, i32 noundef 3, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %682, ptr noundef nonnull align 4 dereferenceable(8) %683, ptr noundef nonnull align 4 dereferenceable(8) %59, i32 noundef %687, float noundef %444, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #11
  %688 = load ptr, ptr %6, align 8, !tbaa !5
  %689 = getelementptr inbounds i8, ptr %688, i64 12
  %690 = load i32, ptr %689, align 4, !tbaa !32
  %691 = and i32 %690, 1
  %.not236 = icmp eq i32 %691, 0
  br i1 %.not236, label %692, label %699

692:                                              ; preds = %668
  %693 = getelementptr inbounds i8, ptr %688, i64 440
  %694 = load ptr, ptr %693, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #11
  %695 = call <2 x float> @_ZNK9ImGuiAabb5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  store <2 x float> %695, ptr %60, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #11
  %696 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  store <2 x float> %696, ptr %61, align 8
  %697 = load ptr, ptr %6, align 8, !tbaa !5
  %698 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %697, i32 noundef 3, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_j(ptr noundef nonnull align 8 dereferenceable(104) %694, ptr noundef nonnull align 4 dereferenceable(8) %60, ptr noundef nonnull align 4 dereferenceable(8) %61, i32 noundef %698)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #11
  %.pre254 = load ptr, ptr %6, align 8, !tbaa !5
  br label %699

699:                                              ; preds = %668, %692, %664
  %700 = phi ptr [ %688, %668 ], [ %.pre254, %692 ], [ %666, %664 ]
  %701 = getelementptr inbounds i8, ptr %700, i64 64
  %702 = load i8, ptr %701, align 8, !tbaa !90, !range !30, !noundef !31
  %703 = trunc nuw i8 %702 to i1
  br i1 %703, label %704, label %796

704:                                              ; preds = %699
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %62) #11
  %705 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %700)
  %706 = extractvalue { <2 x float>, <2 x float> } %705, 1
  %.sroa.343.8.vec.extract = extractelement <2 x float> %706, i64 0
  %707 = getelementptr inbounds i8, ptr %101, i64 3044
  %708 = load float, ptr %707, align 4, !tbaa !91
  %709 = fsub float %.sroa.343.8.vec.extract, %708
  %710 = getelementptr inbounds i8, ptr %19, i64 12
  %711 = load float, ptr %710, align 4, !tbaa !92
  %712 = fadd float %711, 1.000000e+00
  %713 = load ptr, ptr %6, align 8, !tbaa !5
  %714 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %713)
  %715 = extractvalue { <2 x float>, <2 x float> } %714, 1
  %.sroa.341.8.vec.extract = extractelement <2 x float> %715, i64 0
  %716 = load ptr, ptr %6, align 8, !tbaa !5
  %717 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %716)
  %718 = extractvalue { <2 x float>, <2 x float> } %717, 1
  %.sroa.339.12.vec.extract = extractelement <2 x float> %718, i64 1
  %719 = fadd float %.sroa.339.12.vec.extract, -1.000000e+00
  call void @_ZN9ImGuiAabbC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %62, float noundef %709, float noundef %712, float noundef %.sroa.341.8.vec.extract, float noundef %719)
  %720 = load ptr, ptr %6, align 8, !tbaa !5
  %721 = getelementptr inbounds i8, ptr %720, i64 440
  %722 = load ptr, ptr %721, align 8, !tbaa !51
  %723 = getelementptr inbounds i8, ptr %62, i64 8
  %724 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %720, i32 noundef 8, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %722, ptr noundef nonnull align 4 dereferenceable(8) %62, ptr noundef nonnull align 4 dereferenceable(8) %723, i32 noundef %724, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %63, float noundef -3.000000e+00, float noundef -3.000000e+00)
  call void @_ZN9ImGuiAabb6ExpandERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(16) %62, ptr noundef nonnull align 4 dereferenceable(8) %63)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #11
  %725 = load ptr, ptr %6, align 8, !tbaa !5
  %726 = getelementptr inbounds i8, ptr %725, i64 36
  %727 = load float, ptr %726, align 4, !tbaa !89
  %728 = getelementptr inbounds i8, ptr %725, i64 52
  %729 = load float, ptr %728, align 4, !tbaa !82
  %730 = call noundef float @_ZL5ImMaxff(float noundef %729, float noundef %727)
  %731 = fdiv float %727, %730
  %732 = call noundef float @_ZL10ImSaturatef(float noundef %731)
  %733 = call noundef float @_ZNK9ImGuiAabb9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %62)
  %734 = fmul float %732, %733
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #11
  store i8 0, ptr %64, align 1, !tbaa !66
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %65) #11
  store i8 0, ptr %65, align 1, !tbaa !66
  %735 = fcmp olt float %732, 1.000000e+00
  %.pre256 = load ptr, ptr %6, align 8, !tbaa !5
  br i1 %735, label %736, label %765

736:                                              ; preds = %704
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %66) #11
  %737 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %.pre256, ptr noundef nonnull @.str.34)
  store i32 %737, ptr %66, align 4, !tbaa !64
  %738 = call noundef zeroext i1 @_ZL15ButtonBehaviourRK9ImGuiAabbRKjPbS4_bbb(ptr noundef nonnull align 4 dereferenceable(16) %62, ptr noundef nonnull align 4 dereferenceable(4) %66, ptr noundef nonnull %65, ptr noundef nonnull %64, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext false)
  %739 = load i8, ptr %64, align 1, !tbaa !66, !range !30, !noundef !31
  %740 = trunc nuw i8 %739 to i1
  br i1 %740, label %741, label %._crit_edge

._crit_edge:                                      ; preds = %736
  %.pre255.pre = load ptr, ptr %6, align 8, !tbaa !5
  br label %764

741:                                              ; preds = %736
  %742 = load i32, ptr %66, align 4, !tbaa !64
  %743 = getelementptr inbounds i8, ptr %101, i64 3784
  store i32 %742, ptr %743, align 8, !tbaa !93
  %744 = getelementptr inbounds i8, ptr %101, i64 220
  %745 = load float, ptr %744, align 4, !tbaa !94
  %746 = getelementptr inbounds i8, ptr %62, i64 4
  %747 = load float, ptr %746, align 4, !tbaa !95
  %748 = call float @llvm.fmuladd.f32(float %734, float 5.000000e-01, float %747)
  %749 = fsub float %745, %748
  %750 = call noundef float @_ZNK9ImGuiAabb9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %62)
  %751 = fsub float %750, %734
  %752 = fdiv float %749, %751
  %753 = call noundef float @_ZL10ImSaturatef(float noundef %752)
  %754 = fsub float 1.000000e+00, %732
  %755 = fmul float %754, %753
  %756 = load ptr, ptr %6, align 8, !tbaa !5
  %757 = getelementptr inbounds i8, ptr %756, i64 52
  %758 = load float, ptr %757, align 4, !tbaa !82
  %759 = fmul float %755, %758
  %760 = fptosi float %759 to i32
  %761 = sitofp i32 %760 to float
  %762 = getelementptr inbounds i8, ptr %756, i64 56
  store float %761, ptr %762, align 8, !tbaa !79
  %763 = getelementptr inbounds i8, ptr %756, i64 60
  store float %761, ptr %763, align 4, !tbaa !78
  br label %764

764:                                              ; preds = %._crit_edge, %741
  %.pre255 = phi ptr [ %.pre255.pre, %._crit_edge ], [ %756, %741 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #11
  br label %765

765:                                              ; preds = %764, %704
  %766 = phi ptr [ %.pre255, %764 ], [ %.pre256, %704 ]
  %767 = getelementptr inbounds i8, ptr %766, i64 56
  %768 = load float, ptr %767, align 8, !tbaa !79
  %769 = getelementptr inbounds i8, ptr %766, i64 52
  %770 = load float, ptr %769, align 4, !tbaa !82
  %771 = call noundef float @_ZL5ImMaxff(float noundef 0.000000e+00, float noundef %770)
  %772 = fdiv float %768, %771
  %773 = call noundef float @_ZL10ImSaturatef(float noundef %772)
  %774 = load ptr, ptr %6, align 8, !tbaa !5
  %775 = load i8, ptr %64, align 1, !tbaa !66, !range !30, !noundef !31
  %776 = trunc nuw i8 %775 to i1
  %777 = load i8, ptr %65, align 1, !range !30
  %778 = trunc nuw i8 %777 to i1
  %779 = select i1 %778, i32 10, i32 9
  %780 = select i1 %776, i32 11, i32 %779
  %781 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %774, i32 noundef %780, float noundef 1.000000e+00)
  %782 = load ptr, ptr %6, align 8, !tbaa !5
  %783 = getelementptr inbounds i8, ptr %782, i64 440
  %784 = load ptr, ptr %783, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #11
  %785 = load float, ptr %62, align 4, !tbaa !96
  %786 = getelementptr inbounds i8, ptr %62, i64 4
  %787 = load float, ptr %786, align 4, !tbaa !95
  %788 = getelementptr inbounds i8, ptr %62, i64 12
  %789 = load float, ptr %788, align 4, !tbaa !92
  %790 = call noundef float @_ZL6ImLerpfff(float noundef %787, float noundef %789, float noundef %773)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %67, float noundef %785, float noundef %790)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #11
  %791 = load float, ptr %723, align 4, !tbaa !97
  %792 = load float, ptr %786, align 4, !tbaa !95
  %793 = load float, ptr %788, align 4, !tbaa !92
  %794 = fadd float %732, %773
  %795 = call noundef float @_ZL6ImLerpfff(float noundef %792, float noundef %793, float noundef %794)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %68, float noundef %791, float noundef %795)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %784, ptr noundef nonnull align 4 dereferenceable(8) %67, ptr noundef nonnull align 4 dereferenceable(8) %68, i32 noundef %781, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #11
  %.pre257 = load ptr, ptr %6, align 8, !tbaa !5
  br label %796

796:                                              ; preds = %765, %699
  %797 = phi ptr [ %.pre257, %765 ], [ %700, %699 ]
  %798 = getelementptr inbounds i8, ptr %797, i64 12
  %799 = load i32, ptr %798, align 4, !tbaa !32
  %800 = and i32 %799, 2
  %.not237 = icmp eq i32 %800, 0
  br i1 %.not237, label %801, label %831

801:                                              ; preds = %796
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #11
  %802 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %797)
  %803 = extractvalue { <2 x float>, <2 x float> } %802, 0
  store <2 x float> %803, ptr %70, align 8
  %804 = getelementptr inbounds i8, ptr %70, i64 8
  %805 = extractvalue { <2 x float>, <2 x float> } %802, 1
  store <2 x float> %805, ptr %804, align 8
  %806 = call <2 x float> @_ZNK9ImGuiAabb5GetBREv(ptr noundef nonnull align 4 dereferenceable(16) %70)
  store <2 x float> %806, ptr %69, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #11
  %807 = fcmp oeq float %444, 0.000000e+00
  %808 = load ptr, ptr %6, align 8, !tbaa !5
  %809 = getelementptr inbounds i8, ptr %808, i64 440
  %810 = load ptr, ptr %809, align 8, !tbaa !51
  br i1 %807, label %811, label %814

811:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %72, float noundef 0.000000e+00, float noundef 1.400000e+01)
  %812 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %72)
  store <2 x float> %812, ptr %71, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %74, float noundef 1.400000e+01, float noundef 0.000000e+00)
  %813 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %74)
  store <2 x float> %813, ptr %73, align 8
  call void @_ZN10ImDrawList17AddTriangleFilledERK6ImVec2S2_S2_j(ptr noundef nonnull align 8 dereferenceable(104) %810, ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %71, ptr noundef nonnull align 4 dereferenceable(8) %73, i32 noundef %.1)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #11
  br label %830

814:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %76, float noundef %444, float noundef %444)
  %815 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %76)
  store <2 x float> %815, ptr %75, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %77, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @_ZN10ImDrawList6AddArcERK6ImVec2fjiibS2_(ptr noundef nonnull align 8 dereferenceable(104) %810, ptr noundef nonnull align 4 dereferenceable(8) %75, float noundef %444, i32 noundef %.1, i32 noundef 6, i32 noundef 9, i1 noundef zeroext true, ptr noundef nonnull align 4 dereferenceable(8) %77)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #11
  %816 = load ptr, ptr %6, align 8, !tbaa !5
  %817 = getelementptr inbounds i8, ptr %816, i64 440
  %818 = load ptr, ptr %817, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #11
  %819 = fmul float %444, -2.000000e+00
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %79, float noundef 0.000000e+00, float noundef %819)
  %820 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %79)
  store <2 x float> %820, ptr %78, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #11
  %821 = fneg float %444
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %81, float noundef 0.000000e+00, float noundef %821)
  %822 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %81)
  store <2 x float> %822, ptr %80, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %83, float noundef %821, float noundef %821)
  %823 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %83)
  store <2 x float> %823, ptr %82, align 8
  call void @_ZN10ImDrawList17AddTriangleFilledERK6ImVec2S2_S2_j(ptr noundef nonnull align 8 dereferenceable(104) %818, ptr noundef nonnull align 4 dereferenceable(8) %78, ptr noundef nonnull align 4 dereferenceable(8) %80, ptr noundef nonnull align 4 dereferenceable(8) %82, i32 noundef %.1)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #11
  %824 = load ptr, ptr %6, align 8, !tbaa !5
  %825 = getelementptr inbounds i8, ptr %824, i64 440
  %826 = load ptr, ptr %825, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %85) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %85, float noundef %821, float noundef %821)
  %827 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %85)
  store <2 x float> %827, ptr %84, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %87) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %87, float noundef %821, float noundef 0.000000e+00)
  %828 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %87)
  store <2 x float> %828, ptr %86, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %89, float noundef %819, float noundef 0.000000e+00)
  %829 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef nonnull align 4 dereferenceable(8) %89)
  store <2 x float> %829, ptr %88, align 8
  call void @_ZN10ImDrawList17AddTriangleFilledERK6ImVec2S2_S2_j(ptr noundef nonnull align 8 dereferenceable(104) %826, ptr noundef nonnull align 4 dereferenceable(8) %84, ptr noundef nonnull align 4 dereferenceable(8) %86, ptr noundef nonnull align 4 dereferenceable(8) %88, i32 noundef %.1)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #11
  br label %830

830:                                              ; preds = %814, %811
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #11
  br label %831

831:                                              ; preds = %796, %830, %448, %462
  %832 = load ptr, ptr %6, align 8, !tbaa !5
  %833 = call <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480) %832)
  %.sroa.017.0.vec.extract = extractelement <2 x float> %833, i64 0
  %834 = load ptr, ptr %6, align 8, !tbaa !5
  %835 = getelementptr inbounds i8, ptr %834, i64 272
  store float %.sroa.017.0.vec.extract, ptr %835, align 8, !tbaa !98
  %836 = getelementptr inbounds i8, ptr %834, i64 276
  store float 0.000000e+00, ptr %836, align 4, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #11
  %837 = getelementptr inbounds i8, ptr %834, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #11
  %838 = fadd float %.sroa.017.0.vec.extract, 0.000000e+00
  %839 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(480) %834)
  %840 = load ptr, ptr %6, align 8, !tbaa !5
  %841 = call <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480) %840)
  %.sroa.015.4.vec.extract = extractelement <2 x float> %841, i64 1
  %842 = fadd float %839, %.sroa.015.4.vec.extract
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %91, float noundef %838, float noundef %842)
  %843 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %837, ptr noundef nonnull align 4 dereferenceable(8) %91)
  store <2 x float> %843, ptr %90, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #11
  %844 = load ptr, ptr %6, align 8, !tbaa !5
  %845 = getelementptr inbounds i8, ptr %844, i64 56
  %846 = load float, ptr %845, align 8, !tbaa !79
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %92, float noundef 0.000000e+00, float noundef %846)
  %847 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %90, ptr noundef nonnull align 4 dereferenceable(8) %92)
  %848 = load ptr, ptr %6, align 8, !tbaa !5
  %849 = getelementptr inbounds i8, ptr %848, i64 112
  store <2 x float> %847, ptr %849, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #11
  %850 = getelementptr inbounds i8, ptr %848, i64 96
  store <2 x float> %847, ptr %850, align 8
  %851 = getelementptr inbounds i8, ptr %848, i64 104
  store <2 x float> %847, ptr %851, align 8
  %852 = getelementptr inbounds i8, ptr %848, i64 120
  store <2 x float> zeroinitializer, ptr %852, align 8, !tbaa !85
  %853 = extractelement <2 x float> %847, i64 1
  %854 = fadd float %853, -9.999000e+03
  %855 = getelementptr inbounds i8, ptr %848, i64 128
  store float %854, ptr %855, align 8, !tbaa !100
  %856 = getelementptr inbounds i8, ptr %848, i64 160
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %856, i64 noundef 0)
  %857 = load ptr, ptr %6, align 8, !tbaa !5
  %858 = getelementptr inbounds i8, ptr %857, i64 208
  call void @_ZN8ImVectorIfE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %858, i64 noundef 0)
  %859 = load ptr, ptr %6, align 8, !tbaa !5
  %860 = getelementptr inbounds i8, ptr %859, i64 208
  %861 = getelementptr inbounds i8, ptr %859, i64 404
  call void @_ZN8ImVectorIfE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %860, ptr noundef nonnull align 4 dereferenceable(4) %861)
  %862 = load ptr, ptr %6, align 8, !tbaa !5
  %863 = getelementptr inbounds i8, ptr %862, i64 184
  call void @_ZN8ImVectorIbE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %863, i64 noundef 0)
  %864 = load ptr, ptr %6, align 8, !tbaa !5
  %865 = getelementptr inbounds i8, ptr %864, i64 184
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %93) #11
  store i8 1, ptr %93, align 1, !tbaa !66
  call void @_ZN8ImVectorIbE9push_backERKb(ptr noundef nonnull align 8 dereferenceable(24) %865, ptr noundef nonnull align 1 dereferenceable(1) %93)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #11
  %866 = load ptr, ptr %6, align 8, !tbaa !5
  %867 = getelementptr inbounds i8, ptr %866, i64 232
  call void @_ZN8ImVectorIfE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %867, i64 noundef 0)
  %868 = load ptr, ptr %6, align 8, !tbaa !5
  %869 = getelementptr inbounds i8, ptr %868, i64 232
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %94) #11
  store float -1.000000e+00, ptr %94, align 4, !tbaa !85
  call void @_ZN8ImVectorIfE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %869, ptr noundef nonnull align 4 dereferenceable(4) %94)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %94) #11
  %870 = load ptr, ptr %6, align 8, !tbaa !5
  %871 = getelementptr inbounds i8, ptr %870, i64 256
  store i32 -2, ptr %871, align 8, !tbaa !101
  %872 = getelementptr inbounds i8, ptr %870, i64 280
  store i32 0, ptr %872, align 8, !tbaa !102
  %873 = getelementptr inbounds i8, ptr %870, i64 284
  store i32 1, ptr %873, align 4, !tbaa !103
  %874 = getelementptr inbounds i8, ptr %870, i64 96
  %875 = getelementptr inbounds i8, ptr %870, i64 288
  %876 = load i64, ptr %874, align 8
  store i64 %876, ptr %875, align 8
  %877 = lshr i64 %876, 32
  %878 = trunc nuw i64 %877 to i32
  %879 = getelementptr inbounds i8, ptr %870, i64 300
  store i32 %878, ptr %879, align 4, !tbaa !104
  %880 = getelementptr inbounds i8, ptr %870, i64 296
  store i32 %878, ptr %880, align 8, !tbaa !105
  %881 = getelementptr inbounds i8, ptr %870, i64 132
  store i32 0, ptr %881, align 4, !tbaa !106
  %882 = getelementptr inbounds i8, ptr %870, i64 408
  %883 = getelementptr inbounds i8, ptr %870, i64 264
  store ptr %882, ptr %883, align 8, !tbaa !107
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %95) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %95, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %884 = load ptr, ptr %6, align 8, !tbaa !5
  %885 = getelementptr inbounds i8, ptr %884, i64 48
  %886 = load i64, ptr %95, align 8
  store i64 %886, ptr %885, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #11
  %887 = getelementptr inbounds i8, ptr %884, i64 72
  %888 = load i32, ptr %887, align 8, !tbaa !87
  %889 = icmp sgt i32 %888, 0
  br i1 %889, label %890, label %892

890:                                              ; preds = %831
  %891 = add nsw i32 %888, -1
  store i32 %891, ptr %887, align 8, !tbaa !87
  br label %892

892:                                              ; preds = %890, %831
  %893 = getelementptr inbounds i8, ptr %884, i64 12
  %894 = load i32, ptr %893, align 4, !tbaa !32
  %895 = and i32 %894, 1
  %.not239 = icmp eq i32 %895, 0
  br i1 %.not239, label %896, label %941

896:                                              ; preds = %892
  %.not240 = icmp eq ptr %1, null
  br i1 %.not240, label %899, label %897

897:                                              ; preds = %896
  %898 = call noundef zeroext i1 @_ZL17CloseWindowButtonPb(ptr noundef nonnull %1)
  %.pre258 = load ptr, ptr %6, align 8, !tbaa !5
  br label %899

899:                                              ; preds = %897, %896
  %900 = phi ptr [ %.pre258, %897 ], [ %884, %896 ]
  %901 = getelementptr inbounds i8, ptr %900, i64 24
  %902 = getelementptr inbounds i8, ptr %101, i64 2988
  %903 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %901, ptr noundef nonnull align 4 dereferenceable(8) %902)
  %904 = load ptr, ptr %6, align 8, !tbaa !5
  %905 = getelementptr inbounds i8, ptr %904, i64 12
  %906 = load i32, ptr %905, align 4, !tbaa !32
  %907 = and i32 %906, 32
  %.not241 = icmp eq i32 %907, 0
  br i1 %.not241, label %908, label %922

908:                                              ; preds = %899
  %909 = getelementptr inbounds i8, ptr %904, i64 24
  %910 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %909, ptr noundef nonnull align 4 dereferenceable(8) %902)
  %911 = load ptr, ptr %6, align 8, !tbaa !5
  %912 = getelementptr inbounds i8, ptr %911, i64 67
  %913 = load i8, ptr %912, align 1, !tbaa !80, !range !30, !noundef !31
  %914 = trunc nuw i8 %913 to i1
  %915 = xor i1 %914, true
  call void @_ZL22RenderCollapseTriangle6ImVec2bfb(<2 x float> %910, i1 noundef zeroext %915, float noundef 1.000000e+00, i1 noundef zeroext true)
  %916 = load ptr, ptr %6, align 8, !tbaa !5
  %917 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %916)
  %918 = getelementptr inbounds i8, ptr %101, i64 3008
  %919 = load float, ptr %918, align 4, !tbaa !108
  %920 = fadd float %917, %919
  %.sroa.012.0.vec.extract = extractelement <2 x float> %903, i64 0
  %921 = fadd float %.sroa.012.0.vec.extract, %920
  %.sroa.012.0.vec.insert = insertelement <2 x float> %903, float %921, i64 0
  br label %922

922:                                              ; preds = %908, %899
  %.sroa.012.0 = phi <2 x float> [ %903, %899 ], [ %.sroa.012.0.vec.insert, %908 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %96) #11
  %923 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef nonnull %0, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %923, ptr %96, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #11
  %924 = load ptr, ptr %6, align 8, !tbaa !5
  %925 = getelementptr inbounds i8, ptr %924, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #11
  %926 = getelementptr inbounds i8, ptr %924, i64 32
  %927 = load float, ptr %926, align 8, !tbaa !70
  %928 = extractelement <2 x float> %923, i64 1
  br i1 %.not240, label %932, label %929

929:                                              ; preds = %922
  %930 = call noundef float @_ZNK9ImGuiAabb9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  %931 = fadd float %930, -3.000000e+00
  br label %934

932:                                              ; preds = %922
  %933 = load float, ptr %902, align 4, !tbaa !109
  br label %934

934:                                              ; preds = %932, %929
  %935 = phi float [ %931, %929 ], [ %933, %932 ]
  %936 = fsub float %927, %935
  %937 = getelementptr inbounds i8, ptr %101, i64 2992
  %938 = load float, ptr %937, align 4, !tbaa !110
  %939 = call float @llvm.fmuladd.f32(float %938, float 2.000000e+00, float %928)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %98, float noundef %936, float noundef %939)
  %940 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %925, ptr noundef nonnull align 4 dereferenceable(8) %98)
  store <2 x float> %940, ptr %97, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #11
  call void @_ZL17RenderTextClipped6ImVec2PKcS1_PKS_RS2_(<2 x float> %.sroa.012.0, ptr noundef nonnull %0, ptr noundef null, ptr noundef nonnull %96, ptr noundef nonnull align 4 dereferenceable(8) %97)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #11
  %.pre259 = load ptr, ptr %6, align 8, !tbaa !5
  br label %941

941:                                              ; preds = %934, %892
  %942 = phi ptr [ %.pre259, %934 ], [ %884, %892 ]
  %943 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %942)
  %944 = extractvalue { <2 x float>, <2 x float> } %943, 0
  %945 = extractvalue { <2 x float>, <2 x float> } %943, 1
  %946 = load ptr, ptr %6, align 8, !tbaa !5
  %947 = getelementptr inbounds i8, ptr %946, i64 384
  store <2 x float> %944, ptr %947, align 8
  %.sroa.49.0..sroa_idx = getelementptr inbounds i8, ptr %946, i64 392
  store <2 x float> %945, ptr %.sroa.49.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %99) #11
  %948 = getelementptr inbounds i8, ptr %946, i64 360
  %949 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN8ImVectorI6ImVec4E5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %948)
  call void @_ZN9ImGuiAabbC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %99, ptr noundef nonnull align 4 dereferenceable(16) %949)
  call void @_ZN9ImGuiAabb4ClipERKS_(ptr noundef nonnull align 4 dereferenceable(16) %947, ptr noundef nonnull align 4 dereferenceable(16) %99)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %99) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #11
  br label %950

950:                                              ; preds = %941, %235
  %951 = load ptr, ptr %6, align 8, !tbaa !5
  %952 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarAabbEv(ptr noundef nonnull align 8 dereferenceable(480) %951)
  %953 = extractvalue { <2 x float>, <2 x float> } %952, 0
  %954 = extractvalue { <2 x float>, <2 x float> } %952, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %100) #11
  %.sroa.06.0.vec.extract = extractelement <2 x float> %953, i64 0
  %955 = fadd float %.sroa.06.0.vec.extract, 5.000000e-01
  %956 = load ptr, ptr %6, align 8, !tbaa !5
  %957 = call <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480) %956)
  %.sroa.05.0.vec.extract = extractelement <2 x float> %957, i64 0
  %958 = call float @llvm.fmuladd.f32(float %.sroa.05.0.vec.extract, float 5.000000e-01, float %955)
  %.sroa.47.12.vec.extract = extractelement <2 x float> %954, i64 1
  %959 = fadd float %.sroa.47.12.vec.extract, 5.000000e-01
  %960 = load ptr, ptr %6, align 8, !tbaa !5
  %961 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %960)
  %962 = extractvalue { <2 x float>, <2 x float> } %961, 1
  %.sroa.34.8.vec.extract = extractelement <2 x float> %962, i64 0
  %963 = fadd float %.sroa.34.8.vec.extract, 5.000000e-01
  %964 = load ptr, ptr %6, align 8, !tbaa !5
  %965 = call <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480) %964)
  %.sroa.02.0.vec.extract = extractelement <2 x float> %965, i64 0
  %966 = fneg float %.sroa.02.0.vec.extract
  %967 = call float @llvm.fmuladd.f32(float %966, float 5.000000e-01, float %963)
  %968 = load ptr, ptr %6, align 8, !tbaa !5
  %969 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4AabbEv(ptr noundef nonnull align 8 dereferenceable(480) %968)
  %970 = extractvalue { <2 x float>, <2 x float> } %969, 1
  %.sroa.3.12.vec.extract = extractelement <2 x float> %970, i64 1
  %971 = fadd float %.sroa.3.12.vec.extract, -1.500000e+00
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %100, float noundef %958, float noundef %959, float noundef %967, float noundef %971)
  %972 = load ptr, ptr %6, align 8, !tbaa !5
  %973 = getelementptr inbounds i8, ptr %972, i64 64
  %974 = load i8, ptr %973, align 8, !tbaa !90, !range !30, !noundef !31
  %975 = trunc nuw i8 %974 to i1
  br i1 %975, label %976, label %982

976:                                              ; preds = %950
  %977 = getelementptr inbounds i8, ptr %101, i64 3044
  %978 = load float, ptr %977, align 4, !tbaa !91
  %979 = getelementptr inbounds i8, ptr %100, i64 8
  %980 = load float, ptr %979, align 4, !tbaa !111
  %981 = fsub float %980, %978
  store float %981, ptr %979, align 4, !tbaa !111
  br label %982

982:                                              ; preds = %976, %950
  call void @_ZL12PushClipRectRK6ImVec4b(ptr noundef nonnull align 4 dereferenceable(16) %100, i1 noundef zeroext true)
  br i1 %.not210, label %986, label %983

983:                                              ; preds = %982
  %984 = load ptr, ptr %6, align 8, !tbaa !5
  %985 = getelementptr inbounds i8, ptr %984, i64 66
  store i8 0, ptr %985, align 2, !tbaa !113
  br label %986

986:                                              ; preds = %983, %982
  br i1 %.not208.not, label %._crit_edge262, label %987

._crit_edge262:                                   ; preds = %986
  %.pre260.pre = load ptr, ptr %6, align 8, !tbaa !5
  br label %1011

987:                                              ; preds = %986
  %988 = and i32 %4, 1
  %.not242 = icmp eq i32 %988, 0
  br i1 %.not242, label %989, label %990

989:                                              ; preds = %987
  call void @__assert_fail(ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.10, i32 noundef 3137, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbRK6ImVec2fi) #10
  unreachable

990:                                              ; preds = %987
  %.not243 = icmp eq ptr %151, null
  br i1 %.not243, label %994, label %991

991:                                              ; preds = %990
  %992 = getelementptr inbounds i8, ptr %151, i64 67
  %993 = load i8, ptr %992, align 1, !tbaa !80, !range !30, !noundef !31
  br label %994

994:                                              ; preds = %991, %990
  %995 = phi i8 [ 0, %990 ], [ %993, %991 ]
  %996 = load ptr, ptr %6, align 8, !tbaa !5
  %997 = getelementptr inbounds i8, ptr %996, i64 67
  store i8 %995, ptr %997, align 1, !tbaa !80
  %998 = getelementptr inbounds i8, ptr %996, i64 360
  %999 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN8ImVectorI6ImVec4E4backEv(ptr noundef nonnull align 8 dereferenceable(24) %998)
  %.sroa.0.0.copyload = load float, ptr %999, align 4, !tbaa !85
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %999, i64 4
  %.sroa.4.0.copyload = load float, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !85
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %999, i64 8
  %.sroa.5.0.copyload = load float, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !85
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %999, i64 12
  %.sroa.6.0.copyload = load float, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !85
  %1000 = fcmp oge float %.sroa.0.0.copyload, %.sroa.5.0.copyload
  %1001 = fcmp oge float %.sroa.4.0.copyload, %.sroa.6.0.copyload
  %1002 = select i1 %1000, i1 true, i1 %1001
  %1003 = load ptr, ptr %6, align 8, !tbaa !5
  %1004 = getelementptr inbounds i8, ptr %1003, i64 67
  %1005 = load i8, ptr %1004, align 1, !tbaa !80, !range !30, !noundef !31
  %1006 = zext i1 %1002 to i8
  %1007 = or i8 %1005, %1006
  store i8 %1007, ptr %1004, align 1, !tbaa !80
  %1008 = trunc nuw i8 %1007 to i1
  br i1 %1008, label %1009, label %1011

1009:                                             ; preds = %994
  %1010 = getelementptr inbounds i8, ptr %1003, i64 65
  store i8 0, ptr %1010, align 1, !tbaa !52
  br label %1011

1011:                                             ; preds = %._crit_edge262, %994, %1009
  %.pre260 = phi ptr [ %.pre260.pre, %._crit_edge262 ], [ %1003, %994 ], [ %1003, %1009 ]
  %1012 = load float, ptr %102, align 4, !tbaa !114
  %1013 = fcmp ugt float %1012, 0.000000e+00
  br i1 %1013, label %1016, label %1014

1014:                                             ; preds = %1011
  %1015 = getelementptr inbounds i8, ptr %.pre260, i64 65
  store i8 0, ptr %1015, align 1, !tbaa !52
  br label %1016

1016:                                             ; preds = %1014, %1011
  %1017 = getelementptr inbounds i8, ptr %.pre260, i64 67
  %1018 = load i8, ptr %1017, align 1, !tbaa !80, !range !30, !noundef !31
  %1019 = trunc nuw i8 %1018 to i1
  br i1 %1019, label %1029, label %1020

1020:                                             ; preds = %1016
  %1021 = getelementptr inbounds i8, ptr %.pre260, i64 65
  %1022 = load i8, ptr %1021, align 1, !tbaa !52, !range !30, !noundef !31
  %1023 = trunc nuw i8 %1022 to i1
  br i1 %1023, label %1029, label %1024

1024:                                             ; preds = %1020
  %1025 = getelementptr inbounds i8, ptr %.pre260, i64 72
  %1026 = load i32, ptr %1025, align 8, !tbaa !87
  %1027 = icmp eq i32 %1026, 0
  %1028 = zext i1 %1027 to i8
  br label %1029

1029:                                             ; preds = %1020, %1024, %1016
  %1030 = phi i8 [ 1, %1016 ], [ 0, %1020 ], [ %1028, %1024 ]
  %1031 = getelementptr inbounds i8, ptr %.pre260, i64 68
  store i8 %1030, ptr %1031, align 4, !tbaa !81
  %1032 = trunc nuw i8 %1030 to i1
  %1033 = xor i1 %1032, true
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #11
  ret i1 %1033
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL18IsMouseHoveringBoxRK9ImGuiAabb(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #8

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN5ImGui13GetFrameCountEv() local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL16FindWindowByNamePKc(ptr noundef) local_unnamed_addr #4

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui18SetWindowCollapsedEbi(i1 noundef zeroext, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui14SetWindowFocusEv() local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI6ImVec4E6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIjE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL17MarkSettingsDirtyv() local_unnamed_addr #0

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480), i32 noundef, float noundef) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL15ButtonBehaviourRK9ImGuiAabbRKjPbS4_bbb(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef, ptr noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #4

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480)) local_unnamed_addr #8 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIfE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIbE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIbE9push_backERKb(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL22RenderCollapseTriangle6ImVec2bfb(<2 x float>, i1 noundef zeroext, float noundef, i1 noundef zeroext) local_unnamed_addr #8

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

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

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

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 #5 = { 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 #6 = { 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 #7 = { 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 #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 nounwind uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { noreturn nounwind }
attributes #11 = { 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 = !{!"_ZTS10ImGuiState", !11, i64 0, !12, i64 8, !15, i64 2960, !6, i64 3672, !14, i64 3680, !13, i64 3684, !14, i64 3692, !16, i64 3696, !16, i64 3700, !17, i64 3704, !6, i64 3728, !17, i64 3736, !6, i64 3760, !6, i64 3768, !6, i64 3776, !16, i64 3784, !16, i64 3788, !16, i64 3792, !11, i64 3796, !11, i64 3797, !6, i64 3800, !14, i64 3808, !19, i64 3816, !20, i64 3840, !21, i64 3864, !22, i64 3888, !13, i64 3912, !16, i64 3920, !13, i64 3924, !16, i64 3932, !11, i64 3936, !16, i64 3940, !11, i64 3944, !11, i64 3945, !16, i64 3948, !23, i64 3952, !17, i64 3976, !24, i64 4000, !16, i64 12400, !28, i64 12408, !16, i64 12432, !7, i64 12436, !6, i64 13464, !11, i64 13472, !6, i64 13480, !6, i64 13488, !16, i64 13496, !16, i64 13500, !7, i64 13504, !16, i64 13984, !14, i64 13988}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTS7ImGuiIO", !13, i64 0, !14, i64 8, !14, i64 12, !6, i64 16, !6, i64 24, !14, i64 32, !14, i64 36, !7, i64 40, !6, i64 112, !6, i64 120, !14, i64 128, !11, i64 132, !13, i64 136, !13, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !13, i64 208, !7, i64 216, !14, i64 224, !11, i64 228, !11, i64 229, !11, i64 230, !7, i64 231, !7, i64 744, !11, i64 778, !11, i64 779, !14, i64 780, !13, i64 784, !13, i64 792, !7, i64 800, !7, i64 808, !7, i64 848, !7, i64 868, !7, i64 873, !7, i64 880, !7, i64 900}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !13, i64 4, !13, i64 12, !14, i64 20, !14, i64 24, !13, i64 28, !14, i64 36, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !14, i64 72, !14, i64 76, !14, i64 80, !14, i64 84, !7, i64 88}
!16 = !{!"int", !7, i64 0}
!17 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !18, i64 0, !18, i64 8, !6, i64 16}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTS8ImVectorIP12ImGuiIniDataE", !18, i64 0, !18, i64 8, !6, i64 16}
!20 = !{!"_ZTS8ImVectorI11ImGuiColModE", !18, i64 0, !18, i64 8, !6, i64 16}
!21 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !18, i64 0, !18, i64 8, !6, i64 16}
!22 = !{!"_ZTS8ImVectorIP6ImFontE", !18, i64 0, !18, i64 8, !6, i64 16}
!23 = !{!"_ZTS8ImVectorIP10ImDrawListE", !18, i64 0, !18, i64 8, !6, i64 16}
!24 = !{!"_ZTS18ImGuiTextEditState", !16, i64 0, !7, i64 4, !7, i64 2052, !18, i64 5128, !14, i64 5136, !14, i64 5140, !25, i64 5144, !14, i64 8364, !13, i64 8368, !11, i64 8376, !6, i64 8384, !14, i64 8392}
!25 = !{!"_ZTS17STB_TexteditState", !16, i64 0, !16, i64 4, !16, 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, !14, i64 20, !26, i64 24}
!26 = !{!"_ZTS12StbUndoState", !7, i64 0, !7, i64 1188, !27, i64 3186, !27, i64 3188, !27, i64 3190, !27, i64 3192}
!27 = !{!"short", !7, i64 0}
!28 = !{!"_ZTS12ImGuiStorage", !29, i64 0}
!29 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !18, i64 0, !18, i64 8, !6, i64 16}
!30 = !{i8 0, i8 2}
!31 = !{}
!32 = !{!33, !16, i64 12}
!33 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !16, i64 8, !16, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !14, i64 56, !14, i64 60, !11, i64 64, !11, i64 65, !11, i64 66, !11, i64 67, !11, i64 68, !16, i64 72, !11, i64 76, !16, i64 80, !16, i64 84, !16, i64 88, !34, i64 96, !38, i64 336, !39, i64 360, !35, i64 384, !16, i64 400, !14, i64 404, !28, i64 408, !14, i64 432, !6, i64 440, !6, i64 448, !16, i64 456, !16, i64 460, !16, i64 464, !16, i64 468, !16, i64 472, !16, i64 476}
!34 = !{!"_ZTS16ImGuiDrawContext", !13, i64 0, !13, i64 8, !13, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !16, i64 36, !16, i64 40, !35, i64 44, !11, i64 60, !17, i64 64, !36, i64 88, !37, i64 112, !37, i64 136, !16, i64 160, !6, i64 168, !14, i64 176, !14, i64 180, !16, i64 184, !16, i64 188, !13, i64 192, !14, i64 200, !14, i64 204, !11, i64 208, !16, i64 212, !37, i64 216}
!35 = !{!"_ZTS9ImGuiAabb", !13, i64 0, !13, i64 8}
!36 = !{!"_ZTS8ImVectorIbE", !18, i64 0, !18, i64 8, !6, i64 16}
!37 = !{!"_ZTS8ImVectorIfE", !18, i64 0, !18, i64 8, !6, i64 16}
!38 = !{!"_ZTS8ImVectorIjE", !18, i64 0, !18, i64 8, !6, i64 16}
!39 = !{!"_ZTS8ImVectorI6ImVec4E", !18, i64 0, !18, i64 8, !6, i64 16}
!40 = !{!10, !6, i64 3728}
!41 = !{!10, !16, i64 3920}
!42 = !{!10, !16, i64 3932}
!43 = !{!10, !16, i64 3940}
!44 = !{!10, !11, i64 3936}
!45 = !{!10, !11, i64 3944}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = !{!33, !6, i64 448}
!49 = !{!15, !14, i64 72}
!50 = !{!33, !16, i64 400}
!51 = !{!33, !6, i64 440}
!52 = !{!33, !11, i64 65}
!53 = !{!10, !6, i64 3672}
!54 = !{!55, !6, i64 24}
!55 = !{!"_ZTS6ImFont", !14, i64 0, !14, i64 4, !13, i64 8, !27, i64 16, !6, i64 24, !56, i64 32, !6, i64 56, !14, i64 64, !37, i64 72, !57, i64 96}
!56 = !{!"_ZTS8ImVectorIN6ImFont5GlyphEE", !18, i64 0, !18, i64 8, !6, i64 16}
!57 = !{!"_ZTS8ImVectorIiE", !18, i64 0, !18, i64 8, !6, i64 16}
!58 = !{!10, !14, i64 144}
!59 = !{!10, !14, i64 152}
!60 = !{!10, !14, i64 148}
!61 = !{!10, !14, i64 156}
!62 = !{!10, !14, i64 8}
!63 = !{!10, !14, i64 12}
!64 = !{!16, !16, i64 0}
!65 = !{!10, !16, i64 3788}
!66 = !{!11, !11, i64 0}
!67 = !{!10, !6, i64 3800}
!68 = !{!33, !14, i64 16}
!69 = !{!33, !14, i64 20}
!70 = !{!33, !14, i64 32}
!71 = !{!33, !14, i64 404}
!72 = !{!33, !16, i64 472}
!73 = !{!33, !16, i64 456}
!74 = !{!33, !16, i64 464}
!75 = !{!33, !16, i64 476}
!76 = !{!33, !16, i64 460}
!77 = !{!33, !16, i64 468}
!78 = !{!33, !14, i64 60}
!79 = !{!33, !14, i64 56}
!80 = !{!33, !11, i64 67}
!81 = !{!33, !11, i64 68}
!82 = !{!33, !14, i64 52}
!83 = !{!33, !14, i64 44}
!84 = !{!10, !6, i64 3768}
!85 = !{!14, !14, i64 0}
!86 = !{!15, !14, i64 44}
!87 = !{!33, !16, i64 72}
!88 = !{!33, !11, i64 76}
!89 = !{!33, !14, i64 36}
!90 = !{!33, !11, i64 64}
!91 = !{!15, !14, i64 84}
!92 = !{!35, !14, i64 12}
!93 = !{!10, !16, i64 3784}
!94 = !{!10, !14, i64 220}
!95 = !{!35, !14, i64 4}
!96 = !{!35, !14, i64 0}
!97 = !{!35, !14, i64 8}
!98 = !{!33, !14, i64 272}
!99 = !{!33, !14, i64 276}
!100 = !{!33, !14, i64 128}
!101 = !{!33, !16, i64 256}
!102 = !{!33, !16, i64 280}
!103 = !{!33, !16, i64 284}
!104 = !{!33, !14, i64 300}
!105 = !{!33, !14, i64 296}
!106 = !{!33, !16, i64 132}
!107 = !{!33, !6, i64 264}
!108 = !{!15, !14, i64 48}
!109 = !{!15, !14, i64 28}
!110 = !{!15, !14, i64 32}
!111 = !{!112, !14, i64 8}
!112 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!113 = !{!33, !11, i64 66}
!114 = !{!15, !14, i64 0}


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