; LLVM IR from Samson-Mano/EM_Propogation_simulation :: EM_Propogation_simulation/src/ImGui/implot.ll (ZN6ImPlot11SetupFinishEv)

; 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.ImPlotContext = type { %struct.ImPool.34, %struct.ImPool.36, ptr, ptr, ptr, ptr, ptr, %struct.ImPlotTicker, %struct.ImPlotAnnotationCollection, %struct.ImPlotTagCollection, i8, [3 x i8], %struct.ImPlotStyle, %struct.ImVector.6, %struct.ImVector.7, %struct.ImPlotColormapData, %struct.ImVector.10, %struct.tm, %struct.ImVector.42, %struct.ImVector.42, %struct.ImVector.10, i32, i32, %struct.ImPlotNextPlotData, %struct.ImPlotNextItemData, %struct.ImPlotInputMap, i8, %struct.ImGuiTextBuffer, ptr, %struct.ImPool.43, ptr, ptr }
%struct.ImPool.34 = type { %struct.ImVector.35, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.35 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.4 }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImPool.36 = type { %struct.ImVector.37, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.37 = type { i32, i32, ptr }
%struct.ImPlotTicker = type <{ %struct.ImVector.38, %struct.ImGuiTextBuffer, %struct.ImVec2, %struct.ImVec2, i32, [4 x i8] }>
%struct.ImVector.38 = type { i32, i32, ptr }
%struct.ImPlotAnnotationCollection = type <{ %struct.ImVector.39, %struct.ImGuiTextBuffer, i32, [4 x i8] }>
%struct.ImVector.39 = type { i32, i32, ptr }
%struct.ImPlotTagCollection = type <{ %struct.ImVector.40, %struct.ImGuiTextBuffer, i32, [4 x i8] }>
%struct.ImVector.40 = type { i32, i32, ptr }
%struct.ImPlotStyle = type <{ float, i32, float, float, float, float, float, float, float, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, [21 x %struct.ImVec4], i32, i8, i8, i8, i8 }>
%struct.ImVec4 = type { float, float, float, float }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImPlotColormapData = type <{ %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.10, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.10, %struct.ImGuiTextBuffer, %struct.ImVector.10, %struct.ImVector.41, %struct.ImGuiStorage, i32, [4 x i8] }>
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.41 = type { i32, i32, ptr }
%struct.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, ptr }
%struct.ImVector.42 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImPlotNextPlotData = type { [6 x i32], [6 x %struct.ImPlotRange], [6 x i8], [6 x i8], [6 x ptr], [6 x ptr] }
%struct.ImPlotRange = type { double, double }
%struct.ImPlotNextItemData = type { [5 x %struct.ImVec4], float, i32, float, float, float, float, float, float, float, i8, i8, i8, i8, i8, i8, i32 }
%struct.ImPlotInputMap = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float }
%struct.ImGuiTextBuffer = type { %struct.ImVector.24 }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImPool.43 = type { %struct.ImVector.44, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.44 = type { i32, i32, ptr }
%struct.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, ptr, %struct.ImVector.1, %struct.ImVector.1, i32, i32, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.3, %struct.ImGuiStorage, i32, %struct.ImVec2, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, ptr, i32, float, [140 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, %struct.ImGuiNextWindowData, %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImVector.12, %struct.ImVector.12, i32, %struct.ImVector.13, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, i32, i32, ptr, ptr, ptr, float, float, i8, %struct.ImVec2, %struct.ImVec2, float, i32, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.14, [16 x i8], i32, %struct.ImVector.15, ptr, i32, %struct.ImVector.16, %struct.ImPool, %struct.ImVector.18, %struct.ImVector.19, ptr, %struct.ImPool.20, %struct.ImVector.22, %struct.ImVector.23, i32, i32, float, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImGuiInputTextDeactivatedState, %struct.ImFont, i32, i32, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, float, float, i8, i8, float, float, float, float, i16, i16, %struct.ImVector.24, %struct.ImVector.9, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i8, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.26, %struct.ImChunkStream, %struct.ImChunkStream.27, %struct.ImVector.28, i32, [7 x ptr], i8, i32, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i8, i8, i8, i8, i8, i32, %struct.ImGuiMetricsConfig, %struct.ImGuiStackTool, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.24 }
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, float, float, float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, float, i8, i8, 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, [652 x i32], [652 x i8], [16 x float], ptr, %struct.ImVec2, [5 x i8], float, float, i32, i8, i8, i8, i8, i32, [652 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], i8, [5 x float], [5 x float], [5 x float], float, i8, i8, i8, i8, i16, %struct.ImVector }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector = 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, float, %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, %struct.ImVector.0, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [140 x i16], %struct.ImVector.5, %struct.ImVector.5 }
%struct.ImVector.5 = type { i32, i32, ptr }
%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.8 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = 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.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.17, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImPool.20 = type { %struct.ImVector.21, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, i32, i32, i32, [4 x i8], %struct.ImVector, %struct.ImVector.24, %struct.ImVector.24, 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.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.24 }
%struct.ImFont = type <{ %struct.ImVector.18, float, float, %struct.ImVector, %struct.ImVector.25, ptr, ptr, ptr, i16, i16, i16, i16, float, float, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.24 }
%struct.ImChunkStream.27 = type { %struct.ImVector.24 }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.10, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiStackTool = type { i32, i32, i32, %struct.ImVector.29, i8, float }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImGuiWindow = type <{ ptr, ptr, i32, i32, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, 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, i16, i32, i8, i8, i8, i8, i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.9, %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.45, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i32, i32, i32, i8, [3 x i8] }>
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, %struct.ImVec2, i32, i16, i16, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.2, ptr, ptr, i32, i32, i32, float, float, %struct.ImVector.18, %struct.ImVector.18 }
%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.45 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.30, %struct.ImVector, %struct.ImVector.31, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.32, %struct.ImVector.33, %struct.ImVector.0, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImVector.32 = type { i32, i32, ptr }
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.19 }
%struct.ImPlotPlot = type <{ i32, i32, i32, i32, i32, [4 x i8], [6 x %struct.ImPlotAxis], %struct.ImGuiTextBuffer, %struct.ImPlotItemGroup, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i8] }>
%struct.ImPlotAxis = type <{ i32, i32, i32, [4 x i8], %struct.ImPlotRange, i32, i32, %struct.ImPlotRange, ptr, %struct.ImPlotRange, %struct.ImPlotRange, %struct.ImPlotTicker, ptr, ptr, [16 x i8], ptr, ptr, ptr, i32, [4 x i8], %struct.ImPlotTime, %struct.ImPlotTime, ptr, ptr, ptr, float, float, double, double, double, float, float, %struct.ImRect, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, [4 x i8] }>
%struct.ImPlotTime = type <{ i64, i32, [4 x i8] }>
%struct.ImPlotItemGroup = type <{ i32, [4 x i8], %struct.ImPlotLegend, %struct.ImPool.46, i32, [4 x i8] }>
%struct.ImPlotLegend = type <{ i32, i32, i32, i32, %struct.ImVector.10, %struct.ImGuiTextBuffer, %struct.ImRect, i8, i8, i8, [5 x i8] }>
%struct.ImPool.46 = type { %struct.ImVector.47, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.47 = type { i32, i32, ptr }
%struct.ImPlotTick = type <{ double, float, %struct.ImVec2, i32, i8, i8, [2 x i8], i32, i32, [4 x i8] }>

@GImPlot = external dso_local global ptr, align 8
@GImGui = external global ptr, align 8
@.str.78 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [115 x i8], align 1
@__PRETTY_FUNCTION__._ZN6ImPlot11SetupFinishEv = external hidden unnamed_addr constant [27 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [81 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: mustprogress uwtable
declare dso_local void @_ZN6ImPlot15AddTextVerticalEP10ImDrawList6ImVec2jPKcS4_(ptr noundef, <2 x float>, i32 noundef, ptr noundef, ptr noundef) #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)) #4

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

declare noundef float @_ZN5ImGui17GetTextLineHeightEv() #6

declare <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef, i32 noundef) #7

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN6ImPlot14CalcLegendSizeER15ImPlotItemGroupRK6ImVec2S4_b(ptr noundef nonnull align 8 dereferenceable(124), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i1 noundef zeroext) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK15ImPlotItemGroup14GetLegendCountEv(ptr noundef nonnull align 8 dereferenceable(124)) #8 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN6ImPlotL16GetStyleColorU32Ei(i32 noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9ImHasFlagIi18ImPlotLegendFlags_EbT_T0_(i32 noundef, i32 noundef) #7

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImPlot15Locator_DefaultER12ImPlotTickerRK11ImPlotRangefbPFidPciPvES6_(ptr noundef nonnull align 8 dereferenceable(52), ptr noundef nonnull align 8 dereferenceable(16), float noundef, i1 noundef zeroext, ptr noundef, ptr noundef) #8

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis13IsAutoFittingEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis8HasLabelEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis12HasGridLinesEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis13HasTickLabelsEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10ImPlotAxis9SetAspectEd(ptr noundef nonnull align 8 dereferenceable(372), double noundef) #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK10ImPlotAxis9GetAspectEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9ImHasFlagIi12ImPlotFlags_EbT_T0_(i32 noundef, i32 noundef) #7

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK10ImPlotPlot12GetAxisLabelERK10ImPlotAxis(ptr noundef nonnull align 8 dereferenceable(2533), ptr noundef nonnull align 8 dereferenceable(372)) #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotPlot8HasTitleEv(ptr noundef nonnull align 8 dereferenceable(2533)) #10 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 @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16)) #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis10IsOppositeEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6ImPlot11UpdateInputER10ImPlotPlot(ptr noundef nonnull align 8 dereferenceable(2533)) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis13IsInputLockedEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN6ImPlotL17Formatter_DefaultEdPciPv(double noundef, ptr noundef, i32 noundef, ptr noundef) #10

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6ImPlot11SetupFinishEv() #3 {
  %1 = alloca ptr, align 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 ptr, align 8
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %struct.ImRect, align 4
  %14 = alloca %struct.ImVec2, align 4
  %15 = alloca %struct.ImVec2, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i8, align 1
  %18 = alloca %struct.ImVec2, align 4
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca %struct.ImVec2, align 4
  %28 = alloca %struct.ImVec2, align 4
  %29 = alloca float, align 4
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca float, align 4
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca %struct.ImRect, align 4
  %36 = alloca %struct.ImVec2, align 4
  %37 = alloca %struct.ImVec2, align 4
  %38 = alloca %struct.ImVec2, align 4
  %39 = alloca %struct.ImVec2, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca %struct.ImRect, align 4
  %43 = alloca %struct.ImVec2, align 4
  %44 = alloca %struct.ImVec2, align 4
  %45 = alloca i32, align 4
  %46 = alloca ptr, align 8
  %47 = alloca %struct.ImRect, align 4
  %48 = alloca %struct.ImVec2, align 4
  %49 = alloca %struct.ImVec2, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca i32, align 4
  %56 = alloca float, align 4
  %57 = alloca %struct.ImVec2, align 4
  %58 = alloca %struct.ImVec2, align 4
  %59 = alloca i32, align 4
  %60 = alloca ptr, align 8
  %61 = alloca i32, align 4
  %62 = alloca ptr, align 8
  %63 = alloca i32, align 4
  %64 = alloca ptr, align 8
  %65 = alloca i32, align 4
  %66 = alloca ptr, align 8
  %67 = alloca i32, align 4
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca i8, align 1
  %71 = alloca ptr, align 8
  %72 = alloca %struct.ImVec2, align 4
  %73 = alloca float, align 4
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca %struct.ImVec2, align 4
  %76 = alloca i32, align 4
  %77 = alloca ptr, align 8
  %78 = alloca float, align 4
  %79 = alloca %struct.ImVec2, align 4
  %80 = alloca i32, align 4
  %81 = alloca ptr, align 8
  %82 = alloca ptr, align 8
  %83 = alloca i8, align 1
  %84 = alloca ptr, align 8
  %85 = alloca %struct.ImVec2, align 4
  %86 = alloca float, align 4
  %87 = alloca %struct.ImVec2, align 4
  %88 = alloca %struct.ImVec2, align 4
  %89 = alloca %struct.ImVec2, align 4
  %90 = alloca i32, align 4
  %91 = alloca ptr, align 8
  %92 = alloca float, align 4
  %93 = alloca %struct.ImVec2, align 4
  %94 = load ptr, ptr @GImPlot, align 8, !tbaa !5
  %95 = icmp ne ptr %94, null
  br i1 %95, label %96, label %97

96:                                               ; preds = %0
  br label %97

97:                                               ; preds = %96, %0
  %98 = phi i1 [ false, %0 ], [ true, %96 ]
  br i1 %98, label %99, label %100

99:                                               ; preds = %97
  br label %102

100:                                              ; preds = %97
  call void @__assert_fail(ptr noundef @.str.144, ptr noundef @.str.78, i32 noundef 2462, ptr noundef @__PRETTY_FUNCTION__._ZN6ImPlot11SetupFinishEv) #11
  unreachable

101:                                              ; No predecessors!
  br label %102

102:                                              ; preds = %101, %99
  call void @llvm.lifetime.start.p0(i64 8, ptr %1) #12
  %103 = load ptr, ptr @GImPlot, align 8, !tbaa !5
  store ptr %103, ptr %1, align 8, !tbaa !5
  %104 = load ptr, ptr %1, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.ImPlotContext, ptr %104, i32 0, i32 2
  %106 = load ptr, ptr %105, align 8, !tbaa !9
  %107 = icmp ne ptr %106, null
  br i1 %107, label %108, label %109

108:                                              ; preds = %102
  br label %109

109:                                              ; preds = %108, %102
  %110 = phi i1 [ false, %102 ], [ true, %108 ]
  br i1 %110, label %111, label %112

111:                                              ; preds = %109
  br label %114

112:                                              ; preds = %109
  call void @__assert_fail(ptr noundef @.str.148, ptr noundef @.str.78, i32 noundef 2464, ptr noundef @__PRETTY_FUNCTION__._ZN6ImPlot11SetupFinishEv) #11
  unreachable

113:                                              ; No predecessors!
  br label %114

114:                                              ; preds = %113, %111
  call void @llvm.lifetime.start.p0(i64 8, ptr %2) #12
  %115 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %115, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #12
  %116 = load ptr, ptr %2, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.ImGuiContext, ptr %116, i32 0, i32 29
  %118 = load ptr, ptr %117, align 8, !tbaa !44
  %119 = getelementptr inbounds %struct.ImGuiWindow, ptr %118, i32 0, i32 80
  %120 = load ptr, ptr %119, align 8, !tbaa !100
  store ptr %120, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #12
  %121 = load ptr, ptr %2, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.ImGuiContext, ptr %121, i32 0, i32 3
  store ptr %122, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #12
  %123 = load ptr, ptr %1, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.ImPlotContext, ptr %123, i32 0, i32 2
  %125 = load ptr, ptr %124, align 8, !tbaa !9
  store ptr %125, ptr %5, align 8, !tbaa !5
  %126 = load ptr, ptr %5, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.ImPlotPlot, ptr %126, i32 0, i32 20
  store i8 1, ptr %127, align 2, !tbaa !114
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #12
  store i32 0, ptr %6, align 4, !tbaa !120
  br label %128

128:                                              ; preds = %188, %114
  %129 = load i32, ptr %6, align 4, !tbaa !120
  %130 = icmp slt i32 %129, 6
  br i1 %130, label %132, label %131

131:                                              ; preds = %128
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #12
  br label %191

132:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #12
  %133 = load ptr, ptr %5, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.ImPlotPlot, ptr %133, i32 0, i32 6
  %135 = load i32, ptr %6, align 4, !tbaa !120
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds [6 x %struct.ImPlotAxis], ptr %134, i64 0, i64 %136
  store ptr %137, ptr %7, align 8, !tbaa !5
  %138 = load ptr, ptr %7, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.ImPlotAxis, ptr %138, i32 0, i32 42
  %140 = load i8, ptr %139, align 4, !tbaa !121, !range !125, !noundef !126
  %141 = trunc i8 %140 to i1
  br i1 %141, label %142, label %157

142:                                              ; preds = %132
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN10ImPlotAxis9ConstrainEv(ptr noundef nonnull align 8 dereferenceable(372) %143)
  %144 = load ptr, ptr %5, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.ImPlotPlot, ptr %144, i32 0, i32 19
  %146 = load i8, ptr %145, align 1, !tbaa !127, !range !125, !noundef !126
  %147 = trunc i8 %146 to i1
  br i1 %147, label %156, label %148

148:                                              ; preds = %142
  %149 = load ptr, ptr %7, align 8, !tbaa !5
  %150 = call noundef zeroext i1 @_ZNK10ImPlotAxis10CanInitFitEv(ptr noundef nonnull align 8 dereferenceable(372) %149)
  br i1 %150, label %151, label %156

151:                                              ; preds = %148
  %152 = load ptr, ptr %7, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.ImPlotAxis, ptr %152, i32 0, i32 44
  store i8 1, ptr %153, align 2, !tbaa !128
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.ImPlotPlot, ptr %154, i32 0, i32 21
  store i8 1, ptr %155, align 1, !tbaa !129
  br label %156

156:                                              ; preds = %151, %148, %142
  br label %157

157:                                              ; preds = %156, %132
  %158 = load ptr, ptr %7, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.ImPlotAxis, ptr %158, i32 0, i32 12
  %160 = load ptr, ptr %159, align 8, !tbaa !130
  %161 = icmp eq ptr %160, null
  br i1 %161, label %162, label %179

162:                                              ; preds = %157
  %163 = load ptr, ptr %7, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.ImPlotAxis, ptr %163, i32 0, i32 12
  store ptr @_ZN6ImPlotL17Formatter_DefaultEdPciPv, ptr %164, align 8, !tbaa !130
  %165 = load ptr, ptr %7, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.ImPlotAxis, ptr %165, i32 0, i32 46
  %167 = load i8, ptr %166, align 8, !tbaa !131, !range !125, !noundef !126
  %168 = trunc i8 %167 to i1
  br i1 %168, label %169, label %175

169:                                              ; preds = %162
  %170 = load ptr, ptr %7, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.ImPlotAxis, ptr %170, i32 0, i32 14
  %172 = getelementptr inbounds [16 x i8], ptr %171, i64 0, i64 0
  %173 = load ptr, ptr %7, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.ImPlotAxis, ptr %173, i32 0, i32 13
  store ptr %172, ptr %174, align 8, !tbaa !132
  br label %178

175:                                              ; preds = %162
  %176 = load ptr, ptr %7, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.ImPlotAxis, ptr %176, i32 0, i32 13
  store ptr @.str.133, ptr %177, align 8, !tbaa !132
  br label %178

178:                                              ; preds = %175, %169
  br label %179

179:                                              ; preds = %178, %157
  %180 = load ptr, ptr %7, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.ImPlotAxis, ptr %180, i32 0, i32 15
  %182 = load ptr, ptr %181, align 8, !tbaa !133
  %183 = icmp eq ptr %182, null
  br i1 %183, label %184, label %187

184:                                              ; preds = %179
  %185 = load ptr, ptr %7, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.ImPlotAxis, ptr %185, i32 0, i32 15
  store ptr @_ZN6ImPlot15Locator_DefaultER12ImPlotTickerRK11ImPlotRangefbPFidPciPvES6_, ptr %186, align 8, !tbaa !133
  br label %187

187:                                              ; preds = %184, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #12
  br label %188

188:                                              ; preds = %187
  %189 = load i32, ptr %6, align 4, !tbaa !120
  %190 = add nsw i32 %189, 1
  store i32 %190, ptr %6, align 4, !tbaa !120
  br label %128, !llvm.loop !134

191:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #12
  %192 = load ptr, ptr %5, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.ImPlotPlot, ptr %192, i32 0, i32 1
  %194 = load i32, ptr %193, align 4, !tbaa !136
  %195 = call noundef zeroext i1 @_ZL9ImHasFlagIi12ImPlotFlags_EbT_T0_(i32 noundef %194, i32 noundef 256)
  %196 = zext i1 %195 to i8
  store i8 %196, ptr %8, align 1, !tbaa !137
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #12
  store i32 0, ptr %9, align 4, !tbaa !120
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #12
  store i32 3, ptr %10, align 4, !tbaa !120
  br label %197

197:                                              ; preds = %288, %191
  %198 = load i32, ptr %9, align 4, !tbaa !120
  %199 = icmp slt i32 %198, 3
  br i1 %199, label %203, label %200

200:                                              ; preds = %197
  %201 = load i32, ptr %10, align 4, !tbaa !120
  %202 = icmp slt i32 %201, 6
  br label %203

203:                                              ; preds = %200, %197
  %204 = phi i1 [ true, %197 ], [ %202, %200 ]
  br i1 %204, label %206, label %205

205:                                              ; preds = %203
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #12
  br label %293

206:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #12
  %207 = load ptr, ptr %5, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.ImPlotPlot, ptr %207, i32 0, i32 6
  %209 = load i32, ptr %9, align 4, !tbaa !120
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds [6 x %struct.ImPlotAxis], ptr %208, i64 0, i64 %210
  store ptr %211, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #12
  %212 = load ptr, ptr %5, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.ImPlotPlot, ptr %212, i32 0, i32 6
  %214 = load i32, ptr %10, align 4, !tbaa !120
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds [6 x %struct.ImPlotAxis], ptr %213, i64 0, i64 %215
  store ptr %216, ptr %12, align 8, !tbaa !5
  %217 = load ptr, ptr %11, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.ImPlotAxis, ptr %217, i32 0, i32 42
  %219 = load i8, ptr %218, align 4, !tbaa !121, !range !125, !noundef !126
  %220 = trunc i8 %219 to i1
  br i1 %220, label %221, label %245

221:                                              ; preds = %206
  %222 = load ptr, ptr %12, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.ImPlotAxis, ptr %222, i32 0, i32 42
  %224 = load i8, ptr %223, align 4, !tbaa !121, !range !125, !noundef !126
  %225 = trunc i8 %224 to i1
  br i1 %225, label %226, label %245

226:                                              ; preds = %221
  %227 = load ptr, ptr %11, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.ImPlotAxis, ptr %227, i32 0, i32 8
  %229 = load ptr, ptr %228, align 8, !tbaa !138
  %230 = icmp eq ptr %229, null
  br i1 %230, label %231, label %235

231:                                              ; preds = %226
  %232 = load ptr, ptr %12, align 8, !tbaa !5
  %233 = load ptr, ptr %11, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.ImPlotAxis, ptr %233, i32 0, i32 8
  store ptr %232, ptr %234, align 8, !tbaa !138
  br label %235

235:                                              ; preds = %231, %226
  %236 = load ptr, ptr %12, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.ImPlotAxis, ptr %236, i32 0, i32 8
  %238 = load ptr, ptr %237, align 8, !tbaa !138
  %239 = icmp eq ptr %238, null
  br i1 %239, label %240, label %244

240:                                              ; preds = %235
  %241 = load ptr, ptr %11, align 8, !tbaa !5
  %242 = load ptr, ptr %12, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.ImPlotAxis, ptr %242, i32 0, i32 8
  store ptr %241, ptr %243, align 8, !tbaa !138
  br label %244

244:                                              ; preds = %240, %235
  br label %287

245:                                              ; preds = %221, %206
  %246 = load ptr, ptr %11, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.ImPlotAxis, ptr %246, i32 0, i32 42
  %248 = load i8, ptr %247, align 4, !tbaa !121, !range !125, !noundef !126
  %249 = trunc i8 %248 to i1
  br i1 %249, label %250, label %265

250:                                              ; preds = %245
  %251 = load ptr, ptr %11, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.ImPlotAxis, ptr %251, i32 0, i32 8
  %253 = load ptr, ptr %252, align 8, !tbaa !138
  %254 = icmp eq ptr %253, null
  br i1 %254, label %255, label %264

255:                                              ; preds = %250
  %256 = load i8, ptr %8, align 1, !tbaa !137, !range !125, !noundef !126
  %257 = trunc i8 %256 to i1
  br i1 %257, label %264, label %258

258:                                              ; preds = %255
  %259 = load ptr, ptr %5, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.ImPlotPlot, ptr %259, i32 0, i32 6
  %261 = getelementptr inbounds [6 x %struct.ImPlotAxis], ptr %260, i64 0, i64 3
  %262 = load ptr, ptr %11, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.ImPlotAxis, ptr %262, i32 0, i32 8
  store ptr %261, ptr %263, align 8, !tbaa !138
  br label %264

264:                                              ; preds = %258, %255, %250
  br label %286

265:                                              ; preds = %245
  %266 = load ptr, ptr %12, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.ImPlotAxis, ptr %266, i32 0, i32 42
  %268 = load i8, ptr %267, align 4, !tbaa !121, !range !125, !noundef !126
  %269 = trunc i8 %268 to i1
  br i1 %269, label %270, label %285

270:                                              ; preds = %265
  %271 = load ptr, ptr %12, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.ImPlotAxis, ptr %271, i32 0, i32 8
  %273 = load ptr, ptr %272, align 8, !tbaa !138
  %274 = icmp eq ptr %273, null
  br i1 %274, label %275, label %284

275:                                              ; preds = %270
  %276 = load i8, ptr %8, align 1, !tbaa !137, !range !125, !noundef !126
  %277 = trunc i8 %276 to i1
  br i1 %277, label %284, label %278

278:                                              ; preds = %275
  %279 = load ptr, ptr %5, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.ImPlotPlot, ptr %279, i32 0, i32 6
  %281 = getelementptr inbounds [6 x %struct.ImPlotAxis], ptr %280, i64 0, i64 0
  %282 = load ptr, ptr %12, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.ImPlotAxis, ptr %282, i32 0, i32 8
  store ptr %281, ptr %283, align 8, !tbaa !138
  br label %284

284:                                              ; preds = %278, %275, %270
  br label %285

285:                                              ; preds = %284, %265
  br label %286

286:                                              ; preds = %285, %264
  br label %287

287:                                              ; preds = %286, %244
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #12
  br label %288

288:                                              ; preds = %287
  %289 = load i32, ptr %9, align 4, !tbaa !120
  %290 = add nsw i32 %289, 1
  store i32 %290, ptr %9, align 4, !tbaa !120
  %291 = load i32, ptr %10, align 4, !tbaa !120
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr %10, align 4, !tbaa !120
  br label %197, !llvm.loop !139

293:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #12
  %294 = load ptr, ptr %5, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.ImPlotPlot, ptr %294, i32 0, i32 11
  %296 = getelementptr inbounds %struct.ImRect, ptr %295, i32 0, i32 0
  %297 = load ptr, ptr %1, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.ImPlotContext, ptr %297, i32 0, i32 12
  %299 = getelementptr inbounds %struct.ImPlotStyle, ptr %298, i32 0, i32 17
  %300 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %296, ptr noundef nonnull align 4 dereferenceable(8) %299)
  store <2 x float> %300, ptr %14, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #12
  %301 = load ptr, ptr %5, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.ImPlotPlot, ptr %301, i32 0, i32 11
  %303 = getelementptr inbounds %struct.ImRect, ptr %302, i32 0, i32 1
  %304 = load ptr, ptr %1, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.ImPlotContext, ptr %304, i32 0, i32 12
  %306 = getelementptr inbounds %struct.ImPlotStyle, ptr %305, i32 0, i32 17
  %307 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %303, ptr noundef nonnull align 4 dereferenceable(8) %306)
  store <2 x float> %307, ptr %15, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(8) %14, ptr noundef nonnull align 4 dereferenceable(8) %15)
  %308 = load ptr, ptr %5, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.ImPlotPlot, ptr %308, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %309, ptr align 4 %13, i64 16, i1 false), !tbaa.struct !140
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #12
  %310 = load ptr, ptr %5, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.ImPlotPlot, ptr %310, i32 0, i32 11
  %312 = load ptr, ptr %5, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.ImPlotPlot, ptr %312, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %313, ptr align 8 %311, i64 16, i1 false), !tbaa.struct !140
  %314 = load ptr, ptr %5, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.ImPlotPlot, ptr %314, i32 0, i32 1
  %316 = load i32, ptr %315, align 4, !tbaa !136
  %317 = call noundef zeroext i1 @_ZL9ImHasFlagIi12ImPlotFlags_EbT_T0_(i32 noundef %316, i32 noundef 2)
  br i1 %317, label %591, label %318

318:                                              ; preds = %293
  %319 = load ptr, ptr %5, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.ImPlotPlot, ptr %319, i32 0, i32 8
  %321 = call noundef i32 @_ZNK15ImPlotItemGroup14GetLegendCountEv(ptr noundef nonnull align 8 dereferenceable(124) %320)
  %322 = icmp sgt i32 %321, 0
  br i1 %322, label %323, label %591

323:                                              ; preds = %318
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.ImPlotPlot, ptr %324, i32 0, i32 8
  %326 = getelementptr inbounds %struct.ImPlotItemGroup, ptr %325, i32 0, i32 2
  %327 = getelementptr inbounds %struct.ImPlotLegend, ptr %326, i32 0, i32 0
  %328 = load i32, ptr %327, align 8, !tbaa !142
  %329 = call noundef zeroext i1 @_ZL9ImHasFlagIi18ImPlotLegendFlags_EbT_T0_(i32 noundef %328, i32 noundef 16)
  br i1 %329, label %330, label %591

330:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #12
  %331 = load ptr, ptr %5, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.ImPlotPlot, ptr %331, i32 0, i32 8
  %333 = getelementptr inbounds %struct.ImPlotItemGroup, ptr %332, i32 0, i32 2
  store ptr %333, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #12
  %334 = load ptr, ptr %16, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.ImPlotLegend, ptr %334, i32 0, i32 0
  %336 = load i32, ptr %335, align 8, !tbaa !143
  %337 = call noundef zeroext i1 @_ZL9ImHasFlagIi18ImPlotLegendFlags_EbT_T0_(i32 noundef %336, i32 noundef 32)
  %338 = zext i1 %337 to i8
  store i8 %338, ptr %17, align 1, !tbaa !137
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #12
  %339 = load ptr, ptr %5, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.ImPlotPlot, ptr %339, i32 0, i32 8
  %341 = load ptr, ptr %1, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImPlotContext, ptr %341, i32 0, i32 12
  %343 = getelementptr inbounds %struct.ImPlotStyle, ptr %342, i32 0, i32 20
  %344 = load ptr, ptr %1, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.ImPlotContext, ptr %344, i32 0, i32 12
  %346 = getelementptr inbounds %struct.ImPlotStyle, ptr %345, i32 0, i32 21
  %347 = load i8, ptr %17, align 1, !tbaa !137, !range !125, !noundef !126
  %348 = trunc i8 %347 to i1
  %349 = xor i1 %348, true
  %350 = call <2 x float> @_ZN6ImPlot14CalcLegendSizeER15ImPlotItemGroupRK6ImVec2S4_b(ptr noundef nonnull align 8 dereferenceable(124) %340, ptr noundef nonnull align 4 dereferenceable(8) %343, ptr noundef nonnull align 4 dereferenceable(8) %346, i1 noundef zeroext %349)
  store <2 x float> %350, ptr %18, align 4
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #12
  %351 = load ptr, ptr %16, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.ImPlotLegend, ptr %351, i32 0, i32 2
  %353 = load i32, ptr %352, align 8, !tbaa !144
  %354 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %353, i32 noundef 4)
  br i1 %354, label %355, label %361

355:                                              ; preds = %330
  %356 = load ptr, ptr %16, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.ImPlotLegend, ptr %356, i32 0, i32 2
  %358 = load i32, ptr %357, align 8, !tbaa !144
  %359 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %358, i32 noundef 8)
  %360 = xor i1 %359, true
  br label %361

361:                                              ; preds = %355, %330
  %362 = phi i1 [ false, %330 ], [ %360, %355 ]
  %363 = zext i1 %362 to i8
  store i8 %363, ptr %19, align 1, !tbaa !137
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #12
  %364 = load ptr, ptr %16, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.ImPlotLegend, ptr %364, i32 0, i32 2
  %366 = load i32, ptr %365, align 8, !tbaa !144
  %367 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %366, i32 noundef 8)
  br i1 %367, label %368, label %374

368:                                              ; preds = %361
  %369 = load ptr, ptr %16, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.ImPlotLegend, ptr %369, i32 0, i32 2
  %371 = load i32, ptr %370, align 8, !tbaa !144
  %372 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %371, i32 noundef 4)
  %373 = xor i1 %372, true
  br label %374

374:                                              ; preds = %368, %361
  %375 = phi i1 [ false, %361 ], [ %373, %368 ]
  %376 = zext i1 %375 to i8
  store i8 %376, ptr %20, align 1, !tbaa !137
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #12
  %377 = load ptr, ptr %16, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.ImPlotLegend, ptr %377, i32 0, i32 2
  %379 = load i32, ptr %378, align 8, !tbaa !144
  %380 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %379, i32 noundef 1)
  br i1 %380, label %381, label %387

381:                                              ; preds = %374
  %382 = load ptr, ptr %16, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.ImPlotLegend, ptr %382, i32 0, i32 2
  %384 = load i32, ptr %383, align 8, !tbaa !144
  %385 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %384, i32 noundef 2)
  %386 = xor i1 %385, true
  br label %387

387:                                              ; preds = %381, %374
  %388 = phi i1 [ false, %374 ], [ %386, %381 ]
  %389 = zext i1 %388 to i8
  store i8 %389, ptr %21, align 1, !tbaa !137
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #12
  %390 = load ptr, ptr %16, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.ImPlotLegend, ptr %390, i32 0, i32 2
  %392 = load i32, ptr %391, align 8, !tbaa !144
  %393 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %392, i32 noundef 2)
  br i1 %393, label %394, label %400

394:                                              ; preds = %387
  %395 = load ptr, ptr %16, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.ImPlotLegend, ptr %395, i32 0, i32 2
  %397 = load i32, ptr %396, align 8, !tbaa !144
  %398 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %397, i32 noundef 1)
  %399 = xor i1 %398, true
  br label %400

400:                                              ; preds = %394, %387
  %401 = phi i1 [ false, %387 ], [ %399, %394 ]
  %402 = zext i1 %401 to i8
  store i8 %402, ptr %22, align 1, !tbaa !137
  %403 = load i8, ptr %19, align 1, !tbaa !137, !range !125, !noundef !126
  %404 = trunc i8 %403 to i1
  br i1 %404, label %405, label %408

405:                                              ; preds = %400
  %406 = load i8, ptr %17, align 1, !tbaa !137, !range !125, !noundef !126
  %407 = trunc i8 %406 to i1
  br i1 %407, label %408, label %420

408:                                              ; preds = %405, %400
  %409 = load i8, ptr %19, align 1, !tbaa !137, !range !125, !noundef !126
  %410 = trunc i8 %409 to i1
  br i1 %410, label %411, label %449

411:                                              ; preds = %408
  %412 = load i8, ptr %17, align 1, !tbaa !137, !range !125, !noundef !126
  %413 = trunc i8 %412 to i1
  br i1 %413, label %414, label %449

414:                                              ; preds = %411
  %415 = load i8, ptr %21, align 1, !tbaa !137, !range !125, !noundef !126
  %416 = trunc i8 %415 to i1
  br i1 %416, label %449, label %417

417:                                              ; preds = %414
  %418 = load i8, ptr %22, align 1, !tbaa !137, !range !125, !noundef !126
  %419 = trunc i8 %418 to i1
  br i1 %419, label %449, label %420

420:                                              ; preds = %417, %405
  %421 = getelementptr inbounds %struct.ImVec2, ptr %18, i32 0, i32 0
  %422 = load float, ptr %421, align 4, !tbaa !145
  %423 = load ptr, ptr %1, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.ImPlotContext, ptr %423, i32 0, i32 12
  %425 = getelementptr inbounds %struct.ImPlotStyle, ptr %424, i32 0, i32 19
  %426 = getelementptr inbounds %struct.ImVec2, ptr %425, i32 0, i32 0
  %427 = load float, ptr %426, align 4, !tbaa !146
  %428 = fadd float %422, %427
  %429 = load ptr, ptr %5, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.ImPlotPlot, ptr %429, i32 0, i32 12
  %431 = getelementptr inbounds %struct.ImRect, ptr %430, i32 0, i32 0
  %432 = getelementptr inbounds %struct.ImVec2, ptr %431, i32 0, i32 0
  %433 = load float, ptr %432, align 8, !tbaa !147
  %434 = fadd float %433, %428
  store float %434, ptr %432, align 8, !tbaa !147
  %435 = getelementptr inbounds %struct.ImVec2, ptr %18, i32 0, i32 0
  %436 = load float, ptr %435, align 4, !tbaa !145
  %437 = load ptr, ptr %1, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.ImPlotContext, ptr %437, i32 0, i32 12
  %439 = getelementptr inbounds %struct.ImPlotStyle, ptr %438, i32 0, i32 17
  %440 = getelementptr inbounds %struct.ImVec2, ptr %439, i32 0, i32 0
  %441 = load float, ptr %440, align 4, !tbaa !148
  %442 = fadd float %436, %441
  %443 = load ptr, ptr %5, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.ImPlotPlot, ptr %443, i32 0, i32 14
  %445 = getelementptr inbounds %struct.ImRect, ptr %444, i32 0, i32 0
  %446 = getelementptr inbounds %struct.ImVec2, ptr %445, i32 0, i32 0
  %447 = load float, ptr %446, align 8, !tbaa !149
  %448 = fadd float %447, %442
  store float %448, ptr %446, align 8, !tbaa !149
  br label %449

449:                                              ; preds = %420, %417, %414, %411, %408
  %450 = load i8, ptr %20, align 1, !tbaa !137, !range !125, !noundef !126
  %451 = trunc i8 %450 to i1
  br i1 %451, label %452, label %455

452:                                              ; preds = %449
  %453 = load i8, ptr %17, align 1, !tbaa !137, !range !125, !noundef !126
  %454 = trunc i8 %453 to i1
  br i1 %454, label %455, label %467

455:                                              ; preds = %452, %449
  %456 = load i8, ptr %20, align 1, !tbaa !137, !range !125, !noundef !126
  %457 = trunc i8 %456 to i1
  br i1 %457, label %458, label %496

458:                                              ; preds = %455
  %459 = load i8, ptr %17, align 1, !tbaa !137, !range !125, !noundef !126
  %460 = trunc i8 %459 to i1
  br i1 %460, label %461, label %496

461:                                              ; preds = %458
  %462 = load i8, ptr %21, align 1, !tbaa !137, !range !125, !noundef !126
  %463 = trunc i8 %462 to i1
  br i1 %463, label %496, label %464

464:                                              ; preds = %461
  %465 = load i8, ptr %22, align 1, !tbaa !137, !range !125, !noundef !126
  %466 = trunc i8 %465 to i1
  br i1 %466, label %496, label %467

