; LLVM IR from erwincoumans/tiny-differentiable-simulator :: third_party/dear_imgui/imgui.ll (ZN5ImGui17ShowMetricsWindowEPb)

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

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

@GImGui = external dso_local global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [19 x i8], align 1
@__const._ZN5ImGui17ShowMetricsWindowEPb.wrt_rects_names = external hidden unnamed_addr constant [7 x ptr], align 16
@__const._ZN5ImGui17ShowMetricsWindowEPb.trt_rects_names = external hidden unnamed_addr constant [11 x ptr], align 16
@_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects = external hidden global i8, align 1
@_ZZN5ImGui17ShowMetricsWindowEPbE22show_windows_rect_type = external hidden global i32, align 4
@_ZZN5ImGui17ShowMetricsWindowEPbE24show_windows_begin_order = external hidden global i8, align 1
@_ZZN5ImGui17ShowMetricsWindowEPbE17show_drawcmd_mesh = external hidden global i8, align 1
@_ZZN5ImGui17ShowMetricsWindowEPbE17show_drawcmd_aabb = external hidden global i8, align 1
@_ZZN5ImGui17ShowMetricsWindowEPbE18show_docking_nodes = external hidden global i8, align 1
@.str.242 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.243 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.244 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.245 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.246 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.247 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [133 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.252 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.256 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.257 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.258 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.259 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.260 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.261 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.262 = external hidden unnamed_addr constant [139 x i8], align 1
@.str.263 = external hidden unnamed_addr constant [152 x i8], align 1
@.str.264 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.265 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.266 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.267 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.268 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.269 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.270 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.271 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.272 = external hidden unnamed_addr constant [11 x i8], align 1
@_ZZN5ImGui17ShowMetricsWindowEPbE15root_nodes_only = external hidden global i8, align 1
@.str.273 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.274 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.275 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.276 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.277 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.278 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.279 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.280 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.281 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.282 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.283 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.284 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.285 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.286 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.287 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.288 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.289 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.290 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.291 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.292 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.293 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.294 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.295 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.296 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.297 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.298 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.299 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.300 = external hidden unnamed_addr constant [15 x i8], align 1
@__const._ZN5ImGui17ShowMetricsWindowEPb.input_source_names = external hidden unnamed_addr constant [5 x ptr], align 16
@.str.306 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.307 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.308 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.310 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.311 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.312 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.313 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.314 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.315 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.316 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.318 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.320 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.321 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.322 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.323 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.324 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.325 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.326 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.327 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.328 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.329 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.330 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.331 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.332 = external hidden unnamed_addr constant [23 x i8], align 1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z14ImFormatStringPcmPKcz(ptr noundef, i64 noundef, ptr noundef, ...) #1

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

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

declare void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) #6

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(5464) ptr @_ZN5ImGui5GetIOEv() #1

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN5ImGui11GetFontSizeEv() #1

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK15ImGuiTextBuffer4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

declare noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8)) #6

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5ImGui17ShowMetricsWindowEPb(ptr noundef %0) #7 {
  %2 = alloca ptr, align 8
  %3 = alloca [7 x ptr], align 16
  %4 = alloca [11 x ptr], align 16
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %struct.ImVec2, align 4
  %8 = alloca i32, align 4
  %9 = alloca %struct.ImRect, align 4
  %10 = alloca i8, align 1
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca %struct.ImVec2, align 4
  %30 = alloca [5 x ptr], align 16
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %struct.ImRect, align 4
  %36 = alloca [32 x i8], align 16
  %37 = alloca float, align 4
  %38 = alloca %struct.ImVec2, align 4
  %39 = alloca %struct.ImVec2, align 4
  %40 = alloca [64 x i8], align 16
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca %struct.ImVec2, align 4
  %46 = alloca %struct.ImVec2, align 4
  %47 = alloca %struct.ImVec2, align 4
  %48 = alloca %struct.ImVec2, align 4
  %49 = alloca %struct.ImVec2, align 4
  %50 = alloca %struct.ImVec2, align 4
  %51 = alloca %struct.ImVec2, align 4
  %52 = alloca %struct.ImVec2, align 4
  %53 = alloca %struct.ImVec2, align 4
  %54 = alloca %struct.ImVec2, align 4
  %55 = alloca %struct.ImVec2, align 4
  %56 = alloca %struct.ImVec2, align 4
  %57 = alloca %struct.ImVec2, align 4
  %58 = alloca %struct.ImVec2, align 4
  %59 = alloca %struct.ImVec2, align 4
  %60 = alloca %struct.ImVec2, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %61 = load ptr, ptr %2, align 8, !tbaa !5
  %62 = call noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef @.str.226, ptr noundef %61, i32 noundef 0)
  br i1 %62, label %64, label %63

63:                                               ; preds = %1
  call void @_ZN5ImGui3EndEv()
  br label %1091

64:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 56, ptr %3) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %3, ptr align 16 @__const._ZN5ImGui17ShowMetricsWindowEPb.wrt_rects_names, i64 56, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr %4) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %4, ptr align 16 @__const._ZN5ImGui17ShowMetricsWindowEPb.trt_rects_names, i64 88, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #10
  %65 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %65, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #10
  %66 = call noundef nonnull align 8 dereferenceable(5464) ptr @_ZN5ImGui5GetIOEv()
  store ptr %66, ptr %6, align 8, !tbaa !5
  %67 = call noundef ptr @_ZN5ImGui10GetVersionEv()
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.242, ptr noundef %67)
  %68 = load ptr, ptr %6, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.ImGuiIO, ptr %68, i32 0, i32 60
  %70 = load float, ptr %69, align 4, !tbaa !9
  %71 = fdiv float 1.000000e+03, %70
  %72 = fpext float %71 to double
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.ImGuiIO, ptr %73, i32 0, i32 60
  %75 = load float, ptr %74, align 4, !tbaa !9
  %76 = fpext float %75 to double
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.243, double noundef %72, double noundef %76)
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.ImGuiIO, ptr %77, i32 0, i32 61
  %79 = load i32, ptr %78, align 8, !tbaa !17
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.ImGuiIO, ptr %80, i32 0, i32 62
  %82 = load i32, ptr %81, align 4, !tbaa !18
  %83 = load ptr, ptr %6, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.ImGuiIO, ptr %83, i32 0, i32 62
  %85 = load i32, ptr %84, align 4, !tbaa !18
  %86 = sdiv i32 %85, 3
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.244, i32 noundef %79, i32 noundef %82, i32 noundef %86)
  %87 = load ptr, ptr %6, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.ImGuiIO, ptr %87, i32 0, i32 64
  %89 = load i32, ptr %88, align 4, !tbaa !19
  %90 = load ptr, ptr %6, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.ImGuiIO, ptr %90, i32 0, i32 63
  %92 = load i32, ptr %91, align 8, !tbaa !20
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.245, i32 noundef %89, i32 noundef %92)
  %93 = load ptr, ptr %6, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.ImGuiIO, ptr %93, i32 0, i32 65
  %95 = load i32, ptr %94, align 8, !tbaa !21
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.246, i32 noundef %95)
  call void @_ZN5ImGui9SeparatorEv()
  %96 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef @.str.247)
  br i1 %96, label %97, label %172

97:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %7, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %98 = call noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef @.str.248, ptr noundef nonnull align 4 dereferenceable(8) %7)
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  br i1 %98, label %99, label %100

99:                                               ; preds = %97
  call void @_ZN5ImGui20DebugStartItemPickerEv()
  br label %100

100:                                              ; preds = %99, %97
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  call void @_ZL17MetricsHelpMarkerPKc(ptr noundef @.str.249)
  %101 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.250, ptr noundef @_ZZN5ImGui17ShowMetricsWindowEPbE24show_windows_begin_order)
  %102 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.251, ptr noundef @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects)
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %103 = call noundef float @_ZN5ImGui11GetFontSizeEv()
  %104 = fmul float %103, 1.200000e+01
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %104)
  %105 = getelementptr inbounds [7 x ptr], ptr %3, i64 0, i64 0
  %106 = call noundef zeroext i1 @_ZN5ImGui5ComboEPKcPiPKS1_ii(ptr noundef @.str.252, ptr noundef @_ZZN5ImGui17ShowMetricsWindowEPbE22show_windows_rect_type, ptr noundef %105, i32 noundef 7, i32 noundef 7)
  %107 = zext i1 %106 to i32
  %108 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects, align 1, !tbaa !22, !range !23, !noundef !24
  %109 = trunc i8 %108 to i1
  %110 = zext i1 %109 to i32
  %111 = or i32 %110, %107
  %112 = icmp ne i32 %111, 0
  %113 = zext i1 %112 to i8
  store i8 %113, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects, align 1, !tbaa !22
  %114 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects, align 1, !tbaa !22, !range !23, !noundef !24
  %115 = trunc i8 %114 to i1
  br i1 %115, label %116, label %169

116:                                              ; preds = %100
  %117 = load ptr, ptr %5, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.ImGuiContext, ptr %117, i32 0, i32 88
  %119 = load ptr, ptr %118, align 8, !tbaa !25
  %120 = icmp ne ptr %119, null
  br i1 %120, label %121, label %169

121:                                              ; preds = %116
  %122 = load ptr, ptr %5, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.ImGuiContext, ptr %122, i32 0, i32 88
  %124 = load ptr, ptr %123, align 8, !tbaa !25
  %125 = getelementptr inbounds %struct.ImGuiWindow, ptr %124, i32 0, i32 0
  %126 = load ptr, ptr %125, align 8, !tbaa !72
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef @.str.253, ptr noundef %126)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  store i32 0, ptr %8, align 4, !tbaa !90
  br label %127

127:                                              ; preds = %165, %121
  %128 = load i32, ptr %8, align 4, !tbaa !90
  %129 = icmp slt i32 %128, 7
  br i1 %129, label %131, label %130

130:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %168

131:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #10
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.ImGuiContext, ptr %132, i32 0, i32 88
  %134 = load ptr, ptr %133, align 8, !tbaa !25
  %135 = load i32, ptr %8, align 4, !tbaa !90
  %136 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %134, i32 noundef %135)
  %137 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %9, i32 0, i32 0
  %138 = extractvalue { <2 x float>, <2 x float> } %136, 0
  store <2 x float> %138, ptr %137, align 4
  %139 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %9, i32 0, i32 1
  %140 = extractvalue { <2 x float>, <2 x float> } %136, 1
  store <2 x float> %140, ptr %139, align 4
  %141 = getelementptr inbounds %struct.ImRect, ptr %9, i32 0, i32 0
  %142 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 0
  %143 = load float, ptr %142, align 4, !tbaa !91
  %144 = fpext float %143 to double
  %145 = getelementptr inbounds %struct.ImRect, ptr %9, i32 0, i32 0
  %146 = getelementptr inbounds %struct.ImVec2, ptr %145, i32 0, i32 1
  %147 = load float, ptr %146, align 4, !tbaa !92
  %148 = fpext float %147 to double
  %149 = getelementptr inbounds %struct.ImRect, ptr %9, i32 0, i32 1
  %150 = getelementptr inbounds %struct.ImVec2, ptr %149, i32 0, i32 0
  %151 = load float, ptr %150, align 4, !tbaa !93
  %152 = fpext float %151 to double
  %153 = getelementptr inbounds %struct.ImRect, ptr %9, i32 0, i32 1
  %154 = getelementptr inbounds %struct.ImVec2, ptr %153, i32 0, i32 1
  %155 = load float, ptr %154, align 4, !tbaa !94
  %156 = fpext float %155 to double
  %157 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %9)
  %158 = fpext float %157 to double
  %159 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %9)
  %160 = fpext float %159 to double
  %161 = load i32, ptr %8, align 4, !tbaa !90
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds [7 x ptr], ptr %3, i64 0, i64 %162
  %164 = load ptr, ptr %163, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.254, double noundef %144, double noundef %148, double noundef %152, double noundef %156, double noundef %158, double noundef %160, ptr noundef %164)
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #10
  br label %165

165:                                              ; preds = %131
  %166 = load i32, ptr %8, align 4, !tbaa !90
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr %8, align 4, !tbaa !90
  br label %127, !llvm.loop !95

168:                                              ; preds = %130
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  br label %169

169:                                              ; preds = %168, %116, %100
  %170 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.255, ptr noundef @_ZZN5ImGui17ShowMetricsWindowEPbE17show_drawcmd_mesh)
  %171 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.256, ptr noundef @_ZZN5ImGui17ShowMetricsWindowEPbE17show_drawcmd_aabb)
  call void @_ZN5ImGui7TreePopEv()
  br label %172

172:                                              ; preds = %169, %64
  %173 = load ptr, ptr %5, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.ImGuiContext, ptr %173, i32 0, i32 24
  call void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs11NodeWindowsER8ImVectorIP11ImGuiWindowEPKc(ptr noundef nonnull align 8 dereferenceable(16) %174, ptr noundef @.str.257)
  %175 = load ptr, ptr %5, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.ImGuiContext, ptr %175, i32 0, i32 80
  %177 = getelementptr inbounds %struct.ImVector.10, ptr %176, i32 0, i32 0
  %178 = load i32, ptr %177, align 8, !tbaa !97
  %179 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.258, ptr noundef @.str.259, i32 noundef %178)
  br i1 %179, label %180, label %317

180:                                              ; preds = %172
  %181 = call noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv()
  call void @_ZN5ImGui6IndentEf(float noundef %181)
  call void @_ZN5ImGui22ShowViewportThumbnailsEv()
  %182 = call noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv()
  call void @_ZN5ImGui8UnindentEf(float noundef %182)
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #10
  %183 = load ptr, ptr %5, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.ImGuiContext, ptr %183, i32 0, i32 4
  %185 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %184, i32 0, i32 24
  %186 = getelementptr inbounds %struct.ImVector.3, ptr %185, i32 0, i32 0
  %187 = load i32, ptr %186, align 8, !tbaa !98
  %188 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.260, ptr noundef @.str.261, i32 noundef %187)
  %189 = zext i1 %188 to i8
  store i8 %189, ptr %10, align 1, !tbaa !22
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  call void @_ZL17MetricsHelpMarkerPKc(ptr noundef @.str.262)
  %190 = load i8, ptr %10, align 1, !tbaa !22, !range !23, !noundef !24
  %191 = trunc i8 %190 to i1
  br i1 %191, label %192, label %298

192:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  store i32 0, ptr %11, align 4, !tbaa !90
  br label %193

193:                                              ; preds = %294, %192
  %194 = load i32, ptr %11, align 4, !tbaa !90
  %195 = load ptr, ptr %5, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.ImGuiContext, ptr %195, i32 0, i32 4
  %197 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %196, i32 0, i32 24
  %198 = getelementptr inbounds %struct.ImVector.3, ptr %197, i32 0, i32 0
  %199 = load i32, ptr %198, align 8, !tbaa !98
  %200 = icmp slt i32 %194, %199
  br i1 %200, label %202, label %201

201:                                              ; preds = %193
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  br label %297

202:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  %203 = load ptr, ptr %5, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.ImGuiContext, ptr %203, i32 0, i32 4
  %205 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %204, i32 0, i32 24
  %206 = load i32, ptr %11, align 4, !tbaa !90
  %207 = call noundef nonnull align 4 dereferenceable(36) ptr @_ZN8ImVectorI20ImGuiPlatformMonitorEixEi(ptr noundef nonnull align 8 dereferenceable(16) %205, i32 noundef %206)
  store ptr %207, ptr %12, align 8, !tbaa !5
  %208 = load i32, ptr %11, align 4, !tbaa !90
  %209 = load ptr, ptr %12, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %209, i32 0, i32 4
  %211 = load float, ptr %210, align 4, !tbaa !99
  %212 = fmul float %211, 1.000000e+02
  %213 = fpext float %212 to double
  %214 = load ptr, ptr %12, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %214, i32 0, i32 0
  %216 = getelementptr inbounds %struct.ImVec2, ptr %215, i32 0, i32 0
  %217 = load float, ptr %216, align 4, !tbaa !101
  %218 = fpext float %217 to double
  %219 = load ptr, ptr %12, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %219, i32 0, i32 0
  %221 = getelementptr inbounds %struct.ImVec2, ptr %220, i32 0, i32 1
  %222 = load float, ptr %221, align 4, !tbaa !102
  %223 = fpext float %222 to double
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %224, i32 0, i32 0
  %226 = getelementptr inbounds %struct.ImVec2, ptr %225, i32 0, i32 0
  %227 = load float, ptr %226, align 4, !tbaa !101
  %228 = load ptr, ptr %12, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %228, i32 0, i32 1
  %230 = getelementptr inbounds %struct.ImVec2, ptr %229, i32 0, i32 0
  %231 = load float, ptr %230, align 4, !tbaa !103
  %232 = fadd float %227, %231
  %233 = fpext float %232 to double
  %234 = load ptr, ptr %12, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %234, i32 0, i32 0
  %236 = getelementptr inbounds %struct.ImVec2, ptr %235, i32 0, i32 1
  %237 = load float, ptr %236, align 4, !tbaa !102
  %238 = load ptr, ptr %12, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %238, i32 0, i32 1
  %240 = getelementptr inbounds %struct.ImVec2, ptr %239, i32 0, i32 1
  %241 = load float, ptr %240, align 4, !tbaa !104
  %242 = fadd float %237, %241
  %243 = fpext float %242 to double
  %244 = load ptr, ptr %12, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %244, i32 0, i32 1
  %246 = getelementptr inbounds %struct.ImVec2, ptr %245, i32 0, i32 0
  %247 = load float, ptr %246, align 4, !tbaa !103
  %248 = fpext float %247 to double
  %249 = load ptr, ptr %12, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %249, i32 0, i32 1
  %251 = getelementptr inbounds %struct.ImVec2, ptr %250, i32 0, i32 1
  %252 = load float, ptr %251, align 4, !tbaa !104
  %253 = fpext float %252 to double
  %254 = load ptr, ptr %12, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %254, i32 0, i32 2
  %256 = getelementptr inbounds %struct.ImVec2, ptr %255, i32 0, i32 0
  %257 = load float, ptr %256, align 4, !tbaa !105
  %258 = fpext float %257 to double
  %259 = load ptr, ptr %12, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %259, i32 0, i32 2
  %261 = getelementptr inbounds %struct.ImVec2, ptr %260, i32 0, i32 1
  %262 = load float, ptr %261, align 4, !tbaa !106
  %263 = fpext float %262 to double
  %264 = load ptr, ptr %12, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %264, i32 0, i32 2
  %266 = getelementptr inbounds %struct.ImVec2, ptr %265, i32 0, i32 0
  %267 = load float, ptr %266, align 4, !tbaa !105
  %268 = load ptr, ptr %12, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %268, i32 0, i32 3
  %270 = getelementptr inbounds %struct.ImVec2, ptr %269, i32 0, i32 0
  %271 = load float, ptr %270, align 4, !tbaa !107
  %272 = fadd float %267, %271
  %273 = fpext float %272 to double
  %274 = load ptr, ptr %12, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %274, i32 0, i32 2
  %276 = getelementptr inbounds %struct.ImVec2, ptr %275, i32 0, i32 1
  %277 = load float, ptr %276, align 4, !tbaa !106
  %278 = load ptr, ptr %12, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %278, i32 0, i32 3
  %280 = getelementptr inbounds %struct.ImVec2, ptr %279, i32 0, i32 1
  %281 = load float, ptr %280, align 4, !tbaa !108
  %282 = fadd float %277, %281
  %283 = fpext float %282 to double
  %284 = load ptr, ptr %12, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %284, i32 0, i32 3
  %286 = getelementptr inbounds %struct.ImVec2, ptr %285, i32 0, i32 0
  %287 = load float, ptr %286, align 4, !tbaa !107
  %288 = fpext float %287 to double
  %289 = load ptr, ptr %12, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %289, i32 0, i32 3
  %291 = getelementptr inbounds %struct.ImVec2, ptr %290, i32 0, i32 1
  %292 = load float, ptr %291, align 4, !tbaa !108
  %293 = fpext float %292 to double
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef @.str.263, i32 noundef %208, double noundef %213, double noundef %218, double noundef %223, double noundef %233, double noundef %243, double noundef %248, double noundef %253, double noundef %258, double noundef %263, double noundef %273, double noundef %283, double noundef %288, double noundef %293)
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  br label %294

294:                                              ; preds = %202
  %295 = load i32, ptr %11, align 4, !tbaa !90
  %296 = add nsw i32 %295, 1
  store i32 %296, ptr %11, align 4, !tbaa !90
  br label %193, !llvm.loop !109

297:                                              ; preds = %201
  call void @_ZN5ImGui7TreePopEv()
  br label %298

298:                                              ; preds = %297, %180
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  store i32 0, ptr %13, align 4, !tbaa !90
  br label %299

299:                                              ; preds = %313, %298
  %300 = load i32, ptr %13, align 4, !tbaa !90
  %301 = load ptr, ptr %5, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.ImGuiContext, ptr %301, i32 0, i32 80
  %303 = getelementptr inbounds %struct.ImVector.10, ptr %302, i32 0, i32 0
  %304 = load i32, ptr %303, align 8, !tbaa !97
  %305 = icmp slt i32 %300, %304
  br i1 %305, label %307, label %306

306:                                              ; preds = %299
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  br label %316

307:                                              ; preds = %299
  %308 = load ptr, ptr %5, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.ImGuiContext, ptr %308, i32 0, i32 80
  %310 = load i32, ptr %13, align 4, !tbaa !90
  %311 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP14ImGuiViewportPEixEi(ptr noundef nonnull align 8 dereferenceable(16) %309, i32 noundef %310)
  %312 = load ptr, ptr %311, align 8, !tbaa !5
  call void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12NodeViewportEP14ImGuiViewportP(ptr noundef %312)
  br label %313

313:                                              ; preds = %307
  %314 = load i32, ptr %13, align 4, !tbaa !90
  %315 = add nsw i32 %314, 1
  store i32 %315, ptr %13, align 4, !tbaa !90
  br label %299, !llvm.loop !110

316:                                              ; preds = %306
  call void @_ZN5ImGui7TreePopEv()
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #10
  br label %317

317:                                              ; preds = %316, %172
  %318 = load ptr, ptr %5, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.ImGuiContext, ptr %318, i32 0, i32 78
  %320 = getelementptr inbounds %struct.ImVector.9, ptr %319, i32 0, i32 0
  %321 = load i32, ptr %320, align 8, !tbaa !111
  %322 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.264, ptr noundef @.str.265, i32 noundef %321)
  br i1 %322, label %323, label %382

