; LLVM IR from hasseily/SuperDuperDisplay :: imgui/imgui_widgets.ll (ZN5ImGui14ButtonBehaviorERK6ImRectjPbS3_i)

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

%struct.ImVec2 = type { float, float }
%struct.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.11, %struct.ImVector.11, i32, i32, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.12, %struct.ImGuiStorage, i32, %struct.ImVec2, i32, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, 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, double, double, double, %struct.ImBitArray, [154 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, i32, [4 x i8], %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, [4 x i8], %struct.ImGuiNextWindowData, i8, i32, %struct.ImVector.14, %struct.ImVector.15, %struct.ImVector.16, %struct.ImVector.17, %struct.ImVector.18, %struct.ImVector.19, %struct.ImVector.20, %struct.ImVector.20, %struct.ImVector.21, i32, %struct.ImVector.22, ptr, i32, i32, %struct.ImVector.17, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i8, i8, i8, i8, i8, i8, i8, i8, %struct.ImGuiNavItemData, 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, i8, i8, i8, i32, i32, i32, %struct.ImGuiPayload, %struct.ImRect, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.23, [16 x i8], i32, %struct.ImVector.24, ptr, i32, i32, %struct.ImVector.25, %struct.ImPool, %struct.ImVector.1, %struct.ImVector.10, ptr, %struct.ImPool.27, %struct.ImVector.29, %struct.ImVector.30, i32, i32, float, float, i32, i32, i32, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImGuiInputTextDeactivatedState, %struct.ImFont, i32, i32, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, %struct.ImRect, i8, float, float, i8, i8, float, float, float, float, i16, i16, i16, %struct.ImVector.31, %struct.ImVector, %struct.ImGuiTypingSelectState, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.33, %struct.ImChunkStream, %struct.ImChunkStream.34, %struct.ImVector.35, i32, [8 x ptr], i8, i32, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i32, i8, i8, i8, i32, i8, i8, i8, i32, float, %struct.ImVec4, %struct.ImGuiMetricsConfig, %struct.ImGuiIDStackTool, %struct.ImGuiDebugAllocInfo, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.31, [64 x i8] }
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, i8, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, %struct.ImVec2, [666 x i32], [666 x i8], [16 x float], ptr, %struct.ImVec2, [5 x i8], float, float, i32, i8, i8, i8, i8, i32, [666 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.5 }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector.5 = 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, 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], float, float, float, i32, i32 }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, %struct.ImVector.9, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.2 }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImBitArray = type { [5 x i32] }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [154 x i16], %struct.ImVector.13, %struct.ImVector.13 }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, i32, i64, float, i8, i8, [2 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, i8, [3 x i8], %struct.ImRect, ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type <{ ptr, i32, i32, %struct.ImRect, i32, [4 x i8], i64, float, float, float, [4 x i8] }>
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.26, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImPool.27 = type { %struct.ImVector.28, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, i32, i32, i32, [4 x i8], %struct.ImVector.5, %struct.ImVector.31, %struct.ImVector.31, 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.31 }
%struct.ImFont = type <{ %struct.ImVector.1, float, float, %struct.ImVector.5, %struct.ImVector.32, 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.32 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiTypingSelectState = type <{ %struct.ImGuiTypingSelectRequest, [64 x i8], i32, i32, float, i8, [3 x i8] }>
%struct.ImGuiTypingSelectRequest = type { i32, i32, ptr, i8, i8, i8 }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.31 }
%struct.ImChunkStream.34 = type { %struct.ImVector.31 }
%struct.ImVector.35 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.31 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.18, i32, [4 x i8] }>
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiIDStackTool = type { i32, i32, i32, %struct.ImVector.36, i8, float }
%struct.ImVector.36 = type { i32, i32, ptr }
%struct.ImGuiDebugAllocInfo = type { i32, i32, i16, [6 x %struct.ImGuiDebugAllocEntry] }
%struct.ImGuiDebugAllocEntry = type { i32, i16, i16 }
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImGuiWindow = type <{ ptr, ptr, i32, i32, i32, [4 x i8], 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, i8, i8, i16, i16, i16, i16, i16, [2 x i8], i32, i8, i8, i8, i8, i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8], %struct.ImVector, %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.3, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], [2 x %struct.ImVec2], 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.0, ptr, ptr, i32, i32, i32, float, float, %struct.ImVector.1, %struct.ImVector.1 }
%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.3 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.4, %struct.ImVector.5, %struct.ImVector.6, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.10 }

@GImGui = external global ptr, align 8

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

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

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

; 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: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef, float noundef) #1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui14ButtonBehaviorERK6ImRectjPbS3_i(ptr noundef nonnull align 4 dereferenceable(16) %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) #4 {
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca float, align 4
  %29 = alloca i8, align 1
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca i32, align 4
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca i8, align 1
  %35 = alloca i8, align 1
  %36 = alloca i8, align 1
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store i32 %4, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %37 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %37, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %38 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %38, ptr %12, align 8, !tbaa !5
  %39 = load i32, ptr %10, align 4, !tbaa !9
  %40 = and i32 %39, 7
  %41 = icmp eq i32 %40, 0
  br i1 %41, label %42, label %45

42:                                               ; preds = %5
  %43 = load i32, ptr %10, align 4, !tbaa !9
  %44 = or i32 %43, 1
  store i32 %44, ptr %10, align 4, !tbaa !9
  br label %45

45:                                               ; preds = %42, %5
  %46 = load i32, ptr %10, align 4, !tbaa !9
  %47 = and i32 %46, 1008
  %48 = icmp eq i32 %47, 0
  br i1 %48, label %49, label %52

49:                                               ; preds = %45
  %50 = load i32, ptr %10, align 4, !tbaa !9
  %51 = or i32 %50, 32
  store i32 %51, ptr %10, align 4, !tbaa !9
  br label %52

52:                                               ; preds = %49, %45
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  %53 = load ptr, ptr %11, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.ImGuiContext, ptr %53, i32 0, i32 82
  %55 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %54, i32 0, i32 0
  %56 = load i32, ptr %55, align 8, !tbaa !11
  %57 = load i32, ptr %7, align 4, !tbaa !9
  %58 = icmp eq i32 %56, %57
  br i1 %58, label %59, label %64

59:                                               ; preds = %52
  %60 = load ptr, ptr %11, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.ImGuiContext, ptr %60, i32 0, i32 82
  %62 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %61, i32 0, i32 1
  %63 = load i32, ptr %62, align 4, !tbaa !85
  br label %68

64:                                               ; preds = %52
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.ImGuiContext, ptr %65, i32 0, i32 78
  %67 = load i32, ptr %66, align 4, !tbaa !86
  br label %68

68:                                               ; preds = %64, %59
  %69 = phi i32 [ %63, %59 ], [ %67, %64 ]
  store i32 %69, ptr %13, align 4, !tbaa !9
  %70 = load i32, ptr %10, align 4, !tbaa !9
  %71 = and i32 %70, 4096
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %73, label %76

73:                                               ; preds = %68
  %74 = load i32, ptr %13, align 4, !tbaa !9
  %75 = or i32 %74, 512
  store i32 %75, ptr %13, align 4, !tbaa !9
  br label %76

76:                                               ; preds = %73, %68
  %77 = load i32, ptr %10, align 4, !tbaa !9
  %78 = and i32 %77, 1024
  %79 = icmp ne i32 %78, 0
  br i1 %79, label %80, label %83

80:                                               ; preds = %76
  %81 = load i32, ptr %13, align 4, !tbaa !9
  %82 = or i32 %81, 2
  store i32 %82, ptr %13, align 4, !tbaa !9
  br label %83

83:                                               ; preds = %80, %76
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %84 = load ptr, ptr %11, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.ImGuiContext, ptr %84, i32 0, i32 31
  %86 = load ptr, ptr %85, align 8, !tbaa !87
  store ptr %86, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #7
  %87 = load i32, ptr %10, align 4, !tbaa !9
  %88 = and i32 %87, 2048
  %89 = icmp ne i32 %88, 0
  br i1 %89, label %90, label %103

90:                                               ; preds = %83
  %91 = load ptr, ptr %11, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.ImGuiContext, ptr %91, i32 0, i32 31
  %93 = load ptr, ptr %92, align 8, !tbaa !87
  %94 = icmp ne ptr %93, null
  br i1 %94, label %95, label %103

95:                                               ; preds = %90
  %96 = load ptr, ptr %11, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.ImGuiContext, ptr %96, i32 0, i32 31
  %98 = load ptr, ptr %97, align 8, !tbaa !87
  %99 = getelementptr inbounds %struct.ImGuiWindow, ptr %98, i32 0, i32 90
  %100 = load ptr, ptr %99, align 8, !tbaa !88
  %101 = load ptr, ptr %12, align 8, !tbaa !5
  %102 = icmp eq ptr %100, %101
  br label %103

103:                                              ; preds = %95, %90, %83
  %104 = phi i1 [ false, %90 ], [ false, %83 ], [ %102, %95 ]
  %105 = zext i1 %104 to i8
  store i8 %105, ptr %15, align 1, !tbaa !102
  %106 = load i8, ptr %15, align 1, !tbaa !102, !range !103, !noundef !104
  %107 = trunc i8 %106 to i1
  br i1 %107, label %108, label %112

108:                                              ; preds = %103
  %109 = load ptr, ptr %12, align 8, !tbaa !5
  %110 = load ptr, ptr %11, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.ImGuiContext, ptr %110, i32 0, i32 31
  store ptr %109, ptr %111, align 8, !tbaa !87
  br label %112

112:                                              ; preds = %108, %103
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  store i8 0, ptr %16, align 1, !tbaa !102
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  %113 = load ptr, ptr %6, align 8, !tbaa !5
  %114 = load i32, ptr %7, align 4, !tbaa !9
  %115 = load i32, ptr %13, align 4, !tbaa !9
  %116 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %113, i32 noundef %114, i32 noundef %115)
  %117 = zext i1 %116 to i8
  store i8 %117, ptr %17, align 1, !tbaa !102
  %118 = load ptr, ptr %11, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.ImGuiContext, ptr %118, i32 0, i32 152
  %120 = load i8, ptr %119, align 8, !tbaa !105, !range !103, !noundef !104
  %121 = trunc i8 %120 to i1
  br i1 %121, label %122, label %157

122:                                              ; preds = %112
  %123 = load i32, ptr %10, align 4, !tbaa !9
  %124 = and i32 %123, 512
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %126, label %157

126:                                              ; preds = %122
  %127 = load ptr, ptr %11, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.ImGuiContext, ptr %127, i32 0, i32 155
  %129 = load i32, ptr %128, align 4, !tbaa !106
  %130 = and i32 %129, 4
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %157, label %132

132:                                              ; preds = %126
  %133 = call noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef 128)
  br i1 %133, label %134, label %156

134:                                              ; preds = %132
  store i8 1, ptr %17, align 1, !tbaa !102
  %135 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN5ImGui12SetHoveredIDEj(i32 noundef %135)
  %136 = load ptr, ptr %11, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.ImGuiContext, ptr %136, i32 0, i32 46
  %138 = load float, ptr %137, align 4, !tbaa !107
  %139 = load ptr, ptr %11, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.ImGuiContext, ptr %139, i32 0, i32 2
  %141 = getelementptr inbounds %struct.ImGuiIO, ptr %140, i32 0, i32 3
  %142 = load float, ptr %141, align 8, !tbaa !108
  %143 = fsub float %138, %142
  %144 = fcmp ole float %143, 0x3FE6666660000000
  br i1 %144, label %145, label %155

145:                                              ; preds = %134
  %146 = load ptr, ptr %11, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.ImGuiContext, ptr %146, i32 0, i32 46
  %148 = load float, ptr %147, align 4, !tbaa !107
  %149 = fcmp oge float %148, 0x3FE6666660000000
  br i1 %149, label %150, label %155

150:                                              ; preds = %145
  store i8 1, ptr %16, align 1, !tbaa !102
  %151 = load i32, ptr %7, align 4, !tbaa !9
  %152 = load ptr, ptr %11, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.ImGuiContext, ptr %152, i32 0, i32 167
  store i32 %151, ptr %153, align 8, !tbaa !109
  %154 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %154, i32 noundef 0)
  br label %155

155:                                              ; preds = %150, %145, %134
  br label %156

156:                                              ; preds = %155, %132
  br label %157

157:                                              ; preds = %156, %126, %122, %112
  %158 = load i8, ptr %15, align 1, !tbaa !102, !range !103, !noundef !104
  %159 = trunc i8 %158 to i1
  br i1 %159, label %160, label %164

160:                                              ; preds = %157
  %161 = load ptr, ptr %14, align 8, !tbaa !5
  %162 = load ptr, ptr %11, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.ImGuiContext, ptr %162, i32 0, i32 31
  store ptr %161, ptr %163, align 8, !tbaa !87
  br label %164

164:                                              ; preds = %160, %157
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %165 = load i32, ptr %10, align 4, !tbaa !9
  %166 = and i32 %165, 2097152
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %164
  br label %171

169:                                              ; preds = %164
  %170 = load i32, ptr %7, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %169, %168
  %172 = phi i32 [ 0, %168 ], [ %170, %169 ]
  store i32 %172, ptr %18, align 4, !tbaa !9
  %173 = load i8, ptr %17, align 1, !tbaa !102, !range !103, !noundef !104
  %174 = trunc i8 %173 to i1
  br i1 %174, label %175, label %381

175:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 -1, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 -1, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %176

176:                                              ; preds = %206, %175
  %177 = load i32, ptr %21, align 4, !tbaa !9
  %178 = icmp slt i32 %177, 3
  br i1 %178, label %180, label %179

179:                                              ; preds = %176
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %209

