; LLVM IR from yangfengzzz/DigitalVox4 :: vox.render/gui/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.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec2 = type { float, float }
%struct.ImGuiContext = type <{ i8, i8, [6 x i8], %struct.ImGuiIO, %struct.ImVector.0, %struct.ImVector.0, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, [7 x i8], ptr, %struct.ImVector.1, %struct.ImVector.1, %struct.ImVector.1, %struct.ImVector.2, %struct.ImGuiStorage, i32, %struct.ImVec2, [4 x i8], ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i32, i32, i8, i8, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, %struct.ImBitArray, %struct.ImVec2, [4 x i8], ptr, i32, i32, i32, i8, i8, [2 x i8], ptr, i32, float, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, [4 x i8], %struct.ImGuiNextWindowData, %struct.ImVector.4, %struct.ImVector.5, %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.10, i32, [4 x i8], %struct.ImVector.11, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, [4 x i8], %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, ptr, ptr, ptr, float, float, 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.12, [16 x i8], i32, [4 x i8], %struct.ImVector.13, ptr, i32, [4 x i8], %struct.ImVector.14, %struct.ImPool, %struct.ImVector.16, %struct.ImVector.17, ptr, %struct.ImPool.18, %struct.ImVector.20, %struct.ImVector.21, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, float, i8, i8, [2 x i8], float, float, float, float, i16, i16, float, [4 x i8], %struct.ImVector.22, %struct.ImVector.7, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i8, i8, [2 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.24, %struct.ImChunkStream, %struct.ImChunkStream.25, %struct.ImVector.26, i32, i8, [3 x i8], i32, [4 x i8], ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, %struct.ImGuiMetricsConfig, [4 x i8], %struct.ImGuiStackTool, [120 x float], i32, i32, float, i32, i32, i32, [3073 x i8], [7 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, [641 x i32], [512 x i8], %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, [20 x float], i32, i32, [641 x %struct.ImGuiKeyData], i8, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i16], [5 x i16], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x float], [20 x float], [20 x float], float, i8, i8, i8, i16, %struct.ImVector }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImGuiStyle = type { float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %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, [53 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.3 }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImBitArray = type { [5 x i32] }
%struct.ImGuiNextItemData = type <{ i32, float, i32, i32, i8, [3 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, [4 x i8], ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImVector.6 = 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.ImVector.11 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type { ptr, i32, i32, %struct.ImRect, i32, float, float, float }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.15, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImPool.18 = type { %struct.ImVector.19, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ i32, i32, i32, [4 x i8], %struct.ImVector, %struct.ImVector.22, %struct.ImVector.22, i8, [3 x i8], i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i32, 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.16, float, float, %struct.ImVector, %struct.ImVector.23, ptr, ptr, ptr, i16, i16, i16, i16, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.22 }
%struct.ImChunkStream.25 = type { %struct.ImVector.22 }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.22 }
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiStackTool = type { i32, i32, i32, %struct.ImVector.27 }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImGuiWindow = type <{ ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i32, i32, i32, %struct.ImVec2, %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, i16, [2 x i8], i32, i8, i8, i8, i8, i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.7, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, float, float, [4 x i8], %struct.ImGuiStorage, %struct.ImVector.30, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i32, i32, i8, [7 x i8] }>
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, %struct.ImVec2, i32, i16, i16, i32, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.1, ptr, ptr, i32, i32, i32, float, float, %struct.ImVector.16, %struct.ImVector.16 }
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type <{ i32, i32, i16, i16, i16, i16, i16, [4 x i16], [2 x i8] }>
%struct.ImVec2ih = type { i16, i16 }
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.31, %struct.ImVector, %struct.ImVector.32, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.33, %struct.ImVector.34, %struct.ImVector.35, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImVector.32 = type { i32, i32, ptr }
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImVector.34 = type { i32, i32, ptr }
%struct.ImVector.35 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.17 }
%struct.ImGuiTable = type { i32, i32, ptr, ptr, %struct.ImSpan, %struct.ImSpan.36, %struct.ImSpan.37, i64, i64, i64, i64, i32, i32, i32, i32, i32, i32, i16, i16, float, float, float, float, float, i32, i32, [2 x i32], i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, ptr, ptr, %struct.ImGuiTextBuffer, ptr, %struct.ImGuiTableColumnSortSpecs, %struct.ImVector.38, %struct.ImGuiTableSortSpecs, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%struct.ImSpan = type { ptr, ptr }
%struct.ImSpan.36 = type { ptr, ptr }
%struct.ImSpan.37 = type { ptr, ptr }
%struct.ImGuiTableColumnSortSpecs = type <{ i32, i16, i16, i8, [3 x i8] }>
%struct.ImVector.38 = type { i32, i32, ptr }
%struct.ImGuiTableSortSpecs = type <{ ptr, i32, i8, [3 x i8] }>
%struct.ImGuiViewportP = type { %struct.ImGuiViewport, [2 x i32], [2 x ptr], %struct.ImDrawData, %struct.ImDrawDataBuilder, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiViewport = type { i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, ptr }
%struct.ImDrawData = type { i8, i32, i32, i32, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2 }
%struct.ImDrawDataBuilder = type { [2 x %struct.ImVector.41] }
%struct.ImVector.41 = type { i32, i32, ptr }
%struct.ImGuiPopupData = type { i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2 }
%struct.ImFontAtlas = type <{ i32, [4 x i8], ptr, i32, i32, i8, i8, i8, [5 x i8], ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.6, %struct.ImVector.42, %struct.ImVector.43, [64 x %struct.ImVec4], ptr, i32, i32, i32, [4 x i8] }>
%struct.ImVector.42 = type { i32, i32, ptr }
%struct.ImVector.43 = type { i32, i32, ptr }
%struct.ImGuiSettingsHandler = type { ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.14 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.275 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.276 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.277 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.278 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.279 = external hidden unnamed_addr constant [42 x i8], align 1
@__const._ZN5ImGui17ShowMetricsWindowEPb.wrt_rects_names = external hidden unnamed_addr constant [8 x ptr], align 16
@__const._ZN5ImGui17ShowMetricsWindowEPb.trt_rects_names = external hidden unnamed_addr constant [13 x ptr], align 16
@.str.297 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.298 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.299 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.300 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.301 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.302 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.303 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.304 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.305 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.306 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.307 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.308 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.310 = external hidden unnamed_addr constant [133 x i8], align 1
@.str.311 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.312 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.313 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.314 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.315 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.316 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.318 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.320 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.321 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.322 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.323 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.324 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.325 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.326 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.327 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.328 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.329 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.330 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.331 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.332 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.333 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.334 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.336 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.344 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.354 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.355 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.356 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.357 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.358 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.359 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.361 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.362 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.365 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.367 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.368 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.369 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.370 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.371 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.372 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.373 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.374 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.375 = external hidden unnamed_addr constant [3 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> @_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 uwtable
declare hidden void @_ZL7ImQsortPvmmPFiPKvS1_E(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui21GetForegroundDrawListEv() #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN5ImGui10GetVersionEv() #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) #7 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN5ImGui16GetCurrentWindowEv() #7

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

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

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

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

; 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: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN5ImGui11GetFontSizeEv() #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui5PopIDEv() #6

declare void @_ZN5ImGui7TreePopEv() #5

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

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

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

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

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

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

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

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

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

; 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 uwtable
define dso_local void @_ZN5ImGui17ShowMetricsWindowEPb(ptr noundef %0) #8 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca [8 x ptr], align 16
  %8 = alloca [13 x ptr], align 16
  %9 = alloca i32, align 4
  %10 = alloca %struct.ImRect, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca %struct.ImVec2, align 4
  %14 = alloca %struct.ImVec2, align 4
  %15 = alloca %struct.ImVec2, align 4
  %16 = alloca %struct.ImVec2, align 4
  %17 = alloca [128 x i8], align 16
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %struct.ImRect, align 4
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca %struct.ImVec2, align 4
  %23 = alloca %struct.ImVec2, align 4
  %24 = alloca %struct.ImVec2, align 4
  %25 = alloca %struct.ImVec2, align 4
  %26 = alloca %struct.ImRect, align 4
  %27 = alloca %struct.ImVec2, align 4
  %28 = alloca %struct.ImVec2, align 4
  %29 = alloca %struct.ImVec2, align 4
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 4
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca ptr, align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca ptr, align 8
  %46 = alloca i32, align 4
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca %struct.ImVec2, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca %struct.ImRect, align 4
  %59 = alloca [32 x i8], align 16
  %60 = alloca float, align 4
  %61 = alloca %struct.ImVec2, align 4
  %62 = alloca %struct.ImVec2, align 4
  %63 = alloca i32, align 4
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca i32, align 4
  %67 = alloca %struct.ImRect, align 4
  %68 = alloca i32, align 4
  %69 = alloca float, align 4
  %70 = alloca %struct.ImRect, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #9
  %71 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %71, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #9
  %72 = load ptr, ptr %3, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.ImGuiContext, ptr %72, i32 0, i32 3
  store ptr %73, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #9
  %74 = load ptr, ptr %3, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.ImGuiContext, ptr %74, i32 0, i32 229
  store ptr %75, ptr %5, align 8, !tbaa !5
  %76 = load ptr, ptr %5, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %76, i32 0, i32 0
  %78 = load i8, ptr %77, align 4, !tbaa !9, !range !13, !noundef !14
  %79 = trunc i8 %78 to i1
  br i1 %79, label %80, label %83

80:                                               ; preds = %1
  %81 = load ptr, ptr %5, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %81, i32 0, i32 0
  call void @_ZN5ImGui19ShowStackToolWindowEPb(ptr noundef %82)
  br label %83

83:                                               ; preds = %80, %1
  %84 = load ptr, ptr %2, align 8, !tbaa !5
  %85 = call noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef @.str.275, ptr noundef %84, i32 noundef 0)
  br i1 %85, label %86, label %92

86:                                               ; preds = %83
  %87 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %88 = getelementptr inbounds %struct.ImGuiWindow, ptr %87, i32 0, i32 35
  %89 = load i16, ptr %88, align 2, !tbaa !15
  %90 = sext i16 %89 to i32
  %91 = icmp sgt i32 %90, 1
  br i1 %91, label %92, label %93

92:                                               ; preds = %86, %83
  call void @_ZN5ImGui3EndEv()
  store i32 1, ptr %6, align 4
  br label %1288

93:                                               ; preds = %86
  %94 = call noundef ptr @_ZN5ImGui10GetVersionEv()
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.276, ptr noundef %94)
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.ImGuiIO, ptr %95, i32 0, i32 43
  %97 = load float, ptr %96, align 8, !tbaa !43
  %98 = fdiv float 1.000000e+03, %97
  %99 = fpext float %98 to double
  %100 = load ptr, ptr %4, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.ImGuiIO, ptr %100, i32 0, i32 43
  %102 = load float, ptr %101, align 8, !tbaa !43
  %103 = fpext float %102 to double
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.277, double noundef %99, double noundef %103)
  %104 = load ptr, ptr %4, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.ImGuiIO, ptr %104, i32 0, i32 44
  %106 = load i32, ptr %105, align 4, !tbaa !45
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.ImGuiIO, ptr %107, i32 0, i32 45
  %109 = load i32, ptr %108, align 8, !tbaa !46
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.ImGuiIO, ptr %110, i32 0, i32 45
  %112 = load i32, ptr %111, align 8, !tbaa !46
  %113 = sdiv i32 %112, 3
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.278, i32 noundef %106, i32 noundef %109, i32 noundef %113)
  %114 = load ptr, ptr %4, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.ImGuiIO, ptr %114, i32 0, i32 46
  %116 = load i32, ptr %115, align 4, !tbaa !47
  %117 = load ptr, ptr %4, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.ImGuiIO, ptr %117, i32 0, i32 48
  %119 = load i32, ptr %118, align 4, !tbaa !48
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.279, i32 noundef %116, i32 noundef %119)
  call void @_ZN5ImGui9SeparatorEv()
  call void @llvm.lifetime.start.p0(i64 64, ptr %7) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %7, ptr align 16 @__const._ZN5ImGui17ShowMetricsWindowEPb.wrt_rects_names, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 104, ptr %8) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %8, ptr align 16 @__const._ZN5ImGui17ShowMetricsWindowEPb.trt_rects_names, i64 104, i1 false)
  %120 = load ptr, ptr %5, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %120, i32 0, i32 6
  %122 = load i32, ptr %121, align 4, !tbaa !49
  %123 = icmp slt i32 %122, 0
  br i1 %123, label %124, label %127

124:                                              ; preds = %93
  %125 = load ptr, ptr %5, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %125, i32 0, i32 6
  store i32 4, ptr %126, align 4, !tbaa !49
  br label %127

127:                                              ; preds = %124, %93
  %128 = load ptr, ptr %5, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %128, i32 0, i32 7
  %130 = load i32, ptr %129, align 4, !tbaa !50
  %131 = icmp slt i32 %130, 0
  br i1 %131, label %132, label %135

132:                                              ; preds = %127
  %133 = load ptr, ptr %5, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %133, i32 0, i32 7
  store i32 2, ptr %134, align 4, !tbaa !50
  br label %135

135:                                              ; preds = %132, %127
  %136 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef @.str.297)
  br i1 %136, label %137, label %444

137:                                              ; preds = %135
  %138 = load ptr, ptr %5, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %138, i32 0, i32 0
  %140 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.298, ptr noundef %139)
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  call void @_ZL17MetricsHelpMarkerPKc(ptr noundef @.str.299)
  %141 = load ptr, ptr %5, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %141, i32 0, i32 2
  %143 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.300, ptr noundef %142)
  %144 = load ptr, ptr %5, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %144, i32 0, i32 1
  %146 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.301, ptr noundef %145)
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %147 = call noundef float @_ZN5ImGui11GetFontSizeEv()
  %148 = fmul float %147, 1.200000e+01
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %148)
  %149 = load ptr, ptr %5, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %149, i32 0, i32 6
  %151 = getelementptr inbounds [8 x ptr], ptr %7, i64 0, i64 0
  %152 = call noundef zeroext i1 @_ZN5ImGui5ComboEPKcPiPKS1_ii(ptr noundef @.str.302, ptr noundef %150, ptr noundef %151, i32 noundef 8, i32 noundef 8)
  %153 = zext i1 %152 to i32
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %154, i32 0, i32 1
  %156 = load i8, ptr %155, align 1, !tbaa !51, !range !13, !noundef !14
  %157 = trunc i8 %156 to i1
  %158 = zext i1 %157 to i32
  %159 = or i32 %158, %153
  %160 = icmp ne i32 %159, 0
  %161 = zext i1 %160 to i8
  store i8 %161, ptr %155, align 1, !tbaa !51
  %162 = load ptr, ptr %5, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %162, i32 0, i32 1
  %164 = load i8, ptr %163, align 1, !tbaa !51, !range !13, !noundef !14
  %165 = trunc i8 %164 to i1
  br i1 %165, label %166, label %219

166:                                              ; preds = %137
  %167 = load ptr, ptr %3, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.ImGuiContext, ptr %167, i32 0, i32 88
  %169 = load ptr, ptr %168, align 8, !tbaa !52
  %170 = icmp ne ptr %169, null
  br i1 %170, label %171, label %219

171:                                              ; preds = %166
  %172 = load ptr, ptr %3, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.ImGuiContext, ptr %172, i32 0, i32 88
  %174 = load ptr, ptr %173, align 8, !tbaa !52
  %175 = getelementptr inbounds %struct.ImGuiWindow, ptr %174, i32 0, i32 0
  %176 = load ptr, ptr %175, align 8, !tbaa !98
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef @.str.303, ptr noundef %176)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store i32 0, ptr %9, align 4, !tbaa !99
  br label %177

177:                                              ; preds = %215, %171
  %178 = load i32, ptr %9, align 4, !tbaa !99
  %179 = icmp slt i32 %178, 8
  br i1 %179, label %181, label %180

180:                                              ; preds = %177
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  br label %218

181:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #9
  %182 = load ptr, ptr %3, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.ImGuiContext, ptr %182, i32 0, i32 88
  %184 = load ptr, ptr %183, align 8, !tbaa !52
  %185 = load i32, ptr %9, align 4, !tbaa !99
  %186 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %184, i32 noundef %185)
  %187 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %10, i32 0, i32 0
  %188 = extractvalue { <2 x float>, <2 x float> } %186, 0
  store <2 x float> %188, ptr %187, align 4
  %189 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %10, i32 0, i32 1
  %190 = extractvalue { <2 x float>, <2 x float> } %186, 1
  store <2 x float> %190, ptr %189, align 4
  %191 = getelementptr inbounds %struct.ImRect, ptr %10, i32 0, i32 0
  %192 = getelementptr inbounds %struct.ImVec2, ptr %191, i32 0, i32 0
  %193 = load float, ptr %192, align 4, !tbaa !100
  %194 = fpext float %193 to double
  %195 = getelementptr inbounds %struct.ImRect, ptr %10, i32 0, i32 0
  %196 = getelementptr inbounds %struct.ImVec2, ptr %195, i32 0, i32 1
  %197 = load float, ptr %196, align 4, !tbaa !101
  %198 = fpext float %197 to double
  %199 = getelementptr inbounds %struct.ImRect, ptr %10, i32 0, i32 1
  %200 = getelementptr inbounds %struct.ImVec2, ptr %199, i32 0, i32 0
  %201 = load float, ptr %200, align 4, !tbaa !102
  %202 = fpext float %201 to double
  %203 = getelementptr inbounds %struct.ImRect, ptr %10, i32 0, i32 1
  %204 = getelementptr inbounds %struct.ImVec2, ptr %203, i32 0, i32 1
  %205 = load float, ptr %204, align 4, !tbaa !103
  %206 = fpext float %205 to double
  %207 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %10)
  %208 = fpext float %207 to double
  %209 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %10)
  %210 = fpext float %209 to double
  %211 = load i32, ptr %9, align 4, !tbaa !99
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds [8 x ptr], ptr %7, i64 0, i64 %212
  %214 = load ptr, ptr %213, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.304, double noundef %194, double noundef %198, double noundef %202, double noundef %206, double noundef %208, double noundef %210, ptr noundef %214)
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #9
  br label %215

215:                                              ; preds = %181
  %216 = load i32, ptr %9, align 4, !tbaa !99
  %217 = add nsw i32 %216, 1
  store i32 %217, ptr %9, align 4, !tbaa !99
  br label %177, !llvm.loop !104

218:                                              ; preds = %180
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  br label %219

219:                                              ; preds = %218, %166, %137
  %220 = load ptr, ptr %5, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %220, i32 0, i32 3
  %222 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.305, ptr noundef %221)
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %223 = call noundef float @_ZN5ImGui11GetFontSizeEv()
  %224 = fmul float %223, 1.200000e+01
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %224)
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %225, i32 0, i32 7
  %227 = getelementptr inbounds [13 x ptr], ptr %8, i64 0, i64 0
  %228 = call noundef zeroext i1 @_ZN5ImGui5ComboEPKcPiPKS1_ii(ptr noundef @.str.306, ptr noundef %226, ptr noundef %227, i32 noundef 13, i32 noundef 13)
  %229 = zext i1 %228 to i32
  %230 = load ptr, ptr %5, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %230, i32 0, i32 3
  %232 = load i8, ptr %231, align 1, !tbaa !106, !range !13, !noundef !14
  %233 = trunc i8 %232 to i1
  %234 = zext i1 %233 to i32
  %235 = or i32 %234, %229
  %236 = icmp ne i32 %235, 0
  %237 = zext i1 %236 to i8
  store i8 %237, ptr %231, align 1, !tbaa !106
  %238 = load ptr, ptr %5, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %238, i32 0, i32 3
  %240 = load i8, ptr %239, align 1, !tbaa !106, !range !13, !noundef !14
  %241 = trunc i8 %240 to i1
  br i1 %241, label %242, label %440

242:                                              ; preds = %219
  %243 = load ptr, ptr %3, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.ImGuiContext, ptr %243, i32 0, i32 88
  %245 = load ptr, ptr %244, align 8, !tbaa !52
  %246 = icmp ne ptr %245, null
  br i1 %246, label %247, label %440

247:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  store i32 0, ptr %11, align 4, !tbaa !99
  br label %248

248:                                              ; preds = %436, %247
  %249 = load i32, ptr %11, align 4, !tbaa !99
  %250 = load ptr, ptr %3, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.ImGuiContext, ptr %250, i32 0, i32 169
  %252 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %251)
  %253 = icmp slt i32 %249, %252
  br i1 %253, label %255, label %254

254:                                              ; preds = %248
  store i32 5, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  br label %439

255:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %256 = load ptr, ptr %3, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.ImGuiContext, ptr %256, i32 0, i32 169
  %258 = load i32, ptr %11, align 4, !tbaa !99
  %259 = call noundef ptr @_ZN6ImPoolI10ImGuiTableE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40) %257, i32 noundef %258)
  store ptr %259, ptr %12, align 8, !tbaa !5
  %260 = load ptr, ptr %12, align 8, !tbaa !5
  %261 = icmp eq ptr %260, null
  br i1 %261, label %287, label %262

262:                                              ; preds = %255
  %263 = load ptr, ptr %12, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.ImGuiTable, ptr %263, i32 0, i32 13
  %265 = load i32, ptr %264, align 8, !tbaa !107
  %266 = load ptr, ptr %3, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.ImGuiContext, ptr %266, i32 0, i32 12
  %268 = load i32, ptr %267, align 8, !tbaa !116
  %269 = sub nsw i32 %268, 1
  %270 = icmp slt i32 %265, %269
  br i1 %270, label %287, label %271

271:                                              ; preds = %262
  %272 = load ptr, ptr %12, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.ImGuiTable, ptr %272, i32 0, i32 55
  %274 = load ptr, ptr %273, align 8, !tbaa !117
  %275 = load ptr, ptr %3, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.ImGuiContext, ptr %275, i32 0, i32 88
  %277 = load ptr, ptr %276, align 8, !tbaa !52
  %278 = icmp ne ptr %274, %277
  br i1 %278, label %279, label %288

279:                                              ; preds = %271
  %280 = load ptr, ptr %12, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ImGuiTable, ptr %280, i32 0, i32 56
  %282 = load ptr, ptr %281, align 8, !tbaa !118
  %283 = load ptr, ptr %3, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.ImGuiContext, ptr %283, i32 0, i32 88
  %285 = load ptr, ptr %284, align 8, !tbaa !52
  %286 = icmp ne ptr %282, %285
  br i1 %286, label %287, label %288

287:                                              ; preds = %279, %262, %255
  store i32 7, ptr %6, align 4
  br label %433

288:                                              ; preds = %279, %271
  %289 = load ptr, ptr %12, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.ImGuiTable, ptr %289, i32 0, i32 0
  %291 = load i32, ptr %290, align 8, !tbaa !119
  %292 = load ptr, ptr %12, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.ImGuiTable, ptr %292, i32 0, i32 14
  %294 = load i32, ptr %293, align 4, !tbaa !120
  %295 = load ptr, ptr %12, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.ImGuiTable, ptr %295, i32 0, i32 55
  %297 = load ptr, ptr %296, align 8, !tbaa !117
  %298 = getelementptr inbounds %struct.ImGuiWindow, ptr %297, i32 0, i32 0
  %299 = load ptr, ptr %298, align 8, !tbaa !98
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef @.str.307, i32 noundef %291, i32 noundef %294, ptr noundef %299)
  %300 = call noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef 0)
  br i1 %300, label %301, label %311

301:                                              ; preds = %288
  %302 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  %303 = load ptr, ptr %12, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.ImGuiTable, ptr %303, i32 0, i32 46
  %305 = getelementptr inbounds %struct.ImRect, ptr %304, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %306 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %305, ptr noundef nonnull align 4 dereferenceable(8) %14)
  store <2 x float> %306, ptr %13, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  %307 = load ptr, ptr %12, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.ImGuiTable, ptr %307, i32 0, i32 46
  %309 = getelementptr inbounds %struct.ImRect, ptr %308, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %310 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %309, ptr noundef nonnull align 4 dereferenceable(8) %16)
  store <2 x float> %310, ptr %15, align 4
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %302, ptr noundef nonnull align 4 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %15, i32 noundef -16711681, float noundef 0.000000e+00, i32 noundef 0, float noundef 2.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  br label %311

311:                                              ; preds = %301, %288
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 128, ptr %17) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  store i32 0, ptr %18, align 4, !tbaa !99
  br label %312

312:                                              ; preds = %429, %311
  %313 = load i32, ptr %18, align 4, !tbaa !99
  %314 = icmp slt i32 %313, 13
  br i1 %314, label %316, label %315

315:                                              ; preds = %312
  store i32 8, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %432

316:                                              ; preds = %312
  %317 = load i32, ptr %18, align 4, !tbaa !99
  %318 = icmp sge i32 %317, 6
  br i1 %318, label %319, label %384

319:                                              ; preds = %316
  %320 = load i32, ptr %18, align 4, !tbaa !99
  %321 = icmp ne i32 %320, 6
  br i1 %321, label %322, label %326

322:                                              ; preds = %319
  %323 = load i32, ptr %18, align 4, !tbaa !99
  %324 = icmp ne i32 %323, 8
  br i1 %324, label %325, label %326

325:                                              ; preds = %322
  br label %429

326:                                              ; preds = %322, %319
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  store i32 0, ptr %19, align 4, !tbaa !99
  br label %327

327:                                              ; preds = %380, %326
  %328 = load i32, ptr %19, align 4, !tbaa !99
  %329 = load ptr, ptr %12, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.ImGuiTable, ptr %329, i32 0, i32 14
  %331 = load i32, ptr %330, align 4, !tbaa !120
  %332 = icmp slt i32 %328, %331
  br i1 %332, label %334, label %333

333:                                              ; preds = %327
  store i32 11, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %383

334:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #9
  %335 = load ptr, ptr %12, align 8, !tbaa !5
  %336 = load i32, ptr %18, align 4, !tbaa !99
  %337 = load i32, ptr %19, align 4, !tbaa !99
  %338 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12GetTableRectEP10ImGuiTableii(ptr noundef %335, i32 noundef %336, i32 noundef %337)
  %339 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %20, i32 0, i32 0
  %340 = extractvalue { <2 x float>, <2 x float> } %338, 0
  store <2 x float> %340, ptr %339, align 4
  %341 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %20, i32 0, i32 1
  %342 = extractvalue { <2 x float>, <2 x float> } %338, 1
  store <2 x float> %342, ptr %341, align 4
  %343 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %344 = getelementptr inbounds %struct.ImRect, ptr %20, i32 0, i32 0
  %345 = getelementptr inbounds %struct.ImVec2, ptr %344, i32 0, i32 0
  %346 = load float, ptr %345, align 4, !tbaa !100
  %347 = fpext float %346 to double
  %348 = getelementptr inbounds %struct.ImRect, ptr %20, i32 0, i32 0
  %349 = getelementptr inbounds %struct.ImVec2, ptr %348, i32 0, i32 1
  %350 = load float, ptr %349, align 4, !tbaa !101
  %351 = fpext float %350 to double
  %352 = getelementptr inbounds %struct.ImRect, ptr %20, i32 0, i32 1
  %353 = getelementptr inbounds %struct.ImVec2, ptr %352, i32 0, i32 0
  %354 = load float, ptr %353, align 4, !tbaa !102
  %355 = fpext float %354 to double
  %356 = getelementptr inbounds %struct.ImRect, ptr %20, i32 0, i32 1
  %357 = getelementptr inbounds %struct.ImVec2, ptr %356, i32 0, i32 1
  %358 = load float, ptr %357, align 4, !tbaa !103
  %359 = fpext float %358 to double
  %360 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %20)
  %361 = fpext float %360 to double
  %362 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %20)
  %363 = fpext float %362 to double
  %364 = load i32, ptr %19, align 4, !tbaa !99
  %365 = load i32, ptr %18, align 4, !tbaa !99
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds [13 x ptr], ptr %8, i64 0, i64 %366
  %368 = load ptr, ptr %367, align 8, !tbaa !5
  %369 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %343, i64 noundef 128, ptr noundef @.str.308, double noundef %347, double noundef %351, double noundef %355, double noundef %359, double noundef %361, double noundef %363, i32 noundef %364, ptr noundef %368)
  %370 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %371 = call noundef zeroext i1 @_ZN5ImGui10SelectableEPKcbiRK6ImVec2(ptr noundef %370, i1 noundef zeroext false, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(8) %21)
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  %372 = call noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef 0)
  br i1 %372, label %373, label %379