323:                                              ; preds = %317
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  store i32 0, ptr %14, align 4, !tbaa !90
  br label %324

324:                                              ; preds = %378, %323
  %325 = load i32, ptr %14, align 4, !tbaa !90
  %326 = load ptr, ptr %5, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.ImGuiContext, ptr %326, i32 0, i32 78
  %328 = getelementptr inbounds %struct.ImVector.9, ptr %327, i32 0, i32 0
  %329 = load i32, ptr %328, align 8, !tbaa !111
  %330 = icmp slt i32 %325, %329
  br i1 %330, label %332, label %331

331:                                              ; preds = %324
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  br label %381

332:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %333 = load ptr, ptr %5, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.ImGuiContext, ptr %333, i32 0, i32 78
  %335 = load i32, ptr %14, align 4, !tbaa !90
  %336 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %334, i32 noundef %335)
  %337 = getelementptr inbounds %struct.ImGuiPopupData, ptr %336, i32 0, i32 1
  %338 = load ptr, ptr %337, align 8, !tbaa !112
  store ptr %338, ptr %15, align 8, !tbaa !5
  %339 = load ptr, ptr %5, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.ImGuiContext, ptr %339, i32 0, i32 78
  %341 = load i32, ptr %14, align 4, !tbaa !90
  %342 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %340, i32 noundef %341)
  %343 = getelementptr inbounds %struct.ImGuiPopupData, ptr %342, i32 0, i32 0
  %344 = load i32, ptr %343, align 8, !tbaa !114
  %345 = load ptr, ptr %15, align 8, !tbaa !5
  %346 = icmp ne ptr %345, null
  br i1 %346, label %347, label %351

347:                                              ; preds = %332
  %348 = load ptr, ptr %15, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.ImGuiWindow, ptr %348, i32 0, i32 0
  %350 = load ptr, ptr %349, align 8, !tbaa !72
  br label %352

351:                                              ; preds = %332
  br label %352

352:                                              ; preds = %351, %347
  %353 = phi ptr [ %350, %347 ], [ @.str.267, %351 ]
  %354 = load ptr, ptr %15, align 8, !tbaa !5
  %355 = icmp ne ptr %354, null
  br i1 %355, label %356, label %362

356:                                              ; preds = %352
  %357 = load ptr, ptr %15, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.ImGuiWindow, ptr %357, i32 0, i32 2
  %359 = load i32, ptr %358, align 4, !tbaa !115
  %360 = and i32 %359, 16777216
  %361 = icmp ne i32 %360, 0
  br label %362

362:                                              ; preds = %356, %352
  %363 = phi i1 [ false, %352 ], [ %361, %356 ]
  %364 = zext i1 %363 to i64
  %365 = select i1 %363, ptr @.str.268, ptr @.str.6
  %366 = load ptr, ptr %15, align 8, !tbaa !5
  %367 = icmp ne ptr %366, null
  br i1 %367, label %368, label %374

368:                                              ; preds = %362
  %369 = load ptr, ptr %15, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.ImGuiWindow, ptr %369, i32 0, i32 2
  %371 = load i32, ptr %370, align 4, !tbaa !115
  %372 = and i32 %371, 268435456
  %373 = icmp ne i32 %372, 0
  br label %374

374:                                              ; preds = %368, %362
  %375 = phi i1 [ false, %362 ], [ %373, %368 ]
  %376 = zext i1 %375 to i64
  %377 = select i1 %375, ptr @.str.269, ptr @.str.6
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef @.str.266, i32 noundef %344, ptr noundef %353, ptr noundef %365, ptr noundef %377)
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %378

378:                                              ; preds = %374
  %379 = load i32, ptr %14, align 4, !tbaa !90
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr %14, align 4, !tbaa !90
  br label %324, !llvm.loop !116

381:                                              ; preds = %331
  call void @_ZN5ImGui7TreePopEv()
  br label %382

382:                                              ; preds = %381, %317
  %383 = load ptr, ptr %5, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.ImGuiContext, ptr %383, i32 0, i32 169
  %385 = call noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE7GetSizeEv(ptr noundef nonnull align 8 dereferenceable(36) %384)
  %386 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.270, ptr noundef @.str.271, i32 noundef %385)
  br i1 %386, label %387, label %404

387:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  store i32 0, ptr %16, align 4, !tbaa !90
  br label %388

388:                                              ; preds = %400, %387
  %389 = load i32, ptr %16, align 4, !tbaa !90
  %390 = load ptr, ptr %5, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.ImGuiContext, ptr %390, i32 0, i32 169
  %392 = call noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE7GetSizeEv(ptr noundef nonnull align 8 dereferenceable(36) %391)
  %393 = icmp slt i32 %389, %392
  br i1 %393, label %395, label %394

394:                                              ; preds = %388
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  br label %403

395:                                              ; preds = %388
  %396 = load ptr, ptr %5, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.ImGuiContext, ptr %396, i32 0, i32 169
  %398 = load i32, ptr %16, align 4, !tbaa !90
  %399 = call noundef ptr @_ZN6ImPoolI11ImGuiTabBarE10GetByIndexEi(ptr noundef nonnull align 8 dereferenceable(36) %397, i32 noundef %398)
  call void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs10NodeTabBarEP11ImGuiTabBar(ptr noundef %399)
  br label %400

400:                                              ; preds = %395
  %401 = load i32, ptr %16, align 4, !tbaa !90
  %402 = add nsw i32 %401, 1
  store i32 %402, ptr %16, align 4, !tbaa !90
  br label %388, !llvm.loop !117

403:                                              ; preds = %394
  call void @_ZN5ImGui7TreePopEv()
  br label %404

404:                                              ; preds = %403, %382
  %405 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef @.str.272)
  br i1 %405, label %406, label %453

406:                                              ; preds = %404
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  %407 = load ptr, ptr %5, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.ImGuiContext, ptr %407, i32 0, i32 195
  store ptr %408, ptr %17, align 8, !tbaa !5
  %409 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.273, ptr noundef @_ZZN5ImGui17ShowMetricsWindowEPbE15root_nodes_only)
  %410 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.274, ptr noundef @_ZZN5ImGui17ShowMetricsWindowEPbE18show_docking_nodes)
  %411 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef @.str.275)
  br i1 %411, label %412, label %414

412:                                              ; preds = %406
  %413 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5ImGui21DockContextClearNodesEP12ImGuiContextjb(ptr noundef %413, i32 noundef 0, i1 noundef zeroext true)
  br label %414

414:                                              ; preds = %412, %406
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %415 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef @.str.276)
  br i1 %415, label %416, label %419

416:                                              ; preds = %414
  %417 = load ptr, ptr %17, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.ImGuiDockContext, ptr %417, i32 0, i32 3
  store i8 1, ptr %418, align 8, !tbaa !118
  br label %419

419:                                              ; preds = %416, %414
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  store i32 0, ptr %18, align 4, !tbaa !90
  br label %420

420:                                              ; preds = %449, %419
  %421 = load i32, ptr %18, align 4, !tbaa !90
  %422 = load ptr, ptr %17, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.ImGuiDockContext, ptr %422, i32 0, i32 0
  %424 = getelementptr inbounds %struct.ImGuiStorage, ptr %423, i32 0, i32 0
  %425 = getelementptr inbounds %struct.ImVector.0, ptr %424, i32 0, i32 0
  %426 = load i32, ptr %425, align 8, !tbaa !119
  %427 = icmp slt i32 %421, %426
  br i1 %427, label %429, label %428

428:                                              ; preds = %420
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  br label %452

429:                                              ; preds = %420
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %430 = load ptr, ptr %17, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.ImGuiDockContext, ptr %430, i32 0, i32 0
  %432 = getelementptr inbounds %struct.ImGuiStorage, ptr %431, i32 0, i32 0
  %433 = load i32, ptr %18, align 4, !tbaa !90
  %434 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8ImVectorIN12ImGuiStorage16ImGuiStoragePairEEixEi(ptr noundef nonnull align 8 dereferenceable(16) %432, i32 noundef %433)
  %435 = getelementptr inbounds %"struct.ImGuiStorage::ImGuiStoragePair", ptr %434, i32 0, i32 1
  %436 = load ptr, ptr %435, align 8, !tbaa !120
  store ptr %436, ptr %19, align 8, !tbaa !5
  %437 = load ptr, ptr %19, align 8, !tbaa !5
  %438 = icmp ne ptr %437, null
  br i1 %438, label %439, label %448

439:                                              ; preds = %429
  %440 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE15root_nodes_only, align 1, !tbaa !22, !range !23, !noundef !24
  %441 = trunc i8 %440 to i1
  br i1 %441, label %442, label %445

442:                                              ; preds = %439
  %443 = load ptr, ptr %19, align 8, !tbaa !5
  %444 = call noundef zeroext i1 @_ZNK13ImGuiDockNode10IsRootNodeEv(ptr noundef nonnull align 8 dereferenceable(187) %443)
  br i1 %444, label %445, label %447

445:                                              ; preds = %442, %439
  %446 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12NodeDockNodeEP13ImGuiDockNodePKc(ptr noundef %446, ptr noundef @.str.277)
  br label %447

447:                                              ; preds = %445, %442
  br label %448

448:                                              ; preds = %447, %429
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %449

449:                                              ; preds = %448
  %450 = load i32, ptr %18, align 4, !tbaa !90
  %451 = add nsw i32 %450, 1
  store i32 %451, ptr %18, align 4, !tbaa !90
  br label %420, !llvm.loop !121

452:                                              ; preds = %428
  call void @_ZN5ImGui7TreePopEv()
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  br label %453

453:                                              ; preds = %452, %404
  %454 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef @.str.278)
  br i1 %454, label %455, label %646

455:                                              ; preds = %453
  %456 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef @.str.279)
  br i1 %456, label %457, label %458

457:                                              ; preds = %455
  call void @_ZN5ImGui16ClearIniSettingsEv()
  br label %458

458:                                              ; preds = %457, %455
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %459 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef @.str.280)
  br i1 %459, label %460, label %462

460:                                              ; preds = %458
  %461 = call noundef ptr @_ZN5ImGui23SaveIniSettingsToMemoryEPm(ptr noundef null)
  br label %462

462:                                              ; preds = %460, %458
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %463 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef @.str.281)
  br i1 %463, label %464, label %469

464:                                              ; preds = %462
  %465 = load ptr, ptr %5, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.ImGuiContext, ptr %465, i32 0, i32 3
  %467 = getelementptr inbounds %struct.ImGuiIO, ptr %466, i32 0, i32 5
  %468 = load ptr, ptr %467, align 8, !tbaa !122
  call void @_ZN5ImGui21SaveIniSettingsToDiskEPKc(ptr noundef %468)
  br label %469

469:                                              ; preds = %464, %462
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %470 = load ptr, ptr %5, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.ImGuiContext, ptr %470, i32 0, i32 3
  %472 = getelementptr inbounds %struct.ImGuiIO, ptr %471, i32 0, i32 5
  %473 = load ptr, ptr %472, align 8, !tbaa !122
  %474 = icmp ne ptr %473, null
  br i1 %474, label %475, label %480

475:                                              ; preds = %469
  %476 = load ptr, ptr %5, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.ImGuiContext, ptr %476, i32 0, i32 3
  %478 = getelementptr inbounds %struct.ImGuiIO, ptr %477, i32 0, i32 5
  %479 = load ptr, ptr %478, align 8, !tbaa !122
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.282, ptr noundef %479)
  br label %481

480:                                              ; preds = %469
  call void @_ZN5ImGui15TextUnformattedEPKcS1_(ptr noundef @.str.283, ptr noundef null)
  br label %481

481:                                              ; preds = %480, %475
  %482 = load ptr, ptr %5, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.ImGuiContext, ptr %482, i32 0, i32 198
  %484 = load float, ptr %483, align 4, !tbaa !123
  %485 = fpext float %484 to double
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.284, double noundef %485)
  %486 = load ptr, ptr %5, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.ImGuiContext, ptr %486, i32 0, i32 200
  %488 = getelementptr inbounds %struct.ImVector.20, ptr %487, i32 0, i32 0
  %489 = load i32, ptr %488, align 8, !tbaa !124
  %490 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.285, ptr noundef @.str.286, i32 noundef %489)
  br i1 %490, label %491, label %511

491:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  store i32 0, ptr %20, align 4, !tbaa !90
  br label %492

492:                                              ; preds = %507, %491
  %493 = load i32, ptr %20, align 4, !tbaa !90
  %494 = load ptr, ptr %5, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.ImGuiContext, ptr %494, i32 0, i32 200
  %496 = getelementptr inbounds %struct.ImVector.20, ptr %495, i32 0, i32 0
  %497 = load i32, ptr %496, align 8, !tbaa !124
  %498 = icmp slt i32 %493, %497
  br i1 %498, label %500, label %499

499:                                              ; preds = %492
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  br label %510

500:                                              ; preds = %492
  %501 = load ptr, ptr %5, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.ImGuiContext, ptr %501, i32 0, i32 200
  %503 = load i32, ptr %20, align 4, !tbaa !90
  %504 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN8ImVectorI20ImGuiSettingsHandlerEixEi(ptr noundef nonnull align 8 dereferenceable(16) %502, i32 noundef %503)
  %505 = getelementptr inbounds %struct.ImGuiSettingsHandler, ptr %504, i32 0, i32 0
  %506 = load ptr, ptr %505, align 8, !tbaa !125
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef @.str.287, ptr noundef %506)
  br label %507

507:                                              ; preds = %500
  %508 = load i32, ptr %20, align 4, !tbaa !90
  %509 = add nsw i32 %508, 1
  store i32 %509, ptr %20, align 4, !tbaa !90
  br label %492, !llvm.loop !127

510:                                              ; preds = %499
  call void @_ZN5ImGui7TreePopEv()
  br label %511

511:                                              ; preds = %510, %481
  %512 = load ptr, ptr %5, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.ImGuiContext, ptr %512, i32 0, i32 201
  %514 = call noundef i32 @_ZNK13ImChunkStreamI19ImGuiWindowSettingsE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %513)
  %515 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.288, ptr noundef @.str.289, i32 noundef %514)
  br i1 %515, label %516, label %532

516:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %517 = load ptr, ptr %5, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.ImGuiContext, ptr %517, i32 0, i32 201
  %519 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %518)
  store ptr %519, ptr %21, align 8, !tbaa !5
  br label %520

520:                                              ; preds = %526, %516
  %521 = load ptr, ptr %21, align 8, !tbaa !5
  %522 = icmp ne ptr %521, null
  br i1 %522, label %524, label %523

523:                                              ; preds = %520
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %531

524:                                              ; preds = %520
  %525 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs18NodeWindowSettingsEP19ImGuiWindowSettings(ptr noundef %525)
  br label %526

526:                                              ; preds = %524
  %527 = load ptr, ptr %5, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.ImGuiContext, ptr %527, i32 0, i32 201
  %529 = load ptr, ptr %21, align 8, !tbaa !5
  %530 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE10next_chunkEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %528, ptr noundef %529)
  store ptr %530, ptr %21, align 8, !tbaa !5
  br label %520, !llvm.loop !128

531:                                              ; preds = %523
  call void @_ZN5ImGui7TreePopEv()
  br label %532

532:                                              ; preds = %531, %511
  %533 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.290, ptr noundef @.str.291)
  br i1 %533, label %534, label %629

534:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %535 = load ptr, ptr %5, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.ImGuiContext, ptr %535, i32 0, i32 195
  store ptr %536, ptr %22, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.292)
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %537 = load ptr, ptr %5, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.ImGuiContext, ptr %537, i32 0, i32 201
  %539 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %538)
  store ptr %539, ptr %23, align 8, !tbaa !5
  br label %540

540:                                              ; preds = %556, %534
  %541 = load ptr, ptr %23, align 8, !tbaa !5
  %542 = icmp ne ptr %541, null
  br i1 %542, label %544, label %543

543:                                              ; preds = %540
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  br label %561

544:                                              ; preds = %540
  %545 = load ptr, ptr %23, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ImGuiWindowSettings, ptr %545, i32 0, i32 5
  %547 = load i32, ptr %546, align 4, !tbaa !129
  %548 = icmp ne i32 %547, 0
  br i1 %548, label %549, label %555

549:                                              ; preds = %544
  %550 = load ptr, ptr %23, align 8, !tbaa !5
  %551 = call noundef ptr @_ZN19ImGuiWindowSettings7GetNameEv(ptr noundef nonnull align 4 dereferenceable(32) %550)
  %552 = load ptr, ptr %23, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.ImGuiWindowSettings, ptr %552, i32 0, i32 5
  %554 = load i32, ptr %553, align 4, !tbaa !129
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef @.str.293, ptr noundef %551, i32 noundef %554)
  br label %555

555:                                              ; preds = %549, %544
  br label %556

556:                                              ; preds = %555
  %557 = load ptr, ptr %5, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.ImGuiContext, ptr %557, i32 0, i32 201
  %559 = load ptr, ptr %23, align 8, !tbaa !5
  %560 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE10next_chunkEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %558, ptr noundef %559)
  store ptr %560, ptr %23, align 8, !tbaa !5
  br label %540, !llvm.loop !131

561:                                              ; preds = %543
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.294)
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  store i32 0, ptr %24, align 4, !tbaa !90
  br label %562

562:                                              ; preds = %625, %561
  %563 = load i32, ptr %24, align 4, !tbaa !90
  %564 = load ptr, ptr %22, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.ImGuiDockContext, ptr %564, i32 0, i32 2
  %566 = getelementptr inbounds %struct.ImVector.19, ptr %565, i32 0, i32 0
  %567 = load i32, ptr %566, align 8, !tbaa !132
  %568 = icmp slt i32 %563, %567
  br i1 %568, label %570, label %569

569:                                              ; preds = %562
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %628

570:                                              ; preds = %562
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  %571 = load ptr, ptr %22, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.ImGuiDockContext, ptr %571, i32 0, i32 2
  %573 = load i32, ptr %24, align 4, !tbaa !90
  %574 = call noundef nonnull align 4 dereferenceable(36) ptr @_ZN8ImVectorI21ImGuiDockNodeSettingsEixEi(ptr noundef nonnull align 8 dereferenceable(16) %572, i32 noundef %573)
  store ptr %574, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  store ptr null, ptr %26, align 8, !tbaa !5
  %575 = load ptr, ptr %25, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiDockNodeSettings, ptr %575, i32 0, i32 3
  %577 = load i32, ptr %576, align 4, !tbaa !133
  %578 = icmp ne i32 %577, 0
  br i1 %578, label %579, label %602

579:                                              ; preds = %570
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %580 = load ptr, ptr %25, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.ImGuiDockNodeSettings, ptr %580, i32 0, i32 3
  %582 = load i32, ptr %581, align 4, !tbaa !133
  %583 = call noundef ptr @_ZN5ImGui14FindWindowByIDEj(i32 noundef %582)
  store ptr %583, ptr %27, align 8, !tbaa !5
  %584 = load ptr, ptr %27, align 8, !tbaa !5
  %585 = icmp ne ptr %584, null
  br i1 %585, label %586, label %590

586:                                              ; preds = %579
  %587 = load ptr, ptr %27, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.ImGuiWindow, ptr %587, i32 0, i32 0
  %589 = load ptr, ptr %588, align 8, !tbaa !72
  store ptr %589, ptr %26, align 8, !tbaa !5
  br label %601

590:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %591 = load ptr, ptr %25, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.ImGuiDockNodeSettings, ptr %591, i32 0, i32 3
  %593 = load i32, ptr %592, align 4, !tbaa !133
  %594 = call noundef ptr @_ZN5ImGui18FindWindowSettingsEj(i32 noundef %593)
  store ptr %594, ptr %28, align 8, !tbaa !5
  %595 = load ptr, ptr %28, align 8, !tbaa !5
  %596 = icmp ne ptr %595, null
  br i1 %596, label %597, label %600

597:                                              ; preds = %590
  %598 = load ptr, ptr %28, align 8, !tbaa !5
  %599 = call noundef ptr @_ZN19ImGuiWindowSettings7GetNameEv(ptr noundef nonnull align 4 dereferenceable(32) %598)
  store ptr %599, ptr %26, align 8, !tbaa !5
  br label %600

600:                                              ; preds = %597, %590
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %601

601:                                              ; preds = %600, %586
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %602

602:                                              ; preds = %601, %570
  %603 = load ptr, ptr %25, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.ImGuiDockNodeSettings, ptr %603, i32 0, i32 0
  %605 = load i32, ptr %604, align 4, !tbaa !135
  %606 = load ptr, ptr %25, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.ImGuiDockNodeSettings, ptr %606, i32 0, i32 1
  %608 = load i32, ptr %607, align 4, !tbaa !136
  %609 = load ptr, ptr %25, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.ImGuiDockNodeSettings, ptr %609, i32 0, i32 3
  %611 = load i32, ptr %610, align 4, !tbaa !133
  %612 = load ptr, ptr %26, align 8, !tbaa !5
  %613 = icmp ne ptr %612, null
  br i1 %613, label %614, label %616

614:                                              ; preds = %602
  %615 = load ptr, ptr %26, align 8, !tbaa !5
  br label %623

616:                                              ; preds = %602
  %617 = load ptr, ptr %25, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.ImGuiDockNodeSettings, ptr %617, i32 0, i32 3
  %619 = load i32, ptr %618, align 4, !tbaa !133
  %620 = icmp ne i32 %619, 0
  %621 = zext i1 %620 to i64
  %622 = select i1 %620, ptr @.str.296, ptr @.str.6
  br label %623

623:                                              ; preds = %616, %614
  %624 = phi ptr [ %615, %614 ], [ %622, %616 ]
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef @.str.295, i32 noundef %605, i32 noundef %608, i32 noundef %611, ptr noundef %624)
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  br label %625

625:                                              ; preds = %623
  %626 = load i32, ptr %24, align 4, !tbaa !90
  %627 = add nsw i32 %626, 1
  store i32 %627, ptr %24, align 4, !tbaa !90
  br label %562, !llvm.loop !137

628:                                              ; preds = %569
  call void @_ZN5ImGui7TreePopEv()
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %629

629:                                              ; preds = %628, %532
  %630 = load ptr, ptr %5, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.ImGuiContext, ptr %630, i32 0, i32 199
  %632 = call noundef i32 @_ZNK15ImGuiTextBuffer4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %631)
  %633 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.297, ptr noundef @.str.298, i32 noundef %632)
  br i1 %633, label %634, label %645

