; LLVM IR from yangfengzzz/DigitalVox4 :: vox.render/gui/imgui.ll (ZN5ImGui17UpdateInputEventsEb)

; 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.ImBitArray.44 = type { [21 x i32] }
%struct.ImVec2 = type { float, float }
%struct.ImGuiContext = type <{ i8, i8, [6 x i8], %struct.ImGuiIO, %struct.ImVector.0, %struct.ImVector.0, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, [7 x i8], ptr, %struct.ImVector.1, %struct.ImVector.1, %struct.ImVector.1, %struct.ImVector.2, %struct.ImGuiStorage, i32, %struct.ImVec2, [4 x i8], ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i32, i32, i8, i8, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, %struct.ImBitArray, %struct.ImVec2, [4 x i8], ptr, i32, i32, i32, i8, i8, [2 x i8], ptr, i32, float, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, [4 x i8], %struct.ImGuiNextWindowData, %struct.ImVector.4, %struct.ImVector.5, %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.10, i32, [4 x i8], %struct.ImVector.11, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, [4 x i8], %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, ptr, ptr, ptr, float, float, i8, [3 x i8], float, i32, i8, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, [4 x i8], %struct.ImVector.12, [16 x i8], i32, [4 x i8], %struct.ImVector.13, ptr, i32, [4 x i8], %struct.ImVector.14, %struct.ImPool, %struct.ImVector.16, %struct.ImVector.17, ptr, %struct.ImPool.18, %struct.ImVector.20, %struct.ImVector.21, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, float, i8, i8, [2 x i8], float, float, float, float, i16, i16, float, [4 x i8], %struct.ImVector.22, %struct.ImVector.7, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i8, i8, [2 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.24, %struct.ImChunkStream, %struct.ImChunkStream.25, %struct.ImVector.26, i32, i8, [3 x i8], i32, [4 x i8], ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, %struct.ImGuiMetricsConfig, [4 x i8], %struct.ImGuiStackTool, [120 x float], i32, i32, float, i32, i32, i32, [3073 x i8], [7 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, [641 x i32], [512 x i8], %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, [20 x float], i32, i32, [641 x %struct.ImGuiKeyData], i8, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i16], [5 x i16], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x float], [20 x float], [20 x float], float, i8, i8, i8, i16, %struct.ImVector }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImGuiStyle = type { float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, float, float, [53 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.3 }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImBitArray = type { [5 x i32] }
%struct.ImGuiNextItemData = type <{ i32, float, i32, i32, i8, [3 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, [4 x i8], ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type { ptr, i32, i32, %struct.ImRect, i32, float, float, float }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.15, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImPool.18 = type { %struct.ImVector.19, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ i32, i32, i32, [4 x i8], %struct.ImVector, %struct.ImVector.22, %struct.ImVector.22, i8, [3 x i8], i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type <{ %struct.ImVector.16, float, float, %struct.ImVector, %struct.ImVector.23, ptr, ptr, ptr, i16, i16, i16, i16, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.22 }
%struct.ImChunkStream.25 = type { %struct.ImVector.22 }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.22 }
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiStackTool = type { i32, i32, i32, %struct.ImVector.27 }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImGuiInputEvent = type <{ i32, i32, %union.anon, i8, [3 x i8] }>
%union.anon = type { %struct.ImGuiInputEventKey }
%struct.ImGuiInputEventKey = type { i32, i8, float }
%struct.ImGuiInputEventMousePos = type { float, float }
%struct.ImGuiInputEventMouseButton = type { i32, i8 }
%struct.ImGuiInputEventMouseWheel = type { float, float }
%struct.ImGuiInputEventKeyMods = type { i32 }
%struct.ImGuiInputEventText = type { i32 }
%struct.ImGuiInputEventAppFocused = type { i8 }

@GImGui = external dso_local global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [47 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui17UpdateInputEventsEb = external hidden unnamed_addr constant [36 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5ImGui17UpdateInputEventsEb(i1 noundef zeroext %0) #5 {
  %2 = alloca i8, align 1
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %struct.ImBitArray.44, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca %struct.ImVec2, align 4
  %15 = alloca %struct.ImVec2, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i16, align 2
  %24 = alloca i32, align 4
  %25 = zext i1 %0 to i8
  store i8 %25, ptr %2, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  %26 = load ptr, ptr @GImGui, align 8, !tbaa !9
  store ptr %26, ptr %3, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  %27 = load ptr, ptr %3, align 8, !tbaa !9
  %28 = getelementptr inbounds %struct.ImGuiContext, ptr %27, i32 0, i32 3
  store ptr %28, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #7
  store i8 0, ptr %5, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #7
  store i8 0, ptr %6, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #7
  store i8 0, ptr %7, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #7
  store i8 0, ptr %8, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  store i32 0, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 84, ptr %11) #7
  call void @_ZN10ImBitArrayILi641EEC2Ev(ptr noundef nonnull align 4 dereferenceable(84) %11)
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 0, ptr %12, align 4, !tbaa !11
  br label %29

29:                                               ; preds = %441, %1
  %30 = load i32, ptr %12, align 4, !tbaa !11
  %31 = load ptr, ptr %3, align 8, !tbaa !9
  %32 = getelementptr inbounds %struct.ImGuiContext, ptr %31, i32 0, i32 4
  %33 = getelementptr inbounds %struct.ImVector.0, ptr %32, i32 0, i32 0
  %34 = load i32, ptr %33, align 8, !tbaa !13
  %35 = icmp slt i32 %30, %34
  br i1 %35, label %36, label %444

36:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %37 = load ptr, ptr %3, align 8, !tbaa !9
  %38 = getelementptr inbounds %struct.ImGuiContext, ptr %37, i32 0, i32 4
  %39 = load i32, ptr %12, align 4, !tbaa !11
  %40 = call noundef nonnull align 4 dereferenceable(21) ptr @_ZN8ImVectorI15ImGuiInputEventEixEi(ptr noundef nonnull align 8 dereferenceable(16) %38, i32 noundef %39)
  store ptr %40, ptr %13, align 8, !tbaa !9
  %41 = load ptr, ptr %13, align 8, !tbaa !9
  %42 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %41, i32 0, i32 0
  %43 = load i32, ptr %42, align 4, !tbaa !74
  %44 = icmp eq i32 %43, 1
  br i1 %44, label %45, label %104

45:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %46 = load ptr, ptr %13, align 8, !tbaa !9
  %47 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %46, i32 0, i32 2
  %48 = getelementptr inbounds %struct.ImGuiInputEventMousePos, ptr %47, i32 0, i32 0
  %49 = load float, ptr %48, align 4, !tbaa !77
  %50 = load ptr, ptr %13, align 8, !tbaa !9
  %51 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %50, i32 0, i32 2
  %52 = getelementptr inbounds %struct.ImGuiInputEventMousePos, ptr %51, i32 0, i32 1
  %53 = load float, ptr %52, align 4, !tbaa !77
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef %49, float noundef %53)
  %54 = call noundef zeroext i1 @_ZN5ImGui15IsMousePosValidEPK6ImVec2(ptr noundef %14)
  br i1 %54, label %55, label %62

55:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %56 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 0
  %57 = load float, ptr %56, align 4, !tbaa !78
  %58 = call noundef float @_ZL13ImFloorSignedf(float noundef %57)
  %59 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 1
  %60 = load float, ptr %59, align 4, !tbaa !79
  %61 = call noundef float @_ZL13ImFloorSignedf(float noundef %60)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %58, float noundef %61)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 4 %15, i64 8, i1 false), !tbaa.struct !80
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %62

62:                                               ; preds = %55, %45
  %63 = load ptr, ptr %4, align 8, !tbaa !9
  %64 = getelementptr inbounds %struct.ImGuiIO, ptr %63, i32 0, i32 52
  %65 = getelementptr inbounds %struct.ImVec2, ptr %64, i32 0, i32 0
  %66 = load float, ptr %65, align 4, !tbaa !82
  %67 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 0
  %68 = load float, ptr %67, align 4, !tbaa !78
  %69 = fcmp une float %66, %68
  br i1 %69, label %78, label %70

70:                                               ; preds = %62
  %71 = load ptr, ptr %4, align 8, !tbaa !9
  %72 = getelementptr inbounds %struct.ImGuiIO, ptr %71, i32 0, i32 52
  %73 = getelementptr inbounds %struct.ImVec2, ptr %72, i32 0, i32 1
  %74 = load float, ptr %73, align 4, !tbaa !83
  %75 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 1
  %76 = load float, ptr %75, align 4, !tbaa !79
  %77 = fcmp une float %74, %76
  br i1 %77, label %78, label %100

78:                                               ; preds = %70, %62
  %79 = load i8, ptr %2, align 1, !tbaa !5, !range !84, !noundef !85
  %80 = trunc i8 %79 to i1
  br i1 %80, label %81, label %97

81:                                               ; preds = %78
  %82 = load i32, ptr %9, align 4, !tbaa !11
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %96, label %84

84:                                               ; preds = %81
  %85 = load i8, ptr %6, align 1, !tbaa !5, !range !84, !noundef !85
  %86 = trunc i8 %85 to i1
  br i1 %86, label %96, label %87

87:                                               ; preds = %84
  %88 = load i8, ptr %7, align 1, !tbaa !5, !range !84, !noundef !85
  %89 = trunc i8 %88 to i1
  br i1 %89, label %96, label %90

90:                                               ; preds = %87
  %91 = load i32, ptr %10, align 4, !tbaa !11
  %92 = icmp ne i32 %91, 0
  br i1 %92, label %96, label %93

93:                                               ; preds = %90
  %94 = load i8, ptr %8, align 1, !tbaa !5, !range !84, !noundef !85
  %95 = trunc i8 %94 to i1
  br i1 %95, label %96, label %97

96:                                               ; preds = %93, %90, %87, %84, %81
  store i32 2, ptr %16, align 4
  br label %101

97:                                               ; preds = %93, %78
  %98 = load ptr, ptr %4, align 8, !tbaa !9
  %99 = getelementptr inbounds %struct.ImGuiIO, ptr %98, i32 0, i32 52
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %99, ptr align 4 %14, i64 8, i1 false), !tbaa.struct !80
  store i8 1, ptr %5, align 1, !tbaa !5
  br label %100

100:                                              ; preds = %97, %70
  store i32 0, ptr %16, align 4
  br label %101

101:                                              ; preds = %100, %96
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  %102 = load i32, ptr %16, align 4
  switch i32 %102, label %438 [
    i32 0, label %103
  ]

103:                                              ; preds = %101
  br label %437

104:                                              ; preds = %36
  %105 = load ptr, ptr %13, align 8, !tbaa !9
  %106 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %105, i32 0, i32 0
  %107 = load i32, ptr %106, align 4, !tbaa !74
  %108 = icmp eq i32 %107, 3
  br i1 %108, label %109, label %173

109:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  %110 = load ptr, ptr %13, align 8, !tbaa !9
  %111 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %110, i32 0, i32 2
  %112 = getelementptr inbounds %struct.ImGuiInputEventMouseButton, ptr %111, i32 0, i32 0
  %113 = load i32, ptr %112, align 4, !tbaa !77
  store i32 %113, ptr %17, align 4, !tbaa !11
  %114 = load i32, ptr %17, align 4, !tbaa !11
  %115 = icmp sge i32 %114, 0
  br i1 %115, label %116, label %119

116:                                              ; preds = %109
  %117 = load i32, ptr %17, align 4, !tbaa !11
  %118 = icmp slt i32 %117, 5
  br label %119

119:                                              ; preds = %116, %109
  %120 = phi i1 [ false, %109 ], [ %118, %116 ]
  br i1 %120, label %121, label %122

121:                                              ; preds = %119
  br label %124

122:                                              ; preds = %119
  call void @__assert_fail(ptr noundef @.str.153, ptr noundef @.str.4, i32 noundef 7782, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui17UpdateInputEventsEb) #8
  unreachable

123:                                              ; No predecessors!
  br label %124

124:                                              ; preds = %123, %121
  %125 = load ptr, ptr %4, align 8, !tbaa !9
  %126 = getelementptr inbounds %struct.ImGuiIO, ptr %125, i32 0, i32 53
  %127 = load i32, ptr %17, align 4, !tbaa !11
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds [5 x i8], ptr %126, i64 0, i64 %128
  %130 = load i8, ptr %129, align 1, !tbaa !5, !range !84, !noundef !85
  %131 = trunc i8 %130 to i1
  %132 = zext i1 %131 to i32
  %133 = load ptr, ptr %13, align 8, !tbaa !9
  %134 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %133, i32 0, i32 2
  %135 = getelementptr inbounds %struct.ImGuiInputEventMouseButton, ptr %134, i32 0, i32 1
  %136 = load i8, ptr %135, align 4, !tbaa !77, !range !84, !noundef !85
  %137 = trunc i8 %136 to i1
  %138 = zext i1 %137 to i32
  %139 = icmp ne i32 %132, %138
  br i1 %139, label %140, label %169

140:                                              ; preds = %124
  %141 = load i8, ptr %2, align 1, !tbaa !5, !range !84, !noundef !85
  %142 = trunc i8 %141 to i1
  br i1 %142, label %143, label %153

143:                                              ; preds = %140
  %144 = load i32, ptr %9, align 4, !tbaa !11
  %145 = load i32, ptr %17, align 4, !tbaa !11
  %146 = shl i32 1, %145
  %147 = and i32 %144, %146
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %152, label %149

149:                                              ; preds = %143
  %150 = load i8, ptr %6, align 1, !tbaa !5, !range !84, !noundef !85
  %151 = trunc i8 %150 to i1
  br i1 %151, label %152, label %153

152:                                              ; preds = %149, %143
  store i32 2, ptr %16, align 4
  br label %170

153:                                              ; preds = %149, %140
  %154 = load ptr, ptr %13, align 8, !tbaa !9
  %155 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %154, i32 0, i32 2
  %156 = getelementptr inbounds %struct.ImGuiInputEventMouseButton, ptr %155, i32 0, i32 1
  %157 = load i8, ptr %156, align 4, !tbaa !77, !range !84, !noundef !85
  %158 = trunc i8 %157 to i1
  %159 = load ptr, ptr %4, align 8, !tbaa !9
  %160 = getelementptr inbounds %struct.ImGuiIO, ptr %159, i32 0, i32 53
  %161 = load i32, ptr %17, align 4, !tbaa !11
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds [5 x i8], ptr %160, i64 0, i64 %162
  %164 = zext i1 %158 to i8
  store i8 %164, ptr %163, align 1, !tbaa !5
  %165 = load i32, ptr %17, align 4, !tbaa !11
  %166 = shl i32 1, %165
  %167 = load i32, ptr %9, align 4, !tbaa !11
  %168 = or i32 %167, %166
  store i32 %168, ptr %9, align 4, !tbaa !11
  br label %169

169:                                              ; preds = %153, %124
  store i32 0, ptr %16, align 4
  br label %170

170:                                              ; preds = %169, %152
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  %171 = load i32, ptr %16, align 4
  switch i32 %171, label %438 [
    i32 0, label %172
  ]

172:                                              ; preds = %170
  br label %436

173:                                              ; preds = %104
  %174 = load ptr, ptr %13, align 8, !tbaa !9
  %175 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %174, i32 0, i32 0
  %176 = load i32, ptr %175, align 4, !tbaa !74
  %177 = icmp eq i32 %176, 2
  br i1 %177, label %178, label %218

178:                                              ; preds = %173
  %179 = load ptr, ptr %13, align 8, !tbaa !9
  %180 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %179, i32 0, i32 2
  %181 = getelementptr inbounds %struct.ImGuiInputEventMouseWheel, ptr %180, i32 0, i32 0
  %182 = load float, ptr %181, align 4, !tbaa !77
  %183 = fcmp une float %182, 0.000000e+00
  br i1 %183, label %190, label %184

184:                                              ; preds = %178
  %185 = load ptr, ptr %13, align 8, !tbaa !9
  %186 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %185, i32 0, i32 2
  %187 = getelementptr inbounds %struct.ImGuiInputEventMouseWheel, ptr %186, i32 0, i32 1
  %188 = load float, ptr %187, align 4, !tbaa !77
  %189 = fcmp une float %188, 0.000000e+00
  br i1 %189, label %190, label %217

190:                                              ; preds = %184, %178
  %191 = load i8, ptr %2, align 1, !tbaa !5, !range !84, !noundef !85
  %192 = trunc i8 %191 to i1
  br i1 %192, label %193, label %200

193:                                              ; preds = %190
  %194 = load i8, ptr %6, align 1, !tbaa !5, !range !84, !noundef !85
  %195 = trunc i8 %194 to i1
  br i1 %195, label %199, label %196

196:                                              ; preds = %193
  %197 = load i32, ptr %9, align 4, !tbaa !11
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %199, label %200

199:                                              ; preds = %196, %193
  store i32 2, ptr %16, align 4
  br label %438

200:                                              ; preds = %196, %190
  %201 = load ptr, ptr %13, align 8, !tbaa !9
  %202 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %201, i32 0, i32 2
  %203 = getelementptr inbounds %struct.ImGuiInputEventMouseWheel, ptr %202, i32 0, i32 0
  %204 = load float, ptr %203, align 4, !tbaa !77
  %205 = load ptr, ptr %4, align 8, !tbaa !9
  %206 = getelementptr inbounds %struct.ImGuiIO, ptr %205, i32 0, i32 55
  %207 = load float, ptr %206, align 8, !tbaa !86
  %208 = fadd float %207, %204
  store float %208, ptr %206, align 8, !tbaa !86
  %209 = load ptr, ptr %13, align 8, !tbaa !9
  %210 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %209, i32 0, i32 2
  %211 = getelementptr inbounds %struct.ImGuiInputEventMouseWheel, ptr %210, i32 0, i32 1
  %212 = load float, ptr %211, align 4, !tbaa !77
  %213 = load ptr, ptr %4, align 8, !tbaa !9
  %214 = getelementptr inbounds %struct.ImGuiIO, ptr %213, i32 0, i32 54
  %215 = load float, ptr %214, align 4, !tbaa !87
  %216 = fadd float %215, %212
  store float %216, ptr %214, align 4, !tbaa !87
  store i8 1, ptr %6, align 1, !tbaa !5
  br label %217

217:                                              ; preds = %200, %184
  br label %435

218:                                              ; preds = %173
  %219 = load ptr, ptr %13, align 8, !tbaa !9
  %220 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %219, i32 0, i32 0
  %221 = load i32, ptr %220, align 4, !tbaa !74
  %222 = icmp eq i32 %221, 4
  br i1 %222, label %223, label %310

223:                                              ; preds = %218
  %224 = load ptr, ptr %13, align 8, !tbaa !9
  %225 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %224, i32 0, i32 2
  %226 = getelementptr inbounds %struct.ImGuiInputEventKey, ptr %225, i32 0, i32 0
  %227 = load i32, ptr %226, align 4, !tbaa !77
  %228 = icmp ne i32 %227, 0
  br i1 %228, label %229, label %230

229:                                              ; preds = %223
  br label %232

230:                                              ; preds = %223
  call void @__assert_fail(ptr noundef @.str.154, ptr noundef @.str.4, i32 noundef 7806, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui17UpdateInputEventsEb) #8
  unreachable

231:                                              ; No predecessors!
  br label %232

232:                                              ; preds = %231, %229
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %233 = load ptr, ptr %13, align 8, !tbaa !9
  %234 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %233, i32 0, i32 2
  %235 = getelementptr inbounds %struct.ImGuiInputEventKey, ptr %234, i32 0, i32 0
  %236 = load i32, ptr %235, align 4, !tbaa !77
  %237 = sub nsw i32 %236, 0
  store i32 %237, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %238 = load ptr, ptr %4, align 8, !tbaa !9
  %239 = getelementptr inbounds %struct.ImGuiIO, ptr %238, i32 0, i32 63
  %240 = load i32, ptr %18, align 4, !tbaa !11
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds [641 x %struct.ImGuiKeyData], ptr %239, i64 0, i64 %241
  store ptr %242, ptr %19, align 8, !tbaa !9
  %243 = load ptr, ptr %19, align 8, !tbaa !9
  %244 = getelementptr inbounds %struct.ImGuiKeyData, ptr %243, i32 0, i32 0
  %245 = load i8, ptr %244, align 4, !tbaa !88, !range !84, !noundef !85
  %246 = trunc i8 %245 to i1
  %247 = zext i1 %246 to i32
  %248 = load ptr, ptr %13, align 8, !tbaa !9
  %249 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %248, i32 0, i32 2
  %250 = getelementptr inbounds %struct.ImGuiInputEventKey, ptr %249, i32 0, i32 1
  %251 = load i8, ptr %250, align 4, !tbaa !77, !range !84, !noundef !85
  %252 = trunc i8 %251 to i1
  %253 = zext i1 %252 to i32
  %254 = icmp ne i32 %247, %253
  br i1 %254, label %264, label %255

255:                                              ; preds = %232
  %256 = load ptr, ptr %19, align 8, !tbaa !9
  %257 = getelementptr inbounds %struct.ImGuiKeyData, ptr %256, i32 0, i32 3
  %258 = load float, ptr %257, align 4, !tbaa !90
  %259 = load ptr, ptr %13, align 8, !tbaa !9
  %260 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %259, i32 0, i32 2
  %261 = getelementptr inbounds %struct.ImGuiInputEventKey, ptr %260, i32 0, i32 2
  %262 = load float, ptr %261, align 4, !tbaa !77
  %263 = fcmp une float %258, %262
  br i1 %263, label %264, label %306

264:                                              ; preds = %255, %232
  %265 = load i8, ptr %2, align 1, !tbaa !5, !range !84, !noundef !85
  %266 = trunc i8 %265 to i1
  br i1 %266, label %267, label %290