467:                                              ; preds = %464, %452
  %468 = getelementptr inbounds %struct.ImVec2, ptr %18, i32 0, i32 0
  %469 = load float, ptr %468, align 4, !tbaa !145
  %470 = load ptr, ptr %1, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.ImPlotContext, ptr %470, i32 0, i32 12
  %472 = getelementptr inbounds %struct.ImPlotStyle, ptr %471, i32 0, i32 19
  %473 = getelementptr inbounds %struct.ImVec2, ptr %472, i32 0, i32 0
  %474 = load float, ptr %473, align 4, !tbaa !146
  %475 = fadd float %469, %474
  %476 = load ptr, ptr %5, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.ImPlotPlot, ptr %476, i32 0, i32 12
  %478 = getelementptr inbounds %struct.ImRect, ptr %477, i32 0, i32 1
  %479 = getelementptr inbounds %struct.ImVec2, ptr %478, i32 0, i32 0
  %480 = load float, ptr %479, align 8, !tbaa !150
  %481 = fsub float %480, %475
  store float %481, ptr %479, align 8, !tbaa !150
  %482 = getelementptr inbounds %struct.ImVec2, ptr %18, i32 0, i32 0
  %483 = load float, ptr %482, align 4, !tbaa !145
  %484 = load ptr, ptr %1, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.ImPlotContext, ptr %484, i32 0, i32 12
  %486 = getelementptr inbounds %struct.ImPlotStyle, ptr %485, i32 0, i32 17
  %487 = getelementptr inbounds %struct.ImVec2, ptr %486, i32 0, i32 0
  %488 = load float, ptr %487, align 4, !tbaa !148
  %489 = fadd float %483, %488
  %490 = load ptr, ptr %5, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.ImPlotPlot, ptr %490, i32 0, i32 14
  %492 = getelementptr inbounds %struct.ImRect, ptr %491, i32 0, i32 1
  %493 = getelementptr inbounds %struct.ImVec2, ptr %492, i32 0, i32 0
  %494 = load float, ptr %493, align 8, !tbaa !151
  %495 = fsub float %494, %489
  store float %495, ptr %493, align 8, !tbaa !151
  br label %496

496:                                              ; preds = %467, %464, %461, %458, %455
  %497 = load i8, ptr %21, align 1, !tbaa !137, !range !125, !noundef !126
  %498 = trunc i8 %497 to i1
  br i1 %498, label %499, label %502

499:                                              ; preds = %496
  %500 = load i8, ptr %17, align 1, !tbaa !137, !range !125, !noundef !126
  %501 = trunc i8 %500 to i1
  br i1 %501, label %514, label %502

502:                                              ; preds = %499, %496
  %503 = load i8, ptr %21, align 1, !tbaa !137, !range !125, !noundef !126
  %504 = trunc i8 %503 to i1
  br i1 %504, label %505, label %543

505:                                              ; preds = %502
  %506 = load i8, ptr %17, align 1, !tbaa !137, !range !125, !noundef !126
  %507 = trunc i8 %506 to i1
  br i1 %507, label %543, label %508

508:                                              ; preds = %505
  %509 = load i8, ptr %19, align 1, !tbaa !137, !range !125, !noundef !126
  %510 = trunc i8 %509 to i1
  br i1 %510, label %543, label %511

511:                                              ; preds = %508
  %512 = load i8, ptr %20, align 1, !tbaa !137, !range !125, !noundef !126
  %513 = trunc i8 %512 to i1
  br i1 %513, label %543, label %514

514:                                              ; preds = %511, %499
  %515 = getelementptr inbounds %struct.ImVec2, ptr %18, i32 0, i32 1
  %516 = load float, ptr %515, align 4, !tbaa !152
  %517 = load ptr, ptr %1, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.ImPlotContext, ptr %517, i32 0, i32 12
  %519 = getelementptr inbounds %struct.ImPlotStyle, ptr %518, i32 0, i32 19
  %520 = getelementptr inbounds %struct.ImVec2, ptr %519, i32 0, i32 1
  %521 = load float, ptr %520, align 4, !tbaa !153
  %522 = fadd float %516, %521
  %523 = load ptr, ptr %5, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.ImPlotPlot, ptr %523, i32 0, i32 12
  %525 = getelementptr inbounds %struct.ImRect, ptr %524, i32 0, i32 0
  %526 = getelementptr inbounds %struct.ImVec2, ptr %525, i32 0, i32 1
  %527 = load float, ptr %526, align 4, !tbaa !154
  %528 = fadd float %527, %522
  store float %528, ptr %526, align 4, !tbaa !154
  %529 = getelementptr inbounds %struct.ImVec2, ptr %18, i32 0, i32 1
  %530 = load float, ptr %529, align 4, !tbaa !152
  %531 = load ptr, ptr %1, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.ImPlotContext, ptr %531, i32 0, i32 12
  %533 = getelementptr inbounds %struct.ImPlotStyle, ptr %532, i32 0, i32 17
  %534 = getelementptr inbounds %struct.ImVec2, ptr %533, i32 0, i32 1
  %535 = load float, ptr %534, align 4, !tbaa !155
  %536 = fadd float %530, %535
  %537 = load ptr, ptr %5, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.ImPlotPlot, ptr %537, i32 0, i32 14
  %539 = getelementptr inbounds %struct.ImRect, ptr %538, i32 0, i32 0
  %540 = getelementptr inbounds %struct.ImVec2, ptr %539, i32 0, i32 1
  %541 = load float, ptr %540, align 4, !tbaa !156
  %542 = fadd float %541, %536
  store float %542, ptr %540, align 4, !tbaa !156
  br label %543

543:                                              ; preds = %514, %511, %508, %505, %502
  %544 = load i8, ptr %22, align 1, !tbaa !137, !range !125, !noundef !126
  %545 = trunc i8 %544 to i1
  br i1 %545, label %546, label %549

546:                                              ; preds = %543
  %547 = load i8, ptr %17, align 1, !tbaa !137, !range !125, !noundef !126
  %548 = trunc i8 %547 to i1
  br i1 %548, label %561, label %549

549:                                              ; preds = %546, %543
  %550 = load i8, ptr %22, align 1, !tbaa !137, !range !125, !noundef !126
  %551 = trunc i8 %550 to i1
  br i1 %551, label %552, label %590

552:                                              ; preds = %549
  %553 = load i8, ptr %17, align 1, !tbaa !137, !range !125, !noundef !126
  %554 = trunc i8 %553 to i1
  br i1 %554, label %590, label %555

555:                                              ; preds = %552
  %556 = load i8, ptr %19, align 1, !tbaa !137, !range !125, !noundef !126
  %557 = trunc i8 %556 to i1
  br i1 %557, label %590, label %558

558:                                              ; preds = %555
  %559 = load i8, ptr %20, align 1, !tbaa !137, !range !125, !noundef !126
  %560 = trunc i8 %559 to i1
  br i1 %560, label %590, label %561

561:                                              ; preds = %558, %546
  %562 = getelementptr inbounds %struct.ImVec2, ptr %18, i32 0, i32 1
  %563 = load float, ptr %562, align 4, !tbaa !152
  %564 = load ptr, ptr %1, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.ImPlotContext, ptr %564, i32 0, i32 12
  %566 = getelementptr inbounds %struct.ImPlotStyle, ptr %565, i32 0, i32 19
  %567 = getelementptr inbounds %struct.ImVec2, ptr %566, i32 0, i32 1
  %568 = load float, ptr %567, align 4, !tbaa !153
  %569 = fadd float %563, %568
  %570 = load ptr, ptr %5, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.ImPlotPlot, ptr %570, i32 0, i32 12
  %572 = getelementptr inbounds %struct.ImRect, ptr %571, i32 0, i32 1
  %573 = getelementptr inbounds %struct.ImVec2, ptr %572, i32 0, i32 1
  %574 = load float, ptr %573, align 4, !tbaa !157
  %575 = fsub float %574, %569
  store float %575, ptr %573, align 4, !tbaa !157
  %576 = getelementptr inbounds %struct.ImVec2, ptr %18, i32 0, i32 1
  %577 = load float, ptr %576, align 4, !tbaa !152
  %578 = load ptr, ptr %1, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.ImPlotContext, ptr %578, i32 0, i32 12
  %580 = getelementptr inbounds %struct.ImPlotStyle, ptr %579, i32 0, i32 17
  %581 = getelementptr inbounds %struct.ImVec2, ptr %580, i32 0, i32 1
  %582 = load float, ptr %581, align 4, !tbaa !155
  %583 = fadd float %577, %582
  %584 = load ptr, ptr %5, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.ImPlotPlot, ptr %584, i32 0, i32 14
  %586 = getelementptr inbounds %struct.ImRect, ptr %585, i32 0, i32 1
  %587 = getelementptr inbounds %struct.ImVec2, ptr %586, i32 0, i32 1
  %588 = load float, ptr %587, align 4, !tbaa !158
  %589 = fsub float %588, %583
  store float %589, ptr %587, align 4, !tbaa !158
  br label %590

590:                                              ; preds = %561, %558, %555, %552, %549
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #12
  br label %591

591:                                              ; preds = %590, %323, %318, %293
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #12
  store float 0.000000e+00, ptr %23, align 4, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #12
  store float 0.000000e+00, ptr %24, align 4, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #12
  store float 0.000000e+00, ptr %25, align 4, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #12
  store float 0.000000e+00, ptr %26, align 4, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %592 = load ptr, ptr %5, align 8, !tbaa !5
  %593 = call noundef zeroext i1 @_ZNK10ImPlotPlot8HasTitleEv(ptr noundef nonnull align 8 dereferenceable(2533) %592)
  br i1 %593, label %594, label %598

594:                                              ; preds = %591
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #12
  %595 = load ptr, ptr %5, align 8, !tbaa !5
  %596 = call noundef ptr @_ZNK10ImPlotPlot8GetTitleEv(ptr noundef nonnull align 8 dereferenceable(2533) %595)
  %597 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %596, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %597, ptr %28, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %27, ptr align 4 %28, i64 8, i1 false), !tbaa.struct !159
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #12
  br label %598

598:                                              ; preds = %594, %591
  %599 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %600 = load float, ptr %599, align 4, !tbaa !145
  %601 = fcmp ogt float %600, 0.000000e+00
  br i1 %601, label %602, label %626

602:                                              ; preds = %598
  %603 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 1
  %604 = load float, ptr %603, align 4, !tbaa !152
  %605 = load ptr, ptr %1, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.ImPlotContext, ptr %605, i32 0, i32 12
  %607 = getelementptr inbounds %struct.ImPlotStyle, ptr %606, i32 0, i32 18
  %608 = getelementptr inbounds %struct.ImVec2, ptr %607, i32 0, i32 1
  %609 = load float, ptr %608, align 4, !tbaa !160
  %610 = fadd float %604, %609
  %611 = load float, ptr %23, align 4, !tbaa !141
  %612 = fadd float %611, %610
  store float %612, ptr %23, align 4, !tbaa !141
  %613 = load ptr, ptr %1, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.ImPlotContext, ptr %613, i32 0, i32 12
  %615 = getelementptr inbounds %struct.ImPlotStyle, ptr %614, i32 0, i32 17
  %616 = getelementptr inbounds %struct.ImVec2, ptr %615, i32 0, i32 1
  %617 = load float, ptr %616, align 4, !tbaa !155
  %618 = load float, ptr %23, align 4, !tbaa !141
  %619 = fadd float %617, %618
  %620 = load ptr, ptr %5, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.ImPlotPlot, ptr %620, i32 0, i32 14
  %622 = getelementptr inbounds %struct.ImRect, ptr %621, i32 0, i32 0
  %623 = getelementptr inbounds %struct.ImVec2, ptr %622, i32 0, i32 1
  %624 = load float, ptr %623, align 4, !tbaa !156
  %625 = fadd float %624, %619
  store float %625, ptr %623, align 4, !tbaa !156
  br label %626

626:                                              ; preds = %602, %598
  %627 = load ptr, ptr %5, align 8, !tbaa !5
  %628 = load ptr, ptr %1, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.ImPlotContext, ptr %628, i32 0, i32 30
  %630 = load ptr, ptr %629, align 8, !tbaa !161
  call void @_ZN6ImPlot16PadAndDatumAxesXER10ImPlotPlotRfS2_P19ImPlotAlignmentData(ptr noundef nonnull align 8 dereferenceable(2533) %627, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef %630)
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #12
  %631 = load ptr, ptr %5, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.ImPlotPlot, ptr %631, i32 0, i32 12
  %633 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %632)
  %634 = load float, ptr %23, align 4, !tbaa !141
  %635 = fsub float %633, %634
  %636 = load float, ptr %24, align 4, !tbaa !141
  %637 = fsub float %635, %636
  store float %637, ptr %29, align 4, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #12
  store i32 0, ptr %30, align 4, !tbaa !120
  br label %638

638:                                              ; preds = %669, %626
  %639 = load i32, ptr %30, align 4, !tbaa !120
  %640 = icmp slt i32 %639, 3
  br i1 %640, label %642, label %641

641:                                              ; preds = %638
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #12
  br label %672

642:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #12
  %643 = load ptr, ptr %5, align 8, !tbaa !5
  %644 = load i32, ptr %30, align 4, !tbaa !120
  %645 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %643, i32 noundef %644)
  store ptr %645, ptr %31, align 8, !tbaa !5
  %646 = load ptr, ptr %31, align 8, !tbaa !5
  %647 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %646)
  br i1 %647, label %648, label %668

648:                                              ; preds = %642
  %649 = load ptr, ptr %31, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImPlotAxis, ptr %649, i32 0, i32 47
  %651 = load i8, ptr %650, align 1, !tbaa !162, !range !125, !noundef !126
  %652 = trunc i8 %651 to i1
  br i1 %652, label %653, label %668

653:                                              ; preds = %648
  %654 = load ptr, ptr %31, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.ImPlotAxis, ptr %654, i32 0, i32 15
  %656 = load ptr, ptr %655, align 8, !tbaa !133
  %657 = load ptr, ptr %31, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.ImPlotAxis, ptr %657, i32 0, i32 11
  %659 = load ptr, ptr %31, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.ImPlotAxis, ptr %659, i32 0, i32 4
  %661 = load float, ptr %29, align 4, !tbaa !141
  %662 = load ptr, ptr %31, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.ImPlotAxis, ptr %662, i32 0, i32 12
  %664 = load ptr, ptr %663, align 8, !tbaa !130
  %665 = load ptr, ptr %31, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.ImPlotAxis, ptr %665, i32 0, i32 13
  %667 = load ptr, ptr %666, align 8, !tbaa !132
  call void %656(ptr noundef nonnull align 8 dereferenceable(52) %658, ptr noundef nonnull align 8 dereferenceable(16) %660, float noundef %661, i1 noundef zeroext true, ptr noundef %664, ptr noundef %667)
  br label %668

668:                                              ; preds = %653, %648, %642
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #12
  br label %669

669:                                              ; preds = %668
  %670 = load i32, ptr %30, align 4, !tbaa !120
  %671 = add nsw i32 %670, 1
  store i32 %671, ptr %30, align 4, !tbaa !120
  br label %638, !llvm.loop !163

672:                                              ; preds = %641
  %673 = load ptr, ptr %5, align 8, !tbaa !5
  %674 = load ptr, ptr %1, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.ImPlotContext, ptr %674, i32 0, i32 31
  %676 = load ptr, ptr %675, align 8, !tbaa !164
  call void @_ZN6ImPlot16PadAndDatumAxesYER10ImPlotPlotRfS2_P19ImPlotAlignmentData(ptr noundef nonnull align 8 dereferenceable(2533) %673, ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef %676)
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #12
  %677 = load ptr, ptr %5, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.ImPlotPlot, ptr %677, i32 0, i32 12
  %679 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %678)
  %680 = load float, ptr %25, align 4, !tbaa !141
  %681 = fsub float %679, %680
  %682 = load float, ptr %26, align 4, !tbaa !141
  %683 = fsub float %681, %682
  store float %683, ptr %32, align 4, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #12
  store i32 0, ptr %33, align 4, !tbaa !120
  br label %684

684:                                              ; preds = %715, %672
  %685 = load i32, ptr %33, align 4, !tbaa !120
  %686 = icmp slt i32 %685, 3
  br i1 %686, label %688, label %687

687:                                              ; preds = %684
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #12
  br label %718

688:                                              ; preds = %684
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #12
  %689 = load ptr, ptr %5, align 8, !tbaa !5
  %690 = load i32, ptr %33, align 4, !tbaa !120
  %691 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %689, i32 noundef %690)
  store ptr %691, ptr %34, align 8, !tbaa !5
  %692 = load ptr, ptr %34, align 8, !tbaa !5
  %693 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %692)
  br i1 %693, label %694, label %714

694:                                              ; preds = %688
  %695 = load ptr, ptr %34, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.ImPlotAxis, ptr %695, i32 0, i32 47
  %697 = load i8, ptr %696, align 1, !tbaa !162, !range !125, !noundef !126
  %698 = trunc i8 %697 to i1
  br i1 %698, label %699, label %714

699:                                              ; preds = %694
  %700 = load ptr, ptr %34, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.ImPlotAxis, ptr %700, i32 0, i32 15
  %702 = load ptr, ptr %701, align 8, !tbaa !133
  %703 = load ptr, ptr %34, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.ImPlotAxis, ptr %703, i32 0, i32 11
  %705 = load ptr, ptr %34, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.ImPlotAxis, ptr %705, i32 0, i32 4
  %707 = load float, ptr %32, align 4, !tbaa !141
  %708 = load ptr, ptr %34, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.ImPlotAxis, ptr %708, i32 0, i32 12
  %710 = load ptr, ptr %709, align 8, !tbaa !130
  %711 = load ptr, ptr %34, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.ImPlotAxis, ptr %711, i32 0, i32 13
  %713 = load ptr, ptr %712, align 8, !tbaa !132
  call void %702(ptr noundef nonnull align 8 dereferenceable(52) %704, ptr noundef nonnull align 8 dereferenceable(16) %706, float noundef %707, i1 noundef zeroext false, ptr noundef %710, ptr noundef %713)
  br label %714

714:                                              ; preds = %699, %694, %688
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #12
  br label %715

715:                                              ; preds = %714
  %716 = load i32, ptr %33, align 4, !tbaa !120
  %717 = add nsw i32 %716, 1
  store i32 %717, ptr %33, align 4, !tbaa !120
  br label %684, !llvm.loop !165

718:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #12
  %719 = load ptr, ptr %5, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.ImPlotPlot, ptr %719, i32 0, i32 12
  %721 = getelementptr inbounds %struct.ImRect, ptr %720, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #12
  %722 = load float, ptr %25, align 4, !tbaa !141
  %723 = load float, ptr %23, align 4, !tbaa !141
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %37, float noundef %722, float noundef %723)
  %724 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %721, ptr noundef nonnull align 4 dereferenceable(8) %37)
  store <2 x float> %724, ptr %36, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #12
  %725 = load ptr, ptr %5, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.ImPlotPlot, ptr %725, i32 0, i32 12
  %727 = getelementptr inbounds %struct.ImRect, ptr %726, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #12
  %728 = load float, ptr %26, align 4, !tbaa !141
  %729 = load float, ptr %24, align 4, !tbaa !141
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef %728, float noundef %729)
  %730 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %727, ptr noundef nonnull align 4 dereferenceable(8) %39)
  store <2 x float> %730, ptr %38, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %35, ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %38)
  %731 = load ptr, ptr %5, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.ImPlotPlot, ptr %731, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %732, ptr align 4 %35, i64 16, i1 false), !tbaa.struct !140
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #12
  store i32 0, ptr %40, align 4, !tbaa !120
  br label %733

733:                                              ; preds = %804, %718
  %734 = load i32, ptr %40, align 4, !tbaa !120
  %735 = icmp slt i32 %734, 3
  br i1 %735, label %737, label %736

736:                                              ; preds = %733
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #12
  br label %807

737:                                              ; preds = %733
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #12
  %738 = load ptr, ptr %5, align 8, !tbaa !5
  %739 = load i32, ptr %40, align 4, !tbaa !120
  %740 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %738, i32 noundef %739)
  store ptr %740, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #12
  %741 = load ptr, ptr %5, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.ImPlotPlot, ptr %741, i32 0, i32 13
  %743 = getelementptr inbounds %struct.ImRect, ptr %742, i32 0, i32 0
  %744 = getelementptr inbounds %struct.ImVec2, ptr %743, i32 0, i32 0
  %745 = load float, ptr %744, align 8, !tbaa !166
  %746 = load ptr, ptr %41, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.ImPlotAxis, ptr %746, i32 0, i32 30
  %748 = load float, ptr %747, align 8, !tbaa !167
  %749 = load ptr, ptr %41, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.ImPlotAxis, ptr %749, i32 0, i32 31
  %751 = load float, ptr %750, align 4, !tbaa !168
  %752 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %748, float noundef %751)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %745, float noundef %752)
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #12
  %753 = load ptr, ptr %5, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.ImPlotPlot, ptr %753, i32 0, i32 13
  %755 = getelementptr inbounds %struct.ImRect, ptr %754, i32 0, i32 1
  %756 = getelementptr inbounds %struct.ImVec2, ptr %755, i32 0, i32 0
  %757 = load float, ptr %756, align 8, !tbaa !169
  %758 = load ptr, ptr %41, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.ImPlotAxis, ptr %758, i32 0, i32 30
  %760 = load float, ptr %759, align 8, !tbaa !167
  %761 = load ptr, ptr %41, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.ImPlotAxis, ptr %761, i32 0, i32 31
  %763 = load float, ptr %762, align 4, !tbaa !168
  %764 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %760, float noundef %763)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef %757, float noundef %764)
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %42, ptr noundef nonnull align 4 dereferenceable(8) %43, ptr noundef nonnull align 4 dereferenceable(8) %44)
  %765 = load ptr, ptr %41, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.ImPlotAxis, ptr %765, i32 0, i32 32
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %766, ptr align 4 %42, i64 16, i1 false), !tbaa.struct !140
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #12
  %767 = load ptr, ptr %41, align 8, !tbaa !5
  %768 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %767)
  br i1 %768, label %769, label %775

769:                                              ; preds = %737
  %770 = load ptr, ptr %5, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.ImPlotPlot, ptr %770, i32 0, i32 13
  %772 = getelementptr inbounds %struct.ImRect, ptr %771, i32 0, i32 1
  %773 = getelementptr inbounds %struct.ImVec2, ptr %772, i32 0, i32 0
  %774 = load float, ptr %773, align 8, !tbaa !169
  br label %781

775:                                              ; preds = %737
  %776 = load ptr, ptr %5, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.ImPlotPlot, ptr %776, i32 0, i32 13
  %778 = getelementptr inbounds %struct.ImRect, ptr %777, i32 0, i32 0
  %779 = getelementptr inbounds %struct.ImVec2, ptr %778, i32 0, i32 0
  %780 = load float, ptr %779, align 8, !tbaa !166
  br label %781

781:                                              ; preds = %775, %769
  %782 = phi float [ %774, %769 ], [ %780, %775 ]
  %783 = load ptr, ptr %41, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.ImPlotAxis, ptr %783, i32 0, i32 25
  store float %782, ptr %784, align 8, !tbaa !170
  %785 = load ptr, ptr %41, align 8, !tbaa !5
  %786 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %785)
  br i1 %786, label %787, label %793

787:                                              ; preds = %781
  %788 = load ptr, ptr %5, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.ImPlotPlot, ptr %788, i32 0, i32 13
  %790 = getelementptr inbounds %struct.ImRect, ptr %789, i32 0, i32 0
  %791 = getelementptr inbounds %struct.ImVec2, ptr %790, i32 0, i32 0
  %792 = load float, ptr %791, align 8, !tbaa !166
  br label %799

793:                                              ; preds = %781
  %794 = load ptr, ptr %5, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.ImPlotPlot, ptr %794, i32 0, i32 13
  %796 = getelementptr inbounds %struct.ImRect, ptr %795, i32 0, i32 1
  %797 = getelementptr inbounds %struct.ImVec2, ptr %796, i32 0, i32 0
  %798 = load float, ptr %797, align 8, !tbaa !169
  br label %799

799:                                              ; preds = %793, %787
  %800 = phi float [ %792, %787 ], [ %798, %793 ]
  %801 = load ptr, ptr %41, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.ImPlotAxis, ptr %801, i32 0, i32 26
  store float %800, ptr %802, align 4, !tbaa !171
  %803 = load ptr, ptr %41, align 8, !tbaa !5
  call void @_ZN10ImPlotAxis20UpdateTransformCacheEv(ptr noundef nonnull align 8 dereferenceable(372) %803)
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #12
  br label %804

804:                                              ; preds = %799
  %805 = load i32, ptr %40, align 4, !tbaa !120
  %806 = add nsw i32 %805, 1
  store i32 %806, ptr %40, align 4, !tbaa !120
  br label %733, !llvm.loop !172

807:                                              ; preds = %736
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #12
  store i32 0, ptr %45, align 4, !tbaa !120
  br label %808

808:                                              ; preds = %879, %807
  %809 = load i32, ptr %45, align 4, !tbaa !120
  %810 = icmp slt i32 %809, 3
  br i1 %810, label %812, label %811

811:                                              ; preds = %808
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #12
  br label %882

812:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #12
  %813 = load ptr, ptr %5, align 8, !tbaa !5
  %814 = load i32, ptr %45, align 4, !tbaa !120
  %815 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %813, i32 noundef %814)
  store ptr %815, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #12
  %816 = load ptr, ptr %46, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.ImPlotAxis, ptr %816, i32 0, i32 30
  %818 = load float, ptr %817, align 8, !tbaa !167
  %819 = load ptr, ptr %46, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.ImPlotAxis, ptr %819, i32 0, i32 31
  %821 = load float, ptr %820, align 4, !tbaa !168
  %822 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %818, float noundef %821)
  %823 = load ptr, ptr %5, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.ImPlotPlot, ptr %823, i32 0, i32 13
  %825 = getelementptr inbounds %struct.ImRect, ptr %824, i32 0, i32 0
  %826 = getelementptr inbounds %struct.ImVec2, ptr %825, i32 0, i32 1
  %827 = load float, ptr %826, align 4, !tbaa !173
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %48, float noundef %822, float noundef %827)
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #12
  %828 = load ptr, ptr %46, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.ImPlotAxis, ptr %828, i32 0, i32 30
  %830 = load float, ptr %829, align 8, !tbaa !167
  %831 = load ptr, ptr %46, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImPlotAxis, ptr %831, i32 0, i32 31
  %833 = load float, ptr %832, align 4, !tbaa !168
  %834 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %830, float noundef %833)
  %835 = load ptr, ptr %5, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.ImPlotPlot, ptr %835, i32 0, i32 13
  %837 = getelementptr inbounds %struct.ImRect, ptr %836, i32 0, i32 1
  %838 = getelementptr inbounds %struct.ImVec2, ptr %837, i32 0, i32 1
  %839 = load float, ptr %838, align 4, !tbaa !174
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %834, float noundef %839)
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %47, ptr noundef nonnull align 4 dereferenceable(8) %48, ptr noundef nonnull align 4 dereferenceable(8) %49)
  %840 = load ptr, ptr %46, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.ImPlotAxis, ptr %840, i32 0, i32 32
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %841, ptr align 4 %47, i64 16, i1 false), !tbaa.struct !140
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #12
  %842 = load ptr, ptr %46, align 8, !tbaa !5
  %843 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %842)
  br i1 %843, label %844, label %850

844:                                              ; preds = %812
  %845 = load ptr, ptr %5, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImPlotPlot, ptr %845, i32 0, i32 13
  %847 = getelementptr inbounds %struct.ImRect, ptr %846, i32 0, i32 0
  %848 = getelementptr inbounds %struct.ImVec2, ptr %847, i32 0, i32 1
  %849 = load float, ptr %848, align 4, !tbaa !173
  br label %856

850:                                              ; preds = %812
  %851 = load ptr, ptr %5, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.ImPlotPlot, ptr %851, i32 0, i32 13
  %853 = getelementptr inbounds %struct.ImRect, ptr %852, i32 0, i32 1
  %854 = getelementptr inbounds %struct.ImVec2, ptr %853, i32 0, i32 1
  %855 = load float, ptr %854, align 4, !tbaa !174
  br label %856

856:                                              ; preds = %850, %844
  %857 = phi float [ %849, %844 ], [ %855, %850 ]
  %858 = load ptr, ptr %46, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.ImPlotAxis, ptr %858, i32 0, i32 25
  store float %857, ptr %859, align 8, !tbaa !170
  %860 = load ptr, ptr %46, align 8, !tbaa !5
  %861 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %860)
  br i1 %861, label %862, label %868

862:                                              ; preds = %856
  %863 = load ptr, ptr %5, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.ImPlotPlot, ptr %863, i32 0, i32 13
  %865 = getelementptr inbounds %struct.ImRect, ptr %864, i32 0, i32 1
  %866 = getelementptr inbounds %struct.ImVec2, ptr %865, i32 0, i32 1
  %867 = load float, ptr %866, align 4, !tbaa !174
  br label %874

868:                                              ; preds = %856
  %869 = load ptr, ptr %5, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.ImPlotPlot, ptr %869, i32 0, i32 13
  %871 = getelementptr inbounds %struct.ImRect, ptr %870, i32 0, i32 0
  %872 = getelementptr inbounds %struct.ImVec2, ptr %871, i32 0, i32 1
  %873 = load float, ptr %872, align 4, !tbaa !173
  br label %874

874:                                              ; preds = %868, %862
  %875 = phi float [ %867, %862 ], [ %873, %868 ]
  %876 = load ptr, ptr %46, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.ImPlotAxis, ptr %876, i32 0, i32 26
  store float %875, ptr %877, align 4, !tbaa !171
  %878 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN10ImPlotAxis20UpdateTransformCacheEv(ptr noundef nonnull align 8 dereferenceable(372) %878)
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #12
  br label %879

879:                                              ; preds = %874
  %880 = load i32, ptr %45, align 4, !tbaa !120
  %881 = add nsw i32 %880, 1
  store i32 %881, ptr %45, align 4, !tbaa !120
  br label %808, !llvm.loop !175

882:                                              ; preds = %811
  %883 = load i8, ptr %8, align 1, !tbaa !137, !range !125, !noundef !126
  %884 = trunc i8 %883 to i1
  br i1 %884, label %885, label %936

885:                                              ; preds = %882
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #12
  store i32 0, ptr %50, align 4, !tbaa !120
  br label %886

886:                                              ; preds = %932, %885
  %887 = load i32, ptr %50, align 4, !tbaa !120
  %888 = icmp slt i32 %887, 3
  br i1 %888, label %890, label %889

889:                                              ; preds = %886
  store i32 20, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #12
  br label %935

890:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #12
  %891 = load ptr, ptr %5, align 8, !tbaa !5
  %892 = load i32, ptr %50, align 4, !tbaa !120
  %893 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %891, i32 noundef %892)
  store ptr %893, ptr %52, align 8, !tbaa !5
  %894 = load ptr, ptr %52, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.ImPlotAxis, ptr %894, i32 0, i32 8
  %896 = load ptr, ptr %895, align 8, !tbaa !138
  %897 = icmp eq ptr %896, null
  br i1 %897, label %898, label %899

898:                                              ; preds = %890
  store i32 22, ptr %51, align 4
  br label %929

899:                                              ; preds = %890
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #12
  %900 = load ptr, ptr %52, align 8, !tbaa !5
  %901 = call noundef double @_ZNK10ImPlotAxis9GetAspectEv(ptr noundef nonnull align 8 dereferenceable(372) %900)
  store double %901, ptr %53, align 8, !tbaa !176
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #12
  %902 = load ptr, ptr %52, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.ImPlotAxis, ptr %902, i32 0, i32 8
  %904 = load ptr, ptr %903, align 8, !tbaa !138
  %905 = call noundef double @_ZNK10ImPlotAxis9GetAspectEv(ptr noundef nonnull align 8 dereferenceable(372) %904)
  store double %905, ptr %54, align 8, !tbaa !176
  %906 = load ptr, ptr %52, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.ImPlotAxis, ptr %906, i32 0, i32 45
  %908 = load i8, ptr %907, align 1, !tbaa !177, !range !125, !noundef !126
  %909 = trunc i8 %908 to i1
  br i1 %909, label %910, label %915

910:                                              ; preds = %899
  %911 = load ptr, ptr %52, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.ImPlotAxis, ptr %911, i32 0, i32 8
  %913 = load ptr, ptr %912, align 8, !tbaa !138
  %914 = load double, ptr %53, align 8, !tbaa !176
  call void @_ZN10ImPlotAxis9SetAspectEd(ptr noundef nonnull align 8 dereferenceable(372) %913, double noundef %914)
  br label %928

915:                                              ; preds = %899
  %916 = load double, ptr %53, align 8, !tbaa !176
  %917 = load double, ptr %54, align 8, !tbaa !176
  %918 = call noundef zeroext i1 @_ZL13ImAlmostEqualddi(double noundef %916, double noundef %917, i32 noundef 2)
  br i1 %918, label %927, label %919

919:                                              ; preds = %915
  %920 = load ptr, ptr %52, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.ImPlotAxis, ptr %920, i32 0, i32 8
  %922 = load ptr, ptr %921, align 8, !tbaa !138
  %923 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsInputLockedEv(ptr noundef nonnull align 8 dereferenceable(372) %922)
  br i1 %923, label %927, label %924

924:                                              ; preds = %919
  %925 = load ptr, ptr %52, align 8, !tbaa !5
  %926 = load double, ptr %54, align 8, !tbaa !176
  call void @_ZN10ImPlotAxis9SetAspectEd(ptr noundef nonnull align 8 dereferenceable(372) %925, double noundef %926)
  br label %927

927:                                              ; preds = %924, %919, %915
  br label %928

928:                                              ; preds = %927, %910
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #12
  store i32 0, ptr %51, align 4
  br label %929

929:                                              ; preds = %928, %898
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #12
  %930 = load i32, ptr %51, align 4
  switch i32 %930, label %1698 [
    i32 0, label %931
    i32 22, label %932
  ]

931:                                              ; preds = %929
  br label %932

932:                                              ; preds = %931, %929
  %933 = load i32, ptr %50, align 4, !tbaa !120
  %934 = add nsw i32 %933, 1
  store i32 %934, ptr %50, align 4, !tbaa !120
  br label %886, !llvm.loop !178

935:                                              ; preds = %889
  br label %936

936:                                              ; preds = %935, %882
  %937 = load ptr, ptr %5, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.ImPlotPlot, ptr %937, i32 0, i32 1
  %939 = load i32, ptr %938, align 4, !tbaa !136
  %940 = call noundef zeroext i1 @_ZL9ImHasFlagIi12ImPlotFlags_EbT_T0_(i32 noundef %939, i32 noundef 8)
  br i1 %940, label %944, label %941

941:                                              ; preds = %936
  %942 = load ptr, ptr %5, align 8, !tbaa !5
  %943 = call noundef zeroext i1 @_ZN6ImPlot11UpdateInputER10ImPlotPlot(ptr noundef nonnull align 8 dereferenceable(2533) %942)
  br label %944

944:                                              ; preds = %941, %936
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #12
  store i32 0, ptr %55, align 4, !tbaa !120
  br label %945

945:                                              ; preds = %975, %944
  %946 = load i32, ptr %55, align 4, !tbaa !120
  %947 = icmp slt i32 %946, 6
  br i1 %947, label %949, label %948

948:                                              ; preds = %945
  store i32 23, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #12
  br label %978

949:                                              ; preds = %945
  %950 = load ptr, ptr %1, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.ImPlotContext, ptr %950, i32 0, i32 23
  %952 = getelementptr inbounds %struct.ImPlotNextPlotData, ptr %951, i32 0, i32 3
  %953 = load i32, ptr %55, align 4, !tbaa !120
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds [6 x i8], ptr %952, i64 0, i64 %954
  %956 = load i8, ptr %955, align 1, !tbaa !137, !range !125, !noundef !126
  %957 = trunc i8 %956 to i1
  br i1 %957, label %965, label %958

958:                                              ; preds = %949
  %959 = load ptr, ptr %5, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.ImPlotPlot, ptr %959, i32 0, i32 6
  %961 = load i32, ptr %55, align 4, !tbaa !120
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds [6 x %struct.ImPlotAxis], ptr %960, i64 0, i64 %962
  %964 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsAutoFittingEv(ptr noundef nonnull align 8 dereferenceable(372) %963)
  br i1 %964, label %965, label %974

965:                                              ; preds = %958, %949
  %966 = load ptr, ptr %5, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.ImPlotPlot, ptr %966, i32 0, i32 21
  store i8 1, ptr %967, align 1, !tbaa !129
  %968 = load ptr, ptr %5, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImPlotPlot, ptr %968, i32 0, i32 6
  %970 = load i32, ptr %55, align 4, !tbaa !120
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds [6 x %struct.ImPlotAxis], ptr %969, i64 0, i64 %971
  %973 = getelementptr inbounds %struct.ImPlotAxis, ptr %972, i32 0, i32 44
  store i8 1, ptr %973, align 2, !tbaa !128
  br label %974

974:                                              ; preds = %965, %958
  br label %975

975:                                              ; preds = %974
  %976 = load i32, ptr %55, align 4, !tbaa !120
  %977 = add nsw i32 %976, 1
  store i32 %977, ptr %55, align 4, !tbaa !120
  br label %945, !llvm.loop !179

978:                                              ; preds = %948
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #12
  %979 = call noundef float @_ZN5ImGui17GetTextLineHeightEv()
  store float %979, ptr %56, align 4, !tbaa !141
  %980 = load ptr, ptr %5, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.ImPlotPlot, ptr %980, i32 0, i32 1
  %982 = load i32, ptr %981, align 4, !tbaa !136
  %983 = call noundef zeroext i1 @_ZL9ImHasFlagIi12ImPlotFlags_EbT_T0_(i32 noundef %982, i32 noundef 128)
  br i1 %983, label %997, label %984

984:                                              ; preds = %978
  %985 = load ptr, ptr %5, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.ImPlotPlot, ptr %985, i32 0, i32 11
  %987 = getelementptr inbounds %struct.ImRect, ptr %986, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %57, ptr align 8 %987, i64 8, i1 false), !tbaa.struct !159
  %988 = load ptr, ptr %5, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.ImPlotPlot, ptr %988, i32 0, i32 11
  %990 = getelementptr inbounds %struct.ImRect, ptr %989, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 8 %990, i64 8, i1 false), !tbaa.struct !159
  %991 = call noundef i32 @_ZN6ImPlotL16GetStyleColorU32Ei(i32 noundef 5)
  %992 = load ptr, ptr %4, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImGuiStyle, ptr %992, i32 0, i32 13
  %994 = load float, ptr %993, align 4, !tbaa !180
  %995 = load <2 x float>, ptr %57, align 4
  %996 = load <2 x float>, ptr %58, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %995, <2 x float> %996, i32 noundef %991, i1 noundef zeroext true, float noundef %994)
  br label %997