373:                                              ; preds = %334
  %374 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %375 = getelementptr inbounds %struct.ImRect, ptr %20, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %376 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %375, ptr noundef nonnull align 4 dereferenceable(8) %23)
  store <2 x float> %376, ptr %22, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %377 = getelementptr inbounds %struct.ImRect, ptr %20, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %25, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %378 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %377, ptr noundef nonnull align 4 dereferenceable(8) %25)
  store <2 x float> %378, ptr %24, align 4
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %374, ptr noundef nonnull align 4 dereferenceable(8) %22, ptr noundef nonnull align 4 dereferenceable(8) %24, i32 noundef -16711681, float noundef 0.000000e+00, i32 noundef 0, float noundef 2.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %379

379:                                              ; preds = %373, %334
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  br label %380

380:                                              ; preds = %379
  %381 = load i32, ptr %19, align 4, !tbaa !99
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr %19, align 4, !tbaa !99
  br label %327, !llvm.loop !121

383:                                              ; preds = %333
  br label %428

384:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #9
  %385 = load ptr, ptr %12, align 8, !tbaa !5
  %386 = load i32, ptr %18, align 4, !tbaa !99
  %387 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12GetTableRectEP10ImGuiTableii(ptr noundef %385, i32 noundef %386, i32 noundef -1)
  %388 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %26, i32 0, i32 0
  %389 = extractvalue { <2 x float>, <2 x float> } %387, 0
  store <2 x float> %389, ptr %388, align 4
  %390 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %26, i32 0, i32 1
  %391 = extractvalue { <2 x float>, <2 x float> } %387, 1
  store <2 x float> %391, ptr %390, align 4
  %392 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %393 = getelementptr inbounds %struct.ImRect, ptr %26, i32 0, i32 0
  %394 = getelementptr inbounds %struct.ImVec2, ptr %393, i32 0, i32 0
  %395 = load float, ptr %394, align 4, !tbaa !100
  %396 = fpext float %395 to double
  %397 = getelementptr inbounds %struct.ImRect, ptr %26, i32 0, i32 0
  %398 = getelementptr inbounds %struct.ImVec2, ptr %397, i32 0, i32 1
  %399 = load float, ptr %398, align 4, !tbaa !101
  %400 = fpext float %399 to double
  %401 = getelementptr inbounds %struct.ImRect, ptr %26, i32 0, i32 1
  %402 = getelementptr inbounds %struct.ImVec2, ptr %401, i32 0, i32 0
  %403 = load float, ptr %402, align 4, !tbaa !102
  %404 = fpext float %403 to double
  %405 = getelementptr inbounds %struct.ImRect, ptr %26, i32 0, i32 1
  %406 = getelementptr inbounds %struct.ImVec2, ptr %405, i32 0, i32 1
  %407 = load float, ptr %406, align 4, !tbaa !103
  %408 = fpext float %407 to double
  %409 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %26)
  %410 = fpext float %409 to double
  %411 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %26)
  %412 = fpext float %411 to double
  %413 = load i32, ptr %18, align 4, !tbaa !99
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds [13 x ptr], ptr %8, i64 0, i64 %414
  %416 = load ptr, ptr %415, align 8, !tbaa !5
  %417 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %392, i64 noundef 128, ptr noundef @.str.304, double noundef %396, double noundef %400, double noundef %404, double noundef %408, double noundef %410, double noundef %412, ptr noundef %416)
  %418 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %419 = call noundef zeroext i1 @_ZN5ImGui10SelectableEPKcbiRK6ImVec2(ptr noundef %418, i1 noundef zeroext false, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(8) %27)
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  %420 = call noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef 0)
  br i1 %420, label %421, label %427

421:                                              ; preds = %384
  %422 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %423 = getelementptr inbounds %struct.ImRect, ptr %26, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %424 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %423, ptr noundef nonnull align 4 dereferenceable(8) %29)
  store <2 x float> %424, ptr %28, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %425 = getelementptr inbounds %struct.ImRect, ptr %26, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %426 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %425, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %426, ptr %30, align 4
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %422, ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %30, i32 noundef -16711681, float noundef 0.000000e+00, i32 noundef 0, float noundef 2.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  br label %427

427:                                              ; preds = %421, %384
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #9
  br label %428

428:                                              ; preds = %427, %383
  br label %429

429:                                              ; preds = %428, %325
  %430 = load i32, ptr %18, align 4, !tbaa !99
  %431 = add nsw i32 %430, 1
  store i32 %431, ptr %18, align 4, !tbaa !99
  br label %312, !llvm.loop !122

432:                                              ; preds = %315
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void @llvm.lifetime.end.p0(i64 128, ptr %17) #9
  store i32 0, ptr %6, align 4
  br label %433

433:                                              ; preds = %432, %287
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  %434 = load i32, ptr %6, align 4
  switch i32 %434, label %1291 [
    i32 0, label %435
    i32 7, label %436
  ]

435:                                              ; preds = %433
  br label %436

436:                                              ; preds = %435, %433
  %437 = load i32, ptr %11, align 4, !tbaa !99
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %11, align 4, !tbaa !99
  br label %248, !llvm.loop !123

439:                                              ; preds = %254
  br label %440

440:                                              ; preds = %439, %242, %219
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %441 = call noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef @.str.309, ptr noundef nonnull align 4 dereferenceable(8) %32)
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br i1 %441, label %442, label %443

442:                                              ; preds = %440
  call void @_ZN5ImGui20DebugStartItemPickerEv()
  br label %443

443:                                              ; preds = %442, %440
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  call void @_ZL17MetricsHelpMarkerPKc(ptr noundef @.str.310)
  call void @_ZN5ImGui7TreePopEv()
  br label %444

444:                                              ; preds = %443, %135
  %445 = load ptr, ptr %3, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.ImGuiContext, ptr %445, i32 0, i32 22
  %447 = getelementptr inbounds %struct.ImVector.1, ptr %446, i32 0, i32 0
  %448 = load i32, ptr %447, align 8, !tbaa !124
  %449 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.311, ptr noundef @.str.312, i32 noundef %448)
  br i1 %449, label %450, label %506

450:                                              ; preds = %444
  %451 = load ptr, ptr %3, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.ImGuiContext, ptr %451, i32 0, i32 22
  call void @_ZN5ImGui20DebugNodeWindowsListEP8ImVectorIP11ImGuiWindowEPKc(ptr noundef %452, ptr noundef @.str.313)
  %453 = load ptr, ptr %3, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.ImGuiContext, ptr %453, i32 0, i32 23
  call void @_ZN5ImGui20DebugNodeWindowsListEP8ImVectorIP11ImGuiWindowEPKc(ptr noundef %454, ptr noundef @.str.314)
  %455 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef @.str.315)
  br i1 %455, label %456, label %505

456:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %457 = load ptr, ptr %3, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.ImGuiContext, ptr %457, i32 0, i32 24
  store ptr %458, ptr %33, align 8, !tbaa !5
  %459 = load ptr, ptr %33, align 8, !tbaa !5
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %459, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  store i32 0, ptr %34, align 4, !tbaa !99
  br label %460

460:                                              ; preds = %488, %456
  %461 = load i32, ptr %34, align 4, !tbaa !99
  %462 = load ptr, ptr %3, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.ImGuiContext, ptr %462, i32 0, i32 22
  %464 = getelementptr inbounds %struct.ImVector.1, ptr %463, i32 0, i32 0
  %465 = load i32, ptr %464, align 8, !tbaa !124
  %466 = icmp slt i32 %461, %465
  br i1 %466, label %468, label %467

467:                                              ; preds = %460
  store i32 14, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  br label %491

468:                                              ; preds = %460
  %469 = load ptr, ptr %3, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.ImGuiContext, ptr %469, i32 0, i32 22
  %471 = load i32, ptr %34, align 4, !tbaa !99
  %472 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %470, i32 noundef %471)
  %473 = load ptr, ptr %472, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.ImGuiWindow, ptr %473, i32 0, i32 64
  %475 = load i32, ptr %474, align 8, !tbaa !125
  %476 = add nsw i32 %475, 1
  %477 = load ptr, ptr %3, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.ImGuiContext, ptr %477, i32 0, i32 12
  %479 = load i32, ptr %478, align 8, !tbaa !116
  %480 = icmp sge i32 %476, %479
  br i1 %480, label %481, label %487

481:                                              ; preds = %468
  %482 = load ptr, ptr %33, align 8, !tbaa !5
  %483 = load ptr, ptr %3, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.ImGuiContext, ptr %483, i32 0, i32 22
  %485 = load i32, ptr %34, align 4, !tbaa !99
  %486 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %484, i32 noundef %485)
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %482, ptr noundef nonnull align 8 dereferenceable(8) %486)
  br label %487

487:                                              ; preds = %481, %468
  br label %488

488:                                              ; preds = %487
  %489 = load i32, ptr %34, align 4, !tbaa !99
  %490 = add nsw i32 %489, 1
  store i32 %490, ptr %34, align 4, !tbaa !99
  br label %460, !llvm.loop !126

491:                                              ; preds = %467
  %492 = load ptr, ptr %33, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.ImVector.1, ptr %492, i32 0, i32 2
  %494 = load ptr, ptr %493, align 8, !tbaa !127
  %495 = load ptr, ptr %33, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.ImVector.1, ptr %495, i32 0, i32 0
  %497 = load i32, ptr %496, align 8, !tbaa !128
  %498 = sext i32 %497 to i64
  call void @_ZL7ImQsortPvmmPFiPKvS1_E(ptr noundef %494, i64 noundef %498, i64 noundef 8, ptr noundef @_ZZN5ImGui17ShowMetricsWindowEPbEN4Func26WindowComparerByBeginOrderEPKvS3_)
  %499 = load ptr, ptr %33, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.ImVector.1, ptr %499, i32 0, i32 2
  %501 = load ptr, ptr %500, align 8, !tbaa !127
  %502 = load ptr, ptr %33, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.ImVector.1, ptr %502, i32 0, i32 0
  %504 = load i32, ptr %503, align 8, !tbaa !128
  call void @_ZN5ImGui38DebugNodeWindowsListByBeginStackParentEPP11ImGuiWindowiS1_(ptr noundef %501, i32 noundef %504, ptr noundef null)
  call void @_ZN5ImGui7TreePopEv()
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %505

505:                                              ; preds = %491, %450
  call void @_ZN5ImGui7TreePopEv()
  br label %506

506:                                              ; preds = %505, %444
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  store i32 0, ptr %35, align 4, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  store i32 0, ptr %36, align 4, !tbaa !99
  br label %507

507:                                              ; preds = %525, %506
  %508 = load i32, ptr %36, align 4, !tbaa !99
  %509 = load ptr, ptr %3, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.ImGuiContext, ptr %509, i32 0, i32 87
  %511 = getelementptr inbounds %struct.ImVector.11, ptr %510, i32 0, i32 0
  %512 = load i32, ptr %511, align 8, !tbaa !129
  %513 = icmp slt i32 %508, %512
  br i1 %513, label %515, label %514

514:                                              ; preds = %507
  store i32 17, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  br label %528

515:                                              ; preds = %507
  %516 = load ptr, ptr %3, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.ImGuiContext, ptr %516, i32 0, i32 87
  %518 = load i32, ptr %36, align 4, !tbaa !99
  %519 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP14ImGuiViewportPEixEi(ptr noundef nonnull align 8 dereferenceable(16) %517, i32 noundef %518)
  %520 = load ptr, ptr %519, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.ImGuiViewportP, ptr %520, i32 0, i32 4
  %522 = call noundef i32 @_ZNK17ImDrawDataBuilder16GetDrawListCountEv(ptr noundef nonnull align 8 dereferenceable(32) %521)
  %523 = load i32, ptr %35, align 4, !tbaa !99
  %524 = add nsw i32 %523, %522
  store i32 %524, ptr %35, align 4, !tbaa !99
  br label %525

525:                                              ; preds = %515
  %526 = load i32, ptr %36, align 4, !tbaa !99
  %527 = add nsw i32 %526, 1
  store i32 %527, ptr %36, align 4, !tbaa !99
  br label %507, !llvm.loop !130

528:                                              ; preds = %514
  %529 = load i32, ptr %35, align 4, !tbaa !99
  %530 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.316, ptr noundef @.str.317, i32 noundef %529)
  br i1 %530, label %531, label %591

531:                                              ; preds = %528
  %532 = load ptr, ptr %5, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %532, i32 0, i32 4
  %534 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.318, ptr noundef %533)
  %535 = load ptr, ptr %5, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %535, i32 0, i32 5
  %537 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.319, ptr noundef %536)
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  store i32 0, ptr %37, align 4, !tbaa !99
  br label %538

538:                                              ; preds = %587, %531
  %539 = load i32, ptr %37, align 4, !tbaa !99
  %540 = load ptr, ptr %3, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.ImGuiContext, ptr %540, i32 0, i32 87
  %542 = getelementptr inbounds %struct.ImVector.11, ptr %541, i32 0, i32 0
  %543 = load i32, ptr %542, align 8, !tbaa !129
  %544 = icmp slt i32 %539, %543
  br i1 %544, label %546, label %545

545:                                              ; preds = %538
  store i32 20, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  br label %590

546:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %547 = load ptr, ptr %3, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.ImGuiContext, ptr %547, i32 0, i32 87
  %549 = load i32, ptr %37, align 4, !tbaa !99
  %550 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP14ImGuiViewportPEixEi(ptr noundef nonnull align 8 dereferenceable(16) %548, i32 noundef %549)
  %551 = load ptr, ptr %550, align 8, !tbaa !5
  store ptr %551, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  store i32 0, ptr %39, align 4, !tbaa !99
  br label %552

552:                                              ; preds = %583, %546
  %553 = load i32, ptr %39, align 4, !tbaa !99
  %554 = icmp slt i32 %553, 2
  br i1 %554, label %556, label %555

555:                                              ; preds = %552
  store i32 23, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  br label %586

556:                                              ; preds = %552
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #9
  store i32 0, ptr %40, align 4, !tbaa !99
  br label %557

557:                                              ; preds = %579, %556
  %558 = load i32, ptr %40, align 4, !tbaa !99
  %559 = load ptr, ptr %38, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.ImGuiViewportP, ptr %559, i32 0, i32 4
  %561 = getelementptr inbounds %struct.ImDrawDataBuilder, ptr %560, i32 0, i32 0
  %562 = load i32, ptr %39, align 4, !tbaa !99
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds [2 x %struct.ImVector.41], ptr %561, i64 0, i64 %563
  %565 = getelementptr inbounds %struct.ImVector.41, ptr %564, i32 0, i32 0
  %566 = load i32, ptr %565, align 8, !tbaa !131
  %567 = icmp slt i32 %558, %566
  br i1 %567, label %569, label %568

568:                                              ; preds = %557
  store i32 26, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %582

569:                                              ; preds = %557
  %570 = load ptr, ptr %38, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.ImGuiViewportP, ptr %570, i32 0, i32 4
  %572 = getelementptr inbounds %struct.ImDrawDataBuilder, ptr %571, i32 0, i32 0
  %573 = load i32, ptr %39, align 4, !tbaa !99
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds [2 x %struct.ImVector.41], ptr %572, i64 0, i64 %574
  %576 = load i32, ptr %40, align 4, !tbaa !99
  %577 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP10ImDrawListEixEi(ptr noundef nonnull align 8 dereferenceable(16) %575, i32 noundef %576)
  %578 = load ptr, ptr %577, align 8, !tbaa !5
  call void @_ZN5ImGui17DebugNodeDrawListEP11ImGuiWindowPK10ImDrawListPKc(ptr noundef null, ptr noundef %578, ptr noundef @.str.320)
  br label %579

579:                                              ; preds = %569
  %580 = load i32, ptr %40, align 4, !tbaa !99
  %581 = add nsw i32 %580, 1
  store i32 %581, ptr %40, align 4, !tbaa !99
  br label %557, !llvm.loop !133

582:                                              ; preds = %568
  br label %583

583:                                              ; preds = %582
  %584 = load i32, ptr %39, align 4, !tbaa !99
  %585 = add nsw i32 %584, 1
  store i32 %585, ptr %39, align 4, !tbaa !99
  br label %552, !llvm.loop !134

586:                                              ; preds = %555
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %587

587:                                              ; preds = %586
  %588 = load i32, ptr %37, align 4, !tbaa !99
  %589 = add nsw i32 %588, 1
  store i32 %589, ptr %37, align 4, !tbaa !99
  br label %538, !llvm.loop !135

590:                                              ; preds = %545
  call void @_ZN5ImGui7TreePopEv()
  br label %591

591:                                              ; preds = %590, %528
  %592 = load ptr, ptr %3, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.ImGuiContext, ptr %592, i32 0, i32 87
  %594 = getelementptr inbounds %struct.ImVector.11, ptr %593, i32 0, i32 0
  %595 = load i32, ptr %594, align 8, !tbaa !129
  %596 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.321, ptr noundef @.str.322, i32 noundef %595)
  br i1 %596, label %597, label %618

597:                                              ; preds = %591
  %598 = call noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv()
  call void @_ZN5ImGui6IndentEf(float noundef %598)
  call void @_ZL25RenderViewportsThumbnailsv()
  %599 = call noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv()
  call void @_ZN5ImGui8UnindentEf(float noundef %599)
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #9
  store i32 0, ptr %41, align 4, !tbaa !99
  br label %600

600:                                              ; preds = %614, %597
  %601 = load i32, ptr %41, align 4, !tbaa !99
  %602 = load ptr, ptr %3, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.ImGuiContext, ptr %602, i32 0, i32 87
  %604 = getelementptr inbounds %struct.ImVector.11, ptr %603, i32 0, i32 0
  %605 = load i32, ptr %604, align 8, !tbaa !129
  %606 = icmp slt i32 %601, %605
  br i1 %606, label %608, label %607

607:                                              ; preds = %600
  store i32 29, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  br label %617

608:                                              ; preds = %600
  %609 = load ptr, ptr %3, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.ImGuiContext, ptr %609, i32 0, i32 87
  %611 = load i32, ptr %41, align 4, !tbaa !99
  %612 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP14ImGuiViewportPEixEi(ptr noundef nonnull align 8 dereferenceable(16) %610, i32 noundef %611)
  %613 = load ptr, ptr %612, align 8, !tbaa !5
  call void @_ZN5ImGui17DebugNodeViewportEP14ImGuiViewportP(ptr noundef %613)
  br label %614

614:                                              ; preds = %608
  %615 = load i32, ptr %41, align 4, !tbaa !99
  %616 = add nsw i32 %615, 1
  store i32 %616, ptr %41, align 4, !tbaa !99
  br label %600, !llvm.loop !136

617:                                              ; preds = %607
  call void @_ZN5ImGui7TreePopEv()
  br label %618

618:                                              ; preds = %617, %591
  %619 = load ptr, ptr %3, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.ImGuiContext, ptr %619, i32 0, i32 83
  %621 = getelementptr inbounds %struct.ImVector.10, ptr %620, i32 0, i32 0
  %622 = load i32, ptr %621, align 8, !tbaa !137
  %623 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.323, ptr noundef @.str.324, i32 noundef %622)
  br i1 %623, label %624, label %683

624:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #9
  store i32 0, ptr %42, align 4, !tbaa !99
  br label %625

625:                                              ; preds = %679, %624
  %626 = load i32, ptr %42, align 4, !tbaa !99
  %627 = load ptr, ptr %3, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.ImGuiContext, ptr %627, i32 0, i32 83
  %629 = getelementptr inbounds %struct.ImVector.10, ptr %628, i32 0, i32 0
  %630 = load i32, ptr %629, align 8, !tbaa !137
  %631 = icmp slt i32 %626, %630
  br i1 %631, label %633, label %632

632:                                              ; preds = %625
  store i32 32, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %682

633:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %634 = load ptr, ptr %3, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.ImGuiContext, ptr %634, i32 0, i32 83
  %636 = load i32, ptr %42, align 4, !tbaa !99
  %637 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %635, i32 noundef %636)
  %638 = getelementptr inbounds %struct.ImGuiPopupData, ptr %637, i32 0, i32 1
  %639 = load ptr, ptr %638, align 8, !tbaa !138
  store ptr %639, ptr %43, align 8, !tbaa !5
  %640 = load ptr, ptr %3, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.ImGuiContext, ptr %640, i32 0, i32 83
  %642 = load i32, ptr %42, align 4, !tbaa !99
  %643 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %641, i32 noundef %642)
  %644 = getelementptr inbounds %struct.ImGuiPopupData, ptr %643, i32 0, i32 0
  %645 = load i32, ptr %644, align 8, !tbaa !140
  %646 = load ptr, ptr %43, align 8, !tbaa !5
  %647 = icmp ne ptr %646, null
  br i1 %647, label %648, label %652

648:                                              ; preds = %633
  %649 = load ptr, ptr %43, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiWindow, ptr %649, i32 0, i32 0
  %651 = load ptr, ptr %650, align 8, !tbaa !98
  br label %653

652:                                              ; preds = %633
  br label %653

653:                                              ; preds = %652, %648
  %654 = phi ptr [ %651, %648 ], [ @.str.326, %652 ]
  %655 = load ptr, ptr %43, align 8, !tbaa !5
  %656 = icmp ne ptr %655, null
  br i1 %656, label %657, label %663

657:                                              ; preds = %653
  %658 = load ptr, ptr %43, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.ImGuiWindow, ptr %658, i32 0, i32 2
  %660 = load i32, ptr %659, align 4, !tbaa !141
  %661 = and i32 %660, 16777216
  %662 = icmp ne i32 %661, 0
  br label %663

663:                                              ; preds = %657, %653
  %664 = phi i1 [ false, %653 ], [ %662, %657 ]
  %665 = zext i1 %664 to i64
  %666 = select i1 %664, ptr @.str.327, ptr @.str.14
  %667 = load ptr, ptr %43, align 8, !tbaa !5
  %668 = icmp ne ptr %667, null
  br i1 %668, label %669, label %675

669:                                              ; preds = %663
  %670 = load ptr, ptr %43, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.ImGuiWindow, ptr %670, i32 0, i32 2
  %672 = load i32, ptr %671, align 4, !tbaa !141
  %673 = and i32 %672, 268435456
  %674 = icmp ne i32 %673, 0
  br label %675

675:                                              ; preds = %669, %663
  %676 = phi i1 [ false, %663 ], [ %674, %669 ]
  %677 = zext i1 %676 to i64
  %678 = select i1 %676, ptr @.str.328, ptr @.str.14
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef @.str.325, i32 noundef %645, ptr noundef %654, ptr noundef %666, ptr noundef %678)
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %679

679:                                              ; preds = %675
  %680 = load i32, ptr %42, align 4, !tbaa !99
  %681 = add nsw i32 %680, 1
  store i32 %681, ptr %42, align 4, !tbaa !99
  br label %625, !llvm.loop !142

682:                                              ; preds = %632
  call void @_ZN5ImGui7TreePopEv()
  br label %683

683:                                              ; preds = %682, %618
  %684 = load ptr, ptr %3, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.ImGuiContext, ptr %684, i32 0, i32 173
  %686 = call noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE13GetAliveCountEv(ptr noundef nonnull align 8 dereferenceable(40) %685)
  %687 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.329, ptr noundef @.str.330, i32 noundef %686)
  br i1 %687, label %688, label %711

688:                                              ; preds = %683
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #9
  store i32 0, ptr %44, align 4, !tbaa !99
  br label %689

689:                                              ; preds = %707, %688
  %690 = load i32, ptr %44, align 4, !tbaa !99
  %691 = load ptr, ptr %3, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.ImGuiContext, ptr %691, i32 0, i32 173
  %693 = call noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %692)
  %694 = icmp slt i32 %690, %693
  br i1 %694, label %696, label %695

695:                                              ; preds = %689
  store i32 35, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  br label %710

696:                                              ; preds = %689
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %697 = load ptr, ptr %3, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.ImGuiContext, ptr %697, i32 0, i32 173
  %699 = load i32, ptr %44, align 4, !tbaa !99
  %700 = call noundef ptr @_ZN6ImPoolI11ImGuiTabBarE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40) %698, i32 noundef %699)
  store ptr %700, ptr %45, align 8, !tbaa !5
  %701 = load ptr, ptr %45, align 8, !tbaa !5
  %702 = icmp ne ptr %701, null
  br i1 %702, label %703, label %706

703:                                              ; preds = %696
  %704 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN5ImGui6PushIDEPKv(ptr noundef %704)
  %705 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN5ImGui15DebugNodeTabBarEP11ImGuiTabBarPKc(ptr noundef %705, ptr noundef @.str.331)
  call void @_ZN5ImGui5PopIDEv()
  br label %706

706:                                              ; preds = %703, %696
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %707

707:                                              ; preds = %706
  %708 = load i32, ptr %44, align 4, !tbaa !99
  %709 = add nsw i32 %708, 1
  store i32 %709, ptr %44, align 4, !tbaa !99
  br label %689, !llvm.loop !143

710:                                              ; preds = %695
  call void @_ZN5ImGui7TreePopEv()
  br label %711

711:                                              ; preds = %710, %683
  %712 = load ptr, ptr %3, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.ImGuiContext, ptr %712, i32 0, i32 169
  %714 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE13GetAliveCountEv(ptr noundef nonnull align 8 dereferenceable(40) %713)
  %715 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.332, ptr noundef @.str.333, i32 noundef %714)
  br i1 %715, label %716, label %738

716:                                              ; preds = %711
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #9
  store i32 0, ptr %46, align 4, !tbaa !99
  br label %717

717:                                              ; preds = %734, %716
  %718 = load i32, ptr %46, align 4, !tbaa !99
  %719 = load ptr, ptr %3, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.ImGuiContext, ptr %719, i32 0, i32 169
  %721 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %720)
  %722 = icmp slt i32 %718, %721
  br i1 %722, label %724, label %723

723:                                              ; preds = %717
  store i32 38, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  br label %737