267:                                              ; preds = %264
  %268 = load ptr, ptr %19, align 8, !tbaa !9
  %269 = getelementptr inbounds %struct.ImGuiKeyData, ptr %268, i32 0, i32 0
  %270 = load i8, ptr %269, align 4, !tbaa !88, !range !84, !noundef !85
  %271 = trunc i8 %270 to i1
  %272 = zext i1 %271 to i32
  %273 = load ptr, ptr %13, align 8, !tbaa !9
  %274 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %273, i32 0, i32 2
  %275 = getelementptr inbounds %struct.ImGuiInputEventKey, ptr %274, i32 0, i32 1
  %276 = load i8, ptr %275, align 4, !tbaa !77, !range !84, !noundef !85
  %277 = trunc i8 %276 to i1
  %278 = zext i1 %277 to i32
  %279 = icmp ne i32 %272, %278
  br i1 %279, label %280, label %290

280:                                              ; preds = %267
  %281 = load i32, ptr %18, align 4, !tbaa !11
  %282 = call noundef zeroext i1 @_ZNK10ImBitArrayILi641EE7TestBitEi(ptr noundef nonnull align 4 dereferenceable(84) %11, i32 noundef %281)
  br i1 %282, label %289, label %283

283:                                              ; preds = %280
  %284 = load i8, ptr %8, align 1, !tbaa !5, !range !84, !noundef !85
  %285 = trunc i8 %284 to i1
  br i1 %285, label %289, label %286

286:                                              ; preds = %283
  %287 = load i32, ptr %9, align 4, !tbaa !11
  %288 = icmp ne i32 %287, 0
  br i1 %288, label %289, label %290

289:                                              ; preds = %286, %283, %280
  store i32 2, ptr %16, align 4
  br label %307

290:                                              ; preds = %286, %267, %264
  %291 = load ptr, ptr %13, align 8, !tbaa !9
  %292 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %291, i32 0, i32 2
  %293 = getelementptr inbounds %struct.ImGuiInputEventKey, ptr %292, i32 0, i32 1
  %294 = load i8, ptr %293, align 4, !tbaa !77, !range !84, !noundef !85
  %295 = trunc i8 %294 to i1
  %296 = load ptr, ptr %19, align 8, !tbaa !9
  %297 = getelementptr inbounds %struct.ImGuiKeyData, ptr %296, i32 0, i32 0
  %298 = zext i1 %295 to i8
  store i8 %298, ptr %297, align 4, !tbaa !88
  %299 = load ptr, ptr %13, align 8, !tbaa !9
  %300 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %299, i32 0, i32 2
  %301 = getelementptr inbounds %struct.ImGuiInputEventKey, ptr %300, i32 0, i32 2
  %302 = load float, ptr %301, align 4, !tbaa !77
  %303 = load ptr, ptr %19, align 8, !tbaa !9
  %304 = getelementptr inbounds %struct.ImGuiKeyData, ptr %303, i32 0, i32 3
  store float %302, ptr %304, align 4, !tbaa !90
  store i8 1, ptr %7, align 1, !tbaa !5
  %305 = load i32, ptr %18, align 4, !tbaa !11
  call void @_ZN10ImBitArrayILi641EE6SetBitEi(ptr noundef nonnull align 4 dereferenceable(84) %11, i32 noundef %305)
  br label %306

306:                                              ; preds = %290, %255
  store i32 0, ptr %16, align 4
  br label %307

307:                                              ; preds = %306, %289
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  %308 = load i32, ptr %16, align 4
  switch i32 %308, label %438 [
    i32 0, label %309
  ]

309:                                              ; preds = %307
  br label %434

310:                                              ; preds = %218
  %311 = load ptr, ptr %13, align 8, !tbaa !9
  %312 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %311, i32 0, i32 0
  %313 = load i32, ptr %312, align 4, !tbaa !74
  %314 = icmp eq i32 %313, 5
  br i1 %314, label %315, label %377

315:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %316 = load ptr, ptr %13, align 8, !tbaa !9
  %317 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %316, i32 0, i32 2
  %318 = getelementptr inbounds %struct.ImGuiInputEventKeyMods, ptr %317, i32 0, i32 0
  %319 = load i32, ptr %318, align 4, !tbaa !77
  store i32 %319, ptr %20, align 4, !tbaa !11
  %320 = load ptr, ptr %4, align 8, !tbaa !9
  %321 = getelementptr inbounds %struct.ImGuiIO, ptr %320, i32 0, i32 61
  %322 = load i32, ptr %321, align 8, !tbaa !91
  %323 = load i32, ptr %20, align 4, !tbaa !11
  %324 = icmp ne i32 %322, %323
  br i1 %324, label %325, label %373

325:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %326 = load ptr, ptr %4, align 8, !tbaa !9
  %327 = getelementptr inbounds %struct.ImGuiIO, ptr %326, i32 0, i32 61
  %328 = load i32, ptr %327, align 8, !tbaa !91
  %329 = load i32, ptr %20, align 4, !tbaa !11
  %330 = xor i32 %328, %329
  store i32 %330, ptr %21, align 4, !tbaa !11
  %331 = load i8, ptr %2, align 1, !tbaa !5, !range !84, !noundef !85
  %332 = trunc i8 %331 to i1
  br i1 %332, label %333, label %339

333:                                              ; preds = %325
  %334 = load i32, ptr %10, align 4, !tbaa !11
  %335 = load i32, ptr %21, align 4, !tbaa !11
  %336 = and i32 %334, %335
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %338, label %339

338:                                              ; preds = %333
  store i32 2, ptr %16, align 4
  br label %370

339:                                              ; preds = %333, %325
  %340 = load i32, ptr %20, align 4, !tbaa !11
  %341 = load ptr, ptr %4, align 8, !tbaa !9
  %342 = getelementptr inbounds %struct.ImGuiIO, ptr %341, i32 0, i32 61
  store i32 %340, ptr %342, align 8, !tbaa !91
  %343 = load i32, ptr %20, align 4, !tbaa !11
  %344 = and i32 %343, 1
  %345 = icmp ne i32 %344, 0
  %346 = load ptr, ptr %4, align 8, !tbaa !9
  %347 = getelementptr inbounds %struct.ImGuiIO, ptr %346, i32 0, i32 56
  %348 = zext i1 %345 to i8
  store i8 %348, ptr %347, align 4, !tbaa !92
  %349 = load i32, ptr %20, align 4, !tbaa !11
  %350 = and i32 %349, 2
  %351 = icmp ne i32 %350, 0
  %352 = load ptr, ptr %4, align 8, !tbaa !9
  %353 = getelementptr inbounds %struct.ImGuiIO, ptr %352, i32 0, i32 57
  %354 = zext i1 %351 to i8
  store i8 %354, ptr %353, align 1, !tbaa !93
  %355 = load i32, ptr %20, align 4, !tbaa !11
  %356 = and i32 %355, 4
  %357 = icmp ne i32 %356, 0
  %358 = load ptr, ptr %4, align 8, !tbaa !9
  %359 = getelementptr inbounds %struct.ImGuiIO, ptr %358, i32 0, i32 58
  %360 = zext i1 %357 to i8
  store i8 %360, ptr %359, align 2, !tbaa !94
  %361 = load i32, ptr %20, align 4, !tbaa !11
  %362 = and i32 %361, 8
  %363 = icmp ne i32 %362, 0
  %364 = load ptr, ptr %4, align 8, !tbaa !9
  %365 = getelementptr inbounds %struct.ImGuiIO, ptr %364, i32 0, i32 59
  %366 = zext i1 %363 to i8
  store i8 %366, ptr %365, align 1, !tbaa !95
  %367 = load i32, ptr %21, align 4, !tbaa !11
  %368 = load i32, ptr %10, align 4, !tbaa !11
  %369 = or i32 %368, %367
  store i32 %369, ptr %10, align 4, !tbaa !11
  store i32 0, ptr %16, align 4
  br label %370

370:                                              ; preds = %339, %338
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  %371 = load i32, ptr %16, align 4
  switch i32 %371, label %374 [
    i32 0, label %372
  ]

372:                                              ; preds = %370
  br label %373

373:                                              ; preds = %372, %315
  store i32 0, ptr %16, align 4
  br label %374

374:                                              ; preds = %373, %370
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  %375 = load i32, ptr %16, align 4
  switch i32 %375, label %438 [
    i32 0, label %376
  ]

376:                                              ; preds = %374
  br label %433

377:                                              ; preds = %310
  %378 = load ptr, ptr %13, align 8, !tbaa !9
  %379 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %378, i32 0, i32 0
  %380 = load i32, ptr %379, align 4, !tbaa !74
  %381 = icmp eq i32 %380, 6
  br i1 %381, label %382, label %415

382:                                              ; preds = %377
  %383 = load i8, ptr %2, align 1, !tbaa !5, !range !84, !noundef !85
  %384 = trunc i8 %383 to i1
  br i1 %384, label %385, label %398

385:                                              ; preds = %382
  %386 = load i8, ptr %7, align 1, !tbaa !5, !range !84, !noundef !85
  %387 = trunc i8 %386 to i1
  br i1 %387, label %397, label %388

388:                                              ; preds = %385
  %389 = load i32, ptr %9, align 4, !tbaa !11
  %390 = icmp ne i32 %389, 0
  br i1 %390, label %397, label %391

391:                                              ; preds = %388
  %392 = load i8, ptr %5, align 1, !tbaa !5, !range !84, !noundef !85
  %393 = trunc i8 %392 to i1
  br i1 %393, label %397, label %394

394:                                              ; preds = %391
  %395 = load i8, ptr %6, align 1, !tbaa !5, !range !84, !noundef !85
  %396 = trunc i8 %395 to i1
  br i1 %396, label %397, label %398

397:                                              ; preds = %394, %391, %388, %385
  store i32 2, ptr %16, align 4
  br label %438

398:                                              ; preds = %394, %382
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  %399 = load ptr, ptr %13, align 8, !tbaa !9
  %400 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %399, i32 0, i32 2
  %401 = getelementptr inbounds %struct.ImGuiInputEventText, ptr %400, i32 0, i32 0
  %402 = load i32, ptr %401, align 4, !tbaa !77
  store i32 %402, ptr %22, align 4, !tbaa !11
  %403 = load ptr, ptr %4, align 8, !tbaa !9
  %404 = getelementptr inbounds %struct.ImGuiIO, ptr %403, i32 0, i32 85
  call void @llvm.lifetime.start.p0(i64 2, ptr %23) #7
  %405 = load i32, ptr %22, align 4, !tbaa !11
  %406 = icmp ule i32 %405, 65535
  br i1 %406, label %407, label %411

407:                                              ; preds = %398
  %408 = load i32, ptr %22, align 4, !tbaa !11
  %409 = trunc i32 %408 to i16
  %410 = zext i16 %409 to i32
  br label %412

411:                                              ; preds = %398
  br label %412