997:                                              ; preds = %984, %978
  %998 = load ptr, ptr %3, align 8, !tbaa !5
  %999 = load ptr, ptr %5, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.ImPlotPlot, ptr %999, i32 0, i32 13
  %1001 = getelementptr inbounds %struct.ImRect, ptr %1000, i32 0, i32 0
  %1002 = load ptr, ptr %5, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.ImPlotPlot, ptr %1002, i32 0, i32 13
  %1004 = getelementptr inbounds %struct.ImRect, ptr %1003, i32 0, i32 1
  %1005 = call noundef i32 @_ZN6ImPlotL16GetStyleColorU32Ei(i32 noundef 6)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %998, ptr noundef nonnull align 4 dereferenceable(8) %1001, ptr noundef nonnull align 4 dereferenceable(8) %1004, i32 noundef %1005, float noundef 0.000000e+00, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #12
  store i32 0, ptr %59, align 4, !tbaa !120
  br label %1006

1006:                                             ; preds = %1047, %997
  %1007 = load i32, ptr %59, align 4, !tbaa !120
  %1008 = icmp slt i32 %1007, 6
  br i1 %1008, label %1010, label %1009

1009:                                             ; preds = %1006
  store i32 26, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #12
  br label %1050

1010:                                             ; preds = %1006
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #12
  %1011 = load ptr, ptr %5, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ImPlotPlot, ptr %1011, i32 0, i32 6
  %1013 = load i32, ptr %59, align 4, !tbaa !120
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds [6 x %struct.ImPlotAxis], ptr %1012, i64 0, i64 %1014
  store ptr %1015, ptr %60, align 8, !tbaa !5
  %1016 = load ptr, ptr %60, align 8, !tbaa !5
  %1017 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %1016)
  br i1 %1017, label %1018, label %1046

1018:                                             ; preds = %1010
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #12
  store i32 0, ptr %61, align 4, !tbaa !120
  br label %1019

1019:                                             ; preds = %1042, %1018
  %1020 = load i32, ptr %61, align 4, !tbaa !120
  %1021 = load ptr, ptr %60, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.ImPlotAxis, ptr %1021, i32 0, i32 11
  %1023 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %1022)
  %1024 = icmp slt i32 %1020, %1023
  br i1 %1024, label %1026, label %1025

1025:                                             ; preds = %1019
  store i32 29, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #12
  br label %1045

1026:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #12
  %1027 = load ptr, ptr %60, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct.ImPlotAxis, ptr %1027, i32 0, i32 11
  %1029 = getelementptr inbounds %struct.ImPlotTicker, ptr %1028, i32 0, i32 0
  %1030 = load i32, ptr %61, align 4, !tbaa !120
  %1031 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1029, i32 noundef %1030)
  store ptr %1031, ptr %62, align 8, !tbaa !5
  %1032 = load ptr, ptr %60, align 8, !tbaa !5
  %1033 = load ptr, ptr %62, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.ImPlotTick, ptr %1033, i32 0, i32 0
  %1035 = load double, ptr %1034, align 8, !tbaa !181
  %1036 = call noundef float @_ZNK10ImPlotAxis12PlotToPixelsEd(ptr noundef nonnull align 8 dereferenceable(372) %1032, double noundef %1035)
  %1037 = fadd float %1036, 5.000000e-01
  %1038 = fptosi float %1037 to i32
  %1039 = sitofp i32 %1038 to float
  %1040 = load ptr, ptr %62, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.ImPlotTick, ptr %1040, i32 0, i32 1
  store float %1039, ptr %1041, align 8, !tbaa !183
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #12
  br label %1042

1042:                                             ; preds = %1026
  %1043 = load i32, ptr %61, align 4, !tbaa !120
  %1044 = add nsw i32 %1043, 1
  store i32 %1044, ptr %61, align 4, !tbaa !120
  br label %1019, !llvm.loop !184

1045:                                             ; preds = %1025
  br label %1046

1046:                                             ; preds = %1045, %1010
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #12
  br label %1047

1047:                                             ; preds = %1046
  %1048 = load i32, ptr %59, align 4, !tbaa !120
  %1049 = add nsw i32 %1048, 1
  store i32 %1049, ptr %59, align 4, !tbaa !120
  br label %1006, !llvm.loop !185

1050:                                             ; preds = %1009
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #12
  store i32 0, ptr %63, align 4, !tbaa !120
  br label %1051

1051:                                             ; preds = %1092, %1050
  %1052 = load i32, ptr %63, align 4, !tbaa !120
  %1053 = icmp slt i32 %1052, 3
  br i1 %1053, label %1055, label %1054

1054:                                             ; preds = %1051
  store i32 32, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #12
  br label %1095

1055:                                             ; preds = %1051
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #12
  %1056 = load ptr, ptr %5, align 8, !tbaa !5
  %1057 = load i32, ptr %63, align 4, !tbaa !120
  %1058 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %1056, i32 noundef %1057)
  store ptr %1058, ptr %64, align 8, !tbaa !5
  %1059 = load ptr, ptr %64, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.ImPlotAxis, ptr %1059, i32 0, i32 42
  %1061 = load i8, ptr %1060, align 4, !tbaa !121, !range !125, !noundef !126
  %1062 = trunc i8 %1061 to i1
  br i1 %1062, label %1063, label %1091

1063:                                             ; preds = %1055
  %1064 = load ptr, ptr %64, align 8, !tbaa !5
  %1065 = call noundef zeroext i1 @_ZNK10ImPlotAxis12HasGridLinesEv(ptr noundef nonnull align 8 dereferenceable(372) %1064)
  br i1 %1065, label %1066, label %1091

1066:                                             ; preds = %1063
  %1067 = load ptr, ptr %64, align 8, !tbaa !5
  %1068 = call noundef zeroext i1 @_ZNK10ImPlotAxis12IsForegroundEv(ptr noundef nonnull align 8 dereferenceable(372) %1067)
  br i1 %1068, label %1091, label %1069

1069:                                             ; preds = %1066
  %1070 = load ptr, ptr %3, align 8, !tbaa !5
  %1071 = load ptr, ptr %64, align 8, !tbaa !5
  %1072 = getelementptr inbounds %struct.ImPlotAxis, ptr %1071, i32 0, i32 11
  %1073 = load ptr, ptr %5, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.ImPlotPlot, ptr %1073, i32 0, i32 13
  %1075 = load ptr, ptr %64, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.ImPlotAxis, ptr %1075, i32 0, i32 34
  %1077 = load i32, ptr %1076, align 4, !tbaa !186
  %1078 = load ptr, ptr %64, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.ImPlotAxis, ptr %1078, i32 0, i32 35
  %1080 = load i32, ptr %1079, align 8, !tbaa !187
  %1081 = load ptr, ptr %1, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.ImPlotContext, ptr %1081, i32 0, i32 12
  %1083 = getelementptr inbounds %struct.ImPlotStyle, ptr %1082, i32 0, i32 15
  %1084 = getelementptr inbounds %struct.ImVec2, ptr %1083, i32 0, i32 0
  %1085 = load float, ptr %1084, align 4, !tbaa !188
  %1086 = load ptr, ptr %1, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.ImPlotContext, ptr %1086, i32 0, i32 12
  %1088 = getelementptr inbounds %struct.ImPlotStyle, ptr %1087, i32 0, i32 16
  %1089 = getelementptr inbounds %struct.ImVec2, ptr %1088, i32 0, i32 0
  %1090 = load float, ptr %1089, align 4, !tbaa !189
  call void @_ZN6ImPlotL16RenderGridLinesXER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196) %1070, ptr noundef nonnull align 8 dereferenceable(52) %1072, ptr noundef nonnull align 4 dereferenceable(16) %1074, i32 noundef %1077, i32 noundef %1080, float noundef %1085, float noundef %1090)
  br label %1091

1091:                                             ; preds = %1069, %1066, %1063, %1055
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #12
  br label %1092

1092:                                             ; preds = %1091
  %1093 = load i32, ptr %63, align 4, !tbaa !120
  %1094 = add nsw i32 %1093, 1
  store i32 %1094, ptr %63, align 4, !tbaa !120
  br label %1051, !llvm.loop !190

1095:                                             ; preds = %1054
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #12
  store i32 0, ptr %65, align 4, !tbaa !120
  br label %1096

1096:                                             ; preds = %1137, %1095
  %1097 = load i32, ptr %65, align 4, !tbaa !120
  %1098 = icmp slt i32 %1097, 3
  br i1 %1098, label %1100, label %1099

1099:                                             ; preds = %1096
  store i32 35, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #12
  br label %1140

1100:                                             ; preds = %1096
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #12
  %1101 = load ptr, ptr %5, align 8, !tbaa !5
  %1102 = load i32, ptr %65, align 4, !tbaa !120
  %1103 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %1101, i32 noundef %1102)
  store ptr %1103, ptr %66, align 8, !tbaa !5
  %1104 = load ptr, ptr %66, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.ImPlotAxis, ptr %1104, i32 0, i32 42
  %1106 = load i8, ptr %1105, align 4, !tbaa !121, !range !125, !noundef !126
  %1107 = trunc i8 %1106 to i1
  br i1 %1107, label %1108, label %1136

1108:                                             ; preds = %1100
  %1109 = load ptr, ptr %66, align 8, !tbaa !5
  %1110 = call noundef zeroext i1 @_ZNK10ImPlotAxis12HasGridLinesEv(ptr noundef nonnull align 8 dereferenceable(372) %1109)
  br i1 %1110, label %1111, label %1136

1111:                                             ; preds = %1108
  %1112 = load ptr, ptr %66, align 8, !tbaa !5
  %1113 = call noundef zeroext i1 @_ZNK10ImPlotAxis12IsForegroundEv(ptr noundef nonnull align 8 dereferenceable(372) %1112)
  br i1 %1113, label %1136, label %1114

1114:                                             ; preds = %1111
  %1115 = load ptr, ptr %3, align 8, !tbaa !5
  %1116 = load ptr, ptr %66, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.ImPlotAxis, ptr %1116, i32 0, i32 11
  %1118 = load ptr, ptr %5, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.ImPlotPlot, ptr %1118, i32 0, i32 13
  %1120 = load ptr, ptr %66, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.ImPlotAxis, ptr %1120, i32 0, i32 34
  %1122 = load i32, ptr %1121, align 4, !tbaa !186
  %1123 = load ptr, ptr %66, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.ImPlotAxis, ptr %1123, i32 0, i32 35
  %1125 = load i32, ptr %1124, align 8, !tbaa !187
  %1126 = load ptr, ptr %1, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.ImPlotContext, ptr %1126, i32 0, i32 12
  %1128 = getelementptr inbounds %struct.ImPlotStyle, ptr %1127, i32 0, i32 15
  %1129 = getelementptr inbounds %struct.ImVec2, ptr %1128, i32 0, i32 1
  %1130 = load float, ptr %1129, align 4, !tbaa !191
  %1131 = load ptr, ptr %1, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.ImPlotContext, ptr %1131, i32 0, i32 12
  %1133 = getelementptr inbounds %struct.ImPlotStyle, ptr %1132, i32 0, i32 16
  %1134 = getelementptr inbounds %struct.ImVec2, ptr %1133, i32 0, i32 1
  %1135 = load float, ptr %1134, align 4, !tbaa !192
  call void @_ZN6ImPlotL16RenderGridLinesYER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196) %1115, ptr noundef nonnull align 8 dereferenceable(52) %1117, ptr noundef nonnull align 4 dereferenceable(16) %1119, i32 noundef %1122, i32 noundef %1125, float noundef %1130, float noundef %1135)
  br label %1136

1136:                                             ; preds = %1114, %1111, %1108, %1100
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #12
  br label %1137

1137:                                             ; preds = %1136
  %1138 = load i32, ptr %65, align 4, !tbaa !120
  %1139 = add nsw i32 %1138, 1
  store i32 %1139, ptr %65, align 4, !tbaa !120
  br label %1096, !llvm.loop !193

1140:                                             ; preds = %1099
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #12
  store i32 0, ptr %67, align 4, !tbaa !120
  br label %1141

1141:                                             ; preds = %1429, %1140
  %1142 = load i32, ptr %67, align 4, !tbaa !120
  %1143 = icmp slt i32 %1142, 3
  br i1 %1143, label %1145, label %1144

1144:                                             ; preds = %1141
  store i32 38, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #12
  br label %1432

1145:                                             ; preds = %1141
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #12
  %1146 = load ptr, ptr %5, align 8, !tbaa !5
  %1147 = load i32, ptr %67, align 4, !tbaa !120
  %1148 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %1146, i32 noundef %1147)
  store ptr %1148, ptr %68, align 8, !tbaa !5
  %1149 = load ptr, ptr %68, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.ImPlotAxis, ptr %1149, i32 0, i32 42
  %1151 = load i8, ptr %1150, align 4, !tbaa !121, !range !125, !noundef !126
  %1152 = trunc i8 %1151 to i1
  br i1 %1152, label %1154, label %1153

1153:                                             ; preds = %1145
  store i32 40, ptr %51, align 4
  br label %1426

1154:                                             ; preds = %1145
  %1155 = load ptr, ptr %68, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.ImPlotAxis, ptr %1155, i32 0, i32 48
  %1157 = load i8, ptr %1156, align 2, !tbaa !194, !range !125, !noundef !126
  %1158 = trunc i8 %1157 to i1
  br i1 %1158, label %1164, label %1159

1159:                                             ; preds = %1154
  %1160 = load ptr, ptr %68, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.ImPlotAxis, ptr %1160, i32 0, i32 49
  %1162 = load i8, ptr %1161, align 1, !tbaa !195, !range !125, !noundef !126
  %1163 = trunc i8 %1162 to i1
  br i1 %1163, label %1164, label %1196

1164:                                             ; preds = %1159, %1154
  %1165 = load ptr, ptr %5, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.ImPlotPlot, ptr %1165, i32 0, i32 23
  %1167 = load i8, ptr %1166, align 1, !tbaa !196, !range !125, !noundef !126
  %1168 = trunc i8 %1167 to i1
  br i1 %1168, label %1196, label %1169

1169:                                             ; preds = %1164
  %1170 = load ptr, ptr %68, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.ImPlotAxis, ptr %1170, i32 0, i32 1
  %1172 = load i32, ptr %1171, align 4, !tbaa !197
  %1173 = call noundef zeroext i1 @_ZL9ImHasFlagIi16ImPlotAxisFlags_EbT_T0_(i32 noundef %1172, i32 noundef 128)
  br i1 %1173, label %1196, label %1174

1174:                                             ; preds = %1169
  %1175 = load ptr, ptr %3, align 8, !tbaa !5
  %1176 = load ptr, ptr %68, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.ImPlotAxis, ptr %1176, i32 0, i32 32
  %1178 = getelementptr inbounds %struct.ImRect, ptr %1177, i32 0, i32 0
  %1179 = load ptr, ptr %68, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.ImPlotAxis, ptr %1179, i32 0, i32 32
  %1181 = getelementptr inbounds %struct.ImRect, ptr %1180, i32 0, i32 1
  %1182 = load ptr, ptr %68, align 8, !tbaa !5
  %1183 = getelementptr inbounds %struct.ImPlotAxis, ptr %1182, i32 0, i32 49
  %1184 = load i8, ptr %1183, align 1, !tbaa !195, !range !125, !noundef !126
  %1185 = trunc i8 %1184 to i1
  br i1 %1185, label %1186, label %1190

1186:                                             ; preds = %1174
  %1187 = load ptr, ptr %68, align 8, !tbaa !5
  %1188 = getelementptr inbounds %struct.ImPlotAxis, ptr %1187, i32 0, i32 40
  %1189 = load i32, ptr %1188, align 4, !tbaa !198
  br label %1194

1190:                                             ; preds = %1174
  %1191 = load ptr, ptr %68, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.ImPlotAxis, ptr %1191, i32 0, i32 39
  %1193 = load i32, ptr %1192, align 8, !tbaa !199
  br label %1194

1194:                                             ; preds = %1190, %1186
  %1195 = phi i32 [ %1189, %1186 ], [ %1193, %1190 ]
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1175, ptr noundef nonnull align 4 dereferenceable(8) %1178, ptr noundef nonnull align 4 dereferenceable(8) %1181, i32 noundef %1195, float noundef 0.000000e+00, i32 noundef 0)
  br label %1232

1196:                                             ; preds = %1169, %1164, %1159
  %1197 = load ptr, ptr %68, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.ImPlotAxis, ptr %1197, i32 0, i32 41
  %1199 = load i32, ptr %1198, align 8, !tbaa !200
  %1200 = icmp ne i32 %1199, 0
  br i1 %1200, label %1201, label %1214

1201:                                             ; preds = %1196
  %1202 = load ptr, ptr %3, align 8, !tbaa !5
  %1203 = load ptr, ptr %68, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.ImPlotAxis, ptr %1203, i32 0, i32 32
  %1205 = getelementptr inbounds %struct.ImRect, ptr %1204, i32 0, i32 0
  %1206 = load ptr, ptr %68, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.ImPlotAxis, ptr %1206, i32 0, i32 32
  %1208 = getelementptr inbounds %struct.ImRect, ptr %1207, i32 0, i32 1
  %1209 = load ptr, ptr %68, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.ImPlotAxis, ptr %1209, i32 0, i32 41
  %1211 = load i32, ptr %1210, align 8, !tbaa !200
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1202, ptr noundef nonnull align 4 dereferenceable(8) %1205, ptr noundef nonnull align 4 dereferenceable(8) %1208, i32 noundef %1211, float noundef 0.000000e+00, i32 noundef 0)
  %1212 = load ptr, ptr %68, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.ImPlotAxis, ptr %1212, i32 0, i32 41
  store i32 0, ptr %1213, align 8, !tbaa !200
  br label %1231

1214:                                             ; preds = %1196
  %1215 = load ptr, ptr %68, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.ImPlotAxis, ptr %1215, i32 0, i32 38
  %1217 = load i32, ptr %1216, align 4, !tbaa !201
  %1218 = icmp ne i32 %1217, 0
  br i1 %1218, label %1219, label %1230

1219:                                             ; preds = %1214
  %1220 = load ptr, ptr %3, align 8, !tbaa !5
  %1221 = load ptr, ptr %68, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.ImPlotAxis, ptr %1221, i32 0, i32 32
  %1223 = getelementptr inbounds %struct.ImRect, ptr %1222, i32 0, i32 0
  %1224 = load ptr, ptr %68, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.ImPlotAxis, ptr %1224, i32 0, i32 32
  %1226 = getelementptr inbounds %struct.ImRect, ptr %1225, i32 0, i32 1
  %1227 = load ptr, ptr %68, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.ImPlotAxis, ptr %1227, i32 0, i32 38
  %1229 = load i32, ptr %1228, align 4, !tbaa !201
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1220, ptr noundef nonnull align 4 dereferenceable(8) %1223, ptr noundef nonnull align 4 dereferenceable(8) %1226, i32 noundef %1229, float noundef 0.000000e+00, i32 noundef 0)
  br label %1230

1230:                                             ; preds = %1219, %1214
  br label %1231

1231:                                             ; preds = %1230, %1201
  br label %1232

1232:                                             ; preds = %1231, %1194
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #12
  %1233 = load ptr, ptr %68, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.ImPlotAxis, ptr %1233, i32 0, i32 11
  store ptr %1234, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #12
  %1235 = load ptr, ptr %68, align 8, !tbaa !5
  %1236 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsOppositeEv(ptr noundef nonnull align 8 dereferenceable(372) %1235)
  %1237 = zext i1 %1236 to i8
  store i8 %1237, ptr %70, align 1, !tbaa !137
  %1238 = load ptr, ptr %68, align 8, !tbaa !5
  %1239 = call noundef zeroext i1 @_ZNK10ImPlotAxis8HasLabelEv(ptr noundef nonnull align 8 dereferenceable(372) %1238)
  br i1 %1239, label %1240, label %1314

1240:                                             ; preds = %1232
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #12
  %1241 = load ptr, ptr %5, align 8, !tbaa !5
  %1242 = load ptr, ptr %68, align 8, !tbaa !5
  %1243 = call noundef ptr @_ZNK10ImPlotPlot12GetAxisLabelERK10ImPlotAxis(ptr noundef nonnull align 8 dereferenceable(2533) %1241, ptr noundef nonnull align 8 dereferenceable(372) %1242)
  store ptr %1243, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #12
  %1244 = load ptr, ptr %71, align 8, !tbaa !5
  %1245 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %1244, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  store <2 x float> %1245, ptr %72, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #12
  %1246 = load ptr, ptr %68, align 8, !tbaa !5
  %1247 = call noundef zeroext i1 @_ZNK10ImPlotAxis13HasTickLabelsEv(ptr noundef nonnull align 8 dereferenceable(372) %1246)
  br i1 %1247, label %1248, label %1259

1248:                                             ; preds = %1240
  %1249 = load ptr, ptr %69, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.ImPlotTicker, ptr %1249, i32 0, i32 2
  %1251 = getelementptr inbounds %struct.ImVec2, ptr %1250, i32 0, i32 1
  %1252 = load float, ptr %1251, align 4, !tbaa !202
  %1253 = load ptr, ptr %1, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct.ImPlotContext, ptr %1253, i32 0, i32 12
  %1255 = getelementptr inbounds %struct.ImPlotStyle, ptr %1254, i32 0, i32 18
  %1256 = getelementptr inbounds %struct.ImVec2, ptr %1255, i32 0, i32 1
  %1257 = load float, ptr %1256, align 4, !tbaa !160
  %1258 = fadd float %1252, %1257
  br label %1260

1259:                                             ; preds = %1240
  br label %1260

1260:                                             ; preds = %1259, %1248
  %1261 = phi float [ %1258, %1248 ], [ 0.000000e+00, %1259 ]
  %1262 = load ptr, ptr %69, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.ImPlotTicker, ptr %1262, i32 0, i32 4
  %1264 = load i32, ptr %1263, align 8, !tbaa !203
  %1265 = sub nsw i32 %1264, 1
  %1266 = sitofp i32 %1265 to float
  %1267 = load float, ptr %56, align 4, !tbaa !141
  %1268 = load ptr, ptr %1, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.ImPlotContext, ptr %1268, i32 0, i32 12
  %1270 = getelementptr inbounds %struct.ImPlotStyle, ptr %1269, i32 0, i32 18
  %1271 = getelementptr inbounds %struct.ImVec2, ptr %1270, i32 0, i32 1
  %1272 = load float, ptr %1271, align 4, !tbaa !160
  %1273 = fadd float %1267, %1272
  %1274 = call float @llvm.fmuladd.f32(float %1266, float %1273, float %1261)
  %1275 = load ptr, ptr %1, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.ImPlotContext, ptr %1275, i32 0, i32 12
  %1277 = getelementptr inbounds %struct.ImPlotStyle, ptr %1276, i32 0, i32 18
  %1278 = getelementptr inbounds %struct.ImVec2, ptr %1277, i32 0, i32 1
  %1279 = load float, ptr %1278, align 4, !tbaa !160
  %1280 = fadd float %1274, %1279
  store float %1280, ptr %73, align 4, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #12
  %1281 = load ptr, ptr %5, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.ImPlotPlot, ptr %1281, i32 0, i32 13
  %1283 = call <2 x float> @_ZNK6ImRect9GetCenterEv(ptr noundef nonnull align 4 dereferenceable(16) %1282)
  store <2 x float> %1283, ptr %75, align 4
  %1284 = getelementptr inbounds %struct.ImVec2, ptr %75, i32 0, i32 0
  %1285 = load float, ptr %1284, align 4, !tbaa !145
  %1286 = getelementptr inbounds %struct.ImVec2, ptr %72, i32 0, i32 0
  %1287 = load float, ptr %1286, align 4, !tbaa !145
  %1288 = fneg float %1287
  %1289 = call float @llvm.fmuladd.f32(float %1288, float 5.000000e-01, float %1285)
  %1290 = load i8, ptr %70, align 1, !tbaa !137, !range !125, !noundef !126
  %1291 = trunc i8 %1290 to i1
  br i1 %1291, label %1292, label %1301

1292:                                             ; preds = %1260
  %1293 = load ptr, ptr %68, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.ImPlotAxis, ptr %1293, i32 0, i32 30
  %1295 = load float, ptr %1294, align 8, !tbaa !167
  %1296 = load float, ptr %73, align 4, !tbaa !141
  %1297 = fsub float %1295, %1296
  %1298 = getelementptr inbounds %struct.ImVec2, ptr %72, i32 0, i32 1
  %1299 = load float, ptr %1298, align 4, !tbaa !152
  %1300 = fsub float %1297, %1299
  br label %1307

1301:                                             ; preds = %1260
  %1302 = load ptr, ptr %68, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.ImPlotAxis, ptr %1302, i32 0, i32 30
  %1304 = load float, ptr %1303, align 8, !tbaa !167
  %1305 = load float, ptr %73, align 4, !tbaa !141
  %1306 = fadd float %1304, %1305
  br label %1307

1307:                                             ; preds = %1301, %1292
  %1308 = phi float [ %1300, %1292 ], [ %1306, %1301 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %74, float noundef %1289, float noundef %1308)
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #12
  %1309 = load ptr, ptr %3, align 8, !tbaa !5
  %1310 = load ptr, ptr %68, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.ImPlotAxis, ptr %1310, i32 0, i32 37
  %1312 = load i32, ptr %1311, align 8, !tbaa !204
  %1313 = load ptr, ptr %71, align 8, !tbaa !5
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196) %1309, ptr noundef nonnull align 4 dereferenceable(8) %74, i32 noundef %1312, ptr noundef %1313, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #12
  br label %1314

1314:                                             ; preds = %1307, %1232
  %1315 = load ptr, ptr %68, align 8, !tbaa !5
  %1316 = call noundef zeroext i1 @_ZNK10ImPlotAxis13HasTickLabelsEv(ptr noundef nonnull align 8 dereferenceable(372) %1315)
  br i1 %1316, label %1317, label %1425

1317:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #12
  store i32 0, ptr %76, align 4, !tbaa !120
  br label %1318

1318:                                             ; preds = %1421, %1317
  %1319 = load i32, ptr %76, align 4, !tbaa !120
  %1320 = load ptr, ptr %69, align 8, !tbaa !5
  %1321 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %1320)
  %1322 = icmp slt i32 %1319, %1321
  br i1 %1322, label %1324, label %1323

1323:                                             ; preds = %1318
  store i32 41, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #12
  br label %1424

1324:                                             ; preds = %1318
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #12
  %1325 = load ptr, ptr %69, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.ImPlotTicker, ptr %1325, i32 0, i32 0
  %1327 = load i32, ptr %76, align 4, !tbaa !120
  %1328 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1326, i32 noundef %1327)
  store ptr %1328, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #12
  %1329 = load ptr, ptr %68, align 8, !tbaa !5
  %1330 = getelementptr inbounds %struct.ImPlotAxis, ptr %1329, i32 0, i32 30
  %1331 = load float, ptr %1330, align 8, !tbaa !167
  %1332 = load i8, ptr %70, align 1, !tbaa !137, !range !125, !noundef !126
  %1333 = trunc i8 %1332 to i1
  br i1 %1333, label %1334, label %1356

1334:                                             ; preds = %1324
  %1335 = load ptr, ptr %1, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct.ImPlotContext, ptr %1335, i32 0, i32 12
  %1337 = getelementptr inbounds %struct.ImPlotStyle, ptr %1336, i32 0, i32 18
  %1338 = getelementptr inbounds %struct.ImVec2, ptr %1337, i32 0, i32 1
  %1339 = load float, ptr %1338, align 4, !tbaa !160
  %1340 = fneg float %1339
  %1341 = load float, ptr %56, align 4, !tbaa !141
  %1342 = fsub float %1340, %1341
  %1343 = load ptr, ptr %77, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.ImPlotTick, ptr %1343, i32 0, i32 7
  %1345 = load i32, ptr %1344, align 4, !tbaa !205
  %1346 = sitofp i32 %1345 to float
  %1347 = load float, ptr %56, align 4, !tbaa !141
  %1348 = load ptr, ptr %1, align 8, !tbaa !5
  %1349 = getelementptr inbounds %struct.ImPlotContext, ptr %1348, i32 0, i32 12
  %1350 = getelementptr inbounds %struct.ImPlotStyle, ptr %1349, i32 0, i32 18
  %1351 = getelementptr inbounds %struct.ImVec2, ptr %1350, i32 0, i32 1
  %1352 = load float, ptr %1351, align 4, !tbaa !160
  %1353 = fadd float %1347, %1352
  %1354 = fneg float %1346
  %1355 = call float @llvm.fmuladd.f32(float %1354, float %1353, float %1342)
  br label %1374

1356:                                             ; preds = %1324
  %1357 = load ptr, ptr %1, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.ImPlotContext, ptr %1357, i32 0, i32 12
  %1359 = getelementptr inbounds %struct.ImPlotStyle, ptr %1358, i32 0, i32 18
  %1360 = getelementptr inbounds %struct.ImVec2, ptr %1359, i32 0, i32 1
  %1361 = load float, ptr %1360, align 4, !tbaa !160
  %1362 = load ptr, ptr %77, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.ImPlotTick, ptr %1362, i32 0, i32 7
  %1364 = load i32, ptr %1363, align 4, !tbaa !205
  %1365 = sitofp i32 %1364 to float
  %1366 = load float, ptr %56, align 4, !tbaa !141
  %1367 = load ptr, ptr %1, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.ImPlotContext, ptr %1367, i32 0, i32 12
  %1369 = getelementptr inbounds %struct.ImPlotStyle, ptr %1368, i32 0, i32 18
  %1370 = getelementptr inbounds %struct.ImVec2, ptr %1369, i32 0, i32 1
  %1371 = load float, ptr %1370, align 4, !tbaa !160
  %1372 = fadd float %1366, %1371
  %1373 = call float @llvm.fmuladd.f32(float %1365, float %1372, float %1361)
  br label %1374

1374:                                             ; preds = %1356, %1334
  %1375 = phi float [ %1355, %1334 ], [ %1373, %1356 ]
  %1376 = fadd float %1331, %1375
  store float %1376, ptr %78, align 4, !tbaa !141
  %1377 = load ptr, ptr %77, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.ImPlotTick, ptr %1377, i32 0, i32 5
  %1379 = load i8, ptr %1378, align 1, !tbaa !206, !range !125, !noundef !126
  %1380 = trunc i8 %1379 to i1
  br i1 %1380, label %1381, label %1420

1381:                                             ; preds = %1374
  %1382 = load ptr, ptr %77, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.ImPlotTick, ptr %1382, i32 0, i32 1
  %1384 = load float, ptr %1383, align 8, !tbaa !183
  %1385 = load ptr, ptr %5, align 8, !tbaa !5
  %1386 = getelementptr inbounds %struct.ImPlotPlot, ptr %1385, i32 0, i32 13
  %1387 = getelementptr inbounds %struct.ImRect, ptr %1386, i32 0, i32 0
  %1388 = getelementptr inbounds %struct.ImVec2, ptr %1387, i32 0, i32 0
  %1389 = load float, ptr %1388, align 8, !tbaa !166
  %1390 = fsub float %1389, 1.000000e+00
  %1391 = fcmp oge float %1384, %1390
  br i1 %1391, label %1392, label %1420

1392:                                             ; preds = %1381
  %1393 = load ptr, ptr %77, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.ImPlotTick, ptr %1393, i32 0, i32 1
  %1395 = load float, ptr %1394, align 8, !tbaa !183
  %1396 = load ptr, ptr %5, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.ImPlotPlot, ptr %1396, i32 0, i32 13
  %1398 = getelementptr inbounds %struct.ImRect, ptr %1397, i32 0, i32 1
  %1399 = getelementptr inbounds %struct.ImVec2, ptr %1398, i32 0, i32 0
  %1400 = load float, ptr %1399, align 8, !tbaa !169
  %1401 = fadd float %1400, 1.000000e+00
  %1402 = fcmp ole float %1395, %1401
  br i1 %1402, label %1403, label %1420

1403:                                             ; preds = %1392
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #12
  %1404 = load ptr, ptr %77, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.ImPlotTick, ptr %1404, i32 0, i32 1
  %1406 = load float, ptr %1405, align 8, !tbaa !183
  %1407 = load ptr, ptr %77, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.ImPlotTick, ptr %1407, i32 0, i32 2
  %1409 = getelementptr inbounds %struct.ImVec2, ptr %1408, i32 0, i32 0
  %1410 = load float, ptr %1409, align 4, !tbaa !207
  %1411 = call float @llvm.fmuladd.f32(float -5.000000e-01, float %1410, float %1406)
  %1412 = load float, ptr %78, align 4, !tbaa !141
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %79, float noundef %1411, float noundef %1412)
  %1413 = load ptr, ptr %3, align 8, !tbaa !5
  %1414 = load ptr, ptr %68, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.ImPlotAxis, ptr %1414, i32 0, i32 37
  %1416 = load i32, ptr %1415, align 8, !tbaa !204
  %1417 = load ptr, ptr %69, align 8, !tbaa !5
  %1418 = load i32, ptr %76, align 4, !tbaa !120
  %1419 = call noundef ptr @_ZNK12ImPlotTicker7GetTextEi(ptr noundef nonnull align 8 dereferenceable(52) %1417, i32 noundef %1418)
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196) %1413, ptr noundef nonnull align 4 dereferenceable(8) %79, i32 noundef %1416, ptr noundef %1419, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #12
  br label %1420

1420:                                             ; preds = %1403, %1392, %1381, %1374
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  br label %1421

1421:                                             ; preds = %1420
  %1422 = load i32, ptr %76, align 4, !tbaa !120
  %1423 = add nsw i32 %1422, 1
  store i32 %1423, ptr %76, align 4, !tbaa !120
  br label %1318, !llvm.loop !208

1424:                                             ; preds = %1323
  br label %1425

1425:                                             ; preds = %1424, %1314
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #12
  store i32 0, ptr %51, align 4
  br label %1426

1426:                                             ; preds = %1425, %1153
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #12
  %1427 = load i32, ptr %51, align 4
  switch i32 %1427, label %1698 [
    i32 0, label %1428
    i32 40, label %1429
  ]

1428:                                             ; preds = %1426
  br label %1429

1429:                                             ; preds = %1428, %1426
  %1430 = load i32, ptr %67, align 4, !tbaa !120
  %1431 = add nsw i32 %1430, 1
  store i32 %1431, ptr %67, align 4, !tbaa !120
  br label %1141, !llvm.loop !209

1432:                                             ; preds = %1144
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #12
  store i32 0, ptr %80, align 4, !tbaa !120
  br label %1433

1433:                                             ; preds = %1686, %1432
  %1434 = load i32, ptr %80, align 4, !tbaa !120
  %1435 = icmp slt i32 %1434, 3
  br i1 %1435, label %1437, label %1436

1436:                                             ; preds = %1433
  store i32 44, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #12
  br label %1689

1437:                                             ; preds = %1433
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #12
  %1438 = load ptr, ptr %5, align 8, !tbaa !5
  %1439 = load i32, ptr %80, align 4, !tbaa !120
  %1440 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %1438, i32 noundef %1439)
  store ptr %1440, ptr %81, align 8, !tbaa !5
  %1441 = load ptr, ptr %81, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.ImPlotAxis, ptr %1441, i32 0, i32 42
  %1443 = load i8, ptr %1442, align 4, !tbaa !121, !range !125, !noundef !126
  %1444 = trunc i8 %1443 to i1
  br i1 %1444, label %1446, label %1445

1445:                                             ; preds = %1437
  store i32 46, ptr %51, align 4
  br label %1683

1446:                                             ; preds = %1437
  %1447 = load ptr, ptr %81, align 8, !tbaa !5
  %1448 = getelementptr inbounds %struct.ImPlotAxis, ptr %1447, i32 0, i32 48
  %1449 = load i8, ptr %1448, align 2, !tbaa !194, !range !125, !noundef !126
  %1450 = trunc i8 %1449 to i1
  br i1 %1450, label %1456, label %1451

1451:                                             ; preds = %1446
  %1452 = load ptr, ptr %81, align 8, !tbaa !5
  %1453 = getelementptr inbounds %struct.ImPlotAxis, ptr %1452, i32 0, i32 49
  %1454 = load i8, ptr %1453, align 1, !tbaa !195, !range !125, !noundef !126
  %1455 = trunc i8 %1454 to i1
  br i1 %1455, label %1456, label %1488

1456:                                             ; preds = %1451, %1446
  %1457 = load ptr, ptr %5, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.ImPlotPlot, ptr %1457, i32 0, i32 23
  %1459 = load i8, ptr %1458, align 1, !tbaa !196, !range !125, !noundef !126
  %1460 = trunc i8 %1459 to i1
  br i1 %1460, label %1488, label %1461

1461:                                             ; preds = %1456
  %1462 = load ptr, ptr %81, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.ImPlotAxis, ptr %1462, i32 0, i32 1
  %1464 = load i32, ptr %1463, align 4, !tbaa !197
  %1465 = call noundef zeroext i1 @_ZL9ImHasFlagIi16ImPlotAxisFlags_EbT_T0_(i32 noundef %1464, i32 noundef 128)
  br i1 %1465, label %1488, label %1466

1466:                                             ; preds = %1461
  %1467 = load ptr, ptr %3, align 8, !tbaa !5
  %1468 = load ptr, ptr %81, align 8, !tbaa !5
  %1469 = getelementptr inbounds %struct.ImPlotAxis, ptr %1468, i32 0, i32 32
  %1470 = getelementptr inbounds %struct.ImRect, ptr %1469, i32 0, i32 0
  %1471 = load ptr, ptr %81, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.ImPlotAxis, ptr %1471, i32 0, i32 32
  %1473 = getelementptr inbounds %struct.ImRect, ptr %1472, i32 0, i32 1
  %1474 = load ptr, ptr %81, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.ImPlotAxis, ptr %1474, i32 0, i32 49
  %1476 = load i8, ptr %1475, align 1, !tbaa !195, !range !125, !noundef !126
  %1477 = trunc i8 %1476 to i1
  br i1 %1477, label %1478, label %1482

1478:                                             ; preds = %1466
  %1479 = load ptr, ptr %81, align 8, !tbaa !5
  %1480 = getelementptr inbounds %struct.ImPlotAxis, ptr %1479, i32 0, i32 40
  %1481 = load i32, ptr %1480, align 4, !tbaa !198
  br label %1486