180:                                              ; preds = %176
  %181 = load i32, ptr %10, align 4, !tbaa !9
  %182 = load i32, ptr %21, align 4, !tbaa !9
  %183 = shl i32 1, %182
  %184 = and i32 %181, %183
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %205

186:                                              ; preds = %180
  %187 = load i32, ptr %21, align 4, !tbaa !9
  %188 = load i32, ptr %18, align 4, !tbaa !9
  %189 = call noundef zeroext i1 @_ZN5ImGui14IsMouseClickedEiji(i32 noundef %187, i32 noundef %188, i32 noundef 0)
  br i1 %189, label %190, label %195

190:                                              ; preds = %186
  %191 = load i32, ptr %19, align 4, !tbaa !9
  %192 = icmp eq i32 %191, -1
  br i1 %192, label %193, label %195

193:                                              ; preds = %190
  %194 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %194, ptr %19, align 4, !tbaa !9
  br label %195

195:                                              ; preds = %193, %190, %186
  %196 = load i32, ptr %21, align 4, !tbaa !9
  %197 = load i32, ptr %18, align 4, !tbaa !9
  %198 = call noundef zeroext i1 @_ZN5ImGui15IsMouseReleasedEij(i32 noundef %196, i32 noundef %197)
  br i1 %198, label %199, label %204

199:                                              ; preds = %195
  %200 = load i32, ptr %20, align 4, !tbaa !9
  %201 = icmp eq i32 %200, -1
  br i1 %201, label %202, label %204

202:                                              ; preds = %199
  %203 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %203, ptr %20, align 4, !tbaa !9
  br label %204

204:                                              ; preds = %202, %199, %195
  br label %205

205:                                              ; preds = %204, %180
  br label %206

206:                                              ; preds = %205
  %207 = load i32, ptr %21, align 4, !tbaa !9
  %208 = add nsw i32 %207, 1
  store i32 %208, ptr %21, align 4, !tbaa !9
  br label %176, !llvm.loop !110

209:                                              ; preds = %179
  %210 = load i32, ptr %10, align 4, !tbaa !9
  %211 = and i32 %210, 65536
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %213, label %231

213:                                              ; preds = %209
  %214 = load ptr, ptr %11, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.ImGuiContext, ptr %214, i32 0, i32 2
  %216 = getelementptr inbounds %struct.ImGuiIO, ptr %215, i32 0, i32 64
  %217 = load i8, ptr %216, align 4, !tbaa !112, !range !103, !noundef !104
  %218 = trunc i8 %217 to i1
  br i1 %218, label %374, label %219

219:                                              ; preds = %213
  %220 = load ptr, ptr %11, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.ImGuiContext, ptr %220, i32 0, i32 2
  %222 = getelementptr inbounds %struct.ImGuiIO, ptr %221, i32 0, i32 65
  %223 = load i8, ptr %222, align 1, !tbaa !113, !range !103, !noundef !104
  %224 = trunc i8 %223 to i1
  br i1 %224, label %374, label %225

225:                                              ; preds = %219
  %226 = load ptr, ptr %11, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.ImGuiContext, ptr %226, i32 0, i32 2
  %228 = getelementptr inbounds %struct.ImGuiIO, ptr %227, i32 0, i32 66
  %229 = load i8, ptr %228, align 2, !tbaa !114, !range !103, !noundef !104
  %230 = trunc i8 %229 to i1
  br i1 %230, label %374, label %231

231:                                              ; preds = %225, %209
  %232 = load i32, ptr %19, align 4, !tbaa !9
  %233 = icmp ne i32 %232, -1
  br i1 %233, label %234, label %305

234:                                              ; preds = %231
  %235 = load ptr, ptr %11, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.ImGuiContext, ptr %235, i32 0, i32 48
  %237 = load i32, ptr %236, align 4, !tbaa !115
  %238 = load i32, ptr %7, align 4, !tbaa !9
  %239 = icmp ne i32 %237, %238
  br i1 %239, label %240, label %305

240:                                              ; preds = %234
  %241 = load i32, ptr %10, align 4, !tbaa !9
  %242 = and i32 %241, 1048576
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %248, label %244

244:                                              ; preds = %240
  %245 = load i32, ptr %19, align 4, !tbaa !9
  %246 = call noundef i32 @_ZN5ImGui16MouseButtonToKeyEi(i32 noundef %245)
  %247 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %246, i32 noundef %247, i32 noundef 0)
  br label %248

248:                                              ; preds = %244, %240
  %249 = load i32, ptr %10, align 4, !tbaa !9
  %250 = and i32 %249, 96
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %266

252:                                              ; preds = %248
  %253 = load i32, ptr %7, align 4, !tbaa !9
  %254 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %253, ptr noundef %254)
  %255 = load i32, ptr %19, align 4, !tbaa !9
  %256 = load ptr, ptr %11, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.ImGuiContext, ptr %256, i32 0, i32 60
  store i32 %255, ptr %257, align 4, !tbaa !116
  %258 = load i32, ptr %10, align 4, !tbaa !9
  %259 = and i32 %258, 262144
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %264, label %261

261:                                              ; preds = %252
  %262 = load i32, ptr %7, align 4, !tbaa !9
  %263 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %262, ptr noundef %263)
  br label %264

264:                                              ; preds = %261, %252
  %265 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %265, i32 noundef 0)
  br label %266

266:                                              ; preds = %264, %248
  %267 = load i32, ptr %10, align 4, !tbaa !9
  %268 = and i32 %267, 16
  %269 = icmp ne i32 %268, 0
  br i1 %269, label %284, label %270

270:                                              ; preds = %266
  %271 = load i32, ptr %10, align 4, !tbaa !9
  %272 = and i32 %271, 256
  %273 = icmp ne i32 %272, 0
  br i1 %273, label %274, label %304

274:                                              ; preds = %270
  %275 = load ptr, ptr %11, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.ImGuiContext, ptr %275, i32 0, i32 2
  %277 = getelementptr inbounds %struct.ImGuiIO, ptr %276, i32 0, i32 76
  %278 = load i32, ptr %19, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds [5 x i16], ptr %277, i64 0, i64 %279
  %281 = load i16, ptr %280, align 2, !tbaa !117
  %282 = zext i16 %281 to i32
  %283 = icmp eq i32 %282, 2
  br i1 %283, label %284, label %304

284:                                              ; preds = %274, %266
  store i8 1, ptr %16, align 1, !tbaa !102
  %285 = load i32, ptr %10, align 4, !tbaa !9
  %286 = and i32 %285, 131072
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %289

288:                                              ; preds = %284
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %292

289:                                              ; preds = %284
  %290 = load i32, ptr %7, align 4, !tbaa !9
  %291 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %290, ptr noundef %291)
  br label %292

292:                                              ; preds = %289, %288
  %293 = load i32, ptr %10, align 4, !tbaa !9
  %294 = and i32 %293, 262144
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %299, label %296

296:                                              ; preds = %292
  %297 = load i32, ptr %7, align 4, !tbaa !9
  %298 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %297, ptr noundef %298)
  br label %299

299:                                              ; preds = %296, %292
  %300 = load i32, ptr %19, align 4, !tbaa !9
  %301 = load ptr, ptr %11, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.ImGuiContext, ptr %301, i32 0, i32 60
  store i32 %300, ptr %302, align 4, !tbaa !116
  %303 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %303, i32 noundef 0)
  br label %304

304:                                              ; preds = %299, %274, %270
  br label %305

305:                                              ; preds = %304, %234, %231
  %306 = load i32, ptr %10, align 4, !tbaa !9
  %307 = and i32 %306, 128
  %308 = icmp ne i32 %307, 0
  br i1 %308, label %309, label %344

309:                                              ; preds = %305
  %310 = load i32, ptr %20, align 4, !tbaa !9
  %311 = icmp ne i32 %310, -1
  br i1 %311, label %312, label %343

312:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #7
  %313 = load i32, ptr %13, align 4, !tbaa !9
  %314 = and i32 %313, 2
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %329

316:                                              ; preds = %312
  %317 = load ptr, ptr %11, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.ImGuiContext, ptr %317, i32 0, i32 2
  %319 = getelementptr inbounds %struct.ImGuiIO, ptr %318, i32 0, i32 83
  %320 = load i32, ptr %20, align 4, !tbaa !9
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds [5 x float], ptr %319, i64 0, i64 %321
  %323 = load float, ptr %322, align 4, !tbaa !118
  %324 = load ptr, ptr %11, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.ImGuiContext, ptr %324, i32 0, i32 2
  %326 = getelementptr inbounds %struct.ImGuiIO, ptr %325, i32 0, i32 25
  %327 = load float, ptr %326, align 8, !tbaa !119
  %328 = fcmp oge float %323, %327
  br label %329

329:                                              ; preds = %316, %312
  %330 = phi i1 [ false, %312 ], [ %328, %316 ]
  %331 = zext i1 %330 to i8
  store i8 %331, ptr %22, align 1, !tbaa !102
  %332 = load i8, ptr %22, align 1, !tbaa !102, !range !103, !noundef !104
  %333 = trunc i8 %332 to i1
  br i1 %333, label %335, label %334

334:                                              ; preds = %329
  store i8 1, ptr %16, align 1, !tbaa !102
  br label %335

335:                                              ; preds = %334, %329
  %336 = load i32, ptr %10, align 4, !tbaa !9
  %337 = and i32 %336, 262144
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %342, label %339

339:                                              ; preds = %335
  %340 = load i32, ptr %7, align 4, !tbaa !9
  %341 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %340, ptr noundef %341)
  br label %342

342:                                              ; preds = %339, %335
  call void @_ZN5ImGui13ClearActiveIDEv()
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  br label %343

343:                                              ; preds = %342, %309
  br label %344

344:                                              ; preds = %343, %305
  %345 = load ptr, ptr %11, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.ImGuiContext, ptr %345, i32 0, i32 48
  %347 = load i32, ptr %346, align 4, !tbaa !115
  %348 = load i32, ptr %7, align 4, !tbaa !9
  %349 = icmp eq i32 %347, %348
  br i1 %349, label %350, label %373

350:                                              ; preds = %344
  %351 = load i32, ptr %13, align 4, !tbaa !9
  %352 = and i32 %351, 2
  %353 = icmp ne i32 %352, 0
  br i1 %353, label %354, label %373

354:                                              ; preds = %350
  %355 = load ptr, ptr %11, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.ImGuiContext, ptr %355, i32 0, i32 2
  %357 = getelementptr inbounds %struct.ImGuiIO, ptr %356, i32 0, i32 82
  %358 = load ptr, ptr %11, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.ImGuiContext, ptr %358, i32 0, i32 60
  %360 = load i32, ptr %359, align 4, !tbaa !116
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds [5 x float], ptr %357, i64 0, i64 %361
  %363 = load float, ptr %362, align 4, !tbaa !118
  %364 = fcmp ogt float %363, 0.000000e+00
  br i1 %364, label %365, label %372

365:                                              ; preds = %354
  %366 = load ptr, ptr %11, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.ImGuiContext, ptr %366, i32 0, i32 60
  %368 = load i32, ptr %367, align 4, !tbaa !116
  %369 = load i32, ptr %18, align 4, !tbaa !9
  %370 = call noundef zeroext i1 @_ZN5ImGui14IsMouseClickedEiji(i32 noundef %368, i32 noundef %369, i32 noundef 1)
  br i1 %370, label %371, label %372

371:                                              ; preds = %365
  store i8 1, ptr %16, align 1, !tbaa !102
  br label %372

372:                                              ; preds = %371, %365, %354
  br label %373

373:                                              ; preds = %372, %350, %344
  br label %374

374:                                              ; preds = %373, %225, %219, %213
  %375 = load i8, ptr %16, align 1, !tbaa !102, !range !103, !noundef !104
  %376 = trunc i8 %375 to i1
  br i1 %376, label %377, label %380

377:                                              ; preds = %374
  %378 = load ptr, ptr %11, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.ImGuiContext, ptr %378, i32 0, i32 116
  store i8 1, ptr %379, align 2, !tbaa !120
  br label %380

380:                                              ; preds = %377, %374
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %381

381:                                              ; preds = %380, %171
  %382 = load ptr, ptr %11, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.ImGuiContext, ptr %382, i32 0, i32 99
  %384 = load i32, ptr %383, align 8, !tbaa !121
  %385 = load i32, ptr %7, align 4, !tbaa !9
  %386 = icmp eq i32 %384, %385
  br i1 %386, label %387, label %403

387:                                              ; preds = %381
  %388 = load ptr, ptr %11, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.ImGuiContext, ptr %388, i32 0, i32 116
  %390 = load i8, ptr %389, align 2, !tbaa !120, !range !103, !noundef !104
  %391 = trunc i8 %390 to i1
  br i1 %391, label %403, label %392

392:                                              ; preds = %387
  %393 = load ptr, ptr %11, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.ImGuiContext, ptr %393, i32 0, i32 117
  %395 = load i8, ptr %394, align 1, !tbaa !122, !range !103, !noundef !104
  %396 = trunc i8 %395 to i1
  br i1 %396, label %397, label %403

397:                                              ; preds = %392
  %398 = load i32, ptr %10, align 4, !tbaa !9
  %399 = and i32 %398, 524288
  %400 = icmp ne i32 %399, 0
  br i1 %400, label %402, label %401

401:                                              ; preds = %397
  store i8 1, ptr %17, align 1, !tbaa !102
  br label %402

402:                                              ; preds = %401, %397
  br label %403

403:                                              ; preds = %402, %392, %387, %381
  %404 = load ptr, ptr %11, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.ImGuiContext, ptr %404, i32 0, i32 103
  %406 = load i32, ptr %405, align 4, !tbaa !123
  %407 = load i32, ptr %7, align 4, !tbaa !9
  %408 = icmp eq i32 %406, %407
  br i1 %408, label %409, label %483

409:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #7
  %410 = load ptr, ptr %11, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.ImGuiContext, ptr %410, i32 0, i32 102
  %412 = load i32, ptr %411, align 8, !tbaa !124
  %413 = load i32, ptr %7, align 4, !tbaa !9
  %414 = icmp eq i32 %412, %413
  %415 = zext i1 %414 to i8
  store i8 %415, ptr %23, align 1, !tbaa !102
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #7
  %416 = load ptr, ptr %11, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.ImGuiContext, ptr %416, i32 0, i32 104
  %418 = load i32, ptr %417, align 8, !tbaa !125
  %419 = load i32, ptr %7, align 4, !tbaa !9
  %420 = icmp eq i32 %418, %419
  %421 = zext i1 %420 to i8
  store i8 %421, ptr %24, align 1, !tbaa !102
  %422 = load i8, ptr %24, align 1, !tbaa !102, !range !103, !noundef !104
  %423 = trunc i8 %422 to i1
  br i1 %423, label %461, label %424

424:                                              ; preds = %409
  %425 = load i32, ptr %13, align 4, !tbaa !9
  %426 = and i32 %425, 2
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %428, label %461

428:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %429 = call noundef ptr @_ZN5ImGui10GetKeyDataE8ImGuiKey(i32 noundef 524)
  store ptr %429, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %430 = call noundef ptr @_ZN5ImGui10GetKeyDataE8ImGuiKey(i32 noundef 525)
  store ptr %430, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %431 = call noundef ptr @_ZN5ImGui10GetKeyDataE8ImGuiKey(i32 noundef 636)
  store ptr %431, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %432 = load ptr, ptr %25, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.ImGuiKeyData, ptr %432, i32 0, i32 1
  %434 = load float, ptr %433, align 4, !tbaa !126
  %435 = load ptr, ptr %26, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.ImGuiKeyData, ptr %435, i32 0, i32 1
  %437 = load float, ptr %436, align 4, !tbaa !126
  %438 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %434, float noundef %437)
  %439 = load ptr, ptr %27, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.ImGuiKeyData, ptr %439, i32 0, i32 1
  %441 = load float, ptr %440, align 4, !tbaa !126
  %442 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %438, float noundef %441)
  store float %442, ptr %28, align 4, !tbaa !118
  %443 = load float, ptr %28, align 4, !tbaa !118
  %444 = load ptr, ptr %11, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.ImGuiContext, ptr %444, i32 0, i32 2
  %446 = getelementptr inbounds %struct.ImGuiIO, ptr %445, i32 0, i32 3
  %447 = load float, ptr %446, align 8, !tbaa !108
  %448 = fsub float %443, %447
  %449 = load float, ptr %28, align 4, !tbaa !118
  %450 = load ptr, ptr %11, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.ImGuiContext, ptr %450, i32 0, i32 2
  %452 = getelementptr inbounds %struct.ImGuiIO, ptr %451, i32 0, i32 25
  %453 = load float, ptr %452, align 8, !tbaa !119
  %454 = load ptr, ptr %11, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.ImGuiContext, ptr %454, i32 0, i32 2
  %456 = getelementptr inbounds %struct.ImGuiIO, ptr %455, i32 0, i32 26
  %457 = load float, ptr %456, align 4, !tbaa !128
  %458 = call noundef i32 @_ZN5ImGui25CalcTypematicRepeatAmountEffff(float noundef %448, float noundef %449, float noundef %453, float noundef %457)
  %459 = icmp sgt i32 %458, 0
  %460 = zext i1 %459 to i8
  store i8 %460, ptr %24, align 1, !tbaa !102
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %461

461:                                              ; preds = %428, %424, %409
  %462 = load i8, ptr %23, align 1, !tbaa !102, !range !103, !noundef !104
  %463 = trunc i8 %462 to i1
  br i1 %463, label %467, label %464

464:                                              ; preds = %461
  %465 = load i8, ptr %24, align 1, !tbaa !102, !range !103, !noundef !104
  %466 = trunc i8 %465 to i1
  br i1 %466, label %467, label %482

467:                                              ; preds = %464, %461
  store i8 1, ptr %16, align 1, !tbaa !102
  %468 = load i32, ptr %7, align 4, !tbaa !9
  %469 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %468, ptr noundef %469)
  %470 = load ptr, ptr %11, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.ImGuiContext, ptr %470, i32 0, i32 111
  %472 = load i32, ptr %471, align 4, !tbaa !129
  %473 = load ptr, ptr %11, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.ImGuiContext, ptr %473, i32 0, i32 59
  store i32 %472, ptr %474, align 8, !tbaa !130
  %475 = load i32, ptr %10, align 4, !tbaa !9
  %476 = and i32 %475, 262144
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %481, label %478

478:                                              ; preds = %467
  %479 = load i32, ptr %7, align 4, !tbaa !9
  %480 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %479, ptr noundef %480)
  br label %481

481:                                              ; preds = %478, %467
  br label %482

482:                                              ; preds = %481, %464
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  br label %483

483:                                              ; preds = %482, %403
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #7
  store i8 0, ptr %29, align 1, !tbaa !102
  %484 = load ptr, ptr %11, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.ImGuiContext, ptr %484, i32 0, i32 48
  %486 = load i32, ptr %485, align 4, !tbaa !115
  %487 = load i32, ptr %7, align 4, !tbaa !9
  %488 = icmp eq i32 %486, %487
  br i1 %488, label %489, label %641

489:                                              ; preds = %483
  %490 = load ptr, ptr %11, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.ImGuiContext, ptr %490, i32 0, i32 59
  %492 = load i32, ptr %491, align 8, !tbaa !130
  %493 = icmp eq i32 %492, 1
  br i1 %493, label %494, label %614

494:                                              ; preds = %489
  %495 = load ptr, ptr %11, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.ImGuiContext, ptr %495, i32 0, i32 51
  %497 = load i8, ptr %496, align 8, !tbaa !131, !range !103, !noundef !104
  %498 = trunc i8 %497 to i1
  br i1 %498, label %499, label %508

499:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %500 = load ptr, ptr %11, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.ImGuiContext, ptr %500, i32 0, i32 2
  %502 = getelementptr inbounds %struct.ImGuiIO, ptr %501, i32 0, i32 59
  %503 = load ptr, ptr %6, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.ImRect, ptr %503, i32 0, i32 0
  %505 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %502, ptr noundef nonnull align 4 dereferenceable(8) %504)
  store <2 x float> %505, ptr %30, align 4
  %506 = load ptr, ptr %11, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.ImGuiContext, ptr %506, i32 0, i32 57
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %507, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !132
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %508

508:                                              ; preds = %499, %494
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  %509 = load ptr, ptr %11, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.ImGuiContext, ptr %509, i32 0, i32 60
  %511 = load i32, ptr %510, align 4, !tbaa !116
  store i32 %511, ptr %31, align 4, !tbaa !9
  %512 = load i32, ptr %31, align 4, !tbaa !9
  %513 = icmp eq i32 %512, -1
  br i1 %513, label %514, label %515

514:                                              ; preds = %508
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %606

515:                                              ; preds = %508
  %516 = load i32, ptr %31, align 4, !tbaa !9
  %517 = load i32, ptr %18, align 4, !tbaa !9
  %518 = call noundef zeroext i1 @_ZN5ImGui11IsMouseDownEij(i32 noundef %516, i32 noundef %517)
  br i1 %518, label %519, label %520

519:                                              ; preds = %515
  store i8 1, ptr %29, align 1, !tbaa !102
  br label %605

520:                                              ; preds = %515
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #7
  %521 = load i8, ptr %17, align 1, !tbaa !102, !range !103, !noundef !104
  %522 = trunc i8 %521 to i1
  br i1 %522, label %523, label %527

523:                                              ; preds = %520
  %524 = load i32, ptr %10, align 4, !tbaa !9
  %525 = and i32 %524, 32
  %526 = icmp ne i32 %525, 0
  br label %527

527:                                              ; preds = %523, %520
  %528 = phi i1 [ false, %520 ], [ %526, %523 ]
  %529 = zext i1 %528 to i8
  store i8 %529, ptr %32, align 1, !tbaa !102
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #7
  %530 = load i32, ptr %10, align 4, !tbaa !9
  %531 = and i32 %530, 64
  %532 = icmp ne i32 %531, 0
  %533 = zext i1 %532 to i8
  store i8 %533, ptr %33, align 1, !tbaa !102
  %534 = load i8, ptr %32, align 1, !tbaa !102, !range !103, !noundef !104
  %535 = trunc i8 %534 to i1
  br i1 %535, label %539, label %536

536:                                              ; preds = %527
  %537 = load i8, ptr %33, align 1, !tbaa !102, !range !103, !noundef !104
  %538 = trunc i8 %537 to i1
  br i1 %538, label %539, label %604

539:                                              ; preds = %536, %527
  %540 = load ptr, ptr %11, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.ImGuiContext, ptr %540, i32 0, i32 152
  %542 = load i8, ptr %541, align 8, !tbaa !105, !range !103, !noundef !104
  %543 = trunc i8 %542 to i1
  br i1 %543, label %604, label %544

544:                                              ; preds = %539
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #7
  %545 = load i32, ptr %10, align 4, !tbaa !9
  %546 = and i32 %545, 256
  %547 = icmp ne i32 %546, 0
  br i1 %547, label %548, label %567

548:                                              ; preds = %544
  %549 = load ptr, ptr %11, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ImGuiContext, ptr %549, i32 0, i32 2
  %551 = getelementptr inbounds %struct.ImGuiIO, ptr %550, i32 0, i32 78
  %552 = load i32, ptr %31, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds [5 x i8], ptr %551, i64 0, i64 %553
  %555 = load i8, ptr %554, align 1, !tbaa !102, !range !103, !noundef !104
  %556 = trunc i8 %555 to i1
  br i1 %556, label %557, label %567

557:                                              ; preds = %548
  %558 = load ptr, ptr %11, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.ImGuiContext, ptr %558, i32 0, i32 2
  %560 = getelementptr inbounds %struct.ImGuiIO, ptr %559, i32 0, i32 77
  %561 = load i32, ptr %31, align 4, !tbaa !9
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds [5 x i16], ptr %560, i64 0, i64 %562
  %564 = load i16, ptr %563, align 2, !tbaa !117
  %565 = zext i16 %564 to i32
  %566 = icmp eq i32 %565, 2
  br label %567

567:                                              ; preds = %557, %548, %544
  %568 = phi i1 [ false, %548 ], [ false, %544 ], [ %566, %557 ]
  %569 = zext i1 %568 to i8
  store i8 %569, ptr %34, align 1, !tbaa !102
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #7
  %570 = load i32, ptr %13, align 4, !tbaa !9
  %571 = and i32 %570, 2
  %572 = icmp ne i32 %571, 0
  br i1 %572, label %573, label %586

573:                                              ; preds = %567
  %574 = load ptr, ptr %11, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.ImGuiContext, ptr %574, i32 0, i32 2
  %576 = getelementptr inbounds %struct.ImGuiIO, ptr %575, i32 0, i32 83
  %577 = load i32, ptr %31, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds [5 x float], ptr %576, i64 0, i64 %578
  %580 = load float, ptr %579, align 4, !tbaa !118
  %581 = load ptr, ptr %11, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.ImGuiContext, ptr %581, i32 0, i32 2
  %583 = getelementptr inbounds %struct.ImGuiIO, ptr %582, i32 0, i32 25
  %584 = load float, ptr %583, align 8, !tbaa !119
  %585 = fcmp oge float %580, %584
  br label %586

586:                                              ; preds = %573, %567
  %587 = phi i1 [ false, %567 ], [ %585, %573 ]
  %588 = zext i1 %587 to i8
  store i8 %588, ptr %35, align 1, !tbaa !102
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #7
  %589 = load i32, ptr %31, align 4, !tbaa !9
  %590 = call noundef i32 @_ZN5ImGui16MouseButtonToKeyEi(i32 noundef %589)
  %591 = load i32, ptr %18, align 4, !tbaa !9
  %592 = call noundef zeroext i1 @_ZN5ImGui12TestKeyOwnerE8ImGuiKeyj(i32 noundef %590, i32 noundef %591)
  %593 = zext i1 %592 to i8
  store i8 %593, ptr %36, align 1, !tbaa !102
  %594 = load i8, ptr %34, align 1, !tbaa !102, !range !103, !noundef !104
  %595 = trunc i8 %594 to i1
  br i1 %595, label %603, label %596

596:                                              ; preds = %586
  %597 = load i8, ptr %35, align 1, !tbaa !102, !range !103, !noundef !104
  %598 = trunc i8 %597 to i1
  br i1 %598, label %603, label %599

599:                                              ; preds = %596
  %600 = load i8, ptr %36, align 1, !tbaa !102, !range !103, !noundef !104
  %601 = trunc i8 %600 to i1
  br i1 %601, label %602, label %603

602:                                              ; preds = %599
  store i8 1, ptr %16, align 1, !tbaa !102
  br label %603

603:                                              ; preds = %602, %599, %596, %586
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  br label %604

604:                                              ; preds = %603, %539, %536
  call void @_ZN5ImGui13ClearActiveIDEv()
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  br label %605

605:                                              ; preds = %604, %519
  br label %606

606:                                              ; preds = %605, %514
  %607 = load i32, ptr %10, align 4, !tbaa !9
  %608 = and i32 %607, 262144
  %609 = icmp ne i32 %608, 0
  br i1 %609, label %613, label %610