412:                                              ; preds = %411, %407
  %413 = phi i32 [ %410, %407 ], [ 65533, %411 ]
  %414 = trunc i32 %413 to i16
  store i16 %414, ptr %23, align 2, !tbaa !96
  call void @_ZN8ImVectorItE9push_backERKt(ptr noundef nonnull align 8 dereferenceable(16) %404, ptr noundef nonnull align 2 dereferenceable(2) %23)
  call void @llvm.lifetime.end.p0(i64 2, ptr %23) #7
  store i8 1, ptr %8, align 1, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %432

415:                                              ; preds = %377
  %416 = load ptr, ptr %13, align 8, !tbaa !9
  %417 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %416, i32 0, i32 0
  %418 = load i32, ptr %417, align 4, !tbaa !74
  %419 = icmp eq i32 %418, 7
  br i1 %419, label %420, label %430

420:                                              ; preds = %415
  %421 = load ptr, ptr %13, align 8, !tbaa !9
  %422 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %421, i32 0, i32 2
  %423 = getelementptr inbounds %struct.ImGuiInputEventAppFocused, ptr %422, i32 0, i32 0
  %424 = load i8, ptr %423, align 4, !tbaa !77, !range !84, !noundef !85
  %425 = trunc i8 %424 to i1
  %426 = xor i1 %425, true
  %427 = load ptr, ptr %4, align 8, !tbaa !9
  %428 = getelementptr inbounds %struct.ImGuiIO, ptr %427, i32 0, i32 81
  %429 = zext i1 %426 to i8
  store i8 %429, ptr %428, align 8, !tbaa !97
  br label %431

430:                                              ; preds = %415
  call void @__assert_fail(ptr noundef @.str.155, ptr noundef @.str.4, i32 noundef 7854, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui17UpdateInputEventsEb) #8
  unreachable

431:                                              ; preds = %420
  br label %432

432:                                              ; preds = %431, %412
  br label %433

433:                                              ; preds = %432, %376
  br label %434

434:                                              ; preds = %433, %309
  br label %435

435:                                              ; preds = %434, %217
  br label %436

436:                                              ; preds = %435, %172
  br label %437

437:                                              ; preds = %436, %103
  store i32 0, ptr %16, align 4
  br label %438

438:                                              ; preds = %437, %397, %374, %307, %199, %170, %101
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  %439 = load i32, ptr %16, align 4
  switch i32 %439, label %498 [
    i32 0, label %440
    i32 2, label %444
  ]

440:                                              ; preds = %438
  br label %441

441:                                              ; preds = %440
  %442 = load i32, ptr %12, align 4, !tbaa !11
  %443 = add nsw i32 %442, 1
  store i32 %443, ptr %12, align 4, !tbaa !11
  br label %29, !llvm.loop !98

444:                                              ; preds = %438, %29
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  store i32 0, ptr %24, align 4, !tbaa !11
  br label %445

445:                                              ; preds = %457, %444
  %446 = load i32, ptr %24, align 4, !tbaa !11
  %447 = load i32, ptr %12, align 4, !tbaa !11
  %448 = icmp slt i32 %446, %447
  br i1 %448, label %450, label %449

449:                                              ; preds = %445
  store i32 5, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %460

450:                                              ; preds = %445
  %451 = load ptr, ptr %3, align 8, !tbaa !9
  %452 = getelementptr inbounds %struct.ImGuiContext, ptr %451, i32 0, i32 5
  %453 = load ptr, ptr %3, align 8, !tbaa !9
  %454 = getelementptr inbounds %struct.ImGuiContext, ptr %453, i32 0, i32 4
  %455 = load i32, ptr %24, align 4, !tbaa !11
  %456 = call noundef nonnull align 4 dereferenceable(21) ptr @_ZN8ImVectorI15ImGuiInputEventEixEi(ptr noundef nonnull align 8 dereferenceable(16) %454, i32 noundef %455)
  call void @_ZN8ImVectorI15ImGuiInputEventE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %452, ptr noundef nonnull align 4 dereferenceable(21) %456)
  br label %457

457:                                              ; preds = %450
  %458 = load i32, ptr %24, align 4, !tbaa !11
  %459 = add nsw i32 %458, 1
  store i32 %459, ptr %24, align 4, !tbaa !11
  br label %445, !llvm.loop !100

460:                                              ; preds = %449
  %461 = load i32, ptr %12, align 4, !tbaa !11
  %462 = load ptr, ptr %3, align 8, !tbaa !9
  %463 = getelementptr inbounds %struct.ImGuiContext, ptr %462, i32 0, i32 4
  %464 = getelementptr inbounds %struct.ImVector.0, ptr %463, i32 0, i32 0
  %465 = load i32, ptr %464, align 8, !tbaa !13
  %466 = icmp eq i32 %461, %465
  br i1 %466, label %467, label %470

467:                                              ; preds = %460
  %468 = load ptr, ptr %3, align 8, !tbaa !9
  %469 = getelementptr inbounds %struct.ImGuiContext, ptr %468, i32 0, i32 4
  call void @_ZN8ImVectorI15ImGuiInputEventE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %469, i32 noundef 0)
  br label %485

470:                                              ; preds = %460
  %471 = load ptr, ptr %3, align 8, !tbaa !9
  %472 = getelementptr inbounds %struct.ImGuiContext, ptr %471, i32 0, i32 4
  %473 = load ptr, ptr %3, align 8, !tbaa !9
  %474 = getelementptr inbounds %struct.ImGuiContext, ptr %473, i32 0, i32 4
  %475 = getelementptr inbounds %struct.ImVector.0, ptr %474, i32 0, i32 2
  %476 = load ptr, ptr %475, align 8, !tbaa !101
  %477 = load ptr, ptr %3, align 8, !tbaa !9
  %478 = getelementptr inbounds %struct.ImGuiContext, ptr %477, i32 0, i32 4
  %479 = getelementptr inbounds %struct.ImVector.0, ptr %478, i32 0, i32 2
  %480 = load ptr, ptr %479, align 8, !tbaa !101
  %481 = load i32, ptr %12, align 4, !tbaa !11
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %480, i64 %482
  %484 = call noundef ptr @_ZN8ImVectorI15ImGuiInputEventE5eraseEPKS0_S3_(ptr noundef nonnull align 8 dereferenceable(16) %472, ptr noundef %476, ptr noundef %483)
  br label %485

485:                                              ; preds = %470, %467
  %486 = load ptr, ptr %3, align 8, !tbaa !9
  %487 = getelementptr inbounds %struct.ImGuiContext, ptr %486, i32 0, i32 3
  %488 = getelementptr inbounds %struct.ImGuiIO, ptr %487, i32 0, i32 81
  %489 = load i8, ptr %488, align 8, !tbaa !102, !range !84, !noundef !85
  %490 = trunc i8 %489 to i1
  br i1 %490, label %491, label %497

491:                                              ; preds = %485
  %492 = load ptr, ptr %3, align 8, !tbaa !9
  %493 = getelementptr inbounds %struct.ImGuiContext, ptr %492, i32 0, i32 3
  call void @_ZN7ImGuiIO14ClearInputKeysEv(ptr noundef nonnull align 8 dereferenceable(14080) %493)
  %494 = load ptr, ptr %3, align 8, !tbaa !9
  %495 = getelementptr inbounds %struct.ImGuiContext, ptr %494, i32 0, i32 3
  %496 = getelementptr inbounds %struct.ImGuiIO, ptr %495, i32 0, i32 81
  store i8 0, ptr %496, align 8, !tbaa !102
  br label %497

497:                                              ; preds = %491, %485
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 84, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  ret void