634:                                              ; preds = %629
  %635 = load ptr, ptr %5, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.ImGuiContext, ptr %635, i32 0, i32 199
  %637 = call noundef ptr @_ZNK15ImGuiTextBuffer5c_strEv(ptr noundef nonnull align 8 dereferenceable(16) %636)
  %638 = load ptr, ptr %5, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.ImGuiContext, ptr %638, i32 0, i32 199
  %640 = getelementptr inbounds %struct.ImGuiTextBuffer, ptr %639, i32 0, i32 0
  %641 = getelementptr inbounds %struct.ImVector.2, ptr %640, i32 0, i32 0
  %642 = load i32, ptr %641, align 8, !tbaa !138
  %643 = sext i32 %642 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef 0xB810000000000000, float noundef 0.000000e+00)
  %644 = call noundef zeroext i1 @_ZN5ImGui18InputTextMultilineEPKcPcmRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef @.str.299, ptr noundef %637, i64 noundef %643, ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef 16384, ptr noundef null, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @_ZN5ImGui7TreePopEv()
  br label %645

645:                                              ; preds = %634, %629
  call void @_ZN5ImGui7TreePopEv()
  br label %646

646:                                              ; preds = %645, %453
  %647 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef @.str.300)
  br i1 %647, label %648, label %871

648:                                              ; preds = %646
  call void @llvm.lifetime.start.p0(i64 40, ptr %30) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %30, ptr align 16 @__const._ZN5ImGui17ShowMetricsWindowEPb.input_source_names, i64 40, i1 false)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.306)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %649 = load ptr, ptr %5, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiContext, ptr %649, i32 0, i32 32
  %651 = load ptr, ptr %650, align 8, !tbaa !139
  %652 = icmp ne ptr %651, null
  br i1 %652, label %653, label %659

653:                                              ; preds = %648
  %654 = load ptr, ptr %5, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.ImGuiContext, ptr %654, i32 0, i32 32
  %656 = load ptr, ptr %655, align 8, !tbaa !139
  %657 = getelementptr inbounds %struct.ImGuiWindow, ptr %656, i32 0, i32 0
  %658 = load ptr, ptr %657, align 8, !tbaa !72
  br label %660

659:                                              ; preds = %648
  br label %660

660:                                              ; preds = %659, %653
  %661 = phi ptr [ %658, %653 ], [ @.str.267, %659 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.307, ptr noundef %661)
  %662 = load ptr, ptr %5, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.ImGuiContext, ptr %662, i32 0, i32 33
  %664 = load ptr, ptr %663, align 8, !tbaa !140
  %665 = icmp ne ptr %664, null
  br i1 %665, label %666, label %672

666:                                              ; preds = %660
  %667 = load ptr, ptr %5, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.ImGuiContext, ptr %667, i32 0, i32 33
  %669 = load ptr, ptr %668, align 8, !tbaa !140
  %670 = getelementptr inbounds %struct.ImGuiWindow, ptr %669, i32 0, i32 0
  %671 = load ptr, ptr %670, align 8, !tbaa !72
  br label %673

672:                                              ; preds = %660
  br label %673

673:                                              ; preds = %672, %666
  %674 = phi ptr [ %671, %666 ], [ @.str.267, %672 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.308, ptr noundef %674)
  %675 = load ptr, ptr %5, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.ImGuiContext, ptr %675, i32 0, i32 34
  %677 = load ptr, ptr %676, align 8, !tbaa !141
  %678 = icmp ne ptr %677, null
  br i1 %678, label %679, label %685

679:                                              ; preds = %673
  %680 = load ptr, ptr %5, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.ImGuiContext, ptr %680, i32 0, i32 34
  %682 = load ptr, ptr %681, align 8, !tbaa !141
  %683 = getelementptr inbounds %struct.ImGuiWindow, ptr %682, i32 0, i32 0
  %684 = load ptr, ptr %683, align 8, !tbaa !72
  br label %686

685:                                              ; preds = %673
  br label %686

686:                                              ; preds = %685, %679
  %687 = phi ptr [ %684, %679 ], [ @.str.267, %685 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.309, ptr noundef %687)
  %688 = load ptr, ptr %5, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.ImGuiContext, ptr %688, i32 0, i32 35
  %690 = load ptr, ptr %689, align 8, !tbaa !142
  %691 = icmp ne ptr %690, null
  br i1 %691, label %692, label %698

692:                                              ; preds = %686
  %693 = load ptr, ptr %5, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.ImGuiContext, ptr %693, i32 0, i32 35
  %695 = load ptr, ptr %694, align 8, !tbaa !142
  %696 = getelementptr inbounds %struct.ImGuiDockNode, ptr %695, i32 0, i32 0
  %697 = load i32, ptr %696, align 8, !tbaa !143
  br label %699

698:                                              ; preds = %686
  br label %699

699:                                              ; preds = %698, %692
  %700 = phi i32 [ %697, %692 ], [ 0, %698 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.310, i32 noundef %700)
  %701 = load ptr, ptr %5, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.ImGuiContext, ptr %701, i32 0, i32 36
  %703 = load ptr, ptr %702, align 8, !tbaa !147
  %704 = icmp ne ptr %703, null
  br i1 %704, label %705, label %711

705:                                              ; preds = %699
  %706 = load ptr, ptr %5, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.ImGuiContext, ptr %706, i32 0, i32 36
  %708 = load ptr, ptr %707, align 8, !tbaa !147
  %709 = getelementptr inbounds %struct.ImGuiWindow, ptr %708, i32 0, i32 0
  %710 = load ptr, ptr %709, align 8, !tbaa !72
  br label %712

711:                                              ; preds = %699
  br label %712

712:                                              ; preds = %711, %705
  %713 = phi ptr [ %710, %705 ], [ @.str.267, %711 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.311, ptr noundef %713)
  %714 = load ptr, ptr %5, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.ImGuiContext, ptr %714, i32 0, i32 84
  %716 = load ptr, ptr %715, align 8, !tbaa !148
  %717 = getelementptr inbounds %struct.ImGuiViewport, ptr %716, i32 0, i32 0
  %718 = load i32, ptr %717, align 8, !tbaa !149
  %719 = load ptr, ptr %5, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.ImGuiContext, ptr %719, i32 0, i32 3
  %721 = getelementptr inbounds %struct.ImGuiIO, ptr %720, i32 0, i32 46
  %722 = load i32, ptr %721, align 8, !tbaa !151
  %723 = load ptr, ptr %5, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.ImGuiContext, ptr %723, i32 0, i32 85
  %725 = load ptr, ptr %724, align 8, !tbaa !152
  %726 = icmp ne ptr %725, null
  br i1 %726, label %727, label %733

727:                                              ; preds = %712
  %728 = load ptr, ptr %5, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.ImGuiContext, ptr %728, i32 0, i32 85
  %730 = load ptr, ptr %729, align 8, !tbaa !152
  %731 = getelementptr inbounds %struct.ImGuiViewport, ptr %730, i32 0, i32 0
  %732 = load i32, ptr %731, align 8, !tbaa !149
  br label %734

733:                                              ; preds = %712
  br label %734

734:                                              ; preds = %733, %727
  %735 = phi i32 [ %732, %727 ], [ 0, %733 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.312, i32 noundef %718, i32 noundef %722, i32 noundef %735)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.313)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %736 = load ptr, ptr %5, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ImGuiContext, ptr %736, i32 0, i32 47
  %738 = load i32, ptr %737, align 8, !tbaa !153
  %739 = load ptr, ptr %5, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.ImGuiContext, ptr %739, i32 0, i32 65
  %741 = load i32, ptr %740, align 8, !tbaa !154
  %742 = load ptr, ptr %5, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.ImGuiContext, ptr %742, i32 0, i32 49
  %744 = load float, ptr %743, align 8, !tbaa !155
  %745 = fpext float %744 to double
  %746 = load ptr, ptr %5, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.ImGuiContext, ptr %746, i32 0, i32 51
  %748 = load i8, ptr %747, align 1, !tbaa !156, !range !23, !noundef !24
  %749 = trunc i8 %748 to i1
  %750 = zext i1 %749 to i32
  %751 = load ptr, ptr %5, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.ImGuiContext, ptr %751, i32 0, i32 63
  %753 = load i32, ptr %752, align 8, !tbaa !157
  %754 = zext i32 %753 to i64
  %755 = getelementptr inbounds [5 x ptr], ptr %30, i64 0, i64 %754
  %756 = load ptr, ptr %755, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.314, i32 noundef %738, i32 noundef %741, double noundef %745, i32 noundef %750, ptr noundef %756)
  %757 = load ptr, ptr %5, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.ImGuiContext, ptr %757, i32 0, i32 62
  %759 = load ptr, ptr %758, align 8, !tbaa !158
  %760 = icmp ne ptr %759, null
  br i1 %760, label %761, label %767

761:                                              ; preds = %734
  %762 = load ptr, ptr %5, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.ImGuiContext, ptr %762, i32 0, i32 62
  %764 = load ptr, ptr %763, align 8, !tbaa !158
  %765 = getelementptr inbounds %struct.ImGuiWindow, ptr %764, i32 0, i32 0
  %766 = load ptr, ptr %765, align 8, !tbaa !72
  br label %768

767:                                              ; preds = %734
  br label %768

768:                                              ; preds = %767, %761
  %769 = phi ptr [ %766, %761 ], [ @.str.267, %767 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.315, ptr noundef %769)
  %770 = load ptr, ptr %5, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.ImGuiContext, ptr %770, i32 0, i32 40
  %772 = load i32, ptr %771, align 4, !tbaa !159
  %773 = load ptr, ptr %5, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.ImGuiContext, ptr %773, i32 0, i32 41
  %775 = load i32, ptr %774, align 8, !tbaa !160
  %776 = load ptr, ptr %5, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.ImGuiContext, ptr %776, i32 0, i32 45
  %778 = load float, ptr %777, align 8, !tbaa !161
  %779 = fpext float %778 to double
  %780 = load ptr, ptr %5, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.ImGuiContext, ptr %780, i32 0, i32 42
  %782 = load i8, ptr %781, align 4, !tbaa !162, !range !23, !noundef !24
  %783 = trunc i8 %782 to i1
  %784 = zext i1 %783 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.316, i32 noundef %772, i32 noundef %775, double noundef %779, i32 noundef %784)
  %785 = load ptr, ptr %5, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.ImGuiContext, ptr %785, i32 0, i32 148
  %787 = load i8, ptr %786, align 4, !tbaa !163, !range !23, !noundef !24
  %788 = trunc i8 %787 to i1
  %789 = zext i1 %788 to i32
  %790 = load ptr, ptr %5, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.ImGuiContext, ptr %790, i32 0, i32 156
  %792 = getelementptr inbounds %struct.ImGuiPayload, ptr %791, i32 0, i32 2
  %793 = load i32, ptr %792, align 4, !tbaa !164
  %794 = load ptr, ptr %5, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.ImGuiContext, ptr %794, i32 0, i32 156
  %796 = getelementptr inbounds %struct.ImGuiPayload, ptr %795, i32 0, i32 5
  %797 = getelementptr inbounds [33 x i8], ptr %796, i64 0, i64 0
  %798 = load ptr, ptr %5, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.ImGuiContext, ptr %798, i32 0, i32 156
  %800 = getelementptr inbounds %struct.ImGuiPayload, ptr %799, i32 0, i32 1
  %801 = load i32, ptr %800, align 8, !tbaa !165
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.317, i32 noundef %789, i32 noundef %793, ptr noundef %797, i32 noundef %801)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.318)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %802 = load ptr, ptr %5, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.ImGuiContext, ptr %802, i32 0, i32 88
  %804 = load ptr, ptr %803, align 8, !tbaa !25
  %805 = icmp ne ptr %804, null
  br i1 %805, label %806, label %812

806:                                              ; preds = %768
  %807 = load ptr, ptr %5, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.ImGuiContext, ptr %807, i32 0, i32 88
  %809 = load ptr, ptr %808, align 8, !tbaa !25
  %810 = getelementptr inbounds %struct.ImGuiWindow, ptr %809, i32 0, i32 0
  %811 = load ptr, ptr %810, align 8, !tbaa !72
  br label %813

812:                                              ; preds = %768
  br label %813

813:                                              ; preds = %812, %806
  %814 = phi ptr [ %811, %806 ], [ @.str.267, %812 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.319, ptr noundef %814)
  %815 = load ptr, ptr %5, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.ImGuiContext, ptr %815, i32 0, i32 89
  %817 = load i32, ptr %816, align 8, !tbaa !166
  %818 = load ptr, ptr %5, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.ImGuiContext, ptr %818, i32 0, i32 103
  %820 = load i32, ptr %819, align 4, !tbaa !167
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.320, i32 noundef %817, i32 noundef %820)
  %821 = load ptr, ptr %5, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.ImGuiContext, ptr %821, i32 0, i32 100
  %823 = load i32, ptr %822, align 4, !tbaa !168
  %824 = zext i32 %823 to i64
  %825 = getelementptr inbounds [5 x ptr], ptr %30, i64 0, i64 %824
  %826 = load ptr, ptr %825, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.321, ptr noundef %826)
  %827 = load ptr, ptr %5, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.ImGuiContext, ptr %827, i32 0, i32 3
  %829 = getelementptr inbounds %struct.ImGuiIO, ptr %828, i32 0, i32 58
  %830 = load i8, ptr %829, align 1, !tbaa !169, !range !23, !noundef !24
  %831 = trunc i8 %830 to i1
  %832 = zext i1 %831 to i32
  %833 = load ptr, ptr %5, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.ImGuiContext, ptr %833, i32 0, i32 3
  %835 = getelementptr inbounds %struct.ImGuiIO, ptr %834, i32 0, i32 59
  %836 = load i8, ptr %835, align 2, !tbaa !170, !range !23, !noundef !24
  %837 = trunc i8 %836 to i1
  %838 = zext i1 %837 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.322, i32 noundef %832, i32 noundef %838)
  %839 = load ptr, ptr %5, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.ImGuiContext, ptr %839, i32 0, i32 91
  %841 = load i32, ptr %840, align 8, !tbaa !171
  %842 = load ptr, ptr %5, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.ImGuiContext, ptr %842, i32 0, i32 94
  %844 = load i32, ptr %843, align 4, !tbaa !172
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.323, i32 noundef %841, i32 noundef %844)
  %845 = load ptr, ptr %5, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiContext, ptr %845, i32 0, i32 107
  %847 = load i8, ptr %846, align 2, !tbaa !173, !range !23, !noundef !24
  %848 = trunc i8 %847 to i1
  %849 = zext i1 %848 to i32
  %850 = load ptr, ptr %5, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.ImGuiContext, ptr %850, i32 0, i32 108
  %852 = load i8, ptr %851, align 1, !tbaa !174, !range !23, !noundef !24
  %853 = trunc i8 %852 to i1
  %854 = zext i1 %853 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.324, i32 noundef %849, i32 noundef %854)
  %855 = load ptr, ptr %5, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.ImGuiContext, ptr %855, i32 0, i32 90
  %857 = load i32, ptr %856, align 4, !tbaa !175
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.325, i32 noundef %857)
  %858 = load ptr, ptr %5, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.ImGuiContext, ptr %858, i32 0, i32 131
  %860 = load ptr, ptr %859, align 8, !tbaa !176
  %861 = icmp ne ptr %860, null
  br i1 %861, label %862, label %868

862:                                              ; preds = %813
  %863 = load ptr, ptr %5, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.ImGuiContext, ptr %863, i32 0, i32 131
  %865 = load ptr, ptr %864, align 8, !tbaa !176
  %866 = getelementptr inbounds %struct.ImGuiWindow, ptr %865, i32 0, i32 0
  %867 = load ptr, ptr %866, align 8, !tbaa !72
  br label %869

868:                                              ; preds = %813
  br label %869

869:                                              ; preds = %868, %862
  %870 = phi ptr [ %867, %862 ], [ @.str.267, %868 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.326, ptr noundef %870)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void @_ZN5ImGui7TreePopEv()
  call void @llvm.lifetime.end.p0(i64 40, ptr %30) #10
  br label %871

871:                                              ; preds = %869, %646
  %872 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects, align 1, !tbaa !22, !range !23, !noundef !24
  %873 = trunc i8 %872 to i1
  br i1 %873, label %877, label %874

874:                                              ; preds = %871
  %875 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE24show_windows_begin_order, align 1, !tbaa !22, !range !23, !noundef !24
  %876 = trunc i8 %875 to i1
  br i1 %876, label %877, label %950

877:                                              ; preds = %874, %871
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  store i32 0, ptr %31, align 4, !tbaa !90
  br label %878

878:                                              ; preds = %946, %877
  %879 = load i32, ptr %31, align 4, !tbaa !90
  %880 = load ptr, ptr %5, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.ImGuiContext, ptr %880, i32 0, i32 24
  %882 = getelementptr inbounds %struct.ImVector.5, ptr %881, i32 0, i32 0
  %883 = load i32, ptr %882, align 8, !tbaa !177
  %884 = icmp slt i32 %879, %883
  br i1 %884, label %886, label %885

885:                                              ; preds = %878
  store i32 32, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  br label %949

886:                                              ; preds = %878
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %887 = load ptr, ptr %5, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.ImGuiContext, ptr %887, i32 0, i32 24
  %889 = load i32, ptr %31, align 4, !tbaa !90
  %890 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %888, i32 noundef %889)
  %891 = load ptr, ptr %890, align 8, !tbaa !5
  store ptr %891, ptr %33, align 8, !tbaa !5
  %892 = load ptr, ptr %33, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.ImGuiWindow, ptr %892, i32 0, i32 29
  %894 = load i8, ptr %893, align 8, !tbaa !178, !range !23, !noundef !24
  %895 = trunc i8 %894 to i1
  br i1 %895, label %897, label %896

896:                                              ; preds = %886
  store i32 34, ptr %32, align 4
  br label %943

897:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %898 = load ptr, ptr %33, align 8, !tbaa !5
  %899 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEP11ImGuiWindow(ptr noundef %898)
  store ptr %899, ptr %34, align 8, !tbaa !5
  %900 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects, align 1, !tbaa !22, !range !23, !noundef !24
  %901 = trunc i8 %900 to i1
  br i1 %901, label %902, label %913

902:                                              ; preds = %897
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #10
  %903 = load ptr, ptr %33, align 8, !tbaa !5
  %904 = load i32, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE22show_windows_rect_type, align 4, !tbaa !90
  %905 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %903, i32 noundef %904)
  %906 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %35, i32 0, i32 0
  %907 = extractvalue { <2 x float>, <2 x float> } %905, 0
  store <2 x float> %907, ptr %906, align 4
  %908 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %35, i32 0, i32 1
  %909 = extractvalue { <2 x float>, <2 x float> } %905, 1
  store <2 x float> %909, ptr %908, align 4
  %910 = load ptr, ptr %34, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.ImRect, ptr %35, i32 0, i32 0
  %912 = getelementptr inbounds %struct.ImRect, ptr %35, i32 0, i32 1
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(224) %910, ptr noundef nonnull align 4 dereferenceable(8) %911, ptr noundef nonnull align 4 dereferenceable(8) %912, i32 noundef -8388353, float noundef 0.000000e+00, i32 noundef 15, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #10
  br label %913

913:                                              ; preds = %902, %897
  %914 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE24show_windows_begin_order, align 1, !tbaa !22, !range !23, !noundef !24
  %915 = trunc i8 %914 to i1
  br i1 %915, label %916, label %942

916:                                              ; preds = %913
  %917 = load ptr, ptr %33, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.ImGuiWindow, ptr %917, i32 0, i32 2
  %919 = load i32, ptr %918, align 4, !tbaa !115
  %920 = and i32 %919, 16777216
  %921 = icmp ne i32 %920, 0
  br i1 %921, label %942, label %922

922:                                              ; preds = %916
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #10
  %923 = getelementptr inbounds [32 x i8], ptr %36, i64 0, i64 0
  %924 = load ptr, ptr %33, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.ImGuiWindow, ptr %924, i32 0, i32 41
  %926 = load i16, ptr %925, align 2, !tbaa !179
  %927 = sext i16 %926 to i32
  %928 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %923, i64 noundef 32, ptr noundef @.str.327, i32 noundef %927)
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  %929 = call noundef float @_ZN5ImGui11GetFontSizeEv()
  store float %929, ptr %37, align 4, !tbaa !180
  %930 = load ptr, ptr %34, align 8, !tbaa !5
  %931 = load ptr, ptr %33, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.ImGuiWindow, ptr %931, i32 0, i32 9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %933 = load ptr, ptr %33, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.ImGuiWindow, ptr %933, i32 0, i32 9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %935 = load float, ptr %37, align 4, !tbaa !180
  %936 = load float, ptr %37, align 4, !tbaa !180
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef %935, float noundef %936)
  %937 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %934, ptr noundef nonnull align 4 dereferenceable(8) %39)
  store <2 x float> %937, ptr %38, align 4
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %930, ptr noundef nonnull align 4 dereferenceable(8) %932, ptr noundef nonnull align 4 dereferenceable(8) %38, i32 noundef -10197816, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  %938 = load ptr, ptr %34, align 8, !tbaa !5
  %939 = load ptr, ptr %33, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.ImGuiWindow, ptr %939, i32 0, i32 9
  %941 = getelementptr inbounds [32 x i8], ptr %36, i64 0, i64 0
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(224) %938, ptr noundef nonnull align 4 dereferenceable(8) %940, i32 noundef -1, ptr noundef %941, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #10
  br label %942

942:                                              ; preds = %922, %916, %913
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  store i32 0, ptr %32, align 4
  br label %943

943:                                              ; preds = %942, %896
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  %944 = load i32, ptr %32, align 4
  switch i32 %944, label %1092 [
    i32 0, label %945
    i32 34, label %946
  ]

945:                                              ; preds = %943
  br label %946

946:                                              ; preds = %945, %943
  %947 = load i32, ptr %31, align 4, !tbaa !90
  %948 = add nsw i32 %947, 1
  store i32 %948, ptr %31, align 4, !tbaa !90
  br label %878, !llvm.loop !181

949:                                              ; preds = %885
  br label %950

950:                                              ; preds = %949, %874
  %951 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_docking_nodes, align 1, !tbaa !22, !range !23, !noundef !24
  %952 = trunc i8 %951 to i1
  br i1 %952, label %953, label %1090