1482:                                             ; preds = %1466
  %1483 = load ptr, ptr %81, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.ImPlotAxis, ptr %1483, i32 0, i32 39
  %1485 = load i32, ptr %1484, align 8, !tbaa !199
  br label %1486

1486:                                             ; preds = %1482, %1478
  %1487 = phi i32 [ %1481, %1478 ], [ %1485, %1482 ]
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1467, ptr noundef nonnull align 4 dereferenceable(8) %1470, ptr noundef nonnull align 4 dereferenceable(8) %1473, i32 noundef %1487, float noundef 0.000000e+00, i32 noundef 0)
  br label %1524

1488:                                             ; preds = %1461, %1456, %1451
  %1489 = load ptr, ptr %81, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.ImPlotAxis, ptr %1489, i32 0, i32 41
  %1491 = load i32, ptr %1490, align 8, !tbaa !200
  %1492 = icmp ne i32 %1491, 0
  br i1 %1492, label %1493, label %1506

1493:                                             ; preds = %1488
  %1494 = load ptr, ptr %3, align 8, !tbaa !5
  %1495 = load ptr, ptr %81, align 8, !tbaa !5
  %1496 = getelementptr inbounds %struct.ImPlotAxis, ptr %1495, i32 0, i32 32
  %1497 = getelementptr inbounds %struct.ImRect, ptr %1496, i32 0, i32 0
  %1498 = load ptr, ptr %81, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.ImPlotAxis, ptr %1498, i32 0, i32 32
  %1500 = getelementptr inbounds %struct.ImRect, ptr %1499, i32 0, i32 1
  %1501 = load ptr, ptr %81, align 8, !tbaa !5
  %1502 = getelementptr inbounds %struct.ImPlotAxis, ptr %1501, i32 0, i32 41
  %1503 = load i32, ptr %1502, align 8, !tbaa !200
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1494, ptr noundef nonnull align 4 dereferenceable(8) %1497, ptr noundef nonnull align 4 dereferenceable(8) %1500, i32 noundef %1503, float noundef 0.000000e+00, i32 noundef 0)
  %1504 = load ptr, ptr %81, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.ImPlotAxis, ptr %1504, i32 0, i32 41
  store i32 0, ptr %1505, align 8, !tbaa !200
  br label %1523

1506:                                             ; preds = %1488
  %1507 = load ptr, ptr %81, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.ImPlotAxis, ptr %1507, i32 0, i32 38
  %1509 = load i32, ptr %1508, align 4, !tbaa !201
  %1510 = icmp ne i32 %1509, 0
  br i1 %1510, label %1511, label %1522

1511:                                             ; preds = %1506
  %1512 = load ptr, ptr %3, align 8, !tbaa !5
  %1513 = load ptr, ptr %81, align 8, !tbaa !5
  %1514 = getelementptr inbounds %struct.ImPlotAxis, ptr %1513, i32 0, i32 32
  %1515 = getelementptr inbounds %struct.ImRect, ptr %1514, i32 0, i32 0
  %1516 = load ptr, ptr %81, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.ImPlotAxis, ptr %1516, i32 0, i32 32
  %1518 = getelementptr inbounds %struct.ImRect, ptr %1517, i32 0, i32 1
  %1519 = load ptr, ptr %81, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.ImPlotAxis, ptr %1519, i32 0, i32 38
  %1521 = load i32, ptr %1520, align 4, !tbaa !201
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1512, ptr noundef nonnull align 4 dereferenceable(8) %1515, ptr noundef nonnull align 4 dereferenceable(8) %1518, i32 noundef %1521, float noundef 0.000000e+00, i32 noundef 0)
  br label %1522

1522:                                             ; preds = %1511, %1506
  br label %1523

1523:                                             ; preds = %1522, %1493
  br label %1524

1524:                                             ; preds = %1523, %1486
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #12
  %1525 = load ptr, ptr %81, align 8, !tbaa !5
  %1526 = getelementptr inbounds %struct.ImPlotAxis, ptr %1525, i32 0, i32 11
  store ptr %1526, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #12
  %1527 = load ptr, ptr %81, align 8, !tbaa !5
  %1528 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsOppositeEv(ptr noundef nonnull align 8 dereferenceable(372) %1527)
  %1529 = zext i1 %1528 to i8
  store i8 %1529, ptr %83, align 1, !tbaa !137
  %1530 = load ptr, ptr %81, align 8, !tbaa !5
  %1531 = call noundef zeroext i1 @_ZNK10ImPlotAxis8HasLabelEv(ptr noundef nonnull align 8 dereferenceable(372) %1530)
  br i1 %1531, label %1532, label %1593

1532:                                             ; preds = %1524
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #12
  %1533 = load ptr, ptr %5, align 8, !tbaa !5
  %1534 = load ptr, ptr %81, align 8, !tbaa !5
  %1535 = call noundef ptr @_ZNK10ImPlotPlot12GetAxisLabelERK10ImPlotAxis(ptr noundef nonnull align 8 dereferenceable(2533) %1533, ptr noundef nonnull align 8 dereferenceable(372) %1534)
  store ptr %1535, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #12
  %1536 = load ptr, ptr %84, align 8, !tbaa !5
  %1537 = call <2 x float> @_ZN6ImPlotL20CalcTextSizeVerticalEPKc(ptr noundef %1536)
  store <2 x float> %1537, ptr %85, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #12
  %1538 = load ptr, ptr %81, align 8, !tbaa !5
  %1539 = call noundef zeroext i1 @_ZNK10ImPlotAxis13HasTickLabelsEv(ptr noundef nonnull align 8 dereferenceable(372) %1538)
  br i1 %1539, label %1540, label %1551

1540:                                             ; preds = %1532
  %1541 = load ptr, ptr %82, align 8, !tbaa !5
  %1542 = getelementptr inbounds %struct.ImPlotTicker, ptr %1541, i32 0, i32 2
  %1543 = getelementptr inbounds %struct.ImVec2, ptr %1542, i32 0, i32 0
  %1544 = load float, ptr %1543, align 8, !tbaa !210
  %1545 = load ptr, ptr %1, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.ImPlotContext, ptr %1545, i32 0, i32 12
  %1547 = getelementptr inbounds %struct.ImPlotStyle, ptr %1546, i32 0, i32 18
  %1548 = getelementptr inbounds %struct.ImVec2, ptr %1547, i32 0, i32 0
  %1549 = load float, ptr %1548, align 4, !tbaa !211
  %1550 = fadd float %1544, %1549
  br label %1552

1551:                                             ; preds = %1532
  br label %1552

1552:                                             ; preds = %1551, %1540
  %1553 = phi float [ %1550, %1540 ], [ 0.000000e+00, %1551 ]
  %1554 = load ptr, ptr %1, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.ImPlotContext, ptr %1554, i32 0, i32 12
  %1556 = getelementptr inbounds %struct.ImPlotStyle, ptr %1555, i32 0, i32 18
  %1557 = getelementptr inbounds %struct.ImVec2, ptr %1556, i32 0, i32 0
  %1558 = load float, ptr %1557, align 4, !tbaa !211
  %1559 = fadd float %1553, %1558
  store float %1559, ptr %86, align 4, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #12
  %1560 = load i8, ptr %83, align 1, !tbaa !137, !range !125, !noundef !126
  %1561 = trunc i8 %1560 to i1
  br i1 %1561, label %1562, label %1568

1562:                                             ; preds = %1552
  %1563 = load ptr, ptr %81, align 8, !tbaa !5
  %1564 = getelementptr inbounds %struct.ImPlotAxis, ptr %1563, i32 0, i32 30
  %1565 = load float, ptr %1564, align 8, !tbaa !167
  %1566 = load float, ptr %86, align 4, !tbaa !141
  %1567 = fadd float %1565, %1566
  br label %1577

1568:                                             ; preds = %1552
  %1569 = load ptr, ptr %81, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.ImPlotAxis, ptr %1569, i32 0, i32 30
  %1571 = load float, ptr %1570, align 8, !tbaa !167
  %1572 = load float, ptr %86, align 4, !tbaa !141
  %1573 = fsub float %1571, %1572
  %1574 = getelementptr inbounds %struct.ImVec2, ptr %85, i32 0, i32 0
  %1575 = load float, ptr %1574, align 4, !tbaa !145
  %1576 = fsub float %1573, %1575
  br label %1577

1577:                                             ; preds = %1568, %1562
  %1578 = phi float [ %1567, %1562 ], [ %1576, %1568 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #12
  %1579 = load ptr, ptr %5, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.ImPlotPlot, ptr %1579, i32 0, i32 13
  %1581 = call <2 x float> @_ZNK6ImRect9GetCenterEv(ptr noundef nonnull align 4 dereferenceable(16) %1580)
  store <2 x float> %1581, ptr %88, align 4
  %1582 = getelementptr inbounds %struct.ImVec2, ptr %88, i32 0, i32 1
  %1583 = load float, ptr %1582, align 4, !tbaa !152
  %1584 = getelementptr inbounds %struct.ImVec2, ptr %85, i32 0, i32 1
  %1585 = load float, ptr %1584, align 4, !tbaa !152
  %1586 = call float @llvm.fmuladd.f32(float %1585, float 5.000000e-01, float %1583)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %87, float noundef %1578, float noundef %1586)
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #12
  %1587 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %89, ptr align 4 %87, i64 8, i1 false), !tbaa.struct !159
  %1588 = load ptr, ptr %81, align 8, !tbaa !5
  %1589 = getelementptr inbounds %struct.ImPlotAxis, ptr %1588, i32 0, i32 37
  %1590 = load i32, ptr %1589, align 8, !tbaa !204
  %1591 = load ptr, ptr %84, align 8, !tbaa !5
  %1592 = load <2 x float>, ptr %89, align 4
  call void @_ZN6ImPlot15AddTextVerticalEP10ImDrawList6ImVec2jPKcS4_(ptr noundef %1587, <2 x float> %1592, i32 noundef %1590, ptr noundef %1591, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #12
  br label %1593

1593:                                             ; preds = %1577, %1524
  %1594 = load ptr, ptr %81, align 8, !tbaa !5
  %1595 = call noundef zeroext i1 @_ZNK10ImPlotAxis13HasTickLabelsEv(ptr noundef nonnull align 8 dereferenceable(372) %1594)
  br i1 %1595, label %1596, label %1682

1596:                                             ; preds = %1593
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #12
  store i32 0, ptr %90, align 4, !tbaa !120
  br label %1597

1597:                                             ; preds = %1678, %1596
  %1598 = load i32, ptr %90, align 4, !tbaa !120
  %1599 = load ptr, ptr %82, align 8, !tbaa !5
  %1600 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %1599)
  %1601 = icmp slt i32 %1598, %1600
  br i1 %1601, label %1603, label %1602

1602:                                             ; preds = %1597
  store i32 47, ptr %51, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #12
  br label %1681

1603:                                             ; preds = %1597
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #12
  %1604 = load ptr, ptr %82, align 8, !tbaa !5
  %1605 = getelementptr inbounds %struct.ImPlotTicker, ptr %1604, i32 0, i32 0
  %1606 = load i32, ptr %90, align 4, !tbaa !120
  %1607 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1605, i32 noundef %1606)
  store ptr %1607, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #12
  %1608 = load ptr, ptr %81, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.ImPlotAxis, ptr %1608, i32 0, i32 30
  %1610 = load float, ptr %1609, align 8, !tbaa !167
  %1611 = load i8, ptr %83, align 1, !tbaa !137, !range !125, !noundef !126
  %1612 = trunc i8 %1611 to i1
  br i1 %1612, label %1613, label %1619

1613:                                             ; preds = %1603
  %1614 = load ptr, ptr %1, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.ImPlotContext, ptr %1614, i32 0, i32 12
  %1616 = getelementptr inbounds %struct.ImPlotStyle, ptr %1615, i32 0, i32 18
  %1617 = getelementptr inbounds %struct.ImVec2, ptr %1616, i32 0, i32 0
  %1618 = load float, ptr %1617, align 4, !tbaa !211
  br label %1631

1619:                                             ; preds = %1603
  %1620 = load ptr, ptr %1, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.ImPlotContext, ptr %1620, i32 0, i32 12
  %1622 = getelementptr inbounds %struct.ImPlotStyle, ptr %1621, i32 0, i32 18
  %1623 = getelementptr inbounds %struct.ImVec2, ptr %1622, i32 0, i32 0
  %1624 = load float, ptr %1623, align 4, !tbaa !211
  %1625 = fneg float %1624
  %1626 = load ptr, ptr %91, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.ImPlotTick, ptr %1626, i32 0, i32 2
  %1628 = getelementptr inbounds %struct.ImVec2, ptr %1627, i32 0, i32 0
  %1629 = load float, ptr %1628, align 4, !tbaa !207
  %1630 = fsub float %1625, %1629
  br label %1631

1631:                                             ; preds = %1619, %1613
  %1632 = phi float [ %1618, %1613 ], [ %1630, %1619 ]
  %1633 = fadd float %1610, %1632
  store float %1633, ptr %92, align 4, !tbaa !141
  %1634 = load ptr, ptr %91, align 8, !tbaa !5
  %1635 = getelementptr inbounds %struct.ImPlotTick, ptr %1634, i32 0, i32 5
  %1636 = load i8, ptr %1635, align 1, !tbaa !206, !range !125, !noundef !126
  %1637 = trunc i8 %1636 to i1
  br i1 %1637, label %1638, label %1677

1638:                                             ; preds = %1631
  %1639 = load ptr, ptr %91, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct.ImPlotTick, ptr %1639, i32 0, i32 1
  %1641 = load float, ptr %1640, align 8, !tbaa !183
  %1642 = load ptr, ptr %5, align 8, !tbaa !5
  %1643 = getelementptr inbounds %struct.ImPlotPlot, ptr %1642, i32 0, i32 13
  %1644 = getelementptr inbounds %struct.ImRect, ptr %1643, i32 0, i32 0
  %1645 = getelementptr inbounds %struct.ImVec2, ptr %1644, i32 0, i32 1
  %1646 = load float, ptr %1645, align 4, !tbaa !173
  %1647 = fsub float %1646, 1.000000e+00
  %1648 = fcmp oge float %1641, %1647
  br i1 %1648, label %1649, label %1677

1649:                                             ; preds = %1638
  %1650 = load ptr, ptr %91, align 8, !tbaa !5
  %1651 = getelementptr inbounds %struct.ImPlotTick, ptr %1650, i32 0, i32 1
  %1652 = load float, ptr %1651, align 8, !tbaa !183
  %1653 = load ptr, ptr %5, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.ImPlotPlot, ptr %1653, i32 0, i32 13
  %1655 = getelementptr inbounds %struct.ImRect, ptr %1654, i32 0, i32 1
  %1656 = getelementptr inbounds %struct.ImVec2, ptr %1655, i32 0, i32 1
  %1657 = load float, ptr %1656, align 4, !tbaa !174
  %1658 = fadd float %1657, 1.000000e+00
  %1659 = fcmp ole float %1652, %1658
  br i1 %1659, label %1660, label %1677

1660:                                             ; preds = %1649
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #12
  %1661 = load float, ptr %92, align 4, !tbaa !141
  %1662 = load ptr, ptr %91, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.ImPlotTick, ptr %1662, i32 0, i32 1
  %1664 = load float, ptr %1663, align 8, !tbaa !183
  %1665 = load ptr, ptr %91, align 8, !tbaa !5
  %1666 = getelementptr inbounds %struct.ImPlotTick, ptr %1665, i32 0, i32 2
  %1667 = getelementptr inbounds %struct.ImVec2, ptr %1666, i32 0, i32 1
  %1668 = load float, ptr %1667, align 4, !tbaa !212
  %1669 = call float @llvm.fmuladd.f32(float -5.000000e-01, float %1668, float %1664)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %93, float noundef %1661, float noundef %1669)
  %1670 = load ptr, ptr %3, align 8, !tbaa !5
  %1671 = load ptr, ptr %81, align 8, !tbaa !5
  %1672 = getelementptr inbounds %struct.ImPlotAxis, ptr %1671, i32 0, i32 37
  %1673 = load i32, ptr %1672, align 8, !tbaa !204
  %1674 = load ptr, ptr %82, align 8, !tbaa !5
  %1675 = load i32, ptr %90, align 4, !tbaa !120
  %1676 = call noundef ptr @_ZNK12ImPlotTicker7GetTextEi(ptr noundef nonnull align 8 dereferenceable(52) %1674, i32 noundef %1675)
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196) %1670, ptr noundef nonnull align 4 dereferenceable(8) %93, i32 noundef %1673, ptr noundef %1676, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #12
  br label %1677

1677:                                             ; preds = %1660, %1649, %1638, %1631
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #12
  br label %1678

1678:                                             ; preds = %1677
  %1679 = load i32, ptr %90, align 4, !tbaa !120
  %1680 = add nsw i32 %1679, 1
  store i32 %1680, ptr %90, align 4, !tbaa !120
  br label %1597, !llvm.loop !213

1681:                                             ; preds = %1602
  br label %1682

1682:                                             ; preds = %1681, %1593
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #12
  store i32 0, ptr %51, align 4
  br label %1683

1683:                                             ; preds = %1682, %1445
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #12
  %1684 = load i32, ptr %51, align 4
  switch i32 %1684, label %1698 [
    i32 0, label %1685
    i32 46, label %1686
  ]

1685:                                             ; preds = %1683
  br label %1686

1686:                                             ; preds = %1685, %1683
  %1687 = load i32, ptr %80, align 4, !tbaa !120
  %1688 = add nsw i32 %1687, 1
  store i32 %1688, ptr %80, align 4, !tbaa !120
  br label %1433, !llvm.loop !214

1689:                                             ; preds = %1436
  %1690 = load ptr, ptr %5, align 8, !tbaa !5
  %1691 = getelementptr inbounds %struct.ImPlotPlot, ptr %1690, i32 0, i32 8
  %1692 = getelementptr inbounds %struct.ImPlotItemGroup, ptr %1691, i32 0, i32 2
  call void @_ZN12ImPlotLegend5ResetEv(ptr noundef nonnull align 8 dereferenceable(67) %1692)
  %1693 = load ptr, ptr %1, align 8, !tbaa !5
  %1694 = getelementptr inbounds %struct.ImPlotContext, ptr %1693, i32 0, i32 4
  %1695 = load ptr, ptr %1694, align 8, !tbaa !215
  %1696 = getelementptr inbounds %struct.ImPlotItemGroup, ptr %1695, i32 0, i32 0
  %1697 = load i32, ptr %1696, align 8, !tbaa !216
  call void @_ZN5ImGui14PushOverrideIDEj(i32 noundef %1697)
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %2) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %1) #12
  ret void