498:                                              ; preds = %438
  unreachable
}

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImBitArrayILi641EE7TestBitEi(ptr noundef nonnull align 4 dereferenceable(84), i32 noundef) #1 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 14088}
!14 = !{!"_ZTS12ImGuiContext", !6, i64 0, !6, i64 1, !15, i64 8, !20, i64 14088, !20, i64 14104, !21, i64 14120, !10, i64 15168, !17, i64 15176, !17, i64 15180, !22, i64 15184, !24, i64 15696, !12, i64 15704, !12, i64 15708, !12, i64 15712, !6, i64 15716, !6, i64 15717, !6, i64 15718, !6, i64 15719, !6, i64 15720, !10, i64 15728, !25, i64 15736, !25, i64 15752, !25, i64 15768, !26, i64 15784, !27, i64 15800, !12, i64 15816, !16, i64 15820, !10, i64 15832, !10, i64 15840, !10, i64 15848, !10, i64 15856, !10, i64 15864, !16, i64 15872, !17, i64 15880, !12, i64 15884, !12, i64 15888, !12, i64 15892, !6, i64 15896, !6, i64 15897, !6, i64 15898, !6, i64 15899, !17, i64 15900, !17, i64 15904, !12, i64 15908, !12, i64 15912, !17, i64 15916, !6, i64 15920, !6, i64 15921, !6, i64 15922, !6, i64 15923, !6, i64 15924, !6, i64 15925, !6, i64 15926, !12, i64 15928, !12, i64 15932, !29, i64 15936, !16, i64 15956, !10, i64 15968, !30, i64 15976, !12, i64 15980, !12, i64 15984, !6, i64 15988, !6, i64 15989, !10, i64 15992, !12, i64 16000, !17, i64 16004, !12, i64 16008, !31, i64 16012, !32, i64 16032, !34, i64 16096, !35, i64 16208, !36, i64 16224, !37, i64 16240, !38, i64 16256, !39, i64 16272, !40, i64 16288, !41, i64 16304, !41, i64 16320, !12, i64 16336, !42, i64 16344, !10, i64 16360, !12, i64 16368, !12, i64 16372, !12, i64 16376, !12, i64 16380, !12, i64 16384, !12, i64 16388, !12, i64 16392, !12, i64 16396, !12, i64 16400, !12, i64 16404, !12, i64 16408, !12, i64 16412, !30, i64 16416, !43, i64 16420, !6, i64 16424, !6, i64 16425, !6, i64 16426, !6, i64 16427, !6, i64 16428, !6, i64 16429, !6, i64 16430, !12, i64 16432, !33, i64 16436, !6, i64 16452, !6, i64 16453, !6, i64 16454, !12, i64 16456, !12, i64 16460, !12, i64 16464, !12, i64 16468, !12, i64 16472, !12, i64 16476, !33, i64 16480, !33, i64 16496, !12, i64 16512, !12, i64 16516, !12, i64 16520, !44, i64 16528, !44, i64 16576, !44, i64 16624, !44, i64 16672, !10, i64 16720, !10, i64 16728, !10, i64 16736, !17, i64 16744, !17, i64 16748, !6, i64 16752, !17, i64 16756, !12, i64 16760, !6, i64 16764, !6, i64 16765, !6, i64 16766, !12, i64 16768, !12, i64 16772, !12, i64 16776, !45, i64 16784, !33, i64 16848, !12, i64 16864, !12, i64 16868, !17, i64 16872, !12, i64 16876, !12, i64 16880, !12, i64 16884, !12, i64 16888, !46, i64 16896, !7, i64 16912, !12, i64 16928, !47, i64 16936, !10, i64 16952, !12, i64 16960, !48, i64 16968, !49, i64 16984, !51, i64 17024, !52, i64 17040, !10, i64 17056, !53, i64 17064, !55, i64 17104, !56, i64 17120, !16, i64 17136, !57, i64 17144, !61, i64 20864, !12, i64 20976, !12, i64 20980, !17, i64 20984, !17, i64 20988, !12, i64 20992, !23, i64 20996, !63, i64 21012, !17, i64 21060, !6, i64 21064, !6, i64 21065, !17, i64 21068, !17, i64 21072, !17, i64 21076, !17, i64 21080, !18, i64 21084, !18, i64 21086, !17, i64 21088, !58, i64 21096, !38, i64 21112, !64, i64 21128, !64, i64 21144, !7, i64 21160, !6, i64 21161, !17, i64 21164, !65, i64 21168, !66, i64 21184, !67, i64 21200, !68, i64 21216, !69, i64 21232, !12, i64 21248, !6, i64 21252, !70, i64 21256, !10, i64 21264, !65, i64 21272, !10, i64 21288, !10, i64 21296, !17, i64 21304, !6, i64 21308, !12, i64 21312, !12, i64 21316, !12, i64 21320, !6, i64 21324, !12, i64 21328, !71, i64 21332, !72, i64 21352, !7, i64 21384, !12, i64 21864, !12, i64 21868, !17, i64 21872, !12, i64 21876, !12, i64 21880, !12, i64 21884, !7, i64 21888}
!15 = !{!"_ZTS7ImGuiIO", !12, i64 0, !12, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !10, i64 24, !10, i64 32, !17, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !10, i64 64, !10, i64 72, !17, i64 80, !6, i64 84, !10, i64 88, !16, i64 96, !6, i64 104, !6, i64 105, !6, i64 106, !6, i64 107, !6, i64 108, !6, i64 109, !6, i64 110, !17, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !6, i64 200, !6, i64 201, !6, i64 202, !6, i64 203, !6, i64 204, !6, i64 205, !6, i64 206, !17, i64 208, !12, i64 212, !12, i64 216, !12, i64 220, !12, i64 224, !12, i64 228, !16, i64 232, !7, i64 240, !7, i64 2804, !16, i64 3316, !7, i64 3324, !17, i64 3332, !17, i64 3336, !6, i64 3340, !6, i64 3341, !6, i64 3342, !6, i64 3343, !7, i64 3344, !12, i64 3424, !12, i64 3428, !7, i64 3432, !6, i64 13688, !16, i64 13692, !7, i64 13700, !7, i64 13744, !7, i64 13784, !7, i64 13789, !7, i64 13794, !7, i64 13804, !7, i64 13814, !7, i64 13819, !7, i64 13824, !7, i64 13832, !7, i64 13852, !7, i64 13872, !7, i64 13892, !7, i64 13972, !17, i64 14052, !6, i64 14056, !7, i64 14057, !6, i64 14058, !18, i64 14060, !19, i64 14064}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !12, i64 0, !12, i64 4, !10, i64 8}
!20 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !12, i64 0, !12, i64 4, !10, i64 8}
!21 = !{!"_ZTS10ImGuiStyle", !17, i64 0, !17, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !16, i64 24, !16, i64 32, !12, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !16, i64 60, !17, i64 68, !17, i64 72, !16, i64 76, !16, i64 84, !16, i64 92, !16, i64 100, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !17, i64 136, !17, i64 140, !17, i64 144, !12, i64 148, !16, i64 152, !16, i64 160, !16, i64 168, !16, i64 176, !17, i64 184, !6, i64 188, !6, i64 189, !6, i64 190, !17, i64 192, !17, i64 196, !7, i64 200}
!22 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !10, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !23, i64 28, !12, i64 44, !7, i64 48, !17, i64 432, !7, i64 436, !10, i64 504}
!23 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!24 = !{!"double", !7, i64 0}
!25 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !12, i64 0, !12, i64 4, !10, i64 8}
!26 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !12, i64 0, !12, i64 4, !10, i64 8}
!27 = !{!"_ZTS12ImGuiStorage", !28, i64 0}
!28 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !12, i64 0, !12, i64 4, !10, i64 8}
!29 = !{!"_ZTS10ImBitArrayILi129EE", !7, i64 0}
!30 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!31 = !{!"_ZTS17ImGuiNextItemData", !12, i64 0, !17, i64 4, !12, i64 8, !12, i64 12, !6, i64 16}
!32 = !{!"_ZTS17ImGuiLastItemData", !12, i64 0, !12, i64 4, !12, i64 8, !33, i64 12, !33, i64 28, !33, i64 44}
!33 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!34 = !{!"_ZTS19ImGuiNextWindowData", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !6, i64 56, !33, i64 60, !10, i64 80, !10, i64 88, !17, i64 96, !16, i64 100}
!35 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !12, i64 0, !12, i64 4, !10, i64 8}
!36 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !12, i64 0, !12, i64 4, !10, i64 8}
!37 = !{!"_ZTS8ImVectorIP6ImFontE", !12, i64 0, !12, i64 4, !10, i64 8}
!38 = !{!"_ZTS8ImVectorIjE", !12, i64 0, !12, i64 4, !10, i64 8}
!39 = !{!"_ZTS8ImVectorIiE", !12, i64 0, !12, i64 4, !10, i64 8}
!40 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !12, i64 0, !12, i64 4, !10, i64 8}
!41 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !12, i64 0, !12, i64 4, !10, i64 8}
!42 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !12, i64 0, !12, i64 4, !10, i64 8}
!43 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!44 = !{!"_ZTS16ImGuiNavItemData", !10, i64 0, !12, i64 8, !12, i64 12, !33, i64 16, !12, i64 32, !17, i64 36, !17, i64 40, !17, i64 44}
!45 = !{!"_ZTS12ImGuiPayload", !10, i64 0, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !7, i64 24, !6, i64 57, !6, i64 58}
!46 = !{!"_ZTS8ImVectorIhE", !12, i64 0, !12, i64 4, !10, i64 8}
!47 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !12, i64 0, !12, i64 4, !10, i64 8}
!48 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !12, i64 0, !12, i64 4, !10, i64 8}
!49 = !{!"_ZTS6ImPoolI10ImGuiTableE", !50, i64 0, !27, i64 16, !12, i64 32, !12, i64 36}
!50 = !{!"_ZTS8ImVectorI10ImGuiTableE", !12, i64 0, !12, i64 4, !10, i64 8}
!51 = !{!"_ZTS8ImVectorIfE", !12, i64 0, !12, i64 4, !10, i64 8}
!52 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !12, i64 0, !12, i64 4, !10, i64 8}
!53 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !54, i64 0, !27, i64 16, !12, i64 32, !12, i64 36}
!54 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !12, i64 0, !12, i64 4, !10, i64 8}
!55 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !12, i64 0, !12, i64 4, !10, i64 8}
!56 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !12, i64 0, !12, i64 4, !10, i64 8}
!57 = !{!"_ZTS19ImGuiInputTextState", !12, i64 0, !12, i64 4, !12, i64 8, !19, i64 16, !58, i64 32, !58, i64 48, !6, i64 64, !12, i64 68, !17, i64 72, !59, i64 76, !17, i64 3704, !6, i64 3708, !6, i64 3709, !6, i64 3710, !12, i64 3712}
!58 = !{!"_ZTS8ImVectorIcE", !12, i64 0, !12, i64 4, !10, i64 8}
!59 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !12, i64 0, !12, i64 4, !12, i64 8, !7, i64 12, !12, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !17, i64 28, !60, i64 32}
!60 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !12, i64 3588, !12, i64 3592}
!61 = !{!"_ZTS6ImFont", !51, i64 0, !17, i64 16, !17, i64 20, !19, i64 24, !62, i64 40, !10, i64 56, !10, i64 64, !10, i64 72, !18, i64 80, !18, i64 82, !18, i64 84, !18, i64 86, !6, i64 88, !17, i64 92, !17, i64 96, !17, i64 100, !12, i64 104, !7, i64 108}
!62 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !12, i64 0, !12, i64 4, !10, i64 8}
!63 = !{!"_ZTS21ImGuiComboPreviewData", !33, i64 0, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !12, i64 44}
!64 = !{!"_ZTS20ImGuiPlatformImeData", !6, i64 0, !16, i64 4, !17, i64 12}
!65 = !{!"_ZTS15ImGuiTextBuffer", !58, i64 0}
!66 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !12, i64 0, !12, i64 4, !10, i64 8}
!67 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !58, i64 0}
!68 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !58, i64 0}
!69 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !12, i64 0, !12, i64 4, !10, i64 8}
!70 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!71 = !{!"_ZTS18ImGuiMetricsConfig", !6, i64 0, !6, i64 1, !6, i64 2, !6, i64 3, !6, i64 4, !6, i64 5, !12, i64 8, !12, i64 12}
!72 = !{!"_ZTS14ImGuiStackTool", !12, i64 0, !12, i64 4, !12, i64 8, !73, i64 16}
!73 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !12, i64 0, !12, i64 4, !10, i64 8}
!74 = !{!75, !76, i64 0}
!75 = !{!"_ZTS15ImGuiInputEvent", !76, i64 0, !30, i64 4, !7, i64 8, !6, i64 20}
!76 = !{!"_ZTS19ImGuiInputEventType", !7, i64 0}
!77 = !{!7, !7, i64 0}
!78 = !{!16, !17, i64 0}
!79 = !{!16, !17, i64 4}
!80 = !{i64 0, i64 4, !81, i64 4, i64 4, !81}
!81 = !{!17, !17, i64 0}
!82 = !{!15, !17, i64 3316}
!83 = !{!15, !17, i64 3320}
!84 = !{i8 0, i8 2}
!85 = !{}
!86 = !{!15, !17, i64 3336}
!87 = !{!15, !17, i64 3332}
!88 = !{!89, !6, i64 0}
!89 = !{!"_ZTS12ImGuiKeyData", !6, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!90 = !{!89, !17, i64 12}
!91 = !{!15, !12, i64 3424}
!92 = !{!15, !6, i64 3340}
!93 = !{!15, !6, i64 3341}
!94 = !{!15, !6, i64 3342}
!95 = !{!15, !6, i64 3343}
!96 = !{!18, !18, i64 0}
!97 = !{!15, !6, i64 14056}
!98 = distinct !{!98, !99}
!99 = !{!"llvm.loop.mustprogress"}
!100 = distinct !{!100, !99}
!101 = !{!14, !10, i64 14096}
!102 = !{!14, !6, i64 14064}


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

%struct.ImBitArray.44 = type { [21 x i32] }
%struct.ImVec2 = type { float, float }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImGuiInputEvent = type <{ i32, i32, %union.anon, i8, [3 x i8] }>
%union.anon = type { %struct.ImGuiInputEventKey }
%struct.ImGuiInputEventKey = type { i32, i8, float }

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [47 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui17UpdateInputEventsEb = external hidden unnamed_addr constant [36 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5ImGui17UpdateInputEventsEb(i1 noundef zeroext %0) local_unnamed_addr #4 {
  %2 = alloca %struct.ImBitArray.44, align 4
  %3 = alloca %struct.ImVec2, align 8
  %4 = alloca %struct.ImVec2, align 8
  %5 = alloca i16, align 2
  %6 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %7 = getelementptr inbounds i8, ptr %6, i64 8
  call void @llvm.lifetime.start.p0(i64 84, ptr nonnull %2) #6
  call void @_ZN10ImBitArrayILi641EEC2Ev(ptr noundef nonnull align 4 dereferenceable(84) %2)
  %8 = getelementptr inbounds i8, ptr %6, i64 14088
  %9 = load i32, ptr %8, align 8, !tbaa !9
  %10 = icmp sgt i32 %9, 0
  br i1 %10, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %1
  %11 = getelementptr inbounds i8, ptr %6, i64 14064
  %12 = getelementptr inbounds i8, ptr %6, i64 14072
  %13 = getelementptr inbounds i8, ptr %6, i64 3432
  %14 = getelementptr inbounds i8, ptr %6, i64 3348
  %15 = getelementptr inbounds i8, ptr %6, i64 3349
  %16 = getelementptr inbounds i8, ptr %6, i64 3350
  %17 = getelementptr inbounds i8, ptr %6, i64 3351
  %18 = getelementptr inbounds i8, ptr %6, i64 3440
  %19 = getelementptr inbounds i8, ptr %6, i64 3344
  %20 = getelementptr inbounds i8, ptr %6, i64 3340
  %21 = getelementptr inbounds i8, ptr %6, i64 3332
  %22 = getelementptr inbounds i8, ptr %3, i64 4
  %23 = getelementptr inbounds i8, ptr %6, i64 3324
  %24 = getelementptr inbounds i8, ptr %6, i64 3328
  br label %25

25:                                               ; preds = %.lr.ph, %.thread186
  %.0130235 = phi i1 [ false, %.lr.ph ], [ %.4, %.thread186 ]
  %.0131234 = phi i8 [ 0, %.lr.ph ], [ %.2133, %.thread186 ]
  %.0134233 = phi i8 [ 0, %.lr.ph ], [ %.4138, %.thread186 ]
  %.0139232 = phi i8 [ 0, %.lr.ph ], [ %.2141, %.thread186 ]
  %.0142231 = phi i32 [ 0, %.lr.ph ], [ %.4146, %.thread186 ]
  %.0147230 = phi i32 [ 0, %.lr.ph ], [ %.5, %.thread186 ]
  %.0158227 = phi i32 [ 0, %.lr.ph ], [ %155, %.thread186 ]
  %26 = call noundef nonnull align 4 dereferenceable(21) ptr @_ZN8ImVectorI15ImGuiInputEventEixEi(ptr noundef nonnull align 8 dereferenceable(16) %8, i32 noundef %.0158227)
  %27 = load i32, ptr %26, align 4, !tbaa !72
  switch i32 %27, label %154 [
    i32 1, label %28
    i32 3, label %61
    i32 2, label %79
    i32 4, label %95
    i32 5, label %121
    i32 6, label %138
    i32 7, label %150
  ]

28:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  %29 = getelementptr inbounds i8, ptr %26, i64 8
  %30 = load float, ptr %29, align 4, !tbaa !75
  %31 = getelementptr inbounds i8, ptr %26, i64 12
  %32 = load float, ptr %31, align 4, !tbaa !75
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %3, float noundef %30, float noundef %32)
  %33 = call noundef zeroext i1 @_ZN5ImGui15IsMousePosValidEPK6ImVec2(ptr noundef nonnull %3)
  %.pre266 = load float, ptr %3, align 8, !tbaa !76
  br i1 %33, label %34, label %41

34:                                               ; preds = %28
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  %35 = call noundef float @_ZL13ImFloorSignedf(float noundef %.pre266)
  %36 = load float, ptr %22, align 4, !tbaa !77
  %37 = call noundef float @_ZL13ImFloorSignedf(float noundef %36)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %4, float noundef %35, float noundef %37)
  %38 = load i64, ptr %4, align 8
  store i64 %38, ptr %3, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  %39 = trunc i64 %38 to i32
  %40 = bitcast i32 %39 to float
  br label %41

41:                                               ; preds = %34, %28
  %42 = phi float [ %40, %34 ], [ %.pre266, %28 ]
  %43 = load float, ptr %23, align 4, !tbaa !78
  %44 = fcmp une float %43, %42
  br i1 %44, label %49, label %45

45:                                               ; preds = %41
  %46 = load float, ptr %24, align 4, !tbaa !79
  %47 = load float, ptr %22, align 4, !tbaa !77
  %48 = fcmp une float %46, %47
  br i1 %48, label %49, label %60

49:                                               ; preds = %45, %41
  br i1 %0, label %50, label %58

50:                                               ; preds = %49
  %.not170 = icmp eq i32 %.0142231, 0
  br i1 %.not170, label %51, label %.thread

51:                                               ; preds = %50
  %52 = trunc nuw i8 %.0131234 to i1
  %53 = trunc nuw i8 %.0134233 to i1
  %54 = icmp ne i32 %.0147230, 0
  %55 = select i1 %52, i1 true, i1 %53
  %or.cond172 = select i1 %55, i1 true, i1 %54
  br i1 %or.cond172, label %.thread, label %56

56:                                               ; preds = %51
  %57 = trunc nuw i8 %.0139232 to i1
  br i1 %57, label %.thread, label %58

58:                                               ; preds = %56, %49
  %59 = load i64, ptr %3, align 8
  store i64 %59, ptr %23, align 4
  br label %60

.thread:                                          ; preds = %56, %51, %50
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  br label %.thread209

60:                                               ; preds = %45, %58
  %.2 = phi i1 [ true, %58 ], [ %.0130235, %45 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  br label %.thread186

61:                                               ; preds = %25
  %62 = getelementptr inbounds i8, ptr %26, i64 8
  %63 = load i32, ptr %62, align 4, !tbaa !75
  %64 = icmp ult i32 %63, 5
  br i1 %64, label %66, label %65

65:                                               ; preds = %61
  call void @__assert_fail(ptr noundef nonnull @.str.153, ptr noundef nonnull @.str.4, i32 noundef 7782, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui17UpdateInputEventsEb) #7
  unreachable

66:                                               ; preds = %61
  %67 = zext nneg i32 %63 to i64
  %68 = getelementptr inbounds [5 x i8], ptr %21, i64 0, i64 %67
  %69 = load i8, ptr %68, align 1, !tbaa !80, !range !81, !noundef !82
  %70 = getelementptr inbounds i8, ptr %26, i64 12
  %71 = load i8, ptr %70, align 4, !tbaa !75, !range !81, !noundef !82
  %.not168 = icmp eq i8 %69, %71
  br i1 %.not168, label %.thread186, label %72

72:                                               ; preds = %66
  %73 = shl nuw nsw i32 1, %63
  br i1 %0, label %74, label %._crit_edge267

74:                                               ; preds = %72
  %75 = and i32 %73, %.0142231
  %.not169 = icmp eq i32 %75, 0
  br i1 %.not169, label %76, label %.thread209

76:                                               ; preds = %74
  %77 = trunc nuw i8 %.0131234 to i1
  br i1 %77, label %.thread209, label %._crit_edge267

._crit_edge267:                                   ; preds = %72, %76
  store i8 %71, ptr %68, align 1, !tbaa !80
  %78 = or i32 %73, %.0142231
  br label %.thread186

79:                                               ; preds = %25
  %80 = getelementptr inbounds i8, ptr %26, i64 8
  %81 = load float, ptr %80, align 4, !tbaa !75
  %82 = fcmp une float %81, 0.000000e+00
  %83 = getelementptr inbounds i8, ptr %26, i64 12
  %84 = load float, ptr %83, align 4
  %85 = fcmp une float %84, 0.000000e+00
  %or.cond175 = select i1 %82, i1 true, i1 %85
  br i1 %or.cond175, label %86, label %.thread186

86:                                               ; preds = %79
  %87 = trunc nuw i8 %.0131234 to i1
  %88 = icmp ne i32 %.0142231, 0
  %or.cond7 = select i1 %87, i1 true, i1 %88
  %or.cond177 = select i1 %0, i1 %or.cond7, i1 false
  br i1 %or.cond177, label %.thread209, label %89

89:                                               ; preds = %86
  %90 = load float, ptr %19, align 8, !tbaa !83
  %91 = fadd float %81, %90
  store float %91, ptr %19, align 8, !tbaa !83
  %92 = load float, ptr %83, align 4, !tbaa !75
  %93 = load float, ptr %20, align 4, !tbaa !84
  %94 = fadd float %92, %93
  store float %94, ptr %20, align 4, !tbaa !84
  br label %.thread186

95:                                               ; preds = %25
  %96 = getelementptr inbounds i8, ptr %26, i64 8
  %97 = load i32, ptr %96, align 4, !tbaa !75
  %.not165 = icmp eq i32 %97, 0
  br i1 %.not165, label %98, label %99

98:                                               ; preds = %95
  call void @__assert_fail(ptr noundef nonnull @.str.154, ptr noundef nonnull @.str.4, i32 noundef 7806, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui17UpdateInputEventsEb) #7
  unreachable

99:                                               ; preds = %95
  %100 = sext i32 %97 to i64
  %101 = getelementptr inbounds [641 x %struct.ImGuiKeyData], ptr %18, i64 0, i64 %100
  %102 = load i8, ptr %101, align 4, !tbaa !85, !range !81, !noundef !82
  %103 = getelementptr inbounds i8, ptr %26, i64 12
  %104 = load i8, ptr %103, align 4, !tbaa !75, !range !81, !noundef !82
  %.not166 = icmp eq i8 %102, %104
  br i1 %.not166, label %105, label %.thread190

105:                                              ; preds = %99
  %106 = getelementptr inbounds i8, ptr %101, i64 12
  %107 = load float, ptr %106, align 4, !tbaa !87
  %108 = getelementptr inbounds i8, ptr %26, i64 16
  %109 = load float, ptr %108, align 4, !tbaa !75
  %110 = fcmp une float %107, %109
  br i1 %110, label %116, label %.thread186

.thread190:                                       ; preds = %99
  br i1 %0, label %111, label %116

111:                                              ; preds = %.thread190
  %112 = call noundef zeroext i1 @_ZNK10ImBitArrayILi641EE7TestBitEi(ptr noundef nonnull align 4 dereferenceable(84) %2, i32 noundef %97)
  %113 = trunc nuw i8 %.0139232 to i1
  %114 = icmp ne i32 %.0142231, 0
  %115 = select i1 %112, i1 true, i1 %113
  %or.cond179 = select i1 %115, i1 true, i1 %114
  br i1 %or.cond179, label %.thread209, label %._crit_edge265

._crit_edge265:                                   ; preds = %111
  %.pre = load i8, ptr %103, align 4, !tbaa !75, !range !81
  br label %116

116:                                              ; preds = %._crit_edge265, %105, %.thread190
  %117 = phi i8 [ %.pre, %._crit_edge265 ], [ %102, %105 ], [ %104, %.thread190 ]
  store i8 %117, ptr %101, align 4, !tbaa !85
  %118 = getelementptr inbounds i8, ptr %26, i64 16
  %119 = load float, ptr %118, align 4, !tbaa !75
  %120 = getelementptr inbounds i8, ptr %101, i64 12
  store float %119, ptr %120, align 4, !tbaa !87
  call void @_ZN10ImBitArrayILi641EE6SetBitEi(ptr noundef nonnull align 4 dereferenceable(84) %2, i32 noundef %97)
  br label %.thread186

121:                                              ; preds = %25
  %122 = getelementptr inbounds i8, ptr %26, i64 8
  %123 = load i32, ptr %122, align 4, !tbaa !75
  %124 = load i32, ptr %13, align 8, !tbaa !88
  %.not = icmp eq i32 %124, %123
  br i1 %.not, label %.thread186, label %125

125:                                              ; preds = %121
  %126 = xor i32 %124, %123
  %127 = and i32 %126, %.0147230
  %.not164 = icmp ne i32 %127, 0
  %or.cond181.not = select i1 %0, i1 %.not164, i1 false
  br i1 %or.cond181.not, label %.thread209, label %128

128:                                              ; preds = %125
  store i32 %123, ptr %13, align 8, !tbaa !88
  %129 = trunc i32 %123 to i8
  %130 = and i8 %129, 1
  store i8 %130, ptr %14, align 4, !tbaa !89
  %131 = lshr i8 %129, 1
  %132 = and i8 %131, 1
  store i8 %132, ptr %15, align 1, !tbaa !90
  %133 = lshr i8 %129, 2
  %134 = and i8 %133, 1
  store i8 %134, ptr %16, align 2, !tbaa !91
  %135 = lshr i8 %129, 3
  %136 = and i8 %135, 1
  store i8 %136, ptr %17, align 1, !tbaa !92
  %137 = or i32 %126, %.0147230
  br label %.thread186

138:                                              ; preds = %25
  br i1 %0, label %139, label %144

139:                                              ; preds = %138
  %140 = trunc nuw i8 %.0134233 to i1
  %141 = icmp ne i32 %.0142231, 0
  %or.cond11 = select i1 %140, i1 true, i1 %141
  %brmerge = select i1 %or.cond11, i1 true, i1 %.0130235
  br i1 %brmerge, label %.thread209, label %142

142:                                              ; preds = %139
  %143 = trunc nuw i8 %.0131234 to i1
  br i1 %143, label %.thread209, label %144

144:                                              ; preds = %142, %138
  %145 = getelementptr inbounds i8, ptr %26, i64 8
  %146 = load i32, ptr %145, align 4, !tbaa !75
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %5) #6
  %147 = icmp ult i32 %146, 65536
  %148 = trunc i32 %146 to i16
  %149 = select i1 %147, i16 %148, i16 -3
  store i16 %149, ptr %5, align 2, !tbaa !93
  call void @_ZN8ImVectorItE9push_backERKt(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 2 dereferenceable(2) %5)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %5) #6
  br label %.thread186