953:                                              ; preds = %950
  %954 = load ptr, ptr %5, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImGuiContext, ptr %954, i32 0, i32 3
  %956 = getelementptr inbounds %struct.ImGuiIO, ptr %955, i32 0, i32 47
  %957 = load i8, ptr %956, align 4, !tbaa !182, !range !23, !noundef !24
  %958 = trunc i8 %957 to i1
  br i1 %958, label %959, label %1090

959:                                              ; preds = %953
  %960 = load ptr, ptr %5, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.ImGuiContext, ptr %960, i32 0, i32 35
  %962 = load ptr, ptr %961, align 8, !tbaa !142
  %963 = icmp ne ptr %962, null
  br i1 %963, label %964, label %1090

964:                                              ; preds = %959
  call void @llvm.lifetime.start.p0(i64 64, ptr %40) #10
  call void @llvm.memset.p0.i64(ptr align 16 %40, i8 0, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  %965 = getelementptr inbounds [64 x i8], ptr %40, i64 0, i64 0
  store ptr %965, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  %966 = load ptr, ptr %5, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.ImGuiContext, ptr %966, i32 0, i32 35
  %968 = load ptr, ptr %967, align 8, !tbaa !142
  store ptr %968, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %969 = load ptr, ptr %42, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.ImGuiDockNode, ptr %969, i32 0, i32 15
  %971 = load ptr, ptr %970, align 8, !tbaa !183
  %972 = icmp ne ptr %971, null
  br i1 %972, label %973, label %978

973:                                              ; preds = %964
  %974 = load ptr, ptr %42, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.ImGuiDockNode, ptr %974, i32 0, i32 15
  %976 = load ptr, ptr %975, align 8, !tbaa !183
  %977 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEP11ImGuiWindow(ptr noundef %976)
  br label %981

978:                                              ; preds = %964
  %979 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %980 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEP13ImGuiViewport(ptr noundef %979)
  br label %981

981:                                              ; preds = %978, %973
  %982 = phi ptr [ %977, %973 ], [ %980, %978 ]
  store ptr %982, ptr %43, align 8, !tbaa !5
  %983 = load ptr, ptr %41, align 8, !tbaa !5
  %984 = getelementptr inbounds [64 x i8], ptr %40, i64 0, i64 0
  %985 = getelementptr inbounds i8, ptr %984, i64 64
  %986 = load ptr, ptr %41, align 8, !tbaa !5
  %987 = ptrtoint ptr %985 to i64
  %988 = ptrtoint ptr %986 to i64
  %989 = sub i64 %987, %988
  %990 = load ptr, ptr %42, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.ImGuiDockNode, ptr %990, i32 0, i32 0
  %992 = load i32, ptr %991, align 8, !tbaa !143
  %993 = load ptr, ptr %42, align 8, !tbaa !5
  %994 = call noundef zeroext i1 @_ZNK13ImGuiDockNode13IsCentralNodeEv(ptr noundef nonnull align 8 dereferenceable(187) %993)
  %995 = zext i1 %994 to i64
  %996 = select i1 %994, ptr @.str.329, ptr @.str.6
  %997 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %983, i64 noundef %989, ptr noundef @.str.328, i32 noundef %992, ptr noundef %996)
  %998 = load ptr, ptr %41, align 8, !tbaa !5
  %999 = sext i32 %997 to i64
  %1000 = getelementptr inbounds i8, ptr %998, i64 %999
  store ptr %1000, ptr %41, align 8, !tbaa !5
  %1001 = load ptr, ptr %41, align 8, !tbaa !5
  %1002 = getelementptr inbounds [64 x i8], ptr %40, i64 0, i64 0
  %1003 = getelementptr inbounds i8, ptr %1002, i64 64
  %1004 = load ptr, ptr %41, align 8, !tbaa !5
  %1005 = ptrtoint ptr %1003 to i64
  %1006 = ptrtoint ptr %1004 to i64
  %1007 = sub i64 %1005, %1006
  %1008 = load ptr, ptr %42, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.ImGuiDockNode, ptr %1008, i32 0, i32 12
  %1010 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %1009, i32 0, i32 0
  %1011 = load i32, ptr %1010, align 4, !tbaa !184
  %1012 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %1001, i64 noundef %1007, ptr noundef @.str.330, i32 noundef %1011)
  %1013 = load ptr, ptr %41, align 8, !tbaa !5
  %1014 = sext i32 %1012 to i64
  %1015 = getelementptr inbounds i8, ptr %1013, i64 %1014
  store ptr %1015, ptr %41, align 8, !tbaa !5
  %1016 = load ptr, ptr %41, align 8, !tbaa !5
  %1017 = getelementptr inbounds [64 x i8], ptr %40, i64 0, i64 0
  %1018 = getelementptr inbounds i8, ptr %1017, i64 64
  %1019 = load ptr, ptr %41, align 8, !tbaa !5
  %1020 = ptrtoint ptr %1018 to i64
  %1021 = ptrtoint ptr %1019 to i64
  %1022 = sub i64 %1020, %1021
  %1023 = load ptr, ptr %42, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.ImGuiDockNode, ptr %1023, i32 0, i32 9
  %1025 = getelementptr inbounds %struct.ImVec2, ptr %1024, i32 0, i32 0
  %1026 = load float, ptr %1025, align 8, !tbaa !185
  %1027 = fpext float %1026 to double
  %1028 = load ptr, ptr %42, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.ImGuiDockNode, ptr %1028, i32 0, i32 9
  %1030 = getelementptr inbounds %struct.ImVec2, ptr %1029, i32 0, i32 1
  %1031 = load float, ptr %1030, align 4, !tbaa !186
  %1032 = fpext float %1031 to double
  %1033 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %1016, i64 noundef %1022, ptr noundef @.str.331, double noundef %1027, double noundef %1032)
  %1034 = load ptr, ptr %41, align 8, !tbaa !5
  %1035 = sext i32 %1033 to i64
  %1036 = getelementptr inbounds i8, ptr %1034, i64 %1035
  store ptr %1036, ptr %41, align 8, !tbaa !5
  %1037 = load ptr, ptr %41, align 8, !tbaa !5
  %1038 = getelementptr inbounds [64 x i8], ptr %40, i64 0, i64 0
  %1039 = getelementptr inbounds i8, ptr %1038, i64 64
  %1040 = load ptr, ptr %41, align 8, !tbaa !5
  %1041 = ptrtoint ptr %1039 to i64
  %1042 = ptrtoint ptr %1040 to i64
  %1043 = sub i64 %1041, %1042
  %1044 = load ptr, ptr %42, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.ImGuiDockNode, ptr %1044, i32 0, i32 10
  %1046 = getelementptr inbounds %struct.ImVec2, ptr %1045, i32 0, i32 0
  %1047 = load float, ptr %1046, align 8, !tbaa !187
  %1048 = fpext float %1047 to double
  %1049 = load ptr, ptr %42, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.ImGuiDockNode, ptr %1049, i32 0, i32 10
  %1051 = getelementptr inbounds %struct.ImVec2, ptr %1050, i32 0, i32 1
  %1052 = load float, ptr %1051, align 4, !tbaa !188
  %1053 = fpext float %1052 to double
  %1054 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %1037, i64 noundef %1043, ptr noundef @.str.332, double noundef %1048, double noundef %1053)
  %1055 = load ptr, ptr %41, align 8, !tbaa !5
  %1056 = sext i32 %1054 to i64
  %1057 = getelementptr inbounds i8, ptr %1055, i64 %1056
  store ptr %1057, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  %1058 = load ptr, ptr %42, align 8, !tbaa !5
  %1059 = call noundef i32 @_ZN5ImGui16DockNodeGetDepthEPK13ImGuiDockNode(ptr noundef %1058)
  store i32 %1059, ptr %44, align 4, !tbaa !90
  %1060 = load ptr, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  %1061 = load ptr, ptr %42, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.ImGuiDockNode, ptr %1061, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %47, float noundef 3.000000e+00, float noundef 3.000000e+00)
  %1063 = load i32, ptr %44, align 4, !tbaa !90
  %1064 = sitofp i32 %1063 to float
  %1065 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %47, float noundef %1064)
  store <2 x float> %1065, ptr %46, align 4
  %1066 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1062, ptr noundef nonnull align 4 dereferenceable(8) %46)
  store <2 x float> %1066, ptr %45, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %1067 = load ptr, ptr %42, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ImGuiDockNode, ptr %1067, i32 0, i32 8
  %1069 = load ptr, ptr %42, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.ImGuiDockNode, ptr %1069, i32 0, i32 9
  %1071 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1068, ptr noundef nonnull align 4 dereferenceable(8) %1070)
  store <2 x float> %1071, ptr %49, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %51, float noundef 3.000000e+00, float noundef 3.000000e+00)
  %1072 = load i32, ptr %44, align 4, !tbaa !90
  %1073 = sitofp i32 %1072 to float
  %1074 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %51, float noundef %1073)
  store <2 x float> %1074, ptr %50, align 4
  %1075 = 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> %1075, ptr %48, align 4
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(224) %1060, ptr noundef nonnull align 4 dereferenceable(8) %45, ptr noundef nonnull align 4 dereferenceable(8) %48, i32 noundef -10197816, float noundef 0.000000e+00, i32 noundef 15, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %1076 = load ptr, ptr %42, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ImGuiDockNode, ptr %1076, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef 3.000000e+00, float noundef 3.000000e+00)
  %1078 = load i32, ptr %44, align 4, !tbaa !90
  %1079 = sitofp i32 %1078 to float
  %1080 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1079)
  store <2 x float> %1080, ptr %53, align 4
  %1081 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1077, ptr noundef nonnull align 4 dereferenceable(8) %53)
  store <2 x float> %1081, ptr %52, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  %1082 = load ptr, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %56, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %1083 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %52, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1083, ptr %55, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  %1084 = getelementptr inbounds [64 x i8], ptr %40, i64 0, i64 0
  %1085 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %1084, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  store <2 x float> %1085, ptr %59, align 4
  %1086 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %52, ptr noundef nonnull align 4 dereferenceable(8) %59)
  store <2 x float> %1086, ptr %58, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %60, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %1087 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %58, ptr noundef nonnull align 4 dereferenceable(8) %60)
  store <2 x float> %1087, ptr %57, align 4
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %1082, ptr noundef nonnull align 4 dereferenceable(8) %55, ptr noundef nonnull align 4 dereferenceable(8) %57, i32 noundef -10197816, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  %1088 = load ptr, ptr %43, align 8, !tbaa !5
  %1089 = getelementptr inbounds [64 x i8], ptr %40, i64 0, i64 0
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(224) %1088, ptr noundef null, float noundef 0.000000e+00, ptr noundef nonnull align 4 dereferenceable(8) %52, i32 noundef -1, ptr noundef %1089, ptr noundef null, float noundef 0.000000e+00, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #10
  br label %1090

1090:                                             ; preds = %981, %959, %953, %950
  call void @_ZN5ImGui3EndEv()
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr %4) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %3) #10
  br label %1091

1091:                                             ; preds = %1090, %63
  ret void

1092:                                             ; preds = %943
  unreachable
}

declare void @_ZN5ImGui4TextEPKcz(ptr noundef, ...) #6

declare void @_ZN5ImGui9SeparatorEv() #6

declare noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui20DebugStartItemPickerEv() #5

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

declare noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef, ptr noundef) #6

declare noundef zeroext i1 @_ZN5ImGui5ComboEPKcPiPKS1_ii(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #6

declare void @_ZN5ImGui10BulletTextEPKcz(ptr noundef, ...) #6

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

declare void @_ZN5ImGui7TreePopEv() #6

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs11NodeWindowsER8ImVectorIP11ImGuiWindowEPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #8 align 2

declare noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef, ptr noundef, ...) #6

declare noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv() #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE7GetSizeEv(ptr noundef nonnull align 8 dereferenceable(36)) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6ImPoolI11ImGuiTabBarE10GetByIndexEi(ptr noundef nonnull align 8 dereferenceable(36), i32 noundef) #1 align 2

declare noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12NodeDockNodeEP13ImGuiDockNodePKc(ptr noundef, ptr noundef) #7 align 2