1698:                                             ; preds = %1683, %1426, %929
  unreachable
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis10CanInitFitEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK10ImPlotPlot8GetTitleEv(ptr noundef nonnull align 8 dereferenceable(2533)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL13ImAlmostEqualddi(double noundef, double noundef, i32 noundef) #7

declare void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef float @_ZNK10ImPlotAxis12PlotToPixelsEd(ptr noundef nonnull align 8 dereferenceable(372), double noundef) #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis12IsForegroundEv(ptr noundef nonnull align 8 dereferenceable(372)) #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN6ImPlotL16RenderGridLinesXER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 8 dereferenceable(52), ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef, float noundef, float noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN6ImPlotL16RenderGridLinesYER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 8 dereferenceable(52), ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef, float noundef, float noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9ImHasFlagIi16ImPlotAxisFlags_EbT_T0_(i32 noundef, i32 noundef) #7

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZN6ImPlotL20CalcTextSizeVerticalEPKc(ptr noundef) #4

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

declare void @_ZN5ImGui14PushOverrideIDEj(i32 noundef) #6

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 80}
!10 = !{!"_ZTS13ImPlotContext", !11, i64 0, !16, i64 40, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !18, i64 120, !24, i64 176, !26, i64 216, !28, i64 256, !29, i64 260, !30, i64 776, !31, i64 792, !32, i64 808, !34, i64 976, !36, i64 992, !38, i64 1048, !38, i64 1064, !34, i64 1080, !13, i64 1096, !13, i64 1100, !39, i64 1104, !40, i64 1336, !41, i64 1464, !28, i64 1512, !20, i64 1520, !6, i64 1536, !42, i64 1544, !6, i64 1584, !6, i64 1592}
!11 = !{!"_ZTS6ImPoolI10ImPlotPlotE", !12, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!12 = !{!"_ZTS8ImVectorI10ImPlotPlotE", !13, i64 0, !13, i64 4, !6, i64 8}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS12ImGuiStorage", !15, i64 0}
!15 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !13, i64 0, !13, i64 4, !6, i64 8}
!16 = !{!"_ZTS6ImPoolI13ImPlotSubplotE", !17, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!17 = !{!"_ZTS8ImVectorI13ImPlotSubplotE", !13, i64 0, !13, i64 4, !6, i64 8}
!18 = !{!"_ZTS12ImPlotTicker", !19, i64 0, !20, i64 16, !22, i64 32, !22, i64 40, !13, i64 48}
!19 = !{!"_ZTS8ImVectorI10ImPlotTickE", !13, i64 0, !13, i64 4, !6, i64 8}
!20 = !{!"_ZTS15ImGuiTextBuffer", !21, i64 0}
!21 = !{!"_ZTS8ImVectorIcE", !13, i64 0, !13, i64 4, !6, i64 8}
!22 = !{!"_ZTS6ImVec2", !23, i64 0, !23, i64 4}
!23 = !{!"float", !7, i64 0}
!24 = !{!"_ZTS26ImPlotAnnotationCollection", !25, i64 0, !20, i64 16, !13, i64 32}
!25 = !{!"_ZTS8ImVectorI16ImPlotAnnotationE", !13, i64 0, !13, i64 4, !6, i64 8}
!26 = !{!"_ZTS19ImPlotTagCollection", !27, i64 0, !20, i64 16, !13, i64 32}
!27 = !{!"_ZTS8ImVectorI9ImPlotTagE", !13, i64 0, !13, i64 4, !6, i64 8}
!28 = !{!"bool", !7, i64 0}
!29 = !{!"_ZTS11ImPlotStyle", !23, i64 0, !13, i64 4, !23, i64 8, !23, i64 12, !23, i64 16, !23, i64 20, !23, i64 24, !23, i64 28, !23, i64 32, !23, i64 36, !23, i64 40, !22, i64 44, !22, i64 52, !22, i64 60, !22, i64 68, !22, i64 76, !22, i64 84, !22, i64 92, !22, i64 100, !22, i64 108, !22, i64 116, !22, i64 124, !22, i64 132, !22, i64 140, !22, i64 148, !22, i64 156, !22, i64 164, !7, i64 172, !13, i64 508, !28, i64 512, !28, i64 513, !28, i64 514}
!30 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !13, i64 0, !13, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !13, i64 0, !13, i64 4, !6, i64 8}
!32 = !{!"_ZTS18ImPlotColormapData", !33, i64 0, !34, i64 16, !34, i64 32, !33, i64 48, !34, i64 64, !34, i64 80, !20, i64 96, !34, i64 112, !35, i64 128, !14, i64 144, !13, i64 160}
!33 = !{!"_ZTS8ImVectorIjE", !13, i64 0, !13, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorIiE", !13, i64 0, !13, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorIbE", !13, i64 0, !13, i64 4, !6, i64 8}
!36 = !{!"_ZTS2tm", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !37, i64 40, !6, i64 48}
!37 = !{!"long", !7, i64 0}
!38 = !{!"_ZTS8ImVectorIdE", !13, i64 0, !13, i64 4, !6, i64 8}
!39 = !{!"_ZTS18ImPlotNextPlotData", !7, i64 0, !7, i64 24, !7, i64 120, !7, i64 126, !7, i64 136, !7, i64 184}
!40 = !{!"_ZTS18ImPlotNextItemData", !7, i64 0, !23, i64 80, !13, i64 84, !23, i64 88, !23, i64 92, !23, i64 96, !23, i64 100, !23, i64 104, !23, i64 108, !23, i64 112, !28, i64 116, !28, i64 117, !28, i64 118, !28, i64 119, !28, i64 120, !28, i64 121, !13, i64 124}
!41 = !{!"_ZTS14ImPlotInputMap", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !23, i64 44}
!42 = !{!"_ZTS6ImPoolI19ImPlotAlignmentDataE", !43, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!43 = !{!"_ZTS8ImVectorI19ImPlotAlignmentDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!44 = !{!45, !6, i64 16080}
!45 = !{!"_ZTS12ImGuiContext", !28, i64 0, !28, i64 1, !46, i64 8, !50, i64 14288, !6, i64 15360, !23, i64 15368, !23, i64 15372, !51, i64 15376, !54, i64 15904, !13, i64 15912, !13, i64 15916, !13, i64 15920, !28, i64 15924, !28, i64 15925, !28, i64 15926, !28, i64 15927, !28, i64 15928, !6, i64 15936, !55, i64 15944, !55, i64 15960, !47, i64 15976, !13, i64 15980, !56, i64 15984, !56, i64 16000, !56, i64 16016, !57, i64 16032, !14, i64 16048, !13, i64 16064, !22, i64 16068, !6, i64 16080, !6, i64 16088, !6, i64 16096, !6, i64 16104, !6, i64 16112, !22, i64 16120, !13, i64 16128, !23, i64 16132, !22, i64 16136, !22, i64 16144, !13, i64 16152, !13, i64 16156, !13, i64 16160, !28, i64 16164, !28, i64 16165, !23, i64 16168, !23, i64 16172, !13, i64 16176, !13, i64 16180, !23, i64 16184, !28, i64 16188, !28, i64 16189, !28, i64 16190, !28, i64 16191, !28, i64 16192, !28, i64 16193, !22, i64 16196, !6, i64 16208, !58, i64 16216, !13, i64 16220, !13, i64 16224, !28, i64 16228, !28, i64 16229, !6, i64 16232, !13, i64 16240, !23, i64 16244, !7, i64 16248, !59, i64 17928, !13, i64 18240, !28, i64 18244, !13, i64 18248, !13, i64 18252, !13, i64 18256, !13, i64 18260, !61, i64 18264, !62, i64 18284, !64, i64 18344, !30, i64 18456, !31, i64 18472, !65, i64 18488, !33, i64 18504, !34, i64 18520, !66, i64 18536, !67, i64 18552, !67, i64 18568, !13, i64 18584, !68, i64 18592, !6, i64 18608, !13, i64 18616, !13, i64 18620, !13, i64 18624, !13, i64 18628, !13, i64 18632, !13, i64 18636, !13, i64 18640, !13, i64 18644, !13, i64 18648, !13, i64 18652, !13, i64 18656, !58, i64 18660, !69, i64 18664, !28, i64 18668, !28, i64 18669, !28, i64 18670, !28, i64 18671, !28, i64 18672, !28, i64 18673, !28, i64 18674, !13, i64 18676, !63, i64 18680, !28, i64 18696, !28, i64 18697, !28, i64 18698, !13, i64 18700, !13, i64 18704, !13, i64 18708, !13, i64 18712, !13, i64 18716, !13, i64 18720, !63, i64 18724, !63, i64 18740, !13, i64 18756, !13, i64 18760, !13, i64 18764, !70, i64 18768, !70, i64 18816, !70, i64 18864, !70, i64 18912, !13, i64 18960, !13, i64 18964, !6, i64 18968, !6, i64 18976, !6, i64 18984, !23, i64 18992, !23, i64 18996, !28, i64 19000, !22, i64 19004, !22, i64 19012, !23, i64 19020, !13, i64 19024, !28, i64 19028, !28, i64 19029, !28, i64 19030, !13, i64 19032, !13, i64 19036, !13, i64 19040, !71, i64 19048, !63, i64 19112, !13, i64 19128, !13, i64 19132, !23, i64 19136, !13, i64 19140, !13, i64 19144, !13, i64 19148, !13, i64 19152, !72, i64 19160, !7, i64 19176, !13, i64 19192, !73, i64 19200, !6, i64 19216, !13, i64 19224, !74, i64 19232, !75, i64 19248, !77, i64 19288, !78, i64 19304, !6, i64 19320, !79, i64 19328, !81, i64 19368, !82, i64 19384, !13, i64 19400, !13, i64 19404, !23, i64 19408, !23, i64 19412, !22, i64 19416, !83, i64 19424, !86, i64 23152, !87, i64 23176, !13, i64 23296, !13, i64 23300, !13, i64 23304, !13, i64 23308, !23, i64 23312, !23, i64 23316, !13, i64 23320, !52, i64 23324, !89, i64 23340, !23, i64 23388, !23, i64 23392, !28, i64 23396, !28, i64 23397, !23, i64 23400, !23, i64 23404, !23, i64 23408, !23, i64 23412, !48, i64 23416, !48, i64 23418, !21, i64 23424, !33, i64 23440, !90, i64 23456, !90, i64 23472, !7, i64 23488, !28, i64 23489, !23, i64 23492, !20, i64 23496, !91, i64 23512, !92, i64 23528, !93, i64 23544, !94, i64 23560, !13, i64 23576, !7, i64 23584, !28, i64 23640, !95, i64 23644, !6, i64 23648, !20, i64 23656, !6, i64 23672, !6, i64 23680, !23, i64 23688, !28, i64 23692, !13, i64 23696, !13, i64 23700, !13, i64 23704, !13, i64 23708, !20, i64 23712, !96, i64 23728, !7, i64 23752, !7, i64 23753, !7, i64 23754, !28, i64 23755, !7, i64 23756, !13, i64 23760, !97, i64 23764, !98, i64 23784, !7, i64 23824, !13, i64 24064, !13, i64 24068, !23, i64 24072, !13, i64 24076, !13, i64 24080, !13, i64 24084, !21, i64 24088}
!46 = !{!"_ZTS7ImGuiIO", !13, i64 0, !13, i64 4, !22, i64 8, !23, i64 16, !23, i64 20, !6, i64 24, !6, i64 32, !23, i64 40, !23, i64 44, !23, i64 48, !23, i64 52, !23, i64 56, !23, i64 60, !23, i64 64, !6, i64 72, !6, i64 80, !23, i64 88, !28, i64 92, !6, i64 96, !22, i64 104, !28, i64 112, !28, i64 113, !28, i64 114, !28, i64 115, !28, i64 116, !28, i64 117, !28, i64 118, !28, i64 119, !23, i64 120, !28, i64 124, !28, i64 125, !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, !6, i64 200, !28, i64 208, !28, i64 209, !28, i64 210, !28, i64 211, !28, i64 212, !28, i64 213, !28, i64 214, !23, i64 216, !13, i64 220, !13, i64 224, !13, i64 228, !13, i64 232, !13, i64 236, !22, i64 240, !7, i64 248, !7, i64 2856, !7, i64 3508, !6, i64 3576, !22, i64 3584, !7, i64 3592, !23, i64 3600, !23, i64 3604, !47, i64 3608, !28, i64 3612, !28, i64 3613, !28, i64 3614, !28, i64 3615, !13, i64 3616, !7, i64 3620, !28, i64 14052, !22, i64 14056, !7, i64 14064, !7, i64 14104, !7, i64 14144, !7, i64 14149, !7, i64 14154, !7, i64 14164, !7, i64 14174, !7, i64 14179, !7, i64 14184, !28, i64 14189, !7, i64 14192, !7, i64 14212, !7, i64 14232, !23, i64 14252, !28, i64 14256, !28, i64 14257, !7, i64 14258, !28, i64 14259, !48, i64 14260, !49, i64 14264}
!47 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!48 = !{!"short", !7, i64 0}
!49 = !{!"_ZTS8ImVectorItE", !13, i64 0, !13, i64 4, !6, i64 8}
!50 = !{!"_ZTS10ImGuiStyle", !23, i64 0, !23, i64 4, !22, i64 8, !23, i64 16, !23, i64 20, !22, i64 24, !22, i64 32, !13, i64 40, !23, i64 44, !23, i64 48, !23, i64 52, !23, i64 56, !22, i64 60, !23, i64 68, !23, i64 72, !22, i64 76, !22, i64 84, !22, i64 92, !22, i64 100, !23, i64 108, !23, i64 112, !23, i64 116, !23, i64 120, !23, i64 124, !23, i64 128, !23, i64 132, !23, i64 136, !23, i64 140, !23, i64 144, !13, i64 148, !22, i64 152, !22, i64 160, !23, i64 168, !22, i64 172, !22, i64 180, !22, i64 188, !22, i64 196, !23, i64 204, !28, i64 208, !28, i64 209, !28, i64 210, !23, i64 212, !23, i64 216, !7, i64 220}
!51 = !{!"_ZTS20ImDrawListSharedData", !22, i64 0, !6, i64 8, !23, i64 16, !23, i64 20, !23, i64 24, !52, i64 28, !13, i64 44, !53, i64 48, !7, i64 64, !23, i64 448, !7, i64 452, !6, i64 520}
!52 = !{!"_ZTS6ImVec4", !23, i64 0, !23, i64 4, !23, i64 8, !23, i64 12}
!53 = !{!"_ZTS8ImVectorI6ImVec2E", !13, i64 0, !13, i64 4, !6, i64 8}
!54 = !{!"double", !7, i64 0}
!55 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !13, i64 0, !13, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !13, i64 0, !13, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!58 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!59 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !60, i64 280, !60, i64 296}
!60 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!61 = !{!"_ZTS17ImGuiNextItemData", !13, i64 0, !23, i64 4, !13, i64 8, !13, i64 12, !28, i64 16}
!62 = !{!"_ZTS17ImGuiLastItemData", !13, i64 0, !13, i64 4, !13, i64 8, !63, i64 12, !63, i64 28, !63, i64 44}
!63 = !{!"_ZTS6ImRect", !22, i64 0, !22, i64 8}
!64 = !{!"_ZTS19ImGuiNextWindowData", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !22, i64 16, !22, i64 24, !22, i64 32, !22, i64 40, !22, i64 48, !28, i64 56, !63, i64 60, !6, i64 80, !6, i64 88, !23, i64 96, !22, i64 100}
!65 = !{!"_ZTS8ImVectorIP6ImFontE", !13, i64 0, !13, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !13, i64 0, !13, i64 4, !6, i64 8}
!69 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!70 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !13, i64 8, !13, i64 12, !63, i64 16, !13, i64 32, !23, i64 36, !23, i64 40, !23, i64 44}
!71 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !7, i64 24, !28, i64 57, !28, i64 58}
!72 = !{!"_ZTS8ImVectorIhE", !13, i64 0, !13, i64 4, !6, i64 8}
!73 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!75 = !{!"_ZTS6ImPoolI10ImGuiTableE", !76, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!76 = !{!"_ZTS8ImVectorI10ImGuiTableE", !13, i64 0, !13, i64 4, !6, i64 8}
!77 = !{!"_ZTS8ImVectorIfE", !13, i64 0, !13, i64 4, !6, i64 8}
!78 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !13, i64 0, !13, i64 4, !6, i64 8}
!79 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !80, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!80 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !13, i64 0, !13, i64 4, !6, i64 8}
!81 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !13, i64 0, !13, i64 4, !6, i64 8}
!82 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !13, i64 0, !13, i64 4, !6, i64 8}
!83 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !49, i64 24, !21, i64 40, !21, i64 56, !28, i64 72, !13, i64 76, !23, i64 80, !84, i64 84, !23, i64 3712, !28, i64 3716, !28, i64 3717, !28, i64 3718, !13, i64 3720}
!84 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !13, i64 0, !13, i64 4, !13, i64 8, !7, i64 12, !13, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !23, i64 28, !85, i64 32}
!85 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !48, i64 3582, !48, i64 3584, !13, i64 3588, !13, i64 3592}
!86 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !13, i64 0, !21, i64 8}
!87 = !{!"_ZTS6ImFont", !77, i64 0, !23, i64 16, !23, i64 20, !49, i64 24, !88, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !48, i64 80, !48, i64 82, !48, i64 84, !48, i64 86, !23, i64 88, !23, i64 92, !28, i64 96, !23, i64 100, !23, i64 104, !23, i64 108, !13, i64 112, !7, i64 116}
!88 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !13, i64 0, !13, i64 4, !6, i64 8}
!89 = !{!"_ZTS21ImGuiComboPreviewData", !63, i64 0, !22, i64 16, !22, i64 24, !22, i64 32, !23, i64 40, !13, i64 44}
!90 = !{!"_ZTS20ImGuiPlatformImeData", !28, i64 0, !22, i64 4, !23, i64 12}
!91 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !13, i64 0, !13, i64 4, !6, i64 8}
!92 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !21, i64 0}
!93 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !21, i64 0}
!94 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !13, i64 0, !13, i64 4, !6, i64 8}
!95 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!96 = !{!"_ZTS14ImGuiTextIndex", !34, i64 0, !13, i64 16}
!97 = !{!"_ZTS18ImGuiMetricsConfig", !28, i64 0, !28, i64 1, !28, i64 2, !28, i64 3, !28, i64 4, !28, i64 5, !28, i64 6, !28, i64 7, !13, i64 8, !13, i64 12}
!98 = !{!"_ZTS14ImGuiStackTool", !13, i64 0, !13, i64 4, !13, i64 8, !99, i64 16, !28, i64 32, !23, i64 36}
!99 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !13, i64 0, !13, i64 4, !6, i64 8}
!100 = !{!101, !6, i64 664}
!101 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !6, i64 24, !22, i64 32, !22, i64 40, !22, i64 48, !22, i64 56, !22, i64 64, !22, i64 72, !22, i64 80, !23, i64 88, !23, i64 92, !23, i64 96, !23, i64 100, !23, i64 104, !23, i64 108, !23, i64 112, !23, i64 116, !13, i64 120, !13, i64 124, !13, i64 128, !22, i64 132, !22, i64 140, !22, i64 148, !22, i64 156, !22, i64 164, !22, i64 172, !28, i64 180, !28, i64 181, !28, i64 182, !28, i64 183, !28, i64 184, !28, i64 185, !28, i64 186, !28, i64 187, !28, i64 188, !28, i64 189, !28, i64 190, !28, i64 191, !28, i64 192, !7, i64 193, !48, i64 194, !48, i64 196, !48, i64 198, !48, i64 200, !48, i64 202, !13, i64 204, !7, i64 208, !7, i64 209, !7, i64 210, !28, i64 211, !13, i64 212, !7, i64 216, !7, i64 217, !7, i64 218, !7, i64 219, !13, i64 220, !13, i64 221, !13, i64 222, !22, i64 224, !22, i64 232, !33, i64 240, !102, i64 256, !63, i64 488, !63, i64 504, !63, i64 520, !63, i64 536, !63, i64 552, !63, i64 568, !63, i64 584, !105, i64 600, !105, i64 604, !13, i64 608, !23, i64 612, !23, i64 616, !14, i64 624, !106, i64 640, !23, i64 656, !13, i64 660, !6, i64 664, !107, i64 672, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !7, i64 928, !7, i64 936, !13, i64 968, !13, i64 972, !13, i64 976, !28, i64 980}
!102 = !{!"_ZTS19ImGuiWindowTempData", !22, i64 0, !22, i64 8, !22, i64 16, !22, i64 24, !22, i64 32, !22, i64 40, !22, i64 48, !23, i64 56, !23, i64 60, !28, i64 64, !28, i64 65, !103, i64 68, !103, i64 72, !103, i64 76, !22, i64 80, !69, i64 88, !48, i64 92, !48, i64 94, !28, i64 96, !28, i64 97, !28, i64 98, !28, i64 99, !22, i64 100, !104, i64 108, !13, i64 136, !13, i64 140, !56, i64 144, !6, i64 160, !6, i64 168, !13, i64 176, !13, i64 180, !13, i64 184, !23, i64 188, !23, i64 192, !77, i64 200, !77, i64 216}
!103 = !{!"_ZTS6ImVec1", !23, i64 0}
!104 = !{!"_ZTS16ImGuiMenuColumns", !13, i64 0, !13, i64 4, !48, i64 8, !48, i64 10, !48, i64 12, !48, i64 14, !48, i64 16, !7, i64 18}
!105 = !{!"_ZTS8ImVec2ih", !48, i64 0, !48, i64 2}
!106 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !13, i64 0, !13, i64 4, !6, i64 8}
!107 = !{!"_ZTS10ImDrawList", !108, i64 0, !49, i64 16, !109, i64 32, !13, i64 48, !13, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !110, i64 88, !111, i64 104, !53, i64 120, !112, i64 136, !113, i64 168, !23, i64 192}
!108 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !13, i64 0, !13, i64 4, !6, i64 8}
!109 = !{!"_ZTS8ImVectorI10ImDrawVertE", !13, i64 0, !13, i64 4, !6, i64 8}
!110 = !{!"_ZTS8ImVectorI6ImVec4E", !13, i64 0, !13, i64 4, !6, i64 8}
!111 = !{!"_ZTS8ImVectorIPvE", !13, i64 0, !13, i64 4, !6, i64 8}
!112 = !{!"_ZTS15ImDrawCmdHeader", !52, i64 0, !6, i64 16, !13, i64 24}
!113 = !{!"_ZTS18ImDrawListSplitter", !13, i64 0, !13, i64 4, !78, i64 8}
!114 = !{!115, !28, i64 2526}
!115 = !{!"_ZTS10ImPlotPlot", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !7, i64 24, !20, i64 2280, !116, i64 2296, !13, i64 2424, !13, i64 2428, !63, i64 2432, !63, i64 2448, !63, i64 2464, !63, i64 2480, !63, i64 2496, !22, i64 2512, !13, i64 2520, !28, i64 2524, !28, i64 2525, !28, i64 2526, !28, i64 2527, !28, i64 2528, !28, i64 2529, !28, i64 2530, !28, i64 2531, !28, i64 2532}
!116 = !{!"_ZTS15ImPlotItemGroup", !13, i64 0, !117, i64 8, !118, i64 80, !13, i64 120}
!117 = !{!"_ZTS12ImPlotLegend", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !34, i64 16, !20, i64 32, !63, i64 48, !28, i64 64, !28, i64 65, !28, i64 66}
!118 = !{!"_ZTS6ImPoolI10ImPlotItemE", !119, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!119 = !{!"_ZTS8ImVectorI10ImPlotItemE", !13, i64 0, !13, i64 4, !6, i64 8}
!120 = !{!13, !13, i64 0}
!121 = !{!122, !28, i64 364}
!122 = !{!"_ZTS10ImPlotAxis", !13, i64 0, !13, i64 4, !13, i64 8, !123, i64 16, !13, i64 32, !13, i64 36, !123, i64 40, !6, i64 56, !123, i64 64, !123, i64 80, !18, i64 96, !6, i64 152, !6, i64 160, !7, i64 168, !6, i64 184, !6, i64 192, !6, i64 200, !13, i64 208, !124, i64 216, !124, i64 232, !6, i64 248, !6, i64 256, !6, i64 264, !23, i64 272, !23, i64 276, !54, i64 280, !54, i64 288, !54, i64 296, !23, i64 304, !23, i64 308, !63, i64 312, !13, i64 328, !13, i64 332, !13, i64 336, !13, i64 340, !13, i64 344, !13, i64 348, !13, i64 352, !13, i64 356, !13, i64 360, !28, i64 364, !28, i64 365, !28, i64 366, !28, i64 367, !28, i64 368, !28, i64 369, !28, i64 370, !28, i64 371}
!123 = !{!"_ZTS11ImPlotRange", !54, i64 0, !54, i64 8}
!124 = !{!"_ZTS10ImPlotTime", !37, i64 0, !13, i64 8}
!125 = !{i8 0, i8 2}
!126 = !{}
!127 = !{!115, !28, i64 2525}
!128 = !{!122, !28, i64 366}
!129 = !{!115, !28, i64 2527}
!130 = !{!122, !6, i64 152}
!131 = !{!122, !28, i64 368}
!132 = !{!122, !6, i64 160}
!133 = !{!122, !6, i64 184}
!134 = distinct !{!134, !135}
!135 = !{!"llvm.loop.mustprogress"}
!136 = !{!115, !13, i64 4}
!137 = !{!28, !28, i64 0}
!138 = !{!122, !6, i64 56}
!139 = distinct !{!139, !135}
!140 = !{i64 0, i64 4, !141, i64 4, i64 4, !141, i64 8, i64 4, !141, i64 12, i64 4, !141}
!141 = !{!23, !23, i64 0}
!142 = !{!115, !13, i64 2304}
!143 = !{!117, !13, i64 0}
!144 = !{!117, !13, i64 8}
!145 = !{!22, !23, i64 0}
!146 = !{!10, !23, i64 368}
!147 = !{!115, !23, i64 2448}
!148 = !{!10, !23, i64 352}
!149 = !{!115, !23, i64 2480}
!150 = !{!115, !23, i64 2456}
!151 = !{!115, !23, i64 2488}
!152 = !{!22, !23, i64 4}
!153 = !{!10, !23, i64 372}
!154 = !{!115, !23, i64 2452}
!155 = !{!10, !23, i64 356}
!156 = !{!115, !23, i64 2484}
!157 = !{!115, !23, i64 2460}
!158 = !{!115, !23, i64 2492}
!159 = !{i64 0, i64 4, !141, i64 4, i64 4, !141}
!160 = !{!10, !23, i64 364}
!161 = !{!10, !6, i64 1584}
!162 = !{!122, !28, i64 369}
!163 = distinct !{!163, !135}
!164 = !{!10, !6, i64 1592}
!165 = distinct !{!165, !135}
!166 = !{!115, !23, i64 2464}
!167 = !{!122, !23, i64 304}
!168 = !{!122, !23, i64 308}
!169 = !{!115, !23, i64 2472}
!170 = !{!122, !23, i64 272}
!171 = !{!122, !23, i64 276}
!172 = distinct !{!172, !135}
!173 = !{!115, !23, i64 2468}
!174 = !{!115, !23, i64 2476}
!175 = distinct !{!175, !135}
!176 = !{!54, !54, i64 0}
!177 = !{!122, !28, i64 367}
!178 = distinct !{!178, !135}
!179 = distinct !{!179, !135}
!180 = !{!50, !23, i64 68}
!181 = !{!182, !54, i64 0}
!182 = !{!"_ZTS10ImPlotTick", !54, i64 0, !23, i64 8, !22, i64 12, !13, i64 20, !28, i64 24, !28, i64 25, !13, i64 28, !13, i64 32}
!183 = !{!182, !23, i64 8}
!184 = distinct !{!184, !135}
!185 = distinct !{!185, !135}
!186 = !{!122, !13, i64 332}
!187 = !{!122, !13, i64 336}
!188 = !{!10, !23, i64 336}
!189 = !{!10, !23, i64 344}
!190 = distinct !{!190, !135}
!191 = !{!10, !23, i64 340}
!192 = !{!10, !23, i64 348}
!193 = distinct !{!193, !135}
!194 = !{!122, !28, i64 370}
!195 = !{!122, !28, i64 371}
!196 = !{!115, !28, i64 2529}
!197 = !{!122, !13, i64 4}
!198 = !{!122, !13, i64 356}
!199 = !{!122, !13, i64 352}
!200 = !{!122, !13, i64 360}
!201 = !{!122, !13, i64 348}
!202 = !{!18, !23, i64 36}
!203 = !{!18, !13, i64 48}
!204 = !{!122, !13, i64 344}
!205 = !{!182, !13, i64 28}
!206 = !{!182, !28, i64 25}
!207 = !{!182, !23, i64 12}
!208 = distinct !{!208, !135}
!209 = distinct !{!209, !135}
!210 = !{!18, !23, i64 32}
!211 = !{!10, !23, i64 360}
!212 = !{!182, !23, i64 16}
!213 = distinct !{!213, !135}
!214 = distinct !{!214, !135}
!215 = !{!10, !6, i64 96}
!216 = !{!116, !13, i64 0}


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

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

@GImPlot = external dso_local local_unnamed_addr global ptr, align 8
@GImGui = external local_unnamed_addr global ptr, align 8
@.str.78 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [115 x i8], align 1
@__PRETTY_FUNCTION__._ZN6ImPlot11SetupFinishEv = external hidden unnamed_addr constant [27 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [81 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: mustprogress uwtable
declare dso_local void @_ZN6ImPlot15AddTextVerticalEP10ImDrawList6ImVec2jPKcS4_(ptr noundef, <2 x float>, i32 noundef, ptr noundef, ptr noundef) 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 #4

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

declare noundef float @_ZN5ImGui17GetTextLineHeightEv() local_unnamed_addr #6

declare <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #6

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 #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef, i32 noundef) local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN6ImPlot14CalcLegendSizeER15ImPlotItemGroupRK6ImVec2S4_b(ptr noundef nonnull align 8 dereferenceable(124), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK15ImPlotItemGroup14GetLegendCountEv(ptr noundef nonnull align 8 dereferenceable(124)) local_unnamed_addr #8 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN6ImPlotL16GetStyleColorU32Ei(i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9ImHasFlagIi18ImPlotLegendFlags_EbT_T0_(i32 noundef, i32 noundef) local_unnamed_addr #7

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

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 #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImPlot15Locator_DefaultER12ImPlotTickerRK11ImPlotRangefbPFidPciPvES6_(ptr noundef nonnull align 8 dereferenceable(52), ptr noundef nonnull align 8 dereferenceable(16), float noundef, i1 noundef zeroext, ptr noundef, ptr noundef) #8

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis13IsAutoFittingEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis8HasLabelEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis12HasGridLinesEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis13HasTickLabelsEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK10ImPlotAxis9GetAspectEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9ImHasFlagIi12ImPlotFlags_EbT_T0_(i32 noundef, i32 noundef) local_unnamed_addr #7

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotPlot8HasTitleEv(ptr noundef nonnull align 8 dereferenceable(2533)) local_unnamed_addr #10 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 @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis10IsOppositeEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6ImPlot11UpdateInputER10ImPlotPlot(ptr noundef nonnull align 8 dereferenceable(2533)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis13IsInputLockedEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN6ImPlotL17Formatter_DefaultEdPciPv(double noundef, ptr noundef, i32 noundef, ptr noundef) #10

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6ImPlot11SetupFinishEv() local_unnamed_addr #3 {
  %1 = alloca %struct.ImRect, align 4
  %2 = alloca %struct.ImVec2, align 8
  %3 = alloca %struct.ImVec2, align 8
  %4 = alloca float, align 4
  %5 = alloca float, align 4
  %6 = alloca float, align 4
  %7 = alloca float, align 4
  %8 = alloca %struct.ImVec2, align 8
  %9 = alloca %struct.ImRect, align 4
  %10 = alloca %struct.ImVec2, align 8
  %11 = alloca %struct.ImVec2, align 4
  %12 = alloca %struct.ImVec2, align 8
  %13 = alloca %struct.ImVec2, align 4
  %14 = alloca %struct.ImRect, align 4
  %15 = alloca %struct.ImVec2, align 4
  %16 = alloca %struct.ImVec2, align 4
  %17 = alloca %struct.ImRect, align 4
  %18 = alloca %struct.ImVec2, align 4
  %19 = alloca %struct.ImVec2, align 4
  %20 = alloca %struct.ImVec2, align 4
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca %struct.ImVec2, align 8
  %23 = alloca %struct.ImVec2, align 4
  %24 = load ptr, ptr @GImPlot, align 8, !tbaa !5
  %.not = icmp eq ptr %24, null
  br i1 %.not, label %25, label %26

25:                                               ; preds = %0
  tail call void @__assert_fail(ptr noundef nonnull @.str.144, ptr noundef nonnull @.str.78, i32 noundef 2462, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN6ImPlot11SetupFinishEv) #11
  unreachable

26:                                               ; preds = %0
  %27 = getelementptr inbounds i8, ptr %24, i64 80
  %28 = load ptr, ptr %27, align 8, !tbaa !9
  %.not458 = icmp eq ptr %28, null
  br i1 %.not458, label %29, label %30

29:                                               ; preds = %26
  tail call void @__assert_fail(ptr noundef nonnull @.str.148, ptr noundef nonnull @.str.78, i32 noundef 2464, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN6ImPlot11SetupFinishEv) #11
  unreachable

30:                                               ; preds = %26
  %31 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %31, i64 16080
  %33 = load ptr, ptr %32, align 8, !tbaa !44
  %34 = getelementptr inbounds i8, ptr %33, i64 664
  %35 = load ptr, ptr %34, align 8, !tbaa !100
  %36 = getelementptr inbounds i8, ptr %28, i64 2526
  store i8 1, ptr %36, align 2, !tbaa !114
  %37 = getelementptr inbounds i8, ptr %28, i64 24
  %38 = getelementptr inbounds i8, ptr %28, i64 2525
  %39 = getelementptr inbounds i8, ptr %28, i64 2527
  %40 = getelementptr inbounds i8, ptr %28, i64 388
  %41 = load i8, ptr %40, align 4, !tbaa !120, !range !124, !noundef !125
  %42 = trunc nuw i8 %41 to i1
  br i1 %42, label %43, label %50

43:                                               ; preds = %30
  tail call void @_ZN10ImPlotAxis9ConstrainEv(ptr noundef nonnull align 8 dereferenceable(372) %37)
  %44 = load i8, ptr %38, align 1, !tbaa !126, !range !124, !noundef !125
  %45 = trunc nuw i8 %44 to i1
  br i1 %45, label %50, label %46

46:                                               ; preds = %43
  %47 = tail call noundef zeroext i1 @_ZNK10ImPlotAxis10CanInitFitEv(ptr noundef nonnull align 8 dereferenceable(372) %37)
  br i1 %47, label %48, label %50

48:                                               ; preds = %46
  %49 = getelementptr inbounds i8, ptr %28, i64 390
  store i8 1, ptr %49, align 2, !tbaa !127
  store i8 1, ptr %39, align 1, !tbaa !128
  br label %50

50:                                               ; preds = %43, %46, %48, %30
  %51 = getelementptr inbounds i8, ptr %28, i64 176
  %52 = load ptr, ptr %51, align 8, !tbaa !129
  %53 = icmp eq ptr %52, null
  br i1 %53, label %.sink.split, label %59

.sink.split:                                      ; preds = %50
  store ptr @_ZN6ImPlotL17Formatter_DefaultEdPciPv, ptr %51, align 8, !tbaa !129
  %54 = getelementptr inbounds i8, ptr %28, i64 392
  %55 = load i8, ptr %54, align 8, !tbaa !130, !range !124, !noundef !125
  %56 = trunc nuw i8 %55 to i1
  %57 = getelementptr inbounds i8, ptr %28, i64 192
  %.sink = select i1 %56, ptr %57, ptr @.str.133
  %58 = getelementptr inbounds i8, ptr %28, i64 184
  store ptr %.sink, ptr %58, align 8, !tbaa !131
  br label %59

59:                                               ; preds = %.sink.split, %50
  %60 = getelementptr inbounds i8, ptr %28, i64 208
  %61 = load ptr, ptr %60, align 8, !tbaa !132
  %62 = icmp eq ptr %61, null
  br i1 %62, label %63, label %64

63:                                               ; preds = %59
  store ptr @_ZN6ImPlot15Locator_DefaultER12ImPlotTickerRK11ImPlotRangefbPFidPciPvES6_, ptr %60, align 8, !tbaa !132
  br label %64

64:                                               ; preds = %63, %59
  %65 = getelementptr inbounds i8, ptr %28, i64 400
  %66 = getelementptr inbounds i8, ptr %28, i64 764
  %67 = load i8, ptr %66, align 4, !tbaa !120, !range !124, !noundef !125
  %68 = trunc nuw i8 %67 to i1
  br i1 %68, label %69, label %76

69:                                               ; preds = %64
  tail call void @_ZN10ImPlotAxis9ConstrainEv(ptr noundef nonnull align 8 dereferenceable(372) %65)
  %70 = load i8, ptr %38, align 1, !tbaa !126, !range !124, !noundef !125
  %71 = trunc nuw i8 %70 to i1
  br i1 %71, label %76, label %72

72:                                               ; preds = %69
  %73 = tail call noundef zeroext i1 @_ZNK10ImPlotAxis10CanInitFitEv(ptr noundef nonnull align 8 dereferenceable(372) %65)
  br i1 %73, label %74, label %76

74:                                               ; preds = %72
  %75 = getelementptr inbounds i8, ptr %28, i64 766
  store i8 1, ptr %75, align 2, !tbaa !127
  store i8 1, ptr %39, align 1, !tbaa !128
  br label %76

76:                                               ; preds = %74, %72, %69, %64
  %77 = getelementptr inbounds i8, ptr %28, i64 552
  %78 = load ptr, ptr %77, align 8, !tbaa !129
  %79 = icmp eq ptr %78, null
  br i1 %79, label %.sink.split547, label %85

.sink.split547:                                   ; preds = %76
  store ptr @_ZN6ImPlotL17Formatter_DefaultEdPciPv, ptr %77, align 8, !tbaa !129
  %80 = getelementptr inbounds i8, ptr %28, i64 768
  %81 = load i8, ptr %80, align 8, !tbaa !130, !range !124, !noundef !125
  %82 = trunc nuw i8 %81 to i1
  %83 = getelementptr inbounds i8, ptr %28, i64 568
  %.sink548 = select i1 %82, ptr %83, ptr @.str.133
  %84 = getelementptr inbounds i8, ptr %28, i64 560
  store ptr %.sink548, ptr %84, align 8, !tbaa !131
  br label %85

85:                                               ; preds = %.sink.split547, %76
  %86 = getelementptr inbounds i8, ptr %28, i64 584
  %87 = load ptr, ptr %86, align 8, !tbaa !132
  %88 = icmp eq ptr %87, null
  br i1 %88, label %89, label %90

89:                                               ; preds = %85
  store ptr @_ZN6ImPlot15Locator_DefaultER12ImPlotTickerRK11ImPlotRangefbPFidPciPvES6_, ptr %86, align 8, !tbaa !132
  br label %90

90:                                               ; preds = %89, %85
  %91 = getelementptr inbounds i8, ptr %28, i64 776
  %92 = getelementptr inbounds i8, ptr %28, i64 1140
  %93 = load i8, ptr %92, align 4, !tbaa !120, !range !124, !noundef !125
  %94 = trunc nuw i8 %93 to i1
  br i1 %94, label %95, label %102

95:                                               ; preds = %90
  tail call void @_ZN10ImPlotAxis9ConstrainEv(ptr noundef nonnull align 8 dereferenceable(372) %91)
  %96 = load i8, ptr %38, align 1, !tbaa !126, !range !124, !noundef !125
  %97 = trunc nuw i8 %96 to i1
  br i1 %97, label %102, label %98

98:                                               ; preds = %95
  %99 = tail call noundef zeroext i1 @_ZNK10ImPlotAxis10CanInitFitEv(ptr noundef nonnull align 8 dereferenceable(372) %91)
  br i1 %99, label %100, label %102

100:                                              ; preds = %98
  %101 = getelementptr inbounds i8, ptr %28, i64 1142
  store i8 1, ptr %101, align 2, !tbaa !127
  store i8 1, ptr %39, align 1, !tbaa !128
  br label %102

102:                                              ; preds = %100, %98, %95, %90
  %103 = getelementptr inbounds i8, ptr %28, i64 928
  %104 = load ptr, ptr %103, align 8, !tbaa !129
  %105 = icmp eq ptr %104, null
  br i1 %105, label %.sink.split550, label %111

.sink.split550:                                   ; preds = %102
  store ptr @_ZN6ImPlotL17Formatter_DefaultEdPciPv, ptr %103, align 8, !tbaa !129
  %106 = getelementptr inbounds i8, ptr %28, i64 1144
  %107 = load i8, ptr %106, align 8, !tbaa !130, !range !124, !noundef !125
  %108 = trunc nuw i8 %107 to i1
  %109 = getelementptr inbounds i8, ptr %28, i64 944
  %.sink551 = select i1 %108, ptr %109, ptr @.str.133
  %110 = getelementptr inbounds i8, ptr %28, i64 936
  store ptr %.sink551, ptr %110, align 8, !tbaa !131
  br label %111

111:                                              ; preds = %.sink.split550, %102
  %112 = getelementptr inbounds i8, ptr %28, i64 960
  %113 = load ptr, ptr %112, align 8, !tbaa !132
  %114 = icmp eq ptr %113, null
  br i1 %114, label %115, label %116

115:                                              ; preds = %111
  store ptr @_ZN6ImPlot15Locator_DefaultER12ImPlotTickerRK11ImPlotRangefbPFidPciPvES6_, ptr %112, align 8, !tbaa !132
  br label %116

116:                                              ; preds = %115, %111
  %117 = getelementptr inbounds i8, ptr %28, i64 1152
  %118 = getelementptr inbounds i8, ptr %28, i64 1516
  %119 = load i8, ptr %118, align 4, !tbaa !120, !range !124, !noundef !125
  %120 = trunc nuw i8 %119 to i1
  br i1 %120, label %121, label %128

121:                                              ; preds = %116
  tail call void @_ZN10ImPlotAxis9ConstrainEv(ptr noundef nonnull align 8 dereferenceable(372) %117)
  %122 = load i8, ptr %38, align 1, !tbaa !126, !range !124, !noundef !125
  %123 = trunc nuw i8 %122 to i1
  br i1 %123, label %128, label %124

124:                                              ; preds = %121
  %125 = tail call noundef zeroext i1 @_ZNK10ImPlotAxis10CanInitFitEv(ptr noundef nonnull align 8 dereferenceable(372) %117)
  br i1 %125, label %126, label %128

126:                                              ; preds = %124
  %127 = getelementptr inbounds i8, ptr %28, i64 1518
  store i8 1, ptr %127, align 2, !tbaa !127
  store i8 1, ptr %39, align 1, !tbaa !128
  br label %128

128:                                              ; preds = %126, %124, %121, %116
  %129 = getelementptr inbounds i8, ptr %28, i64 1304
  %130 = load ptr, ptr %129, align 8, !tbaa !129
  %131 = icmp eq ptr %130, null
  br i1 %131, label %.sink.split553, label %137

.sink.split553:                                   ; preds = %128
  store ptr @_ZN6ImPlotL17Formatter_DefaultEdPciPv, ptr %129, align 8, !tbaa !129
  %132 = getelementptr inbounds i8, ptr %28, i64 1520
  %133 = load i8, ptr %132, align 8, !tbaa !130, !range !124, !noundef !125
  %134 = trunc nuw i8 %133 to i1
  %135 = getelementptr inbounds i8, ptr %28, i64 1320
  %.sink554 = select i1 %134, ptr %135, ptr @.str.133
  %136 = getelementptr inbounds i8, ptr %28, i64 1312
  store ptr %.sink554, ptr %136, align 8, !tbaa !131
  br label %137

137:                                              ; preds = %.sink.split553, %128
  %138 = getelementptr inbounds i8, ptr %28, i64 1336
  %139 = load ptr, ptr %138, align 8, !tbaa !132
  %140 = icmp eq ptr %139, null
  br i1 %140, label %141, label %142

141:                                              ; preds = %137
  store ptr @_ZN6ImPlot15Locator_DefaultER12ImPlotTickerRK11ImPlotRangefbPFidPciPvES6_, ptr %138, align 8, !tbaa !132
  br label %142

142:                                              ; preds = %141, %137
  %143 = getelementptr inbounds i8, ptr %28, i64 1528
  %144 = getelementptr inbounds i8, ptr %28, i64 1892
  %145 = load i8, ptr %144, align 4, !tbaa !120, !range !124, !noundef !125
  %146 = trunc nuw i8 %145 to i1
  br i1 %146, label %147, label %154

147:                                              ; preds = %142
  tail call void @_ZN10ImPlotAxis9ConstrainEv(ptr noundef nonnull align 8 dereferenceable(372) %143)
  %148 = load i8, ptr %38, align 1, !tbaa !126, !range !124, !noundef !125
  %149 = trunc nuw i8 %148 to i1
  br i1 %149, label %154, label %150

150:                                              ; preds = %147
  %151 = tail call noundef zeroext i1 @_ZNK10ImPlotAxis10CanInitFitEv(ptr noundef nonnull align 8 dereferenceable(372) %143)
  br i1 %151, label %152, label %154

152:                                              ; preds = %150
  %153 = getelementptr inbounds i8, ptr %28, i64 1894
  store i8 1, ptr %153, align 2, !tbaa !127
  store i8 1, ptr %39, align 1, !tbaa !128
  br label %154

154:                                              ; preds = %152, %150, %147, %142
  %155 = getelementptr inbounds i8, ptr %28, i64 1680
  %156 = load ptr, ptr %155, align 8, !tbaa !129
  %157 = icmp eq ptr %156, null
  br i1 %157, label %.sink.split556, label %163

.sink.split556:                                   ; preds = %154
  store ptr @_ZN6ImPlotL17Formatter_DefaultEdPciPv, ptr %155, align 8, !tbaa !129
  %158 = getelementptr inbounds i8, ptr %28, i64 1896
  %159 = load i8, ptr %158, align 8, !tbaa !130, !range !124, !noundef !125
  %160 = trunc nuw i8 %159 to i1
  %161 = getelementptr inbounds i8, ptr %28, i64 1696
  %.sink557 = select i1 %160, ptr %161, ptr @.str.133
  %162 = getelementptr inbounds i8, ptr %28, i64 1688
  store ptr %.sink557, ptr %162, align 8, !tbaa !131
  br label %163

163:                                              ; preds = %.sink.split556, %154
  %164 = getelementptr inbounds i8, ptr %28, i64 1712
  %165 = load ptr, ptr %164, align 8, !tbaa !132
  %166 = icmp eq ptr %165, null
  br i1 %166, label %167, label %168

167:                                              ; preds = %163
  store ptr @_ZN6ImPlot15Locator_DefaultER12ImPlotTickerRK11ImPlotRangefbPFidPciPvES6_, ptr %164, align 8, !tbaa !132
  br label %168

168:                                              ; preds = %167, %163
  %169 = getelementptr inbounds i8, ptr %28, i64 1904
  %170 = getelementptr inbounds i8, ptr %28, i64 2268
  %171 = load i8, ptr %170, align 4, !tbaa !120, !range !124, !noundef !125
  %172 = trunc nuw i8 %171 to i1
  br i1 %172, label %173, label %180

173:                                              ; preds = %168
  tail call void @_ZN10ImPlotAxis9ConstrainEv(ptr noundef nonnull align 8 dereferenceable(372) %169)
  %174 = load i8, ptr %38, align 1, !tbaa !126, !range !124, !noundef !125
  %175 = trunc nuw i8 %174 to i1
  br i1 %175, label %180, label %176

176:                                              ; preds = %173
  %177 = tail call noundef zeroext i1 @_ZNK10ImPlotAxis10CanInitFitEv(ptr noundef nonnull align 8 dereferenceable(372) %169)
  br i1 %177, label %178, label %180

178:                                              ; preds = %176
  %179 = getelementptr inbounds i8, ptr %28, i64 2270
  store i8 1, ptr %179, align 2, !tbaa !127
  store i8 1, ptr %39, align 1, !tbaa !128
  br label %180

180:                                              ; preds = %178, %176, %173, %168
  %181 = getelementptr inbounds i8, ptr %28, i64 2056
  %182 = load ptr, ptr %181, align 8, !tbaa !129
  %183 = icmp eq ptr %182, null
  br i1 %183, label %.sink.split559, label %189

.sink.split559:                                   ; preds = %180
  store ptr @_ZN6ImPlotL17Formatter_DefaultEdPciPv, ptr %181, align 8, !tbaa !129
  %184 = getelementptr inbounds i8, ptr %28, i64 2272
  %185 = load i8, ptr %184, align 8, !tbaa !130, !range !124, !noundef !125
  %186 = trunc nuw i8 %185 to i1
  %187 = getelementptr inbounds i8, ptr %28, i64 2072
  %.sink560 = select i1 %186, ptr %187, ptr @.str.133
  %188 = getelementptr inbounds i8, ptr %28, i64 2064
  store ptr %.sink560, ptr %188, align 8, !tbaa !131
  br label %189

189:                                              ; preds = %.sink.split559, %180
  %190 = getelementptr inbounds i8, ptr %28, i64 2088
  %191 = load ptr, ptr %190, align 8, !tbaa !132
  %192 = icmp eq ptr %191, null
  br i1 %192, label %193, label %194

193:                                              ; preds = %189
  store ptr @_ZN6ImPlot15Locator_DefaultER12ImPlotTickerRK11ImPlotRangefbPFidPciPvES6_, ptr %190, align 8, !tbaa !132
  br label %194

194:                                              ; preds = %193, %189
  %195 = getelementptr inbounds i8, ptr %28, i64 4
  %196 = load i32, ptr %195, align 4, !tbaa !133
  %197 = tail call noundef zeroext i1 @_ZL9ImHasFlagIi12ImPlotFlags_EbT_T0_(i32 noundef %196, i32 noundef 256)
  %198 = getelementptr inbounds i8, ptr %28, i64 1152
  %199 = load i8, ptr %40, align 4, !tbaa !120, !range !124, !noundef !125
  %200 = trunc nuw i8 %199 to i1
  %201 = load i8, ptr %118, align 4, !tbaa !120, !range !124, !noundef !125
  %202 = trunc nuw i8 %201 to i1
  br i1 %200, label %203, label %217

203:                                              ; preds = %194
  %204 = getelementptr inbounds i8, ptr %28, i64 80
  %205 = load ptr, ptr %204, align 8, !tbaa !134
  br i1 %202, label %206, label %214

206:                                              ; preds = %203
  %207 = icmp eq ptr %205, null
  br i1 %207, label %208, label %209

208:                                              ; preds = %206
  store ptr %117, ptr %204, align 8, !tbaa !134
  br label %209

209:                                              ; preds = %208, %206
  %210 = getelementptr inbounds i8, ptr %28, i64 1208
  %211 = load ptr, ptr %210, align 8, !tbaa !134
  %212 = icmp eq ptr %211, null
  br i1 %212, label %213, label %223

213:                                              ; preds = %209
  store ptr %37, ptr %210, align 8, !tbaa !134
  br label %223

214:                                              ; preds = %203
  %215 = icmp ne ptr %205, null
  %brmerge = or i1 %197, %215
  br i1 %brmerge, label %223, label %216

216:                                              ; preds = %214
  store ptr %198, ptr %204, align 8, !tbaa !134
  br label %223

217:                                              ; preds = %194
  br i1 %202, label %218, label %223

218:                                              ; preds = %217
  %219 = getelementptr inbounds i8, ptr %28, i64 1208
  %220 = load ptr, ptr %219, align 8, !tbaa !134
  %221 = icmp ne ptr %220, null
  %brmerge470 = or i1 %197, %221
  br i1 %brmerge470, label %223, label %222

222:                                              ; preds = %218
  store ptr %37, ptr %219, align 8, !tbaa !134
  br label %223

223:                                              ; preds = %218, %214, %216, %222, %217, %209, %213
  %224 = load i8, ptr %66, align 4, !tbaa !120, !range !124, !noundef !125
  %225 = trunc nuw i8 %224 to i1
  %226 = load i8, ptr %144, align 4, !tbaa !120, !range !124, !noundef !125
  %227 = trunc nuw i8 %226 to i1
  br i1 %225, label %234, label %228

228:                                              ; preds = %223
  br i1 %227, label %229, label %248

229:                                              ; preds = %228
  %230 = getelementptr inbounds i8, ptr %28, i64 1584
  %231 = load ptr, ptr %230, align 8, !tbaa !134
  %232 = icmp ne ptr %231, null
  %brmerge470.1 = or i1 %197, %232
  br i1 %brmerge470.1, label %248, label %233

233:                                              ; preds = %229
  store ptr %37, ptr %230, align 8, !tbaa !134
  br label %248

234:                                              ; preds = %223
  %235 = getelementptr inbounds i8, ptr %28, i64 456
  %236 = load ptr, ptr %235, align 8, !tbaa !134
  br i1 %227, label %240, label %237

237:                                              ; preds = %234
  %238 = icmp ne ptr %236, null
  %brmerge.1 = or i1 %197, %238
  br i1 %brmerge.1, label %248, label %239

239:                                              ; preds = %237
  store ptr %198, ptr %235, align 8, !tbaa !134
  br label %248

240:                                              ; preds = %234
  %241 = icmp eq ptr %236, null
  br i1 %241, label %242, label %243

242:                                              ; preds = %240
  store ptr %143, ptr %235, align 8, !tbaa !134
  br label %243

243:                                              ; preds = %242, %240
  %244 = getelementptr inbounds i8, ptr %28, i64 1584
  %245 = load ptr, ptr %244, align 8, !tbaa !134
  %246 = icmp eq ptr %245, null
  br i1 %246, label %247, label %248

247:                                              ; preds = %243
  store ptr %65, ptr %244, align 8, !tbaa !134
  br label %248

248:                                              ; preds = %247, %243, %239, %237, %233, %229, %228
  %249 = load i8, ptr %92, align 4, !tbaa !120, !range !124, !noundef !125
  %250 = trunc nuw i8 %249 to i1
  %251 = load i8, ptr %170, align 4, !tbaa !120, !range !124, !noundef !125
  %252 = trunc nuw i8 %251 to i1
  br i1 %250, label %259, label %253

253:                                              ; preds = %248
  br i1 %252, label %254, label %273

254:                                              ; preds = %253
  %255 = getelementptr inbounds i8, ptr %28, i64 1960
  %256 = load ptr, ptr %255, align 8, !tbaa !134
  %257 = icmp ne ptr %256, null
  %brmerge470.2 = or i1 %197, %257
  br i1 %brmerge470.2, label %273, label %258

258:                                              ; preds = %254
  store ptr %37, ptr %255, align 8, !tbaa !134
  br label %273

259:                                              ; preds = %248
  %260 = getelementptr inbounds i8, ptr %28, i64 832
  %261 = load ptr, ptr %260, align 8, !tbaa !134
  br i1 %252, label %265, label %262

262:                                              ; preds = %259
  %263 = icmp ne ptr %261, null
  %brmerge.2 = or i1 %197, %263
  br i1 %brmerge.2, label %273, label %264

264:                                              ; preds = %262
  store ptr %198, ptr %260, align 8, !tbaa !134
  br label %273

265:                                              ; preds = %259
  %266 = icmp eq ptr %261, null
  br i1 %266, label %267, label %268

267:                                              ; preds = %265
  store ptr %169, ptr %260, align 8, !tbaa !134
  br label %268

268:                                              ; preds = %267, %265
  %269 = getelementptr inbounds i8, ptr %28, i64 1960
  %270 = load ptr, ptr %269, align 8, !tbaa !134
  %271 = icmp eq ptr %270, null
  br i1 %271, label %272, label %273

272:                                              ; preds = %268
  store ptr %91, ptr %269, align 8, !tbaa !134
  br label %273

273:                                              ; preds = %272, %268, %264, %262, %258, %254, %253
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #12
  %274 = getelementptr inbounds i8, ptr %28, i64 2432
  %275 = getelementptr inbounds i8, ptr %24, i64 352
  %276 = tail call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %274, ptr noundef nonnull align 4 dereferenceable(8) %275)
  store <2 x float> %276, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #12
  %277 = getelementptr inbounds i8, ptr %28, i64 2440
  %278 = tail call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %277, ptr noundef nonnull align 4 dereferenceable(8) %275)
  store <2 x float> %278, ptr %3, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %279 = getelementptr inbounds i8, ptr %28, i64 2448
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %279, ptr noundef nonnull align 4 dereferenceable(16) %1, i64 16, i1 false), !tbaa.struct !135
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #12
  %280 = getelementptr inbounds i8, ptr %28, i64 2480
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %280, ptr noundef nonnull align 8 dereferenceable(16) %274, i64 16, i1 false), !tbaa.struct !135
  %281 = load i32, ptr %195, align 4, !tbaa !133
  %282 = call noundef zeroext i1 @_ZL9ImHasFlagIi12ImPlotFlags_EbT_T0_(i32 noundef %281, i32 noundef 2)
  br i1 %282, label %386, label %283

283:                                              ; preds = %273
  %284 = getelementptr inbounds i8, ptr %28, i64 2296
  %285 = call noundef i32 @_ZNK15ImPlotItemGroup14GetLegendCountEv(ptr noundef nonnull align 8 dereferenceable(124) %284)
  %286 = icmp sgt i32 %285, 0
  br i1 %286, label %287, label %386

287:                                              ; preds = %283
  %288 = getelementptr inbounds i8, ptr %28, i64 2304
  %289 = load i32, ptr %288, align 8, !tbaa !137
  %290 = call noundef zeroext i1 @_ZL9ImHasFlagIi18ImPlotLegendFlags_EbT_T0_(i32 noundef %289, i32 noundef 16)
  br i1 %290, label %291, label %386

291:                                              ; preds = %287
  %292 = load i32, ptr %288, align 8, !tbaa !138
  %293 = call noundef zeroext i1 @_ZL9ImHasFlagIi18ImPlotLegendFlags_EbT_T0_(i32 noundef %292, i32 noundef 32)
  %294 = getelementptr inbounds i8, ptr %24, i64 376
  %295 = getelementptr inbounds i8, ptr %24, i64 384
  %296 = xor i1 %293, true
  %297 = call <2 x float> @_ZN6ImPlot14CalcLegendSizeER15ImPlotItemGroupRK6ImVec2S4_b(ptr noundef nonnull align 8 dereferenceable(124) %284, ptr noundef nonnull align 4 dereferenceable(8) %294, ptr noundef nonnull align 4 dereferenceable(8) %295, i1 noundef zeroext %296)
  %298 = getelementptr inbounds i8, ptr %28, i64 2312
  %299 = load i32, ptr %298, align 8, !tbaa !139
  %300 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %299, i32 noundef 4)
  br i1 %300, label %301, label %305