610:                                              ; preds = %606
  %611 = load ptr, ptr %11, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.ImGuiContext, ptr %611, i32 0, i32 116
  store i8 1, ptr %612, align 2, !tbaa !120
  br label %613

613:                                              ; preds = %610, %606
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %634

614:                                              ; preds = %489
  %615 = load ptr, ptr %11, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.ImGuiContext, ptr %615, i32 0, i32 59
  %617 = load i32, ptr %616, align 8, !tbaa !130
  %618 = icmp eq i32 %617, 2
  br i1 %618, label %624, label %619

619:                                              ; preds = %614
  %620 = load ptr, ptr %11, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.ImGuiContext, ptr %620, i32 0, i32 59
  %622 = load i32, ptr %621, align 8, !tbaa !130
  %623 = icmp eq i32 %622, 3
  br i1 %623, label %624, label %633

624:                                              ; preds = %619, %614
  %625 = load ptr, ptr %11, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImGuiContext, ptr %625, i32 0, i32 103
  %627 = load i32, ptr %626, align 4, !tbaa !123
  %628 = load i32, ptr %7, align 4, !tbaa !9
  %629 = icmp eq i32 %627, %628
  br i1 %629, label %630, label %631

630:                                              ; preds = %624
  store i8 1, ptr %29, align 1, !tbaa !102
  br label %632

631:                                              ; preds = %624
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %632

632:                                              ; preds = %631, %630
  br label %633

633:                                              ; preds = %632, %619
  br label %634

634:                                              ; preds = %633, %613
  %635 = load i8, ptr %16, align 1, !tbaa !102, !range !103, !noundef !104
  %636 = trunc i8 %635 to i1
  br i1 %636, label %637, label %640

637:                                              ; preds = %634
  %638 = load ptr, ptr %11, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.ImGuiContext, ptr %638, i32 0, i32 54
  store i8 1, ptr %639, align 1, !tbaa !133
  br label %640

640:                                              ; preds = %637, %634
  br label %641

641:                                              ; preds = %640, %483
  %642 = load ptr, ptr %8, align 8, !tbaa !5
  %643 = icmp ne ptr %642, null
  br i1 %643, label %644, label %649

644:                                              ; preds = %641
  %645 = load i8, ptr %17, align 1, !tbaa !102, !range !103, !noundef !104
  %646 = trunc i8 %645 to i1
  %647 = load ptr, ptr %8, align 8, !tbaa !5
  %648 = zext i1 %646 to i8
  store i8 %648, ptr %647, align 1, !tbaa !102
  br label %649

649:                                              ; preds = %644, %641
  %650 = load ptr, ptr %9, align 8, !tbaa !5
  %651 = icmp ne ptr %650, null
  br i1 %651, label %652, label %657

652:                                              ; preds = %649
  %653 = load i8, ptr %29, align 1, !tbaa !102, !range !103, !noundef !104
  %654 = trunc i8 %653 to i1
  %655 = load ptr, ptr %9, align 8, !tbaa !5
  %656 = zext i1 %654 to i8
  store i8 %656, ptr %655, align 1, !tbaa !102
  br label %657

657:                                              ; preds = %652, %649
  %658 = load i8, ptr %16, align 1, !tbaa !102, !range !103, !noundef !104
  %659 = trunc i8 %658 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  ret i1 %659
}

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

declare noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef) #5

declare void @_ZN5ImGui12SetHoveredIDEj(i32 noundef) #5

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef, i32 noundef) #5

declare noundef zeroext i1 @_ZN5ImGui14IsMouseClickedEiji(i32 noundef, i32 noundef, i32 noundef) #5

declare noundef zeroext i1 @_ZN5ImGui15IsMouseReleasedEij(i32 noundef, i32 noundef) #5

declare void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef, i32 noundef, i32 noundef) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN5ImGui16MouseButtonToKeyEi(i32 noundef) #1

declare void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef, ptr noundef) #5

declare void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef, ptr noundef) #5

declare void @_ZN5ImGui13ClearActiveIDEv() #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui10GetKeyDataE8ImGuiKey(i32 noundef) #6

declare noundef i32 @_ZN5ImGui25CalcTypematicRepeatAmountEffff(float noundef, float noundef, float noundef, float noundef) #5

declare noundef zeroext i1 @_ZN5ImGui11IsMouseDownEij(i32 noundef, i32 noundef) #5

declare noundef zeroext i1 @_ZN5ImGui12TestKeyOwnerE8ImGuiKeyj(i32 noundef, i32 noundef) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 18848}
!12 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !14, i64 8, !20, i64 14568, !6, i64 15664, !16, i64 15672, !16, i64 15676, !21, i64 15680, !24, i64 16208, !10, i64 16216, !10, i64 16220, !10, i64 16224, !13, i64 16228, !13, i64 16229, !13, i64 16230, !13, i64 16231, !13, i64 16232, !6, i64 16240, !25, i64 16248, !25, i64 16264, !18, i64 16280, !10, i64 16284, !26, i64 16288, !26, i64 16304, !26, i64 16320, !27, i64 16336, !28, i64 16352, !10, i64 16368, !15, i64 16372, !10, i64 16380, !6, i64 16384, !6, i64 16392, !6, i64 16400, !6, i64 16408, !6, i64 16416, !15, i64 16424, !10, i64 16432, !10, i64 16436, !16, i64 16440, !15, i64 16444, !15, i64 16452, !10, i64 16460, !10, i64 16464, !10, i64 16468, !13, i64 16472, !13, i64 16473, !16, i64 16476, !16, i64 16480, !10, i64 16484, !10, i64 16488, !16, i64 16492, !13, i64 16496, !13, i64 16497, !13, i64 16498, !13, i64 16499, !13, i64 16500, !13, i64 16501, !15, i64 16504, !6, i64 16512, !30, i64 16520, !10, i64 16524, !10, i64 16528, !13, i64 16532, !13, i64 16533, !6, i64 16536, !10, i64 16544, !16, i64 16548, !24, i64 16552, !24, i64 16560, !24, i64 16568, !31, i64 16576, !7, i64 16596, !32, i64 18448, !10, i64 18792, !13, i64 18796, !10, i64 18800, !10, i64 18804, !10, i64 18808, !10, i64 18812, !10, i64 18816, !34, i64 18824, !36, i64 18848, !38, i64 18928, !13, i64 19040, !10, i64 19044, !39, i64 19048, !40, i64 19064, !41, i64 19080, !42, i64 19096, !43, i64 19112, !44, i64 19128, !45, i64 19144, !45, i64 19160, !46, i64 19176, !10, i64 19192, !47, i64 19200, !6, i64 19216, !10, i64 19224, !10, i64 19228, !42, i64 19232, !10, i64 19248, !10, i64 19252, !10, i64 19256, !10, i64 19260, !10, i64 19264, !10, i64 19268, !10, i64 19272, !10, i64 19276, !10, i64 19280, !30, i64 19284, !48, i64 19288, !35, i64 19296, !13, i64 19304, !13, i64 19305, !13, i64 19306, !13, i64 19307, !13, i64 19308, !13, i64 19309, !13, i64 19310, !49, i64 19312, !13, i64 19376, !13, i64 19377, !13, i64 19378, !10, i64 19380, !10, i64 19384, !10, i64 19388, !10, i64 19392, !10, i64 19396, !10, i64 19400, !37, i64 19404, !37, i64 19420, !10, i64 19436, !10, i64 19440, !10, i64 19444, !49, i64 19448, !49, i64 19512, !49, i64 19576, !49, i64 19640, !10, i64 19704, !10, i64 19708, !6, i64 19712, !6, i64 19720, !6, i64 19728, !16, i64 19736, !16, i64 19740, !13, i64 19744, !15, i64 19748, !15, i64 19756, !16, i64 19764, !13, i64 19768, !13, i64 19769, !13, i64 19770, !10, i64 19772, !10, i64 19776, !10, i64 19780, !50, i64 19784, !37, i64 19848, !37, i64 19864, !10, i64 19880, !10, i64 19884, !16, i64 19888, !10, i64 19892, !10, i64 19896, !10, i64 19900, !10, i64 19904, !51, i64 19912, !7, i64 19928, !10, i64 19944, !52, i64 19952, !6, i64 19968, !10, i64 19976, !10, i64 19980, !53, i64 19984, !54, i64 20000, !56, i64 20040, !57, i64 20056, !6, i64 20072, !58, i64 20080, !60, i64 20120, !61, i64 20136, !10, i64 20152, !10, i64 20156, !16, i64 20160, !16, i64 20164, !10, i64 20168, !10, i64 20172, !10, i64 20176, !16, i64 20180, !15, i64 20184, !62, i64 20192, !66, i64 23920, !67, i64 23944, !10, i64 24064, !10, i64 24068, !10, i64 24072, !10, i64 24076, !16, i64 24080, !16, i64 24084, !10, i64 24088, !22, i64 24092, !69, i64 24108, !37, i64 24156, !13, i64 24172, !16, i64 24176, !16, i64 24180, !13, i64 24184, !13, i64 24185, !16, i64 24188, !16, i64 24192, !16, i64 24196, !16, i64 24200, !17, i64 24204, !17, i64 24206, !17, i64 24208, !63, i64 24216, !70, i64 24232, !71, i64 24248, !73, i64 24352, !73, i64 24368, !13, i64 24384, !16, i64 24388, !74, i64 24392, !75, i64 24408, !76, i64 24424, !77, i64 24440, !78, i64 24456, !10, i64 24472, !7, i64 24480, !13, i64 24544, !79, i64 24548, !6, i64 24552, !74, i64 24560, !6, i64 24576, !6, i64 24584, !16, i64 24592, !13, i64 24596, !10, i64 24600, !10, i64 24604, !10, i64 24608, !10, i64 24612, !74, i64 24616, !80, i64 24632, !10, i64 24656, !7, i64 24660, !7, i64 24661, !13, i64 24662, !10, i64 24664, !7, i64 24668, !13, i64 24669, !7, i64 24670, !10, i64 24672, !16, i64 24676, !22, i64 24680, !81, i64 24696, !82, i64 24720, !84, i64 24760, !7, i64 24820, !10, i64 25060, !10, i64 25064, !16, i64 25068, !10, i64 25072, !10, i64 25076, !10, i64 25080, !63, i64 25088, !7, i64 25104}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !16, i64 56, !13, i64 60, !6, i64 64, !15, i64 72, !13, i64 80, !13, i64 81, !13, i64 82, !13, i64 83, !13, i64 84, !13, i64 85, !13, i64 86, !13, i64 87, !16, i64 88, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !13, i64 112, !13, i64 113, !13, i64 114, !13, i64 115, !13, i64 116, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !17, i64 192, !13, i64 194, !13, i64 195, !13, i64 196, !13, i64 197, !13, i64 198, !13, i64 199, !13, i64 200, !16, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !15, i64 224, !7, i64 232, !7, i64 2896, !7, i64 3564, !6, i64 3632, !15, i64 3640, !7, i64 3648, !16, i64 3656, !16, i64 3660, !18, i64 3664, !13, i64 3668, !13, i64 3669, !13, i64 3670, !13, i64 3671, !10, i64 3672, !7, i64 3676, !13, i64 14332, !15, i64 14336, !7, i64 14344, !7, i64 14384, !7, i64 14424, !7, i64 14429, !7, i64 14434, !7, i64 14444, !7, i64 14454, !7, i64 14459, !7, i64 14464, !13, i64 14469, !7, i64 14472, !7, i64 14492, !7, i64 14512, !16, i64 14532, !13, i64 14536, !13, i64 14537, !7, i64 14538, !13, i64 14539, !17, i64 14540, !19, i64 14544}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!20 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !16, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !15, i64 24, !15, i64 32, !10, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !15, i64 60, !16, i64 68, !16, i64 72, !15, i64 76, !15, i64 84, !15, i64 92, !15, i64 100, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !16, i64 144, !16, i64 148, !16, i64 152, !10, i64 156, !15, i64 160, !15, i64 168, !16, i64 176, !15, i64 180, !15, i64 188, !15, i64 196, !15, i64 204, !16, i64 212, !13, i64 216, !13, i64 217, !13, i64 218, !16, i64 220, !16, i64 224, !7, i64 228, !16, i64 1076, !16, i64 1080, !16, i64 1084, !10, i64 1088, !10, i64 1092}
!21 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !22, i64 28, !10, i64 44, !23, i64 48, !7, i64 64, !16, i64 448, !7, i64 452, !6, i64 520}
!22 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!23 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"double", !7, i64 0}
!25 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS12ImGuiStorage", !29, i64 0}
!29 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!31 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!32 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !33, i64 312, !33, i64 328}
!33 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !35, i64 8, !16, i64 16, !13, i64 20, !10, i64 21}
!35 = !{!"long long", !7, i64 0}
!36 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !37, i64 12, !37, i64 28, !37, i64 44, !37, i64 60}
!37 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!38 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !10, i64 56, !13, i64 60, !37, i64 64, !6, i64 80, !6, i64 88, !16, i64 96, !15, i64 100}
!39 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI20ImGuiNavTreeNodeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!48 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!49 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !37, i64 16, !10, i64 32, !35, i64 40, !16, i64 48, !16, i64 52, !16, i64 56}
!50 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !13, i64 57, !13, i64 58}
!51 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS6ImPoolI10ImGuiTableE", !55, i64 0, !28, i64 16, !10, i64 32, !10, i64 36}
!55 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !59, i64 0, !28, i64 16, !10, i64 32, !10, i64 36}
!59 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !19, i64 24, !63, i64 40, !63, i64 56, !13, i64 72, !10, i64 76, !16, i64 80, !64, i64 84, !16, i64 3712, !13, i64 3716, !13, i64 3717, !13, i64 3718, !10, i64 3720}
!63 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !16, i64 28, !65, i64 32}
!65 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !10, i64 3588, !10, i64 3592}
!66 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !63, i64 8}
!67 = !{!"_ZTS6ImFont", !56, i64 0, !16, i64 16, !16, i64 20, !19, i64 24, !68, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !17, i64 80, !17, i64 82, !17, i64 84, !17, i64 86, !16, i64 88, !16, i64 92, !13, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !10, i64 112, !7, i64 116}
!68 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS21ImGuiComboPreviewData", !37, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !10, i64 44}
!70 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS22ImGuiTypingSelectState", !72, i64 0, !7, i64 24, !10, i64 88, !10, i64 92, !16, i64 96, !13, i64 100}
!72 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !6, i64 8, !13, i64 16, !13, i64 17, !7, i64 18}
!73 = !{!"_ZTS20ImGuiPlatformImeData", !13, i64 0, !15, i64 4, !16, i64 12}
!74 = !{!"_ZTS15ImGuiTextBuffer", !63, i64 0}
!75 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !63, i64 0}
!77 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !63, i64 0}
!78 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!79 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!80 = !{!"_ZTS14ImGuiTextIndex", !43, i64 0, !10, i64 16}
!81 = !{!"_ZTS18ImGuiMetricsConfig", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !13, i64 4, !13, i64 5, !13, i64 6, !13, i64 7, !13, i64 8, !10, i64 12, !10, i64 16}
!82 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !83, i64 16, !13, i64 32, !16, i64 36}
!83 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!84 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !17, i64 8, !7, i64 12}
!85 = !{!12, !10, i64 18852}
!86 = !{!12, !10, i64 18812}
!87 = !{!12, !6, i64 16392}
!88 = !{!89, !6, i64 904}
!89 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !15, i64 140, !15, i64 148, !15, i64 156, !15, i64 164, !15, i64 172, !15, i64 180, !13, i64 188, !13, i64 189, !13, i64 190, !13, i64 191, !13, i64 192, !13, i64 193, !13, i64 194, !13, i64 195, !13, i64 196, !13, i64 197, !13, i64 198, !13, i64 199, !13, i64 200, !7, i64 201, !7, i64 202, !17, i64 204, !17, i64 206, !17, i64 208, !17, i64 210, !17, i64 212, !10, i64 216, !7, i64 220, !7, i64 221, !13, i64 222, !10, i64 224, !7, i64 228, !7, i64 229, !7, i64 230, !7, i64 231, !10, i64 232, !10, i64 233, !10, i64 234, !15, i64 236, !15, i64 244, !70, i64 256, !90, i64 272, !37, i64 504, !37, i64 520, !37, i64 536, !37, i64 552, !37, i64 568, !37, i64 584, !37, i64 600, !93, i64 616, !93, i64 620, !10, i64 624, !16, i64 628, !16, i64 632, !28, i64 640, !94, i64 656, !16, i64 672, !10, i64 676, !6, i64 680, !95, i64 688, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !7, i64 952, !7, i64 960, !7, i64 992, !10, i64 1008, !10, i64 1012, !10, i64 1016, !13, i64 1020}
!90 = !{!"_ZTS19ImGuiWindowTempData", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !16, i64 56, !16, i64 60, !13, i64 64, !13, i64 65, !91, i64 68, !91, i64 72, !91, i64 76, !15, i64 80, !48, i64 88, !17, i64 92, !17, i64 94, !13, i64 96, !13, i64 97, !13, i64 98, !13, i64 99, !15, i64 100, !92, i64 108, !10, i64 136, !10, i64 140, !26, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !16, i64 188, !16, i64 192, !56, i64 200, !56, i64 216}
!91 = !{!"_ZTS6ImVec1", !16, i64 0}
!92 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !17, i64 8, !17, i64 10, !17, i64 12, !17, i64 14, !17, i64 16, !7, i64 18}
!93 = !{!"_ZTS8ImVec2ih", !17, i64 0, !17, i64 2}
!94 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!95 = !{!"_ZTS10ImDrawList", !96, i64 0, !19, i64 16, !97, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !98, i64 88, !99, i64 104, !23, i64 120, !100, i64 136, !101, i64 168, !16, i64 192}
!96 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!97 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!98 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!99 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!100 = !{!"_ZTS15ImDrawCmdHeader", !22, i64 0, !6, i64 16, !10, i64 24}
!101 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !57, i64 8}
!102 = !{!13, !13, i64 0}
!103 = !{i8 0, i8 2}
!104 = !{}
!105 = !{!12, !13, i64 19768}
!106 = !{!12, !10, i64 19772}
!107 = !{!12, !16, i64 16476}
!108 = !{!12, !16, i64 24}
!109 = !{!12, !10, i64 19904}
!110 = distinct !{!110, !111}
!111 = !{!"llvm.loop.mustprogress"}
!112 = !{!12, !13, i64 3676}
!113 = !{!12, !13, i64 3677}
!114 = !{!12, !13, i64 3678}
!115 = !{!12, !10, i64 16484}
!116 = !{!12, !10, i64 16524}
!117 = !{!17, !17, i64 0}
!118 = !{!16, !16, i64 0}
!119 = !{!12, !16, i64 112}
!120 = !{!12, !13, i64 19306}
!121 = !{!12, !10, i64 19224}
!122 = !{!12, !13, i64 19307}
!123 = !{!12, !10, i64 19252}
!124 = !{!12, !10, i64 19248}
!125 = !{!12, !10, i64 19256}
!126 = !{!127, !16, i64 4}
!127 = !{!"_ZTS12ImGuiKeyData", !13, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!128 = !{!12, !16, i64 116}
!129 = !{!12, !30, i64 19284}
!130 = !{!12, !30, i64 16520}
!131 = !{!12, !13, i64 16496}
!132 = !{i64 0, i64 4, !118, i64 4, i64 4, !118}
!133 = !{!12, !13, i64 16499}


; 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"

@GImGui = external local_unnamed_addr global ptr, align 8

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui14ButtonBehaviorERK6ImRectjPbS3_i(ptr noundef nonnull align 4 dereferenceable(16) %0, i32 noundef %1, ptr noundef writeonly %2, ptr noundef writeonly %3, i32 noundef %4) local_unnamed_addr #2 {
  %6 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %7 = tail call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %8 = and i32 %4, 7
  %9 = icmp eq i32 %8, 0
  %10 = zext i1 %9 to i32
  %spec.select = or disjoint i32 %10, %4
  %11 = and i32 %4, 1008
  %12 = icmp eq i32 %11, 0
  %13 = or disjoint i32 %spec.select, 32
  %.1 = select i1 %12, i32 %13, i32 %spec.select
  %14 = getelementptr inbounds i8, ptr %6, i64 18848
  %15 = load i32, ptr %14, align 8, !tbaa !9
  %16 = icmp eq i32 %15, %1
  %.in.v = select i1 %16, i64 18852, i64 18812
  %.in = getelementptr inbounds i8, ptr %6, i64 %.in.v
  %17 = load i32, ptr %.in, align 4, !tbaa !84
  %18 = lshr i32 %.1, 3
  %19 = and i32 %18, 512
  %20 = lshr i32 %.1, 9
  %21 = and i32 %20, 2
  %.0182 = or disjoint i32 %21, %19
  %.1183 = or i32 %.0182, %17
  %22 = getelementptr inbounds i8, ptr %6, i64 16392
  %23 = load ptr, ptr %22, align 8, !tbaa !85
  %24 = and i32 %.1, 2048
  %.not207 = icmp eq i32 %24, 0
  %.not208 = icmp eq ptr %23, null
  %or.cond235 = select i1 %.not207, i1 true, i1 %.not208
  br i1 %or.cond235, label %.thread, label %25

25:                                               ; preds = %5
  %26 = getelementptr inbounds i8, ptr %23, i64 904
  %27 = load ptr, ptr %26, align 8, !tbaa !86
  %28 = icmp eq ptr %27, %7
  br i1 %28, label %29, label %.thread

29:                                               ; preds = %25
  store ptr %7, ptr %22, align 8, !tbaa !85
  br label %.thread

.thread:                                          ; preds = %5, %29, %25
  %30 = phi i1 [ true, %29 ], [ false, %25 ], [ false, %5 ]
  %31 = tail call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %0, i32 noundef %1, i32 noundef %.1183)
  %32 = getelementptr inbounds i8, ptr %6, i64 19768
  %33 = load i8, ptr %32, align 8, !tbaa !100, !range !101, !noundef !102
  %34 = trunc nuw i8 %33 to i1
  %35 = and i32 %.1, 512
  %.not209 = icmp ne i32 %35, 0
  %or.cond237.not = and i1 %.not209, %34
  br i1 %or.cond237.not, label %36, label %52