declare void @_ZN5ImGui15TextUnformattedEPKcS1_(ptr noundef, ptr noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK13ImChunkStreamI19ImGuiWindowSettingsE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

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

declare noundef zeroext i1 @_ZN5ImGui18InputTextMultilineEPKcPcmRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef, ptr noundef, i64 noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui21GetForegroundDrawListEP11ImGuiWindow(ptr noundef) #9

declare void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN5ImGui16DockNodeGetDepthEPK13ImGuiDockNode(ptr noundef) #5

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 #10 = { 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, !13, i64 924}
!10 = !{!"_ZTS7ImGuiIO", !11, i64 0, !11, i64 4, !12, i64 8, !13, i64 16, !13, i64 20, !6, i64 24, !6, i64 32, !13, i64 40, !13, i64 44, !13, i64 48, !7, i64 52, !13, i64 140, !13, i64 144, !6, i64 152, !6, i64 160, !13, i64 168, !14, i64 172, !6, i64 176, !12, i64 184, !14, i64 192, !14, i64 193, !14, i64 194, !14, i64 195, !14, i64 196, !14, i64 197, !14, i64 198, !14, i64 199, !14, i64 200, !14, i64 201, !14, i64 202, !14, i64 203, !14, i64 204, !13, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !12, i64 288, !7, i64 296, !13, i64 304, !13, i64 308, !11, i64 312, !14, i64 316, !14, i64 317, !14, i64 318, !14, i64 319, !7, i64 320, !7, i64 832, !14, i64 916, !14, i64 917, !14, i64 918, !14, i64 919, !14, i64 920, !14, i64 921, !14, i64 922, !13, i64 924, !11, i64 928, !11, i64 932, !11, i64 936, !11, i64 940, !11, i64 944, !12, i64 948, !11, i64 956, !12, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !13, i64 5440, !15, i64 5444, !16, i64 5448}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS6ImVec2", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"short", !7, i64 0}
!16 = !{!"_ZTS8ImVectorItE", !11, i64 0, !11, i64 4, !6, i64 8}
!17 = !{!10, !11, i64 928}
!18 = !{!10, !11, i64 932}
!19 = !{!10, !11, i64 940}
!20 = !{!10, !11, i64 936}
!21 = !{!10, !11, i64 944}
!22 = !{!14, !14, i64 0}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = !{!26, !6, i64 7544}
!26 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !10, i64 8, !27, i64 5472, !30, i64 5704, !11, i64 6692, !11, i64 6696, !6, i64 6704, !13, i64 6712, !13, i64 6716, !31, i64 6720, !33, i64 6936, !11, i64 6944, !11, i64 6948, !11, i64 6952, !11, i64 6956, !14, i64 6960, !14, i64 6961, !14, i64 6962, !14, i64 6963, !11, i64 6964, !6, i64 6968, !34, i64 6976, !34, i64 6992, !34, i64 7008, !34, i64 7024, !35, i64 7040, !11, i64 7056, !6, i64 7064, !6, i64 7072, !6, i64 7080, !6, i64 7088, !6, i64 7096, !6, i64 7104, !6, i64 7112, !12, i64 7120, !13, i64 7128, !11, i64 7132, !11, i64 7136, !14, i64 7140, !14, i64 7141, !13, i64 7144, !13, i64 7148, !11, i64 7152, !11, i64 7156, !13, i64 7160, !14, i64 7164, !14, i64 7165, !14, i64 7166, !14, i64 7167, !14, i64 7168, !14, i64 7169, !11, i64 7172, !11, i64 7176, !37, i64 7184, !12, i64 7192, !6, i64 7200, !38, i64 7208, !11, i64 7212, !11, i64 7216, !14, i64 7220, !14, i64 7221, !6, i64 7224, !11, i64 7232, !13, i64 7236, !39, i64 7240, !42, i64 7384, !43, i64 7408, !44, i64 7424, !45, i64 7440, !46, i64 7456, !46, i64 7472, !47, i64 7488, !13, i64 7504, !6, i64 7512, !6, i64 7520, !6, i64 7528, !11, i64 7536, !11, i64 7540, !6, i64 7544, !11, i64 7552, !11, i64 7556, !11, i64 7560, !11, i64 7564, !11, i64 7568, !11, i64 7572, !11, i64 7576, !11, i64 7580, !11, i64 7584, !11, i64 7588, !11, i64 7592, !38, i64 7596, !40, i64 7600, !11, i64 7616, !48, i64 7620, !11, i64 7624, !14, i64 7628, !14, i64 7629, !14, i64 7630, !14, i64 7631, !14, i64 7632, !14, i64 7633, !14, i64 7634, !11, i64 7636, !40, i64 7640, !14, i64 7656, !14, i64 7657, !11, i64 7660, !49, i64 7664, !11, i64 7668, !11, i64 7672, !11, i64 7676, !11, i64 7680, !50, i64 7688, !50, i64 7736, !50, i64 7784, !6, i64 7832, !11, i64 7840, !6, i64 7848, !6, i64 7856, !6, i64 7864, !13, i64 7872, !13, i64 7876, !14, i64 7880, !6, i64 7888, !6, i64 7896, !11, i64 7904, !11, i64 7908, !11, i64 7912, !11, i64 7916, !14, i64 7920, !13, i64 7924, !11, i64 7928, !14, i64 7932, !14, i64 7933, !14, i64 7934, !11, i64 7936, !11, i64 7940, !11, i64 7944, !51, i64 7952, !40, i64 8016, !11, i64 8032, !11, i64 8036, !13, i64 8040, !11, i64 8044, !11, i64 8048, !11, i64 8052, !11, i64 8056, !52, i64 8064, !7, i64 8080, !6, i64 8096, !53, i64 8104, !55, i64 8144, !56, i64 8160, !12, i64 8176, !57, i64 8184, !61, i64 11912, !11, i64 12032, !11, i64 12036, !13, i64 12040, !13, i64 12044, !7, i64 12048, !32, i64 12060, !13, i64 12076, !14, i64 12080, !14, i64 12081, !13, i64 12084, !13, i64 12088, !13, i64 12092, !11, i64 12096, !58, i64 12104, !64, i64 12120, !12, i64 12136, !12, i64 12144, !6, i64 12152, !65, i64 12160, !14, i64 12216, !13, i64 12220, !68, i64 12224, !69, i64 12240, !70, i64 12256, !14, i64 12272, !71, i64 12276, !6, i64 12280, !68, i64 12288, !13, i64 12304, !14, i64 12308, !11, i64 12312, !11, i64 12316, !11, i64 12320, !14, i64 12324, !11, i64 12328, !7, i64 12332, !11, i64 12812, !13, i64 12816, !11, i64 12820, !11, i64 12824, !11, i64 12828, !7, i64 12832}
!27 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !28, i64 192, !6, i64 208, !29, i64 216}
!28 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !11, i64 0, !11, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !11, i64 0, !11, i64 4, !6, i64 8}
!30 = !{!"_ZTS10ImGuiStyle", !13, i64 0, !12, i64 4, !13, i64 12, !13, i64 16, !12, i64 20, !12, i64 28, !11, i64 36, !13, i64 40, !13, i64 44, !13, i64 48, !13, i64 52, !12, i64 56, !13, i64 64, !13, i64 68, !12, i64 72, !12, i64 80, !12, i64 88, !13, i64 96, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !13, i64 116, !13, i64 120, !13, i64 124, !13, i64 128, !13, i64 132, !11, i64 136, !12, i64 140, !12, i64 148, !12, i64 156, !12, i64 164, !13, i64 172, !14, i64 176, !14, i64 177, !14, i64 178, !13, i64 180, !13, i64 184, !7, i64 188}
!31 = !{!"_ZTS20ImDrawListSharedData", !12, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !13, i64 24, !32, i64 28, !11, i64 44, !7, i64 48, !7, i64 144, !6, i64 208}
!32 = !{!"_ZTS6ImVec4", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12}
!33 = !{!"double", !7, i64 0}
!34 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !11, i64 0, !11, i64 4, !6, i64 8}
!35 = !{!"_ZTS12ImGuiStorage", !36, i64 0}
!36 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !11, i64 0, !11, i64 4, !6, i64 8}
!37 = !{!"long long", !7, i64 0}
!38 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!39 = !{!"_ZTS19ImGuiNextWindowData", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !12, i64 20, !12, i64 28, !12, i64 36, !12, i64 44, !12, i64 52, !14, i64 60, !14, i64 61, !40, i64 64, !6, i64 80, !6, i64 88, !13, i64 96, !11, i64 100, !11, i64 104, !41, i64 108, !12, i64 136}
!40 = !{!"_ZTS6ImRect", !12, i64 0, !12, i64 8}
!41 = !{!"_ZTS16ImGuiWindowClass", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !14, i64 24, !14, i64 25}
!42 = !{!"_ZTS17ImGuiNextItemData", !11, i64 0, !13, i64 4, !11, i64 8, !11, i64 12, !14, i64 16}
!43 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !11, i64 0, !11, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !11, i64 0, !11, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIP6ImFontE", !11, i64 0, !11, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !11, i64 0, !11, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !11, i64 0, !11, i64 4, !6, i64 8}
!48 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!49 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!50 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !11, i64 8, !11, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !40, i64 28}
!51 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !7, i64 24, !14, i64 57, !14, i64 58}
!52 = !{!"_ZTS8ImVectorIhE", !11, i64 0, !11, i64 4, !6, i64 8}
!53 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !54, i64 0, !35, i64 16, !11, i64 32}
!54 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !11, i64 0, !11, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !11, i64 0, !11, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !11, i64 0, !11, i64 4, !6, i64 8}
!57 = !{!"_ZTS19ImGuiInputTextState", !11, i64 0, !11, i64 4, !11, i64 8, !16, i64 16, !58, i64 32, !58, i64 48, !14, i64 64, !11, i64 68, !13, i64 72, !59, i64 76, !13, i64 3696, !14, i64 3700, !14, i64 3701, !14, i64 3702, !11, i64 3704, !6, i64 3712, !6, i64 3720}
!58 = !{!"_ZTS8ImVectorIcE", !11, i64 0, !11, i64 4, !6, i64 8}
!59 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !11, i64 0, !11, i64 4, !11, 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, !13, i64 20, !60, i64 24}
!60 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !15, i64 3582, !15, i64 3584, !11, i64 3588, !11, i64 3592}
!61 = !{!"_ZTS6ImFont", !62, i64 0, !13, i64 16, !13, i64 20, !16, i64 24, !63, i64 40, !6, i64 56, !12, i64 64, !6, i64 72, !6, i64 80, !15, i64 88, !15, i64 90, !15, i64 92, !14, i64 94, !13, i64 96, !13, i64 100, !13, i64 104, !11, i64 108, !7, i64 112}
!62 = !{!"_ZTS8ImVectorIfE", !11, i64 0, !11, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !11, i64 0, !11, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorIjE", !11, i64 0, !11, i64 4, !6, i64 8}
!65 = !{!"_ZTS16ImGuiDockContext", !35, i64 0, !66, i64 16, !67, i64 32, !14, i64 48}
!66 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !11, i64 0, !11, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !11, i64 0, !11, i64 4, !6, i64 8}
!68 = !{!"_ZTS15ImGuiTextBuffer", !58, i64 0}
!69 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !11, i64 0, !11, i64 4, !6, i64 8}
!70 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !58, i64 0}
!71 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!72 = !{!73, !6, i64 0}
!73 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !41, i64 20, !6, i64 48, !11, i64 56, !12, i64 60, !11, i64 68, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !13, i64 120, !13, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !12, i64 140, !12, i64 148, !12, i64 156, !12, i64 164, !12, i64 172, !14, i64 180, !14, i64 181, !14, i64 182, !14, i64 183, !14, i64 184, !14, i64 185, !14, i64 186, !14, i64 187, !14, i64 188, !14, i64 189, !14, i64 190, !14, i64 191, !14, i64 192, !7, i64 193, !15, i64 194, !15, i64 196, !15, i64 198, !11, i64 200, !7, i64 204, !7, i64 205, !7, i64 206, !14, i64 207, !11, i64 208, !11, i64 212, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !11, i64 232, !12, i64 236, !12, i64 244, !64, i64 256, !74, i64 272, !40, i64 600, !40, i64 616, !40, i64 632, !40, i64 648, !40, i64 664, !40, i64 680, !40, i64 696, !79, i64 712, !79, i64 716, !11, i64 720, !11, i64 724, !13, i64 728, !13, i64 732, !35, i64 736, !80, i64 752, !13, i64 768, !13, i64 772, !11, i64 776, !6, i64 784, !81, i64 792, !6, i64 1016, !6, i64 1024, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056, !7, i64 1064, !7, i64 1072, !14, i64 1104, !11, i64 1108, !11, i64 1112, !6, i64 1120, !6, i64 1128, !11, i64 1136, !11, i64 1140, !40, i64 1144, !15, i64 1160, !14, i64 1162, !14, i64 1162, !14, i64 1162}
!74 = !{!"_ZTS19ImGuiWindowTempData", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !13, i64 48, !13, i64 52, !75, i64 56, !75, i64 60, !75, i64 64, !11, i64 68, !11, i64 72, !40, i64 76, !40, i64 92, !48, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !14, i64 128, !14, i64 129, !14, i64 130, !12, i64 132, !76, i64 140, !11, i64 176, !11, i64 180, !34, i64 184, !6, i64 200, !6, i64 208, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !11, i64 232, !13, i64 236, !13, i64 240, !77, i64 248, !62, i64 264, !62, i64 280, !78, i64 296, !7, i64 312}
!75 = !{!"_ZTS6ImVec1", !13, i64 0}
!76 = !{!"_ZTS16ImGuiMenuColumns", !13, i64 0, !13, i64 4, !13, i64 8, !7, i64 12, !7, i64 24}
!77 = !{!"_ZTS8ImVectorIiE", !11, i64 0, !11, i64 4, !6, i64 8}
!78 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !11, i64 0, !11, i64 4, !6, i64 8}
!79 = !{!"_ZTS8ImVec2ih", !15, i64 0, !15, i64 2}
!80 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !11, i64 0, !11, i64 4, !6, i64 8}
!81 = !{!"_ZTS10ImDrawList", !82, i64 0, !16, i64 16, !83, i64 32, !11, i64 48, !6, i64 56, !6, i64 64, !11, i64 72, !6, i64 80, !6, i64 88, !84, i64 96, !85, i64 112, !86, i64 128, !87, i64 144, !88, i64 200}
!82 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !11, i64 0, !11, i64 4, !6, i64 8}
!83 = !{!"_ZTS8ImVectorI10ImDrawVertE", !11, i64 0, !11, i64 4, !6, i64 8}
!84 = !{!"_ZTS8ImVectorI6ImVec4E", !11, i64 0, !11, i64 4, !6, i64 8}
!85 = !{!"_ZTS8ImVectorIPvE", !11, i64 0, !11, i64 4, !6, i64 8}
!86 = !{!"_ZTS8ImVectorI6ImVec2E", !11, i64 0, !11, i64 4, !6, i64 8}
!87 = !{!"_ZTS9ImDrawCmd", !32, i64 0, !6, i64 16, !11, i64 24, !11, i64 28, !11, i64 32, !6, i64 40, !6, i64 48}
!88 = !{!"_ZTS18ImDrawListSplitter", !11, i64 0, !11, i64 4, !89, i64 8}
!89 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !11, i64 0, !11, i64 4, !6, i64 8}
!90 = !{!11, !11, i64 0}
!91 = !{!40, !13, i64 0}
!92 = !{!40, !13, i64 4}
!93 = !{!40, !13, i64 8}
!94 = !{!40, !13, i64 12}
!95 = distinct !{!95, !96}
!96 = !{!"llvm.loop.mustprogress"}
!97 = !{!26, !11, i64 7488}
!98 = !{!26, !11, i64 5664}
!99 = !{!100, !13, i64 32}
!100 = !{!"_ZTS20ImGuiPlatformMonitor", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !13, i64 32}
!101 = !{!100, !13, i64 0}
!102 = !{!100, !13, i64 4}
!103 = !{!100, !13, i64 8}
!104 = !{!100, !13, i64 12}
!105 = !{!100, !13, i64 16}
!106 = !{!100, !13, i64 20}
!107 = !{!100, !13, i64 24}
!108 = !{!100, !13, i64 28}
!109 = distinct !{!109, !96}
!110 = distinct !{!110, !96}
!111 = !{!26, !11, i64 7456}
!112 = !{!113, !6, i64 8}
!113 = !{!"_ZTS14ImGuiPopupData", !11, i64 0, !6, i64 8, !6, i64 16, !11, i64 24, !11, i64 28, !12, i64 32, !12, i64 40}
!114 = !{!113, !11, i64 0}
!115 = !{!73, !11, i64 12}
!116 = distinct !{!116, !96}
!117 = distinct !{!117, !96}
!118 = !{!65, !14, i64 48}
!119 = !{!65, !11, i64 0}
!120 = !{!7, !7, i64 0}
!121 = distinct !{!121, !96}
!122 = !{!26, !6, i64 32}
!123 = !{!26, !13, i64 12220}
!124 = !{!26, !11, i64 12240}
!125 = !{!126, !6, i64 0}
!126 = !{!"_ZTS20ImGuiSettingsHandler", !6, i64 0, !11, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64}
!127 = distinct !{!127, !96}
!128 = distinct !{!128, !96}
!129 = !{!130, !11, i64 20}
!130 = !{!"_ZTS19ImGuiWindowSettings", !11, i64 0, !79, i64 4, !79, i64 8, !79, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !15, i64 28, !14, i64 30, !14, i64 31}
!131 = distinct !{!131, !96}
!132 = !{!65, !11, i64 32}
!133 = !{!134, !11, i64 12}
!134 = !{!"_ZTS21ImGuiDockNodeSettings", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !7, i64 16, !7, i64 17, !11, i64 20, !79, i64 24, !79, i64 28, !79, i64 32}
!135 = !{!134, !11, i64 0}
!136 = !{!134, !11, i64 4}
!137 = distinct !{!137, !96}
!138 = !{!26, !11, i64 12224}
!139 = !{!26, !6, i64 7072}
!140 = !{!26, !6, i64 7080}
!141 = !{!26, !6, i64 7088}
!142 = !{!26, !6, i64 7096}
!143 = !{!144, !11, i64 0}
!144 = !{!"_ZTS13ImGuiDockNode", !11, i64 0, !11, i64 4, !11, i64 8, !6, i64 16, !7, i64 24, !34, i64 40, !6, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !145, i64 88, !41, i64 92, !146, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !11, i64 160, !11, i64 164, !11, i64 168, !11, i64 172, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 184, !11, i64 184, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 186, !14, i64 186, !14, i64 186, !14, i64 186}
!145 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!146 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!147 = !{!26, !6, i64 7104}
!148 = !{!26, !6, i64 7520}
!149 = !{!150, !11, i64 0}
!150 = !{!"_ZTS13ImGuiViewport", !11, i64 0, !11, i64 4, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !13, i64 40, !6, i64 48, !11, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !14, i64 96, !14, i64 97, !14, i64 98}
!151 = !{!26, !11, i64 320}
!152 = !{!26, !6, i64 7528}
!153 = !{!26, !11, i64 7152}
!154 = !{!26, !11, i64 7216}
!155 = !{!26, !13, i64 7160}
!156 = !{!26, !14, i64 7165}
!157 = !{!26, !38, i64 7208}
!158 = !{!26, !6, i64 7200}
!159 = !{!26, !11, i64 7132}
!160 = !{!26, !11, i64 7136}
!161 = !{!26, !13, i64 7144}
!162 = !{!26, !14, i64 7140}
!163 = !{!26, !14, i64 7932}
!164 = !{!26, !11, i64 7964}
!165 = !{!26, !11, i64 7960}
!166 = !{!26, !11, i64 7552}
!167 = !{!26, !48, i64 7620}
!168 = !{!26, !38, i64 7596}
!169 = !{!26, !14, i64 929}
!170 = !{!26, !14, i64 930}
!171 = !{!26, !11, i64 7560}
!172 = !{!26, !11, i64 7572}
!173 = !{!26, !14, i64 7630}
!174 = !{!26, !14, i64 7631}
!175 = !{!26, !11, i64 7556}
!176 = !{!26, !6, i64 7848}
!177 = !{!26, !11, i64 6976}
!178 = !{!73, !14, i64 184}
!179 = !{!73, !15, i64 198}
!180 = !{!13, !13, i64 0}
!181 = distinct !{!181, !96}
!182 = !{!26, !14, i64 324}
!183 = !{!144, !6, i64 128}
!184 = !{!144, !11, i64 92}
!185 = !{!144, !13, i64 72}
!186 = !{!144, !13, i64 76}
!187 = !{!144, !13, i64 80}
!188 = !{!144, !13, i64 84}


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

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

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [19 x i8], align 1
@__const._ZN5ImGui17ShowMetricsWindowEPb.wrt_rects_names = external hidden unnamed_addr constant [7 x ptr], align 16
@_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects = external hidden global i8, align 1
@_ZZN5ImGui17ShowMetricsWindowEPbE22show_windows_rect_type = external hidden global i32, align 4
@_ZZN5ImGui17ShowMetricsWindowEPbE24show_windows_begin_order = external hidden global i8, align 1
@_ZZN5ImGui17ShowMetricsWindowEPbE17show_drawcmd_mesh = external hidden global i8, align 1
@_ZZN5ImGui17ShowMetricsWindowEPbE17show_drawcmd_aabb = external hidden global i8, align 1
@_ZZN5ImGui17ShowMetricsWindowEPbE18show_docking_nodes = external hidden global i8, align 1
@.str.242 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.243 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.244 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.245 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.246 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.247 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [133 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.252 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.256 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.257 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.258 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.259 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.260 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.261 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.262 = external hidden unnamed_addr constant [139 x i8], align 1
@.str.263 = external hidden unnamed_addr constant [152 x i8], align 1
@.str.264 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.265 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.266 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.267 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.268 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.269 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.270 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.271 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.272 = external hidden unnamed_addr constant [11 x i8], align 1
@_ZZN5ImGui17ShowMetricsWindowEPbE15root_nodes_only = external hidden global i8, align 1
@.str.273 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.274 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.275 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.276 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.277 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.278 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.279 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.280 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.281 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.282 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.283 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.284 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.285 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.286 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.287 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.288 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.289 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.290 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.291 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.292 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.293 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.294 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.295 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.296 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.297 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.298 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.299 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.300 = external hidden unnamed_addr constant [15 x i8], align 1
@__const._ZN5ImGui17ShowMetricsWindowEPb.input_source_names = external hidden unnamed_addr constant [5 x ptr], align 16
@.str.306 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.307 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.308 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.310 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.311 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.312 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.313 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.314 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.315 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.316 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.318 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.320 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.321 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.322 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.323 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.324 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.325 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.326 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.327 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.328 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.329 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.330 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.331 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.332 = external hidden unnamed_addr constant [23 x i8], align 1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z14ImFormatStringPcmPKcz(ptr noundef, i64 noundef, ptr noundef, ...) local_unnamed_addr #1

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

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

declare void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) 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 #7

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(5464) ptr @_ZN5ImGui5GetIOEv() local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK15ImGuiTextBuffer4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

declare noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5ImGui17ShowMetricsWindowEPb(ptr noundef %0) local_unnamed_addr #7 {
  %2 = alloca [7 x ptr], align 16
  %3 = alloca %struct.ImVec2, align 4
  %4 = alloca %struct.ImRect, align 8
  %5 = alloca %struct.ImVec2, align 4
  %6 = alloca %struct.ImRect, align 8
  %7 = alloca [32 x i8], align 16
  %8 = alloca %struct.ImVec2, align 8
  %9 = alloca %struct.ImVec2, align 4
  %10 = alloca [64 x i8], align 16
  %11 = alloca %struct.ImVec2, align 8
  %12 = alloca %struct.ImVec2, align 8
  %13 = alloca %struct.ImVec2, align 4
  %14 = alloca %struct.ImVec2, align 8
  %15 = alloca %struct.ImVec2, align 8
  %16 = alloca %struct.ImVec2, align 8
  %17 = alloca %struct.ImVec2, align 4
  %18 = alloca %struct.ImVec2, align 8
  %19 = alloca %struct.ImVec2, align 8
  %20 = alloca %struct.ImVec2, align 4
  %21 = alloca %struct.ImVec2, align 8
  %22 = alloca %struct.ImVec2, align 4
  %23 = alloca %struct.ImVec2, align 8
  %24 = alloca %struct.ImVec2, align 8
  %25 = alloca %struct.ImVec2, align 8
  %26 = alloca %struct.ImVec2, align 4
  %27 = tail call noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef nonnull @.str.226, ptr noundef %0, i32 noundef 0)
  br i1 %27, label %29, label %28

28:                                               ; preds = %1
  tail call void @_ZN5ImGui3EndEv()
  br label %636

29:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %2) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(56) %2, ptr noundef nonnull align 16 dereferenceable(56) @__const._ZN5ImGui17ShowMetricsWindowEPb.wrt_rects_names, i64 56, i1 false)
  %30 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %31 = tail call noundef nonnull align 8 dereferenceable(5464) ptr @_ZN5ImGui5GetIOEv()
  %32 = tail call noundef ptr @_ZN5ImGui10GetVersionEv()
  tail call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.242, ptr noundef %32)
  %33 = getelementptr inbounds i8, ptr %31, i64 924
  %34 = load float, ptr %33, align 4, !tbaa !9
  %35 = fdiv float 1.000000e+03, %34
  %36 = fpext float %35 to double
  %37 = fpext float %34 to double
  tail call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.243, double noundef %36, double noundef %37)
  %38 = getelementptr inbounds i8, ptr %31, i64 928
  %39 = load i32, ptr %38, align 8, !tbaa !17
  %40 = getelementptr inbounds i8, ptr %31, i64 932
  %41 = load i32, ptr %40, align 4, !tbaa !18
  %42 = sdiv i32 %41, 3
  tail call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.244, i32 noundef %39, i32 noundef %41, i32 noundef %42)
  %43 = getelementptr inbounds i8, ptr %31, i64 940
  %44 = load i32, ptr %43, align 4, !tbaa !19
  %45 = getelementptr inbounds i8, ptr %31, i64 936
  %46 = load i32, ptr %45, align 8, !tbaa !20
  tail call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.245, i32 noundef %44, i32 noundef %46)
  %47 = getelementptr inbounds i8, ptr %31, i64 944
  %48 = load i32, ptr %47, align 8, !tbaa !21
  tail call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.246, i32 noundef %48)
  tail call void @_ZN5ImGui9SeparatorEv()
  %49 = tail call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef nonnull @.str.247)
  br i1 %49, label %50, label %196

50:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %3, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %51 = call noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef nonnull @.str.248, ptr noundef nonnull align 4 dereferenceable(8) %3)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  br i1 %51, label %52, label %53

52:                                               ; preds = %50
  call void @_ZN5ImGui20DebugStartItemPickerEv()
  br label %53

53:                                               ; preds = %52, %50
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  call void @_ZL17MetricsHelpMarkerPKc(ptr noundef nonnull @.str.249)
  %54 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.250, ptr noundef nonnull @_ZZN5ImGui17ShowMetricsWindowEPbE24show_windows_begin_order)
  %55 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.251, ptr noundef nonnull @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects)
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %56 = call noundef float @_ZN5ImGui11GetFontSizeEv()
  %57 = fmul float %56, 1.200000e+01
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %57)
  %58 = call noundef zeroext i1 @_ZN5ImGui5ComboEPKcPiPKS1_ii(ptr noundef nonnull @.str.252, ptr noundef nonnull @_ZZN5ImGui17ShowMetricsWindowEPbE22show_windows_rect_type, ptr noundef nonnull %2, i32 noundef 7, i32 noundef 7)
  %59 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects, align 1, !tbaa !22, !range !23, !noundef !24
  %60 = zext i1 %58 to i8
  %61 = or i8 %59, %60
  %.not = icmp eq i8 %61, 0
  store i8 %61, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects, align 1, !tbaa !22
  br i1 %.not, label %193, label %62

62:                                               ; preds = %53
  %63 = getelementptr inbounds i8, ptr %30, i64 7544
  %64 = load ptr, ptr %63, align 8, !tbaa !25
  %.not249 = icmp eq ptr %64, null
  br i1 %.not249, label %193, label %65

65:                                               ; preds = %62
  %66 = load ptr, ptr %64, align 8, !tbaa !72
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef nonnull @.str.253, ptr noundef %66)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %67 = getelementptr inbounds i8, ptr %4, i64 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #10
  %68 = load ptr, ptr %63, align 8, !tbaa !25
  %69 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %68, i32 noundef 0)
  %70 = extractvalue { <2 x float>, <2 x float> } %69, 0
  store <2 x float> %70, ptr %4, align 8
  %71 = extractvalue { <2 x float>, <2 x float> } %69, 1
  store <2 x float> %71, ptr %67, align 8
  %72 = extractelement <2 x float> %70, i64 0
  %73 = fpext float %72 to double
  %74 = extractelement <2 x float> %70, i64 1
  %75 = fpext float %74 to double
  %76 = extractelement <2 x float> %71, i64 0
  %77 = fpext float %76 to double
  %78 = extractelement <2 x float> %71, i64 1
  %79 = fpext float %78 to double
  %80 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %81 = fpext float %80 to double
  %82 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %83 = fpext float %82 to double
  %84 = load ptr, ptr %2, align 16, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.254, double noundef %73, double noundef %75, double noundef %77, double noundef %79, double noundef %81, double noundef %83, ptr noundef %84)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #10
  %85 = load ptr, ptr %63, align 8, !tbaa !25
  %86 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %85, i32 noundef 1)
  %87 = extractvalue { <2 x float>, <2 x float> } %86, 0
  store <2 x float> %87, ptr %4, align 8
  %88 = extractvalue { <2 x float>, <2 x float> } %86, 1
  store <2 x float> %88, ptr %67, align 8
  %89 = extractelement <2 x float> %87, i64 0
  %90 = fpext float %89 to double
  %91 = extractelement <2 x float> %87, i64 1
  %92 = fpext float %91 to double
  %93 = extractelement <2 x float> %88, i64 0
  %94 = fpext float %93 to double
  %95 = extractelement <2 x float> %88, i64 1
  %96 = fpext float %95 to double
  %97 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %98 = fpext float %97 to double
  %99 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %100 = fpext float %99 to double
  %101 = getelementptr inbounds i8, ptr %2, i64 8
  %102 = load ptr, ptr %101, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.254, double noundef %90, double noundef %92, double noundef %94, double noundef %96, double noundef %98, double noundef %100, ptr noundef %102)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #10
  %103 = load ptr, ptr %63, align 8, !tbaa !25
  %104 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %103, i32 noundef 2)
  %105 = extractvalue { <2 x float>, <2 x float> } %104, 0
  store <2 x float> %105, ptr %4, align 8
  %106 = extractvalue { <2 x float>, <2 x float> } %104, 1
  store <2 x float> %106, ptr %67, align 8
  %107 = extractelement <2 x float> %105, i64 0
  %108 = fpext float %107 to double
  %109 = extractelement <2 x float> %105, i64 1
  %110 = fpext float %109 to double
  %111 = extractelement <2 x float> %106, i64 0
  %112 = fpext float %111 to double
  %113 = extractelement <2 x float> %106, i64 1
  %114 = fpext float %113 to double
  %115 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %116 = fpext float %115 to double
  %117 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %118 = fpext float %117 to double
  %119 = getelementptr inbounds i8, ptr %2, i64 16
  %120 = load ptr, ptr %119, align 16, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.254, double noundef %108, double noundef %110, double noundef %112, double noundef %114, double noundef %116, double noundef %118, ptr noundef %120)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #10
  %121 = load ptr, ptr %63, align 8, !tbaa !25
  %122 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %121, i32 noundef 3)
  %123 = extractvalue { <2 x float>, <2 x float> } %122, 0
  store <2 x float> %123, ptr %4, align 8
  %124 = extractvalue { <2 x float>, <2 x float> } %122, 1
  store <2 x float> %124, ptr %67, align 8
  %125 = extractelement <2 x float> %123, i64 0
  %126 = fpext float %125 to double
  %127 = extractelement <2 x float> %123, i64 1
  %128 = fpext float %127 to double
  %129 = extractelement <2 x float> %124, i64 0
  %130 = fpext float %129 to double
  %131 = extractelement <2 x float> %124, i64 1
  %132 = fpext float %131 to double
  %133 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %134 = fpext float %133 to double
  %135 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %136 = fpext float %135 to double
  %137 = getelementptr inbounds i8, ptr %2, i64 24
  %138 = load ptr, ptr %137, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.254, double noundef %126, double noundef %128, double noundef %130, double noundef %132, double noundef %134, double noundef %136, ptr noundef %138)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #10
  %139 = load ptr, ptr %63, align 8, !tbaa !25
  %140 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %139, i32 noundef 4)
  %141 = extractvalue { <2 x float>, <2 x float> } %140, 0
  store <2 x float> %141, ptr %4, align 8
  %142 = extractvalue { <2 x float>, <2 x float> } %140, 1
  store <2 x float> %142, ptr %67, align 8
  %143 = extractelement <2 x float> %141, i64 0
  %144 = fpext float %143 to double
  %145 = extractelement <2 x float> %141, i64 1
  %146 = fpext float %145 to double
  %147 = extractelement <2 x float> %142, i64 0
  %148 = fpext float %147 to double
  %149 = extractelement <2 x float> %142, i64 1
  %150 = fpext float %149 to double
  %151 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %152 = fpext float %151 to double
  %153 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %154 = fpext float %153 to double
  %155 = getelementptr inbounds i8, ptr %2, i64 32
  %156 = load ptr, ptr %155, align 16, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.254, double noundef %144, double noundef %146, double noundef %148, double noundef %150, double noundef %152, double noundef %154, ptr noundef %156)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #10
  %157 = load ptr, ptr %63, align 8, !tbaa !25
  %158 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %157, i32 noundef 5)
  %159 = extractvalue { <2 x float>, <2 x float> } %158, 0
  store <2 x float> %159, ptr %4, align 8
  %160 = extractvalue { <2 x float>, <2 x float> } %158, 1
  store <2 x float> %160, ptr %67, align 8
  %161 = extractelement <2 x float> %159, i64 0
  %162 = fpext float %161 to double
  %163 = extractelement <2 x float> %159, i64 1
  %164 = fpext float %163 to double
  %165 = extractelement <2 x float> %160, i64 0
  %166 = fpext float %165 to double
  %167 = extractelement <2 x float> %160, i64 1
  %168 = fpext float %167 to double
  %169 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %170 = fpext float %169 to double
  %171 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %172 = fpext float %171 to double
  %173 = getelementptr inbounds i8, ptr %2, i64 40
  %174 = load ptr, ptr %173, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.254, double noundef %162, double noundef %164, double noundef %166, double noundef %168, double noundef %170, double noundef %172, ptr noundef %174)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #10
  %175 = load ptr, ptr %63, align 8, !tbaa !25
  %176 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %175, i32 noundef 6)
  %177 = extractvalue { <2 x float>, <2 x float> } %176, 0
  store <2 x float> %177, ptr %4, align 8
  %178 = extractvalue { <2 x float>, <2 x float> } %176, 1
  store <2 x float> %178, ptr %67, align 8
  %179 = extractelement <2 x float> %177, i64 0
  %180 = fpext float %179 to double
  %181 = extractelement <2 x float> %177, i64 1
  %182 = fpext float %181 to double
  %183 = extractelement <2 x float> %178, i64 0
  %184 = fpext float %183 to double
  %185 = extractelement <2 x float> %178, i64 1
  %186 = fpext float %185 to double
  %187 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %188 = fpext float %187 to double
  %189 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %190 = fpext float %189 to double
  %191 = getelementptr inbounds i8, ptr %2, i64 48
  %192 = load ptr, ptr %191, align 16, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.254, double noundef %180, double noundef %182, double noundef %184, double noundef %186, double noundef %188, double noundef %190, ptr noundef %192)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #10
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  br label %193