150:                                              ; preds = %25
  %151 = getelementptr inbounds i8, ptr %26, i64 8
  %152 = load i8, ptr %151, align 4, !tbaa !75, !range !81, !noundef !82
  %153 = xor i8 %152, 1
  store i8 %153, ptr %11, align 8, !tbaa !94
  br label %.thread186

154:                                              ; preds = %25
  call void @__assert_fail(ptr noundef nonnull @.str.155, ptr noundef nonnull @.str.4, i32 noundef 7854, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui17UpdateInputEventsEb) #7
  unreachable

.thread186:                                       ; preds = %128, %121, %105, %116, %66, %._crit_edge267, %60, %79, %144, %150, %89
  %.5 = phi i32 [ %.0147230, %60 ], [ %.0147230, %89 ], [ %.0147230, %144 ], [ %.0147230, %150 ], [ %.0147230, %79 ], [ %.0147230, %._crit_edge267 ], [ %.0147230, %66 ], [ %.0147230, %116 ], [ %.0147230, %105 ], [ %137, %128 ], [ %.0147230, %121 ]
  %.4146 = phi i32 [ %.0142231, %60 ], [ %.0142231, %89 ], [ %.0142231, %144 ], [ %.0142231, %150 ], [ %.0142231, %79 ], [ %78, %._crit_edge267 ], [ %.0142231, %66 ], [ %.0142231, %116 ], [ %.0142231, %105 ], [ %.0142231, %128 ], [ %.0142231, %121 ]
  %.2141 = phi i8 [ %.0139232, %60 ], [ %.0139232, %89 ], [ 1, %144 ], [ %.0139232, %150 ], [ %.0139232, %79 ], [ %.0139232, %._crit_edge267 ], [ %.0139232, %66 ], [ %.0139232, %116 ], [ %.0139232, %105 ], [ %.0139232, %128 ], [ %.0139232, %121 ]
  %.4138 = phi i8 [ %.0134233, %60 ], [ %.0134233, %89 ], [ %.0134233, %144 ], [ %.0134233, %150 ], [ %.0134233, %79 ], [ %.0134233, %._crit_edge267 ], [ %.0134233, %66 ], [ 1, %116 ], [ %.0134233, %105 ], [ %.0134233, %128 ], [ %.0134233, %121 ]
  %.2133 = phi i8 [ %.0131234, %60 ], [ 1, %89 ], [ %.0131234, %144 ], [ %.0131234, %150 ], [ %.0131234, %79 ], [ %.0131234, %._crit_edge267 ], [ %.0131234, %66 ], [ %.0131234, %116 ], [ %.0131234, %105 ], [ %.0131234, %128 ], [ %.0131234, %121 ]
  %.4 = phi i1 [ %.2, %60 ], [ %.0130235, %89 ], [ %.0130235, %144 ], [ %.0130235, %150 ], [ %.0130235, %79 ], [ %.0130235, %._crit_edge267 ], [ %.0130235, %66 ], [ %.0130235, %116 ], [ %.0130235, %105 ], [ %.0130235, %128 ], [ %.0130235, %121 ]
  %155 = add nuw nsw i32 %.0158227, 1
  %156 = load i32, ptr %8, align 8, !tbaa !9
  %157 = icmp slt i32 %155, %156
  br i1 %157, label %25, label %.lr.ph259, !llvm.loop !95