301:                                              ; preds = %291
  %302 = load i32, ptr %298, align 8, !tbaa !139
  %303 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %302, i32 noundef 8)
  %304 = xor i1 %303, true
  br label %305

305:                                              ; preds = %301, %291
  %306 = phi i1 [ false, %291 ], [ %304, %301 ]
  %307 = load i32, ptr %298, align 8, !tbaa !139
  %308 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %307, i32 noundef 8)
  br i1 %308, label %309, label %313

309:                                              ; preds = %305
  %310 = load i32, ptr %298, align 8, !tbaa !139
  %311 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %310, i32 noundef 4)
  %312 = xor i1 %311, true
  br label %313

313:                                              ; preds = %309, %305
  %314 = phi i1 [ false, %305 ], [ %312, %309 ]
  %315 = load i32, ptr %298, align 8, !tbaa !139
  %316 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %315, i32 noundef 1)
  br i1 %316, label %317, label %321

317:                                              ; preds = %313
  %318 = load i32, ptr %298, align 8, !tbaa !139
  %319 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %318, i32 noundef 2)
  %320 = xor i1 %319, true
  br label %321

321:                                              ; preds = %317, %313
  %322 = phi i1 [ false, %313 ], [ %320, %317 ]
  %323 = load i32, ptr %298, align 8, !tbaa !139
  %324 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %323, i32 noundef 2)
  br i1 %324, label %325, label %329

325:                                              ; preds = %321
  %326 = load i32, ptr %298, align 8, !tbaa !139
  %327 = call noundef zeroext i1 @_ZL9ImHasFlagIi15ImPlotLocation_EbT_T0_(i32 noundef %326, i32 noundef 1)
  %328 = xor i1 %327, true
  br label %329

329:                                              ; preds = %325, %321
  %330 = phi i1 [ false, %321 ], [ %328, %325 ]
  %.not471 = xor i1 %306, true
  %brmerge472 = or i1 %293, %.not471
  br i1 %brmerge472, label %331, label %332

331:                                              ; preds = %329
  %brmerge475 = or i1 %296, %.not471
  %brmerge476 = or i1 %brmerge475, %322
  %brmerge477 = or i1 %brmerge476, %330
  br i1 %brmerge477, label %342, label %332

332:                                              ; preds = %331, %329
  %.sroa.0232.0.vec.extract = extractelement <2 x float> %297, i64 0
  %333 = getelementptr inbounds i8, ptr %24, i64 368
  %334 = load float, ptr %333, align 4, !tbaa !140
  %335 = fadd float %.sroa.0232.0.vec.extract, %334
  %336 = load float, ptr %279, align 8, !tbaa !141
  %337 = fadd float %336, %335
  store float %337, ptr %279, align 8, !tbaa !141
  %338 = load float, ptr %275, align 4, !tbaa !142
  %339 = fadd float %.sroa.0232.0.vec.extract, %338
  %340 = load float, ptr %280, align 8, !tbaa !143
  %341 = fadd float %340, %339
  store float %341, ptr %280, align 8, !tbaa !143
  br label %342

342:                                              ; preds = %331, %332
  %.not478 = xor i1 %314, true
  %brmerge479 = or i1 %293, %.not478
  br i1 %brmerge479, label %343, label %344

343:                                              ; preds = %342
  %brmerge482 = or i1 %296, %.not478
  %brmerge483 = or i1 %brmerge482, %322
  %brmerge484 = or i1 %brmerge483, %330
  br i1 %brmerge484, label %356, label %344

344:                                              ; preds = %343, %342
  %.sroa.0232.0.vec.extract236 = extractelement <2 x float> %297, i64 0
  %345 = getelementptr inbounds i8, ptr %24, i64 368
  %346 = load float, ptr %345, align 4, !tbaa !140
  %347 = fadd float %.sroa.0232.0.vec.extract236, %346
  %348 = getelementptr inbounds i8, ptr %28, i64 2456
  %349 = load float, ptr %348, align 8, !tbaa !144
  %350 = fsub float %349, %347
  store float %350, ptr %348, align 8, !tbaa !144
  %351 = load float, ptr %275, align 4, !tbaa !142
  %352 = fadd float %.sroa.0232.0.vec.extract236, %351
  %353 = getelementptr inbounds i8, ptr %28, i64 2488
  %354 = load float, ptr %353, align 8, !tbaa !145
  %355 = fsub float %354, %352
  store float %355, ptr %353, align 8, !tbaa !145
  br label %356

356:                                              ; preds = %343, %344
  %.not485 = xor i1 %322, true
  %brmerge487 = or i1 %296, %.not485
  br i1 %brmerge487, label %357, label %358

357:                                              ; preds = %356
  %brmerge489 = or i1 %293, %.not485
  %brmerge490 = or i1 %306, %brmerge489
  %brmerge491 = or i1 %314, %brmerge490
  br i1 %brmerge491, label %371, label %358

358:                                              ; preds = %357, %356
  %.sroa.0232.4.vec.extract = extractelement <2 x float> %297, i64 1
  %359 = getelementptr inbounds i8, ptr %24, i64 372
  %360 = load float, ptr %359, align 4, !tbaa !146
  %361 = fadd float %.sroa.0232.4.vec.extract, %360
  %362 = getelementptr inbounds i8, ptr %28, i64 2452
  %363 = load float, ptr %362, align 4, !tbaa !147
  %364 = fadd float %363, %361
  store float %364, ptr %362, align 4, !tbaa !147
  %365 = getelementptr inbounds i8, ptr %24, i64 356
  %366 = load float, ptr %365, align 4, !tbaa !148
  %367 = fadd float %.sroa.0232.4.vec.extract, %366
  %368 = getelementptr inbounds i8, ptr %28, i64 2484
  %369 = load float, ptr %368, align 4, !tbaa !149
  %370 = fadd float %369, %367
  store float %370, ptr %368, align 4, !tbaa !149
  br label %371

371:                                              ; preds = %357, %358
  %.not492 = xor i1 %330, true
  %brmerge494 = or i1 %296, %.not492
  br i1 %brmerge494, label %372, label %373

372:                                              ; preds = %371
  %brmerge496 = or i1 %293, %.not492
  %brmerge497 = or i1 %306, %brmerge496
  %brmerge498 = or i1 %314, %brmerge497
  br i1 %brmerge498, label %386, label %373

373:                                              ; preds = %372, %371
  %.sroa.0232.4.vec.extract242 = extractelement <2 x float> %297, i64 1
  %374 = getelementptr inbounds i8, ptr %24, i64 372
  %375 = load float, ptr %374, align 4, !tbaa !146
  %376 = fadd float %.sroa.0232.4.vec.extract242, %375
  %377 = getelementptr inbounds i8, ptr %28, i64 2460
  %378 = load float, ptr %377, align 4, !tbaa !150
  %379 = fsub float %378, %376
  store float %379, ptr %377, align 4, !tbaa !150
  %380 = getelementptr inbounds i8, ptr %24, i64 356
  %381 = load float, ptr %380, align 4, !tbaa !148
  %382 = fadd float %.sroa.0232.4.vec.extract242, %381
  %383 = getelementptr inbounds i8, ptr %28, i64 2492
  %384 = load float, ptr %383, align 4, !tbaa !151
  %385 = fsub float %384, %382
  store float %385, ptr %383, align 4, !tbaa !151
  br label %386

386:                                              ; preds = %373, %372, %287, %283, %273
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #12
  store float 0.000000e+00, ptr %4, align 4, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #12
  store float 0.000000e+00, ptr %5, align 4, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #12
  store float 0.000000e+00, ptr %6, align 4, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #12
  store float 0.000000e+00, ptr %7, align 4, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %8, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %387 = call noundef zeroext i1 @_ZNK10ImPlotPlot8HasTitleEv(ptr noundef nonnull align 8 dereferenceable(2533) %28)
  br i1 %387, label %388, label %._crit_edge

._crit_edge:                                      ; preds = %386
  %.pre = load float, ptr %8, align 8, !tbaa !152
  br label %392

388:                                              ; preds = %386
  %389 = call noundef ptr @_ZNK10ImPlotPlot8GetTitleEv(ptr noundef nonnull align 8 dereferenceable(2533) %28)
  %390 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %389, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %390, ptr %8, align 8
  %391 = extractelement <2 x float> %390, i64 0
  br label %392

392:                                              ; preds = %._crit_edge, %388
  %393 = phi float [ %.pre, %._crit_edge ], [ %391, %388 ]
  %394 = fcmp ogt float %393, 0.000000e+00
  br i1 %394, label %395, label %409

395:                                              ; preds = %392
  %396 = getelementptr inbounds i8, ptr %8, i64 4
  %397 = load float, ptr %396, align 4, !tbaa !153
  %398 = getelementptr inbounds i8, ptr %24, i64 364
  %399 = load float, ptr %398, align 4, !tbaa !154
  %400 = fadd float %397, %399
  %401 = load float, ptr %4, align 4, !tbaa !136
  %402 = fadd float %401, %400
  store float %402, ptr %4, align 4, !tbaa !136
  %403 = getelementptr inbounds i8, ptr %24, i64 356
  %404 = load float, ptr %403, align 4, !tbaa !148
  %405 = fadd float %402, %404
  %406 = getelementptr inbounds i8, ptr %28, i64 2484
  %407 = load float, ptr %406, align 4, !tbaa !149
  %408 = fadd float %407, %405
  store float %408, ptr %406, align 4, !tbaa !149
  br label %409

409:                                              ; preds = %395, %392
  %410 = getelementptr inbounds i8, ptr %24, i64 1584
  %411 = load ptr, ptr %410, align 8, !tbaa !155
  call void @_ZN6ImPlot16PadAndDatumAxesXER10ImPlotPlotRfS2_P19ImPlotAlignmentData(ptr noundef nonnull align 8 dereferenceable(2533) %28, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef %411)
  %412 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %279)
  %413 = load float, ptr %4, align 4, !tbaa !136
  %414 = fsub float %412, %413
  %415 = load float, ptr %5, align 4, !tbaa !136
  %416 = fsub float %414, %415
  %417 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 0)
  %418 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %417)
  br i1 %418, label %419, label %432

419:                                              ; preds = %409
  %420 = getelementptr inbounds i8, ptr %417, i64 369
  %421 = load i8, ptr %420, align 1, !tbaa !156, !range !124, !noundef !125
  %422 = trunc nuw i8 %421 to i1
  br i1 %422, label %423, label %432

423:                                              ; preds = %419
  %424 = getelementptr inbounds i8, ptr %417, i64 184
  %425 = load ptr, ptr %424, align 8, !tbaa !132
  %426 = getelementptr inbounds i8, ptr %417, i64 96
  %427 = getelementptr inbounds i8, ptr %417, i64 16
  %428 = getelementptr inbounds i8, ptr %417, i64 152
  %429 = load ptr, ptr %428, align 8, !tbaa !129
  %430 = getelementptr inbounds i8, ptr %417, i64 160
  %431 = load ptr, ptr %430, align 8, !tbaa !131
  call void %425(ptr noundef nonnull align 8 dereferenceable(52) %426, ptr noundef nonnull align 8 dereferenceable(16) %427, float noundef %416, i1 noundef zeroext true, ptr noundef %429, ptr noundef %431)
  br label %432

432:                                              ; preds = %423, %419, %409
  %433 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 1)
  %434 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %433)
  br i1 %434, label %435, label %448

435:                                              ; preds = %432
  %436 = getelementptr inbounds i8, ptr %433, i64 369
  %437 = load i8, ptr %436, align 1, !tbaa !156, !range !124, !noundef !125
  %438 = trunc nuw i8 %437 to i1
  br i1 %438, label %439, label %448

439:                                              ; preds = %435
  %440 = getelementptr inbounds i8, ptr %433, i64 184
  %441 = load ptr, ptr %440, align 8, !tbaa !132
  %442 = getelementptr inbounds i8, ptr %433, i64 96
  %443 = getelementptr inbounds i8, ptr %433, i64 16
  %444 = getelementptr inbounds i8, ptr %433, i64 152
  %445 = load ptr, ptr %444, align 8, !tbaa !129
  %446 = getelementptr inbounds i8, ptr %433, i64 160
  %447 = load ptr, ptr %446, align 8, !tbaa !131
  call void %441(ptr noundef nonnull align 8 dereferenceable(52) %442, ptr noundef nonnull align 8 dereferenceable(16) %443, float noundef %416, i1 noundef zeroext true, ptr noundef %445, ptr noundef %447)
  br label %448

448:                                              ; preds = %439, %435, %432
  %449 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 2)
  %450 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %449)
  br i1 %450, label %451, label %464

451:                                              ; preds = %448
  %452 = getelementptr inbounds i8, ptr %449, i64 369
  %453 = load i8, ptr %452, align 1, !tbaa !156, !range !124, !noundef !125
  %454 = trunc nuw i8 %453 to i1
  br i1 %454, label %455, label %464

455:                                              ; preds = %451
  %456 = getelementptr inbounds i8, ptr %449, i64 184
  %457 = load ptr, ptr %456, align 8, !tbaa !132
  %458 = getelementptr inbounds i8, ptr %449, i64 96
  %459 = getelementptr inbounds i8, ptr %449, i64 16
  %460 = getelementptr inbounds i8, ptr %449, i64 152
  %461 = load ptr, ptr %460, align 8, !tbaa !129
  %462 = getelementptr inbounds i8, ptr %449, i64 160
  %463 = load ptr, ptr %462, align 8, !tbaa !131
  call void %457(ptr noundef nonnull align 8 dereferenceable(52) %458, ptr noundef nonnull align 8 dereferenceable(16) %459, float noundef %416, i1 noundef zeroext true, ptr noundef %461, ptr noundef %463)
  br label %464

464:                                              ; preds = %455, %451, %448
  %465 = getelementptr inbounds i8, ptr %24, i64 1592
  %466 = load ptr, ptr %465, align 8, !tbaa !157
  call void @_ZN6ImPlot16PadAndDatumAxesYER10ImPlotPlotRfS2_P19ImPlotAlignmentData(ptr noundef nonnull align 8 dereferenceable(2533) %28, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef %466)
  %467 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %279)
  %468 = load float, ptr %6, align 4, !tbaa !136
  %469 = fsub float %467, %468
  %470 = load float, ptr %7, align 4, !tbaa !136
  %471 = fsub float %469, %470
  %472 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 0)
  %473 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %472)
  br i1 %473, label %474, label %487

474:                                              ; preds = %464
  %475 = getelementptr inbounds i8, ptr %472, i64 369
  %476 = load i8, ptr %475, align 1, !tbaa !156, !range !124, !noundef !125
  %477 = trunc nuw i8 %476 to i1
  br i1 %477, label %478, label %487

478:                                              ; preds = %474
  %479 = getelementptr inbounds i8, ptr %472, i64 184
  %480 = load ptr, ptr %479, align 8, !tbaa !132
  %481 = getelementptr inbounds i8, ptr %472, i64 96
  %482 = getelementptr inbounds i8, ptr %472, i64 16
  %483 = getelementptr inbounds i8, ptr %472, i64 152
  %484 = load ptr, ptr %483, align 8, !tbaa !129
  %485 = getelementptr inbounds i8, ptr %472, i64 160
  %486 = load ptr, ptr %485, align 8, !tbaa !131
  call void %480(ptr noundef nonnull align 8 dereferenceable(52) %481, ptr noundef nonnull align 8 dereferenceable(16) %482, float noundef %471, i1 noundef zeroext false, ptr noundef %484, ptr noundef %486)
  br label %487

487:                                              ; preds = %478, %474, %464
  %488 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 1)
  %489 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %488)
  br i1 %489, label %490, label %503

490:                                              ; preds = %487
  %491 = getelementptr inbounds i8, ptr %488, i64 369
  %492 = load i8, ptr %491, align 1, !tbaa !156, !range !124, !noundef !125
  %493 = trunc nuw i8 %492 to i1
  br i1 %493, label %494, label %503

494:                                              ; preds = %490
  %495 = getelementptr inbounds i8, ptr %488, i64 184
  %496 = load ptr, ptr %495, align 8, !tbaa !132
  %497 = getelementptr inbounds i8, ptr %488, i64 96
  %498 = getelementptr inbounds i8, ptr %488, i64 16
  %499 = getelementptr inbounds i8, ptr %488, i64 152
  %500 = load ptr, ptr %499, align 8, !tbaa !129
  %501 = getelementptr inbounds i8, ptr %488, i64 160
  %502 = load ptr, ptr %501, align 8, !tbaa !131
  call void %496(ptr noundef nonnull align 8 dereferenceable(52) %497, ptr noundef nonnull align 8 dereferenceable(16) %498, float noundef %471, i1 noundef zeroext false, ptr noundef %500, ptr noundef %502)
  br label %503

503:                                              ; preds = %494, %490, %487
  %504 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 2)
  %505 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %504)
  br i1 %505, label %506, label %.preheader510

506:                                              ; preds = %503
  %507 = getelementptr inbounds i8, ptr %504, i64 369
  %508 = load i8, ptr %507, align 1, !tbaa !156, !range !124, !noundef !125
  %509 = trunc nuw i8 %508 to i1
  br i1 %509, label %510, label %.preheader510

510:                                              ; preds = %506
  %511 = getelementptr inbounds i8, ptr %504, i64 184
  %512 = load ptr, ptr %511, align 8, !tbaa !132
  %513 = getelementptr inbounds i8, ptr %504, i64 96
  %514 = getelementptr inbounds i8, ptr %504, i64 16
  %515 = getelementptr inbounds i8, ptr %504, i64 152
  %516 = load ptr, ptr %515, align 8, !tbaa !129
  %517 = getelementptr inbounds i8, ptr %504, i64 160
  %518 = load ptr, ptr %517, align 8, !tbaa !131
  call void %512(ptr noundef nonnull align 8 dereferenceable(52) %513, ptr noundef nonnull align 8 dereferenceable(16) %514, float noundef %471, i1 noundef zeroext false, ptr noundef %516, ptr noundef %518)
  br label %.preheader510

.preheader510:                                    ; preds = %510, %506, %503
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  %519 = load float, ptr %6, align 4, !tbaa !136
  %520 = load float, ptr %4, align 4, !tbaa !136
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef %519, float noundef %520)
  %521 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %279, ptr noundef nonnull align 4 dereferenceable(8) %11)
  store <2 x float> %521, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #12
  %522 = getelementptr inbounds i8, ptr %28, i64 2456
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  %523 = load float, ptr %7, align 4, !tbaa !136
  %524 = load float, ptr %5, align 4, !tbaa !136
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef %523, float noundef %524)
  %525 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %522, ptr noundef nonnull align 4 dereferenceable(8) %13)
  store <2 x float> %525, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %9, ptr noundef nonnull align 4 dereferenceable(8) %10, ptr noundef nonnull align 4 dereferenceable(8) %12)
  %526 = getelementptr inbounds i8, ptr %28, i64 2464
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %526, ptr noundef nonnull align 4 dereferenceable(16) %9, i64 16, i1 false), !tbaa.struct !135
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #12
  %527 = getelementptr inbounds i8, ptr %28, i64 2472
  %528 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %529 = load float, ptr %526, align 8, !tbaa !158
  %530 = getelementptr inbounds i8, ptr %528, i64 304
  %531 = load float, ptr %530, align 8, !tbaa !159
  %532 = getelementptr inbounds i8, ptr %528, i64 308
  %533 = load float, ptr %532, align 4, !tbaa !160
  %534 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %531, float noundef %533)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %529, float noundef %534)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  %535 = load float, ptr %527, align 8, !tbaa !161
  %536 = load float, ptr %530, align 8, !tbaa !159
  %537 = load float, ptr %532, align 4, !tbaa !160
  %538 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %536, float noundef %537)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef %535, float noundef %538)
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %14, ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull align 4 dereferenceable(8) %16)
  %539 = getelementptr inbounds i8, ptr %528, i64 312
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %539, ptr noundef nonnull align 4 dereferenceable(16) %14, i64 16, i1 false), !tbaa.struct !135
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #12
  %540 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %528)
  %. = select i1 %540, ptr %527, ptr %526
  %541 = load float, ptr %., align 8, !tbaa !136
  %542 = getelementptr inbounds i8, ptr %528, i64 272
  store float %541, ptr %542, align 8, !tbaa !162
  %543 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %528)
  %.in467 = select i1 %543, ptr %526, ptr %527
  %544 = load float, ptr %.in467, align 8, !tbaa !136
  %545 = getelementptr inbounds i8, ptr %528, i64 276
  store float %544, ptr %545, align 4, !tbaa !163
  call void @_ZN10ImPlotAxis20UpdateTransformCacheEv(ptr noundef nonnull align 8 dereferenceable(372) %528)
  %546 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %547 = load float, ptr %526, align 8, !tbaa !158
  %548 = getelementptr inbounds i8, ptr %546, i64 304
  %549 = load float, ptr %548, align 8, !tbaa !159
  %550 = getelementptr inbounds i8, ptr %546, i64 308
  %551 = load float, ptr %550, align 4, !tbaa !160
  %552 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %549, float noundef %551)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %547, float noundef %552)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  %553 = load float, ptr %527, align 8, !tbaa !161
  %554 = load float, ptr %548, align 8, !tbaa !159
  %555 = load float, ptr %550, align 4, !tbaa !160
  %556 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %554, float noundef %555)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef %553, float noundef %556)
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %14, ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull align 4 dereferenceable(8) %16)
  %557 = getelementptr inbounds i8, ptr %546, i64 312
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %557, ptr noundef nonnull align 4 dereferenceable(16) %14, i64 16, i1 false), !tbaa.struct !135
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #12
  %558 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %546)
  %..1 = select i1 %558, ptr %527, ptr %526
  %559 = load float, ptr %..1, align 8, !tbaa !136
  %560 = getelementptr inbounds i8, ptr %546, i64 272
  store float %559, ptr %560, align 8, !tbaa !162
  %561 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %546)
  %.in467.1 = select i1 %561, ptr %526, ptr %527
  %562 = load float, ptr %.in467.1, align 8, !tbaa !136
  %563 = getelementptr inbounds i8, ptr %546, i64 276
  store float %562, ptr %563, align 4, !tbaa !163
  call void @_ZN10ImPlotAxis20UpdateTransformCacheEv(ptr noundef nonnull align 8 dereferenceable(372) %546)
  %564 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %565 = load float, ptr %526, align 8, !tbaa !158
  %566 = getelementptr inbounds i8, ptr %564, i64 304
  %567 = load float, ptr %566, align 8, !tbaa !159
  %568 = getelementptr inbounds i8, ptr %564, i64 308
  %569 = load float, ptr %568, align 4, !tbaa !160
  %570 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %567, float noundef %569)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %565, float noundef %570)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  %571 = load float, ptr %527, align 8, !tbaa !161
  %572 = load float, ptr %566, align 8, !tbaa !159
  %573 = load float, ptr %568, align 4, !tbaa !160
  %574 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %572, float noundef %573)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef %571, float noundef %574)
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %14, ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull align 4 dereferenceable(8) %16)
  %575 = getelementptr inbounds i8, ptr %564, i64 312
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %575, ptr noundef nonnull align 4 dereferenceable(16) %14, i64 16, i1 false), !tbaa.struct !135
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #12
  %576 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %564)
  %..2 = select i1 %576, ptr %527, ptr %526
  %577 = load float, ptr %..2, align 8, !tbaa !136
  %578 = getelementptr inbounds i8, ptr %564, i64 272
  store float %577, ptr %578, align 8, !tbaa !162
  %579 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %564)
  %.in467.2 = select i1 %579, ptr %526, ptr %527
  %580 = load float, ptr %.in467.2, align 8, !tbaa !136
  %581 = getelementptr inbounds i8, ptr %564, i64 276
  store float %580, ptr %581, align 4, !tbaa !163
  call void @_ZN10ImPlotAxis20UpdateTransformCacheEv(ptr noundef nonnull align 8 dereferenceable(372) %564)
  %582 = getelementptr inbounds i8, ptr %28, i64 2468
  %583 = getelementptr inbounds i8, ptr %28, i64 2476
  %584 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %585 = getelementptr inbounds i8, ptr %584, i64 304
  %586 = load float, ptr %585, align 8, !tbaa !159
  %587 = getelementptr inbounds i8, ptr %584, i64 308
  %588 = load float, ptr %587, align 4, !tbaa !160
  %589 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %586, float noundef %588)
  %590 = load float, ptr %582, align 4, !tbaa !164
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %18, float noundef %589, float noundef %590)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #12
  %591 = load float, ptr %585, align 8, !tbaa !159
  %592 = load float, ptr %587, align 4, !tbaa !160
  %593 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %591, float noundef %592)
  %594 = load float, ptr %583, align 4, !tbaa !165
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef %593, float noundef %594)
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %17, ptr noundef nonnull align 4 dereferenceable(8) %18, ptr noundef nonnull align 4 dereferenceable(8) %19)
  %595 = getelementptr inbounds i8, ptr %584, i64 312
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %595, ptr noundef nonnull align 4 dereferenceable(16) %17, i64 16, i1 false), !tbaa.struct !135
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #12
  %596 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %584)
  %.499 = select i1 %596, ptr %582, ptr %583
  %597 = load float, ptr %.499, align 4, !tbaa !136
  %598 = getelementptr inbounds i8, ptr %584, i64 272
  store float %597, ptr %598, align 8, !tbaa !162
  %599 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %584)
  %.in465 = select i1 %599, ptr %583, ptr %582
  %600 = load float, ptr %.in465, align 4, !tbaa !136
  %601 = getelementptr inbounds i8, ptr %584, i64 276
  store float %600, ptr %601, align 4, !tbaa !163
  call void @_ZN10ImPlotAxis20UpdateTransformCacheEv(ptr noundef nonnull align 8 dereferenceable(372) %584)
  %602 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %603 = getelementptr inbounds i8, ptr %602, i64 304
  %604 = load float, ptr %603, align 8, !tbaa !159
  %605 = getelementptr inbounds i8, ptr %602, i64 308
  %606 = load float, ptr %605, align 4, !tbaa !160
  %607 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %604, float noundef %606)
  %608 = load float, ptr %582, align 4, !tbaa !164
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %18, float noundef %607, float noundef %608)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #12
  %609 = load float, ptr %603, align 8, !tbaa !159
  %610 = load float, ptr %605, align 4, !tbaa !160
  %611 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %609, float noundef %610)
  %612 = load float, ptr %583, align 4, !tbaa !165
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef %611, float noundef %612)
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %17, ptr noundef nonnull align 4 dereferenceable(8) %18, ptr noundef nonnull align 4 dereferenceable(8) %19)
  %613 = getelementptr inbounds i8, ptr %602, i64 312
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %613, ptr noundef nonnull align 4 dereferenceable(16) %17, i64 16, i1 false), !tbaa.struct !135
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #12
  %614 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %602)
  %.499.1 = select i1 %614, ptr %582, ptr %583
  %615 = load float, ptr %.499.1, align 4, !tbaa !136
  %616 = getelementptr inbounds i8, ptr %602, i64 272
  store float %615, ptr %616, align 8, !tbaa !162
  %617 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %602)
  %.in465.1 = select i1 %617, ptr %583, ptr %582
  %618 = load float, ptr %.in465.1, align 4, !tbaa !136
  %619 = getelementptr inbounds i8, ptr %602, i64 276
  store float %618, ptr %619, align 4, !tbaa !163
  call void @_ZN10ImPlotAxis20UpdateTransformCacheEv(ptr noundef nonnull align 8 dereferenceable(372) %602)
  %620 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %621 = getelementptr inbounds i8, ptr %620, i64 304
  %622 = load float, ptr %621, align 8, !tbaa !159
  %623 = getelementptr inbounds i8, ptr %620, i64 308
  %624 = load float, ptr %623, align 4, !tbaa !160
  %625 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %622, float noundef %624)
  %626 = load float, ptr %582, align 4, !tbaa !164
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %18, float noundef %625, float noundef %626)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #12
  %627 = load float, ptr %621, align 8, !tbaa !159
  %628 = load float, ptr %623, align 4, !tbaa !160
  %629 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %627, float noundef %628)
  %630 = load float, ptr %583, align 4, !tbaa !165
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef %629, float noundef %630)
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %17, ptr noundef nonnull align 4 dereferenceable(8) %18, ptr noundef nonnull align 4 dereferenceable(8) %19)
  %631 = getelementptr inbounds i8, ptr %620, i64 312
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %631, ptr noundef nonnull align 4 dereferenceable(16) %17, i64 16, i1 false), !tbaa.struct !135
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #12
  %632 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %620)
  %.499.2 = select i1 %632, ptr %582, ptr %583
  %633 = load float, ptr %.499.2, align 4, !tbaa !136
  %634 = getelementptr inbounds i8, ptr %620, i64 272
  store float %633, ptr %634, align 8, !tbaa !162
  %635 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsInvertedEv(ptr noundef nonnull align 8 dereferenceable(372) %620)
  %.in465.2 = select i1 %635, ptr %583, ptr %582
  %636 = load float, ptr %.in465.2, align 4, !tbaa !136
  %637 = getelementptr inbounds i8, ptr %620, i64 276
  store float %636, ptr %637, align 4, !tbaa !163
  call void @_ZN10ImPlotAxis20UpdateTransformCacheEv(ptr noundef nonnull align 8 dereferenceable(372) %620)
  br i1 %197, label %.preheader508.preheader, label %.loopexit509

.preheader508.preheader:                          ; preds = %.preheader510
  %638 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 0)
  %639 = getelementptr inbounds i8, ptr %638, i64 56
  %640 = load ptr, ptr %639, align 8, !tbaa !134
  %641 = icmp eq ptr %640, null
  br i1 %641, label %.preheader508.1, label %642

642:                                              ; preds = %.preheader508.preheader
  %643 = call noundef double @_ZNK10ImPlotAxis9GetAspectEv(ptr noundef nonnull align 8 dereferenceable(372) %638)
  %644 = load ptr, ptr %639, align 8, !tbaa !134
  %645 = call noundef double @_ZNK10ImPlotAxis9GetAspectEv(ptr noundef nonnull align 8 dereferenceable(372) %644)
  %646 = getelementptr inbounds i8, ptr %638, i64 367
  %647 = load i8, ptr %646, align 1, !tbaa !166, !range !124, !noundef !125
  %648 = trunc nuw i8 %647 to i1
  br i1 %648, label %649, label %651

649:                                              ; preds = %642
  %650 = load ptr, ptr %639, align 8, !tbaa !134
  call void @_ZN10ImPlotAxis9SetAspectEd(ptr noundef nonnull align 8 dereferenceable(372) %650, double noundef %643)
  br label %.preheader508.1

651:                                              ; preds = %642
  %652 = call noundef zeroext i1 @_ZL13ImAlmostEqualddi(double noundef %643, double noundef %645, i32 noundef 2)
  br i1 %652, label %.preheader508.1, label %653

653:                                              ; preds = %651
  %654 = load ptr, ptr %639, align 8, !tbaa !134
  %655 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsInputLockedEv(ptr noundef nonnull align 8 dereferenceable(372) %654)
  br i1 %655, label %.preheader508.1, label %656

656:                                              ; preds = %653
  call void @_ZN10ImPlotAxis9SetAspectEd(ptr noundef nonnull align 8 dereferenceable(372) %638, double noundef %645)
  br label %.preheader508.1

.preheader508.1:                                  ; preds = %649, %656, %653, %651, %.preheader508.preheader
  %657 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 1)
  %658 = getelementptr inbounds i8, ptr %657, i64 56
  %659 = load ptr, ptr %658, align 8, !tbaa !134
  %660 = icmp eq ptr %659, null
  br i1 %660, label %.preheader508.2, label %661

661:                                              ; preds = %.preheader508.1
  %662 = call noundef double @_ZNK10ImPlotAxis9GetAspectEv(ptr noundef nonnull align 8 dereferenceable(372) %657)
  %663 = load ptr, ptr %658, align 8, !tbaa !134
  %664 = call noundef double @_ZNK10ImPlotAxis9GetAspectEv(ptr noundef nonnull align 8 dereferenceable(372) %663)
  %665 = getelementptr inbounds i8, ptr %657, i64 367
  %666 = load i8, ptr %665, align 1, !tbaa !166, !range !124, !noundef !125
  %667 = trunc nuw i8 %666 to i1
  br i1 %667, label %674, label %668

668:                                              ; preds = %661
  %669 = call noundef zeroext i1 @_ZL13ImAlmostEqualddi(double noundef %662, double noundef %664, i32 noundef 2)
  br i1 %669, label %.preheader508.2, label %670

670:                                              ; preds = %668
  %671 = load ptr, ptr %658, align 8, !tbaa !134
  %672 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsInputLockedEv(ptr noundef nonnull align 8 dereferenceable(372) %671)
  br i1 %672, label %.preheader508.2, label %673

673:                                              ; preds = %670
  call void @_ZN10ImPlotAxis9SetAspectEd(ptr noundef nonnull align 8 dereferenceable(372) %657, double noundef %664)
  br label %.preheader508.2

674:                                              ; preds = %661
  %675 = load ptr, ptr %658, align 8, !tbaa !134
  call void @_ZN10ImPlotAxis9SetAspectEd(ptr noundef nonnull align 8 dereferenceable(372) %675, double noundef %662)
  br label %.preheader508.2

.preheader508.2:                                  ; preds = %674, %673, %670, %668, %.preheader508.1
  %676 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 2)
  %677 = getelementptr inbounds i8, ptr %676, i64 56
  %678 = load ptr, ptr %677, align 8, !tbaa !134
  %679 = icmp eq ptr %678, null
  br i1 %679, label %.loopexit509, label %680

680:                                              ; preds = %.preheader508.2
  %681 = call noundef double @_ZNK10ImPlotAxis9GetAspectEv(ptr noundef nonnull align 8 dereferenceable(372) %676)
  %682 = load ptr, ptr %677, align 8, !tbaa !134
  %683 = call noundef double @_ZNK10ImPlotAxis9GetAspectEv(ptr noundef nonnull align 8 dereferenceable(372) %682)
  %684 = getelementptr inbounds i8, ptr %676, i64 367
  %685 = load i8, ptr %684, align 1, !tbaa !166, !range !124, !noundef !125
  %686 = trunc nuw i8 %685 to i1
  br i1 %686, label %693, label %687

687:                                              ; preds = %680
  %688 = call noundef zeroext i1 @_ZL13ImAlmostEqualddi(double noundef %681, double noundef %683, i32 noundef 2)
  br i1 %688, label %.loopexit509, label %689

689:                                              ; preds = %687
  %690 = load ptr, ptr %677, align 8, !tbaa !134
  %691 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsInputLockedEv(ptr noundef nonnull align 8 dereferenceable(372) %690)
  br i1 %691, label %.loopexit509, label %692

692:                                              ; preds = %689
  call void @_ZN10ImPlotAxis9SetAspectEd(ptr noundef nonnull align 8 dereferenceable(372) %676, double noundef %683)
  br label %.loopexit509

693:                                              ; preds = %680
  %694 = load ptr, ptr %677, align 8, !tbaa !134
  call void @_ZN10ImPlotAxis9SetAspectEd(ptr noundef nonnull align 8 dereferenceable(372) %694, double noundef %681)
  br label %.loopexit509

.loopexit509:                                     ; preds = %.preheader508.2, %687, %689, %692, %693, %.preheader510
  %695 = load i32, ptr %195, align 4, !tbaa !133
  %696 = call noundef zeroext i1 @_ZL9ImHasFlagIi12ImPlotFlags_EbT_T0_(i32 noundef %695, i32 noundef 8)
  br i1 %696, label %699, label %697

697:                                              ; preds = %.loopexit509
  %698 = call noundef zeroext i1 @_ZN6ImPlot11UpdateInputER10ImPlotPlot(ptr noundef nonnull align 8 dereferenceable(2533) %28)
  br label %699

699:                                              ; preds = %697, %.loopexit509
  %700 = getelementptr inbounds i8, ptr %24, i64 1230
  %701 = load i8, ptr %700, align 1, !tbaa !167, !range !124, !noundef !125
  %702 = trunc nuw i8 %701 to i1
  br i1 %702, label %705, label %703

703:                                              ; preds = %699
  %704 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsAutoFittingEv(ptr noundef nonnull align 8 dereferenceable(372) %37)
  br i1 %704, label %705, label %707

705:                                              ; preds = %703, %699
  store i8 1, ptr %39, align 1, !tbaa !128
  %706 = getelementptr inbounds i8, ptr %28, i64 390
  store i8 1, ptr %706, align 2, !tbaa !127
  br label %707

707:                                              ; preds = %703, %705
  %708 = getelementptr inbounds i8, ptr %24, i64 1231
  %709 = load i8, ptr %708, align 1, !tbaa !167, !range !124, !noundef !125
  %710 = trunc nuw i8 %709 to i1
  br i1 %710, label %713, label %711

711:                                              ; preds = %707
  %712 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsAutoFittingEv(ptr noundef nonnull align 8 dereferenceable(372) %65)
  br i1 %712, label %713, label %715

713:                                              ; preds = %711, %707
  store i8 1, ptr %39, align 1, !tbaa !128
  %714 = getelementptr inbounds i8, ptr %28, i64 766
  store i8 1, ptr %714, align 2, !tbaa !127
  br label %715

715:                                              ; preds = %713, %711
  %716 = getelementptr inbounds i8, ptr %24, i64 1232
  %717 = load i8, ptr %716, align 1, !tbaa !167, !range !124, !noundef !125
  %718 = trunc nuw i8 %717 to i1
  br i1 %718, label %721, label %719

719:                                              ; preds = %715
  %720 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsAutoFittingEv(ptr noundef nonnull align 8 dereferenceable(372) %91)
  br i1 %720, label %721, label %723

721:                                              ; preds = %719, %715
  store i8 1, ptr %39, align 1, !tbaa !128
  %722 = getelementptr inbounds i8, ptr %28, i64 1142
  store i8 1, ptr %722, align 2, !tbaa !127
  br label %723

723:                                              ; preds = %721, %719
  %724 = getelementptr inbounds i8, ptr %24, i64 1233
  %725 = load i8, ptr %724, align 1, !tbaa !167, !range !124, !noundef !125
  %726 = trunc nuw i8 %725 to i1
  br i1 %726, label %729, label %727

727:                                              ; preds = %723
  %728 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsAutoFittingEv(ptr noundef nonnull align 8 dereferenceable(372) %117)
  br i1 %728, label %729, label %731