193:                                              ; preds = %65, %62, %53
  %194 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.255, ptr noundef nonnull @_ZZN5ImGui17ShowMetricsWindowEPbE17show_drawcmd_mesh)
  %195 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.256, ptr noundef nonnull @_ZZN5ImGui17ShowMetricsWindowEPbE17show_drawcmd_aabb)
  call void @_ZN5ImGui7TreePopEv()
  br label %196

196:                                              ; preds = %193, %29
  %197 = getelementptr inbounds i8, ptr %30, i64 6976
  call void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs11NodeWindowsER8ImVectorIP11ImGuiWindowEPKc(ptr noundef nonnull align 8 dereferenceable(16) %197, ptr noundef nonnull @.str.257)
  %198 = getelementptr inbounds i8, ptr %30, i64 7488
  %199 = load i32, ptr %198, align 8, !tbaa !90
  %200 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.258, ptr noundef nonnull @.str.259, i32 noundef %199)
  br i1 %200, label %201, label %256

201:                                              ; preds = %196
  %202 = call noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv()
  call void @_ZN5ImGui6IndentEf(float noundef %202)
  call void @_ZN5ImGui22ShowViewportThumbnailsEv()
  %203 = call noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv()
  call void @_ZN5ImGui8UnindentEf(float noundef %203)
  %204 = getelementptr inbounds i8, ptr %30, i64 5664
  %205 = load i32, ptr %204, align 8, !tbaa !91
  %206 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.260, ptr noundef nonnull @.str.261, i32 noundef %205)
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  call void @_ZL17MetricsHelpMarkerPKc(ptr noundef nonnull @.str.262)
  br i1 %206, label %.preheader286, label %248

.preheader286:                                    ; preds = %201
  %207 = load i32, ptr %204, align 8, !tbaa !91
  %208 = icmp sgt i32 %207, 0
  br i1 %208, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph, %.preheader286
  call void @_ZN5ImGui7TreePopEv()
  br label %248

.lr.ph:                                           ; preds = %.preheader286, %.lr.ph
  %.0219288 = phi i32 [ %245, %.lr.ph ], [ 0, %.preheader286 ]
  %209 = call noundef nonnull align 4 dereferenceable(36) ptr @_ZN8ImVectorI20ImGuiPlatformMonitorEixEi(ptr noundef nonnull align 8 dereferenceable(16) %204, i32 noundef %.0219288)
  %210 = getelementptr inbounds i8, ptr %209, i64 32
  %211 = load float, ptr %210, align 4, !tbaa !92
  %212 = fmul float %211, 1.000000e+02
  %213 = fpext float %212 to double
  %214 = load float, ptr %209, align 4, !tbaa !94
  %215 = fpext float %214 to double
  %216 = getelementptr inbounds i8, ptr %209, i64 4
  %217 = load float, ptr %216, align 4, !tbaa !95
  %218 = fpext float %217 to double
  %219 = getelementptr inbounds i8, ptr %209, i64 8
  %220 = load float, ptr %219, align 4, !tbaa !96
  %221 = fadd float %214, %220
  %222 = fpext float %221 to double
  %223 = getelementptr inbounds i8, ptr %209, i64 12
  %224 = load float, ptr %223, align 4, !tbaa !97
  %225 = fadd float %217, %224
  %226 = fpext float %225 to double
  %227 = fpext float %220 to double
  %228 = fpext float %224 to double
  %229 = getelementptr inbounds i8, ptr %209, i64 16
  %230 = load float, ptr %229, align 4, !tbaa !98
  %231 = fpext float %230 to double
  %232 = getelementptr inbounds i8, ptr %209, i64 20
  %233 = load float, ptr %232, align 4, !tbaa !99
  %234 = fpext float %233 to double
  %235 = getelementptr inbounds i8, ptr %209, i64 24
  %236 = load float, ptr %235, align 4, !tbaa !100
  %237 = fadd float %230, %236
  %238 = fpext float %237 to double
  %239 = getelementptr inbounds i8, ptr %209, i64 28
  %240 = load float, ptr %239, align 4, !tbaa !101
  %241 = fadd float %233, %240
  %242 = fpext float %241 to double
  %243 = fpext float %236 to double
  %244 = fpext float %240 to double
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef nonnull @.str.263, i32 noundef %.0219288, double noundef %213, double noundef %215, double noundef %218, double noundef %222, double noundef %226, double noundef %227, double noundef %228, double noundef %231, double noundef %234, double noundef %238, double noundef %242, double noundef %243, double noundef %244)
  %245 = add nuw nsw i32 %.0219288, 1
  %246 = load i32, ptr %204, align 8, !tbaa !91
  %247 = icmp slt i32 %245, %246
  br i1 %247, label %.lr.ph, label %._crit_edge, !llvm.loop !102

248:                                              ; preds = %._crit_edge, %201
  %249 = load i32, ptr %198, align 8, !tbaa !90
  %250 = icmp sgt i32 %249, 0
  br i1 %250, label %.lr.ph291, label %._crit_edge292

._crit_edge292:                                   ; preds = %.lr.ph291, %248
  call void @_ZN5ImGui7TreePopEv()
  br label %256

.lr.ph291:                                        ; preds = %248, %.lr.ph291
  %.0220289 = phi i32 [ %253, %.lr.ph291 ], [ 0, %248 ]
  %251 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP14ImGuiViewportPEixEi(ptr noundef nonnull align 8 dereferenceable(16) %198, i32 noundef %.0220289)
  %252 = load ptr, ptr %251, align 8, !tbaa !5
  call void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12NodeViewportEP14ImGuiViewportP(ptr noundef %252)
  %253 = add nuw nsw i32 %.0220289, 1
  %254 = load i32, ptr %198, align 8, !tbaa !90
  %255 = icmp slt i32 %253, %254
  br i1 %255, label %.lr.ph291, label %._crit_edge292, !llvm.loop !104

256:                                              ; preds = %._crit_edge292, %196
  %257 = getelementptr inbounds i8, ptr %30, i64 7456
  %258 = load i32, ptr %257, align 8, !tbaa !105
  %259 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.264, ptr noundef nonnull @.str.265, i32 noundef %258)
  br i1 %259, label %.preheader285, label %279

.preheader285:                                    ; preds = %256
  %260 = load i32, ptr %257, align 8, !tbaa !105
  %261 = icmp sgt i32 %260, 0
  br i1 %261, label %.lr.ph294, label %._crit_edge295

._crit_edge295:                                   ; preds = %.thread277, %.preheader285
  call void @_ZN5ImGui7TreePopEv()
  br label %279

.lr.ph294:                                        ; preds = %.preheader285, %.thread277
  %.0221293 = phi i32 [ %276, %.thread277 ], [ 0, %.preheader285 ]
  %262 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %257, i32 noundef %.0221293)
  %263 = getelementptr inbounds i8, ptr %262, i64 8
  %264 = load ptr, ptr %263, align 8, !tbaa !106
  %265 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %257, i32 noundef %.0221293)
  %266 = load i32, ptr %265, align 8, !tbaa !108
  %.not272 = icmp eq ptr %264, null
  br i1 %.not272, label %.thread277, label %267

267:                                              ; preds = %.lr.ph294
  %268 = load ptr, ptr %264, align 8, !tbaa !72
  %269 = getelementptr inbounds i8, ptr %264, i64 12
  %270 = load i32, ptr %269, align 4, !tbaa !109
  %.fr282 = freeze i32 %270
  %271 = and i32 %.fr282, 16777216
  %.not281 = icmp eq i32 %271, 0
  %spec.select = select i1 %.not281, ptr @.str.6, ptr @.str.268
  %272 = and i32 %.fr282, 268435456
  %.not283 = icmp eq i32 %272, 0
  %spec.select279 = select i1 %.not283, ptr @.str.6, ptr @.str.269
  br label %.thread277

.thread277:                                       ; preds = %267, %.lr.ph294
  %273 = phi ptr [ @.str.267, %.lr.ph294 ], [ %268, %267 ]
  %274 = phi ptr [ @.str.6, %.lr.ph294 ], [ %spec.select, %267 ]
  %275 = phi ptr [ @.str.6, %.lr.ph294 ], [ %spec.select279, %267 ]
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef nonnull @.str.266, i32 noundef %266, ptr noundef %273, ptr noundef nonnull %274, ptr noundef nonnull %275)
  %276 = add nuw nsw i32 %.0221293, 1
  %277 = load i32, ptr %257, align 8, !tbaa !105
  %278 = icmp slt i32 %276, %277
  br i1 %278, label %.lr.ph294, label %._crit_edge295, !llvm.loop !110

279:                                              ; preds = %._crit_edge295, %256
  %280 = getelementptr inbounds i8, ptr %30, i64 8104
  %281 = call noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE7GetSizeEv(ptr noundef nonnull align 8 dereferenceable(36) %280)
  %282 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.270, ptr noundef nonnull @.str.271, i32 noundef %281)
  br i1 %282, label %.preheader284, label %289

.preheader284:                                    ; preds = %279
  %283 = call noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE7GetSizeEv(ptr noundef nonnull align 8 dereferenceable(36) %280)
  %284 = icmp sgt i32 %283, 0
  br i1 %284, label %.lr.ph297, label %._crit_edge298

._crit_edge298:                                   ; preds = %.lr.ph297, %.preheader284
  call void @_ZN5ImGui7TreePopEv()
  br label %289

.lr.ph297:                                        ; preds = %.preheader284, %.lr.ph297
  %.0222296 = phi i32 [ %286, %.lr.ph297 ], [ 0, %.preheader284 ]
  %285 = call noundef ptr @_ZN6ImPoolI11ImGuiTabBarE10GetByIndexEi(ptr noundef nonnull align 8 dereferenceable(36) %280, i32 noundef %.0222296)
  call void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs10NodeTabBarEP11ImGuiTabBar(ptr noundef %285)
  %286 = add nuw nsw i32 %.0222296, 1
  %287 = call noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE7GetSizeEv(ptr noundef nonnull align 8 dereferenceable(36) %280)
  %288 = icmp slt i32 %286, %287
  br i1 %288, label %.lr.ph297, label %._crit_edge298, !llvm.loop !111

289:                                              ; preds = %._crit_edge298, %279
  %290 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef nonnull @.str.272)
  br i1 %290, label %291, label %317

291:                                              ; preds = %289
  %292 = getelementptr inbounds i8, ptr %30, i64 12160
  %293 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.273, ptr noundef nonnull @_ZZN5ImGui17ShowMetricsWindowEPbE15root_nodes_only)
  %294 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.274, ptr noundef nonnull @_ZZN5ImGui17ShowMetricsWindowEPbE18show_docking_nodes)
  %295 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef nonnull @.str.275)
  br i1 %295, label %296, label %297

296:                                              ; preds = %291
  call void @_ZN5ImGui21DockContextClearNodesEP12ImGuiContextjb(ptr noundef %30, i32 noundef 0, i1 noundef zeroext true)
  br label %297

297:                                              ; preds = %296, %291
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %298 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef nonnull @.str.276)
  br i1 %298, label %299, label %301

299:                                              ; preds = %297
  %300 = getelementptr inbounds i8, ptr %30, i64 12208
  store i8 1, ptr %300, align 8, !tbaa !112
  br label %301

301:                                              ; preds = %299, %297
  %302 = load i32, ptr %292, align 8, !tbaa !113
  %303 = icmp sgt i32 %302, 0
  br i1 %303, label %.lr.ph301, label %._crit_edge302

._crit_edge302:                                   ; preds = %313, %301
  call void @_ZN5ImGui7TreePopEv()
  br label %317

.lr.ph301:                                        ; preds = %301, %313
  %.0223299 = phi i32 [ %314, %313 ], [ 0, %301 ]
  %304 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8ImVectorIN12ImGuiStorage16ImGuiStoragePairEEixEi(ptr noundef nonnull align 8 dereferenceable(16) %292, i32 noundef %.0223299)
  %305 = getelementptr inbounds i8, ptr %304, i64 8
  %306 = load ptr, ptr %305, align 8, !tbaa !114
  %.not271 = icmp eq ptr %306, null
  br i1 %.not271, label %313, label %307

307:                                              ; preds = %.lr.ph301
  %308 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE15root_nodes_only, align 1, !tbaa !22, !range !23, !noundef !24
  %309 = trunc nuw i8 %308 to i1
  br i1 %309, label %310, label %312

310:                                              ; preds = %307
  %311 = call noundef zeroext i1 @_ZNK13ImGuiDockNode10IsRootNodeEv(ptr noundef nonnull align 8 dereferenceable(187) %306)
  br i1 %311, label %312, label %313

312:                                              ; preds = %310, %307
  call void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12NodeDockNodeEP13ImGuiDockNodePKc(ptr noundef nonnull %306, ptr noundef nonnull @.str.277)
  br label %313

313:                                              ; preds = %310, %312, %.lr.ph301
  %314 = add nuw nsw i32 %.0223299, 1
  %315 = load i32, ptr %292, align 8, !tbaa !113
  %316 = icmp slt i32 %314, %315
  br i1 %316, label %.lr.ph301, label %._crit_edge302, !llvm.loop !115

317:                                              ; preds = %._crit_edge302, %289
  %318 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef nonnull @.str.278)
  br i1 %318, label %319, label %403

319:                                              ; preds = %317
  %320 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef nonnull @.str.279)
  br i1 %320, label %321, label %322

321:                                              ; preds = %319
  call void @_ZN5ImGui16ClearIniSettingsEv()
  br label %322

322:                                              ; preds = %321, %319
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %323 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef nonnull @.str.280)
  br i1 %323, label %324, label %326

324:                                              ; preds = %322
  %325 = call noundef ptr @_ZN5ImGui23SaveIniSettingsToMemoryEPm(ptr noundef null)
  br label %326

326:                                              ; preds = %324, %322
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %327 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef nonnull @.str.281)
  br i1 %327, label %328, label %331

328:                                              ; preds = %326
  %329 = getelementptr inbounds i8, ptr %30, i64 32
  %330 = load ptr, ptr %329, align 8, !tbaa !116
  call void @_ZN5ImGui21SaveIniSettingsToDiskEPKc(ptr noundef %330)
  br label %331

331:                                              ; preds = %328, %326
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %332 = getelementptr inbounds i8, ptr %30, i64 32
  %333 = load ptr, ptr %332, align 8, !tbaa !116
  %.not250 = icmp eq ptr %333, null
  br i1 %.not250, label %335, label %334

334:                                              ; preds = %331
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.282, ptr noundef nonnull %333)
  br label %336

335:                                              ; preds = %331
  call void @_ZN5ImGui15TextUnformattedEPKcS1_(ptr noundef nonnull @.str.283, ptr noundef null)
  br label %336

336:                                              ; preds = %335, %334
  %337 = getelementptr inbounds i8, ptr %30, i64 12220
  %338 = load float, ptr %337, align 4, !tbaa !117
  %339 = fpext float %338 to double
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.284, double noundef %339)
  %340 = getelementptr inbounds i8, ptr %30, i64 12240
  %341 = load i32, ptr %340, align 8, !tbaa !118
  %342 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.285, ptr noundef nonnull @.str.286, i32 noundef %341)
  br i1 %342, label %.preheader, label %350

.preheader:                                       ; preds = %336
  %343 = load i32, ptr %340, align 8, !tbaa !118
  %344 = icmp sgt i32 %343, 0
  br i1 %344, label %.lr.ph304, label %._crit_edge305

._crit_edge305:                                   ; preds = %.lr.ph304, %.preheader
  call void @_ZN5ImGui7TreePopEv()
  br label %350

.lr.ph304:                                        ; preds = %.preheader, %.lr.ph304
  %.0225303 = phi i32 [ %347, %.lr.ph304 ], [ 0, %.preheader ]
  %345 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN8ImVectorI20ImGuiSettingsHandlerEixEi(ptr noundef nonnull align 8 dereferenceable(16) %340, i32 noundef %.0225303)
  %346 = load ptr, ptr %345, align 8, !tbaa !119
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef nonnull @.str.287, ptr noundef %346)
  %347 = add nuw nsw i32 %.0225303, 1
  %348 = load i32, ptr %340, align 8, !tbaa !118
  %349 = icmp slt i32 %347, %348
  br i1 %349, label %.lr.ph304, label %._crit_edge305, !llvm.loop !121

350:                                              ; preds = %._crit_edge305, %336
  %351 = getelementptr inbounds i8, ptr %30, i64 12256
  %352 = call noundef i32 @_ZNK13ImChunkStreamI19ImGuiWindowSettingsE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %351)
  %353 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.288, ptr noundef nonnull @.str.289, i32 noundef %352)
  br i1 %353, label %354, label %357

354:                                              ; preds = %350
  %355 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %351)
  %.not251306 = icmp eq ptr %355, null
  br i1 %.not251306, label %._crit_edge310, label %.lr.ph309

._crit_edge310:                                   ; preds = %.lr.ph309, %354
  call void @_ZN5ImGui7TreePopEv()
  br label %357

.lr.ph309:                                        ; preds = %354, %.lr.ph309
  %.0226307 = phi ptr [ %356, %.lr.ph309 ], [ %355, %354 ]
  call void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs18NodeWindowSettingsEP19ImGuiWindowSettings(ptr noundef nonnull %.0226307)
  %356 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE10next_chunkEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %351, ptr noundef nonnull %.0226307)
  %.not251 = icmp eq ptr %356, null
  br i1 %.not251, label %._crit_edge310, label %.lr.ph309, !llvm.loop !122

357:                                              ; preds = %._crit_edge310, %350
  %358 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.290, ptr noundef nonnull @.str.291)
  br i1 %358, label %359, label %393

359:                                              ; preds = %357
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.292)
  %360 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %351)
  %.not252311 = icmp eq ptr %360, null
  br i1 %.not252311, label %._crit_edge315, label %.lr.ph314

._crit_edge315:                                   ; preds = %369, %359
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.294)
  %361 = getelementptr inbounds i8, ptr %30, i64 12192
  %362 = load i32, ptr %361, align 8, !tbaa !123
  %363 = icmp sgt i32 %362, 0
  br i1 %363, label %.lr.ph318, label %._crit_edge319

.lr.ph314:                                        ; preds = %359, %369
  %.0228312 = phi ptr [ %370, %369 ], [ %360, %359 ]
  %364 = getelementptr inbounds i8, ptr %.0228312, i64 20
  %365 = load i32, ptr %364, align 4, !tbaa !124
  %.not270 = icmp eq i32 %365, 0
  br i1 %.not270, label %369, label %366

366:                                              ; preds = %.lr.ph314
  %367 = call noundef ptr @_ZN19ImGuiWindowSettings7GetNameEv(ptr noundef nonnull align 4 dereferenceable(32) %.0228312)
  %368 = load i32, ptr %364, align 4, !tbaa !124
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef nonnull @.str.293, ptr noundef %367, i32 noundef %368)
  br label %369

369:                                              ; preds = %.lr.ph314, %366
  %370 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE10next_chunkEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %351, ptr noundef nonnull %.0228312)
  %.not252 = icmp eq ptr %370, null
  br i1 %.not252, label %._crit_edge315, label %.lr.ph314, !llvm.loop !126

._crit_edge319:                                   ; preds = %383, %._crit_edge315
  call void @_ZN5ImGui7TreePopEv()
  br label %393