.thread209:                                       ; preds = %86, %142, %76, %74, %111, %125, %139, %.thread
  %.not260 = icmp eq i32 %.0158227, 0
  br i1 %.not260, label %._crit_edge, label %.lr.ph259

.lr.ph259:                                        ; preds = %.thread186, %.thread209
  %.0158226275 = phi i32 [ %.0158227, %.thread209 ], [ %155, %.thread186 ]
  %158 = getelementptr inbounds i8, ptr %6, i64 14104
  br label %161

._crit_edge:                                      ; preds = %161, %1, %.thread209
  %.0158226271 = phi i32 [ 0, %.thread209 ], [ 0, %1 ], [ %.0158226275, %161 ]
  %159 = load i32, ptr %8, align 8, !tbaa !9
  %160 = icmp eq i32 %.0158226271, %159
  br i1 %160, label %164, label %165

161:                                              ; preds = %.lr.ph259, %161
  %.0258 = phi i32 [ 0, %.lr.ph259 ], [ %163, %161 ]
  %162 = call noundef nonnull align 4 dereferenceable(21) ptr @_ZN8ImVectorI15ImGuiInputEventEixEi(ptr noundef nonnull align 8 dereferenceable(16) %8, i32 noundef %.0258)
  call void @_ZN8ImVectorI15ImGuiInputEventE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %158, ptr noundef nonnull align 4 dereferenceable(21) %162)
  %163 = add nuw nsw i32 %.0258, 1
  %exitcond.not = icmp eq i32 %163, %.0158226275
  br i1 %exitcond.not, label %._crit_edge, label %161, !llvm.loop !97

164:                                              ; preds = %._crit_edge
  call void @_ZN8ImVectorI15ImGuiInputEventE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %8, i32 noundef 0)
  br label %171

165:                                              ; preds = %._crit_edge
  %166 = getelementptr inbounds i8, ptr %6, i64 14096
  %167 = load ptr, ptr %166, align 8, !tbaa !98
  %168 = zext nneg i32 %.0158226271 to i64
  %169 = getelementptr inbounds %struct.ImGuiInputEvent, ptr %167, i64 %168
  %170 = call noundef ptr @_ZN8ImVectorI15ImGuiInputEventE5eraseEPKS0_S3_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef %167, ptr noundef %169)
  br label %171

171:                                              ; preds = %165, %164
  %172 = getelementptr inbounds i8, ptr %6, i64 14064
  %173 = load i8, ptr %172, align 8, !tbaa !99, !range !81, !noundef !82
  %174 = trunc nuw i8 %173 to i1
  br i1 %174, label %175, label %176

175:                                              ; preds = %171
  call void @_ZN7ImGuiIO14ClearInputKeysEv(ptr noundef nonnull align 8 dereferenceable(14080) %7)
  store i8 0, ptr %172, align 8, !tbaa !99
  br label %176