724:                                              ; preds = %717
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %725 = load ptr, ptr %3, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.ImGuiContext, ptr %725, i32 0, i32 169
  %727 = load i32, ptr %46, align 4, !tbaa !99
  %728 = call noundef ptr @_ZN6ImPoolI10ImGuiTableE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40) %726, i32 noundef %727)
  store ptr %728, ptr %47, align 8, !tbaa !5
  %729 = load ptr, ptr %47, align 8, !tbaa !5
  %730 = icmp ne ptr %729, null
  br i1 %730, label %731, label %733

731:                                              ; preds = %724
  %732 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN5ImGui14DebugNodeTableEP10ImGuiTable(ptr noundef %732)
  br label %733

733:                                              ; preds = %731, %724
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %734

734:                                              ; preds = %733
  %735 = load i32, ptr %46, align 4, !tbaa !99
  %736 = add nsw i32 %735, 1
  store i32 %736, ptr %46, align 4, !tbaa !99
  br label %717, !llvm.loop !144

737:                                              ; preds = %723
  call void @_ZN5ImGui7TreePopEv()
  br label %738

738:                                              ; preds = %737, %711
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #9
  %739 = load ptr, ptr %3, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.ImGuiContext, ptr %739, i32 0, i32 3
  %741 = getelementptr inbounds %struct.ImGuiIO, ptr %740, i32 0, i32 13
  %742 = load ptr, ptr %741, align 8, !tbaa !145
  store ptr %742, ptr %48, align 8, !tbaa !5
  %743 = load ptr, ptr %48, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.ImFontAtlas, ptr %743, i32 0, i32 15
  %745 = getelementptr inbounds %struct.ImVector.6, ptr %744, i32 0, i32 0
  %746 = load i32, ptr %745, align 8, !tbaa !146
  %747 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.334, ptr noundef @.str.335, i32 noundef %746)
  br i1 %747, label %748, label %750

748:                                              ; preds = %738
  %749 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN5ImGui13ShowFontAtlasEP11ImFontAtlas(ptr noundef %749)
  call void @_ZN5ImGui7TreePopEv()
  br label %750

750:                                              ; preds = %748, %738
  %751 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef @.str.336)
  br i1 %751, label %752, label %869

752:                                              ; preds = %750
  %753 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef @.str.337)
  br i1 %753, label %754, label %755

754:                                              ; preds = %752
  call void @_ZN5ImGui16ClearIniSettingsEv()
  br label %755

755:                                              ; preds = %754, %752
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %756 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef @.str.338)
  br i1 %756, label %757, label %759

757:                                              ; preds = %755
  %758 = call noundef ptr @_ZN5ImGui23SaveIniSettingsToMemoryEPm(ptr noundef null)
  br label %759

759:                                              ; preds = %757, %755
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %760 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef @.str.339)
  br i1 %760, label %761, label %766

761:                                              ; preds = %759
  %762 = load ptr, ptr %3, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.ImGuiContext, ptr %762, i32 0, i32 3
  %764 = getelementptr inbounds %struct.ImGuiIO, ptr %763, i32 0, i32 5
  %765 = load ptr, ptr %764, align 8, !tbaa !150
  call void @_ZN5ImGui21SaveIniSettingsToDiskEPKc(ptr noundef %765)
  br label %766

766:                                              ; preds = %761, %759
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %767 = load ptr, ptr %3, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.ImGuiContext, ptr %767, i32 0, i32 3
  %769 = getelementptr inbounds %struct.ImGuiIO, ptr %768, i32 0, i32 5
  %770 = load ptr, ptr %769, align 8, !tbaa !150
  %771 = icmp ne ptr %770, null
  br i1 %771, label %772, label %777

772:                                              ; preds = %766
  %773 = load ptr, ptr %3, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.ImGuiContext, ptr %773, i32 0, i32 3
  %775 = getelementptr inbounds %struct.ImGuiIO, ptr %774, i32 0, i32 5
  %776 = load ptr, ptr %775, align 8, !tbaa !150
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.340, ptr noundef %776)
  br label %778

777:                                              ; preds = %766
  call void @_ZN5ImGui15TextUnformattedEPKcS1_(ptr noundef @.str.341, ptr noundef null)
  br label %778

778:                                              ; preds = %777, %772
  %779 = load ptr, ptr %3, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.ImGuiContext, ptr %779, i32 0, i32 205
  %781 = load float, ptr %780, align 4, !tbaa !151
  %782 = fpext float %781 to double
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.342, double noundef %782)
  %783 = load ptr, ptr %3, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.ImGuiContext, ptr %783, i32 0, i32 207
  %785 = getelementptr inbounds %struct.ImVector.24, ptr %784, i32 0, i32 0
  %786 = load i32, ptr %785, align 8, !tbaa !152
  %787 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.343, ptr noundef @.str.344, i32 noundef %786)
  br i1 %787, label %788, label %808

788:                                              ; preds = %778
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  store i32 0, ptr %49, align 4, !tbaa !99
  br label %789

789:                                              ; preds = %804, %788
  %790 = load i32, ptr %49, align 4, !tbaa !99
  %791 = load ptr, ptr %3, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.ImGuiContext, ptr %791, i32 0, i32 207
  %793 = getelementptr inbounds %struct.ImVector.24, ptr %792, i32 0, i32 0
  %794 = load i32, ptr %793, align 8, !tbaa !152
  %795 = icmp slt i32 %790, %794
  br i1 %795, label %797, label %796

796:                                              ; preds = %789
  store i32 41, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  br label %807

797:                                              ; preds = %789
  %798 = load ptr, ptr %3, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.ImGuiContext, ptr %798, i32 0, i32 207
  %800 = load i32, ptr %49, align 4, !tbaa !99
  %801 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN8ImVectorI20ImGuiSettingsHandlerEixEi(ptr noundef nonnull align 8 dereferenceable(16) %799, i32 noundef %800)
  %802 = getelementptr inbounds %struct.ImGuiSettingsHandler, ptr %801, i32 0, i32 0
  %803 = load ptr, ptr %802, align 8, !tbaa !153
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef @.str.345, ptr noundef %803)
  br label %804

804:                                              ; preds = %797
  %805 = load i32, ptr %49, align 4, !tbaa !99
  %806 = add nsw i32 %805, 1
  store i32 %806, ptr %49, align 4, !tbaa !99
  br label %789, !llvm.loop !155

807:                                              ; preds = %796
  call void @_ZN5ImGui7TreePopEv()
  br label %808

808:                                              ; preds = %807, %778
  %809 = load ptr, ptr %3, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.ImGuiContext, ptr %809, i32 0, i32 208
  %811 = call noundef i32 @_ZNK13ImChunkStreamI19ImGuiWindowSettingsE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %810)
  %812 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.346, ptr noundef @.str.347, i32 noundef %811)
  br i1 %812, label %813, label %829

813:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %814 = load ptr, ptr %3, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.ImGuiContext, ptr %814, i32 0, i32 208
  %816 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %815)
  store ptr %816, ptr %50, align 8, !tbaa !5
  br label %817

817:                                              ; preds = %823, %813
  %818 = load ptr, ptr %50, align 8, !tbaa !5
  %819 = icmp ne ptr %818, null
  br i1 %819, label %821, label %820

820:                                              ; preds = %817
  store i32 44, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %828

821:                                              ; preds = %817
  %822 = load ptr, ptr %50, align 8, !tbaa !5
  call void @_ZN5ImGui23DebugNodeWindowSettingsEP19ImGuiWindowSettings(ptr noundef %822)
  br label %823

823:                                              ; preds = %821
  %824 = load ptr, ptr %3, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.ImGuiContext, ptr %824, i32 0, i32 208
  %826 = load ptr, ptr %50, align 8, !tbaa !5
  %827 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE10next_chunkEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %825, ptr noundef %826)
  store ptr %827, ptr %50, align 8, !tbaa !5
  br label %817, !llvm.loop !156

828:                                              ; preds = %820
  call void @_ZN5ImGui7TreePopEv()
  br label %829

829:                                              ; preds = %828, %808
  %830 = load ptr, ptr %3, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.ImGuiContext, ptr %830, i32 0, i32 209
  %832 = call noundef i32 @_ZNK13ImChunkStreamI18ImGuiTableSettingsE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %831)
  %833 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.348, ptr noundef @.str.349, i32 noundef %832)
  br i1 %833, label %834, label %850

834:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  %835 = load ptr, ptr %3, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.ImGuiContext, ptr %835, i32 0, i32 209
  %837 = call noundef ptr @_ZN13ImChunkStreamI18ImGuiTableSettingsE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %836)
  store ptr %837, ptr %51, align 8, !tbaa !5
  br label %838

838:                                              ; preds = %844, %834
  %839 = load ptr, ptr %51, align 8, !tbaa !5
  %840 = icmp ne ptr %839, null
  br i1 %840, label %842, label %841

841:                                              ; preds = %838
  store i32 47, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  br label %849

842:                                              ; preds = %838
  %843 = load ptr, ptr %51, align 8, !tbaa !5
  call void @_ZN5ImGui22DebugNodeTableSettingsEP18ImGuiTableSettings(ptr noundef %843)
  br label %844

844:                                              ; preds = %842
  %845 = load ptr, ptr %3, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiContext, ptr %845, i32 0, i32 209
  %847 = load ptr, ptr %51, align 8, !tbaa !5
  %848 = call noundef ptr @_ZN13ImChunkStreamI18ImGuiTableSettingsE10next_chunkEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %846, ptr noundef %847)
  store ptr %848, ptr %51, align 8, !tbaa !5
  br label %838, !llvm.loop !157

849:                                              ; preds = %841
  call void @_ZN5ImGui7TreePopEv()
  br label %850

850:                                              ; preds = %849, %829
  %851 = load ptr, ptr %3, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.ImGuiContext, ptr %851, i32 0, i32 206
  %853 = call noundef i32 @_ZNK15ImGuiTextBuffer4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %852)
  %854 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef @.str.350, ptr noundef @.str.351, i32 noundef %853)
  br i1 %854, label %855, label %868

855:                                              ; preds = %850
  %856 = load ptr, ptr %3, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.ImGuiContext, ptr %856, i32 0, i32 206
  %858 = call noundef ptr @_ZNK15ImGuiTextBuffer5c_strEv(ptr noundef nonnull align 8 dereferenceable(16) %857)
  %859 = load ptr, ptr %3, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.ImGuiContext, ptr %859, i32 0, i32 206
  %861 = getelementptr inbounds %struct.ImGuiTextBuffer, ptr %860, i32 0, i32 0
  %862 = getelementptr inbounds %struct.ImVector.22, ptr %861, i32 0, i32 0
  %863 = load i32, ptr %862, align 8, !tbaa !158
  %864 = sext i32 %863 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %865 = call noundef float @_ZN5ImGui17GetTextLineHeightEv()
  %866 = fmul float %865, 2.000000e+01
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef 0xB810000000000000, float noundef %866)
  %867 = call noundef zeroext i1 @_ZN5ImGui18InputTextMultilineEPKcPcmRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef @.str.352, ptr noundef %858, i64 noundef %864, ptr noundef nonnull align 4 dereferenceable(8) %52, i32 noundef 16384, ptr noundef null, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @_ZN5ImGui7TreePopEv()
  br label %868

868:                                              ; preds = %855, %850
  call void @_ZN5ImGui7TreePopEv()
  br label %869

869:                                              ; preds = %868, %750
  %870 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef @.str.353)
  br i1 %870, label %871, label %1094

871:                                              ; preds = %869
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.354)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %872 = load ptr, ptr %3, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.ImGuiContext, ptr %872, i32 0, i32 31
  %874 = load ptr, ptr %873, align 8, !tbaa !159
  %875 = icmp ne ptr %874, null
  br i1 %875, label %876, label %882

876:                                              ; preds = %871
  %877 = load ptr, ptr %3, align 8, !tbaa !5
  %878 = getelementptr inbounds %struct.ImGuiContext, ptr %877, i32 0, i32 31
  %879 = load ptr, ptr %878, align 8, !tbaa !159
  %880 = getelementptr inbounds %struct.ImGuiWindow, ptr %879, i32 0, i32 0
  %881 = load ptr, ptr %880, align 8, !tbaa !98
  br label %883

882:                                              ; preds = %871
  br label %883

883:                                              ; preds = %882, %876
  %884 = phi ptr [ %881, %876 ], [ @.str.326, %882 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.355, ptr noundef %884)
  %885 = load ptr, ptr %3, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.ImGuiContext, ptr %885, i32 0, i32 31
  %887 = load ptr, ptr %886, align 8, !tbaa !159
  %888 = icmp ne ptr %887, null
  br i1 %888, label %889, label %897

889:                                              ; preds = %883
  %890 = load ptr, ptr %3, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.ImGuiContext, ptr %890, i32 0, i32 31
  %892 = load ptr, ptr %891, align 8, !tbaa !159
  %893 = getelementptr inbounds %struct.ImGuiWindow, ptr %892, i32 0, i32 76
  %894 = load ptr, ptr %893, align 8, !tbaa !160
  %895 = getelementptr inbounds %struct.ImGuiWindow, ptr %894, i32 0, i32 0
  %896 = load ptr, ptr %895, align 8, !tbaa !98
  br label %898

897:                                              ; preds = %883
  br label %898

898:                                              ; preds = %897, %889
  %899 = phi ptr [ %896, %889 ], [ @.str.326, %897 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.356, ptr noundef %899)
  %900 = load ptr, ptr %3, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.ImGuiContext, ptr %900, i32 0, i32 32
  %902 = load ptr, ptr %901, align 8, !tbaa !161
  %903 = icmp ne ptr %902, null
  br i1 %903, label %904, label %910

904:                                              ; preds = %898
  %905 = load ptr, ptr %3, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.ImGuiContext, ptr %905, i32 0, i32 32
  %907 = load ptr, ptr %906, align 8, !tbaa !161
  %908 = getelementptr inbounds %struct.ImGuiWindow, ptr %907, i32 0, i32 0
  %909 = load ptr, ptr %908, align 8, !tbaa !98
  br label %911

910:                                              ; preds = %898
  br label %911

911:                                              ; preds = %910, %904
  %912 = phi ptr [ %909, %904 ], [ @.str.326, %910 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.357, ptr noundef %912)
  %913 = load ptr, ptr %3, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.ImGuiContext, ptr %913, i32 0, i32 33
  %915 = load ptr, ptr %914, align 8, !tbaa !162
  %916 = icmp ne ptr %915, null
  br i1 %916, label %917, label %923

917:                                              ; preds = %911
  %918 = load ptr, ptr %3, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.ImGuiContext, ptr %918, i32 0, i32 33
  %920 = load ptr, ptr %919, align 8, !tbaa !162
  %921 = getelementptr inbounds %struct.ImGuiWindow, ptr %920, i32 0, i32 0
  %922 = load ptr, ptr %921, align 8, !tbaa !98
  br label %924

923:                                              ; preds = %911
  br label %924

924:                                              ; preds = %923, %917
  %925 = phi ptr [ %922, %917 ], [ @.str.326, %923 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.358, ptr noundef %925)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.359)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %926 = load ptr, ptr %3, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.ImGuiContext, ptr %926, i32 0, i32 46
  %928 = load i32, ptr %927, align 4, !tbaa !163
  %929 = load ptr, ptr %3, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.ImGuiContext, ptr %929, i32 0, i32 65
  %931 = load i32, ptr %930, align 8, !tbaa !164
  %932 = load ptr, ptr %3, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.ImGuiContext, ptr %932, i32 0, i32 48
  %934 = load float, ptr %933, align 4, !tbaa !165
  %935 = fpext float %934 to double
  %936 = load ptr, ptr %3, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.ImGuiContext, ptr %936, i32 0, i32 50
  %938 = load i8, ptr %937, align 1, !tbaa !166, !range !13, !noundef !14
  %939 = trunc i8 %938 to i1
  %940 = zext i1 %939 to i32
  %941 = load ptr, ptr %3, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.ImGuiContext, ptr %941, i32 0, i32 63
  %943 = load i32, ptr %942, align 8, !tbaa !167
  %944 = call noundef ptr @_ZL18GetInputSourceName16ImGuiInputSource(i32 noundef %943)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.360, i32 noundef %928, i32 noundef %931, double noundef %935, i32 noundef %940, ptr noundef %944)
  %945 = load ptr, ptr %3, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.ImGuiContext, ptr %945, i32 0, i32 62
  %947 = load ptr, ptr %946, align 8, !tbaa !168
  %948 = icmp ne ptr %947, null
  br i1 %948, label %949, label %955

949:                                              ; preds = %924
  %950 = load ptr, ptr %3, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.ImGuiContext, ptr %950, i32 0, i32 62
  %952 = load ptr, ptr %951, align 8, !tbaa !168
  %953 = getelementptr inbounds %struct.ImGuiWindow, ptr %952, i32 0, i32 0
  %954 = load ptr, ptr %953, align 8, !tbaa !98
  br label %956

955:                                              ; preds = %924
  br label %956

956:                                              ; preds = %955, %949
  %957 = phi ptr [ %954, %949 ], [ @.str.326, %955 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.361, ptr noundef %957)
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  store i32 0, ptr %53, align 4, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  store i32 0, ptr %54, align 4, !tbaa !99
  br label %958

958:                                              ; preds = %973, %956
  %959 = load i32, ptr %54, align 4, !tbaa !99
  %960 = load ptr, ptr %3, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.ImGuiContext, ptr %960, i32 0, i32 59
  %962 = icmp slt i32 %959, 129
  br i1 %962, label %964, label %963

963:                                              ; preds = %958
  store i32 50, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %976

964:                                              ; preds = %958
  %965 = load ptr, ptr %3, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.ImGuiContext, ptr %965, i32 0, i32 59
  %967 = load i32, ptr %54, align 4, !tbaa !99
  %968 = call noundef zeroext i1 @_ZNK10ImBitArrayILi129EE7TestBitEi(ptr noundef nonnull align 4 dereferenceable(20) %966, i32 noundef %967)
  %969 = zext i1 %968 to i64
  %970 = select i1 %968, i32 1, i32 0
  %971 = load i32, ptr %53, align 4, !tbaa !99
  %972 = add nsw i32 %971, %970
  store i32 %972, ptr %53, align 4, !tbaa !99
  br label %973

973:                                              ; preds = %964
  %974 = load i32, ptr %54, align 4, !tbaa !99
  %975 = add nsw i32 %974, 1
  store i32 %975, ptr %54, align 4, !tbaa !99
  br label %958, !llvm.loop !169

976:                                              ; preds = %963
  %977 = load ptr, ptr %3, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.ImGuiContext, ptr %977, i32 0, i32 55
  %979 = load i8, ptr %978, align 2, !tbaa !170, !range !13, !noundef !14
  %980 = trunc i8 %979 to i1
  %981 = zext i1 %980 to i32
  %982 = load ptr, ptr %3, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.ImGuiContext, ptr %982, i32 0, i32 57
  %984 = load i32, ptr %983, align 8, !tbaa !171
  %985 = load ptr, ptr %3, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.ImGuiContext, ptr %985, i32 0, i32 58
  %987 = load i32, ptr %986, align 4, !tbaa !172
  %988 = load i32, ptr %53, align 4, !tbaa !99
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.362, i32 noundef %981, i32 noundef %984, i32 noundef %987, i32 noundef %988)
  %989 = load ptr, ptr %3, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.ImGuiContext, ptr %989, i32 0, i32 39
  %991 = load i32, ptr %990, align 4, !tbaa !173
  %992 = load ptr, ptr %3, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImGuiContext, ptr %992, i32 0, i32 44
  %994 = load float, ptr %993, align 4, !tbaa !174
  %995 = fpext float %994 to double
  %996 = load ptr, ptr %3, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.ImGuiContext, ptr %996, i32 0, i32 40
  %998 = load i8, ptr %997, align 8, !tbaa !175, !range !13, !noundef !14
  %999 = trunc i8 %998 to i1
  %1000 = zext i1 %999 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.363, i32 noundef %991, double noundef %995, i32 noundef %1000)
  %1001 = load ptr, ptr %3, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.ImGuiContext, ptr %1001, i32 0, i32 142
  %1003 = load i8, ptr %1002, align 4, !tbaa !176, !range !13, !noundef !14
  %1004 = trunc i8 %1003 to i1
  %1005 = zext i1 %1004 to i32
  %1006 = load ptr, ptr %3, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.ImGuiContext, ptr %1006, i32 0, i32 150
  %1008 = getelementptr inbounds %struct.ImGuiPayload, ptr %1007, i32 0, i32 2
  %1009 = load i32, ptr %1008, align 4, !tbaa !177
  %1010 = load ptr, ptr %3, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.ImGuiContext, ptr %1010, i32 0, i32 150
  %1012 = getelementptr inbounds %struct.ImGuiPayload, ptr %1011, i32 0, i32 5
  %1013 = getelementptr inbounds [33 x i8], ptr %1012, i64 0, i64 0
  %1014 = load ptr, ptr %3, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.ImGuiContext, ptr %1014, i32 0, i32 150
  %1016 = getelementptr inbounds %struct.ImGuiPayload, ptr %1015, i32 0, i32 1
  %1017 = load i32, ptr %1016, align 8, !tbaa !178
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.364, i32 noundef %1005, i32 noundef %1009, ptr noundef %1013, i32 noundef %1017)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.365)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %1018 = load ptr, ptr %3, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.ImGuiContext, ptr %1018, i32 0, i32 88
  %1020 = load ptr, ptr %1019, align 8, !tbaa !52
  %1021 = icmp ne ptr %1020, null
  br i1 %1021, label %1022, label %1028

1022:                                             ; preds = %976
  %1023 = load ptr, ptr %3, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.ImGuiContext, ptr %1023, i32 0, i32 88
  %1025 = load ptr, ptr %1024, align 8, !tbaa !52
  %1026 = getelementptr inbounds %struct.ImGuiWindow, ptr %1025, i32 0, i32 0
  %1027 = load ptr, ptr %1026, align 8, !tbaa !98
  br label %1029

1028:                                             ; preds = %976
  br label %1029

1029:                                             ; preds = %1028, %1022
  %1030 = phi ptr [ %1027, %1022 ], [ @.str.326, %1028 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.366, ptr noundef %1030)
  %1031 = load ptr, ptr %3, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.ImGuiContext, ptr %1031, i32 0, i32 89
  %1033 = load i32, ptr %1032, align 8, !tbaa !179
  %1034 = load ptr, ptr %3, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.ImGuiContext, ptr %1034, i32 0, i32 102
  %1036 = load i32, ptr %1035, align 4, !tbaa !180
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.367, i32 noundef %1033, i32 noundef %1036)
  %1037 = load ptr, ptr %3, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.ImGuiContext, ptr %1037, i32 0, i32 101
  %1039 = load i32, ptr %1038, align 8, !tbaa !181
  %1040 = call noundef ptr @_ZL18GetInputSourceName16ImGuiInputSource(i32 noundef %1039)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.368, ptr noundef %1040)
  %1041 = load ptr, ptr %3, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.ImGuiContext, ptr %1041, i32 0, i32 3
  %1043 = getelementptr inbounds %struct.ImGuiIO, ptr %1042, i32 0, i32 41
  %1044 = load i8, ptr %1043, align 1, !tbaa !182, !range !13, !noundef !14
  %1045 = trunc i8 %1044 to i1
  %1046 = zext i1 %1045 to i32
  %1047 = load ptr, ptr %3, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.ImGuiContext, ptr %1047, i32 0, i32 3
  %1049 = getelementptr inbounds %struct.ImGuiIO, ptr %1048, i32 0, i32 42
  %1050 = load i8, ptr %1049, align 2, !tbaa !183, !range !13, !noundef !14
  %1051 = trunc i8 %1050 to i1
  %1052 = zext i1 %1051 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.369, i32 noundef %1046, i32 noundef %1052)
  %1053 = load ptr, ptr %3, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.ImGuiContext, ptr %1053, i32 0, i32 91
  %1055 = load i32, ptr %1054, align 8, !tbaa !184
  %1056 = load ptr, ptr %3, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.ImGuiContext, ptr %1056, i32 0, i32 92
  %1058 = load i32, ptr %1057, align 4, !tbaa !185
  %1059 = load ptr, ptr %3, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.ImGuiContext, ptr %1059, i32 0, i32 93
  %1061 = load i32, ptr %1060, align 8, !tbaa !186
  %1062 = load ptr, ptr %3, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.ImGuiContext, ptr %1062, i32 0, i32 94
  %1064 = load i32, ptr %1063, align 4, !tbaa !187
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.370, i32 noundef %1055, i32 noundef %1058, i32 noundef %1061, i32 noundef %1064)
  %1065 = load ptr, ptr %3, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.ImGuiContext, ptr %1065, i32 0, i32 95
  %1067 = load i32, ptr %1066, align 8, !tbaa !188
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.371, i32 noundef %1067)
  %1068 = load ptr, ptr %3, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.ImGuiContext, ptr %1068, i32 0, i32 105
  %1070 = load i8, ptr %1069, align 2, !tbaa !189, !range !13, !noundef !14
  %1071 = trunc i8 %1070 to i1
  %1072 = zext i1 %1071 to i32
  %1073 = load ptr, ptr %3, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.ImGuiContext, ptr %1073, i32 0, i32 106
  %1075 = load i8, ptr %1074, align 1, !tbaa !190, !range !13, !noundef !14
  %1076 = trunc i8 %1075 to i1
  %1077 = zext i1 %1076 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.372, i32 noundef %1072, i32 noundef %1077)
  %1078 = load ptr, ptr %3, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.ImGuiContext, ptr %1078, i32 0, i32 90
  %1080 = load i32, ptr %1079, align 4, !tbaa !191
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.373, i32 noundef %1080)
  %1081 = load ptr, ptr %3, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.ImGuiContext, ptr %1081, i32 0, i32 133
  %1083 = load ptr, ptr %1082, align 8, !tbaa !192
  %1084 = icmp ne ptr %1083, null
  br i1 %1084, label %1085, label %1091

1085:                                             ; preds = %1029
  %1086 = load ptr, ptr %3, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.ImGuiContext, ptr %1086, i32 0, i32 133
  %1088 = load ptr, ptr %1087, align 8, !tbaa !192
  %1089 = getelementptr inbounds %struct.ImGuiWindow, ptr %1088, i32 0, i32 0
  %1090 = load ptr, ptr %1089, align 8, !tbaa !98
  br label %1092

1091:                                             ; preds = %1029
  br label %1092

1092:                                             ; preds = %1091, %1085
  %1093 = phi ptr [ %1090, %1085 ], [ @.str.326, %1091 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.374, ptr noundef %1093)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void @_ZN5ImGui7TreePopEv()
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  br label %1094

1094:                                             ; preds = %1092, %869
  %1095 = load ptr, ptr %5, align 8, !tbaa !5
  %1096 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %1095, i32 0, i32 1
  %1097 = load i8, ptr %1096, align 1, !tbaa !51, !range !13, !noundef !14
  %1098 = trunc i8 %1097 to i1
  br i1 %1098, label %1104, label %1099

1099:                                             ; preds = %1094
  %1100 = load ptr, ptr %5, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %1100, i32 0, i32 2
  %1102 = load i8, ptr %1101, align 2, !tbaa !193, !range !13, !noundef !14
  %1103 = trunc i8 %1102 to i1
  br i1 %1103, label %1104, label %1183

1104:                                             ; preds = %1099, %1094
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  store i32 0, ptr %55, align 4, !tbaa !99
  br label %1105