36:                                               ; preds = %.thread
  %37 = getelementptr inbounds i8, ptr %6, i64 19772
  %38 = load i32, ptr %37, align 4, !tbaa !103
  %39 = and i32 %38, 4
  %.not210 = icmp eq i32 %39, 0
  br i1 %.not210, label %40, label %52

40:                                               ; preds = %36
  %41 = tail call noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef 128)
  br i1 %41, label %42, label %52

42:                                               ; preds = %40
  tail call void @_ZN5ImGui12SetHoveredIDEj(i32 noundef %1)
  %43 = getelementptr inbounds i8, ptr %6, i64 16476
  %44 = load float, ptr %43, align 4, !tbaa !104
  %45 = getelementptr inbounds i8, ptr %6, i64 24
  %46 = load float, ptr %45, align 8, !tbaa !105
  %47 = fsub float %44, %46
  %48 = fcmp ugt float %47, 0x3FE6666660000000
  %49 = fcmp ult float %44, 0x3FE6666660000000
  %or.cond238 = or i1 %49, %48
  br i1 %or.cond238, label %52, label %50

50:                                               ; preds = %42
  %51 = getelementptr inbounds i8, ptr %6, i64 19904
  store i32 %1, ptr %51, align 8, !tbaa !106
  tail call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %7, i32 noundef 0)
  br label %52

52:                                               ; preds = %40, %50, %42, %36, %.thread
  %.0186.shrunk = phi i1 [ %31, %36 ], [ true, %50 ], [ true, %42 ], [ %31, %40 ], [ %31, %.thread ]
  %.0184 = phi i8 [ 0, %36 ], [ 1, %50 ], [ 0, %42 ], [ 0, %40 ], [ 0, %.thread ]
  br i1 %30, label %53, label %54

53:                                               ; preds = %52
  store ptr %23, ptr %22, align 8, !tbaa !85
  br label %54

54:                                               ; preds = %53, %52
  %55 = and i32 %.1, 2097152
  %.not211 = icmp eq i32 %55, 0
  %56 = select i1 %.not211, i32 %1, i32 0
  br i1 %.0186.shrunk, label %.preheader.preheader, label %156

.preheader.preheader:                             ; preds = %54
  %57 = and i32 %.1, 1
  %.not234 = icmp eq i32 %57, 0
  br i1 %.not234, label %.preheader.1, label %58

58:                                               ; preds = %.preheader.preheader
  %59 = tail call noundef zeroext i1 @_ZN5ImGui14IsMouseClickedEiji(i32 noundef 0, i32 noundef %56, i32 noundef 0)
  %not. = xor i1 %59, true
  %spec.select239 = sext i1 %not. to i32
  %60 = tail call noundef zeroext i1 @_ZN5ImGui15IsMouseReleasedEij(i32 noundef 0, i32 noundef %56)
  %not.258 = xor i1 %60, true
  %spec.select249 = sext i1 %not.258 to i32
  br label %.preheader.1

.preheader.1:                                     ; preds = %58, %.preheader.preheader
  %.1192 = phi i32 [ -1, %.preheader.preheader ], [ %spec.select249, %58 ]
  %.2190 = phi i32 [ -1, %.preheader.preheader ], [ %spec.select239, %58 ]
  %61 = and i32 %.1, 2
  %.not234.1 = icmp eq i32 %61, 0
  br i1 %.not234.1, label %.preheader.2, label %62

62:                                               ; preds = %.preheader.1
  %63 = tail call noundef zeroext i1 @_ZN5ImGui14IsMouseClickedEiji(i32 noundef 1, i32 noundef %56, i32 noundef 0)
  %64 = icmp eq i32 %.2190, -1
  %or.cond.1 = and i1 %63, %64
  %spec.select239.1 = select i1 %or.cond.1, i32 1, i32 %.2190
  %65 = tail call noundef zeroext i1 @_ZN5ImGui15IsMouseReleasedEij(i32 noundef 1, i32 noundef %56)
  %66 = icmp eq i32 %.1192, -1
  %or.cond3.1 = and i1 %65, %66
  %spec.select249.1 = select i1 %or.cond3.1, i32 1, i32 %.1192
  br label %.preheader.2

.preheader.2:                                     ; preds = %62, %.preheader.1
  %.1192.1 = phi i32 [ %.1192, %.preheader.1 ], [ %spec.select249.1, %62 ]
  %.2190.1 = phi i32 [ %.2190, %.preheader.1 ], [ %spec.select239.1, %62 ]
  %67 = and i32 %.1, 4
  %.not234.2 = icmp eq i32 %67, 0
  br i1 %.not234.2, label %73, label %68

68:                                               ; preds = %.preheader.2
  %69 = tail call noundef zeroext i1 @_ZN5ImGui14IsMouseClickedEiji(i32 noundef 2, i32 noundef %56, i32 noundef 0)
  %70 = icmp eq i32 %.2190.1, -1
  %or.cond.2 = select i1 %69, i1 %70, i1 false
  %spec.select239.2 = select i1 %or.cond.2, i32 2, i32 %.2190.1
  %71 = tail call noundef zeroext i1 @_ZN5ImGui15IsMouseReleasedEij(i32 noundef 2, i32 noundef %56)
  %72 = icmp eq i32 %.1192.1, -1
  %or.cond3.2 = select i1 %71, i1 %72, i1 false
  %spec.select249.2 = select i1 %or.cond3.2, i32 2, i32 %.1192.1
  br label %73