176:                                              ; preds = %175, %171
  call void @llvm.lifetime.end.p0(i64 84, ptr nonnull %2) #6
  ret void
}

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK10ImBitArrayILi641EE7TestBitEi(ptr noundef nonnull align 4 dereferenceable(84), i32 noundef) local_unnamed_addr #1 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !13, i64 14088}
!10 = !{!"_ZTS12ImGuiContext", !11, i64 0, !11, i64 1, !12, i64 8, !18, i64 14088, !18, i64 14104, !19, i64 14120, !6, i64 15168, !15, i64 15176, !15, i64 15180, !20, i64 15184, !22, i64 15696, !13, i64 15704, !13, i64 15708, !13, i64 15712, !11, i64 15716, !11, i64 15717, !11, i64 15718, !11, i64 15719, !11, i64 15720, !6, i64 15728, !23, i64 15736, !23, i64 15752, !23, i64 15768, !24, i64 15784, !25, i64 15800, !13, i64 15816, !14, i64 15820, !6, i64 15832, !6, i64 15840, !6, i64 15848, !6, i64 15856, !6, i64 15864, !14, i64 15872, !15, i64 15880, !13, i64 15884, !13, i64 15888, !13, i64 15892, !11, i64 15896, !11, i64 15897, !11, i64 15898, !11, i64 15899, !15, i64 15900, !15, i64 15904, !13, i64 15908, !13, i64 15912, !15, i64 15916, !11, i64 15920, !11, i64 15921, !11, i64 15922, !11, i64 15923, !11, i64 15924, !11, i64 15925, !11, i64 15926, !13, i64 15928, !13, i64 15932, !27, i64 15936, !14, i64 15956, !6, i64 15968, !28, i64 15976, !13, i64 15980, !13, i64 15984, !11, i64 15988, !11, i64 15989, !6, i64 15992, !13, i64 16000, !15, i64 16004, !13, i64 16008, !29, i64 16012, !30, i64 16032, !32, i64 16096, !33, i64 16208, !34, i64 16224, !35, i64 16240, !36, i64 16256, !37, i64 16272, !38, i64 16288, !39, i64 16304, !39, i64 16320, !13, i64 16336, !40, i64 16344, !6, i64 16360, !13, i64 16368, !13, i64 16372, !13, i64 16376, !13, i64 16380, !13, i64 16384, !13, i64 16388, !13, i64 16392, !13, i64 16396, !13, i64 16400, !13, i64 16404, !13, i64 16408, !13, i64 16412, !28, i64 16416, !41, i64 16420, !11, i64 16424, !11, i64 16425, !11, i64 16426, !11, i64 16427, !11, i64 16428, !11, i64 16429, !11, i64 16430, !13, i64 16432, !31, i64 16436, !11, i64 16452, !11, i64 16453, !11, i64 16454, !13, i64 16456, !13, i64 16460, !13, i64 16464, !13, i64 16468, !13, i64 16472, !13, i64 16476, !31, i64 16480, !31, i64 16496, !13, i64 16512, !13, i64 16516, !13, i64 16520, !42, i64 16528, !42, i64 16576, !42, i64 16624, !42, i64 16672, !6, i64 16720, !6, i64 16728, !6, i64 16736, !15, i64 16744, !15, i64 16748, !11, i64 16752, !15, i64 16756, !13, i64 16760, !11, i64 16764, !11, i64 16765, !11, i64 16766, !13, i64 16768, !13, i64 16772, !13, i64 16776, !43, i64 16784, !31, i64 16848, !13, i64 16864, !13, i64 16868, !15, i64 16872, !13, i64 16876, !13, i64 16880, !13, i64 16884, !13, i64 16888, !44, i64 16896, !7, i64 16912, !13, i64 16928, !45, i64 16936, !6, i64 16952, !13, i64 16960, !46, i64 16968, !47, i64 16984, !49, i64 17024, !50, i64 17040, !6, i64 17056, !51, i64 17064, !53, i64 17104, !54, i64 17120, !14, i64 17136, !55, i64 17144, !59, i64 20864, !13, i64 20976, !13, i64 20980, !15, i64 20984, !15, i64 20988, !13, i64 20992, !21, i64 20996, !61, i64 21012, !15, i64 21060, !11, i64 21064, !11, i64 21065, !15, i64 21068, !15, i64 21072, !15, i64 21076, !15, i64 21080, !16, i64 21084, !16, i64 21086, !15, i64 21088, !56, i64 21096, !36, i64 21112, !62, i64 21128, !62, i64 21144, !7, i64 21160, !11, i64 21161, !15, i64 21164, !63, i64 21168, !64, i64 21184, !65, i64 21200, !66, i64 21216, !67, i64 21232, !13, i64 21248, !11, i64 21252, !68, i64 21256, !6, i64 21264, !63, i64 21272, !6, i64 21288, !6, i64 21296, !15, i64 21304, !11, i64 21308, !13, i64 21312, !13, i64 21316, !13, i64 21320, !11, i64 21324, !13, i64 21328, !69, i64 21332, !70, i64 21352, !7, i64 21384, !13, i64 21864, !13, i64 21868, !15, i64 21872, !13, i64 21876, !13, i64 21880, !13, i64 21884, !7, i64 21888}
!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, !15, i64 40, !15, i64 44, !15, i64 48, !15, i64 52, !15, i64 56, !6, i64 64, !6, i64 72, !15, i64 80, !11, i64 84, !6, i64 88, !14, i64 96, !11, i64 104, !11, i64 105, !11, i64 106, !11, i64 107, !11, i64 108, !11, i64 109, !11, i64 110, !15, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !11, i64 200, !11, i64 201, !11, i64 202, !11, i64 203, !11, i64 204, !11, i64 205, !11, i64 206, !15, i64 208, !13, i64 212, !13, i64 216, !13, i64 220, !13, i64 224, !13, i64 228, !14, i64 232, !7, i64 240, !7, i64 2804, !14, i64 3316, !7, i64 3324, !15, i64 3332, !15, i64 3336, !11, i64 3340, !11, i64 3341, !11, i64 3342, !11, i64 3343, !7, i64 3344, !13, i64 3424, !13, i64 3428, !7, i64 3432, !11, i64 13688, !14, i64 13692, !7, i64 13700, !7, i64 13744, !7, i64 13784, !7, i64 13789, !7, i64 13794, !7, i64 13804, !7, i64 13814, !7, i64 13819, !7, i64 13824, !7, i64 13832, !7, i64 13852, !7, i64 13872, !7, i64 13892, !7, i64 13972, !15, i64 14052, !11, i64 14056, !7, i64 14057, !11, i64 14058, !16, i64 14060, !17, i64 14064}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS6ImVec2", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!"_ZTS8ImVectorItE", !13, i64 0, !13, i64 4, !6, i64 8}
!18 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !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, !13, i64 148, !14, i64 152, !14, i64 160, !14, i64 168, !14, i64 176, !15, i64 184, !11, i64 188, !11, i64 189, !11, i64 190, !15, i64 192, !15, i64 196, !7, i64 200}
!20 = !{!"_ZTS20ImDrawListSharedData", !14, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24, !21, i64 28, !13, i64 44, !7, i64 48, !15, i64 432, !7, i64 436, !6, i64 504}
!21 = !{!"_ZTS6ImVec4", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12}
!22 = !{!"double", !7, i64 0}
!23 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !13, i64 0, !13, i64 4, !6, i64 8}
!24 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!25 = !{!"_ZTS12ImGuiStorage", !26, i64 0}
!26 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !13, i64 0, !13, i64 4, !6, i64 8}
!27 = !{!"_ZTS10ImBitArrayILi129EE", !7, i64 0}
!28 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!29 = !{!"_ZTS17ImGuiNextItemData", !13, i64 0, !15, i64 4, !13, i64 8, !13, i64 12, !11, i64 16}
!30 = !{!"_ZTS17ImGuiLastItemData", !13, i64 0, !13, i64 4, !13, i64 8, !31, i64 12, !31, i64 28, !31, i64 44}
!31 = !{!"_ZTS6ImRect", !14, i64 0, !14, i64 8}
!32 = !{!"_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, !11, i64 56, !31, i64 60, !6, i64 80, !6, i64 88, !15, i64 96, !14, i64 100}
!33 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !13, i64 0, !13, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !13, i64 0, !13, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorIP6ImFontE", !13, i64 0, !13, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorIjE", !13, i64 0, !13, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorIiE", !13, i64 0, !13, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !13, i64 0, !13, i64 4, !6, i64 8}
!41 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!42 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !13, i64 8, !13, i64 12, !31, i64 16, !13, i64 32, !15, i64 36, !15, i64 40, !15, i64 44}
!43 = !{!"_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}
!44 = !{!"_ZTS8ImVectorIhE", !13, i64 0, !13, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !13, i64 0, !13, i64 4, !6, i64 8}
!47 = !{!"_ZTS6ImPoolI10ImGuiTableE", !48, i64 0, !25, i64 16, !13, i64 32, !13, i64 36}
!48 = !{!"_ZTS8ImVectorI10ImGuiTableE", !13, i64 0, !13, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorIfE", !13, i64 0, !13, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !13, i64 0, !13, i64 4, !6, i64 8}
!51 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !52, i64 0, !25, i64 16, !13, i64 32, !13, i64 36}
!52 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !13, i64 0, !13, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !13, i64 0, !13, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !13, i64 0, !13, i64 4, !6, i64 8}
!55 = !{!"_ZTS19ImGuiInputTextState", !13, i64 0, !13, i64 4, !13, i64 8, !17, i64 16, !56, i64 32, !56, i64 48, !11, i64 64, !13, i64 68, !15, i64 72, !57, i64 76, !15, i64 3704, !11, i64 3708, !11, i64 3709, !11, i64 3710, !13, i64 3712}
!56 = !{!"_ZTS8ImVectorIcE", !13, i64 0, !13, i64 4, !6, i64 8}
!57 = !{!"_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, !58, i64 32}
!58 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !13, i64 3588, !13, i64 3592}
!59 = !{!"_ZTS6ImFont", !49, i64 0, !15, i64 16, !15, i64 20, !17, i64 24, !60, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !16, i64 80, !16, i64 82, !16, i64 84, !16, i64 86, !11, i64 88, !15, i64 92, !15, i64 96, !15, i64 100, !13, i64 104, !7, i64 108}
!60 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !13, i64 0, !13, i64 4, !6, i64 8}
!61 = !{!"_ZTS21ImGuiComboPreviewData", !31, i64 0, !14, i64 16, !14, i64 24, !14, i64 32, !15, i64 40, !13, i64 44}
!62 = !{!"_ZTS20ImGuiPlatformImeData", !11, i64 0, !14, i64 4, !15, i64 12}
!63 = !{!"_ZTS15ImGuiTextBuffer", !56, i64 0}
!64 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !13, i64 0, !13, i64 4, !6, i64 8}
!65 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !56, i64 0}
!66 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !56, i64 0}
!67 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !13, i64 0, !13, i64 4, !6, i64 8}
!68 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!69 = !{!"_ZTS18ImGuiMetricsConfig", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3, !11, i64 4, !11, i64 5, !13, i64 8, !13, i64 12}
!70 = !{!"_ZTS14ImGuiStackTool", !13, i64 0, !13, i64 4, !13, i64 8, !71, i64 16}
!71 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !13, i64 0, !13, i64 4, !6, i64 8}
!72 = !{!73, !74, i64 0}
!73 = !{!"_ZTS15ImGuiInputEvent", !74, i64 0, !28, i64 4, !7, i64 8, !11, i64 20}
!74 = !{!"_ZTS19ImGuiInputEventType", !7, i64 0}
!75 = !{!7, !7, i64 0}
!76 = !{!14, !15, i64 0}
!77 = !{!14, !15, i64 4}
!78 = !{!12, !15, i64 3316}
!79 = !{!12, !15, i64 3320}
!80 = !{!11, !11, i64 0}
!81 = !{i8 0, i8 2}
!82 = !{}
!83 = !{!12, !15, i64 3336}
!84 = !{!12, !15, i64 3332}
!85 = !{!86, !11, i64 0}
!86 = !{!"_ZTS12ImGuiKeyData", !11, i64 0, !15, i64 4, !15, i64 8, !15, i64 12}
!87 = !{!86, !15, i64 12}
!88 = !{!12, !13, i64 3424}
!89 = !{!12, !11, i64 3340}
!90 = !{!12, !11, i64 3341}
!91 = !{!12, !11, i64 3342}
!92 = !{!12, !11, i64 3343}
!93 = !{!16, !16, i64 0}
!94 = !{!12, !11, i64 14056}
!95 = distinct !{!95, !96}
!96 = !{!"llvm.loop.mustprogress"}
!97 = distinct !{!97, !96}
!98 = !{!10, !6, i64 14096}
!99 = !{!10, !11, i64 14064}


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