1105:                                             ; preds = %1179, %1104
  %1106 = load i32, ptr %55, align 4, !tbaa !99
  %1107 = load ptr, ptr %3, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.ImGuiContext, ptr %1107, i32 0, i32 22
  %1109 = getelementptr inbounds %struct.ImVector.1, ptr %1108, i32 0, i32 0
  %1110 = load i32, ptr %1109, align 8, !tbaa !124
  %1111 = icmp slt i32 %1106, %1110
  br i1 %1111, label %1113, label %1112

1112:                                             ; preds = %1105
  store i32 53, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  br label %1182

1113:                                             ; preds = %1105
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #9
  %1114 = load ptr, ptr %3, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.ImGuiContext, ptr %1114, i32 0, i32 22
  %1116 = load i32, ptr %55, align 4, !tbaa !99
  %1117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1115, i32 noundef %1116)
  %1118 = load ptr, ptr %1117, align 8, !tbaa !5
  store ptr %1118, ptr %56, align 8, !tbaa !5
  %1119 = load ptr, ptr %56, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.ImGuiWindow, ptr %1119, i32 0, i32 24
  %1121 = load i8, ptr %1120, align 1, !tbaa !194, !range !13, !noundef !14
  %1122 = trunc i8 %1121 to i1
  br i1 %1122, label %1124, label %1123

1123:                                             ; preds = %1113
  store i32 55, ptr %6, align 4
  br label %1176

1124:                                             ; preds = %1113
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #9
  %1125 = load ptr, ptr %56, align 8, !tbaa !5
  %1126 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEP11ImGuiWindow(ptr noundef %1125)
  store ptr %1126, ptr %57, align 8, !tbaa !5
  %1127 = load ptr, ptr %5, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %1127, i32 0, i32 1
  %1129 = load i8, ptr %1128, align 1, !tbaa !51, !range !13, !noundef !14
  %1130 = trunc i8 %1129 to i1
  br i1 %1130, label %1131, label %1144

1131:                                             ; preds = %1124
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #9
  %1132 = load ptr, ptr %56, align 8, !tbaa !5
  %1133 = load ptr, ptr %5, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %1133, i32 0, i32 6
  %1135 = load i32, ptr %1134, align 4, !tbaa !49
  %1136 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %1132, i32 noundef %1135)
  %1137 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %58, i32 0, i32 0
  %1138 = extractvalue { <2 x float>, <2 x float> } %1136, 0
  store <2 x float> %1138, ptr %1137, align 4
  %1139 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %58, i32 0, i32 1
  %1140 = extractvalue { <2 x float>, <2 x float> } %1136, 1
  store <2 x float> %1140, ptr %1139, align 4
  %1141 = load ptr, ptr %57, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.ImRect, ptr %58, i32 0, i32 0
  %1143 = getelementptr inbounds %struct.ImRect, ptr %58, i32 0, i32 1
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %1141, ptr noundef nonnull align 4 dereferenceable(8) %1142, ptr noundef nonnull align 4 dereferenceable(8) %1143, i32 noundef -8388353, float noundef 0.000000e+00, i32 noundef 0, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #9
  br label %1144

1144:                                             ; preds = %1131, %1124
  %1145 = load ptr, ptr %5, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %1145, i32 0, i32 2
  %1147 = load i8, ptr %1146, align 2, !tbaa !193, !range !13, !noundef !14
  %1148 = trunc i8 %1147 to i1
  br i1 %1148, label %1149, label %1175

1149:                                             ; preds = %1144
  %1150 = load ptr, ptr %56, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.ImGuiWindow, ptr %1150, i32 0, i32 2
  %1152 = load i32, ptr %1151, align 4, !tbaa !141
  %1153 = and i32 %1152, 16777216
  %1154 = icmp ne i32 %1153, 0
  br i1 %1154, label %1175, label %1155

1155:                                             ; preds = %1149
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #9
  %1156 = getelementptr inbounds [32 x i8], ptr %59, i64 0, i64 0
  %1157 = load ptr, ptr %56, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.ImGuiWindow, ptr %1157, i32 0, i32 37
  %1159 = load i16, ptr %1158, align 2, !tbaa !195
  %1160 = sext i16 %1159 to i32
  %1161 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %1156, i64 noundef 32, ptr noundef @.str.375, i32 noundef %1160)
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #9
  %1162 = call noundef float @_ZN5ImGui11GetFontSizeEv()
  store float %1162, ptr %60, align 4, !tbaa !196
  %1163 = load ptr, ptr %57, align 8, !tbaa !5
  %1164 = load ptr, ptr %56, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.ImGuiWindow, ptr %1164, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #9
  %1166 = load ptr, ptr %56, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.ImGuiWindow, ptr %1166, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #9
  %1168 = load float, ptr %60, align 4, !tbaa !196
  %1169 = load float, ptr %60, align 4, !tbaa !196
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %62, float noundef %1168, float noundef %1169)
  %1170 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1167, ptr noundef nonnull align 4 dereferenceable(8) %62)
  store <2 x float> %1170, ptr %61, align 4
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1163, ptr noundef nonnull align 4 dereferenceable(8) %1165, ptr noundef nonnull align 4 dereferenceable(8) %61, i32 noundef -10197816, float noundef 0.000000e+00, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  %1171 = load ptr, ptr %57, align 8, !tbaa !5
  %1172 = load ptr, ptr %56, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.ImGuiWindow, ptr %1172, i32 0, i32 3
  %1174 = getelementptr inbounds [32 x i8], ptr %59, i64 0, i64 0
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196) %1171, ptr noundef nonnull align 4 dereferenceable(8) %1173, i32 noundef -1, ptr noundef %1174, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #9
  br label %1175

1175:                                             ; preds = %1155, %1149, %1144
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  store i32 0, ptr %6, align 4
  br label %1176

1176:                                             ; preds = %1175, %1123
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  %1177 = load i32, ptr %6, align 4
  switch i32 %1177, label %1291 [
    i32 0, label %1178
    i32 55, label %1179
  ]

1178:                                             ; preds = %1176
  br label %1179

1179:                                             ; preds = %1178, %1176
  %1180 = load i32, ptr %55, align 4, !tbaa !99
  %1181 = add nsw i32 %1180, 1
  store i32 %1181, ptr %55, align 4, !tbaa !99
  br label %1105, !llvm.loop !197

1182:                                             ; preds = %1112
  br label %1183

1183:                                             ; preds = %1182, %1099
  %1184 = load ptr, ptr %5, align 8, !tbaa !5
  %1185 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %1184, i32 0, i32 3
  %1186 = load i8, ptr %1185, align 1, !tbaa !106, !range !13, !noundef !14
  %1187 = trunc i8 %1186 to i1
  br i1 %1187, label %1188, label %1287

1188:                                             ; preds = %1183
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #9
  store i32 0, ptr %63, align 4, !tbaa !99
  br label %1189

1189:                                             ; preds = %1283, %1188
  %1190 = load i32, ptr %63, align 4, !tbaa !99
  %1191 = load ptr, ptr %3, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.ImGuiContext, ptr %1191, i32 0, i32 169
  %1193 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %1192)
  %1194 = icmp slt i32 %1190, %1193
  br i1 %1194, label %1196, label %1195

1195:                                             ; preds = %1189
  store i32 56, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %1286

1196:                                             ; preds = %1189
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %1197 = load ptr, ptr %3, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.ImGuiContext, ptr %1197, i32 0, i32 169
  %1199 = load i32, ptr %63, align 4, !tbaa !99
  %1200 = call noundef ptr @_ZN6ImPoolI10ImGuiTableE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40) %1198, i32 noundef %1199)
  store ptr %1200, ptr %64, align 8, !tbaa !5
  %1201 = load ptr, ptr %64, align 8, !tbaa !5
  %1202 = icmp eq ptr %1201, null
  br i1 %1202, label %1212, label %1203

1203:                                             ; preds = %1196
  %1204 = load ptr, ptr %64, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.ImGuiTable, ptr %1204, i32 0, i32 13
  %1206 = load i32, ptr %1205, align 8, !tbaa !107
  %1207 = load ptr, ptr %3, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.ImGuiContext, ptr %1207, i32 0, i32 12
  %1209 = load i32, ptr %1208, align 8, !tbaa !116
  %1210 = sub nsw i32 %1209, 1
  %1211 = icmp slt i32 %1206, %1210
  br i1 %1211, label %1212, label %1213

1212:                                             ; preds = %1203, %1196
  store i32 58, ptr %6, align 4
  br label %1280

1213:                                             ; preds = %1203
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  %1214 = load ptr, ptr %64, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.ImGuiTable, ptr %1214, i32 0, i32 55
  %1216 = load ptr, ptr %1215, align 8, !tbaa !117
  %1217 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEP11ImGuiWindow(ptr noundef %1216)
  store ptr %1217, ptr %65, align 8, !tbaa !5
  %1218 = load ptr, ptr %5, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %1218, i32 0, i32 7
  %1220 = load i32, ptr %1219, align 4, !tbaa !50
  %1221 = icmp sge i32 %1220, 6
  br i1 %1221, label %1222, label %1266

1222:                                             ; preds = %1213
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #9
  store i32 0, ptr %66, align 4, !tbaa !99
  br label %1223

1223:                                             ; preds = %1262, %1222
  %1224 = load i32, ptr %66, align 4, !tbaa !99
  %1225 = load ptr, ptr %64, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.ImGuiTable, ptr %1225, i32 0, i32 14
  %1227 = load i32, ptr %1226, align 4, !tbaa !120
  %1228 = icmp slt i32 %1224, %1227
  br i1 %1228, label %1230, label %1229

1229:                                             ; preds = %1223
  store i32 59, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  br label %1265

1230:                                             ; preds = %1223
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #9
  %1231 = load ptr, ptr %64, align 8, !tbaa !5
  %1232 = load ptr, ptr %5, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %1232, i32 0, i32 7
  %1234 = load i32, ptr %1233, align 4, !tbaa !50
  %1235 = load i32, ptr %66, align 4, !tbaa !99
  %1236 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12GetTableRectEP10ImGuiTableii(ptr noundef %1231, i32 noundef %1234, i32 noundef %1235)
  %1237 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %67, i32 0, i32 0
  %1238 = extractvalue { <2 x float>, <2 x float> } %1236, 0
  store <2 x float> %1238, ptr %1237, align 4
  %1239 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %67, i32 0, i32 1
  %1240 = extractvalue { <2 x float>, <2 x float> } %1236, 1
  store <2 x float> %1240, ptr %1239, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #9
  %1241 = load ptr, ptr %64, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.ImGuiTable, ptr %1241, i32 0, i32 66
  %1243 = load i8, ptr %1242, align 4, !tbaa !198
  %1244 = sext i8 %1243 to i32
  %1245 = load i32, ptr %66, align 4, !tbaa !99
  %1246 = icmp eq i32 %1244, %1245
  %1247 = zext i1 %1246 to i64
  %1248 = select i1 %1246, i32 -8323073, i32 -8388353
  store i32 %1248, ptr %68, align 4, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #9
  %1249 = load ptr, ptr %64, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.ImGuiTable, ptr %1249, i32 0, i32 66
  %1251 = load i8, ptr %1250, align 4, !tbaa !198
  %1252 = sext i8 %1251 to i32
  %1253 = load i32, ptr %66, align 4, !tbaa !99
  %1254 = icmp eq i32 %1252, %1253
  %1255 = zext i1 %1254 to i64
  %1256 = select i1 %1254, float 3.000000e+00, float 1.000000e+00
  store float %1256, ptr %69, align 4, !tbaa !196
  %1257 = load ptr, ptr %65, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.ImRect, ptr %67, i32 0, i32 0
  %1259 = getelementptr inbounds %struct.ImRect, ptr %67, i32 0, i32 1
  %1260 = load i32, ptr %68, align 4, !tbaa !99
  %1261 = load float, ptr %69, align 4, !tbaa !196
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %1257, ptr noundef nonnull align 4 dereferenceable(8) %1258, ptr noundef nonnull align 4 dereferenceable(8) %1259, i32 noundef %1260, float noundef 0.000000e+00, i32 noundef 0, float noundef %1261)
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #9
  br label %1262

1262:                                             ; preds = %1230
  %1263 = load i32, ptr %66, align 4, !tbaa !99
  %1264 = add nsw i32 %1263, 1
  store i32 %1264, ptr %66, align 4, !tbaa !99
  br label %1223, !llvm.loop !199

1265:                                             ; preds = %1229
  br label %1279

1266:                                             ; preds = %1213
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #9
  %1267 = load ptr, ptr %64, align 8, !tbaa !5
  %1268 = load ptr, ptr %5, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.ImGuiMetricsConfig, ptr %1268, i32 0, i32 7
  %1270 = load i32, ptr %1269, align 4, !tbaa !50
  %1271 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12GetTableRectEP10ImGuiTableii(ptr noundef %1267, i32 noundef %1270, i32 noundef -1)
  %1272 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %70, i32 0, i32 0
  %1273 = extractvalue { <2 x float>, <2 x float> } %1271, 0
  store <2 x float> %1273, ptr %1272, align 4
  %1274 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %70, i32 0, i32 1
  %1275 = extractvalue { <2 x float>, <2 x float> } %1271, 1
  store <2 x float> %1275, ptr %1274, align 4
  %1276 = load ptr, ptr %65, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 0
  %1278 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 1
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %1276, ptr noundef nonnull align 4 dereferenceable(8) %1277, ptr noundef nonnull align 4 dereferenceable(8) %1278, i32 noundef -8388353, float noundef 0.000000e+00, i32 noundef 0, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #9
  br label %1279

1279:                                             ; preds = %1266, %1265
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  store i32 0, ptr %6, align 4
  br label %1280

1280:                                             ; preds = %1279, %1212
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  %1281 = load i32, ptr %6, align 4
  switch i32 %1281, label %1291 [
    i32 0, label %1282
    i32 58, label %1283
  ]

1282:                                             ; preds = %1280
  br label %1283

1283:                                             ; preds = %1282, %1280
  %1284 = load i32, ptr %63, align 4, !tbaa !99
  %1285 = add nsw i32 %1284, 1
  store i32 %1285, ptr %63, align 4, !tbaa !99
  br label %1189, !llvm.loop !200

1286:                                             ; preds = %1195
  br label %1287

1287:                                             ; preds = %1286, %1183
  call void @_ZN5ImGui3EndEv()
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 104, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %7) #9
  store i32 0, ptr %6, align 4
  br label %1288

1288:                                             ; preds = %1287, %92
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #9
  %1289 = load i32, ptr %6, align 4
  switch i32 %1289, label %1291 [
    i32 0, label %1290
    i32 1, label %1290
  ]

1290:                                             ; preds = %1288, %1288
  ret void

1291:                                             ; preds = %1288, %1280, %1176, %433
  unreachable
}

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

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

declare void @_ZN5ImGui9SeparatorEv() #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6ImPoolI10ImGuiTableE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) #6 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui20DebugNodeWindowsListEP8ImVectorIP11ImGuiWindowEPKc(ptr noundef, ptr noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZZN5ImGui17ShowMetricsWindowEPbEN4Func26WindowComparerByBeginOrderEPKvS3_(ptr noundef, ptr noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui38DebugNodeWindowsListByBeginStackParentEPP11ImGuiWindowiS1_(ptr noundef, i32 noundef, ptr noundef) #6

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

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

declare noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv() #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui17DebugNodeViewportEP14ImGuiViewportP(ptr noundef) #6

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6ImPoolI11ImGuiTabBarE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui15DebugNodeTabBarEP11ImGuiTabBarPKc(ptr noundef, ptr noundef) #6

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