729:                                              ; preds = %727, %723
  store i8 1, ptr %39, align 1, !tbaa !128
  %730 = getelementptr inbounds i8, ptr %28, i64 1518
  store i8 1, ptr %730, align 2, !tbaa !127
  br label %731

731:                                              ; preds = %729, %727
  %732 = getelementptr inbounds i8, ptr %24, i64 1234
  %733 = load i8, ptr %732, align 1, !tbaa !167, !range !124, !noundef !125
  %734 = trunc nuw i8 %733 to i1
  br i1 %734, label %737, label %735

735:                                              ; preds = %731
  %736 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsAutoFittingEv(ptr noundef nonnull align 8 dereferenceable(372) %143)
  br i1 %736, label %737, label %739

737:                                              ; preds = %735, %731
  store i8 1, ptr %39, align 1, !tbaa !128
  %738 = getelementptr inbounds i8, ptr %28, i64 1894
  store i8 1, ptr %738, align 2, !tbaa !127
  br label %739

739:                                              ; preds = %737, %735
  %740 = getelementptr inbounds i8, ptr %24, i64 1235
  %741 = load i8, ptr %740, align 1, !tbaa !167, !range !124, !noundef !125
  %742 = trunc nuw i8 %741 to i1
  br i1 %742, label %745, label %743

743:                                              ; preds = %739
  %744 = call noundef zeroext i1 @_ZNK10ImPlotAxis13IsAutoFittingEv(ptr noundef nonnull align 8 dereferenceable(372) %169)
  br i1 %744, label %745, label %747

745:                                              ; preds = %743, %739
  store i8 1, ptr %39, align 1, !tbaa !128
  %746 = getelementptr inbounds i8, ptr %28, i64 2270
  store i8 1, ptr %746, align 2, !tbaa !127
  br label %747

747:                                              ; preds = %745, %743
  %748 = call noundef float @_ZN5ImGui17GetTextLineHeightEv()
  %749 = load i32, ptr %195, align 4, !tbaa !133
  %750 = call noundef zeroext i1 @_ZL9ImHasFlagIi12ImPlotFlags_EbT_T0_(i32 noundef %749, i32 noundef 128)
  br i1 %750, label %755, label %751

751:                                              ; preds = %747
  %.sroa.0143.0.copyload = load <2 x float>, ptr %274, align 8
  %.sroa.0142.0.copyload = load <2 x float>, ptr %277, align 8
  %752 = call noundef i32 @_ZN6ImPlotL16GetStyleColorU32Ei(i32 noundef 5)
  %753 = getelementptr inbounds i8, ptr %31, i64 14356
  %754 = load float, ptr %753, align 4, !tbaa !168
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.0143.0.copyload, <2 x float> %.sroa.0142.0.copyload, i32 noundef %752, i1 noundef zeroext true, float noundef %754)
  br label %755

755:                                              ; preds = %751, %747
  %756 = call noundef i32 @_ZN6ImPlotL16GetStyleColorU32Ei(i32 noundef 6)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %526, ptr noundef nonnull align 4 dereferenceable(8) %527, i32 noundef %756, float noundef 0.000000e+00, i32 noundef 0)
  %757 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %37)
  br i1 %757, label %.preheader506, label %.loopexit507

.preheader506:                                    ; preds = %755
  %758 = getelementptr inbounds i8, ptr %28, i64 120
  %759 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %758)
  %760 = icmp sgt i32 %759, 0
  br i1 %760, label %.lr.ph, label %.loopexit507

.lr.ph:                                           ; preds = %.preheader506, %.lr.ph
  %.0445520 = phi i32 [ %768, %.lr.ph ], [ 0, %.preheader506 ]
  %761 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %758, i32 noundef %.0445520)
  %762 = load double, ptr %761, align 8, !tbaa !169
  %763 = call noundef float @_ZNK10ImPlotAxis12PlotToPixelsEd(ptr noundef nonnull align 8 dereferenceable(372) %37, double noundef %762)
  %764 = fadd float %763, 5.000000e-01
  %765 = fptosi float %764 to i32
  %766 = sitofp i32 %765 to float
  %767 = getelementptr inbounds i8, ptr %761, i64 8
  store float %766, ptr %767, align 8, !tbaa !171
  %768 = add nuw nsw i32 %.0445520, 1
  %769 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %758)
  %770 = icmp slt i32 %768, %769
  br i1 %770, label %.lr.ph, label %.loopexit507, !llvm.loop !172

.loopexit507:                                     ; preds = %.lr.ph, %.preheader506, %755
  %771 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %65)
  br i1 %771, label %.preheader506.1, label %.loopexit507.1

.preheader506.1:                                  ; preds = %.loopexit507
  %772 = getelementptr inbounds i8, ptr %28, i64 496
  %773 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %772)
  %774 = icmp sgt i32 %773, 0
  br i1 %774, label %.lr.ph.1, label %.loopexit507.1

.lr.ph.1:                                         ; preds = %.preheader506.1, %.lr.ph.1
  %.0445520.1 = phi i32 [ %782, %.lr.ph.1 ], [ 0, %.preheader506.1 ]
  %775 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %772, i32 noundef %.0445520.1)
  %776 = load double, ptr %775, align 8, !tbaa !169
  %777 = call noundef float @_ZNK10ImPlotAxis12PlotToPixelsEd(ptr noundef nonnull align 8 dereferenceable(372) %65, double noundef %776)
  %778 = fadd float %777, 5.000000e-01
  %779 = fptosi float %778 to i32
  %780 = sitofp i32 %779 to float
  %781 = getelementptr inbounds i8, ptr %775, i64 8
  store float %780, ptr %781, align 8, !tbaa !171
  %782 = add nuw nsw i32 %.0445520.1, 1
  %783 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %772)
  %784 = icmp slt i32 %782, %783
  br i1 %784, label %.lr.ph.1, label %.loopexit507.1, !llvm.loop !172

.loopexit507.1:                                   ; preds = %.lr.ph.1, %.preheader506.1, %.loopexit507
  %785 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %91)
  br i1 %785, label %.preheader506.2, label %.loopexit507.2

.preheader506.2:                                  ; preds = %.loopexit507.1
  %786 = getelementptr inbounds i8, ptr %28, i64 872
  %787 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %786)
  %788 = icmp sgt i32 %787, 0
  br i1 %788, label %.lr.ph.2, label %.loopexit507.2

.lr.ph.2:                                         ; preds = %.preheader506.2, %.lr.ph.2
  %.0445520.2 = phi i32 [ %796, %.lr.ph.2 ], [ 0, %.preheader506.2 ]
  %789 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %786, i32 noundef %.0445520.2)
  %790 = load double, ptr %789, align 8, !tbaa !169
  %791 = call noundef float @_ZNK10ImPlotAxis12PlotToPixelsEd(ptr noundef nonnull align 8 dereferenceable(372) %91, double noundef %790)
  %792 = fadd float %791, 5.000000e-01
  %793 = fptosi float %792 to i32
  %794 = sitofp i32 %793 to float
  %795 = getelementptr inbounds i8, ptr %789, i64 8
  store float %794, ptr %795, align 8, !tbaa !171
  %796 = add nuw nsw i32 %.0445520.2, 1
  %797 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %786)
  %798 = icmp slt i32 %796, %797
  br i1 %798, label %.lr.ph.2, label %.loopexit507.2, !llvm.loop !172

.loopexit507.2:                                   ; preds = %.lr.ph.2, %.preheader506.2, %.loopexit507.1
  %799 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %117)
  br i1 %799, label %.preheader506.3, label %.loopexit507.3

.preheader506.3:                                  ; preds = %.loopexit507.2
  %800 = getelementptr inbounds i8, ptr %28, i64 1248
  %801 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %800)
  %802 = icmp sgt i32 %801, 0
  br i1 %802, label %.lr.ph.3, label %.loopexit507.3

.lr.ph.3:                                         ; preds = %.preheader506.3, %.lr.ph.3
  %.0445520.3 = phi i32 [ %810, %.lr.ph.3 ], [ 0, %.preheader506.3 ]
  %803 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %800, i32 noundef %.0445520.3)
  %804 = load double, ptr %803, align 8, !tbaa !169
  %805 = call noundef float @_ZNK10ImPlotAxis12PlotToPixelsEd(ptr noundef nonnull align 8 dereferenceable(372) %117, double noundef %804)
  %806 = fadd float %805, 5.000000e-01
  %807 = fptosi float %806 to i32
  %808 = sitofp i32 %807 to float
  %809 = getelementptr inbounds i8, ptr %803, i64 8
  store float %808, ptr %809, align 8, !tbaa !171
  %810 = add nuw nsw i32 %.0445520.3, 1
  %811 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %800)
  %812 = icmp slt i32 %810, %811
  br i1 %812, label %.lr.ph.3, label %.loopexit507.3, !llvm.loop !172

.loopexit507.3:                                   ; preds = %.lr.ph.3, %.preheader506.3, %.loopexit507.2
  %813 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %143)
  br i1 %813, label %.preheader506.4, label %.loopexit507.4

.preheader506.4:                                  ; preds = %.loopexit507.3
  %814 = getelementptr inbounds i8, ptr %28, i64 1624
  %815 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %814)
  %816 = icmp sgt i32 %815, 0
  br i1 %816, label %.lr.ph.4, label %.loopexit507.4

.lr.ph.4:                                         ; preds = %.preheader506.4, %.lr.ph.4
  %.0445520.4 = phi i32 [ %824, %.lr.ph.4 ], [ 0, %.preheader506.4 ]
  %817 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %814, i32 noundef %.0445520.4)
  %818 = load double, ptr %817, align 8, !tbaa !169
  %819 = call noundef float @_ZNK10ImPlotAxis12PlotToPixelsEd(ptr noundef nonnull align 8 dereferenceable(372) %143, double noundef %818)
  %820 = fadd float %819, 5.000000e-01
  %821 = fptosi float %820 to i32
  %822 = sitofp i32 %821 to float
  %823 = getelementptr inbounds i8, ptr %817, i64 8
  store float %822, ptr %823, align 8, !tbaa !171
  %824 = add nuw nsw i32 %.0445520.4, 1
  %825 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %814)
  %826 = icmp slt i32 %824, %825
  br i1 %826, label %.lr.ph.4, label %.loopexit507.4, !llvm.loop !172

.loopexit507.4:                                   ; preds = %.lr.ph.4, %.preheader506.4, %.loopexit507.3
  %827 = call noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372) %169)
  br i1 %827, label %.preheader506.5, label %.loopexit507.5

.preheader506.5:                                  ; preds = %.loopexit507.4
  %828 = getelementptr inbounds i8, ptr %28, i64 2000
  %829 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %828)
  %830 = icmp sgt i32 %829, 0
  br i1 %830, label %.lr.ph.5, label %.loopexit507.5

.lr.ph.5:                                         ; preds = %.preheader506.5, %.lr.ph.5
  %.0445520.5 = phi i32 [ %838, %.lr.ph.5 ], [ 0, %.preheader506.5 ]
  %831 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %828, i32 noundef %.0445520.5)
  %832 = load double, ptr %831, align 8, !tbaa !169
  %833 = call noundef float @_ZNK10ImPlotAxis12PlotToPixelsEd(ptr noundef nonnull align 8 dereferenceable(372) %169, double noundef %832)
  %834 = fadd float %833, 5.000000e-01
  %835 = fptosi float %834 to i32
  %836 = sitofp i32 %835 to float
  %837 = getelementptr inbounds i8, ptr %831, i64 8
  store float %836, ptr %837, align 8, !tbaa !171
  %838 = add nuw nsw i32 %.0445520.5, 1
  %839 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %828)
  %840 = icmp slt i32 %838, %839
  br i1 %840, label %.lr.ph.5, label %.loopexit507.5, !llvm.loop !172

.loopexit507.5:                                   ; preds = %.lr.ph.5, %.preheader506.5, %.loopexit507.4
  %841 = getelementptr inbounds i8, ptr %24, i64 336
  %842 = getelementptr inbounds i8, ptr %24, i64 344
  %843 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 0)
  %844 = getelementptr inbounds i8, ptr %843, i64 364
  %845 = load i8, ptr %844, align 4, !tbaa !120, !range !124, !noundef !125
  %846 = trunc nuw i8 %845 to i1
  br i1 %846, label %847, label %859

847:                                              ; preds = %.loopexit507.5
  %848 = call noundef zeroext i1 @_ZNK10ImPlotAxis12HasGridLinesEv(ptr noundef nonnull align 8 dereferenceable(372) %843)
  br i1 %848, label %849, label %859

849:                                              ; preds = %847
  %850 = call noundef zeroext i1 @_ZNK10ImPlotAxis12IsForegroundEv(ptr noundef nonnull align 8 dereferenceable(372) %843)
  br i1 %850, label %859, label %851

851:                                              ; preds = %849
  %852 = getelementptr inbounds i8, ptr %843, i64 96
  %853 = getelementptr inbounds i8, ptr %843, i64 332
  %854 = load i32, ptr %853, align 4, !tbaa !174
  %855 = getelementptr inbounds i8, ptr %843, i64 336
  %856 = load i32, ptr %855, align 8, !tbaa !175
  %857 = load float, ptr %841, align 4, !tbaa !176
  %858 = load float, ptr %842, align 4, !tbaa !177
  call void @_ZN6ImPlotL16RenderGridLinesXER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 8 dereferenceable(52) %852, ptr noundef nonnull align 4 dereferenceable(16) %526, i32 noundef %854, i32 noundef %856, float noundef %857, float noundef %858)
  br label %859

859:                                              ; preds = %851, %849, %847, %.loopexit507.5
  %860 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 1)
  %861 = getelementptr inbounds i8, ptr %860, i64 364
  %862 = load i8, ptr %861, align 4, !tbaa !120, !range !124, !noundef !125
  %863 = trunc nuw i8 %862 to i1
  br i1 %863, label %864, label %876

864:                                              ; preds = %859
  %865 = call noundef zeroext i1 @_ZNK10ImPlotAxis12HasGridLinesEv(ptr noundef nonnull align 8 dereferenceable(372) %860)
  br i1 %865, label %866, label %876

866:                                              ; preds = %864
  %867 = call noundef zeroext i1 @_ZNK10ImPlotAxis12IsForegroundEv(ptr noundef nonnull align 8 dereferenceable(372) %860)
  br i1 %867, label %876, label %868

868:                                              ; preds = %866
  %869 = getelementptr inbounds i8, ptr %860, i64 96
  %870 = getelementptr inbounds i8, ptr %860, i64 332
  %871 = load i32, ptr %870, align 4, !tbaa !174
  %872 = getelementptr inbounds i8, ptr %860, i64 336
  %873 = load i32, ptr %872, align 8, !tbaa !175
  %874 = load float, ptr %841, align 4, !tbaa !176
  %875 = load float, ptr %842, align 4, !tbaa !177
  call void @_ZN6ImPlotL16RenderGridLinesXER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 8 dereferenceable(52) %869, ptr noundef nonnull align 4 dereferenceable(16) %526, i32 noundef %871, i32 noundef %873, float noundef %874, float noundef %875)
  br label %876

876:                                              ; preds = %868, %866, %864, %859
  %877 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 2)
  %878 = getelementptr inbounds i8, ptr %877, i64 364
  %879 = load i8, ptr %878, align 4, !tbaa !120, !range !124, !noundef !125
  %880 = trunc nuw i8 %879 to i1
  br i1 %880, label %881, label %.preheader504

881:                                              ; preds = %876
  %882 = call noundef zeroext i1 @_ZNK10ImPlotAxis12HasGridLinesEv(ptr noundef nonnull align 8 dereferenceable(372) %877)
  br i1 %882, label %883, label %.preheader504

883:                                              ; preds = %881
  %884 = call noundef zeroext i1 @_ZNK10ImPlotAxis12IsForegroundEv(ptr noundef nonnull align 8 dereferenceable(372) %877)
  br i1 %884, label %.preheader504, label %885

885:                                              ; preds = %883
  %886 = getelementptr inbounds i8, ptr %877, i64 96
  %887 = getelementptr inbounds i8, ptr %877, i64 332
  %888 = load i32, ptr %887, align 4, !tbaa !174
  %889 = getelementptr inbounds i8, ptr %877, i64 336
  %890 = load i32, ptr %889, align 8, !tbaa !175
  %891 = load float, ptr %841, align 4, !tbaa !176
  %892 = load float, ptr %842, align 4, !tbaa !177
  call void @_ZN6ImPlotL16RenderGridLinesXER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 8 dereferenceable(52) %886, ptr noundef nonnull align 4 dereferenceable(16) %526, i32 noundef %888, i32 noundef %890, float noundef %891, float noundef %892)
  br label %.preheader504

.preheader504:                                    ; preds = %885, %883, %881, %876
  %893 = getelementptr inbounds i8, ptr %24, i64 340
  %894 = getelementptr inbounds i8, ptr %24, i64 348
  %895 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 0)
  %896 = getelementptr inbounds i8, ptr %895, i64 364
  %897 = load i8, ptr %896, align 4, !tbaa !120, !range !124, !noundef !125
  %898 = trunc nuw i8 %897 to i1
  br i1 %898, label %899, label %911

899:                                              ; preds = %.preheader504
  %900 = call noundef zeroext i1 @_ZNK10ImPlotAxis12HasGridLinesEv(ptr noundef nonnull align 8 dereferenceable(372) %895)
  br i1 %900, label %901, label %911

901:                                              ; preds = %899
  %902 = call noundef zeroext i1 @_ZNK10ImPlotAxis12IsForegroundEv(ptr noundef nonnull align 8 dereferenceable(372) %895)
  br i1 %902, label %911, label %903

903:                                              ; preds = %901
  %904 = getelementptr inbounds i8, ptr %895, i64 96
  %905 = getelementptr inbounds i8, ptr %895, i64 332
  %906 = load i32, ptr %905, align 4, !tbaa !174
  %907 = getelementptr inbounds i8, ptr %895, i64 336
  %908 = load i32, ptr %907, align 8, !tbaa !175
  %909 = load float, ptr %893, align 4, !tbaa !178
  %910 = load float, ptr %894, align 4, !tbaa !179
  call void @_ZN6ImPlotL16RenderGridLinesYER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 8 dereferenceable(52) %904, ptr noundef nonnull align 4 dereferenceable(16) %526, i32 noundef %906, i32 noundef %908, float noundef %909, float noundef %910)
  br label %911

911:                                              ; preds = %903, %901, %899, %.preheader504
  %912 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 1)
  %913 = getelementptr inbounds i8, ptr %912, i64 364
  %914 = load i8, ptr %913, align 4, !tbaa !120, !range !124, !noundef !125
  %915 = trunc nuw i8 %914 to i1
  br i1 %915, label %916, label %928

916:                                              ; preds = %911
  %917 = call noundef zeroext i1 @_ZNK10ImPlotAxis12HasGridLinesEv(ptr noundef nonnull align 8 dereferenceable(372) %912)
  br i1 %917, label %918, label %928

918:                                              ; preds = %916
  %919 = call noundef zeroext i1 @_ZNK10ImPlotAxis12IsForegroundEv(ptr noundef nonnull align 8 dereferenceable(372) %912)
  br i1 %919, label %928, label %920

920:                                              ; preds = %918
  %921 = getelementptr inbounds i8, ptr %912, i64 96
  %922 = getelementptr inbounds i8, ptr %912, i64 332
  %923 = load i32, ptr %922, align 4, !tbaa !174
  %924 = getelementptr inbounds i8, ptr %912, i64 336
  %925 = load i32, ptr %924, align 8, !tbaa !175
  %926 = load float, ptr %893, align 4, !tbaa !178
  %927 = load float, ptr %894, align 4, !tbaa !179
  call void @_ZN6ImPlotL16RenderGridLinesYER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 8 dereferenceable(52) %921, ptr noundef nonnull align 4 dereferenceable(16) %526, i32 noundef %923, i32 noundef %925, float noundef %926, float noundef %927)
  br label %928

928:                                              ; preds = %920, %918, %916, %911
  %929 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef 2)
  %930 = getelementptr inbounds i8, ptr %929, i64 364
  %931 = load i8, ptr %930, align 4, !tbaa !120, !range !124, !noundef !125
  %932 = trunc nuw i8 %931 to i1
  br i1 %932, label %933, label %.preheader503

933:                                              ; preds = %928
  %934 = call noundef zeroext i1 @_ZNK10ImPlotAxis12HasGridLinesEv(ptr noundef nonnull align 8 dereferenceable(372) %929)
  br i1 %934, label %935, label %.preheader503

935:                                              ; preds = %933
  %936 = call noundef zeroext i1 @_ZNK10ImPlotAxis12IsForegroundEv(ptr noundef nonnull align 8 dereferenceable(372) %929)
  br i1 %936, label %.preheader503, label %937

937:                                              ; preds = %935
  %938 = getelementptr inbounds i8, ptr %929, i64 96
  %939 = getelementptr inbounds i8, ptr %929, i64 332
  %940 = load i32, ptr %939, align 4, !tbaa !174
  %941 = getelementptr inbounds i8, ptr %929, i64 336
  %942 = load i32, ptr %941, align 8, !tbaa !175
  %943 = load float, ptr %893, align 4, !tbaa !178
  %944 = load float, ptr %894, align 4, !tbaa !179
  call void @_ZN6ImPlotL16RenderGridLinesYER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 8 dereferenceable(52) %938, ptr noundef nonnull align 4 dereferenceable(16) %526, i32 noundef %940, i32 noundef %942, float noundef %943, float noundef %944)
  br label %.preheader503

.preheader503:                                    ; preds = %937, %935, %933, %928
  %945 = getelementptr inbounds i8, ptr %28, i64 2529
  %946 = getelementptr inbounds i8, ptr %24, i64 364
  br label %948

.preheader500:                                    ; preds = %.loopexit502
  %947 = getelementptr inbounds i8, ptr %24, i64 360
  br label %1096

948:                                              ; preds = %.preheader503, %.loopexit502
  %.0449526 = phi i32 [ 0, %.preheader503 ], [ %1090, %.loopexit502 ]
  %949 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5XAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef %.0449526)
  %950 = getelementptr inbounds i8, ptr %949, i64 364
  %951 = load i8, ptr %950, align 4, !tbaa !120, !range !124, !noundef !125
  %952 = trunc nuw i8 %951 to i1
  br i1 %952, label %953, label %.loopexit502

953:                                              ; preds = %948
  %954 = getelementptr inbounds i8, ptr %949, i64 370
  %955 = load i8, ptr %954, align 2, !tbaa !180, !range !124, !noundef !125
  %956 = trunc nuw i8 %955 to i1
  br i1 %956, label %961, label %957

957:                                              ; preds = %953
  %958 = getelementptr inbounds i8, ptr %949, i64 371
  %959 = load i8, ptr %958, align 1, !tbaa !181, !range !124, !noundef !125
  %960 = trunc nuw i8 %959 to i1
  br i1 %960, label %961, label %975

961:                                              ; preds = %957, %953
  %962 = load i8, ptr %945, align 1, !tbaa !182, !range !124, !noundef !125
  %963 = trunc nuw i8 %962 to i1
  br i1 %963, label %975, label %964

964:                                              ; preds = %961
  %965 = getelementptr inbounds i8, ptr %949, i64 4
  %966 = load i32, ptr %965, align 4, !tbaa !183
  %967 = call noundef zeroext i1 @_ZL9ImHasFlagIi16ImPlotAxisFlags_EbT_T0_(i32 noundef %966, i32 noundef 128)
  br i1 %967, label %975, label %968

968:                                              ; preds = %964
  %969 = getelementptr inbounds i8, ptr %949, i64 312
  %970 = getelementptr inbounds i8, ptr %949, i64 320
  %971 = getelementptr inbounds i8, ptr %949, i64 371
  %972 = load i8, ptr %971, align 1, !tbaa !181, !range !124, !noundef !125
  %973 = trunc nuw i8 %972 to i1
  %.in461.v = select i1 %973, i64 356, i64 352
  %.in461 = getelementptr inbounds i8, ptr %949, i64 %.in461.v
  %974 = load i32, ptr %.in461, align 4, !tbaa !184
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %969, ptr noundef nonnull align 4 dereferenceable(8) %970, i32 noundef %974, float noundef 0.000000e+00, i32 noundef 0)
  br label %987

975:                                              ; preds = %964, %961, %957
  %976 = getelementptr inbounds i8, ptr %949, i64 360
  %977 = load i32, ptr %976, align 8, !tbaa !185
  %.not462 = icmp eq i32 %977, 0
  br i1 %.not462, label %981, label %978

978:                                              ; preds = %975
  %979 = getelementptr inbounds i8, ptr %949, i64 312
  %980 = getelementptr inbounds i8, ptr %949, i64 320
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %979, ptr noundef nonnull align 4 dereferenceable(8) %980, i32 noundef %977, float noundef 0.000000e+00, i32 noundef 0)
  store i32 0, ptr %976, align 8, !tbaa !185
  br label %987

981:                                              ; preds = %975
  %982 = getelementptr inbounds i8, ptr %949, i64 348
  %983 = load i32, ptr %982, align 4, !tbaa !186
  %.not463 = icmp eq i32 %983, 0
  br i1 %.not463, label %987, label %984

984:                                              ; preds = %981
  %985 = getelementptr inbounds i8, ptr %949, i64 312
  %986 = getelementptr inbounds i8, ptr %949, i64 320
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %985, ptr noundef nonnull align 4 dereferenceable(8) %986, i32 noundef %983, float noundef 0.000000e+00, i32 noundef 0)
  br label %987

987:                                              ; preds = %978, %984, %981, %968
  %988 = getelementptr inbounds i8, ptr %949, i64 96
  %989 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsOppositeEv(ptr noundef nonnull align 8 dereferenceable(372) %949)
  %990 = call noundef zeroext i1 @_ZNK10ImPlotAxis8HasLabelEv(ptr noundef nonnull align 8 dereferenceable(372) %949)
  br i1 %990, label %991, label %1017

991:                                              ; preds = %987
  %992 = call noundef ptr @_ZNK10ImPlotPlot12GetAxisLabelERK10ImPlotAxis(ptr noundef nonnull align 8 dereferenceable(2533) %28, ptr noundef nonnull align 8 dereferenceable(372) %949)
  %993 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %992, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  %994 = call noundef zeroext i1 @_ZNK10ImPlotAxis13HasTickLabelsEv(ptr noundef nonnull align 8 dereferenceable(372) %949)
  %.pre541 = load float, ptr %946, align 4, !tbaa !154
  %995 = getelementptr inbounds i8, ptr %949, i64 132
  %996 = load float, ptr %995, align 4
  %997 = fadd float %996, %.pre541
  %998 = select i1 %994, float %997, float 0.000000e+00
  %999 = getelementptr inbounds i8, ptr %949, i64 144
  %1000 = load i32, ptr %999, align 8, !tbaa !187
  %1001 = add nsw i32 %1000, -1
  %1002 = sitofp i32 %1001 to float
  %1003 = fadd float %748, %.pre541
  %1004 = call float @llvm.fmuladd.f32(float %1002, float %1003, float %998)
  %1005 = fadd float %.pre541, %1004
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #12
  %1006 = call <2 x float> @_ZNK6ImRect9GetCenterEv(ptr noundef nonnull align 4 dereferenceable(16) %526)
  %.sroa.067.0.vec.extract = extractelement <2 x float> %1006, i64 0
  %.sroa.070.0.vec.extract = extractelement <2 x float> %993, i64 0
  %1007 = fneg float %.sroa.070.0.vec.extract
  %1008 = call float @llvm.fmuladd.f32(float %1007, float 5.000000e-01, float %.sroa.067.0.vec.extract)
  %1009 = getelementptr inbounds i8, ptr %949, i64 304
  %1010 = load float, ptr %1009, align 8, !tbaa !159
  %1011 = fsub float %1010, %1005
  %.sroa.070.4.vec.extract = extractelement <2 x float> %993, i64 1
  %1012 = fsub float %1011, %.sroa.070.4.vec.extract
  %1013 = fadd float %1005, %1010
  %1014 = select i1 %989, float %1012, float %1013
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %20, float noundef %1008, float noundef %1014)
  %1015 = getelementptr inbounds i8, ptr %949, i64 344
  %1016 = load i32, ptr %1015, align 8, !tbaa !188
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %20, i32 noundef %1016, ptr noundef %992, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #12
  br label %1017

1017:                                             ; preds = %991, %987
  %1018 = call noundef zeroext i1 @_ZNK10ImPlotAxis13HasTickLabelsEv(ptr noundef nonnull align 8 dereferenceable(372) %949)
  br i1 %1018, label %.preheader501, label %.loopexit502

.preheader501:                                    ; preds = %1017
  %1019 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %988)
  %1020 = icmp sgt i32 %1019, 0
  br i1 %1020, label %.lr.ph525, label %.loopexit502

.lr.ph525:                                        ; preds = %.preheader501
  %1021 = getelementptr inbounds i8, ptr %949, i64 304
  %1022 = getelementptr inbounds i8, ptr %949, i64 344
  br i1 %989, label %.lr.ph525.split.us, label %.lr.ph525.split

.lr.ph525.split.us:                               ; preds = %.lr.ph525, %1054
  %.0446524.us = phi i32 [ %1055, %1054 ], [ 0, %.lr.ph525 ]
  %1023 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %988, i32 noundef %.0446524.us)
  %1024 = load float, ptr %1021, align 8, !tbaa !159
  %1025 = load float, ptr %946, align 4, !tbaa !154
  %1026 = fneg float %1025
  %1027 = fsub float %1026, %748
  %1028 = getelementptr inbounds i8, ptr %1023, i64 28
  %1029 = load i32, ptr %1028, align 4, !tbaa !189
  %1030 = sitofp i32 %1029 to float
  %1031 = fadd float %748, %1025
  %1032 = fneg float %1030
  %1033 = call float @llvm.fmuladd.f32(float %1032, float %1031, float %1027)
  %1034 = fadd float %1024, %1033
  %1035 = getelementptr inbounds i8, ptr %1023, i64 25
  %1036 = load i8, ptr %1035, align 1, !tbaa !190, !range !124, !noundef !125
  %1037 = trunc nuw i8 %1036 to i1
  br i1 %1037, label %1038, label %1054

1038:                                             ; preds = %.lr.ph525.split.us
  %1039 = getelementptr inbounds i8, ptr %1023, i64 8
  %1040 = load float, ptr %1039, align 8, !tbaa !171
  %1041 = load float, ptr %526, align 8, !tbaa !158
  %1042 = fadd float %1041, -1.000000e+00
  %1043 = fcmp ult float %1040, %1042
  br i1 %1043, label %1054, label %1044

1044:                                             ; preds = %1038
  %1045 = load float, ptr %527, align 8, !tbaa !161
  %1046 = fadd float %1045, 1.000000e+00
  %1047 = fcmp ugt float %1040, %1046
  br i1 %1047, label %1054, label %1048

1048:                                             ; preds = %1044
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #12
  %1049 = getelementptr inbounds i8, ptr %1023, i64 12
  %1050 = load float, ptr %1049, align 4, !tbaa !191
  %1051 = call float @llvm.fmuladd.f32(float %1050, float -5.000000e-01, float %1040)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef %1051, float noundef %1034)
  %1052 = load i32, ptr %1022, align 8, !tbaa !188
  %1053 = call noundef ptr @_ZNK12ImPlotTicker7GetTextEi(ptr noundef nonnull align 8 dereferenceable(52) %988, i32 noundef %.0446524.us)
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %21, i32 noundef %1052, ptr noundef %1053, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  br label %1054

1054:                                             ; preds = %1048, %1044, %1038, %.lr.ph525.split.us
  %1055 = add nuw nsw i32 %.0446524.us, 1
  %1056 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %988)
  %1057 = icmp slt i32 %1055, %1056
  br i1 %1057, label %.lr.ph525.split.us, label %.loopexit502, !llvm.loop !192

.lr.ph525.split:                                  ; preds = %.lr.ph525, %1086
  %.0446524 = phi i32 [ %1087, %1086 ], [ 0, %.lr.ph525 ]
  %1058 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %988, i32 noundef %.0446524)
  %1059 = load float, ptr %1021, align 8, !tbaa !159
  %1060 = load float, ptr %946, align 4, !tbaa !154
  %1061 = getelementptr inbounds i8, ptr %1058, i64 28
  %1062 = load i32, ptr %1061, align 4, !tbaa !189
  %1063 = sitofp i32 %1062 to float
  %1064 = fadd float %748, %1060
  %1065 = call float @llvm.fmuladd.f32(float %1063, float %1064, float %1060)
  %1066 = fadd float %1059, %1065
  %1067 = getelementptr inbounds i8, ptr %1058, i64 25
  %1068 = load i8, ptr %1067, align 1, !tbaa !190, !range !124, !noundef !125
  %1069 = trunc nuw i8 %1068 to i1
  br i1 %1069, label %1070, label %1086

1070:                                             ; preds = %.lr.ph525.split
  %1071 = getelementptr inbounds i8, ptr %1058, i64 8
  %1072 = load float, ptr %1071, align 8, !tbaa !171
  %1073 = load float, ptr %526, align 8, !tbaa !158
  %1074 = fadd float %1073, -1.000000e+00
  %1075 = fcmp ult float %1072, %1074
  br i1 %1075, label %1086, label %1076

1076:                                             ; preds = %1070
  %1077 = load float, ptr %527, align 8, !tbaa !161
  %1078 = fadd float %1077, 1.000000e+00
  %1079 = fcmp ugt float %1072, %1078
  br i1 %1079, label %1086, label %1080

1080:                                             ; preds = %1076
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #12
  %1081 = getelementptr inbounds i8, ptr %1058, i64 12
  %1082 = load float, ptr %1081, align 4, !tbaa !191
  %1083 = call float @llvm.fmuladd.f32(float %1082, float -5.000000e-01, float %1072)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef %1083, float noundef %1066)
  %1084 = load i32, ptr %1022, align 8, !tbaa !188
  %1085 = call noundef ptr @_ZNK12ImPlotTicker7GetTextEi(ptr noundef nonnull align 8 dereferenceable(52) %988, i32 noundef %.0446524)
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %21, i32 noundef %1084, ptr noundef %1085, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  br label %1086

1086:                                             ; preds = %1080, %1076, %1070, %.lr.ph525.split
  %1087 = add nuw nsw i32 %.0446524, 1
  %1088 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %988)
  %1089 = icmp slt i32 %1087, %1088
  br i1 %1089, label %.lr.ph525.split, label %.loopexit502, !llvm.loop !192

.loopexit502:                                     ; preds = %1086, %1054, %.preheader501, %1017, %948
  %1090 = add nuw nsw i32 %.0449526, 1
  %exitcond.not = icmp eq i32 %1090, 3
  br i1 %exitcond.not, label %.preheader500, label %948, !llvm.loop !193

1091:                                             ; preds = %.loopexit
  %1092 = getelementptr inbounds i8, ptr %28, i64 2304
  call void @_ZN12ImPlotLegend5ResetEv(ptr noundef nonnull align 8 dereferenceable(67) %1092)
  %1093 = getelementptr inbounds i8, ptr %24, i64 96
  %1094 = load ptr, ptr %1093, align 8, !tbaa !194
  %1095 = load i32, ptr %1094, align 8, !tbaa !195
  call void @_ZN5ImGui14PushOverrideIDEj(i32 noundef %1095)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #12
  ret void

1096:                                             ; preds = %.preheader500, %.loopexit
  %.0443529 = phi i32 [ 0, %.preheader500 ], [ %1222, %.loopexit ]
  %1097 = call noundef nonnull align 8 dereferenceable(372) ptr @_ZN10ImPlotPlot5YAxisEi(ptr noundef nonnull align 8 dereferenceable(2533) %28, i32 noundef %.0443529)
  %1098 = getelementptr inbounds i8, ptr %1097, i64 364
  %1099 = load i8, ptr %1098, align 4, !tbaa !120, !range !124, !noundef !125
  %1100 = trunc nuw i8 %1099 to i1
  br i1 %1100, label %1101, label %.loopexit

1101:                                             ; preds = %1096
  %1102 = getelementptr inbounds i8, ptr %1097, i64 370
  %1103 = load i8, ptr %1102, align 2, !tbaa !180, !range !124, !noundef !125
  %1104 = trunc nuw i8 %1103 to i1
  br i1 %1104, label %1109, label %1105

1105:                                             ; preds = %1101
  %1106 = getelementptr inbounds i8, ptr %1097, i64 371
  %1107 = load i8, ptr %1106, align 1, !tbaa !181, !range !124, !noundef !125
  %1108 = trunc nuw i8 %1107 to i1
  br i1 %1108, label %1109, label %1123

1109:                                             ; preds = %1105, %1101
  %1110 = load i8, ptr %945, align 1, !tbaa !182, !range !124, !noundef !125
  %1111 = trunc nuw i8 %1110 to i1
  br i1 %1111, label %1123, label %1112

1112:                                             ; preds = %1109
  %1113 = getelementptr inbounds i8, ptr %1097, i64 4
  %1114 = load i32, ptr %1113, align 4, !tbaa !183
  %1115 = call noundef zeroext i1 @_ZL9ImHasFlagIi16ImPlotAxisFlags_EbT_T0_(i32 noundef %1114, i32 noundef 128)
  br i1 %1115, label %1123, label %1116

1116:                                             ; preds = %1112
  %1117 = getelementptr inbounds i8, ptr %1097, i64 312
  %1118 = getelementptr inbounds i8, ptr %1097, i64 320
  %1119 = getelementptr inbounds i8, ptr %1097, i64 371
  %1120 = load i8, ptr %1119, align 1, !tbaa !181, !range !124, !noundef !125
  %1121 = trunc nuw i8 %1120 to i1
  %.in.v = select i1 %1121, i64 356, i64 352
  %.in = getelementptr inbounds i8, ptr %1097, i64 %.in.v
  %1122 = load i32, ptr %.in, align 4, !tbaa !184
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %1117, ptr noundef nonnull align 4 dereferenceable(8) %1118, i32 noundef %1122, float noundef 0.000000e+00, i32 noundef 0)
  br label %1135

1123:                                             ; preds = %1112, %1109, %1105
  %1124 = getelementptr inbounds i8, ptr %1097, i64 360
  %1125 = load i32, ptr %1124, align 8, !tbaa !185
  %.not459 = icmp eq i32 %1125, 0
  br i1 %.not459, label %1129, label %1126

1126:                                             ; preds = %1123
  %1127 = getelementptr inbounds i8, ptr %1097, i64 312
  %1128 = getelementptr inbounds i8, ptr %1097, i64 320
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %1127, ptr noundef nonnull align 4 dereferenceable(8) %1128, i32 noundef %1125, float noundef 0.000000e+00, i32 noundef 0)
  store i32 0, ptr %1124, align 8, !tbaa !185
  br label %1135