.lr.ph318:                                        ; preds = %._crit_edge315, %383
  %.0229316 = phi i32 [ %390, %383 ], [ 0, %._crit_edge315 ]
  %371 = call noundef nonnull align 4 dereferenceable(36) ptr @_ZN8ImVectorI21ImGuiDockNodeSettingsEixEi(ptr noundef nonnull align 8 dereferenceable(16) %361, i32 noundef %.0229316)
  %372 = getelementptr inbounds i8, ptr %371, i64 12
  %373 = load i32, ptr %372, align 4, !tbaa !127
  %.not265 = icmp eq i32 %373, 0
  br i1 %.not265, label %383, label %374

374:                                              ; preds = %.lr.ph318
  %375 = call noundef ptr @_ZN5ImGui14FindWindowByIDEj(i32 noundef %373)
  %.not266 = icmp eq ptr %375, null
  br i1 %.not266, label %378, label %376

376:                                              ; preds = %374
  %377 = load ptr, ptr %375, align 8, !tbaa !72
  br label %383

378:                                              ; preds = %374
  %379 = load i32, ptr %372, align 4, !tbaa !127
  %380 = call noundef ptr @_ZN5ImGui18FindWindowSettingsEj(i32 noundef %379)
  %.not267 = icmp eq ptr %380, null
  br i1 %.not267, label %383, label %381

381:                                              ; preds = %378
  %382 = call noundef ptr @_ZN19ImGuiWindowSettings7GetNameEv(ptr noundef nonnull align 4 dereferenceable(32) %380)
  br label %383

383:                                              ; preds = %376, %381, %378, %.lr.ph318
  %.2 = phi ptr [ null, %.lr.ph318 ], [ %377, %376 ], [ %382, %381 ], [ null, %378 ]
  %384 = load i32, ptr %371, align 4, !tbaa !129
  %385 = getelementptr inbounds i8, ptr %371, i64 4
  %386 = load i32, ptr %385, align 4, !tbaa !130
  %387 = load i32, ptr %372, align 4, !tbaa !127
  %.not268 = icmp eq ptr %.2, null
  %.not269 = icmp eq i32 %387, 0
  %388 = select i1 %.not269, ptr @.str.6, ptr @.str.296
  %389 = select i1 %.not268, ptr %388, ptr %.2
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef nonnull @.str.295, i32 noundef %384, i32 noundef %386, i32 noundef %387, ptr noundef nonnull %389)
  %390 = add nuw nsw i32 %.0229316, 1
  %391 = load i32, ptr %361, align 8, !tbaa !123
  %392 = icmp slt i32 %390, %391
  br i1 %392, label %.lr.ph318, label %._crit_edge319, !llvm.loop !131

393:                                              ; preds = %._crit_edge319, %357
  %394 = getelementptr inbounds i8, ptr %30, i64 12224
  %395 = call noundef i32 @_ZNK15ImGuiTextBuffer4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %394)
  %396 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.297, ptr noundef nonnull @.str.298, i32 noundef %395)
  br i1 %396, label %397, label %402

397:                                              ; preds = %393
  %398 = call noundef ptr @_ZNK15ImGuiTextBuffer5c_strEv(ptr noundef nonnull align 8 dereferenceable(16) %394)
  %399 = load i32, ptr %394, align 8, !tbaa !132
  %400 = sext i32 %399 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %5, float noundef 0xB810000000000000, float noundef 0.000000e+00)
  %401 = call noundef zeroext i1 @_ZN5ImGui18InputTextMultilineEPKcPcmRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull @.str.299, ptr noundef %398, i64 noundef %400, ptr noundef nonnull align 4 dereferenceable(8) %5, i32 noundef 16384, ptr noundef null, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @_ZN5ImGui7TreePopEv()
  br label %402

402:                                              ; preds = %397, %393
  call void @_ZN5ImGui7TreePopEv()
  br label %403

403:                                              ; preds = %402, %317
  %404 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef nonnull @.str.300)
  br i1 %404, label %405, label %525

405:                                              ; preds = %403
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.306)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %406 = getelementptr inbounds i8, ptr %30, i64 7072
  %407 = load ptr, ptr %406, align 8, !tbaa !133
  %.not253 = icmp eq ptr %407, null
  br i1 %.not253, label %410, label %408

408:                                              ; preds = %405
  %409 = load ptr, ptr %407, align 8, !tbaa !72
  br label %410

410:                                              ; preds = %405, %408
  %411 = phi ptr [ %409, %408 ], [ @.str.267, %405 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.307, ptr noundef %411)
  %412 = getelementptr inbounds i8, ptr %30, i64 7080
  %413 = load ptr, ptr %412, align 8, !tbaa !134
  %.not254 = icmp eq ptr %413, null
  br i1 %.not254, label %416, label %414

414:                                              ; preds = %410
  %415 = load ptr, ptr %413, align 8, !tbaa !72
  br label %416

416:                                              ; preds = %410, %414
  %417 = phi ptr [ %415, %414 ], [ @.str.267, %410 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.308, ptr noundef %417)
  %418 = getelementptr inbounds i8, ptr %30, i64 7088
  %419 = load ptr, ptr %418, align 8, !tbaa !135
  %.not255 = icmp eq ptr %419, null
  br i1 %.not255, label %422, label %420

420:                                              ; preds = %416
  %421 = load ptr, ptr %419, align 8, !tbaa !72
  br label %422

422:                                              ; preds = %416, %420
  %423 = phi ptr [ %421, %420 ], [ @.str.267, %416 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.309, ptr noundef %423)
  %424 = getelementptr inbounds i8, ptr %30, i64 7096
  %425 = load ptr, ptr %424, align 8, !tbaa !136
  %.not256 = icmp eq ptr %425, null
  br i1 %.not256, label %428, label %426

426:                                              ; preds = %422
  %427 = load i32, ptr %425, align 8, !tbaa !137
  br label %428

428:                                              ; preds = %422, %426
  %429 = phi i32 [ %427, %426 ], [ 0, %422 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.310, i32 noundef %429)
  %430 = getelementptr inbounds i8, ptr %30, i64 7104
  %431 = load ptr, ptr %430, align 8, !tbaa !141
  %.not257 = icmp eq ptr %431, null
  br i1 %.not257, label %434, label %432

432:                                              ; preds = %428
  %433 = load ptr, ptr %431, align 8, !tbaa !72
  br label %434

434:                                              ; preds = %428, %432
  %435 = phi ptr [ %433, %432 ], [ @.str.267, %428 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.311, ptr noundef %435)
  %436 = getelementptr inbounds i8, ptr %30, i64 7520
  %437 = load ptr, ptr %436, align 8, !tbaa !142
  %438 = load i32, ptr %437, align 8, !tbaa !143
  %439 = getelementptr inbounds i8, ptr %30, i64 320
  %440 = load i32, ptr %439, align 8, !tbaa !145
  %441 = getelementptr inbounds i8, ptr %30, i64 7528
  %442 = load ptr, ptr %441, align 8, !tbaa !146
  %.not258 = icmp eq ptr %442, null
  br i1 %.not258, label %445, label %443

443:                                              ; preds = %434
  %444 = load i32, ptr %442, align 8, !tbaa !143
  br label %445

445:                                              ; preds = %434, %443
  %446 = phi i32 [ %444, %443 ], [ 0, %434 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.312, i32 noundef %438, i32 noundef %440, i32 noundef %446)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.313)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %447 = getelementptr inbounds i8, ptr %30, i64 7152
  %448 = load i32, ptr %447, align 8, !tbaa !147
  %449 = getelementptr inbounds i8, ptr %30, i64 7216
  %450 = load i32, ptr %449, align 8, !tbaa !148
  %451 = getelementptr inbounds i8, ptr %30, i64 7160
  %452 = load float, ptr %451, align 8, !tbaa !149
  %453 = fpext float %452 to double
  %454 = getelementptr inbounds i8, ptr %30, i64 7165
  %455 = load i8, ptr %454, align 1, !tbaa !150, !range !23, !noundef !24
  %456 = zext nneg i8 %455 to i32
  %457 = getelementptr inbounds i8, ptr %30, i64 7208
  %458 = load i32, ptr %457, align 8, !tbaa !151
  %459 = zext i32 %458 to i64
  %460 = getelementptr inbounds [5 x ptr], ptr @__const._ZN5ImGui17ShowMetricsWindowEPb.input_source_names, i64 0, i64 %459
  %461 = load ptr, ptr %460, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.314, i32 noundef %448, i32 noundef %450, double noundef %453, i32 noundef %456, ptr noundef %461)
  %462 = getelementptr inbounds i8, ptr %30, i64 7200
  %463 = load ptr, ptr %462, align 8, !tbaa !152
  %.not259 = icmp eq ptr %463, null
  br i1 %.not259, label %466, label %464

464:                                              ; preds = %445
  %465 = load ptr, ptr %463, align 8, !tbaa !72
  br label %466

466:                                              ; preds = %445, %464
  %467 = phi ptr [ %465, %464 ], [ @.str.267, %445 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.315, ptr noundef %467)
  %468 = getelementptr inbounds i8, ptr %30, i64 7132
  %469 = load i32, ptr %468, align 4, !tbaa !153
  %470 = getelementptr inbounds i8, ptr %30, i64 7136
  %471 = load i32, ptr %470, align 8, !tbaa !154
  %472 = getelementptr inbounds i8, ptr %30, i64 7144
  %473 = load float, ptr %472, align 8, !tbaa !155
  %474 = fpext float %473 to double
  %475 = getelementptr inbounds i8, ptr %30, i64 7140
  %476 = load i8, ptr %475, align 4, !tbaa !156, !range !23, !noundef !24
  %477 = zext nneg i8 %476 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.316, i32 noundef %469, i32 noundef %471, double noundef %474, i32 noundef %477)
  %478 = getelementptr inbounds i8, ptr %30, i64 7932
  %479 = load i8, ptr %478, align 4, !tbaa !157, !range !23, !noundef !24
  %480 = zext nneg i8 %479 to i32
  %481 = getelementptr inbounds i8, ptr %30, i64 7964
  %482 = load i32, ptr %481, align 4, !tbaa !158
  %483 = getelementptr inbounds i8, ptr %30, i64 7976
  %484 = getelementptr inbounds i8, ptr %30, i64 7960
  %485 = load i32, ptr %484, align 8, !tbaa !159
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.317, i32 noundef %480, i32 noundef %482, ptr noundef nonnull %483, i32 noundef %485)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.318)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %486 = getelementptr inbounds i8, ptr %30, i64 7544
  %487 = load ptr, ptr %486, align 8, !tbaa !25
  %.not260 = icmp eq ptr %487, null
  br i1 %.not260, label %490, label %488

488:                                              ; preds = %466
  %489 = load ptr, ptr %487, align 8, !tbaa !72
  br label %490

490:                                              ; preds = %466, %488
  %491 = phi ptr [ %489, %488 ], [ @.str.267, %466 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.319, ptr noundef %491)
  %492 = getelementptr inbounds i8, ptr %30, i64 7552
  %493 = load i32, ptr %492, align 8, !tbaa !160
  %494 = getelementptr inbounds i8, ptr %30, i64 7620
  %495 = load i32, ptr %494, align 4, !tbaa !161
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.320, i32 noundef %493, i32 noundef %495)
  %496 = getelementptr inbounds i8, ptr %30, i64 7596
  %497 = load i32, ptr %496, align 4, !tbaa !162
  %498 = zext i32 %497 to i64
  %499 = getelementptr inbounds [5 x ptr], ptr @__const._ZN5ImGui17ShowMetricsWindowEPb.input_source_names, i64 0, i64 %498
  %500 = load ptr, ptr %499, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.321, ptr noundef %500)
  %501 = getelementptr inbounds i8, ptr %30, i64 929
  %502 = load i8, ptr %501, align 1, !tbaa !163, !range !23, !noundef !24
  %503 = zext nneg i8 %502 to i32
  %504 = getelementptr inbounds i8, ptr %30, i64 930
  %505 = load i8, ptr %504, align 2, !tbaa !164, !range !23, !noundef !24
  %506 = zext nneg i8 %505 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.322, i32 noundef %503, i32 noundef %506)
  %507 = getelementptr inbounds i8, ptr %30, i64 7560
  %508 = load i32, ptr %507, align 8, !tbaa !165
  %509 = getelementptr inbounds i8, ptr %30, i64 7572
  %510 = load i32, ptr %509, align 4, !tbaa !166
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.323, i32 noundef %508, i32 noundef %510)
  %511 = getelementptr inbounds i8, ptr %30, i64 7630
  %512 = load i8, ptr %511, align 2, !tbaa !167, !range !23, !noundef !24
  %513 = zext nneg i8 %512 to i32
  %514 = getelementptr inbounds i8, ptr %30, i64 7631
  %515 = load i8, ptr %514, align 1, !tbaa !168, !range !23, !noundef !24
  %516 = zext nneg i8 %515 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.324, i32 noundef %513, i32 noundef %516)
  %517 = getelementptr inbounds i8, ptr %30, i64 7556
  %518 = load i32, ptr %517, align 4, !tbaa !169
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.325, i32 noundef %518)
  %519 = getelementptr inbounds i8, ptr %30, i64 7848
  %520 = load ptr, ptr %519, align 8, !tbaa !170
  %.not261 = icmp eq ptr %520, null
  br i1 %.not261, label %523, label %521

521:                                              ; preds = %490
  %522 = load ptr, ptr %520, align 8, !tbaa !72
  br label %523

523:                                              ; preds = %490, %521
  %524 = phi ptr [ %522, %521 ], [ @.str.267, %490 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.326, ptr noundef %524)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void @_ZN5ImGui7TreePopEv()
  br label %525

525:                                              ; preds = %523, %403
  %526 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects, align 1, !tbaa !22, !range !23, !noundef !24
  %527 = trunc nuw i8 %526 to i1
  br i1 %527, label %531, label %528

528:                                              ; preds = %525
  %529 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE24show_windows_begin_order, align 1, !tbaa !22, !range !23, !noundef !24
  %530 = trunc nuw i8 %529 to i1
  br i1 %530, label %531, label %.loopexit

531:                                              ; preds = %528, %525
  %532 = load i32, ptr %197, align 8, !tbaa !171
  %533 = icmp sgt i32 %532, 0
  br i1 %533, label %.lr.ph322, label %.loopexit

.lr.ph322:                                        ; preds = %531
  %534 = getelementptr inbounds i8, ptr %6, i64 8
  br label %535

535:                                              ; preds = %.lr.ph322, %565
  %.0224320 = phi i32 [ 0, %.lr.ph322 ], [ %566, %565 ]
  %536 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %197, i32 noundef %.0224320)
  %537 = load ptr, ptr %536, align 8, !tbaa !5
  %538 = getelementptr inbounds i8, ptr %537, i64 184
  %539 = load i8, ptr %538, align 8, !tbaa !172, !range !23, !noundef !24
  %540 = trunc nuw i8 %539 to i1
  br i1 %540, label %541, label %565

541:                                              ; preds = %535
  %542 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEP11ImGuiWindow(ptr noundef nonnull %537)
  %543 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_windows_rects, align 1, !tbaa !22, !range !23, !noundef !24
  %544 = trunc nuw i8 %543 to i1
  br i1 %544, label %545, label %550

545:                                              ; preds = %541
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #10
  %546 = load i32, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE22show_windows_rect_type, align 4, !tbaa !173
  %547 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef nonnull %537, i32 noundef %546)
  %548 = extractvalue { <2 x float>, <2 x float> } %547, 0
  store <2 x float> %548, ptr %6, align 8
  %549 = extractvalue { <2 x float>, <2 x float> } %547, 1
  store <2 x float> %549, ptr %534, align 8
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(224) %542, ptr noundef nonnull align 4 dereferenceable(8) %6, ptr noundef nonnull align 4 dereferenceable(8) %534, i32 noundef -8388353, float noundef 0.000000e+00, i32 noundef 15, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #10
  br label %550

550:                                              ; preds = %545, %541
  %551 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE24show_windows_begin_order, align 1, !tbaa !22, !range !23, !noundef !24
  %552 = trunc nuw i8 %551 to i1
  br i1 %552, label %553, label %565

553:                                              ; preds = %550
  %554 = getelementptr inbounds i8, ptr %537, i64 12
  %555 = load i32, ptr %554, align 4, !tbaa !109
  %556 = and i32 %555, 16777216
  %.not264 = icmp eq i32 %556, 0
  br i1 %.not264, label %557, label %565

557:                                              ; preds = %553
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #10
  %558 = getelementptr inbounds i8, ptr %537, i64 198
  %559 = load i16, ptr %558, align 2, !tbaa !174
  %560 = sext i16 %559 to i32
  %561 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %7, i64 noundef 32, ptr noundef nonnull @.str.327, i32 noundef %560)
  %562 = call noundef float @_ZN5ImGui11GetFontSizeEv()
  %563 = getelementptr inbounds i8, ptr %537, i64 72
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %9, float noundef %562, float noundef %562)
  %564 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %563, ptr noundef nonnull align 4 dereferenceable(8) %9)
  store <2 x float> %564, ptr %8, align 8
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %542, ptr noundef nonnull align 4 dereferenceable(8) %563, ptr noundef nonnull align 4 dereferenceable(8) %8, i32 noundef -10197816, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(224) %542, ptr noundef nonnull align 4 dereferenceable(8) %563, i32 noundef -1, ptr noundef nonnull %7, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #10
  br label %565

565:                                              ; preds = %550, %553, %557, %535
  %566 = add nuw nsw i32 %.0224320, 1
  %567 = load i32, ptr %197, align 8, !tbaa !171
  %568 = icmp slt i32 %566, %567
  br i1 %568, label %535, label %.loopexit, !llvm.loop !175

.loopexit:                                        ; preds = %565, %531, %528
  %569 = load i8, ptr @_ZZN5ImGui17ShowMetricsWindowEPbE18show_docking_nodes, align 1, !tbaa !22, !range !23, !noundef !24
  %570 = trunc nuw i8 %569 to i1
  br i1 %570, label %571, label %635

571:                                              ; preds = %.loopexit
  %572 = getelementptr inbounds i8, ptr %30, i64 324
  %573 = load i8, ptr %572, align 4, !tbaa !176, !range !23, !noundef !24
  %574 = trunc nuw i8 %573 to i1
  br i1 %574, label %575, label %635

575:                                              ; preds = %571
  %576 = getelementptr inbounds i8, ptr %30, i64 7096
  %577 = load ptr, ptr %576, align 8, !tbaa !136
  %.not262 = icmp eq ptr %577, null
  br i1 %.not262, label %635, label %578

578:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  %579 = getelementptr inbounds i8, ptr %577, i64 128
  %580 = load ptr, ptr %579, align 8, !tbaa !177
  %.not263 = icmp eq ptr %580, null
  br i1 %.not263, label %583, label %581

581:                                              ; preds = %578
  %582 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEP11ImGuiWindow(ptr noundef nonnull %580)
  br label %586

583:                                              ; preds = %578
  %584 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %585 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEP13ImGuiViewport(ptr noundef %584)
  br label %586

586:                                              ; preds = %583, %581
  %587 = phi ptr [ %582, %581 ], [ %585, %583 ]
  %588 = getelementptr inbounds i8, ptr %10, i64 64
  %589 = ptrtoint ptr %588 to i64
  %590 = load i32, ptr %577, align 8, !tbaa !137
  %591 = call noundef zeroext i1 @_ZNK13ImGuiDockNode13IsCentralNodeEv(ptr noundef nonnull align 8 dereferenceable(187) %577)
  %592 = select i1 %591, ptr @.str.329, ptr @.str.6
  %593 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %10, i64 noundef 64, ptr noundef nonnull @.str.328, i32 noundef %590, ptr noundef nonnull %592)
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds i8, ptr %10, i64 %594
  %gepdiff = sub nsw i64 64, %594
  %596 = getelementptr inbounds i8, ptr %577, i64 92
  %597 = load i32, ptr %596, align 4, !tbaa !178
  %598 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %595, i64 noundef %gepdiff, ptr noundef nonnull @.str.330, i32 noundef %597)
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds i8, ptr %595, i64 %599
  %601 = ptrtoint ptr %600 to i64
  %602 = sub i64 %589, %601
  %603 = getelementptr inbounds i8, ptr %577, i64 72
  %604 = load float, ptr %603, align 8, !tbaa !179
  %605 = fpext float %604 to double
  %606 = getelementptr inbounds i8, ptr %577, i64 76
  %607 = load float, ptr %606, align 4, !tbaa !180
  %608 = fpext float %607 to double
  %609 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %600, i64 noundef %602, ptr noundef nonnull @.str.331, double noundef %605, double noundef %608)
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds i8, ptr %600, i64 %610
  %612 = ptrtoint ptr %611 to i64
  %613 = sub i64 %589, %612
  %614 = getelementptr inbounds i8, ptr %577, i64 80
  %615 = load float, ptr %614, align 8, !tbaa !181
  %616 = fpext float %615 to double
  %617 = getelementptr inbounds i8, ptr %577, i64 84
  %618 = load float, ptr %617, align 4, !tbaa !182
  %619 = fpext float %618 to double
  %620 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %611, i64 noundef %613, ptr noundef nonnull @.str.332, double noundef %616, double noundef %619)
  %621 = call noundef i32 @_ZN5ImGui16DockNodeGetDepthEPK13ImGuiDockNode(ptr noundef nonnull %577)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  %622 = getelementptr inbounds i8, ptr %577, i64 64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef 3.000000e+00, float noundef 3.000000e+00)
  %623 = sitofp i32 %621 to float
  %624 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef %623)
  store <2 x float> %624, ptr %12, align 8
  %625 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %622, ptr noundef nonnull align 4 dereferenceable(8) %12)
  store <2 x float> %625, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  %626 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %622, ptr noundef nonnull align 4 dereferenceable(8) %603)
  store <2 x float> %626, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %17, float noundef 3.000000e+00, float noundef 3.000000e+00)
  %627 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %17, float noundef %623)
  store <2 x float> %627, ptr %16, align 8
  %628 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull align 4 dereferenceable(8) %16)
  store <2 x float> %628, ptr %14, align 8
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(224) %587, ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef -10197816, float noundef 0.000000e+00, i32 noundef 15, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %20, float noundef 3.000000e+00, float noundef 3.000000e+00)
  %629 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %20, float noundef %623)
  store <2 x float> %629, ptr %19, align 8
  %630 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %622, ptr noundef nonnull align 4 dereferenceable(8) %19)
  store <2 x float> %630, ptr %18, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %22, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %631 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %18, ptr noundef nonnull align 4 dereferenceable(8) %22)
  store <2 x float> %631, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  %632 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef nonnull %10, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  store <2 x float> %632, ptr %25, align 8
  %633 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %18, ptr noundef nonnull align 4 dereferenceable(8) %25)
  store <2 x float> %633, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %26, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %634 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %26)
  store <2 x float> %634, ptr %23, align 8
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %587, ptr noundef nonnull align 4 dereferenceable(8) %21, ptr noundef nonnull align 4 dereferenceable(8) %23, i32 noundef -10197816, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(224) %587, ptr noundef null, float noundef 0.000000e+00, ptr noundef nonnull align 4 dereferenceable(8) %18, i32 noundef -1, ptr noundef nonnull %10, ptr noundef null, float noundef 0.000000e+00, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #10
  br label %635