declare void @_ZN5ImGui14DebugNodeTableEP10ImGuiTable(ptr noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13ShowFontAtlasEP11ImFontAtlas(ptr noundef) #6

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

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

; 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 dso_local void @_ZN5ImGui23DebugNodeWindowSettingsEP19ImGuiWindowSettings(ptr noundef) #6

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

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

declare void @_ZN5ImGui22DebugNodeTableSettingsEP18ImGuiTableSettings(ptr noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN13ImChunkStreamI18ImGuiTableSettingsE10next_chunkEPS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #6 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) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImBitArrayILi129EE7TestBitEi(ptr noundef nonnull align 4 dereferenceable(20), i32 noundef) #6 align 2

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

declare void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, 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 = { 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 #5 = { "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 = { 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 #7 = { 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 #8 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTS18ImGuiMetricsConfig", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3, !11, i64 4, !11, i64 5, !12, i64 8, !12, i64 12}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !19, i64 154}
!16 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !12, i64 8, !12, i64 12, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !17, i64 56, !17, i64 64, !18, i64 72, !18, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !17, i64 92, !17, i64 100, !17, i64 108, !17, i64 116, !17, i64 124, !17, i64 132, !11, i64 140, !11, i64 141, !11, i64 142, !11, i64 143, !11, i64 144, !11, i64 145, !11, i64 146, !11, i64 147, !11, i64 148, !11, i64 149, !11, i64 150, !11, i64 151, !11, i64 152, !7, i64 153, !19, i64 154, !19, i64 156, !19, i64 158, !19, i64 160, !12, i64 164, !7, i64 168, !7, i64 169, !7, i64 170, !11, i64 171, !12, i64 172, !7, i64 176, !7, i64 177, !7, i64 178, !7, i64 179, !12, i64 180, !12, i64 181, !12, i64 182, !17, i64 184, !17, i64 192, !20, i64 200, !21, i64 216, !27, i64 448, !27, i64 464, !27, i64 480, !27, i64 496, !27, i64 512, !27, i64 528, !27, i64 544, !28, i64 560, !28, i64 564, !12, i64 568, !18, i64 572, !18, i64 576, !29, i64 584, !31, i64 600, !18, i64 616, !12, i64 620, !6, i64 624, !32, i64 632, !6, i64 832, !6, i64 840, !6, i64 848, !6, i64 856, !6, i64 864, !6, i64 872, !6, i64 880, !7, i64 888, !7, i64 896, !12, i64 928, !12, i64 932, !11, i64 936}
!17 = !{!"_ZTS6ImVec2", !18, i64 0, !18, i64 4}
!18 = !{!"float", !7, i64 0}
!19 = !{!"short", !7, i64 0}
!20 = !{!"_ZTS8ImVectorIjE", !12, i64 0, !12, i64 4, !6, i64 8}
!21 = !{!"_ZTS19ImGuiWindowTempData", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !18, i64 56, !18, i64 60, !22, i64 64, !22, i64 68, !22, i64 72, !17, i64 76, !23, i64 84, !19, i64 88, !19, i64 90, !12, i64 92, !11, i64 96, !11, i64 97, !11, i64 98, !17, i64 100, !24, i64 108, !12, i64 136, !12, i64 140, !25, i64 144, !6, i64 160, !6, i64 168, !12, i64 176, !12, i64 180, !12, i64 184, !18, i64 188, !18, i64 192, !26, i64 200, !26, i64 216}
!22 = !{!"_ZTS6ImVec1", !18, i64 0}
!23 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!24 = !{!"_ZTS16ImGuiMenuColumns", !12, i64 0, !12, i64 4, !19, i64 8, !19, i64 10, !19, i64 12, !19, i64 14, !19, i64 16, !7, i64 18}
!25 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !12, i64 0, !12, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorIfE", !12, i64 0, !12, i64 4, !6, i64 8}
!27 = !{!"_ZTS6ImRect", !17, i64 0, !17, i64 8}
!28 = !{!"_ZTS8ImVec2ih", !19, i64 0, !19, i64 2}
!29 = !{!"_ZTS12ImGuiStorage", !30, i64 0}
!30 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !12, i64 0, !12, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !12, i64 0, !12, i64 4, !6, i64 8}
!32 = !{!"_ZTS10ImDrawList", !33, i64 0, !34, i64 16, !35, i64 32, !12, i64 48, !12, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !36, i64 88, !37, i64 104, !38, i64 120, !39, i64 136, !41, i64 168, !18, i64 192}
!33 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !12, i64 0, !12, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorItE", !12, i64 0, !12, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorI10ImDrawVertE", !12, i64 0, !12, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI6ImVec4E", !12, i64 0, !12, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorIPvE", !12, i64 0, !12, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI6ImVec2E", !12, i64 0, !12, i64 4, !6, i64 8}
!39 = !{!"_ZTS15ImDrawCmdHeader", !40, i64 0, !6, i64 16, !12, i64 24}
!40 = !{!"_ZTS6ImVec4", !18, i64 0, !18, i64 4, !18, i64 8, !18, i64 12}
!41 = !{!"_ZTS18ImDrawListSplitter", !12, i64 0, !12, i64 4, !42, i64 8}
!42 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !12, i64 0, !12, i64 4, !6, i64 8}
!43 = !{!44, !18, i64 208}
!44 = !{!"_ZTS7ImGuiIO", !12, i64 0, !12, i64 4, !17, i64 8, !18, i64 16, !18, i64 20, !6, i64 24, !6, i64 32, !18, i64 40, !18, i64 44, !18, i64 48, !18, i64 52, !18, i64 56, !6, i64 64, !6, i64 72, !18, i64 80, !11, i64 84, !6, i64 88, !17, i64 96, !11, i64 104, !11, i64 105, !11, i64 106, !11, i64 107, !11, i64 108, !11, i64 109, !11, i64 110, !18, 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, !6, i64 192, !11, i64 200, !11, i64 201, !11, i64 202, !11, i64 203, !11, i64 204, !11, i64 205, !11, i64 206, !18, i64 208, !12, i64 212, !12, i64 216, !12, i64 220, !12, i64 224, !12, i64 228, !17, i64 232, !7, i64 240, !7, i64 2804, !17, i64 3316, !7, i64 3324, !18, i64 3332, !18, i64 3336, !11, i64 3340, !11, i64 3341, !11, i64 3342, !11, i64 3343, !7, i64 3344, !12, i64 3424, !12, i64 3428, !7, i64 3432, !11, i64 13688, !17, i64 13692, !7, i64 13700, !7, i64 13744, !7, i64 13784, !7, i64 13789, !7, i64 13794, !7, i64 13804, !7, i64 13814, !7, i64 13819, !7, i64 13824, !7, i64 13832, !7, i64 13852, !7, i64 13872, !7, i64 13892, !7, i64 13972, !18, i64 14052, !11, i64 14056, !7, i64 14057, !11, i64 14058, !19, i64 14060, !34, i64 14064}
!45 = !{!44, !12, i64 212}
!46 = !{!44, !12, i64 216}
!47 = !{!44, !12, i64 220}
!48 = !{!44, !12, i64 228}
!49 = !{!10, !12, i64 8}
!50 = !{!10, !12, i64 12}
!51 = !{!10, !11, i64 1}
!52 = !{!53, !6, i64 16360}
!53 = !{!"_ZTS12ImGuiContext", !11, i64 0, !11, i64 1, !44, i64 8, !54, i64 14088, !54, i64 14104, !55, i64 14120, !6, i64 15168, !18, i64 15176, !18, i64 15180, !56, i64 15184, !57, i64 15696, !12, i64 15704, !12, i64 15708, !12, i64 15712, !11, i64 15716, !11, i64 15717, !11, i64 15718, !11, i64 15719, !11, i64 15720, !6, i64 15728, !25, i64 15736, !25, i64 15752, !25, i64 15768, !58, i64 15784, !29, i64 15800, !12, i64 15816, !17, i64 15820, !6, i64 15832, !6, i64 15840, !6, i64 15848, !6, i64 15856, !6, i64 15864, !17, i64 15872, !18, i64 15880, !12, i64 15884, !12, i64 15888, !12, i64 15892, !11, i64 15896, !11, i64 15897, !11, i64 15898, !11, i64 15899, !18, i64 15900, !18, i64 15904, !12, i64 15908, !12, i64 15912, !18, i64 15916, !11, i64 15920, !11, i64 15921, !11, i64 15922, !11, i64 15923, !11, i64 15924, !11, i64 15925, !11, i64 15926, !12, i64 15928, !12, i64 15932, !59, i64 15936, !17, i64 15956, !6, i64 15968, !60, i64 15976, !12, i64 15980, !12, i64 15984, !11, i64 15988, !11, i64 15989, !6, i64 15992, !12, i64 16000, !18, i64 16004, !12, i64 16008, !61, i64 16012, !62, i64 16032, !63, i64 16096, !64, i64 16208, !65, i64 16224, !66, i64 16240, !20, i64 16256, !67, i64 16272, !68, i64 16288, !69, i64 16304, !69, i64 16320, !12, i64 16336, !70, i64 16344, !6, i64 16360, !12, i64 16368, !12, i64 16372, !12, i64 16376, !12, i64 16380, !12, i64 16384, !12, i64 16388, !12, i64 16392, !12, i64 16396, !12, i64 16400, !12, i64 16404, !12, i64 16408, !12, i64 16412, !60, i64 16416, !23, i64 16420, !11, i64 16424, !11, i64 16425, !11, i64 16426, !11, i64 16427, !11, i64 16428, !11, i64 16429, !11, i64 16430, !12, i64 16432, !27, i64 16436, !11, i64 16452, !11, i64 16453, !11, i64 16454, !12, i64 16456, !12, i64 16460, !12, i64 16464, !12, i64 16468, !12, i64 16472, !12, i64 16476, !27, i64 16480, !27, i64 16496, !12, i64 16512, !12, i64 16516, !12, i64 16520, !71, i64 16528, !71, i64 16576, !71, i64 16624, !71, i64 16672, !6, i64 16720, !6, i64 16728, !6, i64 16736, !18, i64 16744, !18, i64 16748, !11, i64 16752, !18, i64 16756, !12, i64 16760, !11, i64 16764, !11, i64 16765, !11, i64 16766, !12, i64 16768, !12, i64 16772, !12, i64 16776, !72, i64 16784, !27, i64 16848, !12, i64 16864, !12, i64 16868, !18, i64 16872, !12, i64 16876, !12, i64 16880, !12, i64 16884, !12, i64 16888, !73, i64 16896, !7, i64 16912, !12, i64 16928, !74, i64 16936, !6, i64 16952, !12, i64 16960, !75, i64 16968, !76, i64 16984, !26, i64 17024, !42, i64 17040, !6, i64 17056, !78, i64 17064, !80, i64 17104, !81, i64 17120, !17, i64 17136, !82, i64 17144, !86, i64 20864, !12, i64 20976, !12, i64 20980, !18, i64 20984, !18, i64 20988, !12, i64 20992, !40, i64 20996, !88, i64 21012, !18, i64 21060, !11, i64 21064, !11, i64 21065, !18, i64 21068, !18, i64 21072, !18, i64 21076, !18, i64 21080, !19, i64 21084, !19, i64 21086, !18, i64 21088, !83, i64 21096, !20, i64 21112, !89, i64 21128, !89, i64 21144, !7, i64 21160, !11, i64 21161, !18, i64 21164, !90, i64 21168, !91, i64 21184, !92, i64 21200, !93, i64 21216, !94, i64 21232, !12, i64 21248, !11, i64 21252, !95, i64 21256, !6, i64 21264, !90, i64 21272, !6, i64 21288, !6, i64 21296, !18, i64 21304, !11, i64 21308, !12, i64 21312, !12, i64 21316, !12, i64 21320, !11, i64 21324, !12, i64 21328, !10, i64 21332, !96, i64 21352, !7, i64 21384, !12, i64 21864, !12, i64 21868, !18, i64 21872, !12, i64 21876, !12, i64 21880, !12, i64 21884, !7, i64 21888}
!54 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !12, i64 0, !12, i64 4, !6, i64 8}
!55 = !{!"_ZTS10ImGuiStyle", !18, i64 0, !18, i64 4, !17, i64 8, !18, i64 16, !18, i64 20, !17, i64 24, !17, i64 32, !12, i64 40, !18, i64 44, !18, i64 48, !18, i64 52, !18, i64 56, !17, i64 60, !18, i64 68, !18, i64 72, !17, i64 76, !17, i64 84, !17, i64 92, !17, i64 100, !18, i64 108, !18, i64 112, !18, i64 116, !18, i64 120, !18, i64 124, !18, i64 128, !18, i64 132, !18, i64 136, !18, i64 140, !18, i64 144, !12, i64 148, !17, i64 152, !17, i64 160, !17, i64 168, !17, i64 176, !18, i64 184, !11, i64 188, !11, i64 189, !11, i64 190, !18, i64 192, !18, i64 196, !7, i64 200}
!56 = !{!"_ZTS20ImDrawListSharedData", !17, i64 0, !6, i64 8, !18, i64 16, !18, i64 20, !18, i64 24, !40, i64 28, !12, i64 44, !7, i64 48, !18, i64 432, !7, i64 436, !6, i64 504}
!57 = !{!"double", !7, i64 0}
!58 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!59 = !{!"_ZTS10ImBitArrayILi129EE", !7, i64 0}
!60 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!61 = !{!"_ZTS17ImGuiNextItemData", !12, i64 0, !18, i64 4, !12, i64 8, !12, i64 12, !11, i64 16}
!62 = !{!"_ZTS17ImGuiLastItemData", !12, i64 0, !12, i64 4, !12, i64 8, !27, i64 12, !27, i64 28, !27, i64 44}
!63 = !{!"_ZTS19ImGuiNextWindowData", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !11, i64 56, !27, i64 60, !6, i64 80, !6, i64 88, !18, i64 96, !17, i64 100}
!64 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !12, i64 0, !12, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !12, i64 0, !12, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorIP6ImFontE", !12, i64 0, !12, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorIiE", !12, i64 0, !12, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!69 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!70 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !12, i64 0, !12, i64 4, !6, i64 8}
!71 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !12, i64 8, !12, i64 12, !27, i64 16, !12, i64 32, !18, i64 36, !18, i64 40, !18, i64 44}
!72 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !7, i64 24, !11, i64 57, !11, i64 58}
!73 = !{!"_ZTS8ImVectorIhE", !12, i64 0, !12, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!75 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!76 = !{!"_ZTS6ImPoolI10ImGuiTableE", !77, i64 0, !29, i64 16, !12, i64 32, !12, i64 36}
!77 = !{!"_ZTS8ImVectorI10ImGuiTableE", !12, i64 0, !12, i64 4, !6, i64 8}
!78 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !79, i64 0, !29, i64 16, !12, i64 32, !12, i64 36}
!79 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !12, i64 0, !12, i64 4, !6, i64 8}
!80 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !12, i64 0, !12, i64 4, !6, i64 8}
!81 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !12, i64 0, !12, i64 4, !6, i64 8}
!82 = !{!"_ZTS19ImGuiInputTextState", !12, i64 0, !12, i64 4, !12, i64 8, !34, i64 16, !83, i64 32, !83, i64 48, !11, i64 64, !12, i64 68, !18, i64 72, !84, i64 76, !18, i64 3704, !11, i64 3708, !11, i64 3709, !11, i64 3710, !12, i64 3712}
!83 = !{!"_ZTS8ImVectorIcE", !12, i64 0, !12, i64 4, !6, i64 8}
!84 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !12, i64 0, !12, i64 4, !12, i64 8, !7, i64 12, !12, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !18, i64 28, !85, i64 32}
!85 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !19, i64 3582, !19, i64 3584, !12, i64 3588, !12, i64 3592}
!86 = !{!"_ZTS6ImFont", !26, i64 0, !18, i64 16, !18, i64 20, !34, i64 24, !87, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !19, i64 80, !19, i64 82, !19, i64 84, !19, i64 86, !11, i64 88, !18, i64 92, !18, i64 96, !18, i64 100, !12, i64 104, !7, i64 108}
!87 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !12, i64 0, !12, i64 4, !6, i64 8}
!88 = !{!"_ZTS21ImGuiComboPreviewData", !27, i64 0, !17, i64 16, !17, i64 24, !17, i64 32, !18, i64 40, !12, i64 44}
!89 = !{!"_ZTS20ImGuiPlatformImeData", !11, i64 0, !17, i64 4, !18, i64 12}
!90 = !{!"_ZTS15ImGuiTextBuffer", !83, i64 0}
!91 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !12, i64 0, !12, i64 4, !6, i64 8}
!92 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !83, i64 0}
!93 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !83, i64 0}
!94 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !12, i64 0, !12, i64 4, !6, i64 8}
!95 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!96 = !{!"_ZTS14ImGuiStackTool", !12, i64 0, !12, i64 4, !12, i64 8, !97, i64 16}
!97 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !12, i64 0, !12, i64 4, !6, i64 8}
!98 = !{!16, !6, i64 0}
!99 = !{!12, !12, i64 0}
!100 = !{!27, !18, i64 0}
!101 = !{!27, !18, i64 4}
!102 = !{!27, !18, i64 8}
!103 = !{!27, !18, i64 12}
!104 = distinct !{!104, !105}
!105 = !{!"llvm.loop.mustprogress"}
!106 = !{!10, !11, i64 3}
!107 = !{!108, !12, i64 112}
!108 = !{!"_ZTS10ImGuiTable", !12, i64 0, !12, i64 4, !6, i64 8, !6, i64 16, !109, i64 24, !110, i64 40, !111, i64 56, !112, i64 72, !112, i64 80, !112, i64 88, !112, i64 96, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !19, i64 128, !19, i64 130, !18, i64 132, !18, i64 136, !18, i64 140, !18, i64 144, !18, i64 148, !12, i64 152, !12, i64 154, !12, i64 156, !7, i64 160, !12, i64 168, !12, i64 172, !18, i64 176, !18, i64 180, !18, i64 184, !18, i64 188, !18, i64 192, !18, i64 196, !18, i64 200, !18, i64 204, !18, i64 208, !18, i64 212, !18, i64 216, !18, i64 220, !18, i64 224, !18, i64 228, !18, i64 232, !18, i64 236, !18, i64 240, !27, i64 244, !27, i64 260, !27, i64 276, !27, i64 292, !27, i64 308, !27, i64 324, !27, i64 340, !27, i64 356, !27, i64 372, !6, i64 392, !6, i64 400, !90, i64 408, !6, i64 424, !113, i64 432, !114, i64 448, !115, i64 464, !7, i64 480, !7, i64 481, !7, i64 482, !7, i64 483, !7, i64 484, !7, i64 485, !7, i64 486, !7, i64 487, !7, i64 488, !7, i64 489, !7, i64 490, !7, i64 491, !7, i64 492, !7, i64 493, !7, i64 494, !7, i64 495, !7, i64 496, !7, i64 497, !7, i64 498, !7, i64 499, !7, i64 500, !7, i64 501, !7, i64 502, !7, i64 503, !7, i64 504, !11, i64 505, !11, i64 506, !11, i64 507, !11, i64 508, !11, i64 509, !11, i64 510, !11, i64 511, !11, i64 512, !11, i64 513, !11, i64 514, !11, i64 515, !11, i64 516, !11, i64 517, !11, i64 518, !11, i64 519}
!109 = !{!"_ZTS6ImSpanI16ImGuiTableColumnE", !6, i64 0, !6, i64 8}
!110 = !{!"_ZTS6ImSpanIaE", !6, i64 0, !6, i64 8}
!111 = !{!"_ZTS6ImSpanI18ImGuiTableCellDataE", !6, i64 0, !6, i64 8}
!112 = !{!"long long", !7, i64 0}
!113 = !{!"_ZTS25ImGuiTableColumnSortSpecs", !12, i64 0, !19, i64 4, !19, i64 6, !12, i64 8}
!114 = !{!"_ZTS8ImVectorI25ImGuiTableColumnSortSpecsE", !12, i64 0, !12, i64 4, !6, i64 8}
!115 = !{!"_ZTS19ImGuiTableSortSpecs", !6, i64 0, !12, i64 8, !11, i64 12}
!116 = !{!53, !12, i64 15704}
!117 = !{!108, !6, i64 392}
!118 = !{!108, !6, i64 400}
!119 = !{!108, !12, i64 0}
!120 = !{!108, !12, i64 116}
!121 = distinct !{!121, !105}
!122 = distinct !{!122, !105}
!123 = distinct !{!123, !105}
!124 = !{!53, !12, i64 15736}
!125 = !{!16, !12, i64 568}
!126 = distinct !{!126, !105}
!127 = !{!25, !6, i64 8}
!128 = !{!25, !12, i64 0}
!129 = !{!53, !12, i64 16344}
!130 = distinct !{!130, !105}
!131 = !{!132, !12, i64 0}
!132 = !{!"_ZTS8ImVectorIP10ImDrawListE", !12, i64 0, !12, i64 4, !6, i64 8}
!133 = distinct !{!133, !105}
!134 = distinct !{!134, !105}
!135 = distinct !{!135, !105}
!136 = distinct !{!136, !105}
!137 = !{!53, !12, i64 16304}
!138 = !{!139, !6, i64 8}
!139 = !{!"_ZTS14ImGuiPopupData", !12, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !12, i64 28, !17, i64 32, !17, i64 40}
!140 = !{!139, !12, i64 0}
!141 = !{!16, !12, i64 12}
!142 = distinct !{!142, !105}
!143 = distinct !{!143, !105}
!144 = distinct !{!144, !105}
!145 = !{!53, !6, i64 80}
!146 = !{!147, !12, i64 72}
!147 = !{!"_ZTS11ImFontAtlas", !12, i64 0, !6, i64 8, !12, i64 16, !12, i64 20, !11, i64 24, !11, i64 25, !11, i64 26, !6, i64 32, !6, i64 40, !12, i64 48, !12, i64 52, !17, i64 56, !17, i64 64, !66, i64 72, !148, i64 88, !149, i64 104, !7, i64 120, !6, i64 1144, !12, i64 1152, !12, i64 1156, !12, i64 1160}
!148 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !12, i64 0, !12, i64 4, !6, i64 8}
!149 = !{!"_ZTS8ImVectorI12ImFontConfigE", !12, i64 0, !12, i64 4, !6, i64 8}
!150 = !{!53, !6, i64 32}
!151 = !{!53, !18, i64 21164}
!152 = !{!53, !12, i64 21184}
!153 = !{!154, !6, i64 0}
!154 = !{!"_ZTS20ImGuiSettingsHandler", !6, i64 0, !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64}
!155 = distinct !{!155, !105}
!156 = distinct !{!156, !105}
!157 = distinct !{!157, !105}
!158 = !{!53, !12, i64 21168}
!159 = !{!53, !6, i64 15840}
!160 = !{!16, !6, i64 848}
!161 = !{!53, !6, i64 15848}
!162 = !{!53, !6, i64 15856}
!163 = !{!53, !12, i64 15908}
!164 = !{!53, !12, i64 15984}
!165 = !{!53, !18, i64 15916}
!166 = !{!53, !11, i64 15921}
!167 = !{!53, !60, i64 15976}
!168 = !{!53, !6, i64 15968}
!169 = distinct !{!169, !105}
!170 = !{!53, !11, i64 15926}
!171 = !{!53, !12, i64 15928}
!172 = !{!53, !12, i64 15932}
!173 = !{!53, !12, i64 15892}
!174 = !{!53, !18, i64 15900}
!175 = !{!53, !11, i64 15896}
!176 = !{!53, !11, i64 16764}
!177 = !{!53, !12, i64 16796}
!178 = !{!53, !12, i64 16792}
!179 = !{!53, !12, i64 16368}
!180 = !{!53, !23, i64 16420}
!181 = !{!53, !60, i64 16416}
!182 = !{!53, !11, i64 213}
!183 = !{!53, !11, i64 214}
!184 = !{!53, !12, i64 16376}
!185 = !{!53, !12, i64 16380}
!186 = !{!53, !12, i64 16384}
!187 = !{!53, !12, i64 16388}
!188 = !{!53, !12, i64 16392}
!189 = !{!53, !11, i64 16426}
!190 = !{!53, !11, i64 16427}
!191 = !{!53, !12, i64 16372}
!192 = !{!53, !6, i64 16720}
!193 = !{!10, !11, i64 2}
!194 = !{!16, !11, i64 143}
!195 = !{!16, !19, i64 158}
!196 = !{!18, !18, i64 0}
!197 = distinct !{!197, !105}
!198 = !{!108, !7, i64 484}
!199 = distinct !{!199, !105}
!200 = distinct !{!200, !105}


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

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.14 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.275 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.276 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.277 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.278 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.279 = external hidden unnamed_addr constant [42 x i8], align 1
@__const._ZN5ImGui17ShowMetricsWindowEPb.wrt_rects_names = external hidden unnamed_addr constant [8 x ptr], align 16
@__const._ZN5ImGui17ShowMetricsWindowEPb.trt_rects_names = external hidden unnamed_addr constant [13 x ptr], align 16
@.str.297 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.298 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.299 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.300 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.301 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.302 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.303 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.304 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.305 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.306 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.307 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.308 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.310 = external hidden unnamed_addr constant [133 x i8], align 1
@.str.311 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.312 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.313 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.314 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.315 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.316 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.318 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.320 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.321 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.322 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.323 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.324 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.325 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.326 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.327 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.328 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.329 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.330 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.331 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.332 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.333 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.334 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.336 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.344 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.354 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.355 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.356 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.357 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.358 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.359 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.361 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.362 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.365 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.367 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.368 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.369 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.370 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.371 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.372 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.373 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.374 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.375 = external hidden unnamed_addr constant [3 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> @_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 uwtable
declare hidden void @_ZL7ImQsortPvmmPFiPKvS1_E(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #4

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

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

declare void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196), 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 #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui21GetForegroundDrawListEv() local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN5ImGui10GetVersionEv() 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 #7 align 2

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

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

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

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

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

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

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

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

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

; 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: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN5ImGui11GetFontSizeEv() local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui5PopIDEv() local_unnamed_addr #6

declare void @_ZN5ImGui7TreePopEv() local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

; 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 uwtable
define dso_local void @_ZN5ImGui17ShowMetricsWindowEPb(ptr noundef %0) local_unnamed_addr #8 {
  %2 = alloca [8 x ptr], align 16
  %3 = alloca [13 x ptr], align 16
  %4 = alloca %struct.ImRect, align 8
  %5 = alloca %struct.ImVec2, align 8
  %6 = alloca %struct.ImVec2, align 4
  %7 = alloca %struct.ImVec2, align 8
  %8 = alloca %struct.ImVec2, align 4
  %9 = alloca [128 x i8], align 16
  %10 = alloca %struct.ImRect, align 8
  %11 = alloca %struct.ImVec2, align 4
  %12 = alloca %struct.ImVec2, align 8
  %13 = alloca %struct.ImVec2, align 4
  %14 = alloca %struct.ImVec2, align 8
  %15 = alloca %struct.ImVec2, align 4
  %16 = alloca %struct.ImRect, align 8
  %17 = alloca %struct.ImVec2, align 4
  %18 = alloca %struct.ImVec2, align 8
  %19 = alloca %struct.ImVec2, align 4
  %20 = alloca %struct.ImVec2, align 8
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca %struct.ImVec2, align 4
  %23 = alloca %struct.ImVec2, align 4
  %24 = alloca %struct.ImRect, align 8
  %25 = alloca [32 x i8], align 16
  %26 = alloca %struct.ImVec2, align 8
  %27 = alloca %struct.ImVec2, align 4
  %28 = alloca %struct.ImRect, align 8
  %29 = alloca %struct.ImRect, align 8
  %30 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %30, i64 21332
  %32 = load i8, ptr %31, align 4, !tbaa !9, !range !13, !noundef !14
  %33 = trunc nuw i8 %32 to i1
  br i1 %33, label %34, label %35

34:                                               ; preds = %1
  tail call void @_ZN5ImGui19ShowStackToolWindowEPb(ptr noundef nonnull %31)
  br label %35

35:                                               ; preds = %34, %1
  %36 = tail call noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef nonnull @.str.275, ptr noundef %0, i32 noundef 0)
  br i1 %36, label %37, label %42

37:                                               ; preds = %35
  %38 = tail call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %39 = getelementptr inbounds i8, ptr %38, i64 154
  %40 = load i16, ptr %39, align 2, !tbaa !15
  %41 = icmp sgt i16 %40, 1
  br i1 %41, label %42, label %43

42:                                               ; preds = %37, %35
  tail call void @_ZN5ImGui3EndEv()
  br label %762

43:                                               ; preds = %37
  %44 = tail call noundef ptr @_ZN5ImGui10GetVersionEv()
  tail call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.276, ptr noundef %44)
  %45 = getelementptr inbounds i8, ptr %30, i64 216
  %46 = load float, ptr %45, align 8, !tbaa !43
  %47 = fdiv float 1.000000e+03, %46
  %48 = fpext float %47 to double
  %49 = fpext float %46 to double
  tail call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.277, double noundef %48, double noundef %49)
  %50 = getelementptr inbounds i8, ptr %30, i64 220
  %51 = load i32, ptr %50, align 4, !tbaa !45
  %52 = getelementptr inbounds i8, ptr %30, i64 224
  %53 = load i32, ptr %52, align 8, !tbaa !46
  %54 = sdiv i32 %53, 3
  tail call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.278, i32 noundef %51, i32 noundef %53, i32 noundef %54)
  %55 = getelementptr inbounds i8, ptr %30, i64 228
  %56 = load i32, ptr %55, align 4, !tbaa !47
  %57 = getelementptr inbounds i8, ptr %30, i64 236
  %58 = load i32, ptr %57, align 4, !tbaa !48
  tail call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.279, i32 noundef %56, i32 noundef %58)
  tail call void @_ZN5ImGui9SeparatorEv()
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %2) #9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %2, ptr noundef nonnull align 16 dereferenceable(64) @__const._ZN5ImGui17ShowMetricsWindowEPb.wrt_rects_names, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %3) #9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(104) %3, ptr noundef nonnull align 16 dereferenceable(104) @__const._ZN5ImGui17ShowMetricsWindowEPb.trt_rects_names, i64 104, i1 false)
  %59 = getelementptr inbounds i8, ptr %30, i64 21340
  %60 = load i32, ptr %59, align 4, !tbaa !49
  %61 = icmp slt i32 %60, 0
  br i1 %61, label %62, label %63

62:                                               ; preds = %43
  store i32 4, ptr %59, align 4, !tbaa !49
  br label %63

63:                                               ; preds = %62, %43
  %64 = getelementptr inbounds i8, ptr %30, i64 21344
  %65 = load i32, ptr %64, align 4, !tbaa !50
  %66 = icmp slt i32 %65, 0
  br i1 %66, label %67, label %68

67:                                               ; preds = %63
  store i32 2, ptr %64, align 4, !tbaa !50
  br label %68

68:                                               ; preds = %67, %63
  %69 = tail call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef nonnull @.str.297)
  br i1 %69, label %70, label %349

70:                                               ; preds = %68
  %71 = tail call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.298, ptr noundef nonnull %31)
  tail call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  tail call void @_ZL17MetricsHelpMarkerPKc(ptr noundef nonnull @.str.299)
  %72 = getelementptr inbounds i8, ptr %30, i64 21334
  %73 = tail call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.300, ptr noundef nonnull %72)
  %74 = getelementptr inbounds i8, ptr %30, i64 21333
  %75 = tail call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.301, ptr noundef nonnull %74)
  tail call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %76 = tail call noundef float @_ZN5ImGui11GetFontSizeEv()
  %77 = fmul float %76, 1.200000e+01
  tail call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %77)
  %78 = call noundef zeroext i1 @_ZN5ImGui5ComboEPKcPiPKS1_ii(ptr noundef nonnull @.str.302, ptr noundef nonnull %59, ptr noundef nonnull %2, i32 noundef 8, i32 noundef 8)
  %79 = load i8, ptr %74, align 1, !tbaa !51, !range !13, !noundef !14
  %80 = zext i1 %78 to i8
  %81 = or i8 %79, %80
  %.not = icmp eq i8 %81, 0
  store i8 %81, ptr %74, align 1, !tbaa !51
  br i1 %.not, label %231, label %82

82:                                               ; preds = %70
  %83 = getelementptr inbounds i8, ptr %30, i64 16360
  %84 = load ptr, ptr %83, align 8, !tbaa !52
  %.not308 = icmp eq ptr %84, null
  br i1 %.not308, label %231, label %85

85:                                               ; preds = %82
  %86 = load ptr, ptr %84, align 8, !tbaa !98
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef nonnull @.str.303, ptr noundef %86)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %87 = getelementptr inbounds i8, ptr %4, i64 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %88 = load ptr, ptr %83, align 8, !tbaa !52
  %89 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %88, i32 noundef 0)
  %90 = extractvalue { <2 x float>, <2 x float> } %89, 0
  store <2 x float> %90, ptr %4, align 8
  %91 = extractvalue { <2 x float>, <2 x float> } %89, 1
  store <2 x float> %91, ptr %87, align 8
  %92 = extractelement <2 x float> %90, i64 0
  %93 = fpext float %92 to double
  %94 = extractelement <2 x float> %90, i64 1
  %95 = fpext float %94 to double
  %96 = extractelement <2 x float> %91, i64 0
  %97 = fpext float %96 to double
  %98 = extractelement <2 x float> %91, i64 1
  %99 = fpext float %98 to double
  %100 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %101 = fpext float %100 to double
  %102 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %103 = fpext float %102 to double
  %104 = load ptr, ptr %2, align 16, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.304, double noundef %93, double noundef %95, double noundef %97, double noundef %99, double noundef %101, double noundef %103, ptr noundef %104)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %105 = load ptr, ptr %83, align 8, !tbaa !52
  %106 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %105, i32 noundef 1)
  %107 = extractvalue { <2 x float>, <2 x float> } %106, 0
  store <2 x float> %107, ptr %4, align 8
  %108 = extractvalue { <2 x float>, <2 x float> } %106, 1
  store <2 x float> %108, ptr %87, align 8
  %109 = extractelement <2 x float> %107, i64 0
  %110 = fpext float %109 to double
  %111 = extractelement <2 x float> %107, i64 1
  %112 = fpext float %111 to double
  %113 = extractelement <2 x float> %108, i64 0
  %114 = fpext float %113 to double
  %115 = extractelement <2 x float> %108, i64 1
  %116 = fpext float %115 to double
  %117 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %118 = fpext float %117 to double
  %119 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %120 = fpext float %119 to double
  %121 = getelementptr inbounds i8, ptr %2, i64 8
  %122 = load ptr, ptr %121, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.304, double noundef %110, double noundef %112, double noundef %114, double noundef %116, double noundef %118, double noundef %120, ptr noundef %122)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %123 = load ptr, ptr %83, align 8, !tbaa !52
  %124 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %123, i32 noundef 2)
  %125 = extractvalue { <2 x float>, <2 x float> } %124, 0
  store <2 x float> %125, ptr %4, align 8
  %126 = extractvalue { <2 x float>, <2 x float> } %124, 1
  store <2 x float> %126, ptr %87, align 8
  %127 = extractelement <2 x float> %125, i64 0
  %128 = fpext float %127 to double
  %129 = extractelement <2 x float> %125, i64 1
  %130 = fpext float %129 to double
  %131 = extractelement <2 x float> %126, i64 0
  %132 = fpext float %131 to double
  %133 = extractelement <2 x float> %126, i64 1
  %134 = fpext float %133 to double
  %135 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %136 = fpext float %135 to double
  %137 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %138 = fpext float %137 to double
  %139 = getelementptr inbounds i8, ptr %2, i64 16
  %140 = load ptr, ptr %139, align 16, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.304, double noundef %128, double noundef %130, double noundef %132, double noundef %134, double noundef %136, double noundef %138, ptr noundef %140)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %141 = load ptr, ptr %83, align 8, !tbaa !52
  %142 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %141, i32 noundef 3)
  %143 = extractvalue { <2 x float>, <2 x float> } %142, 0
  store <2 x float> %143, ptr %4, align 8
  %144 = extractvalue { <2 x float>, <2 x float> } %142, 1
  store <2 x float> %144, ptr %87, align 8
  %145 = extractelement <2 x float> %143, i64 0
  %146 = fpext float %145 to double
  %147 = extractelement <2 x float> %143, i64 1
  %148 = fpext float %147 to double
  %149 = extractelement <2 x float> %144, i64 0
  %150 = fpext float %149 to double
  %151 = extractelement <2 x float> %144, i64 1
  %152 = fpext float %151 to double
  %153 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %154 = fpext float %153 to double
  %155 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %156 = fpext float %155 to double
  %157 = getelementptr inbounds i8, ptr %2, i64 24
  %158 = load ptr, ptr %157, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.304, double noundef %146, double noundef %148, double noundef %150, double noundef %152, double noundef %154, double noundef %156, ptr noundef %158)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %159 = load ptr, ptr %83, align 8, !tbaa !52
  %160 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %159, i32 noundef 4)
  %161 = extractvalue { <2 x float>, <2 x float> } %160, 0
  store <2 x float> %161, ptr %4, align 8
  %162 = extractvalue { <2 x float>, <2 x float> } %160, 1
  store <2 x float> %162, ptr %87, align 8
  %163 = extractelement <2 x float> %161, i64 0
  %164 = fpext float %163 to double
  %165 = extractelement <2 x float> %161, i64 1
  %166 = fpext float %165 to double
  %167 = extractelement <2 x float> %162, i64 0
  %168 = fpext float %167 to double
  %169 = extractelement <2 x float> %162, i64 1
  %170 = fpext float %169 to double
  %171 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %172 = fpext float %171 to double
  %173 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %174 = fpext float %173 to double
  %175 = getelementptr inbounds i8, ptr %2, i64 32
  %176 = load ptr, ptr %175, align 16, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.304, double noundef %164, double noundef %166, double noundef %168, double noundef %170, double noundef %172, double noundef %174, ptr noundef %176)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %177 = load ptr, ptr %83, align 8, !tbaa !52
  %178 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %177, i32 noundef 5)
  %179 = extractvalue { <2 x float>, <2 x float> } %178, 0
  store <2 x float> %179, ptr %4, align 8
  %180 = extractvalue { <2 x float>, <2 x float> } %178, 1
  store <2 x float> %180, ptr %87, align 8
  %181 = extractelement <2 x float> %179, i64 0
  %182 = fpext float %181 to double
  %183 = extractelement <2 x float> %179, i64 1
  %184 = fpext float %183 to double
  %185 = extractelement <2 x float> %180, i64 0
  %186 = fpext float %185 to double
  %187 = extractelement <2 x float> %180, i64 1
  %188 = fpext float %187 to double
  %189 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %190 = fpext float %189 to double
  %191 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %192 = fpext float %191 to double
  %193 = getelementptr inbounds i8, ptr %2, i64 40
  %194 = load ptr, ptr %193, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.304, double noundef %182, double noundef %184, double noundef %186, double noundef %188, double noundef %190, double noundef %192, ptr noundef %194)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %195 = load ptr, ptr %83, align 8, !tbaa !52
  %196 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %195, i32 noundef 6)
  %197 = extractvalue { <2 x float>, <2 x float> } %196, 0
  store <2 x float> %197, ptr %4, align 8
  %198 = extractvalue { <2 x float>, <2 x float> } %196, 1
  store <2 x float> %198, ptr %87, align 8
  %199 = extractelement <2 x float> %197, i64 0
  %200 = fpext float %199 to double
  %201 = extractelement <2 x float> %197, i64 1
  %202 = fpext float %201 to double
  %203 = extractelement <2 x float> %198, i64 0
  %204 = fpext float %203 to double
  %205 = extractelement <2 x float> %198, i64 1
  %206 = fpext float %205 to double
  %207 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %208 = fpext float %207 to double
  %209 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %210 = fpext float %209 to double
  %211 = getelementptr inbounds i8, ptr %2, i64 48
  %212 = load ptr, ptr %211, align 16, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.304, double noundef %200, double noundef %202, double noundef %204, double noundef %206, double noundef %208, double noundef %210, ptr noundef %212)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %213 = load ptr, ptr %83, align 8, !tbaa !52
  %214 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef %213, i32 noundef 7)
  %215 = extractvalue { <2 x float>, <2 x float> } %214, 0
  store <2 x float> %215, ptr %4, align 8
  %216 = extractvalue { <2 x float>, <2 x float> } %214, 1
  store <2 x float> %216, ptr %87, align 8
  %217 = extractelement <2 x float> %215, i64 0
  %218 = fpext float %217 to double
  %219 = extractelement <2 x float> %215, i64 1
  %220 = fpext float %219 to double
  %221 = extractelement <2 x float> %216, i64 0
  %222 = fpext float %221 to double
  %223 = extractelement <2 x float> %216, i64 1
  %224 = fpext float %223 to double
  %225 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %226 = fpext float %225 to double
  %227 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %228 = fpext float %227 to double
  %229 = getelementptr inbounds i8, ptr %2, i64 56
  %230 = load ptr, ptr %229, align 8, !tbaa !5
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.304, double noundef %218, double noundef %220, double noundef %222, double noundef %224, double noundef %226, double noundef %228, ptr noundef %230)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  br label %231