1129:                                             ; preds = %1123
  %1130 = getelementptr inbounds i8, ptr %1097, i64 348
  %1131 = load i32, ptr %1130, align 4, !tbaa !186
  %.not460 = icmp eq i32 %1131, 0
  br i1 %.not460, label %1135, label %1132

1132:                                             ; preds = %1129
  %1133 = getelementptr inbounds i8, ptr %1097, i64 312
  %1134 = getelementptr inbounds i8, ptr %1097, i64 320
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %1133, ptr noundef nonnull align 4 dereferenceable(8) %1134, i32 noundef %1131, float noundef 0.000000e+00, i32 noundef 0)
  br label %1135

1135:                                             ; preds = %1126, %1132, %1129, %1116
  %1136 = getelementptr inbounds i8, ptr %1097, i64 96
  %1137 = call noundef zeroext i1 @_ZNK10ImPlotAxis10IsOppositeEv(ptr noundef nonnull align 8 dereferenceable(372) %1097)
  %1138 = call noundef zeroext i1 @_ZNK10ImPlotAxis8HasLabelEv(ptr noundef nonnull align 8 dereferenceable(372) %1097)
  br i1 %1138, label %1139, label %1158

1139:                                             ; preds = %1135
  %1140 = call noundef ptr @_ZNK10ImPlotPlot12GetAxisLabelERK10ImPlotAxis(ptr noundef nonnull align 8 dereferenceable(2533) %28, ptr noundef nonnull align 8 dereferenceable(372) %1097)
  %1141 = call <2 x float> @_ZN6ImPlotL20CalcTextSizeVerticalEPKc(ptr noundef %1140)
  %1142 = call noundef zeroext i1 @_ZNK10ImPlotAxis13HasTickLabelsEv(ptr noundef nonnull align 8 dereferenceable(372) %1097)
  %.pre542 = load float, ptr %947, align 4, !tbaa !196
  %1143 = getelementptr inbounds i8, ptr %1097, i64 128
  %1144 = load float, ptr %1143, align 8
  %1145 = fadd float %1144, %.pre542
  %1146 = select i1 %1142, float %1145, float 0.000000e+00
  %1147 = fadd float %1146, %.pre542
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #12
  %1148 = getelementptr inbounds i8, ptr %1097, i64 304
  %1149 = load float, ptr %1148, align 8, !tbaa !159
  %1150 = fadd float %1147, %1149
  %1151 = fsub float %1149, %1147
  %.sroa.014.0.vec.extract = extractelement <2 x float> %1141, i64 0
  %1152 = fsub float %1151, %.sroa.014.0.vec.extract
  %1153 = select i1 %1137, float %1150, float %1152
  %1154 = call <2 x float> @_ZNK6ImRect9GetCenterEv(ptr noundef nonnull align 4 dereferenceable(16) %526)
  %.sroa.011.4.vec.extract = extractelement <2 x float> %1154, i64 1
  %.sroa.014.4.vec.extract = extractelement <2 x float> %1141, i64 1
  %1155 = call float @llvm.fmuladd.f32(float %.sroa.014.4.vec.extract, float 5.000000e-01, float %.sroa.011.4.vec.extract)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %22, float noundef %1153, float noundef %1155)
  %.sroa.0.0.copyload = load <2 x float>, ptr %22, align 8
  %1156 = getelementptr inbounds i8, ptr %1097, i64 344
  %1157 = load i32, ptr %1156, align 8, !tbaa !188
  call void @_ZN6ImPlot15AddTextVerticalEP10ImDrawList6ImVec2jPKcS4_(ptr noundef nonnull %35, <2 x float> %.sroa.0.0.copyload, i32 noundef %1157, ptr noundef %1140, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #12
  br label %1158

1158:                                             ; preds = %1139, %1135
  %1159 = call noundef zeroext i1 @_ZNK10ImPlotAxis13HasTickLabelsEv(ptr noundef nonnull align 8 dereferenceable(372) %1097)
  br i1 %1159, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %1158
  %1160 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %1136)
  %1161 = icmp sgt i32 %1160, 0
  br i1 %1161, label %.lr.ph528, label %.loopexit

.lr.ph528:                                        ; preds = %.preheader
  %1162 = getelementptr inbounds i8, ptr %1097, i64 304
  %1163 = getelementptr inbounds i8, ptr %1097, i64 344
  br i1 %1137, label %.lr.ph528.split.us, label %.lr.ph528.split

.lr.ph528.split.us:                               ; preds = %.lr.ph528, %1187
  %.0435527.us = phi i32 [ %1188, %1187 ], [ 0, %.lr.ph528 ]
  %1164 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1136, i32 noundef %.0435527.us)
  %1165 = load float, ptr %1162, align 8, !tbaa !159
  %1166 = load float, ptr %947, align 4, !tbaa !196
  %1167 = fadd float %1165, %1166
  %1168 = getelementptr inbounds i8, ptr %1164, i64 25
  %1169 = load i8, ptr %1168, align 1, !tbaa !190, !range !124, !noundef !125
  %1170 = trunc nuw i8 %1169 to i1
  br i1 %1170, label %1171, label %1187

1171:                                             ; preds = %.lr.ph528.split.us
  %1172 = getelementptr inbounds i8, ptr %1164, i64 8
  %1173 = load float, ptr %1172, align 8, !tbaa !171
  %1174 = load float, ptr %582, align 4, !tbaa !164
  %1175 = fadd float %1174, -1.000000e+00
  %1176 = fcmp ult float %1173, %1175
  br i1 %1176, label %1187, label %1177

1177:                                             ; preds = %1171
  %1178 = load float, ptr %583, align 4, !tbaa !165
  %1179 = fadd float %1178, 1.000000e+00
  %1180 = fcmp ugt float %1173, %1179
  br i1 %1180, label %1187, label %1181

1181:                                             ; preds = %1177
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #12
  %1182 = getelementptr inbounds i8, ptr %1164, i64 16
  %1183 = load float, ptr %1182, align 8, !tbaa !197
  %1184 = call float @llvm.fmuladd.f32(float %1183, float -5.000000e-01, float %1173)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef %1167, float noundef %1184)
  %1185 = load i32, ptr %1163, align 8, !tbaa !188
  %1186 = call noundef ptr @_ZNK12ImPlotTicker7GetTextEi(ptr noundef nonnull align 8 dereferenceable(52) %1136, i32 noundef %.0435527.us)
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %23, i32 noundef %1185, ptr noundef %1186, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  br label %1187

1187:                                             ; preds = %1181, %1177, %1171, %.lr.ph528.split.us
  %1188 = add nuw nsw i32 %.0435527.us, 1
  %1189 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %1136)
  %1190 = icmp slt i32 %1188, %1189
  br i1 %1190, label %.lr.ph528.split.us, label %.loopexit, !llvm.loop !198

.lr.ph528.split:                                  ; preds = %.lr.ph528, %1218
  %.0435527 = phi i32 [ %1219, %1218 ], [ 0, %.lr.ph528 ]
  %1191 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK8ImVectorI10ImPlotTickEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1136, i32 noundef %.0435527)
  %1192 = load float, ptr %1162, align 8, !tbaa !159
  %1193 = load float, ptr %947, align 4, !tbaa !196
  %1194 = fneg float %1193
  %1195 = getelementptr inbounds i8, ptr %1191, i64 12
  %1196 = load float, ptr %1195, align 4, !tbaa !191
  %1197 = fsub float %1194, %1196
  %1198 = fadd float %1192, %1197
  %1199 = getelementptr inbounds i8, ptr %1191, i64 25
  %1200 = load i8, ptr %1199, align 1, !tbaa !190, !range !124, !noundef !125
  %1201 = trunc nuw i8 %1200 to i1
  br i1 %1201, label %1202, label %1218

1202:                                             ; preds = %.lr.ph528.split
  %1203 = getelementptr inbounds i8, ptr %1191, i64 8
  %1204 = load float, ptr %1203, align 8, !tbaa !171
  %1205 = load float, ptr %582, align 4, !tbaa !164
  %1206 = fadd float %1205, -1.000000e+00
  %1207 = fcmp ult float %1204, %1206
  br i1 %1207, label %1218, label %1208

1208:                                             ; preds = %1202
  %1209 = load float, ptr %583, align 4, !tbaa !165
  %1210 = fadd float %1209, 1.000000e+00
  %1211 = fcmp ugt float %1204, %1210
  br i1 %1211, label %1218, label %1212

1212:                                             ; preds = %1208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #12
  %1213 = getelementptr inbounds i8, ptr %1191, i64 16
  %1214 = load float, ptr %1213, align 8, !tbaa !197
  %1215 = call float @llvm.fmuladd.f32(float %1214, float -5.000000e-01, float %1204)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef %1198, float noundef %1215)
  %1216 = load i32, ptr %1163, align 8, !tbaa !188
  %1217 = call noundef ptr @_ZNK12ImPlotTicker7GetTextEi(ptr noundef nonnull align 8 dereferenceable(52) %1136, i32 noundef %.0435527)
  call void @_ZN10ImDrawList7AddTextERK6ImVec2jPKcS4_(ptr noundef nonnull align 8 dereferenceable(196) %35, ptr noundef nonnull align 4 dereferenceable(8) %23, i32 noundef %1216, ptr noundef %1217, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  br label %1218

1218:                                             ; preds = %1212, %1208, %1202, %.lr.ph528.split
  %1219 = add nuw nsw i32 %.0435527, 1
  %1220 = call noundef i32 @_ZNK12ImPlotTicker9TickCountEv(ptr noundef nonnull align 8 dereferenceable(52) %1136)
  %1221 = icmp slt i32 %1219, %1220
  br i1 %1221, label %.lr.ph528.split, label %.loopexit, !llvm.loop !198

.loopexit:                                        ; preds = %1218, %1187, %.preheader, %1158, %1096
  %1222 = add nuw nsw i32 %.0443529, 1
  %exitcond540.not = icmp eq i32 %1222, 3
  br i1 %exitcond540.not, label %1091, label %1096, !llvm.loop !199
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis10CanInitFitEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK10ImPlotPlot8GetTitleEv(ptr noundef nonnull align 8 dereferenceable(2533)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis10WillRenderEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL13ImAlmostEqualddi(double noundef, double noundef, i32 noundef) local_unnamed_addr #7

declare void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef float @_ZNK10ImPlotAxis12PlotToPixelsEd(ptr noundef nonnull align 8 dereferenceable(372), double noundef) local_unnamed_addr #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImPlotAxis12IsForegroundEv(ptr noundef nonnull align 8 dereferenceable(372)) local_unnamed_addr #10 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN6ImPlotL16RenderGridLinesXER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 8 dereferenceable(52), ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef, float noundef, float noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN6ImPlotL16RenderGridLinesYER10ImDrawListRK12ImPlotTickerRK6ImRectjjff(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 8 dereferenceable(52), ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef, float noundef, float noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9ImHasFlagIi16ImPlotAxisFlags_EbT_T0_(i32 noundef, i32 noundef) local_unnamed_addr #7

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZN6ImPlotL20CalcTextSizeVerticalEPKc(ptr noundef) local_unnamed_addr #4

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

declare void @_ZN5ImGui14PushOverrideIDEj(i32 noundef) local_unnamed_addr #6

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 80}
!10 = !{!"_ZTS13ImPlotContext", !11, i64 0, !16, i64 40, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !18, i64 120, !24, i64 176, !26, i64 216, !28, i64 256, !29, i64 260, !30, i64 776, !31, i64 792, !32, i64 808, !34, i64 976, !36, i64 992, !38, i64 1048, !38, i64 1064, !34, i64 1080, !13, i64 1096, !13, i64 1100, !39, i64 1104, !40, i64 1336, !41, i64 1464, !28, i64 1512, !20, i64 1520, !6, i64 1536, !42, i64 1544, !6, i64 1584, !6, i64 1592}
!11 = !{!"_ZTS6ImPoolI10ImPlotPlotE", !12, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!12 = !{!"_ZTS8ImVectorI10ImPlotPlotE", !13, i64 0, !13, i64 4, !6, i64 8}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS12ImGuiStorage", !15, i64 0}
!15 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !13, i64 0, !13, i64 4, !6, i64 8}
!16 = !{!"_ZTS6ImPoolI13ImPlotSubplotE", !17, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!17 = !{!"_ZTS8ImVectorI13ImPlotSubplotE", !13, i64 0, !13, i64 4, !6, i64 8}
!18 = !{!"_ZTS12ImPlotTicker", !19, i64 0, !20, i64 16, !22, i64 32, !22, i64 40, !13, i64 48}
!19 = !{!"_ZTS8ImVectorI10ImPlotTickE", !13, i64 0, !13, i64 4, !6, i64 8}
!20 = !{!"_ZTS15ImGuiTextBuffer", !21, i64 0}
!21 = !{!"_ZTS8ImVectorIcE", !13, i64 0, !13, i64 4, !6, i64 8}
!22 = !{!"_ZTS6ImVec2", !23, i64 0, !23, i64 4}
!23 = !{!"float", !7, i64 0}
!24 = !{!"_ZTS26ImPlotAnnotationCollection", !25, i64 0, !20, i64 16, !13, i64 32}
!25 = !{!"_ZTS8ImVectorI16ImPlotAnnotationE", !13, i64 0, !13, i64 4, !6, i64 8}
!26 = !{!"_ZTS19ImPlotTagCollection", !27, i64 0, !20, i64 16, !13, i64 32}
!27 = !{!"_ZTS8ImVectorI9ImPlotTagE", !13, i64 0, !13, i64 4, !6, i64 8}
!28 = !{!"bool", !7, i64 0}
!29 = !{!"_ZTS11ImPlotStyle", !23, i64 0, !13, i64 4, !23, i64 8, !23, i64 12, !23, i64 16, !23, i64 20, !23, i64 24, !23, i64 28, !23, i64 32, !23, i64 36, !23, i64 40, !22, i64 44, !22, i64 52, !22, i64 60, !22, i64 68, !22, i64 76, !22, i64 84, !22, i64 92, !22, i64 100, !22, i64 108, !22, i64 116, !22, i64 124, !22, i64 132, !22, i64 140, !22, i64 148, !22, i64 156, !22, i64 164, !7, i64 172, !13, i64 508, !28, i64 512, !28, i64 513, !28, i64 514}
!30 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !13, i64 0, !13, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !13, i64 0, !13, i64 4, !6, i64 8}
!32 = !{!"_ZTS18ImPlotColormapData", !33, i64 0, !34, i64 16, !34, i64 32, !33, i64 48, !34, i64 64, !34, i64 80, !20, i64 96, !34, i64 112, !35, i64 128, !14, i64 144, !13, i64 160}
!33 = !{!"_ZTS8ImVectorIjE", !13, i64 0, !13, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorIiE", !13, i64 0, !13, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorIbE", !13, i64 0, !13, i64 4, !6, i64 8}
!36 = !{!"_ZTS2tm", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !37, i64 40, !6, i64 48}
!37 = !{!"long", !7, i64 0}
!38 = !{!"_ZTS8ImVectorIdE", !13, i64 0, !13, i64 4, !6, i64 8}
!39 = !{!"_ZTS18ImPlotNextPlotData", !7, i64 0, !7, i64 24, !7, i64 120, !7, i64 126, !7, i64 136, !7, i64 184}
!40 = !{!"_ZTS18ImPlotNextItemData", !7, i64 0, !23, i64 80, !13, i64 84, !23, i64 88, !23, i64 92, !23, i64 96, !23, i64 100, !23, i64 104, !23, i64 108, !23, i64 112, !28, i64 116, !28, i64 117, !28, i64 118, !28, i64 119, !28, i64 120, !28, i64 121, !13, i64 124}
!41 = !{!"_ZTS14ImPlotInputMap", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !23, i64 44}
!42 = !{!"_ZTS6ImPoolI19ImPlotAlignmentDataE", !43, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!43 = !{!"_ZTS8ImVectorI19ImPlotAlignmentDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!44 = !{!45, !6, i64 16080}
!45 = !{!"_ZTS12ImGuiContext", !28, i64 0, !28, i64 1, !46, i64 8, !50, i64 14288, !6, i64 15360, !23, i64 15368, !23, i64 15372, !51, i64 15376, !54, i64 15904, !13, i64 15912, !13, i64 15916, !13, i64 15920, !28, i64 15924, !28, i64 15925, !28, i64 15926, !28, i64 15927, !28, i64 15928, !6, i64 15936, !55, i64 15944, !55, i64 15960, !47, i64 15976, !13, i64 15980, !56, i64 15984, !56, i64 16000, !56, i64 16016, !57, i64 16032, !14, i64 16048, !13, i64 16064, !22, i64 16068, !6, i64 16080, !6, i64 16088, !6, i64 16096, !6, i64 16104, !6, i64 16112, !22, i64 16120, !13, i64 16128, !23, i64 16132, !22, i64 16136, !22, i64 16144, !13, i64 16152, !13, i64 16156, !13, i64 16160, !28, i64 16164, !28, i64 16165, !23, i64 16168, !23, i64 16172, !13, i64 16176, !13, i64 16180, !23, i64 16184, !28, i64 16188, !28, i64 16189, !28, i64 16190, !28, i64 16191, !28, i64 16192, !28, i64 16193, !22, i64 16196, !6, i64 16208, !58, i64 16216, !13, i64 16220, !13, i64 16224, !28, i64 16228, !28, i64 16229, !6, i64 16232, !13, i64 16240, !23, i64 16244, !7, i64 16248, !59, i64 17928, !13, i64 18240, !28, i64 18244, !13, i64 18248, !13, i64 18252, !13, i64 18256, !13, i64 18260, !61, i64 18264, !62, i64 18284, !64, i64 18344, !30, i64 18456, !31, i64 18472, !65, i64 18488, !33, i64 18504, !34, i64 18520, !66, i64 18536, !67, i64 18552, !67, i64 18568, !13, i64 18584, !68, i64 18592, !6, i64 18608, !13, i64 18616, !13, i64 18620, !13, i64 18624, !13, i64 18628, !13, i64 18632, !13, i64 18636, !13, i64 18640, !13, i64 18644, !13, i64 18648, !13, i64 18652, !13, i64 18656, !58, i64 18660, !69, i64 18664, !28, i64 18668, !28, i64 18669, !28, i64 18670, !28, i64 18671, !28, i64 18672, !28, i64 18673, !28, i64 18674, !13, i64 18676, !63, i64 18680, !28, i64 18696, !28, i64 18697, !28, i64 18698, !13, i64 18700, !13, i64 18704, !13, i64 18708, !13, i64 18712, !13, i64 18716, !13, i64 18720, !63, i64 18724, !63, i64 18740, !13, i64 18756, !13, i64 18760, !13, i64 18764, !70, i64 18768, !70, i64 18816, !70, i64 18864, !70, i64 18912, !13, i64 18960, !13, i64 18964, !6, i64 18968, !6, i64 18976, !6, i64 18984, !23, i64 18992, !23, i64 18996, !28, i64 19000, !22, i64 19004, !22, i64 19012, !23, i64 19020, !13, i64 19024, !28, i64 19028, !28, i64 19029, !28, i64 19030, !13, i64 19032, !13, i64 19036, !13, i64 19040, !71, i64 19048, !63, i64 19112, !13, i64 19128, !13, i64 19132, !23, i64 19136, !13, i64 19140, !13, i64 19144, !13, i64 19148, !13, i64 19152, !72, i64 19160, !7, i64 19176, !13, i64 19192, !73, i64 19200, !6, i64 19216, !13, i64 19224, !74, i64 19232, !75, i64 19248, !77, i64 19288, !78, i64 19304, !6, i64 19320, !79, i64 19328, !81, i64 19368, !82, i64 19384, !13, i64 19400, !13, i64 19404, !23, i64 19408, !23, i64 19412, !22, i64 19416, !83, i64 19424, !86, i64 23152, !87, i64 23176, !13, i64 23296, !13, i64 23300, !13, i64 23304, !13, i64 23308, !23, i64 23312, !23, i64 23316, !13, i64 23320, !52, i64 23324, !89, i64 23340, !23, i64 23388, !23, i64 23392, !28, i64 23396, !28, i64 23397, !23, i64 23400, !23, i64 23404, !23, i64 23408, !23, i64 23412, !48, i64 23416, !48, i64 23418, !21, i64 23424, !33, i64 23440, !90, i64 23456, !90, i64 23472, !7, i64 23488, !28, i64 23489, !23, i64 23492, !20, i64 23496, !91, i64 23512, !92, i64 23528, !93, i64 23544, !94, i64 23560, !13, i64 23576, !7, i64 23584, !28, i64 23640, !95, i64 23644, !6, i64 23648, !20, i64 23656, !6, i64 23672, !6, i64 23680, !23, i64 23688, !28, i64 23692, !13, i64 23696, !13, i64 23700, !13, i64 23704, !13, i64 23708, !20, i64 23712, !96, i64 23728, !7, i64 23752, !7, i64 23753, !7, i64 23754, !28, i64 23755, !7, i64 23756, !13, i64 23760, !97, i64 23764, !98, i64 23784, !7, i64 23824, !13, i64 24064, !13, i64 24068, !23, i64 24072, !13, i64 24076, !13, i64 24080, !13, i64 24084, !21, i64 24088}
!46 = !{!"_ZTS7ImGuiIO", !13, i64 0, !13, i64 4, !22, i64 8, !23, i64 16, !23, i64 20, !6, i64 24, !6, i64 32, !23, i64 40, !23, i64 44, !23, i64 48, !23, i64 52, !23, i64 56, !23, i64 60, !23, i64 64, !6, i64 72, !6, i64 80, !23, i64 88, !28, i64 92, !6, i64 96, !22, i64 104, !28, i64 112, !28, i64 113, !28, i64 114, !28, i64 115, !28, i64 116, !28, i64 117, !28, i64 118, !28, i64 119, !23, i64 120, !28, i64 124, !28, i64 125, !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, !6, i64 200, !28, i64 208, !28, i64 209, !28, i64 210, !28, i64 211, !28, i64 212, !28, i64 213, !28, i64 214, !23, i64 216, !13, i64 220, !13, i64 224, !13, i64 228, !13, i64 232, !13, i64 236, !22, i64 240, !7, i64 248, !7, i64 2856, !7, i64 3508, !6, i64 3576, !22, i64 3584, !7, i64 3592, !23, i64 3600, !23, i64 3604, !47, i64 3608, !28, i64 3612, !28, i64 3613, !28, i64 3614, !28, i64 3615, !13, i64 3616, !7, i64 3620, !28, i64 14052, !22, i64 14056, !7, i64 14064, !7, i64 14104, !7, i64 14144, !7, i64 14149, !7, i64 14154, !7, i64 14164, !7, i64 14174, !7, i64 14179, !7, i64 14184, !28, i64 14189, !7, i64 14192, !7, i64 14212, !7, i64 14232, !23, i64 14252, !28, i64 14256, !28, i64 14257, !7, i64 14258, !28, i64 14259, !48, i64 14260, !49, i64 14264}
!47 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!48 = !{!"short", !7, i64 0}
!49 = !{!"_ZTS8ImVectorItE", !13, i64 0, !13, i64 4, !6, i64 8}
!50 = !{!"_ZTS10ImGuiStyle", !23, i64 0, !23, i64 4, !22, i64 8, !23, i64 16, !23, i64 20, !22, i64 24, !22, i64 32, !13, i64 40, !23, i64 44, !23, i64 48, !23, i64 52, !23, i64 56, !22, i64 60, !23, i64 68, !23, i64 72, !22, i64 76, !22, i64 84, !22, i64 92, !22, i64 100, !23, i64 108, !23, i64 112, !23, i64 116, !23, i64 120, !23, i64 124, !23, i64 128, !23, i64 132, !23, i64 136, !23, i64 140, !23, i64 144, !13, i64 148, !22, i64 152, !22, i64 160, !23, i64 168, !22, i64 172, !22, i64 180, !22, i64 188, !22, i64 196, !23, i64 204, !28, i64 208, !28, i64 209, !28, i64 210, !23, i64 212, !23, i64 216, !7, i64 220}
!51 = !{!"_ZTS20ImDrawListSharedData", !22, i64 0, !6, i64 8, !23, i64 16, !23, i64 20, !23, i64 24, !52, i64 28, !13, i64 44, !53, i64 48, !7, i64 64, !23, i64 448, !7, i64 452, !6, i64 520}
!52 = !{!"_ZTS6ImVec4", !23, i64 0, !23, i64 4, !23, i64 8, !23, i64 12}
!53 = !{!"_ZTS8ImVectorI6ImVec2E", !13, i64 0, !13, i64 4, !6, i64 8}
!54 = !{!"double", !7, i64 0}
!55 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !13, i64 0, !13, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !13, i64 0, !13, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!58 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!59 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !60, i64 280, !60, i64 296}
!60 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!61 = !{!"_ZTS17ImGuiNextItemData", !13, i64 0, !23, i64 4, !13, i64 8, !13, i64 12, !28, i64 16}
!62 = !{!"_ZTS17ImGuiLastItemData", !13, i64 0, !13, i64 4, !13, i64 8, !63, i64 12, !63, i64 28, !63, i64 44}
!63 = !{!"_ZTS6ImRect", !22, i64 0, !22, i64 8}
!64 = !{!"_ZTS19ImGuiNextWindowData", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !22, i64 16, !22, i64 24, !22, i64 32, !22, i64 40, !22, i64 48, !28, i64 56, !63, i64 60, !6, i64 80, !6, i64 88, !23, i64 96, !22, i64 100}
!65 = !{!"_ZTS8ImVectorIP6ImFontE", !13, i64 0, !13, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !13, i64 0, !13, i64 4, !6, i64 8}
!69 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!70 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !13, i64 8, !13, i64 12, !63, i64 16, !13, i64 32, !23, i64 36, !23, i64 40, !23, i64 44}
!71 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !7, i64 24, !28, i64 57, !28, i64 58}
!72 = !{!"_ZTS8ImVectorIhE", !13, i64 0, !13, i64 4, !6, i64 8}
!73 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!75 = !{!"_ZTS6ImPoolI10ImGuiTableE", !76, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!76 = !{!"_ZTS8ImVectorI10ImGuiTableE", !13, i64 0, !13, i64 4, !6, i64 8}
!77 = !{!"_ZTS8ImVectorIfE", !13, i64 0, !13, i64 4, !6, i64 8}
!78 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !13, i64 0, !13, i64 4, !6, i64 8}
!79 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !80, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!80 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !13, i64 0, !13, i64 4, !6, i64 8}
!81 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !13, i64 0, !13, i64 4, !6, i64 8}
!82 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !13, i64 0, !13, i64 4, !6, i64 8}
!83 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !49, i64 24, !21, i64 40, !21, i64 56, !28, i64 72, !13, i64 76, !23, i64 80, !84, i64 84, !23, i64 3712, !28, i64 3716, !28, i64 3717, !28, i64 3718, !13, i64 3720}
!84 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !13, i64 0, !13, i64 4, !13, i64 8, !7, i64 12, !13, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !23, i64 28, !85, i64 32}
!85 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !48, i64 3582, !48, i64 3584, !13, i64 3588, !13, i64 3592}
!86 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !13, i64 0, !21, i64 8}
!87 = !{!"_ZTS6ImFont", !77, i64 0, !23, i64 16, !23, i64 20, !49, i64 24, !88, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !48, i64 80, !48, i64 82, !48, i64 84, !48, i64 86, !23, i64 88, !23, i64 92, !28, i64 96, !23, i64 100, !23, i64 104, !23, i64 108, !13, i64 112, !7, i64 116}
!88 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !13, i64 0, !13, i64 4, !6, i64 8}
!89 = !{!"_ZTS21ImGuiComboPreviewData", !63, i64 0, !22, i64 16, !22, i64 24, !22, i64 32, !23, i64 40, !13, i64 44}
!90 = !{!"_ZTS20ImGuiPlatformImeData", !28, i64 0, !22, i64 4, !23, i64 12}
!91 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !13, i64 0, !13, i64 4, !6, i64 8}
!92 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !21, i64 0}
!93 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !21, i64 0}
!94 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !13, i64 0, !13, i64 4, !6, i64 8}
!95 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!96 = !{!"_ZTS14ImGuiTextIndex", !34, i64 0, !13, i64 16}
!97 = !{!"_ZTS18ImGuiMetricsConfig", !28, i64 0, !28, i64 1, !28, i64 2, !28, i64 3, !28, i64 4, !28, i64 5, !28, i64 6, !28, i64 7, !13, i64 8, !13, i64 12}
!98 = !{!"_ZTS14ImGuiStackTool", !13, i64 0, !13, i64 4, !13, i64 8, !99, i64 16, !28, i64 32, !23, i64 36}
!99 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !13, i64 0, !13, i64 4, !6, i64 8}
!100 = !{!101, !6, i64 664}
!101 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !6, i64 24, !22, i64 32, !22, i64 40, !22, i64 48, !22, i64 56, !22, i64 64, !22, i64 72, !22, i64 80, !23, i64 88, !23, i64 92, !23, i64 96, !23, i64 100, !23, i64 104, !23, i64 108, !23, i64 112, !23, i64 116, !13, i64 120, !13, i64 124, !13, i64 128, !22, i64 132, !22, i64 140, !22, i64 148, !22, i64 156, !22, i64 164, !22, i64 172, !28, i64 180, !28, i64 181, !28, i64 182, !28, i64 183, !28, i64 184, !28, i64 185, !28, i64 186, !28, i64 187, !28, i64 188, !28, i64 189, !28, i64 190, !28, i64 191, !28, i64 192, !7, i64 193, !48, i64 194, !48, i64 196, !48, i64 198, !48, i64 200, !48, i64 202, !13, i64 204, !7, i64 208, !7, i64 209, !7, i64 210, !28, i64 211, !13, i64 212, !7, i64 216, !7, i64 217, !7, i64 218, !7, i64 219, !13, i64 220, !13, i64 221, !13, i64 222, !22, i64 224, !22, i64 232, !33, i64 240, !102, i64 256, !63, i64 488, !63, i64 504, !63, i64 520, !63, i64 536, !63, i64 552, !63, i64 568, !63, i64 584, !105, i64 600, !105, i64 604, !13, i64 608, !23, i64 612, !23, i64 616, !14, i64 624, !106, i64 640, !23, i64 656, !13, i64 660, !6, i64 664, !107, i64 672, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !7, i64 928, !7, i64 936, !13, i64 968, !13, i64 972, !13, i64 976, !28, i64 980}
!102 = !{!"_ZTS19ImGuiWindowTempData", !22, i64 0, !22, i64 8, !22, i64 16, !22, i64 24, !22, i64 32, !22, i64 40, !22, i64 48, !23, i64 56, !23, i64 60, !28, i64 64, !28, i64 65, !103, i64 68, !103, i64 72, !103, i64 76, !22, i64 80, !69, i64 88, !48, i64 92, !48, i64 94, !28, i64 96, !28, i64 97, !28, i64 98, !28, i64 99, !22, i64 100, !104, i64 108, !13, i64 136, !13, i64 140, !56, i64 144, !6, i64 160, !6, i64 168, !13, i64 176, !13, i64 180, !13, i64 184, !23, i64 188, !23, i64 192, !77, i64 200, !77, i64 216}
!103 = !{!"_ZTS6ImVec1", !23, i64 0}
!104 = !{!"_ZTS16ImGuiMenuColumns", !13, i64 0, !13, i64 4, !48, i64 8, !48, i64 10, !48, i64 12, !48, i64 14, !48, i64 16, !7, i64 18}
!105 = !{!"_ZTS8ImVec2ih", !48, i64 0, !48, i64 2}
!106 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !13, i64 0, !13, i64 4, !6, i64 8}
!107 = !{!"_ZTS10ImDrawList", !108, i64 0, !49, i64 16, !109, i64 32, !13, i64 48, !13, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !110, i64 88, !111, i64 104, !53, i64 120, !112, i64 136, !113, i64 168, !23, i64 192}
!108 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !13, i64 0, !13, i64 4, !6, i64 8}
!109 = !{!"_ZTS8ImVectorI10ImDrawVertE", !13, i64 0, !13, i64 4, !6, i64 8}
!110 = !{!"_ZTS8ImVectorI6ImVec4E", !13, i64 0, !13, i64 4, !6, i64 8}
!111 = !{!"_ZTS8ImVectorIPvE", !13, i64 0, !13, i64 4, !6, i64 8}
!112 = !{!"_ZTS15ImDrawCmdHeader", !52, i64 0, !6, i64 16, !13, i64 24}
!113 = !{!"_ZTS18ImDrawListSplitter", !13, i64 0, !13, i64 4, !78, i64 8}
!114 = !{!115, !28, i64 2526}
!115 = !{!"_ZTS10ImPlotPlot", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !7, i64 24, !20, i64 2280, !116, i64 2296, !13, i64 2424, !13, i64 2428, !63, i64 2432, !63, i64 2448, !63, i64 2464, !63, i64 2480, !63, i64 2496, !22, i64 2512, !13, i64 2520, !28, i64 2524, !28, i64 2525, !28, i64 2526, !28, i64 2527, !28, i64 2528, !28, i64 2529, !28, i64 2530, !28, i64 2531, !28, i64 2532}
!116 = !{!"_ZTS15ImPlotItemGroup", !13, i64 0, !117, i64 8, !118, i64 80, !13, i64 120}
!117 = !{!"_ZTS12ImPlotLegend", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !34, i64 16, !20, i64 32, !63, i64 48, !28, i64 64, !28, i64 65, !28, i64 66}
!118 = !{!"_ZTS6ImPoolI10ImPlotItemE", !119, i64 0, !14, i64 16, !13, i64 32, !13, i64 36}
!119 = !{!"_ZTS8ImVectorI10ImPlotItemE", !13, i64 0, !13, i64 4, !6, i64 8}
!120 = !{!121, !28, i64 364}
!121 = !{!"_ZTS10ImPlotAxis", !13, i64 0, !13, i64 4, !13, i64 8, !122, i64 16, !13, i64 32, !13, i64 36, !122, i64 40, !6, i64 56, !122, i64 64, !122, i64 80, !18, i64 96, !6, i64 152, !6, i64 160, !7, i64 168, !6, i64 184, !6, i64 192, !6, i64 200, !13, i64 208, !123, i64 216, !123, i64 232, !6, i64 248, !6, i64 256, !6, i64 264, !23, i64 272, !23, i64 276, !54, i64 280, !54, i64 288, !54, i64 296, !23, i64 304, !23, i64 308, !63, i64 312, !13, i64 328, !13, i64 332, !13, i64 336, !13, i64 340, !13, i64 344, !13, i64 348, !13, i64 352, !13, i64 356, !13, i64 360, !28, i64 364, !28, i64 365, !28, i64 366, !28, i64 367, !28, i64 368, !28, i64 369, !28, i64 370, !28, i64 371}
!122 = !{!"_ZTS11ImPlotRange", !54, i64 0, !54, i64 8}
!123 = !{!"_ZTS10ImPlotTime", !37, i64 0, !13, i64 8}
!124 = !{i8 0, i8 2}
!125 = !{}
!126 = !{!115, !28, i64 2525}
!127 = !{!121, !28, i64 366}
!128 = !{!115, !28, i64 2527}
!129 = !{!121, !6, i64 152}
!130 = !{!121, !28, i64 368}
!131 = !{!121, !6, i64 160}
!132 = !{!121, !6, i64 184}
!133 = !{!115, !13, i64 4}
!134 = !{!121, !6, i64 56}
!135 = !{i64 0, i64 4, !136, i64 4, i64 4, !136, i64 8, i64 4, !136, i64 12, i64 4, !136}
!136 = !{!23, !23, i64 0}
!137 = !{!115, !13, i64 2304}
!138 = !{!117, !13, i64 0}
!139 = !{!117, !13, i64 8}
!140 = !{!10, !23, i64 368}
!141 = !{!115, !23, i64 2448}
!142 = !{!10, !23, i64 352}
!143 = !{!115, !23, i64 2480}
!144 = !{!115, !23, i64 2456}
!145 = !{!115, !23, i64 2488}
!146 = !{!10, !23, i64 372}
!147 = !{!115, !23, i64 2452}
!148 = !{!10, !23, i64 356}
!149 = !{!115, !23, i64 2484}
!150 = !{!115, !23, i64 2460}
!151 = !{!115, !23, i64 2492}
!152 = !{!22, !23, i64 0}
!153 = !{!22, !23, i64 4}
!154 = !{!10, !23, i64 364}
!155 = !{!10, !6, i64 1584}
!156 = !{!121, !28, i64 369}
!157 = !{!10, !6, i64 1592}
!158 = !{!115, !23, i64 2464}
!159 = !{!121, !23, i64 304}
!160 = !{!121, !23, i64 308}
!161 = !{!115, !23, i64 2472}
!162 = !{!121, !23, i64 272}
!163 = !{!121, !23, i64 276}
!164 = !{!115, !23, i64 2468}
!165 = !{!115, !23, i64 2476}
!166 = !{!121, !28, i64 367}
!167 = !{!28, !28, i64 0}
!168 = !{!50, !23, i64 68}
!169 = !{!170, !54, i64 0}
!170 = !{!"_ZTS10ImPlotTick", !54, i64 0, !23, i64 8, !22, i64 12, !13, i64 20, !28, i64 24, !28, i64 25, !13, i64 28, !13, i64 32}
!171 = !{!170, !23, i64 8}
!172 = distinct !{!172, !173}
!173 = !{!"llvm.loop.mustprogress"}
!174 = !{!121, !13, i64 332}
!175 = !{!121, !13, i64 336}
!176 = !{!10, !23, i64 336}
!177 = !{!10, !23, i64 344}
!178 = !{!10, !23, i64 340}
!179 = !{!10, !23, i64 348}
!180 = !{!121, !28, i64 370}
!181 = !{!121, !28, i64 371}
!182 = !{!115, !28, i64 2529}
!183 = !{!121, !13, i64 4}
!184 = !{!13, !13, i64 0}
!185 = !{!121, !13, i64 360}
!186 = !{!121, !13, i64 348}
!187 = !{!18, !13, i64 48}
!188 = !{!121, !13, i64 344}
!189 = !{!170, !13, i64 28}
!190 = !{!170, !28, i64 25}
!191 = !{!170, !23, i64 12}
!192 = distinct !{!192, !173}
!193 = distinct !{!193, !173}
!194 = !{!10, !6, i64 96}
!195 = !{!116, !13, i64 0}
!196 = !{!10, !23, i64 360}
!197 = !{!170, !23, i64 16}
!198 = distinct !{!198, !173}
!199 = distinct !{!199, !173}


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