73:                                               ; preds = %68, %.preheader.2
  %.1192.2 = phi i32 [ %.1192.1, %.preheader.2 ], [ %spec.select249.2, %68 ]
  %.2190.2 = phi i32 [ %.2190.1, %.preheader.2 ], [ %spec.select239.2, %68 ]
  %74 = and i32 %.1, 65536
  %.not212 = icmp eq i32 %74, 0
  br i1 %.not212, label %87, label %75

75:                                               ; preds = %73
  %76 = getelementptr inbounds i8, ptr %6, i64 3676
  %77 = load i8, ptr %76, align 4, !tbaa !107, !range !101, !noundef !102
  %78 = trunc nuw i8 %77 to i1
  br i1 %78, label %152, label %79

79:                                               ; preds = %75
  %80 = getelementptr inbounds i8, ptr %6, i64 3677
  %81 = load i8, ptr %80, align 1, !tbaa !108, !range !101, !noundef !102
  %82 = trunc nuw i8 %81 to i1
  br i1 %82, label %152, label %83

83:                                               ; preds = %79
  %84 = getelementptr inbounds i8, ptr %6, i64 3678
  %85 = load i8, ptr %84, align 2, !tbaa !109, !range !101, !noundef !102
  %86 = trunc nuw i8 %85 to i1
  br i1 %86, label %152, label %87

87:                                               ; preds = %83, %73
  %.not213 = icmp eq i32 %.2190.2, -1
  br i1 %.not213, label %121, label %88

88:                                               ; preds = %87
  %89 = getelementptr inbounds i8, ptr %6, i64 16484
  %90 = load i32, ptr %89, align 4, !tbaa !110
  %.not214 = icmp eq i32 %90, %1
  br i1 %.not214, label %121, label %91

91:                                               ; preds = %88
  %92 = and i32 %.1, 1048576
  %.not215 = icmp eq i32 %92, 0
  br i1 %.not215, label %93, label %95

93:                                               ; preds = %91
  %94 = tail call noundef i32 @_ZN5ImGui16MouseButtonToKeyEi(i32 noundef %.2190.2)
  tail call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %94, i32 noundef %1, i32 noundef 0)
  br label %95

95:                                               ; preds = %93, %91
  %96 = and i32 %.1, 96
  %.not216 = icmp eq i32 %96, 0
  br i1 %.not216, label %102, label %97

97:                                               ; preds = %95
  tail call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %1, ptr noundef %7)
  %98 = getelementptr inbounds i8, ptr %6, i64 16524
  store i32 %.2190.2, ptr %98, align 4, !tbaa !111
  %99 = and i32 %.1, 262144
  %.not217 = icmp eq i32 %99, 0
  br i1 %.not217, label %100, label %101

100:                                              ; preds = %97
  tail call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %1, ptr noundef %7)
  br label %101

101:                                              ; preds = %100, %97
  tail call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %7, i32 noundef 0)
  br label %102

102:                                              ; preds = %101, %95
  %103 = and i32 %.1, 16
  %.not218 = icmp eq i32 %103, 0
  br i1 %.not218, label %104, label %112

104:                                              ; preds = %102
  %105 = and i32 %.1, 256
  %.not219 = icmp eq i32 %105, 0
  br i1 %.not219, label %121, label %106

106:                                              ; preds = %104
  %107 = getelementptr inbounds i8, ptr %6, i64 14442
  %108 = zext nneg i32 %.2190.2 to i64
  %109 = getelementptr inbounds [5 x i16], ptr %107, i64 0, i64 %108
  %110 = load i16, ptr %109, align 2, !tbaa !112
  %111 = icmp eq i16 %110, 2
  br i1 %111, label %112, label %121

112:                                              ; preds = %106, %102
  %113 = and i32 %.1, 131072
  %.not220 = icmp eq i32 %113, 0
  br i1 %.not220, label %115, label %114

114:                                              ; preds = %112
  tail call void @_ZN5ImGui13ClearActiveIDEv()
  br label %116

115:                                              ; preds = %112
  tail call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %1, ptr noundef %7)
  br label %116

116:                                              ; preds = %115, %114
  %117 = and i32 %.1, 262144
  %.not221 = icmp eq i32 %117, 0
  br i1 %.not221, label %118, label %119

118:                                              ; preds = %116
  tail call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %1, ptr noundef %7)
  br label %119

119:                                              ; preds = %118, %116
  %120 = getelementptr inbounds i8, ptr %6, i64 16524
  store i32 %.2190.2, ptr %120, align 4, !tbaa !111
  tail call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %7, i32 noundef 0)
  br label %121

121:                                              ; preds = %104, %106, %119, %88, %87
  %.1185 = phi i8 [ 1, %119 ], [ %.0184, %106 ], [ %.0184, %104 ], [ %.0184, %88 ], [ %.0184, %87 ]
  %122 = and i32 %.1, 128
  %123 = icmp ne i32 %122, 0
  %124 = icmp ne i32 %.1192.2, -1
  %or.cond5 = select i1 %123, i1 %124, i1 false
  %125 = and i32 %.1183, 2
  br i1 %or.cond5, label %126, label %._crit_edge

126:                                              ; preds = %121
  %.not222 = icmp eq i32 %125, 0
  br i1 %.not222, label %.thread252, label %127

127:                                              ; preds = %126
  %128 = getelementptr inbounds i8, ptr %6, i64 14500
  %129 = zext nneg i32 %.1192.2 to i64
  %130 = getelementptr inbounds [5 x float], ptr %128, i64 0, i64 %129
  %131 = load float, ptr %130, align 4, !tbaa !113
  %132 = getelementptr inbounds i8, ptr %6, i64 112
  %133 = load float, ptr %132, align 8, !tbaa !114
  %134 = fcmp oge float %131, %133
  %cond.fr = freeze i1 %134
  %spec.select254 = select i1 %cond.fr, i8 %.1185, i8 1
  br label %.thread252

.thread252:                                       ; preds = %127, %126
  %135 = phi i8 [ 1, %126 ], [ %spec.select254, %127 ]
  %136 = and i32 %.1, 262144
  %.not223 = icmp eq i32 %136, 0
  br i1 %.not223, label %137, label %138

137:                                              ; preds = %.thread252
  tail call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %1, ptr noundef %7)
  br label %138

138:                                              ; preds = %137, %.thread252
  tail call void @_ZN5ImGui13ClearActiveIDEv()
  br label %._crit_edge

._crit_edge:                                      ; preds = %121, %138
  %.3 = phi i8 [ %135, %138 ], [ %.1185, %121 ]
  %139 = getelementptr inbounds i8, ptr %6, i64 16484
  %140 = load i32, ptr %139, align 4, !tbaa !110
  %141 = icmp ne i32 %140, %1
  %.not224 = icmp eq i32 %125, 0
  %or.cond241 = select i1 %141, i1 true, i1 %.not224
  br i1 %or.cond241, label %152, label %142

142:                                              ; preds = %._crit_edge
  %143 = getelementptr inbounds i8, ptr %6, i64 14480
  %144 = getelementptr inbounds i8, ptr %6, i64 16524
  %145 = load i32, ptr %144, align 4, !tbaa !111
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds [5 x float], ptr %143, i64 0, i64 %146
  %148 = load float, ptr %147, align 4, !tbaa !113
  %149 = fcmp ogt float %148, 0.000000e+00
  br i1 %149, label %150, label %152

150:                                              ; preds = %142
  %151 = tail call noundef zeroext i1 @_ZN5ImGui14IsMouseClickedEiji(i32 noundef %145, i32 noundef %56, i32 noundef 1)
  %spec.select242 = select i1 %151, i8 1, i8 %.3
  br label %152

152:                                              ; preds = %150, %._crit_edge, %142, %83, %79, %75
  %.4 = phi i8 [ %.0184, %75 ], [ %.0184, %79 ], [ %.0184, %83 ], [ %.3, %142 ], [ %.3, %._crit_edge ], [ %spec.select242, %150 ]
  %153 = trunc nuw i8 %.4 to i1
  br i1 %153, label %154, label %156

154:                                              ; preds = %152
  %155 = getelementptr inbounds i8, ptr %6, i64 19306
  store i8 1, ptr %155, align 2, !tbaa !115
  br label %156

156:                                              ; preds = %152, %154, %54
  %.5 = phi i8 [ %.0184, %54 ], [ %.4, %154 ], [ %.4, %152 ]
  %157 = getelementptr inbounds i8, ptr %6, i64 19224
  %158 = load i32, ptr %157, align 8, !tbaa !116
  %159 = icmp eq i32 %158, %1
  br i1 %159, label %160, label %169

160:                                              ; preds = %156
  %161 = getelementptr inbounds i8, ptr %6, i64 19306
  %162 = load i8, ptr %161, align 2, !tbaa !115, !range !101, !noundef !102
  %163 = trunc nuw i8 %162 to i1
  br i1 %163, label %169, label %164

164:                                              ; preds = %160
  %165 = getelementptr inbounds i8, ptr %6, i64 19307
  %166 = load i8, ptr %165, align 1, !tbaa !117, !range !101, !noundef !102
  %167 = trunc nuw i8 %166 to i1
  %168 = and i32 %.1, 524288
  %.not225 = icmp eq i32 %168, 0
  %or.cond243 = and i1 %.not225, %167
  %spec.select250 = or i1 %.0186.shrunk, %or.cond243
  br label %169

169:                                              ; preds = %164, %160, %156
  %.1187.shrunk = phi i1 [ %.0186.shrunk, %160 ], [ %.0186.shrunk, %156 ], [ %spec.select250, %164 ]
  %170 = getelementptr inbounds i8, ptr %6, i64 19252
  %171 = load i32, ptr %170, align 4, !tbaa !118
  %172 = icmp eq i32 %171, %1
  br i1 %172, label %173, label %209

173:                                              ; preds = %169
  %174 = getelementptr inbounds i8, ptr %6, i64 19248
  %175 = load i32, ptr %174, align 8, !tbaa !119
  %176 = icmp eq i32 %175, %1
  %177 = getelementptr inbounds i8, ptr %6, i64 19256
  %178 = load i32, ptr %177, align 8, !tbaa !120
  %179 = icmp eq i32 %178, %1
  %180 = and i32 %.1183, 2
  %.not226 = icmp eq i32 %180, 0
  %or.cond244 = select i1 %179, i1 true, i1 %.not226
  br i1 %or.cond244, label %202, label %181

181:                                              ; preds = %173
  %182 = tail call noundef ptr @_ZN5ImGui10GetKeyDataE8ImGuiKey(i32 noundef 524)
  %183 = tail call noundef ptr @_ZN5ImGui10GetKeyDataE8ImGuiKey(i32 noundef 525)
  %184 = tail call noundef ptr @_ZN5ImGui10GetKeyDataE8ImGuiKey(i32 noundef 636)
  %185 = getelementptr inbounds i8, ptr %182, i64 4
  %186 = load float, ptr %185, align 4, !tbaa !121
  %187 = getelementptr inbounds i8, ptr %183, i64 4
  %188 = load float, ptr %187, align 4, !tbaa !121
  %189 = tail call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %186, float noundef %188)
  %190 = getelementptr inbounds i8, ptr %184, i64 4
  %191 = load float, ptr %190, align 4, !tbaa !121
  %192 = tail call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %189, float noundef %191)
  %193 = getelementptr inbounds i8, ptr %6, i64 24
  %194 = load float, ptr %193, align 8, !tbaa !105
  %195 = fsub float %192, %194
  %196 = getelementptr inbounds i8, ptr %6, i64 112
  %197 = load float, ptr %196, align 8, !tbaa !114
  %198 = getelementptr inbounds i8, ptr %6, i64 116
  %199 = load float, ptr %198, align 4, !tbaa !123
  %200 = tail call noundef i32 @_ZN5ImGui25CalcTypematicRepeatAmountEffff(float noundef %195, float noundef %192, float noundef %197, float noundef %199)
  %201 = icmp sgt i32 %200, 0
  br label %202

202:                                              ; preds = %181, %173
  %.0197.in = phi i1 [ %179, %173 ], [ %201, %181 ]
  %brmerge = or i1 %176, %.0197.in
  br i1 %brmerge, label %203, label %209

203:                                              ; preds = %202
  tail call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %1, ptr noundef %7)
  %204 = getelementptr inbounds i8, ptr %6, i64 19284
  %205 = load i32, ptr %204, align 4, !tbaa !124
  %206 = getelementptr inbounds i8, ptr %6, i64 16520
  store i32 %205, ptr %206, align 8, !tbaa !125
  %207 = and i32 %.1, 262144
  %.not227 = icmp eq i32 %207, 0
  br i1 %.not227, label %208, label %209

208:                                              ; preds = %203
  tail call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %1, ptr noundef %7)
  br label %209

209:                                              ; preds = %208, %203, %202, %169
  %.7 = phi i8 [ %.5, %169 ], [ 1, %203 ], [ 1, %208 ], [ %.5, %202 ]
  %210 = getelementptr inbounds i8, ptr %6, i64 16484
  %211 = load i32, ptr %210, align 4, !tbaa !110
  %212 = icmp eq i32 %211, %1
  br i1 %212, label %213, label %278

213:                                              ; preds = %209
  %214 = getelementptr inbounds i8, ptr %6, i64 16520
  %215 = load i32, ptr %214, align 8, !tbaa !125
  switch i32 %215, label %274 [
    i32 1, label %216
    i32 2, label %270
    i32 3, label %270
  ]