231:                                              ; preds = %85, %82, %70
  %232 = getelementptr inbounds i8, ptr %30, i64 21335
  %233 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.305, ptr noundef nonnull %232)
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %234 = call noundef float @_ZN5ImGui11GetFontSizeEv()
  %235 = fmul float %234, 1.200000e+01
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %235)
  %236 = call noundef zeroext i1 @_ZN5ImGui5ComboEPKcPiPKS1_ii(ptr noundef nonnull @.str.306, ptr noundef nonnull %64, ptr noundef nonnull %3, i32 noundef 13, i32 noundef 13)
  %237 = load i8, ptr %232, align 1, !tbaa !99, !range !13, !noundef !14
  %238 = zext i1 %236 to i8
  %239 = or i8 %237, %238
  %.not309 = icmp eq i8 %239, 0
  store i8 %239, ptr %232, align 1, !tbaa !99
  br i1 %.not309, label %.loopexit349, label %240

240:                                              ; preds = %231
  %241 = getelementptr inbounds i8, ptr %30, i64 16360
  %242 = load ptr, ptr %241, align 8, !tbaa !52
  %.not310 = icmp eq ptr %242, null
  br i1 %.not310, label %.loopexit349, label %.preheader348

.preheader348:                                    ; preds = %240
  %243 = getelementptr inbounds i8, ptr %30, i64 16984
  %244 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %243)
  %245 = icmp sgt i32 %244, 0
  br i1 %245, label %.lr.ph355, label %.loopexit349

.lr.ph355:                                        ; preds = %.preheader348
  %246 = getelementptr inbounds i8, ptr %30, i64 15704
  %247 = getelementptr inbounds i8, ptr %16, i64 8
  %248 = getelementptr inbounds i8, ptr %10, i64 8
  br label %249

249:                                              ; preds = %.lr.ph355, %342
  %.0273354 = phi i32 [ 0, %.lr.ph355 ], [ %343, %342 ]
  %250 = call noundef ptr @_ZN6ImPoolI10ImGuiTableE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40) %243, i32 noundef %.0273354)
  %251 = icmp eq ptr %250, null
  br i1 %251, label %342, label %252

252:                                              ; preds = %249
  %253 = getelementptr inbounds i8, ptr %250, i64 112
  %254 = load i32, ptr %253, align 8, !tbaa !100
  %255 = load i32, ptr %246, align 8, !tbaa !109
  %256 = add nsw i32 %255, -1
  %257 = icmp slt i32 %254, %256
  br i1 %257, label %342, label %258

258:                                              ; preds = %252
  %259 = getelementptr inbounds i8, ptr %250, i64 392
  %260 = load ptr, ptr %259, align 8, !tbaa !110
  %261 = load ptr, ptr %241, align 8, !tbaa !52
  %.not326 = icmp eq ptr %260, %261
  br i1 %.not326, label %265, label %262

262:                                              ; preds = %258
  %263 = getelementptr inbounds i8, ptr %250, i64 400
  %264 = load ptr, ptr %263, align 8, !tbaa !111
  %.not327 = icmp eq ptr %264, %261
  br i1 %.not327, label %265, label %342

265:                                              ; preds = %262, %258
  %266 = load i32, ptr %250, align 8, !tbaa !112
  %267 = getelementptr inbounds i8, ptr %250, i64 116
  %268 = load i32, ptr %267, align 4, !tbaa !113
  %269 = load ptr, ptr %260, align 8, !tbaa !98
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef nonnull @.str.307, i32 noundef %266, i32 noundef %268, ptr noundef %269)
  %270 = call noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef 0)
  br i1 %270, label %271, label %277

271:                                              ; preds = %265
  %272 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  %273 = getelementptr inbounds i8, ptr %250, i64 244
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %6, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %274 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %273, ptr noundef nonnull align 4 dereferenceable(8) %6)
  store <2 x float> %274, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  %275 = getelementptr inbounds i8, ptr %250, i64 252
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %8, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %276 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %275, ptr noundef nonnull align 4 dereferenceable(8) %8)
  store <2 x float> %276, ptr %7, align 8
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %272, ptr noundef nonnull align 4 dereferenceable(8) %5, ptr noundef nonnull align 4 dereferenceable(8) %7, i32 noundef -16711681, float noundef 0.000000e+00, i32 noundef 0, float noundef 2.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  br label %277

277:                                              ; preds = %271, %265
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %9) #9
  br label %279

278:                                              ; preds = %.loopexit347
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %9) #9
  br label %342

279:                                              ; preds = %277, %.loopexit347
  %indvars.iv = phi i64 [ 0, %277 ], [ %indvars.iv.next, %.loopexit347 ]
  %280 = icmp ugt i64 %indvars.iv, 5
  br i1 %280, label %281, label %315

281:                                              ; preds = %279
  %282 = trunc nuw nsw i64 %indvars.iv to i32
  switch i32 %282, label %.loopexit347 [
    i32 8, label %283
    i32 6, label %283
  ]

283:                                              ; preds = %281, %281
  %284 = load i32, ptr %267, align 4, !tbaa !113
  %285 = icmp sgt i32 %284, 0
  br i1 %285, label %.lr.ph, label %.loopexit347

.lr.ph:                                           ; preds = %283
  %286 = getelementptr inbounds [13 x ptr], ptr %3, i64 0, i64 %indvars.iv
  br label %287

287:                                              ; preds = %.lr.ph, %311
  %.0276351 = phi i32 [ 0, %.lr.ph ], [ %312, %311 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #9
  %288 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12GetTableRectEP10ImGuiTableii(ptr noundef nonnull %250, i32 noundef %282, i32 noundef %.0276351)
  %289 = extractvalue { <2 x float>, <2 x float> } %288, 0
  store <2 x float> %289, ptr %10, align 8
  %290 = extractvalue { <2 x float>, <2 x float> } %288, 1
  store <2 x float> %290, ptr %248, align 8
  %291 = extractelement <2 x float> %289, i64 0
  %292 = fpext float %291 to double
  %293 = extractelement <2 x float> %289, i64 1
  %294 = fpext float %293 to double
  %295 = extractelement <2 x float> %290, i64 0
  %296 = fpext float %295 to double
  %297 = extractelement <2 x float> %290, i64 1
  %298 = fpext float %297 to double
  %299 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %10)
  %300 = fpext float %299 to double
  %301 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %10)
  %302 = fpext float %301 to double
  %303 = load ptr, ptr %286, align 8, !tbaa !5
  %304 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %9, i64 noundef 128, ptr noundef nonnull @.str.308, double noundef %292, double noundef %294, double noundef %296, double noundef %298, double noundef %300, double noundef %302, i32 noundef %.0276351, ptr noundef %303)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %305 = call noundef zeroext i1 @_ZN5ImGui10SelectableEPKcbiRK6ImVec2(ptr noundef nonnull %9, i1 noundef zeroext false, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(8) %11)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  %306 = call noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef 0)
  br i1 %306, label %307, label %311

307:                                              ; preds = %287
  %308 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %309 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %10, ptr noundef nonnull align 4 dereferenceable(8) %13)
  store <2 x float> %309, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %310 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %248, ptr noundef nonnull align 4 dereferenceable(8) %15)
  store <2 x float> %310, ptr %14, align 8
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %308, ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef -16711681, float noundef 0.000000e+00, i32 noundef 0, float noundef 2.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  br label %311

311:                                              ; preds = %307, %287
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #9
  %312 = add nuw nsw i32 %.0276351, 1
  %313 = load i32, ptr %267, align 4, !tbaa !113
  %314 = icmp slt i32 %312, %313
  br i1 %314, label %287, label %.loopexit347, !llvm.loop !114

315:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #9
  %316 = trunc nuw nsw i64 %indvars.iv to i32
  %317 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12GetTableRectEP10ImGuiTableii(ptr noundef nonnull %250, i32 noundef %316, i32 noundef -1)
  %318 = extractvalue { <2 x float>, <2 x float> } %317, 0
  store <2 x float> %318, ptr %16, align 8
  %319 = extractvalue { <2 x float>, <2 x float> } %317, 1
  store <2 x float> %319, ptr %247, align 8
  %320 = extractelement <2 x float> %318, i64 0
  %321 = fpext float %320 to double
  %322 = extractelement <2 x float> %318, i64 1
  %323 = fpext float %322 to double
  %324 = extractelement <2 x float> %319, i64 0
  %325 = fpext float %324 to double
  %326 = extractelement <2 x float> %319, i64 1
  %327 = fpext float %326 to double
  %328 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %329 = fpext float %328 to double
  %330 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %331 = fpext float %330 to double
  %332 = getelementptr inbounds [13 x ptr], ptr %3, i64 0, i64 %indvars.iv
  %333 = load ptr, ptr %332, align 8, !tbaa !5
  %334 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %9, i64 noundef 128, ptr noundef nonnull @.str.304, double noundef %321, double noundef %323, double noundef %325, double noundef %327, double noundef %329, double noundef %331, ptr noundef %333)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %17, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %335 = call noundef zeroext i1 @_ZN5ImGui10SelectableEPKcbiRK6ImVec2(ptr noundef nonnull %9, i1 noundef zeroext false, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(8) %17)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  %336 = call noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef 0)
  br i1 %336, label %337, label %341

337:                                              ; preds = %315
  %338 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %339 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %19)
  store <2 x float> %339, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %340 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %247, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %340, ptr %20, align 8
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %338, ptr noundef nonnull align 4 dereferenceable(8) %18, ptr noundef nonnull align 4 dereferenceable(8) %20, i32 noundef -16711681, float noundef 0.000000e+00, i32 noundef 0, float noundef 2.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  br label %341

341:                                              ; preds = %337, %315
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #9
  br label %.loopexit347

.loopexit347:                                     ; preds = %311, %283, %281, %341
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 13
  br i1 %exitcond.not, label %278, label %279, !llvm.loop !116

342:                                              ; preds = %249, %252, %262, %278
  %343 = add nuw nsw i32 %.0273354, 1
  %344 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %243)
  %345 = icmp slt i32 %343, %344
  br i1 %345, label %249, label %.loopexit349, !llvm.loop !117

.loopexit349:                                     ; preds = %342, %.preheader348, %240, %231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %22, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %346 = call noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef nonnull @.str.309, ptr noundef nonnull align 4 dereferenceable(8) %22)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  br i1 %346, label %347, label %348

347:                                              ; preds = %.loopexit349
  call void @_ZN5ImGui20DebugStartItemPickerEv()
  br label %348

348:                                              ; preds = %347, %.loopexit349
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  call void @_ZL17MetricsHelpMarkerPKc(ptr noundef nonnull @.str.310)
  call void @_ZN5ImGui7TreePopEv()
  br label %349

349:                                              ; preds = %348, %68
  %350 = getelementptr inbounds i8, ptr %30, i64 15736
  %351 = load i32, ptr %350, align 8, !tbaa !118
  %352 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.311, ptr noundef nonnull @.str.312, i32 noundef %351)
  br i1 %352, label %353, label %381

353:                                              ; preds = %349
  call void @_ZN5ImGui20DebugNodeWindowsListEP8ImVectorIP11ImGuiWindowEPKc(ptr noundef nonnull %350, ptr noundef nonnull @.str.313)
  %354 = getelementptr inbounds i8, ptr %30, i64 15752
  call void @_ZN5ImGui20DebugNodeWindowsListEP8ImVectorIP11ImGuiWindowEPKc(ptr noundef nonnull %354, ptr noundef nonnull @.str.314)
  %355 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef nonnull @.str.315)
  br i1 %355, label %356, label %380

356:                                              ; preds = %353
  %357 = getelementptr inbounds i8, ptr %30, i64 15768
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %357, i32 noundef 0)
  %358 = load i32, ptr %350, align 8, !tbaa !118
  %359 = icmp sgt i32 %358, 0
  br i1 %359, label %.lr.ph357, label %._crit_edge

.lr.ph357:                                        ; preds = %356
  %360 = getelementptr inbounds i8, ptr %30, i64 15704
  br label %367

._crit_edge:                                      ; preds = %376, %356
  %361 = getelementptr inbounds i8, ptr %30, i64 15776
  %362 = load ptr, ptr %361, align 8, !tbaa !119
  %363 = load i32, ptr %357, align 8, !tbaa !120
  %364 = sext i32 %363 to i64
  call void @_ZL7ImQsortPvmmPFiPKvS1_E(ptr noundef %362, i64 noundef %364, i64 noundef 8, ptr noundef nonnull @_ZZN5ImGui17ShowMetricsWindowEPbEN4Func26WindowComparerByBeginOrderEPKvS3_)
  %365 = load ptr, ptr %361, align 8, !tbaa !119
  %366 = load i32, ptr %357, align 8, !tbaa !120
  call void @_ZN5ImGui38DebugNodeWindowsListByBeginStackParentEPP11ImGuiWindowiS1_(ptr noundef %365, i32 noundef %366, ptr noundef null)
  call void @_ZN5ImGui7TreePopEv()
  br label %380

367:                                              ; preds = %.lr.ph357, %376
  %.0277356 = phi i32 [ 0, %.lr.ph357 ], [ %377, %376 ]
  %368 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %350, i32 noundef %.0277356)
  %369 = load ptr, ptr %368, align 8, !tbaa !5
  %370 = getelementptr inbounds i8, ptr %369, i64 568
  %371 = load i32, ptr %370, align 8, !tbaa !121
  %372 = add nsw i32 %371, 1
  %373 = load i32, ptr %360, align 8, !tbaa !109
  %.not325 = icmp slt i32 %372, %373
  br i1 %.not325, label %376, label %374

374:                                              ; preds = %367
  %375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %350, i32 noundef %.0277356)
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %357, ptr noundef nonnull align 8 dereferenceable(8) %375)
  br label %376

376:                                              ; preds = %367, %374
  %377 = add nuw nsw i32 %.0277356, 1
  %378 = load i32, ptr %350, align 8, !tbaa !118
  %379 = icmp slt i32 %377, %378
  br i1 %379, label %367, label %._crit_edge, !llvm.loop !122

380:                                              ; preds = %._crit_edge, %353
  call void @_ZN5ImGui7TreePopEv()
  br label %381

381:                                              ; preds = %380, %349
  %382 = getelementptr inbounds i8, ptr %30, i64 16344
  %383 = load i32, ptr %382, align 8, !tbaa !123
  %384 = icmp sgt i32 %383, 0
  br i1 %384, label %.lr.ph361, label %._crit_edge362

._crit_edge362:                                   ; preds = %.lr.ph361, %381
  %.0278.lcssa = phi i32 [ 0, %381 ], [ %390, %.lr.ph361 ]
  %385 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.316, ptr noundef nonnull @.str.317, i32 noundef %.0278.lcssa)
  br i1 %385, label %394, label %422

.lr.ph361:                                        ; preds = %381, %.lr.ph361
  %.0278359 = phi i32 [ %390, %.lr.ph361 ], [ 0, %381 ]
  %.0285358 = phi i32 [ %391, %.lr.ph361 ], [ 0, %381 ]
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP14ImGuiViewportPEixEi(ptr noundef nonnull align 8 dereferenceable(16) %382, i32 noundef %.0285358)
  %387 = load ptr, ptr %386, align 8, !tbaa !5
  %388 = getelementptr inbounds i8, ptr %387, i64 120
  %389 = call noundef i32 @_ZNK17ImDrawDataBuilder16GetDrawListCountEv(ptr noundef nonnull align 8 dereferenceable(32) %388)
  %390 = add nsw i32 %389, %.0278359
  %391 = add nuw nsw i32 %.0285358, 1
  %392 = load i32, ptr %382, align 8, !tbaa !123
  %393 = icmp slt i32 %391, %392
  br i1 %393, label %.lr.ph361, label %._crit_edge362, !llvm.loop !124

394:                                              ; preds = %._crit_edge362
  %395 = getelementptr inbounds i8, ptr %30, i64 21336
  %396 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.318, ptr noundef nonnull %395)
  %397 = getelementptr inbounds i8, ptr %30, i64 21337
  %398 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.319, ptr noundef nonnull %397)
  %399 = load i32, ptr %382, align 8, !tbaa !123
  %400 = icmp sgt i32 %399, 0
  br i1 %400, label %.lr.ph370, label %._crit_edge371

._crit_edge371:                                   ; preds = %._crit_edge366.1, %394
  call void @_ZN5ImGui7TreePopEv()
  br label %422

.lr.ph370:                                        ; preds = %394, %._crit_edge366.1
  %.0286368 = phi i32 [ %414, %._crit_edge366.1 ], [ 0, %394 ]
  %401 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP14ImGuiViewportPEixEi(ptr noundef nonnull align 8 dereferenceable(16) %382, i32 noundef %.0286368)
  %402 = load ptr, ptr %401, align 8, !tbaa !5
  %403 = getelementptr inbounds i8, ptr %402, i64 120
  %404 = load i32, ptr %403, align 8, !tbaa !125
  %405 = icmp sgt i32 %404, 0
  br i1 %405, label %.lr.ph365, label %._crit_edge366

._crit_edge366:                                   ; preds = %.lr.ph365, %.lr.ph370
  %406 = getelementptr inbounds i8, ptr %402, i64 136
  %407 = load i32, ptr %406, align 8, !tbaa !125
  %408 = icmp sgt i32 %407, 0
  br i1 %408, label %.lr.ph365.1, label %._crit_edge366.1

.lr.ph365.1:                                      ; preds = %._crit_edge366, %.lr.ph365.1
  %.0290364.1 = phi i32 [ %411, %.lr.ph365.1 ], [ 0, %._crit_edge366 ]
  %409 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP10ImDrawListEixEi(ptr noundef nonnull align 8 dereferenceable(16) %406, i32 noundef %.0290364.1)
  %410 = load ptr, ptr %409, align 8, !tbaa !5
  call void @_ZN5ImGui17DebugNodeDrawListEP11ImGuiWindowPK10ImDrawListPKc(ptr noundef null, ptr noundef %410, ptr noundef nonnull @.str.320)
  %411 = add nuw nsw i32 %.0290364.1, 1
  %412 = load i32, ptr %406, align 8, !tbaa !125
  %413 = icmp slt i32 %411, %412
  br i1 %413, label %.lr.ph365.1, label %._crit_edge366.1, !llvm.loop !127

._crit_edge366.1:                                 ; preds = %.lr.ph365.1, %._crit_edge366
  %414 = add nuw nsw i32 %.0286368, 1
  %415 = load i32, ptr %382, align 8, !tbaa !123
  %416 = icmp slt i32 %414, %415
  br i1 %416, label %.lr.ph370, label %._crit_edge371, !llvm.loop !128

.lr.ph365:                                        ; preds = %.lr.ph370, %.lr.ph365
  %.0290364 = phi i32 [ %419, %.lr.ph365 ], [ 0, %.lr.ph370 ]
  %417 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP10ImDrawListEixEi(ptr noundef nonnull align 8 dereferenceable(16) %403, i32 noundef %.0290364)
  %418 = load ptr, ptr %417, align 8, !tbaa !5
  call void @_ZN5ImGui17DebugNodeDrawListEP11ImGuiWindowPK10ImDrawListPKc(ptr noundef null, ptr noundef %418, ptr noundef nonnull @.str.320)
  %419 = add nuw nsw i32 %.0290364, 1
  %420 = load i32, ptr %403, align 8, !tbaa !125
  %421 = icmp slt i32 %419, %420
  br i1 %421, label %.lr.ph365, label %._crit_edge366, !llvm.loop !127

422:                                              ; preds = %._crit_edge371, %._crit_edge362
  %423 = load i32, ptr %382, align 8, !tbaa !123
  %424 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.321, ptr noundef nonnull @.str.322, i32 noundef %423)
  br i1 %424, label %425, label %435

425:                                              ; preds = %422
  %426 = call noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv()
  call void @_ZN5ImGui6IndentEf(float noundef %426)
  call void @_ZL25RenderViewportsThumbnailsv()
  %427 = call noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv()
  call void @_ZN5ImGui8UnindentEf(float noundef %427)
  %428 = load i32, ptr %382, align 8, !tbaa !123
  %429 = icmp sgt i32 %428, 0
  br i1 %429, label %.lr.ph374, label %._crit_edge375

._crit_edge375:                                   ; preds = %.lr.ph374, %425
  call void @_ZN5ImGui7TreePopEv()
  br label %435

.lr.ph374:                                        ; preds = %425, %.lr.ph374
  %.0292372 = phi i32 [ %432, %.lr.ph374 ], [ 0, %425 ]
  %430 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP14ImGuiViewportPEixEi(ptr noundef nonnull align 8 dereferenceable(16) %382, i32 noundef %.0292372)
  %431 = load ptr, ptr %430, align 8, !tbaa !5
  call void @_ZN5ImGui17DebugNodeViewportEP14ImGuiViewportP(ptr noundef %431)
  %432 = add nuw nsw i32 %.0292372, 1
  %433 = load i32, ptr %382, align 8, !tbaa !123
  %434 = icmp slt i32 %432, %433
  br i1 %434, label %.lr.ph374, label %._crit_edge375, !llvm.loop !129

435:                                              ; preds = %._crit_edge375, %422
  %436 = getelementptr inbounds i8, ptr %30, i64 16304
  %437 = load i32, ptr %436, align 8, !tbaa !130
  %438 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.323, ptr noundef nonnull @.str.324, i32 noundef %437)
  br i1 %438, label %.preheader345, label %458

.preheader345:                                    ; preds = %435
  %439 = load i32, ptr %436, align 8, !tbaa !130
  %440 = icmp sgt i32 %439, 0
  br i1 %440, label %.lr.ph377, label %._crit_edge378

._crit_edge378:                                   ; preds = %.thread332, %.preheader345
  call void @_ZN5ImGui7TreePopEv()
  br label %458

.lr.ph377:                                        ; preds = %.preheader345, %.thread332
  %.0291376 = phi i32 [ %455, %.thread332 ], [ 0, %.preheader345 ]
  %441 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %436, i32 noundef %.0291376)
  %442 = getelementptr inbounds i8, ptr %441, i64 8
  %443 = load ptr, ptr %442, align 8, !tbaa !131
  %444 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %436, i32 noundef %.0291376)
  %445 = load i32, ptr %444, align 8, !tbaa !133
  %.not324 = icmp eq ptr %443, null
  br i1 %.not324, label %.thread332, label %446

446:                                              ; preds = %.lr.ph377
  %447 = load ptr, ptr %443, align 8, !tbaa !98
  %448 = getelementptr inbounds i8, ptr %443, i64 12
  %449 = load i32, ptr %448, align 4, !tbaa !134
  %.fr337 = freeze i32 %449
  %450 = and i32 %.fr337, 16777216
  %.not336 = icmp eq i32 %450, 0
  %spec.select = select i1 %.not336, ptr @.str.14, ptr @.str.327
  %451 = and i32 %.fr337, 268435456
  %.not338 = icmp eq i32 %451, 0
  %spec.select334 = select i1 %.not338, ptr @.str.14, ptr @.str.328
  br label %.thread332

.thread332:                                       ; preds = %446, %.lr.ph377
  %452 = phi ptr [ @.str.326, %.lr.ph377 ], [ %447, %446 ]
  %453 = phi ptr [ @.str.14, %.lr.ph377 ], [ %spec.select, %446 ]
  %454 = phi ptr [ @.str.14, %.lr.ph377 ], [ %spec.select334, %446 ]
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef nonnull @.str.325, i32 noundef %445, ptr noundef %452, ptr noundef nonnull %453, ptr noundef nonnull %454)
  %455 = add nuw nsw i32 %.0291376, 1
  %456 = load i32, ptr %436, align 8, !tbaa !130
  %457 = icmp slt i32 %455, %456
  br i1 %457, label %.lr.ph377, label %._crit_edge378, !llvm.loop !135

458:                                              ; preds = %._crit_edge378, %435
  %459 = getelementptr inbounds i8, ptr %30, i64 17064
  %460 = call noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE13GetAliveCountEv(ptr noundef nonnull align 8 dereferenceable(40) %459)
  %461 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.329, ptr noundef nonnull @.str.330, i32 noundef %460)
  br i1 %461, label %.preheader344, label %470

.preheader344:                                    ; preds = %458
  %462 = call noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %459)
  %463 = icmp sgt i32 %462, 0
  br i1 %463, label %.lr.ph380, label %._crit_edge381

._crit_edge381:                                   ; preds = %466, %.preheader344
  call void @_ZN5ImGui7TreePopEv()
  br label %470

.lr.ph380:                                        ; preds = %.preheader344, %466
  %.0289379 = phi i32 [ %467, %466 ], [ 0, %.preheader344 ]
  %464 = call noundef ptr @_ZN6ImPoolI11ImGuiTabBarE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40) %459, i32 noundef %.0289379)
  %.not323 = icmp eq ptr %464, null
  br i1 %.not323, label %466, label %465

465:                                              ; preds = %.lr.ph380
  call void @_ZN5ImGui6PushIDEPKv(ptr noundef nonnull %464)
  call void @_ZN5ImGui15DebugNodeTabBarEP11ImGuiTabBarPKc(ptr noundef nonnull %464, ptr noundef nonnull @.str.331)
  call void @_ZN5ImGui5PopIDEv()
  br label %466