635:                                              ; preds = %586, %575, %571, %.loopexit
  call void @_ZN5ImGui3EndEv()
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %2) #10
  br label %636

636:                                              ; preds = %635, %28
  ret void
}

declare void @_ZN5ImGui4TextEPKcz(ptr noundef, ...) local_unnamed_addr #6

declare void @_ZN5ImGui9SeparatorEv() local_unnamed_addr #6

declare noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui20DebugStartItemPickerEv() local_unnamed_addr #5

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

declare noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef, ptr noundef) local_unnamed_addr #6

declare noundef zeroext i1 @_ZN5ImGui5ComboEPKcPiPKS1_ii(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

declare void @_ZN5ImGui10BulletTextEPKcz(ptr noundef, ...) local_unnamed_addr #6

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

declare void @_ZN5ImGui7TreePopEv() local_unnamed_addr #6

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

declare noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef, ptr noundef, ...) local_unnamed_addr #6

declare noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv() local_unnamed_addr #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE7GetSizeEv(ptr noundef nonnull align 8 dereferenceable(36)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6ImPoolI11ImGuiTabBarE10GetByIndexEi(ptr noundef nonnull align 8 dereferenceable(36), i32 noundef) local_unnamed_addr #1 align 2

declare noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12NodeDockNodeEP13ImGuiDockNodePKc(ptr noundef, ptr noundef) local_unnamed_addr #7 align 2

declare void @_ZN5ImGui15TextUnformattedEPKcS1_(ptr noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK13ImChunkStreamI19ImGuiWindowSettingsE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

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

declare noundef zeroext i1 @_ZN5ImGui18InputTextMultilineEPKcPcmRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef, ptr noundef, i64 noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui21GetForegroundDrawListEP11ImGuiWindow(ptr noundef) local_unnamed_addr #9

declare void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN5ImGui16DockNodeGetDepthEPK13ImGuiDockNode(ptr noundef) local_unnamed_addr #5

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 #10 = { 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, !13, i64 924}
!10 = !{!"_ZTS7ImGuiIO", !11, i64 0, !11, i64 4, !12, i64 8, !13, i64 16, !13, i64 20, !6, i64 24, !6, i64 32, !13, i64 40, !13, i64 44, !13, i64 48, !7, i64 52, !13, i64 140, !13, i64 144, !6, i64 152, !6, i64 160, !13, i64 168, !14, i64 172, !6, i64 176, !12, i64 184, !14, i64 192, !14, i64 193, !14, i64 194, !14, i64 195, !14, i64 196, !14, i64 197, !14, i64 198, !14, i64 199, !14, i64 200, !14, i64 201, !14, i64 202, !14, i64 203, !14, i64 204, !13, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !12, i64 288, !7, i64 296, !13, i64 304, !13, i64 308, !11, i64 312, !14, i64 316, !14, i64 317, !14, i64 318, !14, i64 319, !7, i64 320, !7, i64 832, !14, i64 916, !14, i64 917, !14, i64 918, !14, i64 919, !14, i64 920, !14, i64 921, !14, i64 922, !13, i64 924, !11, i64 928, !11, i64 932, !11, i64 936, !11, i64 940, !11, i64 944, !12, i64 948, !11, i64 956, !12, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !13, i64 5440, !15, i64 5444, !16, i64 5448}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS6ImVec2", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"short", !7, i64 0}
!16 = !{!"_ZTS8ImVectorItE", !11, i64 0, !11, i64 4, !6, i64 8}
!17 = !{!10, !11, i64 928}
!18 = !{!10, !11, i64 932}
!19 = !{!10, !11, i64 940}
!20 = !{!10, !11, i64 936}
!21 = !{!10, !11, i64 944}
!22 = !{!14, !14, i64 0}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = !{!26, !6, i64 7544}
!26 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !10, i64 8, !27, i64 5472, !30, i64 5704, !11, i64 6692, !11, i64 6696, !6, i64 6704, !13, i64 6712, !13, i64 6716, !31, i64 6720, !33, i64 6936, !11, i64 6944, !11, i64 6948, !11, i64 6952, !11, i64 6956, !14, i64 6960, !14, i64 6961, !14, i64 6962, !14, i64 6963, !11, i64 6964, !6, i64 6968, !34, i64 6976, !34, i64 6992, !34, i64 7008, !34, i64 7024, !35, i64 7040, !11, i64 7056, !6, i64 7064, !6, i64 7072, !6, i64 7080, !6, i64 7088, !6, i64 7096, !6, i64 7104, !6, i64 7112, !12, i64 7120, !13, i64 7128, !11, i64 7132, !11, i64 7136, !14, i64 7140, !14, i64 7141, !13, i64 7144, !13, i64 7148, !11, i64 7152, !11, i64 7156, !13, i64 7160, !14, i64 7164, !14, i64 7165, !14, i64 7166, !14, i64 7167, !14, i64 7168, !14, i64 7169, !11, i64 7172, !11, i64 7176, !37, i64 7184, !12, i64 7192, !6, i64 7200, !38, i64 7208, !11, i64 7212, !11, i64 7216, !14, i64 7220, !14, i64 7221, !6, i64 7224, !11, i64 7232, !13, i64 7236, !39, i64 7240, !42, i64 7384, !43, i64 7408, !44, i64 7424, !45, i64 7440, !46, i64 7456, !46, i64 7472, !47, i64 7488, !13, i64 7504, !6, i64 7512, !6, i64 7520, !6, i64 7528, !11, i64 7536, !11, i64 7540, !6, i64 7544, !11, i64 7552, !11, i64 7556, !11, i64 7560, !11, i64 7564, !11, i64 7568, !11, i64 7572, !11, i64 7576, !11, i64 7580, !11, i64 7584, !11, i64 7588, !11, i64 7592, !38, i64 7596, !40, i64 7600, !11, i64 7616, !48, i64 7620, !11, i64 7624, !14, i64 7628, !14, i64 7629, !14, i64 7630, !14, i64 7631, !14, i64 7632, !14, i64 7633, !14, i64 7634, !11, i64 7636, !40, i64 7640, !14, i64 7656, !14, i64 7657, !11, i64 7660, !49, i64 7664, !11, i64 7668, !11, i64 7672, !11, i64 7676, !11, i64 7680, !50, i64 7688, !50, i64 7736, !50, i64 7784, !6, i64 7832, !11, i64 7840, !6, i64 7848, !6, i64 7856, !6, i64 7864, !13, i64 7872, !13, i64 7876, !14, i64 7880, !6, i64 7888, !6, i64 7896, !11, i64 7904, !11, i64 7908, !11, i64 7912, !11, i64 7916, !14, i64 7920, !13, i64 7924, !11, i64 7928, !14, i64 7932, !14, i64 7933, !14, i64 7934, !11, i64 7936, !11, i64 7940, !11, i64 7944, !51, i64 7952, !40, i64 8016, !11, i64 8032, !11, i64 8036, !13, i64 8040, !11, i64 8044, !11, i64 8048, !11, i64 8052, !11, i64 8056, !52, i64 8064, !7, i64 8080, !6, i64 8096, !53, i64 8104, !55, i64 8144, !56, i64 8160, !12, i64 8176, !57, i64 8184, !61, i64 11912, !11, i64 12032, !11, i64 12036, !13, i64 12040, !13, i64 12044, !7, i64 12048, !32, i64 12060, !13, i64 12076, !14, i64 12080, !14, i64 12081, !13, i64 12084, !13, i64 12088, !13, i64 12092, !11, i64 12096, !58, i64 12104, !64, i64 12120, !12, i64 12136, !12, i64 12144, !6, i64 12152, !65, i64 12160, !14, i64 12216, !13, i64 12220, !68, i64 12224, !69, i64 12240, !70, i64 12256, !14, i64 12272, !71, i64 12276, !6, i64 12280, !68, i64 12288, !13, i64 12304, !14, i64 12308, !11, i64 12312, !11, i64 12316, !11, i64 12320, !14, i64 12324, !11, i64 12328, !7, i64 12332, !11, i64 12812, !13, i64 12816, !11, i64 12820, !11, i64 12824, !11, i64 12828, !7, i64 12832}
!27 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !28, i64 192, !6, i64 208, !29, i64 216}
!28 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !11, i64 0, !11, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !11, i64 0, !11, i64 4, !6, i64 8}
!30 = !{!"_ZTS10ImGuiStyle", !13, i64 0, !12, i64 4, !13, i64 12, !13, i64 16, !12, i64 20, !12, i64 28, !11, i64 36, !13, i64 40, !13, i64 44, !13, i64 48, !13, i64 52, !12, i64 56, !13, i64 64, !13, i64 68, !12, i64 72, !12, i64 80, !12, i64 88, !13, i64 96, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !13, i64 116, !13, i64 120, !13, i64 124, !13, i64 128, !13, i64 132, !11, i64 136, !12, i64 140, !12, i64 148, !12, i64 156, !12, i64 164, !13, i64 172, !14, i64 176, !14, i64 177, !14, i64 178, !13, i64 180, !13, i64 184, !7, i64 188}
!31 = !{!"_ZTS20ImDrawListSharedData", !12, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !13, i64 24, !32, i64 28, !11, i64 44, !7, i64 48, !7, i64 144, !6, i64 208}
!32 = !{!"_ZTS6ImVec4", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12}
!33 = !{!"double", !7, i64 0}
!34 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !11, i64 0, !11, i64 4, !6, i64 8}
!35 = !{!"_ZTS12ImGuiStorage", !36, i64 0}
!36 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !11, i64 0, !11, i64 4, !6, i64 8}
!37 = !{!"long long", !7, i64 0}
!38 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!39 = !{!"_ZTS19ImGuiNextWindowData", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !12, i64 20, !12, i64 28, !12, i64 36, !12, i64 44, !12, i64 52, !14, i64 60, !14, i64 61, !40, i64 64, !6, i64 80, !6, i64 88, !13, i64 96, !11, i64 100, !11, i64 104, !41, i64 108, !12, i64 136}
!40 = !{!"_ZTS6ImRect", !12, i64 0, !12, i64 8}
!41 = !{!"_ZTS16ImGuiWindowClass", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !14, i64 24, !14, i64 25}
!42 = !{!"_ZTS17ImGuiNextItemData", !11, i64 0, !13, i64 4, !11, i64 8, !11, i64 12, !14, i64 16}
!43 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !11, i64 0, !11, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !11, i64 0, !11, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIP6ImFontE", !11, i64 0, !11, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !11, i64 0, !11, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !11, i64 0, !11, i64 4, !6, i64 8}
!48 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!49 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!50 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !11, i64 8, !11, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !40, i64 28}
!51 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !7, i64 24, !14, i64 57, !14, i64 58}
!52 = !{!"_ZTS8ImVectorIhE", !11, i64 0, !11, i64 4, !6, i64 8}
!53 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !54, i64 0, !35, i64 16, !11, i64 32}
!54 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !11, i64 0, !11, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !11, i64 0, !11, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !11, i64 0, !11, i64 4, !6, i64 8}
!57 = !{!"_ZTS19ImGuiInputTextState", !11, i64 0, !11, i64 4, !11, i64 8, !16, i64 16, !58, i64 32, !58, i64 48, !14, i64 64, !11, i64 68, !13, i64 72, !59, i64 76, !13, i64 3696, !14, i64 3700, !14, i64 3701, !14, i64 3702, !11, i64 3704, !6, i64 3712, !6, i64 3720}
!58 = !{!"_ZTS8ImVectorIcE", !11, i64 0, !11, i64 4, !6, i64 8}
!59 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !11, i64 0, !11, i64 4, !11, 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, !13, i64 20, !60, i64 24}
!60 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !15, i64 3582, !15, i64 3584, !11, i64 3588, !11, i64 3592}
!61 = !{!"_ZTS6ImFont", !62, i64 0, !13, i64 16, !13, i64 20, !16, i64 24, !63, i64 40, !6, i64 56, !12, i64 64, !6, i64 72, !6, i64 80, !15, i64 88, !15, i64 90, !15, i64 92, !14, i64 94, !13, i64 96, !13, i64 100, !13, i64 104, !11, i64 108, !7, i64 112}
!62 = !{!"_ZTS8ImVectorIfE", !11, i64 0, !11, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !11, i64 0, !11, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorIjE", !11, i64 0, !11, i64 4, !6, i64 8}
!65 = !{!"_ZTS16ImGuiDockContext", !35, i64 0, !66, i64 16, !67, i64 32, !14, i64 48}
!66 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !11, i64 0, !11, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !11, i64 0, !11, i64 4, !6, i64 8}
!68 = !{!"_ZTS15ImGuiTextBuffer", !58, i64 0}
!69 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !11, i64 0, !11, i64 4, !6, i64 8}
!70 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !58, i64 0}
!71 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!72 = !{!73, !6, i64 0}
!73 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !41, i64 20, !6, i64 48, !11, i64 56, !12, i64 60, !11, i64 68, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !13, i64 120, !13, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !12, i64 140, !12, i64 148, !12, i64 156, !12, i64 164, !12, i64 172, !14, i64 180, !14, i64 181, !14, i64 182, !14, i64 183, !14, i64 184, !14, i64 185, !14, i64 186, !14, i64 187, !14, i64 188, !14, i64 189, !14, i64 190, !14, i64 191, !14, i64 192, !7, i64 193, !15, i64 194, !15, i64 196, !15, i64 198, !11, i64 200, !7, i64 204, !7, i64 205, !7, i64 206, !14, i64 207, !11, i64 208, !11, i64 212, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !11, i64 232, !12, i64 236, !12, i64 244, !64, i64 256, !74, i64 272, !40, i64 600, !40, i64 616, !40, i64 632, !40, i64 648, !40, i64 664, !40, i64 680, !40, i64 696, !79, i64 712, !79, i64 716, !11, i64 720, !11, i64 724, !13, i64 728, !13, i64 732, !35, i64 736, !80, i64 752, !13, i64 768, !13, i64 772, !11, i64 776, !6, i64 784, !81, i64 792, !6, i64 1016, !6, i64 1024, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056, !7, i64 1064, !7, i64 1072, !14, i64 1104, !11, i64 1108, !11, i64 1112, !6, i64 1120, !6, i64 1128, !11, i64 1136, !11, i64 1140, !40, i64 1144, !15, i64 1160, !14, i64 1162, !14, i64 1162, !14, i64 1162}
!74 = !{!"_ZTS19ImGuiWindowTempData", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !13, i64 48, !13, i64 52, !75, i64 56, !75, i64 60, !75, i64 64, !11, i64 68, !11, i64 72, !40, i64 76, !40, i64 92, !48, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !14, i64 128, !14, i64 129, !14, i64 130, !12, i64 132, !76, i64 140, !11, i64 176, !11, i64 180, !34, i64 184, !6, i64 200, !6, i64 208, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !11, i64 232, !13, i64 236, !13, i64 240, !77, i64 248, !62, i64 264, !62, i64 280, !78, i64 296, !7, i64 312}
!75 = !{!"_ZTS6ImVec1", !13, i64 0}
!76 = !{!"_ZTS16ImGuiMenuColumns", !13, i64 0, !13, i64 4, !13, i64 8, !7, i64 12, !7, i64 24}
!77 = !{!"_ZTS8ImVectorIiE", !11, i64 0, !11, i64 4, !6, i64 8}
!78 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !11, i64 0, !11, i64 4, !6, i64 8}
!79 = !{!"_ZTS8ImVec2ih", !15, i64 0, !15, i64 2}
!80 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !11, i64 0, !11, i64 4, !6, i64 8}
!81 = !{!"_ZTS10ImDrawList", !82, i64 0, !16, i64 16, !83, i64 32, !11, i64 48, !6, i64 56, !6, i64 64, !11, i64 72, !6, i64 80, !6, i64 88, !84, i64 96, !85, i64 112, !86, i64 128, !87, i64 144, !88, i64 200}
!82 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !11, i64 0, !11, i64 4, !6, i64 8}
!83 = !{!"_ZTS8ImVectorI10ImDrawVertE", !11, i64 0, !11, i64 4, !6, i64 8}
!84 = !{!"_ZTS8ImVectorI6ImVec4E", !11, i64 0, !11, i64 4, !6, i64 8}
!85 = !{!"_ZTS8ImVectorIPvE", !11, i64 0, !11, i64 4, !6, i64 8}
!86 = !{!"_ZTS8ImVectorI6ImVec2E", !11, i64 0, !11, i64 4, !6, i64 8}
!87 = !{!"_ZTS9ImDrawCmd", !32, i64 0, !6, i64 16, !11, i64 24, !11, i64 28, !11, i64 32, !6, i64 40, !6, i64 48}
!88 = !{!"_ZTS18ImDrawListSplitter", !11, i64 0, !11, i64 4, !89, i64 8}
!89 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !11, i64 0, !11, i64 4, !6, i64 8}
!90 = !{!26, !11, i64 7488}
!91 = !{!26, !11, i64 5664}
!92 = !{!93, !13, i64 32}
!93 = !{!"_ZTS20ImGuiPlatformMonitor", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !13, i64 32}
!94 = !{!93, !13, i64 0}
!95 = !{!93, !13, i64 4}
!96 = !{!93, !13, i64 8}
!97 = !{!93, !13, i64 12}
!98 = !{!93, !13, i64 16}
!99 = !{!93, !13, i64 20}
!100 = !{!93, !13, i64 24}
!101 = !{!93, !13, i64 28}
!102 = distinct !{!102, !103}
!103 = !{!"llvm.loop.mustprogress"}
!104 = distinct !{!104, !103}
!105 = !{!26, !11, i64 7456}
!106 = !{!107, !6, i64 8}
!107 = !{!"_ZTS14ImGuiPopupData", !11, i64 0, !6, i64 8, !6, i64 16, !11, i64 24, !11, i64 28, !12, i64 32, !12, i64 40}
!108 = !{!107, !11, i64 0}
!109 = !{!73, !11, i64 12}
!110 = distinct !{!110, !103}
!111 = distinct !{!111, !103}
!112 = !{!65, !14, i64 48}
!113 = !{!65, !11, i64 0}
!114 = !{!7, !7, i64 0}
!115 = distinct !{!115, !103}
!116 = !{!26, !6, i64 32}
!117 = !{!26, !13, i64 12220}
!118 = !{!26, !11, i64 12240}
!119 = !{!120, !6, i64 0}
!120 = !{!"_ZTS20ImGuiSettingsHandler", !6, i64 0, !11, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64}
!121 = distinct !{!121, !103}
!122 = distinct !{!122, !103}
!123 = !{!65, !11, i64 32}
!124 = !{!125, !11, i64 20}
!125 = !{!"_ZTS19ImGuiWindowSettings", !11, i64 0, !79, i64 4, !79, i64 8, !79, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !15, i64 28, !14, i64 30, !14, i64 31}
!126 = distinct !{!126, !103}
!127 = !{!128, !11, i64 12}
!128 = !{!"_ZTS21ImGuiDockNodeSettings", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !7, i64 16, !7, i64 17, !11, i64 20, !79, i64 24, !79, i64 28, !79, i64 32}
!129 = !{!128, !11, i64 0}
!130 = !{!128, !11, i64 4}
!131 = distinct !{!131, !103}
!132 = !{!26, !11, i64 12224}
!133 = !{!26, !6, i64 7072}
!134 = !{!26, !6, i64 7080}
!135 = !{!26, !6, i64 7088}
!136 = !{!26, !6, i64 7096}
!137 = !{!138, !11, i64 0}
!138 = !{!"_ZTS13ImGuiDockNode", !11, i64 0, !11, i64 4, !11, i64 8, !6, i64 16, !7, i64 24, !34, i64 40, !6, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !139, i64 88, !41, i64 92, !140, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !11, i64 160, !11, i64 164, !11, i64 168, !11, i64 172, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 184, !11, i64 184, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 185, !14, i64 186, !14, i64 186, !14, i64 186, !14, i64 186}
!139 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!140 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!141 = !{!26, !6, i64 7104}
!142 = !{!26, !6, i64 7520}
!143 = !{!144, !11, i64 0}
!144 = !{!"_ZTS13ImGuiViewport", !11, i64 0, !11, i64 4, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !13, i64 40, !6, i64 48, !11, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !14, i64 96, !14, i64 97, !14, i64 98}
!145 = !{!26, !11, i64 320}
!146 = !{!26, !6, i64 7528}
!147 = !{!26, !11, i64 7152}
!148 = !{!26, !11, i64 7216}
!149 = !{!26, !13, i64 7160}
!150 = !{!26, !14, i64 7165}
!151 = !{!26, !38, i64 7208}
!152 = !{!26, !6, i64 7200}
!153 = !{!26, !11, i64 7132}
!154 = !{!26, !11, i64 7136}
!155 = !{!26, !13, i64 7144}
!156 = !{!26, !14, i64 7140}
!157 = !{!26, !14, i64 7932}
!158 = !{!26, !11, i64 7964}
!159 = !{!26, !11, i64 7960}
!160 = !{!26, !11, i64 7552}
!161 = !{!26, !48, i64 7620}
!162 = !{!26, !38, i64 7596}
!163 = !{!26, !14, i64 929}
!164 = !{!26, !14, i64 930}
!165 = !{!26, !11, i64 7560}
!166 = !{!26, !11, i64 7572}
!167 = !{!26, !14, i64 7630}
!168 = !{!26, !14, i64 7631}
!169 = !{!26, !11, i64 7556}
!170 = !{!26, !6, i64 7848}
!171 = !{!26, !11, i64 6976}
!172 = !{!73, !14, i64 184}
!173 = !{!11, !11, i64 0}
!174 = !{!73, !15, i64 198}
!175 = distinct !{!175, !103}
!176 = !{!26, !14, i64 324}
!177 = !{!138, !6, i64 128}
!178 = !{!138, !11, i64 92}
!179 = !{!138, !13, i64 72}
!180 = !{!138, !13, i64 76}
!181 = !{!138, !13, i64 80}
!182 = !{!138, !13, i64 84}


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