216:                                              ; preds = %213
  %217 = getelementptr inbounds i8, ptr %6, i64 16496
  %218 = load i8, ptr %217, align 8, !tbaa !126, !range !101, !noundef !102
  %219 = trunc nuw i8 %218 to i1
  br i1 %219, label %220, label %224

220:                                              ; preds = %216
  %221 = getelementptr inbounds i8, ptr %6, i64 3648
  %222 = tail call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %221, ptr noundef nonnull align 4 dereferenceable(8) %0)
  %223 = getelementptr inbounds i8, ptr %6, i64 16504
  store <2 x float> %222, ptr %223, align 8
  br label %224

224:                                              ; preds = %220, %216
  %225 = getelementptr inbounds i8, ptr %6, i64 16524
  %226 = load i32, ptr %225, align 4, !tbaa !111
  %227 = icmp eq i32 %226, -1
  br i1 %227, label %.sink.split, label %228

228:                                              ; preds = %224
  %229 = tail call noundef zeroext i1 @_ZN5ImGui11IsMouseDownEij(i32 noundef %226, i32 noundef %56)
  br i1 %229, label %266, label %230

230:                                              ; preds = %228
  %231 = and i32 %.1, 32
  %232 = icmp ne i32 %231, 0
  %233 = and i1 %232, %.1187.shrunk
  %234 = and i32 %.1, 64
  %.not228 = icmp ne i32 %234, 0
  %or.cond246.not = or i1 %.not228, %233
  br i1 %or.cond246.not, label %235, label %.sink.split

235:                                              ; preds = %230
  %236 = load i8, ptr %32, align 8, !tbaa !100, !range !101, !noundef !102
  %237 = trunc nuw i8 %236 to i1
  br i1 %237, label %.sink.split, label %238

238:                                              ; preds = %235
  %239 = and i32 %.1, 256
  %.not229 = icmp eq i32 %239, 0
  br i1 %.not229, label %251, label %240

240:                                              ; preds = %238
  %241 = getelementptr inbounds i8, ptr %6, i64 14462
  %242 = sext i32 %226 to i64
  %243 = getelementptr inbounds [5 x i8], ptr %241, i64 0, i64 %242
  %244 = load i8, ptr %243, align 1, !tbaa !127, !range !101, !noundef !102
  %245 = trunc nuw i8 %244 to i1
  br i1 %245, label %246, label %251

246:                                              ; preds = %240
  %247 = getelementptr inbounds i8, ptr %6, i64 14452
  %248 = getelementptr inbounds [5 x i16], ptr %247, i64 0, i64 %242
  %249 = load i16, ptr %248, align 2, !tbaa !112
  %250 = icmp eq i16 %249, 2
  br label %251

251:                                              ; preds = %246, %240, %238
  %252 = phi i1 [ false, %240 ], [ false, %238 ], [ %250, %246 ]
  %253 = and i32 %.1183, 2
  %.not230 = icmp eq i32 %253, 0
  br i1 %.not230, label %262, label %254

254:                                              ; preds = %251
  %255 = getelementptr inbounds i8, ptr %6, i64 14500
  %256 = sext i32 %226 to i64
  %257 = getelementptr inbounds [5 x float], ptr %255, i64 0, i64 %256
  %258 = load float, ptr %257, align 4, !tbaa !113
  %259 = getelementptr inbounds i8, ptr %6, i64 112
  %260 = load float, ptr %259, align 8, !tbaa !114
  %261 = fcmp oge float %258, %260
  br label %262

262:                                              ; preds = %254, %251
  %263 = phi i1 [ false, %251 ], [ %261, %254 ]
  %264 = tail call noundef i32 @_ZN5ImGui16MouseButtonToKeyEi(i32 noundef %226)
  %265 = tail call noundef zeroext i1 @_ZN5ImGui12TestKeyOwnerE8ImGuiKeyj(i32 noundef %264, i32 noundef %56)
  %brmerge247 = select i1 %252, i1 true, i1 %263
  %spec.select248 = select i1 %265, i8 1, i8 %.7
  %spec.select251 = select i1 %brmerge247, i8 %.7, i8 %spec.select248
  br label %.sink.split

.sink.split:                                      ; preds = %235, %230, %262, %224
  %.10.ph = phi i8 [ %.7, %224 ], [ %.7, %235 ], [ %.7, %230 ], [ %spec.select251, %262 ]
  tail call void @_ZN5ImGui13ClearActiveIDEv()
  br label %266

266:                                              ; preds = %.sink.split, %228
  %.0194 = phi i8 [ 1, %228 ], [ 0, %.sink.split ]
  %.10 = phi i8 [ %.7, %228 ], [ %.10.ph, %.sink.split ]
  %267 = and i32 %.1, 262144
  %.not231 = icmp eq i32 %267, 0
  br i1 %.not231, label %268, label %274

268:                                              ; preds = %266
  %269 = getelementptr inbounds i8, ptr %6, i64 19306
  store i8 1, ptr %269, align 2, !tbaa !115
  br label %274

270:                                              ; preds = %213, %213
  %271 = load i32, ptr %170, align 4, !tbaa !118
  %272 = icmp eq i32 %271, %1
  br i1 %272, label %274, label %273

273:                                              ; preds = %270
  tail call void @_ZN5ImGui13ClearActiveIDEv()
  br label %274

274:                                              ; preds = %270, %213, %266, %268, %273
  %.1195 = phi i8 [ 0, %273 ], [ %.0194, %268 ], [ %.0194, %266 ], [ 0, %213 ], [ 1, %270 ]
  %.11 = phi i8 [ %.7, %273 ], [ %.10, %268 ], [ %.10, %266 ], [ %.7, %213 ], [ %.7, %270 ]
  %275 = trunc nuw i8 %.11 to i1
  br i1 %275, label %276, label %278

276:                                              ; preds = %274
  %277 = getelementptr inbounds i8, ptr %6, i64 16499
  store i8 1, ptr %277, align 1, !tbaa !128
  br label %278

278:                                              ; preds = %274, %276, %209
  %.2196 = phi i8 [ %.1195, %276 ], [ %.1195, %274 ], [ 0, %209 ]
  %.12 = phi i8 [ %.11, %276 ], [ %.11, %274 ], [ %.7, %209 ]
  %.not232 = icmp eq ptr %2, null
  br i1 %.not232, label %281, label %279

279:                                              ; preds = %278
  %280 = zext i1 %.1187.shrunk to i8
  store i8 %280, ptr %2, align 1, !tbaa !127
  br label %281

281:                                              ; preds = %279, %278
  %.not233 = icmp eq ptr %3, null
  br i1 %.not233, label %283, label %282

282:                                              ; preds = %281
  store i8 %.2196, ptr %3, align 1, !tbaa !127
  br label %283

283:                                              ; preds = %282, %281
  %284 = trunc nuw i8 %.12 to i1
  ret i1 %284
}

declare noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN5ImGui13IsItemHoveredEi(i32 noundef) local_unnamed_addr #3