466:                                              ; preds = %465, %.lr.ph380
  %467 = add nuw nsw i32 %.0289379, 1
  %468 = call noundef i32 @_ZNK6ImPoolI11ImGuiTabBarE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %459)
  %469 = icmp slt i32 %467, %468
  br i1 %469, label %.lr.ph380, label %._crit_edge381, !llvm.loop !136

470:                                              ; preds = %._crit_edge381, %458
  %471 = getelementptr inbounds i8, ptr %30, i64 16984
  %472 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE13GetAliveCountEv(ptr noundef nonnull align 8 dereferenceable(40) %471)
  %473 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.332, ptr noundef nonnull @.str.333, i32 noundef %472)
  br i1 %473, label %.preheader343, label %482

.preheader343:                                    ; preds = %470
  %474 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %471)
  %475 = icmp sgt i32 %474, 0
  br i1 %475, label %.lr.ph383, label %._crit_edge384

._crit_edge384:                                   ; preds = %478, %.preheader343
  call void @_ZN5ImGui7TreePopEv()
  br label %482

.lr.ph383:                                        ; preds = %.preheader343, %478
  %.0287382 = phi i32 [ %479, %478 ], [ 0, %.preheader343 ]
  %476 = call noundef ptr @_ZN6ImPoolI10ImGuiTableE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40) %471, i32 noundef %.0287382)
  %.not322 = icmp eq ptr %476, null
  br i1 %.not322, label %478, label %477

477:                                              ; preds = %.lr.ph383
  call void @_ZN5ImGui14DebugNodeTableEP10ImGuiTable(ptr noundef nonnull %476)
  br label %478

478:                                              ; preds = %477, %.lr.ph383
  %479 = add nuw nsw i32 %.0287382, 1
  %480 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %471)
  %481 = icmp slt i32 %479, %480
  br i1 %481, label %.lr.ph383, label %._crit_edge384, !llvm.loop !137

482:                                              ; preds = %._crit_edge384, %470
  %483 = getelementptr inbounds i8, ptr %30, i64 80
  %484 = load ptr, ptr %483, align 8, !tbaa !138
  %485 = getelementptr inbounds i8, ptr %484, i64 72
  %486 = load i32, ptr %485, align 8, !tbaa !139
  %487 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.334, ptr noundef nonnull @.str.335, i32 noundef %486)
  br i1 %487, label %488, label %489

488:                                              ; preds = %482
  call void @_ZN5ImGui13ShowFontAtlasEP11ImFontAtlas(ptr noundef nonnull %484)
  call void @_ZN5ImGui7TreePopEv()
  br label %489

489:                                              ; preds = %488, %482
  %490 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef nonnull @.str.336)
  br i1 %490, label %491, label %548

491:                                              ; preds = %489
  %492 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef nonnull @.str.337)
  br i1 %492, label %493, label %494

493:                                              ; preds = %491
  call void @_ZN5ImGui16ClearIniSettingsEv()
  br label %494

494:                                              ; preds = %493, %491
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %495 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef nonnull @.str.338)
  br i1 %495, label %496, label %498

496:                                              ; preds = %494
  %497 = call noundef ptr @_ZN5ImGui23SaveIniSettingsToMemoryEPm(ptr noundef null)
  br label %498

498:                                              ; preds = %496, %494
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %499 = call noundef zeroext i1 @_ZN5ImGui11SmallButtonEPKc(ptr noundef nonnull @.str.339)
  br i1 %499, label %500, label %503

500:                                              ; preds = %498
  %501 = getelementptr inbounds i8, ptr %30, i64 32
  %502 = load ptr, ptr %501, align 8, !tbaa !143
  call void @_ZN5ImGui21SaveIniSettingsToDiskEPKc(ptr noundef %502)
  br label %503

503:                                              ; preds = %500, %498
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
  %504 = getelementptr inbounds i8, ptr %30, i64 32
  %505 = load ptr, ptr %504, align 8, !tbaa !143
  %.not311 = icmp eq ptr %505, null
  br i1 %.not311, label %507, label %506

506:                                              ; preds = %503
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.340, ptr noundef nonnull %505)
  br label %508

507:                                              ; preds = %503
  call void @_ZN5ImGui15TextUnformattedEPKcS1_(ptr noundef nonnull @.str.341, ptr noundef null)
  br label %508

508:                                              ; preds = %507, %506
  %509 = getelementptr inbounds i8, ptr %30, i64 21164
  %510 = load float, ptr %509, align 4, !tbaa !144
  %511 = fpext float %510 to double
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.342, double noundef %511)
  %512 = getelementptr inbounds i8, ptr %30, i64 21184
  %513 = load i32, ptr %512, align 8, !tbaa !145
  %514 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.343, ptr noundef nonnull @.str.344, i32 noundef %513)
  br i1 %514, label %.preheader342, label %522

.preheader342:                                    ; preds = %508
  %515 = load i32, ptr %512, align 8, !tbaa !145
  %516 = icmp sgt i32 %515, 0
  br i1 %516, label %.lr.ph386, label %._crit_edge387

._crit_edge387:                                   ; preds = %.lr.ph386, %.preheader342
  call void @_ZN5ImGui7TreePopEv()
  br label %522

.lr.ph386:                                        ; preds = %.preheader342, %.lr.ph386
  %.0284385 = phi i32 [ %519, %.lr.ph386 ], [ 0, %.preheader342 ]
  %517 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN8ImVectorI20ImGuiSettingsHandlerEixEi(ptr noundef nonnull align 8 dereferenceable(16) %512, i32 noundef %.0284385)
  %518 = load ptr, ptr %517, align 8, !tbaa !146
  call void (ptr, ...) @_ZN5ImGui10BulletTextEPKcz(ptr noundef nonnull @.str.345, ptr noundef %518)
  %519 = add nuw nsw i32 %.0284385, 1
  %520 = load i32, ptr %512, align 8, !tbaa !145
  %521 = icmp slt i32 %519, %520
  br i1 %521, label %.lr.ph386, label %._crit_edge387, !llvm.loop !148

522:                                              ; preds = %._crit_edge387, %508
  %523 = getelementptr inbounds i8, ptr %30, i64 21200
  %524 = call noundef i32 @_ZNK13ImChunkStreamI19ImGuiWindowSettingsE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %523)
  %525 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.346, ptr noundef nonnull @.str.347, i32 noundef %524)
  br i1 %525, label %526, label %529

526:                                              ; preds = %522
  %527 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %523)
  %.not312388 = icmp eq ptr %527, null
  br i1 %.not312388, label %._crit_edge392, label %.lr.ph391

._crit_edge392:                                   ; preds = %.lr.ph391, %526
  call void @_ZN5ImGui7TreePopEv()
  br label %529

.lr.ph391:                                        ; preds = %526, %.lr.ph391
  %.0283389 = phi ptr [ %528, %.lr.ph391 ], [ %527, %526 ]
  call void @_ZN5ImGui23DebugNodeWindowSettingsEP19ImGuiWindowSettings(ptr noundef nonnull %.0283389)
  %528 = call noundef ptr @_ZN13ImChunkStreamI19ImGuiWindowSettingsE10next_chunkEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %523, ptr noundef nonnull %.0283389)
  %.not312 = icmp eq ptr %528, null
  br i1 %.not312, label %._crit_edge392, label %.lr.ph391, !llvm.loop !149

529:                                              ; preds = %._crit_edge392, %522
  %530 = getelementptr inbounds i8, ptr %30, i64 21216
  %531 = call noundef i32 @_ZNK13ImChunkStreamI18ImGuiTableSettingsE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %530)
  %532 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.348, ptr noundef nonnull @.str.349, i32 noundef %531)
  br i1 %532, label %533, label %536

533:                                              ; preds = %529
  %534 = call noundef ptr @_ZN13ImChunkStreamI18ImGuiTableSettingsE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %530)
  %.not313393 = icmp eq ptr %534, null
  br i1 %.not313393, label %._crit_edge397, label %.lr.ph396

._crit_edge397:                                   ; preds = %.lr.ph396, %533
  call void @_ZN5ImGui7TreePopEv()
  br label %536

.lr.ph396:                                        ; preds = %533, %.lr.ph396
  %.0282394 = phi ptr [ %535, %.lr.ph396 ], [ %534, %533 ]
  call void @_ZN5ImGui22DebugNodeTableSettingsEP18ImGuiTableSettings(ptr noundef nonnull %.0282394)
  %535 = call noundef ptr @_ZN13ImChunkStreamI18ImGuiTableSettingsE10next_chunkEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %530, ptr noundef nonnull %.0282394)
  %.not313 = icmp eq ptr %535, null
  br i1 %.not313, label %._crit_edge397, label %.lr.ph396, !llvm.loop !150

536:                                              ; preds = %._crit_edge397, %529
  %537 = getelementptr inbounds i8, ptr %30, i64 21168
  %538 = call noundef i32 @_ZNK15ImGuiTextBuffer4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %537)
  %539 = call noundef zeroext i1 (ptr, ptr, ...) @_ZN5ImGui8TreeNodeEPKcS1_z(ptr noundef nonnull @.str.350, ptr noundef nonnull @.str.351, i32 noundef %538)
  br i1 %539, label %540, label %547

540:                                              ; preds = %536
  %541 = call noundef ptr @_ZNK15ImGuiTextBuffer5c_strEv(ptr noundef nonnull align 8 dereferenceable(16) %537)
  %542 = load i32, ptr %537, align 8, !tbaa !151
  %543 = sext i32 %542 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  %544 = call noundef float @_ZN5ImGui17GetTextLineHeightEv()
  %545 = fmul float %544, 2.000000e+01
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef 0xB810000000000000, float noundef %545)
  %546 = call noundef zeroext i1 @_ZN5ImGui18InputTextMultilineEPKcPcmRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull @.str.352, ptr noundef %541, i64 noundef %543, ptr noundef nonnull align 4 dereferenceable(8) %23, i32 noundef 16384, ptr noundef null, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  call void @_ZN5ImGui7TreePopEv()
  br label %547

547:                                              ; preds = %540, %536
  call void @_ZN5ImGui7TreePopEv()
  br label %548

548:                                              ; preds = %547, %489
  %549 = call noundef zeroext i1 @_ZN5ImGui8TreeNodeEPKc(ptr noundef nonnull @.str.353)
  br i1 %549, label %550, label %668

550:                                              ; preds = %548
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.354)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %551 = getelementptr inbounds i8, ptr %30, i64 15840
  %552 = load ptr, ptr %551, align 8, !tbaa !152
  %.not314 = icmp eq ptr %552, null
  br i1 %.not314, label %555, label %553

553:                                              ; preds = %550
  %554 = load ptr, ptr %552, align 8, !tbaa !98
  br label %555

555:                                              ; preds = %550, %553
  %556 = phi ptr [ %554, %553 ], [ @.str.326, %550 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.355, ptr noundef %556)
  %557 = load ptr, ptr %551, align 8, !tbaa !152
  %.not315 = icmp eq ptr %557, null
  br i1 %.not315, label %562, label %558

558:                                              ; preds = %555
  %559 = getelementptr inbounds i8, ptr %557, i64 848
  %560 = load ptr, ptr %559, align 8, !tbaa !153
  %561 = load ptr, ptr %560, align 8, !tbaa !98
  br label %562

562:                                              ; preds = %555, %558
  %563 = phi ptr [ %561, %558 ], [ @.str.326, %555 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.356, ptr noundef %563)
  %564 = getelementptr inbounds i8, ptr %30, i64 15848
  %565 = load ptr, ptr %564, align 8, !tbaa !154
  %.not316 = icmp eq ptr %565, null
  br i1 %.not316, label %568, label %566

566:                                              ; preds = %562
  %567 = load ptr, ptr %565, align 8, !tbaa !98
  br label %568

568:                                              ; preds = %562, %566
  %569 = phi ptr [ %567, %566 ], [ @.str.326, %562 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.357, ptr noundef %569)
  %570 = getelementptr inbounds i8, ptr %30, i64 15856
  %571 = load ptr, ptr %570, align 8, !tbaa !155
  %.not317 = icmp eq ptr %571, null
  br i1 %.not317, label %574, label %572

572:                                              ; preds = %568
  %573 = load ptr, ptr %571, align 8, !tbaa !98
  br label %574

574:                                              ; preds = %568, %572
  %575 = phi ptr [ %573, %572 ], [ @.str.326, %568 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.358, ptr noundef %575)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.359)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %576 = getelementptr inbounds i8, ptr %30, i64 15908
  %577 = load i32, ptr %576, align 4, !tbaa !156
  %578 = getelementptr inbounds i8, ptr %30, i64 15984
  %579 = load i32, ptr %578, align 8, !tbaa !157
  %580 = getelementptr inbounds i8, ptr %30, i64 15916
  %581 = load float, ptr %580, align 4, !tbaa !158
  %582 = fpext float %581 to double
  %583 = getelementptr inbounds i8, ptr %30, i64 15921
  %584 = load i8, ptr %583, align 1, !tbaa !159, !range !13, !noundef !14
  %585 = zext nneg i8 %584 to i32
  %586 = getelementptr inbounds i8, ptr %30, i64 15976
  %587 = load i32, ptr %586, align 8, !tbaa !160
  %588 = call noundef ptr @_ZL18GetInputSourceName16ImGuiInputSource(i32 noundef %587)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.360, i32 noundef %577, i32 noundef %579, double noundef %582, i32 noundef %585, ptr noundef %588)
  %589 = getelementptr inbounds i8, ptr %30, i64 15968
  %590 = load ptr, ptr %589, align 8, !tbaa !161
  %.not318 = icmp eq ptr %590, null
  br i1 %.not318, label %593, label %591

591:                                              ; preds = %574
  %592 = load ptr, ptr %590, align 8, !tbaa !98
  br label %593

593:                                              ; preds = %574, %591
  %594 = phi ptr [ %592, %591 ], [ @.str.326, %574 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.361, ptr noundef %594)
  %595 = getelementptr inbounds i8, ptr %30, i64 15936
  br label %622

596:                                              ; preds = %622
  %597 = getelementptr inbounds i8, ptr %30, i64 15926
  %598 = load i8, ptr %597, align 2, !tbaa !162, !range !13, !noundef !14
  %599 = zext nneg i8 %598 to i32
  %600 = getelementptr inbounds i8, ptr %30, i64 15928
  %601 = load i32, ptr %600, align 8, !tbaa !163
  %602 = getelementptr inbounds i8, ptr %30, i64 15932
  %603 = load i32, ptr %602, align 4, !tbaa !164
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.362, i32 noundef %599, i32 noundef %601, i32 noundef %603, i32 noundef %625)
  %604 = getelementptr inbounds i8, ptr %30, i64 15892
  %605 = load i32, ptr %604, align 4, !tbaa !165
  %606 = getelementptr inbounds i8, ptr %30, i64 15900
  %607 = load float, ptr %606, align 4, !tbaa !166
  %608 = fpext float %607 to double
  %609 = getelementptr inbounds i8, ptr %30, i64 15896
  %610 = load i8, ptr %609, align 8, !tbaa !167, !range !13, !noundef !14
  %611 = zext nneg i8 %610 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.363, i32 noundef %605, double noundef %608, i32 noundef %611)
  %612 = getelementptr inbounds i8, ptr %30, i64 16764
  %613 = load i8, ptr %612, align 4, !tbaa !168, !range !13, !noundef !14
  %614 = zext nneg i8 %613 to i32
  %615 = getelementptr inbounds i8, ptr %30, i64 16796
  %616 = load i32, ptr %615, align 4, !tbaa !169
  %617 = getelementptr inbounds i8, ptr %30, i64 16808
  %618 = getelementptr inbounds i8, ptr %30, i64 16792
  %619 = load i32, ptr %618, align 8, !tbaa !170
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.364, i32 noundef %614, i32 noundef %616, ptr noundef nonnull %617, i32 noundef %619)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.365)
  call void @_ZN5ImGui6IndentEf(float noundef 0.000000e+00)
  %620 = getelementptr inbounds i8, ptr %30, i64 16360
  %621 = load ptr, ptr %620, align 8, !tbaa !52
  %.not319 = icmp eq ptr %621, null
  br i1 %.not319, label %629, label %627

622:                                              ; preds = %593, %622
  %.0280399 = phi i32 [ 0, %593 ], [ %626, %622 ]
  %.0281398 = phi i32 [ 0, %593 ], [ %625, %622 ]
  %623 = call noundef zeroext i1 @_ZNK10ImBitArrayILi129EE7TestBitEi(ptr noundef nonnull align 4 dereferenceable(20) %595, i32 noundef %.0280399)
  %624 = zext i1 %623 to i32
  %625 = add nuw nsw i32 %.0281398, %624
  %626 = add nuw nsw i32 %.0280399, 1
  %exitcond413.not = icmp eq i32 %626, 129
  br i1 %exitcond413.not, label %596, label %622, !llvm.loop !171

627:                                              ; preds = %596
  %628 = load ptr, ptr %621, align 8, !tbaa !98
  br label %629

629:                                              ; preds = %596, %627
  %630 = phi ptr [ %628, %627 ], [ @.str.326, %596 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.366, ptr noundef %630)
  %631 = getelementptr inbounds i8, ptr %30, i64 16368
  %632 = load i32, ptr %631, align 8, !tbaa !172
  %633 = getelementptr inbounds i8, ptr %30, i64 16420
  %634 = load i32, ptr %633, align 4, !tbaa !173
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.367, i32 noundef %632, i32 noundef %634)
  %635 = getelementptr inbounds i8, ptr %30, i64 16416
  %636 = load i32, ptr %635, align 8, !tbaa !174
  %637 = call noundef ptr @_ZL18GetInputSourceName16ImGuiInputSource(i32 noundef %636)
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.368, ptr noundef %637)
  %638 = getelementptr inbounds i8, ptr %30, i64 213
  %639 = load i8, ptr %638, align 1, !tbaa !175, !range !13, !noundef !14
  %640 = zext nneg i8 %639 to i32
  %641 = getelementptr inbounds i8, ptr %30, i64 214
  %642 = load i8, ptr %641, align 2, !tbaa !176, !range !13, !noundef !14
  %643 = zext nneg i8 %642 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.369, i32 noundef %640, i32 noundef %643)
  %644 = getelementptr inbounds i8, ptr %30, i64 16376
  %645 = load i32, ptr %644, align 8, !tbaa !177
  %646 = getelementptr inbounds i8, ptr %30, i64 16380
  %647 = load i32, ptr %646, align 4, !tbaa !178
  %648 = getelementptr inbounds i8, ptr %30, i64 16384
  %649 = load i32, ptr %648, align 8, !tbaa !179
  %650 = getelementptr inbounds i8, ptr %30, i64 16388
  %651 = load i32, ptr %650, align 4, !tbaa !180
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.370, i32 noundef %645, i32 noundef %647, i32 noundef %649, i32 noundef %651)
  %652 = getelementptr inbounds i8, ptr %30, i64 16392
  %653 = load i32, ptr %652, align 8, !tbaa !181
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.371, i32 noundef %653)
  %654 = getelementptr inbounds i8, ptr %30, i64 16426
  %655 = load i8, ptr %654, align 2, !tbaa !182, !range !13, !noundef !14
  %656 = zext nneg i8 %655 to i32
  %657 = getelementptr inbounds i8, ptr %30, i64 16427
  %658 = load i8, ptr %657, align 1, !tbaa !183, !range !13, !noundef !14
  %659 = zext nneg i8 %658 to i32
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.372, i32 noundef %656, i32 noundef %659)
  %660 = getelementptr inbounds i8, ptr %30, i64 16372
  %661 = load i32, ptr %660, align 4, !tbaa !184
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.373, i32 noundef %661)
  %662 = getelementptr inbounds i8, ptr %30, i64 16720
  %663 = load ptr, ptr %662, align 8, !tbaa !185
  %.not320 = icmp eq ptr %663, null
  br i1 %.not320, label %666, label %664

664:                                              ; preds = %629
  %665 = load ptr, ptr %663, align 8, !tbaa !98
  br label %666

666:                                              ; preds = %629, %664
  %667 = phi ptr [ %665, %664 ], [ @.str.326, %629 ]
  call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.374, ptr noundef %667)
  call void @_ZN5ImGui8UnindentEf(float noundef 0.000000e+00)
  call void @_ZN5ImGui7TreePopEv()
  br label %668

668:                                              ; preds = %666, %548
  %669 = getelementptr inbounds i8, ptr %30, i64 21333
  %670 = load i8, ptr %669, align 1, !tbaa !51, !range !13, !noundef !14
  %671 = trunc nuw i8 %670 to i1
  br i1 %671, label %676, label %672

672:                                              ; preds = %668
  %673 = getelementptr inbounds i8, ptr %30, i64 21334
  %674 = load i8, ptr %673, align 2, !tbaa !186, !range !13, !noundef !14
  %675 = trunc nuw i8 %674 to i1
  br i1 %675, label %676, label %.loopexit341

676:                                              ; preds = %672, %668
  %677 = load i32, ptr %350, align 8, !tbaa !118
  %678 = icmp sgt i32 %677, 0
  br i1 %678, label %.lr.ph402, label %.loopexit341

.lr.ph402:                                        ; preds = %676
  %679 = getelementptr inbounds i8, ptr %24, i64 8
  %680 = getelementptr inbounds i8, ptr %30, i64 21334
  br label %681

681:                                              ; preds = %.lr.ph402, %711
  %.0279400 = phi i32 [ 0, %.lr.ph402 ], [ %712, %711 ]
  %682 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %350, i32 noundef %.0279400)
  %683 = load ptr, ptr %682, align 8, !tbaa !5
  %684 = getelementptr inbounds i8, ptr %683, i64 143
  %685 = load i8, ptr %684, align 1, !tbaa !187, !range !13, !noundef !14
  %686 = trunc nuw i8 %685 to i1
  br i1 %686, label %687, label %711

687:                                              ; preds = %681
  %688 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEP11ImGuiWindow(ptr noundef nonnull %683)
  %689 = load i8, ptr %669, align 1, !tbaa !51, !range !13, !noundef !14
  %690 = trunc nuw i8 %689 to i1
  br i1 %690, label %691, label %696

691:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #9
  %692 = load i32, ptr %59, align 4, !tbaa !49
  %693 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs13GetWindowRectEP11ImGuiWindowi(ptr noundef nonnull %683, i32 noundef %692)
  %694 = extractvalue { <2 x float>, <2 x float> } %693, 0
  store <2 x float> %694, ptr %24, align 8
  %695 = extractvalue { <2 x float>, <2 x float> } %693, 1
  store <2 x float> %695, ptr %679, align 8
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %688, ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %679, i32 noundef -8388353, float noundef 0.000000e+00, i32 noundef 0, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #9
  br label %696

696:                                              ; preds = %691, %687
  %697 = load i8, ptr %680, align 2, !tbaa !186, !range !13, !noundef !14
  %698 = trunc nuw i8 %697 to i1
  br i1 %698, label %699, label %711

699:                                              ; preds = %696
  %700 = getelementptr inbounds i8, ptr %683, i64 12
  %701 = load i32, ptr %700, align 4, !tbaa !134
  %702 = and i32 %701, 16777216
  %.not321 = icmp eq i32 %702, 0
  br i1 %.not321, label %703, label %711

703:                                              ; preds = %699
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #9
  %704 = getelementptr inbounds i8, ptr %683, i64 158
  %705 = load i16, ptr %704, align 2, !tbaa !188
  %706 = sext i16 %705 to i32
  %707 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %25, i64 noundef 32, ptr noundef nonnull @.str.375, i32 noundef %706)
  %708 = call noundef float @_ZN5ImGui11GetFontSizeEv()
  %709 = getelementptr inbounds i8, ptr %683, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, float noundef %708, float noundef %708)
  %710 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %709, ptr noundef nonnull align 4 dereferenceable(8) %27)
  store <2 x float> %710, ptr %26, align 8
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %688, ptr noundef nonnull align 4 dereferenceable(8) %709, ptr noundef nonnull align 4 dereferenceable(8) %26, i32 noundef -10197816, float noundef 0.000000e+00, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196) %688, ptr noundef nonnull align 4 dereferenceable(8) %709, i32 noundef -1, ptr noundef nonnull %25, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  br label %711

711:                                              ; preds = %696, %699, %703, %681
  %712 = add nuw nsw i32 %.0279400, 1
  %713 = load i32, ptr %350, align 8, !tbaa !118
  %714 = icmp slt i32 %712, %713
  br i1 %714, label %681, label %.loopexit341, !llvm.loop !189

.loopexit341:                                     ; preds = %711, %676, %672
  %715 = getelementptr inbounds i8, ptr %30, i64 21335
  %716 = load i8, ptr %715, align 1, !tbaa !99, !range !13, !noundef !14
  %717 = trunc nuw i8 %716 to i1
  br i1 %717, label %.preheader339, label %.loopexit340

.preheader339:                                    ; preds = %.loopexit341
  %718 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %471)
  %719 = icmp sgt i32 %718, 0
  br i1 %719, label %.lr.ph406, label %.loopexit340

.lr.ph406:                                        ; preds = %.preheader339
  %720 = getelementptr inbounds i8, ptr %30, i64 15704
  %721 = getelementptr inbounds i8, ptr %29, i64 8
  %722 = getelementptr inbounds i8, ptr %28, i64 8
  br label %723

723:                                              ; preds = %.lr.ph406, %.loopexit
  %.0275405 = phi i32 [ 0, %.lr.ph406 ], [ %759, %.loopexit ]
  %724 = call noundef ptr @_ZN6ImPoolI10ImGuiTableE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40) %471, i32 noundef %.0275405)
  %725 = icmp eq ptr %724, null
  br i1 %725, label %.loopexit, label %726

726:                                              ; preds = %723
  %727 = getelementptr inbounds i8, ptr %724, i64 112
  %728 = load i32, ptr %727, align 8, !tbaa !100
  %729 = load i32, ptr %720, align 8, !tbaa !109
  %730 = add nsw i32 %729, -1
  %731 = icmp slt i32 %728, %730
  br i1 %731, label %.loopexit, label %732

732:                                              ; preds = %726
  %733 = getelementptr inbounds i8, ptr %724, i64 392
  %734 = load ptr, ptr %733, align 8, !tbaa !110
  %735 = call noundef ptr @_ZN5ImGui21GetForegroundDrawListEP11ImGuiWindow(ptr noundef %734)
  %736 = load i32, ptr %64, align 4, !tbaa !50
  %737 = icmp sgt i32 %736, 5
  br i1 %737, label %.preheader, label %755

.preheader:                                       ; preds = %732
  %738 = getelementptr inbounds i8, ptr %724, i64 116
  %739 = load i32, ptr %738, align 4, !tbaa !113
  %740 = icmp sgt i32 %739, 0
  br i1 %740, label %.lr.ph404, label %.loopexit

.lr.ph404:                                        ; preds = %.preheader
  %741 = getelementptr inbounds i8, ptr %724, i64 484
  br label %742

742:                                              ; preds = %.lr.ph404, %742
  %.0272403 = phi i32 [ 0, %.lr.ph404 ], [ %752, %742 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #9
  %743 = load i32, ptr %64, align 4, !tbaa !50
  %744 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12GetTableRectEP10ImGuiTableii(ptr noundef nonnull %724, i32 noundef %743, i32 noundef %.0272403)
  %745 = extractvalue { <2 x float>, <2 x float> } %744, 0
  store <2 x float> %745, ptr %28, align 8
  %746 = extractvalue { <2 x float>, <2 x float> } %744, 1
  store <2 x float> %746, ptr %722, align 8
  %747 = load i8, ptr %741, align 4, !tbaa !190
  %748 = sext i8 %747 to i32
  %749 = icmp eq i32 %.0272403, %748
  %750 = select i1 %749, i32 -8323073, i32 -8388353
  %751 = select i1 %749, float 3.000000e+00, float 1.000000e+00
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %735, ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %722, i32 noundef %750, float noundef 0.000000e+00, i32 noundef 0, float noundef %751)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #9
  %752 = add nuw nsw i32 %.0272403, 1
  %753 = load i32, ptr %738, align 4, !tbaa !113
  %754 = icmp slt i32 %752, %753
  br i1 %754, label %742, label %.loopexit, !llvm.loop !191

755:                                              ; preds = %732
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #9
  %756 = call { <2 x float>, <2 x float> } @_ZZN5ImGui17ShowMetricsWindowEPbEN5Funcs12GetTableRectEP10ImGuiTableii(ptr noundef nonnull %724, i32 noundef %736, i32 noundef -1)
  %757 = extractvalue { <2 x float>, <2 x float> } %756, 0
  store <2 x float> %757, ptr %29, align 8
  %758 = extractvalue { <2 x float>, <2 x float> } %756, 1
  store <2 x float> %758, ptr %721, align 8
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %735, ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %721, i32 noundef -8388353, float noundef 0.000000e+00, i32 noundef 0, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #9
  br label %.loopexit

.loopexit:                                        ; preds = %742, %.preheader, %755, %723, %726
  %759 = add nuw nsw i32 %.0275405, 1
  %760 = call noundef i32 @_ZNK6ImPoolI10ImGuiTableE10GetMapSizeEv(ptr noundef nonnull align 8 dereferenceable(40) %471)
  %761 = icmp slt i32 %759, %760
  br i1 %761, label %723, label %.loopexit340, !llvm.loop !192

.loopexit340:                                     ; preds = %.loopexit, %.preheader339, %.loopexit341
  call void @_ZN5ImGui3EndEv()
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %3) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %2) #9
  br label %762

762:                                              ; preds = %.loopexit340, %42
  ret void
}

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

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

declare void @_ZN5ImGui9SeparatorEv() local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL17MetricsHelpMarkerPKc(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 #5

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6ImPoolI10ImGuiTableE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) local_unnamed_addr #6 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui20DebugNodeWindowsListEP8ImVectorIP11ImGuiWindowEPKc(ptr noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZZN5ImGui17ShowMetricsWindowEPbEN4Func26WindowComparerByBeginOrderEPKvS3_(ptr noundef, ptr noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui38DebugNodeWindowsListByBeginStackParentEPP11ImGuiWindowiS1_(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

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

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

declare noundef float @_ZN5ImGui25GetTreeNodeToLabelSpacingEv() local_unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6ImPoolI11ImGuiTabBarE13TryGetMapDataEi(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui15DebugNodeTabBarEP11ImGuiTabBarPKc(ptr noundef, ptr noundef) local_unnamed_addr #6

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

declare void @_ZN5ImGui14DebugNodeTableEP10ImGuiTable(ptr noundef) local_unnamed_addr #5

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

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

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

; 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 dso_local void @_ZN5ImGui23DebugNodeWindowSettingsEP19ImGuiWindowSettings(ptr noundef) local_unnamed_addr #6

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

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

declare void @_ZN5ImGui22DebugNodeTableSettingsEP18ImGuiTableSettings(ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN13ImChunkStreamI18ImGuiTableSettingsE10next_chunkEPS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #6 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 #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImBitArrayILi129EE7TestBitEi(ptr noundef nonnull align 4 dereferenceable(20), i32 noundef) local_unnamed_addr #6 align 2

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

declare void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, 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 = { 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 #5 = { "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 = { 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 #7 = { 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 #8 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTS18ImGuiMetricsConfig", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3, !11, i64 4, !11, i64 5, !12, i64 8, !12, i64 12}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !19, i64 154}
!16 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !12, i64 8, !12, i64 12, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !17, i64 56, !17, i64 64, !18, i64 72, !18, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !17, i64 92, !17, i64 100, !17, i64 108, !17, i64 116, !17, i64 124, !17, i64 132, !11, i64 140, !11, i64 141, !11, i64 142, !11, i64 143, !11, i64 144, !11, i64 145, !11, i64 146, !11, i64 147, !11, i64 148, !11, i64 149, !11, i64 150, !11, i64 151, !11, i64 152, !7, i64 153, !19, i64 154, !19, i64 156, !19, i64 158, !19, i64 160, !12, i64 164, !7, i64 168, !7, i64 169, !7, i64 170, !11, i64 171, !12, i64 172, !7, i64 176, !7, i64 177, !7, i64 178, !7, i64 179, !12, i64 180, !12, i64 181, !12, i64 182, !17, i64 184, !17, i64 192, !20, i64 200, !21, i64 216, !27, i64 448, !27, i64 464, !27, i64 480, !27, i64 496, !27, i64 512, !27, i64 528, !27, i64 544, !28, i64 560, !28, i64 564, !12, i64 568, !18, i64 572, !18, i64 576, !29, i64 584, !31, i64 600, !18, i64 616, !12, i64 620, !6, i64 624, !32, i64 632, !6, i64 832, !6, i64 840, !6, i64 848, !6, i64 856, !6, i64 864, !6, i64 872, !6, i64 880, !7, i64 888, !7, i64 896, !12, i64 928, !12, i64 932, !11, i64 936}
!17 = !{!"_ZTS6ImVec2", !18, i64 0, !18, i64 4}
!18 = !{!"float", !7, i64 0}
!19 = !{!"short", !7, i64 0}
!20 = !{!"_ZTS8ImVectorIjE", !12, i64 0, !12, i64 4, !6, i64 8}
!21 = !{!"_ZTS19ImGuiWindowTempData", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !18, i64 56, !18, i64 60, !22, i64 64, !22, i64 68, !22, i64 72, !17, i64 76, !23, i64 84, !19, i64 88, !19, i64 90, !12, i64 92, !11, i64 96, !11, i64 97, !11, i64 98, !17, i64 100, !24, i64 108, !12, i64 136, !12, i64 140, !25, i64 144, !6, i64 160, !6, i64 168, !12, i64 176, !12, i64 180, !12, i64 184, !18, i64 188, !18, i64 192, !26, i64 200, !26, i64 216}
!22 = !{!"_ZTS6ImVec1", !18, i64 0}
!23 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!24 = !{!"_ZTS16ImGuiMenuColumns", !12, i64 0, !12, i64 4, !19, i64 8, !19, i64 10, !19, i64 12, !19, i64 14, !19, i64 16, !7, i64 18}
!25 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !12, i64 0, !12, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorIfE", !12, i64 0, !12, i64 4, !6, i64 8}
!27 = !{!"_ZTS6ImRect", !17, i64 0, !17, i64 8}
!28 = !{!"_ZTS8ImVec2ih", !19, i64 0, !19, i64 2}
!29 = !{!"_ZTS12ImGuiStorage", !30, i64 0}
!30 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !12, i64 0, !12, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !12, i64 0, !12, i64 4, !6, i64 8}
!32 = !{!"_ZTS10ImDrawList", !33, i64 0, !34, i64 16, !35, i64 32, !12, i64 48, !12, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !36, i64 88, !37, i64 104, !38, i64 120, !39, i64 136, !41, i64 168, !18, i64 192}
!33 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !12, i64 0, !12, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorItE", !12, i64 0, !12, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorI10ImDrawVertE", !12, i64 0, !12, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI6ImVec4E", !12, i64 0, !12, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorIPvE", !12, i64 0, !12, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI6ImVec2E", !12, i64 0, !12, i64 4, !6, i64 8}
!39 = !{!"_ZTS15ImDrawCmdHeader", !40, i64 0, !6, i64 16, !12, i64 24}
!40 = !{!"_ZTS6ImVec4", !18, i64 0, !18, i64 4, !18, i64 8, !18, i64 12}
!41 = !{!"_ZTS18ImDrawListSplitter", !12, i64 0, !12, i64 4, !42, i64 8}
!42 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !12, i64 0, !12, i64 4, !6, i64 8}
!43 = !{!44, !18, i64 208}
!44 = !{!"_ZTS7ImGuiIO", !12, i64 0, !12, i64 4, !17, i64 8, !18, i64 16, !18, i64 20, !6, i64 24, !6, i64 32, !18, i64 40, !18, i64 44, !18, i64 48, !18, i64 52, !18, i64 56, !6, i64 64, !6, i64 72, !18, i64 80, !11, i64 84, !6, i64 88, !17, i64 96, !11, i64 104, !11, i64 105, !11, i64 106, !11, i64 107, !11, i64 108, !11, i64 109, !11, i64 110, !18, 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, !6, i64 192, !11, i64 200, !11, i64 201, !11, i64 202, !11, i64 203, !11, i64 204, !11, i64 205, !11, i64 206, !18, i64 208, !12, i64 212, !12, i64 216, !12, i64 220, !12, i64 224, !12, i64 228, !17, i64 232, !7, i64 240, !7, i64 2804, !17, i64 3316, !7, i64 3324, !18, i64 3332, !18, i64 3336, !11, i64 3340, !11, i64 3341, !11, i64 3342, !11, i64 3343, !7, i64 3344, !12, i64 3424, !12, i64 3428, !7, i64 3432, !11, i64 13688, !17, i64 13692, !7, i64 13700, !7, i64 13744, !7, i64 13784, !7, i64 13789, !7, i64 13794, !7, i64 13804, !7, i64 13814, !7, i64 13819, !7, i64 13824, !7, i64 13832, !7, i64 13852, !7, i64 13872, !7, i64 13892, !7, i64 13972, !18, i64 14052, !11, i64 14056, !7, i64 14057, !11, i64 14058, !19, i64 14060, !34, i64 14064}
!45 = !{!44, !12, i64 212}
!46 = !{!44, !12, i64 216}
!47 = !{!44, !12, i64 220}
!48 = !{!44, !12, i64 228}
!49 = !{!10, !12, i64 8}
!50 = !{!10, !12, i64 12}
!51 = !{!10, !11, i64 1}
!52 = !{!53, !6, i64 16360}
!53 = !{!"_ZTS12ImGuiContext", !11, i64 0, !11, i64 1, !44, i64 8, !54, i64 14088, !54, i64 14104, !55, i64 14120, !6, i64 15168, !18, i64 15176, !18, i64 15180, !56, i64 15184, !57, i64 15696, !12, i64 15704, !12, i64 15708, !12, i64 15712, !11, i64 15716, !11, i64 15717, !11, i64 15718, !11, i64 15719, !11, i64 15720, !6, i64 15728, !25, i64 15736, !25, i64 15752, !25, i64 15768, !58, i64 15784, !29, i64 15800, !12, i64 15816, !17, i64 15820, !6, i64 15832, !6, i64 15840, !6, i64 15848, !6, i64 15856, !6, i64 15864, !17, i64 15872, !18, i64 15880, !12, i64 15884, !12, i64 15888, !12, i64 15892, !11, i64 15896, !11, i64 15897, !11, i64 15898, !11, i64 15899, !18, i64 15900, !18, i64 15904, !12, i64 15908, !12, i64 15912, !18, i64 15916, !11, i64 15920, !11, i64 15921, !11, i64 15922, !11, i64 15923, !11, i64 15924, !11, i64 15925, !11, i64 15926, !12, i64 15928, !12, i64 15932, !59, i64 15936, !17, i64 15956, !6, i64 15968, !60, i64 15976, !12, i64 15980, !12, i64 15984, !11, i64 15988, !11, i64 15989, !6, i64 15992, !12, i64 16000, !18, i64 16004, !12, i64 16008, !61, i64 16012, !62, i64 16032, !63, i64 16096, !64, i64 16208, !65, i64 16224, !66, i64 16240, !20, i64 16256, !67, i64 16272, !68, i64 16288, !69, i64 16304, !69, i64 16320, !12, i64 16336, !70, i64 16344, !6, i64 16360, !12, i64 16368, !12, i64 16372, !12, i64 16376, !12, i64 16380, !12, i64 16384, !12, i64 16388, !12, i64 16392, !12, i64 16396, !12, i64 16400, !12, i64 16404, !12, i64 16408, !12, i64 16412, !60, i64 16416, !23, i64 16420, !11, i64 16424, !11, i64 16425, !11, i64 16426, !11, i64 16427, !11, i64 16428, !11, i64 16429, !11, i64 16430, !12, i64 16432, !27, i64 16436, !11, i64 16452, !11, i64 16453, !11, i64 16454, !12, i64 16456, !12, i64 16460, !12, i64 16464, !12, i64 16468, !12, i64 16472, !12, i64 16476, !27, i64 16480, !27, i64 16496, !12, i64 16512, !12, i64 16516, !12, i64 16520, !71, i64 16528, !71, i64 16576, !71, i64 16624, !71, i64 16672, !6, i64 16720, !6, i64 16728, !6, i64 16736, !18, i64 16744, !18, i64 16748, !11, i64 16752, !18, i64 16756, !12, i64 16760, !11, i64 16764, !11, i64 16765, !11, i64 16766, !12, i64 16768, !12, i64 16772, !12, i64 16776, !72, i64 16784, !27, i64 16848, !12, i64 16864, !12, i64 16868, !18, i64 16872, !12, i64 16876, !12, i64 16880, !12, i64 16884, !12, i64 16888, !73, i64 16896, !7, i64 16912, !12, i64 16928, !74, i64 16936, !6, i64 16952, !12, i64 16960, !75, i64 16968, !76, i64 16984, !26, i64 17024, !42, i64 17040, !6, i64 17056, !78, i64 17064, !80, i64 17104, !81, i64 17120, !17, i64 17136, !82, i64 17144, !86, i64 20864, !12, i64 20976, !12, i64 20980, !18, i64 20984, !18, i64 20988, !12, i64 20992, !40, i64 20996, !88, i64 21012, !18, i64 21060, !11, i64 21064, !11, i64 21065, !18, i64 21068, !18, i64 21072, !18, i64 21076, !18, i64 21080, !19, i64 21084, !19, i64 21086, !18, i64 21088, !83, i64 21096, !20, i64 21112, !89, i64 21128, !89, i64 21144, !7, i64 21160, !11, i64 21161, !18, i64 21164, !90, i64 21168, !91, i64 21184, !92, i64 21200, !93, i64 21216, !94, i64 21232, !12, i64 21248, !11, i64 21252, !95, i64 21256, !6, i64 21264, !90, i64 21272, !6, i64 21288, !6, i64 21296, !18, i64 21304, !11, i64 21308, !12, i64 21312, !12, i64 21316, !12, i64 21320, !11, i64 21324, !12, i64 21328, !10, i64 21332, !96, i64 21352, !7, i64 21384, !12, i64 21864, !12, i64 21868, !18, i64 21872, !12, i64 21876, !12, i64 21880, !12, i64 21884, !7, i64 21888}
!54 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !12, i64 0, !12, i64 4, !6, i64 8}
!55 = !{!"_ZTS10ImGuiStyle", !18, i64 0, !18, i64 4, !17, i64 8, !18, i64 16, !18, i64 20, !17, i64 24, !17, i64 32, !12, i64 40, !18, i64 44, !18, i64 48, !18, i64 52, !18, i64 56, !17, i64 60, !18, i64 68, !18, i64 72, !17, i64 76, !17, i64 84, !17, i64 92, !17, i64 100, !18, i64 108, !18, i64 112, !18, i64 116, !18, i64 120, !18, i64 124, !18, i64 128, !18, i64 132, !18, i64 136, !18, i64 140, !18, i64 144, !12, i64 148, !17, i64 152, !17, i64 160, !17, i64 168, !17, i64 176, !18, i64 184, !11, i64 188, !11, i64 189, !11, i64 190, !18, i64 192, !18, i64 196, !7, i64 200}
!56 = !{!"_ZTS20ImDrawListSharedData", !17, i64 0, !6, i64 8, !18, i64 16, !18, i64 20, !18, i64 24, !40, i64 28, !12, i64 44, !7, i64 48, !18, i64 432, !7, i64 436, !6, i64 504}
!57 = !{!"double", !7, i64 0}
!58 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!59 = !{!"_ZTS10ImBitArrayILi129EE", !7, i64 0}
!60 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!61 = !{!"_ZTS17ImGuiNextItemData", !12, i64 0, !18, i64 4, !12, i64 8, !12, i64 12, !11, i64 16}
!62 = !{!"_ZTS17ImGuiLastItemData", !12, i64 0, !12, i64 4, !12, i64 8, !27, i64 12, !27, i64 28, !27, i64 44}
!63 = !{!"_ZTS19ImGuiNextWindowData", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !11, i64 56, !27, i64 60, !6, i64 80, !6, i64 88, !18, i64 96, !17, i64 100}
!64 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !12, i64 0, !12, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !12, i64 0, !12, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorIP6ImFontE", !12, i64 0, !12, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorIiE", !12, i64 0, !12, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!69 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!70 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !12, i64 0, !12, i64 4, !6, i64 8}
!71 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !12, i64 8, !12, i64 12, !27, i64 16, !12, i64 32, !18, i64 36, !18, i64 40, !18, i64 44}
!72 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !7, i64 24, !11, i64 57, !11, i64 58}
!73 = !{!"_ZTS8ImVectorIhE", !12, i64 0, !12, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!75 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!76 = !{!"_ZTS6ImPoolI10ImGuiTableE", !77, i64 0, !29, i64 16, !12, i64 32, !12, i64 36}
!77 = !{!"_ZTS8ImVectorI10ImGuiTableE", !12, i64 0, !12, i64 4, !6, i64 8}
!78 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !79, i64 0, !29, i64 16, !12, i64 32, !12, i64 36}
!79 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !12, i64 0, !12, i64 4, !6, i64 8}
!80 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !12, i64 0, !12, i64 4, !6, i64 8}
!81 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !12, i64 0, !12, i64 4, !6, i64 8}
!82 = !{!"_ZTS19ImGuiInputTextState", !12, i64 0, !12, i64 4, !12, i64 8, !34, i64 16, !83, i64 32, !83, i64 48, !11, i64 64, !12, i64 68, !18, i64 72, !84, i64 76, !18, i64 3704, !11, i64 3708, !11, i64 3709, !11, i64 3710, !12, i64 3712}
!83 = !{!"_ZTS8ImVectorIcE", !12, i64 0, !12, i64 4, !6, i64 8}
!84 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !12, i64 0, !12, i64 4, !12, i64 8, !7, i64 12, !12, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !18, i64 28, !85, i64 32}
!85 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !19, i64 3582, !19, i64 3584, !12, i64 3588, !12, i64 3592}
!86 = !{!"_ZTS6ImFont", !26, i64 0, !18, i64 16, !18, i64 20, !34, i64 24, !87, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !19, i64 80, !19, i64 82, !19, i64 84, !19, i64 86, !11, i64 88, !18, i64 92, !18, i64 96, !18, i64 100, !12, i64 104, !7, i64 108}
!87 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !12, i64 0, !12, i64 4, !6, i64 8}
!88 = !{!"_ZTS21ImGuiComboPreviewData", !27, i64 0, !17, i64 16, !17, i64 24, !17, i64 32, !18, i64 40, !12, i64 44}
!89 = !{!"_ZTS20ImGuiPlatformImeData", !11, i64 0, !17, i64 4, !18, i64 12}
!90 = !{!"_ZTS15ImGuiTextBuffer", !83, i64 0}
!91 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !12, i64 0, !12, i64 4, !6, i64 8}
!92 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !83, i64 0}
!93 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !83, i64 0}
!94 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !12, i64 0, !12, i64 4, !6, i64 8}
!95 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!96 = !{!"_ZTS14ImGuiStackTool", !12, i64 0, !12, i64 4, !12, i64 8, !97, i64 16}
!97 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !12, i64 0, !12, i64 4, !6, i64 8}
!98 = !{!16, !6, i64 0}
!99 = !{!10, !11, i64 3}
!100 = !{!101, !12, i64 112}
!101 = !{!"_ZTS10ImGuiTable", !12, i64 0, !12, i64 4, !6, i64 8, !6, i64 16, !102, i64 24, !103, i64 40, !104, i64 56, !105, i64 72, !105, i64 80, !105, i64 88, !105, i64 96, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !19, i64 128, !19, i64 130, !18, i64 132, !18, i64 136, !18, i64 140, !18, i64 144, !18, i64 148, !12, i64 152, !12, i64 154, !12, i64 156, !7, i64 160, !12, i64 168, !12, i64 172, !18, i64 176, !18, i64 180, !18, i64 184, !18, i64 188, !18, i64 192, !18, i64 196, !18, i64 200, !18, i64 204, !18, i64 208, !18, i64 212, !18, i64 216, !18, i64 220, !18, i64 224, !18, i64 228, !18, i64 232, !18, i64 236, !18, i64 240, !27, i64 244, !27, i64 260, !27, i64 276, !27, i64 292, !27, i64 308, !27, i64 324, !27, i64 340, !27, i64 356, !27, i64 372, !6, i64 392, !6, i64 400, !90, i64 408, !6, i64 424, !106, i64 432, !107, i64 448, !108, i64 464, !7, i64 480, !7, i64 481, !7, i64 482, !7, i64 483, !7, i64 484, !7, i64 485, !7, i64 486, !7, i64 487, !7, i64 488, !7, i64 489, !7, i64 490, !7, i64 491, !7, i64 492, !7, i64 493, !7, i64 494, !7, i64 495, !7, i64 496, !7, i64 497, !7, i64 498, !7, i64 499, !7, i64 500, !7, i64 501, !7, i64 502, !7, i64 503, !7, i64 504, !11, i64 505, !11, i64 506, !11, i64 507, !11, i64 508, !11, i64 509, !11, i64 510, !11, i64 511, !11, i64 512, !11, i64 513, !11, i64 514, !11, i64 515, !11, i64 516, !11, i64 517, !11, i64 518, !11, i64 519}
!102 = !{!"_ZTS6ImSpanI16ImGuiTableColumnE", !6, i64 0, !6, i64 8}
!103 = !{!"_ZTS6ImSpanIaE", !6, i64 0, !6, i64 8}
!104 = !{!"_ZTS6ImSpanI18ImGuiTableCellDataE", !6, i64 0, !6, i64 8}
!105 = !{!"long long", !7, i64 0}
!106 = !{!"_ZTS25ImGuiTableColumnSortSpecs", !12, i64 0, !19, i64 4, !19, i64 6, !12, i64 8}
!107 = !{!"_ZTS8ImVectorI25ImGuiTableColumnSortSpecsE", !12, i64 0, !12, i64 4, !6, i64 8}
!108 = !{!"_ZTS19ImGuiTableSortSpecs", !6, i64 0, !12, i64 8, !11, i64 12}
!109 = !{!53, !12, i64 15704}
!110 = !{!101, !6, i64 392}
!111 = !{!101, !6, i64 400}
!112 = !{!101, !12, i64 0}
!113 = !{!101, !12, i64 116}
!114 = distinct !{!114, !115}
!115 = !{!"llvm.loop.mustprogress"}
!116 = distinct !{!116, !115}
!117 = distinct !{!117, !115}
!118 = !{!53, !12, i64 15736}
!119 = !{!25, !6, i64 8}
!120 = !{!25, !12, i64 0}
!121 = !{!16, !12, i64 568}
!122 = distinct !{!122, !115}
!123 = !{!53, !12, i64 16344}
!124 = distinct !{!124, !115}
!125 = !{!126, !12, i64 0}
!126 = !{!"_ZTS8ImVectorIP10ImDrawListE", !12, i64 0, !12, i64 4, !6, i64 8}
!127 = distinct !{!127, !115}
!128 = distinct !{!128, !115}
!129 = distinct !{!129, !115}
!130 = !{!53, !12, i64 16304}
!131 = !{!132, !6, i64 8}
!132 = !{!"_ZTS14ImGuiPopupData", !12, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !12, i64 28, !17, i64 32, !17, i64 40}
!133 = !{!132, !12, i64 0}
!134 = !{!16, !12, i64 12}
!135 = distinct !{!135, !115}
!136 = distinct !{!136, !115}
!137 = distinct !{!137, !115}
!138 = !{!53, !6, i64 80}
!139 = !{!140, !12, i64 72}
!140 = !{!"_ZTS11ImFontAtlas", !12, i64 0, !6, i64 8, !12, i64 16, !12, i64 20, !11, i64 24, !11, i64 25, !11, i64 26, !6, i64 32, !6, i64 40, !12, i64 48, !12, i64 52, !17, i64 56, !17, i64 64, !66, i64 72, !141, i64 88, !142, i64 104, !7, i64 120, !6, i64 1144, !12, i64 1152, !12, i64 1156, !12, i64 1160}
!141 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !12, i64 0, !12, i64 4, !6, i64 8}
!142 = !{!"_ZTS8ImVectorI12ImFontConfigE", !12, i64 0, !12, i64 4, !6, i64 8}
!143 = !{!53, !6, i64 32}
!144 = !{!53, !18, i64 21164}
!145 = !{!53, !12, i64 21184}
!146 = !{!147, !6, i64 0}
!147 = !{!"_ZTS20ImGuiSettingsHandler", !6, i64 0, !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64}
!148 = distinct !{!148, !115}
!149 = distinct !{!149, !115}
!150 = distinct !{!150, !115}
!151 = !{!53, !12, i64 21168}
!152 = !{!53, !6, i64 15840}
!153 = !{!16, !6, i64 848}
!154 = !{!53, !6, i64 15848}
!155 = !{!53, !6, i64 15856}
!156 = !{!53, !12, i64 15908}
!157 = !{!53, !12, i64 15984}
!158 = !{!53, !18, i64 15916}
!159 = !{!53, !11, i64 15921}
!160 = !{!53, !60, i64 15976}
!161 = !{!53, !6, i64 15968}
!162 = !{!53, !11, i64 15926}
!163 = !{!53, !12, i64 15928}
!164 = !{!53, !12, i64 15932}
!165 = !{!53, !12, i64 15892}
!166 = !{!53, !18, i64 15900}
!167 = !{!53, !11, i64 15896}
!168 = !{!53, !11, i64 16764}
!169 = !{!53, !12, i64 16796}
!170 = !{!53, !12, i64 16792}
!171 = distinct !{!171, !115}
!172 = !{!53, !12, i64 16368}
!173 = !{!53, !23, i64 16420}
!174 = !{!53, !60, i64 16416}
!175 = !{!53, !11, i64 213}
!176 = !{!53, !11, i64 214}
!177 = !{!53, !12, i64 16376}
!178 = !{!53, !12, i64 16380}
!179 = !{!53, !12, i64 16384}
!180 = !{!53, !12, i64 16388}
!181 = !{!53, !12, i64 16392}
!182 = !{!53, !11, i64 16426}
!183 = !{!53, !11, i64 16427}
!184 = !{!53, !12, i64 16372}
!185 = !{!53, !6, i64 16720}
!186 = !{!10, !11, i64 2}
!187 = !{!16, !11, i64 143}
!188 = !{!16, !19, i64 158}
!189 = distinct !{!189, !115}
!190 = !{!101, !7, i64 484}
!191 = distinct !{!191, !115}
!192 = distinct !{!192, !115}


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