declare void @_ZN5ImGui12SetHoveredIDEj(i32 noundef) local_unnamed_addr #3

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef, i32 noundef) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN5ImGui14IsMouseClickedEiji(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN5ImGui15IsMouseReleasedEij(i32 noundef, i32 noundef) local_unnamed_addr #3

declare void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

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

declare void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN5ImGui13ClearActiveIDEv() local_unnamed_addr #3

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

declare noundef i32 @_ZN5ImGui25CalcTypematicRepeatAmountEffff(float noundef, float noundef, float noundef, float noundef) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN5ImGui11IsMouseDownEij(i32 noundef, i32 noundef) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN5ImGui12TestKeyOwnerE8ImGuiKeyj(i32 noundef, i32 noundef) local_unnamed_addr #3

attributes #0 = { 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 #1 = { 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 #2 = { 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 #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !13, i64 18848}
!10 = !{!"_ZTS12ImGuiContext", !11, i64 0, !11, i64 1, !12, i64 8, !19, i64 14568, !6, i64 15664, !15, i64 15672, !15, i64 15676, !20, i64 15680, !23, i64 16208, !13, i64 16216, !13, i64 16220, !13, i64 16224, !11, i64 16228, !11, i64 16229, !11, i64 16230, !11, i64 16231, !11, i64 16232, !6, i64 16240, !24, i64 16248, !24, i64 16264, !17, i64 16280, !13, i64 16284, !25, i64 16288, !25, i64 16304, !25, i64 16320, !26, i64 16336, !27, i64 16352, !13, i64 16368, !14, i64 16372, !13, i64 16380, !6, i64 16384, !6, i64 16392, !6, i64 16400, !6, i64 16408, !6, i64 16416, !14, i64 16424, !13, i64 16432, !13, i64 16436, !15, i64 16440, !14, i64 16444, !14, i64 16452, !13, i64 16460, !13, i64 16464, !13, i64 16468, !11, i64 16472, !11, i64 16473, !15, i64 16476, !15, i64 16480, !13, i64 16484, !13, i64 16488, !15, i64 16492, !11, i64 16496, !11, i64 16497, !11, i64 16498, !11, i64 16499, !11, i64 16500, !11, i64 16501, !14, i64 16504, !6, i64 16512, !29, i64 16520, !13, i64 16524, !13, i64 16528, !11, i64 16532, !11, i64 16533, !6, i64 16536, !13, i64 16544, !15, i64 16548, !23, i64 16552, !23, i64 16560, !23, i64 16568, !30, i64 16576, !7, i64 16596, !31, i64 18448, !13, i64 18792, !11, i64 18796, !13, i64 18800, !13, i64 18804, !13, i64 18808, !13, i64 18812, !13, i64 18816, !33, i64 18824, !35, i64 18848, !37, i64 18928, !11, i64 19040, !13, i64 19044, !38, i64 19048, !39, i64 19064, !40, i64 19080, !41, i64 19096, !42, i64 19112, !43, i64 19128, !44, i64 19144, !44, i64 19160, !45, i64 19176, !13, i64 19192, !46, i64 19200, !6, i64 19216, !13, i64 19224, !13, i64 19228, !41, i64 19232, !13, i64 19248, !13, i64 19252, !13, i64 19256, !13, i64 19260, !13, i64 19264, !13, i64 19268, !13, i64 19272, !13, i64 19276, !13, i64 19280, !29, i64 19284, !47, i64 19288, !34, i64 19296, !11, i64 19304, !11, i64 19305, !11, i64 19306, !11, i64 19307, !11, i64 19308, !11, i64 19309, !11, i64 19310, !48, i64 19312, !11, i64 19376, !11, i64 19377, !11, i64 19378, !13, i64 19380, !13, i64 19384, !13, i64 19388, !13, i64 19392, !13, i64 19396, !13, i64 19400, !36, i64 19404, !36, i64 19420, !13, i64 19436, !13, i64 19440, !13, i64 19444, !48, i64 19448, !48, i64 19512, !48, i64 19576, !48, i64 19640, !13, i64 19704, !13, i64 19708, !6, i64 19712, !6, i64 19720, !6, i64 19728, !15, i64 19736, !15, i64 19740, !11, i64 19744, !14, i64 19748, !14, i64 19756, !15, i64 19764, !11, i64 19768, !11, i64 19769, !11, i64 19770, !13, i64 19772, !13, i64 19776, !13, i64 19780, !49, i64 19784, !36, i64 19848, !36, i64 19864, !13, i64 19880, !13, i64 19884, !15, i64 19888, !13, i64 19892, !13, i64 19896, !13, i64 19900, !13, i64 19904, !50, i64 19912, !7, i64 19928, !13, i64 19944, !51, i64 19952, !6, i64 19968, !13, i64 19976, !13, i64 19980, !52, i64 19984, !53, i64 20000, !55, i64 20040, !56, i64 20056, !6, i64 20072, !57, i64 20080, !59, i64 20120, !60, i64 20136, !13, i64 20152, !13, i64 20156, !15, i64 20160, !15, i64 20164, !13, i64 20168, !13, i64 20172, !13, i64 20176, !15, i64 20180, !14, i64 20184, !61, i64 20192, !65, i64 23920, !66, i64 23944, !13, i64 24064, !13, i64 24068, !13, i64 24072, !13, i64 24076, !15, i64 24080, !15, i64 24084, !13, i64 24088, !21, i64 24092, !68, i64 24108, !36, i64 24156, !11, i64 24172, !15, i64 24176, !15, i64 24180, !11, i64 24184, !11, i64 24185, !15, i64 24188, !15, i64 24192, !15, i64 24196, !15, i64 24200, !16, i64 24204, !16, i64 24206, !16, i64 24208, !62, i64 24216, !69, i64 24232, !70, i64 24248, !72, i64 24352, !72, i64 24368, !11, i64 24384, !15, i64 24388, !73, i64 24392, !74, i64 24408, !75, i64 24424, !76, i64 24440, !77, i64 24456, !13, i64 24472, !7, i64 24480, !11, i64 24544, !78, i64 24548, !6, i64 24552, !73, i64 24560, !6, i64 24576, !6, i64 24584, !15, i64 24592, !11, i64 24596, !13, i64 24600, !13, i64 24604, !13, i64 24608, !13, i64 24612, !73, i64 24616, !79, i64 24632, !13, i64 24656, !7, i64 24660, !7, i64 24661, !11, i64 24662, !13, i64 24664, !7, i64 24668, !11, i64 24669, !7, i64 24670, !13, i64 24672, !15, i64 24676, !21, i64 24680, !80, i64 24696, !81, i64 24720, !83, i64 24760, !7, i64 24820, !13, i64 25060, !13, i64 25064, !15, i64 25068, !13, i64 25072, !13, i64 25076, !13, i64 25080, !62, i64 25088, !7, i64 25104}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTS7ImGuiIO", !13, i64 0, !13, i64 4, !14, i64 8, !15, i64 16, !15, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !15, i64 56, !11, i64 60, !6, i64 64, !14, i64 72, !11, i64 80, !11, i64 81, !11, i64 82, !11, i64 83, !11, i64 84, !11, i64 85, !11, i64 86, !11, i64 87, !15, i64 88, !15, i64 92, !15, i64 96, !15, i64 100, !15, i64 104, !15, i64 108, !11, i64 112, !11, i64 113, !11, i64 114, !11, i64 115, !11, i64 116, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !16, i64 192, !11, i64 194, !11, i64 195, !11, i64 196, !11, i64 197, !11, i64 198, !11, i64 199, !11, i64 200, !15, i64 204, !13, i64 208, !13, i64 212, !13, i64 216, !13, i64 220, !14, i64 224, !7, i64 232, !7, i64 2896, !7, i64 3564, !6, i64 3632, !14, i64 3640, !7, i64 3648, !15, i64 3656, !15, i64 3660, !17, i64 3664, !11, i64 3668, !11, i64 3669, !11, i64 3670, !11, i64 3671, !13, i64 3672, !7, i64 3676, !11, i64 14332, !14, i64 14336, !7, i64 14344, !7, i64 14384, !7, i64 14424, !7, i64 14429, !7, i64 14434, !7, i64 14444, !7, i64 14454, !7, i64 14459, !7, i64 14464, !11, i64 14469, !7, i64 14472, !7, i64 14492, !7, i64 14512, !15, i64 14532, !11, i64 14536, !11, i64 14537, !7, i64 14538, !11, i64 14539, !16, i64 14540, !18, i64 14544}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS6ImVec2", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!18 = !{!"_ZTS8ImVectorItE", !13, i64 0, !13, i64 4, !6, i64 8}
!19 = !{!"_ZTS10ImGuiStyle", !15, i64 0, !15, i64 4, !14, i64 8, !15, i64 16, !15, i64 20, !14, i64 24, !14, i64 32, !13, i64 40, !15, i64 44, !15, i64 48, !15, i64 52, !15, i64 56, !14, i64 60, !15, i64 68, !15, i64 72, !14, i64 76, !14, i64 84, !14, i64 92, !14, i64 100, !15, i64 108, !15, i64 112, !15, i64 116, !15, i64 120, !15, i64 124, !15, i64 128, !15, i64 132, !15, i64 136, !15, i64 140, !15, i64 144, !15, i64 148, !15, i64 152, !13, i64 156, !14, i64 160, !14, i64 168, !15, i64 176, !14, i64 180, !14, i64 188, !14, i64 196, !14, i64 204, !15, i64 212, !11, i64 216, !11, i64 217, !11, i64 218, !15, i64 220, !15, i64 224, !7, i64 228, !15, i64 1076, !15, i64 1080, !15, i64 1084, !13, i64 1088, !13, i64 1092}
!20 = !{!"_ZTS20ImDrawListSharedData", !14, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24, !21, i64 28, !13, i64 44, !22, i64 48, !7, i64 64, !15, i64 448, !7, i64 452, !6, i64 520}
!21 = !{!"_ZTS6ImVec4", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12}
!22 = !{!"_ZTS8ImVectorI6ImVec2E", !13, i64 0, !13, i64 4, !6, i64 8}
!23 = !{!"double", !7, i64 0}
!24 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !13, i64 0, !13, i64 4, !6, i64 8}
!25 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !13, i64 0, !13, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!27 = !{!"_ZTS12ImGuiStorage", !28, i64 0}
!28 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !13, i64 0, !13, i64 4, !6, i64 8}
!29 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!30 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!31 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !32, i64 312, !32, i64 328}
!32 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!33 = !{!"_ZTS17ImGuiNextItemData", !13, i64 0, !13, i64 4, !34, i64 8, !15, i64 16, !11, i64 20, !13, i64 21}
!34 = !{!"long long", !7, i64 0}
!35 = !{!"_ZTS17ImGuiLastItemData", !13, i64 0, !13, i64 4, !13, i64 8, !36, i64 12, !36, i64 28, !36, i64 44, !36, i64 60}
!36 = !{!"_ZTS6ImRect", !14, i64 0, !14, i64 8}
!37 = !{!"_ZTS19ImGuiNextWindowData", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !13, i64 56, !11, i64 60, !36, i64 64, !6, i64 80, !6, i64 88, !15, i64 96, !14, i64 100}
!38 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !13, i64 0, !13, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !13, i64 0, !13, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorIP6ImFontE", !13, i64 0, !13, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorIiE", !13, i64 0, !13, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI20ImGuiNavTreeNodeDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !13, i64 0, !13, i64 4, !6, i64 8}
!47 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!48 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !13, i64 8, !13, i64 12, !36, i64 16, !13, i64 32, !34, i64 40, !15, i64 48, !15, i64 52, !15, i64 56}
!49 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !7, i64 24, !11, i64 57, !11, i64 58}
!50 = !{!"_ZTS8ImVectorIhE", !13, i64 0, !13, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!53 = !{!"_ZTS6ImPoolI10ImGuiTableE", !54, i64 0, !27, i64 16, !13, i64 32, !13, i64 36}
!54 = !{!"_ZTS8ImVectorI10ImGuiTableE", !13, i64 0, !13, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorIfE", !13, i64 0, !13, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !13, i64 0, !13, i64 4, !6, i64 8}
!57 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !58, i64 0, !27, i64 16, !13, i64 32, !13, i64 36}
!58 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !13, i64 0, !13, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !13, i64 0, !13, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !13, i64 0, !13, i64 4, !6, i64 8}
!61 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !18, i64 24, !62, i64 40, !62, i64 56, !11, i64 72, !13, i64 76, !15, i64 80, !63, i64 84, !15, i64 3712, !11, i64 3716, !11, i64 3717, !11, i64 3718, !13, i64 3720}
!62 = !{!"_ZTS8ImVectorIcE", !13, i64 0, !13, i64 4, !6, i64 8}
!63 = !{!"_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, !15, i64 28, !64, i64 32}
!64 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !13, i64 3588, !13, i64 3592}
!65 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !13, i64 0, !62, i64 8}
!66 = !{!"_ZTS6ImFont", !55, i64 0, !15, i64 16, !15, i64 20, !18, i64 24, !67, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !16, i64 80, !16, i64 82, !16, i64 84, !16, i64 86, !15, i64 88, !15, i64 92, !11, i64 96, !15, i64 100, !15, i64 104, !15, i64 108, !13, i64 112, !7, i64 116}
!67 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !13, i64 0, !13, i64 4, !6, i64 8}
!68 = !{!"_ZTS21ImGuiComboPreviewData", !36, i64 0, !14, i64 16, !14, i64 24, !14, i64 32, !15, i64 40, !13, i64 44}
!69 = !{!"_ZTS8ImVectorIjE", !13, i64 0, !13, i64 4, !6, i64 8}
!70 = !{!"_ZTS22ImGuiTypingSelectState", !71, i64 0, !7, i64 24, !13, i64 88, !13, i64 92, !15, i64 96, !11, i64 100}
!71 = !{!"_ZTS24ImGuiTypingSelectRequest", !13, i64 0, !13, i64 4, !6, i64 8, !11, i64 16, !11, i64 17, !7, i64 18}
!72 = !{!"_ZTS20ImGuiPlatformImeData", !11, i64 0, !14, i64 4, !15, i64 12}
!73 = !{!"_ZTS15ImGuiTextBuffer", !62, i64 0}
!74 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !13, i64 0, !13, i64 4, !6, i64 8}
!75 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !62, i64 0}
!76 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !62, i64 0}
!77 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !13, i64 0, !13, i64 4, !6, i64 8}
!78 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!79 = !{!"_ZTS14ImGuiTextIndex", !42, i64 0, !13, i64 16}
!80 = !{!"_ZTS18ImGuiMetricsConfig", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3, !11, i64 4, !11, i64 5, !11, i64 6, !11, i64 7, !11, i64 8, !13, i64 12, !13, i64 16}
!81 = !{!"_ZTS16ImGuiIDStackTool", !13, i64 0, !13, i64 4, !13, i64 8, !82, i64 16, !11, i64 32, !15, i64 36}
!82 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !13, i64 0, !13, i64 4, !6, i64 8}
!83 = !{!"_ZTS19ImGuiDebugAllocInfo", !13, i64 0, !13, i64 4, !16, i64 8, !7, i64 12}
!84 = !{!13, !13, i64 0}
!85 = !{!10, !6, i64 16392}
!86 = !{!87, !6, i64 904}
!87 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 20, !13, i64 24, !6, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !14, i64 72, !14, i64 80, !14, i64 88, !15, i64 96, !15, i64 100, !15, i64 104, !15, i64 108, !15, i64 112, !15, i64 116, !15, i64 120, !15, i64 124, !13, i64 128, !13, i64 132, !13, i64 136, !14, i64 140, !14, i64 148, !14, i64 156, !14, i64 164, !14, i64 172, !14, i64 180, !11, i64 188, !11, i64 189, !11, i64 190, !11, i64 191, !11, i64 192, !11, i64 193, !11, i64 194, !11, i64 195, !11, i64 196, !11, i64 197, !11, i64 198, !11, i64 199, !11, i64 200, !7, i64 201, !7, i64 202, !16, i64 204, !16, i64 206, !16, i64 208, !16, i64 210, !16, i64 212, !13, i64 216, !7, i64 220, !7, i64 221, !11, i64 222, !13, i64 224, !7, i64 228, !7, i64 229, !7, i64 230, !7, i64 231, !13, i64 232, !13, i64 233, !13, i64 234, !14, i64 236, !14, i64 244, !69, i64 256, !88, i64 272, !36, i64 504, !36, i64 520, !36, i64 536, !36, i64 552, !36, i64 568, !36, i64 584, !36, i64 600, !91, i64 616, !91, i64 620, !13, i64 624, !15, i64 628, !15, i64 632, !27, i64 640, !92, i64 656, !15, i64 672, !13, i64 676, !6, i64 680, !93, i64 688, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !7, i64 952, !7, i64 960, !7, i64 992, !13, i64 1008, !13, i64 1012, !13, i64 1016, !11, i64 1020}
!88 = !{!"_ZTS19ImGuiWindowTempData", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !15, i64 56, !15, i64 60, !11, i64 64, !11, i64 65, !89, i64 68, !89, i64 72, !89, i64 76, !14, i64 80, !47, i64 88, !16, i64 92, !16, i64 94, !11, i64 96, !11, i64 97, !11, i64 98, !11, i64 99, !14, i64 100, !90, i64 108, !13, i64 136, !13, i64 140, !25, i64 144, !6, i64 160, !6, i64 168, !13, i64 176, !13, i64 180, !13, i64 184, !15, i64 188, !15, i64 192, !55, i64 200, !55, i64 216}
!89 = !{!"_ZTS6ImVec1", !15, i64 0}
!90 = !{!"_ZTS16ImGuiMenuColumns", !13, i64 0, !13, i64 4, !16, i64 8, !16, i64 10, !16, i64 12, !16, i64 14, !16, i64 16, !7, i64 18}
!91 = !{!"_ZTS8ImVec2ih", !16, i64 0, !16, i64 2}
!92 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !13, i64 0, !13, i64 4, !6, i64 8}
!93 = !{!"_ZTS10ImDrawList", !94, i64 0, !18, i64 16, !95, i64 32, !13, i64 48, !13, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !96, i64 88, !97, i64 104, !22, i64 120, !98, i64 136, !99, i64 168, !15, i64 192}
!94 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !13, i64 0, !13, i64 4, !6, i64 8}
!95 = !{!"_ZTS8ImVectorI10ImDrawVertE", !13, i64 0, !13, i64 4, !6, i64 8}
!96 = !{!"_ZTS8ImVectorI6ImVec4E", !13, i64 0, !13, i64 4, !6, i64 8}
!97 = !{!"_ZTS8ImVectorIPvE", !13, i64 0, !13, i64 4, !6, i64 8}
!98 = !{!"_ZTS15ImDrawCmdHeader", !21, i64 0, !6, i64 16, !13, i64 24}
!99 = !{!"_ZTS18ImDrawListSplitter", !13, i64 0, !13, i64 4, !56, i64 8}
!100 = !{!10, !11, i64 19768}
!101 = !{i8 0, i8 2}
!102 = !{}
!103 = !{!10, !13, i64 19772}
!104 = !{!10, !15, i64 16476}
!105 = !{!10, !15, i64 24}
!106 = !{!10, !13, i64 19904}
!107 = !{!10, !11, i64 3676}
!108 = !{!10, !11, i64 3677}
!109 = !{!10, !11, i64 3678}
!110 = !{!10, !13, i64 16484}
!111 = !{!10, !13, i64 16524}
!112 = !{!16, !16, i64 0}
!113 = !{!15, !15, i64 0}
!114 = !{!10, !15, i64 112}
!115 = !{!10, !11, i64 19306}
!116 = !{!10, !13, i64 19224}
!117 = !{!10, !11, i64 19307}
!118 = !{!10, !13, i64 19252}
!119 = !{!10, !13, i64 19248}
!120 = !{!10, !13, i64 19256}
!121 = !{!122, !15, i64 4}
!122 = !{!"_ZTS12ImGuiKeyData", !11, i64 0, !15, i64 4, !15, i64 8, !15, i64 12}
!123 = !{!10, !15, i64 116}
!124 = !{!10, !29, i64 19284}
!125 = !{!10, !29, i64 16520}
!126 = !{!10, !11, i64 16496}
!127 = !{!11, !11, i64 0}
!128 = !{!10, !11, i64 16499}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass