; LLVM IR from BrunoLevy/learn-fpga :: LiteX/software/Libs/imgui/imgui_widgets.ll (ZN5ImGui10ColorEdit4EPKcPfi)

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

%struct.ImVec2 = type { float, float }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiWindow = type <{ ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i16, [2 x i8], i32, i8, i8, i8, i8, i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, float, float, [4 x i8], %struct.ImGuiStorage, %struct.ImVector.3, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i32, i32, i8, [7 x i8] }>
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, %struct.ImVec2, i32, i16, i16, i32, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.0, ptr, ptr, i32, i32, i32, float, float, %struct.ImVector.1, %struct.ImVector.1 }
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type <{ i32, i32, i16, i16, i16, i16, i16, [4 x i16], [2 x i8] }>
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec2ih = type { i16, i16 }
%struct.ImGuiStorage = type { %struct.ImVector.2 }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.4, %struct.ImVector.5, %struct.ImVector.6, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.10 }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImGuiContext = type <{ i8, i8, [6 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, [7 x i8], ptr, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.11, %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, i64, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, [2 x i8], ptr, i32, float, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, [4 x i8], %struct.ImGuiNextWindowData, %struct.ImVector.12, %struct.ImVector.13, %struct.ImVector.14, %struct.ImVector, %struct.ImVector.15, %struct.ImVector.16, %struct.ImVector.17, %struct.ImVector.17, i32, [4 x i8], %struct.ImVector.18, 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.19, [16 x i8], i32, [4 x i8], %struct.ImVector.20, ptr, i32, [4 x i8], %struct.ImVector.21, %struct.ImPool, %struct.ImVector.1, %struct.ImVector.10, ptr, %struct.ImPool.23, %struct.ImVector.25, %struct.ImVector.26, %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.27, %struct.ImVector, %struct.ImVec2, %struct.ImVec2, i8, i8, [2 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.29, %struct.ImChunkStream, %struct.ImChunkStream.30, %struct.ImVector.31, 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, [22 x i32], float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, [512 x i8], [20 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, i8, i32, i32, %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 %struct.ImVec2], [5 x float], [512 x float], [512 x float], [20 x float], [20 x float], float, i8, i16, %struct.ImVector.5 }
%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.11 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, float, i32, i32, i8, [3 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, [4 x i8], ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type { ptr, i32, i32, %struct.ImRect, i32, float, float, float }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.22, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImPool.23 = type { %struct.ImVector.24, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ i32, i32, i32, [4 x i8], %struct.ImVector.5, %struct.ImVector.27, %struct.ImVector.27, 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.1, float, float, %struct.ImVector.5, %struct.ImVector.28, ptr, ptr, ptr, i16, i16, i16, i16, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.27 }
%struct.ImChunkStream.30 = type { %struct.ImVector.27 }
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.27 }
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiStackTool = type { i32, i32, i32, %struct.ImVector.32 }
%struct.ImVector.32 = type { i32, i32, ptr }

@GImGui = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [57 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi = external hidden unnamed_addr constant [67 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [6 x i8], align 1
@_ZZN5ImGui10ColorEdit4EPKcPfiE3ids = external hidden global [4 x ptr], align 16
@_ZZN5ImGui10ColorEdit4EPKcPfiE13fmt_table_int = external hidden global [3 x [4 x ptr]], align 16
@_ZZN5ImGui10ColorEdit4EPKcPfiE15fmt_table_float = external hidden global [3 x [4 x ptr]], align 16
@.str.101 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [7 x i8], align 1

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #3 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) #4

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

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

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

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

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

declare noundef float @_ZN5ImGui13CalcItemWidthEv() #5

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

declare noundef float @_ZN5ImGui14GetFrameHeightEv() #5

declare void @_ZN5ImGui5PopIDEv() #5

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #5

declare noundef i32 @_Z14ImFormatStringPcmPKcz(ptr noundef, i64 noundef, ptr noundef, ...) #5

declare void @_ZN5ImGui8SameLineEff(float noundef, float noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui7SpacingEv() #9

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL14ImIsPowerOfTwoi(i32 noundef) #2

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

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

declare void @_ZN5ImGui8EndPopupEv() #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL14ImCharIsBlankAc(i8 noundef signext) #2

; Function Attrs: nounwind
declare i32 @__isoc99_sscanf(ptr noundef, ptr noundef, ...) #10

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef, i32 noundef, i32 noundef) #2

declare void @_ZN5ImGui10BeginGroupEv() #5

declare void @_ZN5ImGui6PushIDEPKc(ptr noundef) #5

declare noundef ptr @_ZN5ImGui19FindRenderedTextEndEPKcS1_(ptr noundef, ptr noundef) #5

declare void @_ZN5ImGui8EndGroupEv() #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui9DragFloatEPKcPffffS1_i(ptr noundef, ptr noundef, float noundef, float noundef, float noundef, ptr noundef, i32 noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui7DragIntEPKcPifiiS1_i(ptr noundef, ptr noundef, float noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) #9

declare void @_ZN5ImGui16SetNextItemWidthEf(float noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui9InputTextEPKcPcmiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef, ptr noundef, i64 noundef, i32 noundef, ptr noundef, ptr noundef) #9

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

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

59:                                               ; preds = %3
  store i1 false, ptr %4, align 1
  store i32 1, ptr %9, align 4
  br label %889

60:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #11
  %61 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %61, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #11
  %62 = load ptr, ptr %10, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.ImGuiContext, ptr %62, i32 0, i32 4
  store ptr %63, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #11
  %64 = call noundef float @_ZN5ImGui14GetFrameHeightEv()
  store float %64, ptr %12, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #11
  %65 = call noundef float @_ZN5ImGui13CalcItemWidthEv()
  store float %65, ptr %13, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  %66 = load i32, ptr %7, align 4, !tbaa !9
  %67 = and i32 %66, 16
  %68 = icmp ne i32 %67, 0
  br i1 %68, label %69, label %70

69:                                               ; preds = %60
  br label %77

70:                                               ; preds = %60
  %71 = load float, ptr %12, align 4, !tbaa !42
  %72 = load ptr, ptr %11, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.ImGuiStyle, ptr %72, i32 0, i32 16
  %74 = getelementptr inbounds %struct.ImVec2, ptr %73, i32 0, i32 0
  %75 = load float, ptr %74, align 4, !tbaa !43
  %76 = fadd float %71, %75
  br label %77

77:                                               ; preds = %70, %69
  %78 = phi float [ 0.000000e+00, %69 ], [ %76, %70 ]
  store float %78, ptr %14, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #11
  %79 = load float, ptr %13, align 4, !tbaa !42
  %80 = load float, ptr %14, align 4, !tbaa !42
  %81 = fsub float %79, %80
  store float %81, ptr %15, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #11
  %82 = load ptr, ptr %5, align 8, !tbaa !5
  %83 = call noundef ptr @_ZN5ImGui19FindRenderedTextEndEPKcS1_(ptr noundef %82, ptr noundef null)
  store ptr %83, ptr %16, align 8, !tbaa !5
  %84 = load ptr, ptr %10, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.ImGuiContext, ptr %84, i32 0, i32 70
  call void @_ZN17ImGuiNextItemData10ClearFlagsEv(ptr noundef nonnull align 4 dereferenceable(17) %85)
  call void @_ZN5ImGui10BeginGroupEv()
  %86 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5ImGui6PushIDEPKc(ptr noundef %86)
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #11
  %87 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %87, ptr %17, align 4, !tbaa !9
  %88 = load i32, ptr %7, align 4, !tbaa !9
  %89 = and i32 %88, 32
  %90 = icmp ne i32 %89, 0
  br i1 %90, label %91, label %96

91:                                               ; preds = %77
  %92 = load i32, ptr %7, align 4, !tbaa !9
  %93 = and i32 %92, -7340033
  %94 = or i32 %93, 1048576
  %95 = or i32 %94, 8
  store i32 %95, ptr %7, align 4, !tbaa !9
  br label %96

96:                                               ; preds = %91, %77
  %97 = load i32, ptr %7, align 4, !tbaa !9
  %98 = and i32 %97, 8
  %99 = icmp ne i32 %98, 0
  br i1 %99, label %103, label %100

100:                                              ; preds = %96
  %101 = load ptr, ptr %6, align 8, !tbaa !5
  %102 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN5ImGui21ColorEditOptionsPopupEPKfi(ptr noundef %101, i32 noundef %102)
  br label %103

103:                                              ; preds = %100, %96
  %104 = load i32, ptr %7, align 4, !tbaa !9
  %105 = and i32 %104, 7340032
  %106 = icmp ne i32 %105, 0
  br i1 %106, label %114, label %107

107:                                              ; preds = %103
  %108 = load ptr, ptr %10, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.ImGuiContext, ptr %108, i32 0, i32 177
  %110 = load i32, ptr %109, align 4, !tbaa !45
  %111 = and i32 %110, 7340032
  %112 = load i32, ptr %7, align 4, !tbaa !9
  %113 = or i32 %112, %111
  store i32 %113, ptr %7, align 4, !tbaa !9
  br label %114

114:                                              ; preds = %107, %103
  %115 = load i32, ptr %7, align 4, !tbaa !9
  %116 = and i32 %115, 25165824
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %125, label %118

118:                                              ; preds = %114
  %119 = load ptr, ptr %10, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.ImGuiContext, ptr %119, i32 0, i32 177
  %121 = load i32, ptr %120, align 4, !tbaa !45
  %122 = and i32 %121, 25165824
  %123 = load i32, ptr %7, align 4, !tbaa !9
  %124 = or i32 %123, %122
  store i32 %124, ptr %7, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %118, %114
  %126 = load i32, ptr %7, align 4, !tbaa !9
  %127 = and i32 %126, 100663296
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %136, label %129

129:                                              ; preds = %125
  %130 = load ptr, ptr %10, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.ImGuiContext, ptr %130, i32 0, i32 177
  %132 = load i32, ptr %131, align 4, !tbaa !45
  %133 = and i32 %132, 100663296
  %134 = load i32, ptr %7, align 4, !tbaa !9
  %135 = or i32 %134, %133
  store i32 %135, ptr %7, align 4, !tbaa !9
  br label %136

136:                                              ; preds = %129, %125
  %137 = load i32, ptr %7, align 4, !tbaa !9
  %138 = and i32 %137, 402653184
  %139 = icmp ne i32 %138, 0
  br i1 %139, label %147, label %140

140:                                              ; preds = %136
  %141 = load ptr, ptr %10, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.ImGuiContext, ptr %141, i32 0, i32 177
  %143 = load i32, ptr %142, align 4, !tbaa !45
  %144 = and i32 %143, 402653184
  %145 = load i32, ptr %7, align 4, !tbaa !9
  %146 = or i32 %145, %144
  store i32 %146, ptr %7, align 4, !tbaa !9
  br label %147

147:                                              ; preds = %140, %136
  %148 = load ptr, ptr %10, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.ImGuiContext, ptr %148, i32 0, i32 177
  %150 = load i32, ptr %149, align 4, !tbaa !45
  %151 = and i32 %150, -535822337
  %152 = load i32, ptr %7, align 4, !tbaa !9
  %153 = or i32 %152, %151
  store i32 %153, ptr %7, align 4, !tbaa !9
  %154 = load i32, ptr %7, align 4, !tbaa !9
  %155 = and i32 %154, 7340032
  %156 = call noundef zeroext i1 @_ZL14ImIsPowerOfTwoi(i32 noundef %155)
  br i1 %156, label %157, label %158

157:                                              ; preds = %147
  br label %160

158:                                              ; preds = %147
  call void @__assert_fail(ptr noundef @.str.77, ptr noundef @.str.2, i32 noundef 4911, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi) #12
  unreachable

159:                                              ; No predecessors!
  br label %160

160:                                              ; preds = %159, %157
  %161 = load i32, ptr %7, align 4, !tbaa !9
  %162 = and i32 %161, 402653184
  %163 = call noundef zeroext i1 @_ZL14ImIsPowerOfTwoi(i32 noundef %162)
  br i1 %163, label %164, label %165

164:                                              ; preds = %160
  br label %167

165:                                              ; preds = %160
  call void @__assert_fail(ptr noundef @.str.78, ptr noundef @.str.2, i32 noundef 4912, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi) #12
  unreachable

166:                                              ; No predecessors!
  br label %167

167:                                              ; preds = %166, %164
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #11
  %168 = load i32, ptr %7, align 4, !tbaa !9
  %169 = and i32 %168, 2
  %170 = icmp eq i32 %169, 0
  %171 = zext i1 %170 to i8
  store i8 %171, ptr %18, align 1, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #11
  %172 = load i32, ptr %7, align 4, !tbaa !9
  %173 = and i32 %172, 524288
  %174 = icmp ne i32 %173, 0
  %175 = zext i1 %174 to i8
  store i8 %175, ptr %19, align 1, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  %176 = load i8, ptr %18, align 1, !tbaa !90, !range !40, !noundef !41
  %177 = trunc i8 %176 to i1
  %178 = zext i1 %177 to i64
  %179 = select i1 %177, i32 4, i32 3
  store i32 %179, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #11
  %180 = load ptr, ptr %6, align 8, !tbaa !5
  %181 = getelementptr inbounds float, ptr %180, i64 0
  %182 = load float, ptr %181, align 4, !tbaa !42
  store float %182, ptr %21, align 4, !tbaa !42
  %183 = getelementptr inbounds float, ptr %21, i64 1
  %184 = load ptr, ptr %6, align 8, !tbaa !5
  %185 = getelementptr inbounds float, ptr %184, i64 1
  %186 = load float, ptr %185, align 4, !tbaa !42
  store float %186, ptr %183, align 4, !tbaa !42
  %187 = getelementptr inbounds float, ptr %21, i64 2
  %188 = load ptr, ptr %6, align 8, !tbaa !5
  %189 = getelementptr inbounds float, ptr %188, i64 2
  %190 = load float, ptr %189, align 4, !tbaa !42
  store float %190, ptr %187, align 4, !tbaa !42
  %191 = getelementptr inbounds float, ptr %21, i64 3
  %192 = load i8, ptr %18, align 1, !tbaa !90, !range !40, !noundef !41
  %193 = trunc i8 %192 to i1
  br i1 %193, label %194, label %198

194:                                              ; preds = %167
  %195 = load ptr, ptr %6, align 8, !tbaa !5
  %196 = getelementptr inbounds float, ptr %195, i64 3
  %197 = load float, ptr %196, align 4, !tbaa !42
  br label %199

198:                                              ; preds = %167
  br label %199

199:                                              ; preds = %198, %194
  %200 = phi float [ %197, %194 ], [ 1.000000e+00, %198 ]
  store float %200, ptr %191, align 4, !tbaa !42
  %201 = load i32, ptr %7, align 4, !tbaa !9
  %202 = and i32 %201, 268435456
  %203 = icmp ne i32 %202, 0
  br i1 %203, label %204, label %218

204:                                              ; preds = %199
  %205 = load i32, ptr %7, align 4, !tbaa !9
  %206 = and i32 %205, 1048576
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %218

208:                                              ; preds = %204
  %209 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %210 = load float, ptr %209, align 16, !tbaa !42
  %211 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %212 = load float, ptr %211, align 4, !tbaa !42
  %213 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %214 = load float, ptr %213, align 8, !tbaa !42
  %215 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %216 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %217 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  call void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef %210, float noundef %212, float noundef %214, ptr noundef nonnull align 4 dereferenceable(4) %215, ptr noundef nonnull align 4 dereferenceable(4) %216, ptr noundef nonnull align 4 dereferenceable(4) %217)
  br label %241

218:                                              ; preds = %204, %199
  %219 = load i32, ptr %7, align 4, !tbaa !9
  %220 = and i32 %219, 134217728
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %240

222:                                              ; preds = %218
  %223 = load i32, ptr %7, align 4, !tbaa !9
  %224 = and i32 %223, 2097152
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %240

226:                                              ; preds = %222
  %227 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %228 = load float, ptr %227, align 16, !tbaa !42
  %229 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %230 = load float, ptr %229, align 4, !tbaa !42
  %231 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %232 = load float, ptr %231, align 8, !tbaa !42
  %233 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %234 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %235 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %228, float noundef %230, float noundef %232, ptr noundef nonnull align 4 dereferenceable(4) %233, ptr noundef nonnull align 4 dereferenceable(4) %234, ptr noundef nonnull align 4 dereferenceable(4) %235)
  %236 = load ptr, ptr %6, align 8, !tbaa !5
  %237 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %238 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %239 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  call void @_ZL18ColorEditRestoreHSPKfPfS1_S1_(ptr noundef %236, ptr noundef %237, ptr noundef %238, ptr noundef %239)
  br label %240

240:                                              ; preds = %226, %222, %218
  br label %241

241:                                              ; preds = %240, %208
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #11
  %242 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %243 = load float, ptr %242, align 16, !tbaa !42
  %244 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %245 = load float, ptr %244, align 16, !tbaa !42
  %246 = fcmp oge float %245, 0.000000e+00
  %247 = zext i1 %246 to i64
  %248 = select i1 %246, float 5.000000e-01, float -5.000000e-01
  %249 = call float @llvm.fmuladd.f32(float %243, float 2.550000e+02, float %248)
  %250 = fptosi float %249 to i32
  store i32 %250, ptr %22, align 4, !tbaa !9
  %251 = getelementptr inbounds i32, ptr %22, i64 1
  %252 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %253 = load float, ptr %252, align 4, !tbaa !42
  %254 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %255 = load float, ptr %254, align 4, !tbaa !42
  %256 = fcmp oge float %255, 0.000000e+00
  %257 = zext i1 %256 to i64
  %258 = select i1 %256, float 5.000000e-01, float -5.000000e-01
  %259 = call float @llvm.fmuladd.f32(float %253, float 2.550000e+02, float %258)
  %260 = fptosi float %259 to i32
  store i32 %260, ptr %251, align 4, !tbaa !9
  %261 = getelementptr inbounds i32, ptr %22, i64 2
  %262 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %263 = load float, ptr %262, align 8, !tbaa !42
  %264 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %265 = load float, ptr %264, align 8, !tbaa !42
  %266 = fcmp oge float %265, 0.000000e+00
  %267 = zext i1 %266 to i64
  %268 = select i1 %266, float 5.000000e-01, float -5.000000e-01
  %269 = call float @llvm.fmuladd.f32(float %263, float 2.550000e+02, float %268)
  %270 = fptosi float %269 to i32
  store i32 %270, ptr %261, align 4, !tbaa !9
  %271 = getelementptr inbounds i32, ptr %22, i64 3
  %272 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 3
  %273 = load float, ptr %272, align 4, !tbaa !42
  %274 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 3
  %275 = load float, ptr %274, align 4, !tbaa !42
  %276 = fcmp oge float %275, 0.000000e+00
  %277 = zext i1 %276 to i64
  %278 = select i1 %276, float 5.000000e-01, float -5.000000e-01
  %279 = call float @llvm.fmuladd.f32(float %273, float 2.550000e+02, float %278)
  %280 = fptosi float %279 to i32
  store i32 %280, ptr %271, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #11
  store i8 0, ptr %23, align 1, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #11
  store i8 0, ptr %24, align 1, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  %281 = load ptr, ptr %8, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.ImGuiWindow, ptr %281, i32 0, i32 54
  %283 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %282, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %25, ptr align 8 %283, i64 8, i1 false), !tbaa.struct !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #11
  %284 = load ptr, ptr %11, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.ImGuiStyle, ptr %284, i32 0, i32 29
  %286 = load i32, ptr %285, align 4, !tbaa !92
  %287 = icmp eq i32 %286, 0
  br i1 %287, label %288, label %290

288:                                              ; preds = %241
  %289 = load float, ptr %14, align 4, !tbaa !42
  br label %291

290:                                              ; preds = %241
  br label %291

291:                                              ; preds = %290, %288
  %292 = phi float [ %289, %288 ], [ 0.000000e+00, %290 ]
  store float %292, ptr %26, align 4, !tbaa !42
  %293 = getelementptr inbounds %struct.ImVec2, ptr %25, i32 0, i32 0
  %294 = load float, ptr %293, align 4, !tbaa !93
  %295 = load float, ptr %26, align 4, !tbaa !42
  %296 = fadd float %294, %295
  %297 = load ptr, ptr %8, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.ImGuiWindow, ptr %297, i32 0, i32 54
  %299 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %298, i32 0, i32 0
  %300 = getelementptr inbounds %struct.ImVec2, ptr %299, i32 0, i32 0
  store float %296, ptr %300, align 8, !tbaa !94
  %301 = load i32, ptr %7, align 4, !tbaa !9
  %302 = and i32 %301, 3145728
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %462

304:                                              ; preds = %291
  %305 = load i32, ptr %7, align 4, !tbaa !9
  %306 = and i32 %305, 32
  %307 = icmp eq i32 %306, 0
  br i1 %307, label %308, label %462

308:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #11
  %309 = load float, ptr %15, align 4, !tbaa !42
  %310 = load ptr, ptr %11, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.ImGuiStyle, ptr %310, i32 0, i32 16
  %312 = getelementptr inbounds %struct.ImVec2, ptr %311, i32 0, i32 0
  %313 = load float, ptr %312, align 4, !tbaa !43
  %314 = load i32, ptr %20, align 4, !tbaa !9
  %315 = sub nsw i32 %314, 1
  %316 = sitofp i32 %315 to float
  %317 = fneg float %313
  %318 = call float @llvm.fmuladd.f32(float %317, float %316, float %309)
  %319 = load i32, ptr %20, align 4, !tbaa !9
  %320 = sitofp i32 %319 to float
  %321 = fdiv float %318, %320
  %322 = fptosi float %321 to i32
  %323 = sitofp i32 %322 to float
  %324 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 1.000000e+00, float noundef %323)
  store float %324, ptr %27, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #11
  %325 = load float, ptr %15, align 4, !tbaa !42
  %326 = load float, ptr %27, align 4, !tbaa !42
  %327 = load ptr, ptr %11, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.ImGuiStyle, ptr %327, i32 0, i32 16
  %329 = getelementptr inbounds %struct.ImVec2, ptr %328, i32 0, i32 0
  %330 = load float, ptr %329, align 4, !tbaa !43
  %331 = fadd float %326, %330
  %332 = load i32, ptr %20, align 4, !tbaa !9
  %333 = sub nsw i32 %332, 1
  %334 = sitofp i32 %333 to float
  %335 = fneg float %331
  %336 = call float @llvm.fmuladd.f32(float %335, float %334, float %325)
  %337 = fptosi float %336 to i32
  %338 = sitofp i32 %337 to float
  %339 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 1.000000e+00, float noundef %338)
  store float %339, ptr %28, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #11
  %340 = load float, ptr %27, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  %341 = load i32, ptr %7, align 4, !tbaa !9
  %342 = and i32 %341, 16777216
  %343 = icmp ne i32 %342, 0
  %344 = zext i1 %343 to i64
  %345 = select i1 %343, ptr @.str.79, ptr @.str.80
  %346 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %345, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  store <2 x float> %346, ptr %30, align 4
  %347 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %348 = load float, ptr %347, align 4, !tbaa !93
  %349 = fcmp ole float %340, %348
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  %350 = zext i1 %349 to i8
  store i8 %350, ptr %29, align 1, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #11
  %351 = load i8, ptr %29, align 1, !tbaa !90, !range !40, !noundef !41
  %352 = trunc i8 %351 to i1
  br i1 %352, label %353, label %354

353:                                              ; preds = %308
  br label %360

354:                                              ; preds = %308
  %355 = load i32, ptr %7, align 4, !tbaa !9
  %356 = and i32 %355, 2097152
  %357 = icmp ne i32 %356, 0
  %358 = zext i1 %357 to i64
  %359 = select i1 %357, i32 2, i32 1
  br label %360

360:                                              ; preds = %354, %353
  %361 = phi i32 [ 0, %353 ], [ %359, %354 ]
  store i32 %361, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %362

362:                                              ; preds = %458, %360
  %363 = load i32, ptr %32, align 4, !tbaa !9
  %364 = load i32, ptr %20, align 4, !tbaa !9
  %365 = icmp slt i32 %363, %364
  br i1 %365, label %367, label %366

366:                                              ; preds = %362
  store i32 2, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %461

367:                                              ; preds = %362
  %368 = load i32, ptr %32, align 4, !tbaa !9
  %369 = icmp sgt i32 %368, 0
  br i1 %369, label %370, label %375

370:                                              ; preds = %367
  %371 = load ptr, ptr %11, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.ImGuiStyle, ptr %371, i32 0, i32 16
  %373 = getelementptr inbounds %struct.ImVec2, ptr %372, i32 0, i32 0
  %374 = load float, ptr %373, align 4, !tbaa !43
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef %374)
  br label %375

375:                                              ; preds = %370, %367
  %376 = load i32, ptr %32, align 4, !tbaa !9
  %377 = add nsw i32 %376, 1
  %378 = load i32, ptr %20, align 4, !tbaa !9
  %379 = icmp slt i32 %377, %378
  br i1 %379, label %380, label %382

380:                                              ; preds = %375
  %381 = load float, ptr %27, align 4, !tbaa !42
  br label %384

382:                                              ; preds = %375
  %383 = load float, ptr %28, align 4, !tbaa !42
  br label %384

384:                                              ; preds = %382, %380
  %385 = phi float [ %381, %380 ], [ %383, %382 ]
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %385)
  %386 = load i32, ptr %7, align 4, !tbaa !9
  %387 = and i32 %386, 16777216
  %388 = icmp ne i32 %387, 0
  br i1 %388, label %389, label %425

389:                                              ; preds = %384
  %390 = load i32, ptr %32, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds [4 x ptr], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, i64 0, i64 %391
  %393 = load ptr, ptr %392, align 8, !tbaa !5
  %394 = load i32, ptr %32, align 4, !tbaa !9
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 %395
  %397 = load i8, ptr %19, align 1, !tbaa !90, !range !40, !noundef !41
  %398 = trunc i8 %397 to i1
  %399 = zext i1 %398 to i64
  %400 = select i1 %398, float 0.000000e+00, float 1.000000e+00
  %401 = load i32, ptr %31, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE15fmt_table_float, i64 0, i64 %402
  %404 = load i32, ptr %32, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds [4 x ptr], ptr %403, i64 0, i64 %405
  %407 = load ptr, ptr %406, align 8, !tbaa !5
  %408 = call noundef zeroext i1 @_ZN5ImGui9DragFloatEPKcPffffS1_i(ptr noundef %393, ptr noundef %396, float noundef 0x3F70101020000000, float noundef 0.000000e+00, float noundef %400, ptr noundef %407, i32 noundef 0)
  %409 = zext i1 %408 to i32
  %410 = load i8, ptr %23, align 1, !tbaa !90, !range !40, !noundef !41
  %411 = trunc i8 %410 to i1
  %412 = zext i1 %411 to i32
  %413 = or i32 %412, %409
  %414 = icmp ne i32 %413, 0
  %415 = zext i1 %414 to i8
  store i8 %415, ptr %23, align 1, !tbaa !90
  %416 = load i8, ptr %23, align 1, !tbaa !90, !range !40, !noundef !41
  %417 = trunc i8 %416 to i1
  %418 = zext i1 %417 to i32
  %419 = load i8, ptr %24, align 1, !tbaa !90, !range !40, !noundef !41
  %420 = trunc i8 %419 to i1
  %421 = zext i1 %420 to i32
  %422 = or i32 %421, %418
  %423 = icmp ne i32 %422, 0
  %424 = zext i1 %423 to i8
  store i8 %424, ptr %24, align 1, !tbaa !90
  br label %452

425:                                              ; preds = %384
  %426 = load i32, ptr %32, align 4, !tbaa !9
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds [4 x ptr], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, i64 0, i64 %427
  %429 = load ptr, ptr %428, align 8, !tbaa !5
  %430 = load i32, ptr %32, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 %431
  %433 = load i8, ptr %19, align 1, !tbaa !90, !range !40, !noundef !41
  %434 = trunc i8 %433 to i1
  %435 = zext i1 %434 to i64
  %436 = select i1 %434, i32 0, i32 255
  %437 = load i32, ptr %31, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE13fmt_table_int, i64 0, i64 %438
  %440 = load i32, ptr %32, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds [4 x ptr], ptr %439, i64 0, i64 %441
  %443 = load ptr, ptr %442, align 8, !tbaa !5
  %444 = call noundef zeroext i1 @_ZN5ImGui7DragIntEPKcPifiiS1_i(ptr noundef %429, ptr noundef %432, float noundef 1.000000e+00, i32 noundef 0, i32 noundef %436, ptr noundef %443, i32 noundef 0)
  %445 = zext i1 %444 to i32
  %446 = load i8, ptr %23, align 1, !tbaa !90, !range !40, !noundef !41
  %447 = trunc i8 %446 to i1
  %448 = zext i1 %447 to i32
  %449 = or i32 %448, %445
  %450 = icmp ne i32 %449, 0
  %451 = zext i1 %450 to i8
  store i8 %451, ptr %23, align 1, !tbaa !90
  br label %452

452:                                              ; preds = %425, %389
  %453 = load i32, ptr %7, align 4, !tbaa !9
  %454 = and i32 %453, 8
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %457, label %456

456:                                              ; preds = %452
  call void @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef @.str.101, i32 noundef 1)
  br label %457

457:                                              ; preds = %456, %452
  br label %458

458:                                              ; preds = %457
  %459 = load i32, ptr %32, align 4, !tbaa !9
  %460 = add nsw i32 %459, 1
  store i32 %460, ptr %32, align 4, !tbaa !9
  br label %362, !llvm.loop !95

461:                                              ; preds = %366
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  br label %548

462:                                              ; preds = %304, %291
  %463 = load i32, ptr %7, align 4, !tbaa !9
  %464 = and i32 %463, 4194304
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %466, label %547

466:                                              ; preds = %462
  %467 = load i32, ptr %7, align 4, !tbaa !9
  %468 = and i32 %467, 32
  %469 = icmp eq i32 %468, 0
  br i1 %469, label %470, label %547

470:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 64, ptr %33) #11
  %471 = load i8, ptr %18, align 1, !tbaa !90, !range !40, !noundef !41
  %472 = trunc i8 %471 to i1
  br i1 %472, label %473, label %488

473:                                              ; preds = %470
  %474 = getelementptr inbounds [64 x i8], ptr %33, i64 0, i64 0
  %475 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 0
  %476 = load i32, ptr %475, align 16, !tbaa !9
  %477 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %476, i32 noundef 0, i32 noundef 255)
  %478 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  %479 = load i32, ptr %478, align 4, !tbaa !9
  %480 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %479, i32 noundef 0, i32 noundef 255)
  %481 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 2
  %482 = load i32, ptr %481, align 8, !tbaa !9
  %483 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %482, i32 noundef 0, i32 noundef 255)
  %484 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 3
  %485 = load i32, ptr %484, align 4, !tbaa !9
  %486 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %485, i32 noundef 0, i32 noundef 255)
  %487 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %474, i64 noundef 64, ptr noundef @.str.102, i32 noundef %477, i32 noundef %480, i32 noundef %483, i32 noundef %486)
  br label %500

488:                                              ; preds = %470
  %489 = getelementptr inbounds [64 x i8], ptr %33, i64 0, i64 0
  %490 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 0
  %491 = load i32, ptr %490, align 16, !tbaa !9
  %492 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %491, i32 noundef 0, i32 noundef 255)
  %493 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  %494 = load i32, ptr %493, align 4, !tbaa !9
  %495 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %494, i32 noundef 0, i32 noundef 255)
  %496 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 2
  %497 = load i32, ptr %496, align 8, !tbaa !9
  %498 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %497, i32 noundef 0, i32 noundef 255)
  %499 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %489, i64 noundef 64, ptr noundef @.str.103, i32 noundef %492, i32 noundef %495, i32 noundef %498)
  br label %500

500:                                              ; preds = %488, %473
  %501 = load float, ptr %15, align 4, !tbaa !42
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %501)
  %502 = getelementptr inbounds [64 x i8], ptr %33, i64 0, i64 0
  %503 = call noundef zeroext i1 @_ZN5ImGui9InputTextEPKcPcmiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef @.str.104, ptr noundef %502, i64 noundef 64, i32 noundef 6, ptr noundef null, ptr noundef null)
  br i1 %503, label %504, label %541

504:                                              ; preds = %500
  store i8 1, ptr %23, align 1, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #11
  %505 = getelementptr inbounds [64 x i8], ptr %33, i64 0, i64 0
  store ptr %505, ptr %34, align 8, !tbaa !5
  br label %506

506:                                              ; preds = %517, %504
  %507 = load ptr, ptr %34, align 8, !tbaa !5
  %508 = load i8, ptr %507, align 1, !tbaa !97
  %509 = sext i8 %508 to i32
  %510 = icmp eq i32 %509, 35
  br i1 %510, label %515, label %511

511:                                              ; preds = %506
  %512 = load ptr, ptr %34, align 8, !tbaa !5
  %513 = load i8, ptr %512, align 1, !tbaa !97
  %514 = call noundef zeroext i1 @_ZL14ImCharIsBlankAc(i8 noundef signext %513)
  br label %515

515:                                              ; preds = %511, %506
  %516 = phi i1 [ true, %506 ], [ %514, %511 ]
  br i1 %516, label %517, label %520

517:                                              ; preds = %515
  %518 = load ptr, ptr %34, align 8, !tbaa !5
  %519 = getelementptr inbounds i8, ptr %518, i32 1
  store ptr %519, ptr %34, align 8, !tbaa !5
  br label %506, !llvm.loop !98

520:                                              ; preds = %515
  %521 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 2
  store i32 0, ptr %521, align 8, !tbaa !9
  %522 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  store i32 0, ptr %522, align 4, !tbaa !9
  %523 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 0
  store i32 0, ptr %523, align 16, !tbaa !9
  %524 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 3
  store i32 255, ptr %524, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #11
  %525 = load i8, ptr %18, align 1, !tbaa !90, !range !40, !noundef !41
  %526 = trunc i8 %525 to i1
  br i1 %526, label %527, label %534

527:                                              ; preds = %520
  %528 = load ptr, ptr %34, align 8, !tbaa !5
  %529 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 0
  %530 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  %531 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 2
  %532 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 3
  %533 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %528, ptr noundef @.str.105, ptr noundef %529, ptr noundef %530, ptr noundef %531, ptr noundef %532) #11
  store i32 %533, ptr %35, align 4, !tbaa !9
  br label %540

534:                                              ; preds = %520
  %535 = load ptr, ptr %34, align 8, !tbaa !5
  %536 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 0
  %537 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  %538 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 2
  %539 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %535, ptr noundef @.str.106, ptr noundef %536, ptr noundef %537, ptr noundef %538) #11
  store i32 %539, ptr %35, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %534, %527
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  br label %541

541:                                              ; preds = %540, %500
  %542 = load i32, ptr %7, align 4, !tbaa !9
  %543 = and i32 %542, 8
  %544 = icmp ne i32 %543, 0
  br i1 %544, label %546, label %545

545:                                              ; preds = %541
  call void @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef @.str.101, i32 noundef 1)
  br label %546

546:                                              ; preds = %545, %541
  call void @llvm.lifetime.end.p0(i64 64, ptr %33) #11
  br label %547

547:                                              ; preds = %546, %466, %462
  br label %548

548:                                              ; preds = %547, %461
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #11
  store ptr null, ptr %36, align 8, !tbaa !5
  %549 = load i32, ptr %7, align 4, !tbaa !9
  %550 = and i32 %549, 16
  %551 = icmp ne i32 %550, 0
  br i1 %551, label %658, label %552

552:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #11
  %553 = load i32, ptr %7, align 4, !tbaa !9
  %554 = and i32 %553, 32
  %555 = icmp ne i32 %554, 0
  br i1 %555, label %561, label %556

556:                                              ; preds = %552
  %557 = load ptr, ptr %11, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.ImGuiStyle, ptr %557, i32 0, i32 29
  %559 = load i32, ptr %558, align 4, !tbaa !92
  %560 = icmp eq i32 %559, 0
  br i1 %560, label %561, label %562

561:                                              ; preds = %556, %552
  br label %569

562:                                              ; preds = %556
  %563 = load float, ptr %15, align 4, !tbaa !42
  %564 = load ptr, ptr %11, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.ImGuiStyle, ptr %564, i32 0, i32 16
  %566 = getelementptr inbounds %struct.ImVec2, ptr %565, i32 0, i32 0
  %567 = load float, ptr %566, align 4, !tbaa !43
  %568 = fadd float %563, %567
  br label %569

569:                                              ; preds = %562, %561
  %570 = phi float [ 0.000000e+00, %561 ], [ %568, %562 ]
  store float %570, ptr %37, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  %571 = getelementptr inbounds %struct.ImVec2, ptr %25, i32 0, i32 0
  %572 = load float, ptr %571, align 4, !tbaa !93
  %573 = load float, ptr %37, align 4, !tbaa !42
  %574 = fadd float %572, %573
  %575 = getelementptr inbounds %struct.ImVec2, ptr %25, i32 0, i32 1
  %576 = load float, ptr %575, align 4, !tbaa !99
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef %574, float noundef %576)
  %577 = load ptr, ptr %8, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.ImGuiWindow, ptr %577, i32 0, i32 54
  %579 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %578, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %579, ptr align 4 %38, i64 8, i1 false), !tbaa.struct !91
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #11
  %580 = load ptr, ptr %6, align 8, !tbaa !5
  %581 = getelementptr inbounds float, ptr %580, i64 0
  %582 = load float, ptr %581, align 4, !tbaa !42
  %583 = load ptr, ptr %6, align 8, !tbaa !5
  %584 = getelementptr inbounds float, ptr %583, i64 1
  %585 = load float, ptr %584, align 4, !tbaa !42
  %586 = load ptr, ptr %6, align 8, !tbaa !5
  %587 = getelementptr inbounds float, ptr %586, i64 2
  %588 = load float, ptr %587, align 4, !tbaa !42
  %589 = load i8, ptr %18, align 1, !tbaa !90, !range !40, !noundef !41
  %590 = trunc i8 %589 to i1
  br i1 %590, label %591, label %595

591:                                              ; preds = %569
  %592 = load ptr, ptr %6, align 8, !tbaa !5
  %593 = getelementptr inbounds float, ptr %592, i64 3
  %594 = load float, ptr %593, align 4, !tbaa !42
  br label %596

595:                                              ; preds = %569
  br label %596

596:                                              ; preds = %595, %591
  %597 = phi float [ %594, %591 ], [ 1.000000e+00, %595 ]
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %39, float noundef %582, float noundef %585, float noundef %588, float noundef %597)
  %598 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %599 = load <2 x float>, ptr %40, align 4
  %600 = call noundef zeroext i1 @_ZN5ImGui11ColorButtonEPKcRK6ImVec4i6ImVec2(ptr noundef @.str.107, ptr noundef nonnull align 4 dereferenceable(16) %39, i32 noundef %598, <2 x float> %599)
  br i1 %600, label %601, label %618

601:                                              ; preds = %596
  %602 = load i32, ptr %7, align 4, !tbaa !9
  %603 = and i32 %602, 4
  %604 = icmp ne i32 %603, 0
  br i1 %604, label %617, label %605

605:                                              ; preds = %601
  %606 = load ptr, ptr %10, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.ImGuiContext, ptr %606, i32 0, i32 181
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %607, ptr align 4 %39, i64 16, i1 false), !tbaa.struct !100
  call void @_ZN5ImGui9OpenPopupEPKci(ptr noundef @.str.108, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #11
  %608 = load ptr, ptr %10, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.ImGuiContext, ptr %608, i32 0, i32 71
  %610 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %609, i32 0, i32 3
  %611 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %610)
  store <2 x float> %611, ptr %42, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #11
  %612 = load ptr, ptr %11, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.ImGuiStyle, ptr %612, i32 0, i32 15
  %614 = getelementptr inbounds %struct.ImVec2, ptr %613, i32 0, i32 1
  %615 = load float, ptr %614, align 4, !tbaa !101
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef -1.000000e+00, float noundef %615)
  %616 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef nonnull align 4 dereferenceable(8) %43)
  store <2 x float> %616, ptr %41, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @_ZN5ImGui16SetNextWindowPosERK6ImVec2iS2_(ptr noundef nonnull align 4 dereferenceable(8) %41, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(8) %44)
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  br label %617

617:                                              ; preds = %605, %601
  br label %618

618:                                              ; preds = %617, %596
  %619 = load i32, ptr %7, align 4, !tbaa !9
  %620 = and i32 %619, 8
  %621 = icmp ne i32 %620, 0
  br i1 %621, label %623, label %622

622:                                              ; preds = %618
  call void @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef @.str.101, i32 noundef 1)
  br label %623

623:                                              ; preds = %622, %618
  %624 = call noundef zeroext i1 @_ZN5ImGui10BeginPopupEPKci(ptr noundef @.str.108, i32 noundef 0)
  br i1 %624, label %625, label %657

625:                                              ; preds = %623
  %626 = load ptr, ptr %10, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.ImGuiContext, ptr %626, i32 0, i32 28
  %628 = load ptr, ptr %627, align 8, !tbaa !102
  store ptr %628, ptr %36, align 8, !tbaa !5
  %629 = load ptr, ptr %5, align 8, !tbaa !5
  %630 = load ptr, ptr %16, align 8, !tbaa !5
  %631 = icmp ne ptr %629, %630
  br i1 %631, label %632, label %635

632:                                              ; preds = %625
  %633 = load ptr, ptr %5, align 8, !tbaa !5
  %634 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui6TextExEPKcS1_i(ptr noundef %633, ptr noundef %634, i32 noundef 0)
  call void @_ZN5ImGui7SpacingEv()
  br label %635

635:                                              ; preds = %632, %625
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #11
  store i32 529072130, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #11
  %636 = load i32, ptr %17, align 4, !tbaa !9
  %637 = load i32, ptr %45, align 4, !tbaa !9
  %638 = and i32 %636, %637
  %639 = or i32 %638, 7340032
  %640 = or i32 %639, 128
  %641 = or i32 %640, 262144
  store i32 %641, ptr %46, align 4, !tbaa !9
  %642 = load float, ptr %12, align 4, !tbaa !42
  %643 = fmul float %642, 1.200000e+01
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %643)
  %644 = load ptr, ptr %6, align 8, !tbaa !5
  %645 = load i32, ptr %46, align 4, !tbaa !9
  %646 = load ptr, ptr %10, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.ImGuiContext, ptr %646, i32 0, i32 181
  %648 = getelementptr inbounds %struct.ImVec4, ptr %647, i32 0, i32 0
  %649 = call noundef zeroext i1 @_ZN5ImGui12ColorPicker4EPKcPfiPKf(ptr noundef @.str.109, ptr noundef %644, i32 noundef %645, ptr noundef %648)
  %650 = zext i1 %649 to i32
  %651 = load i8, ptr %23, align 1, !tbaa !90, !range !40, !noundef !41
  %652 = trunc i8 %651 to i1
  %653 = zext i1 %652 to i32
  %654 = or i32 %653, %650
  %655 = icmp ne i32 %654, 0
  %656 = zext i1 %655 to i8
  store i8 %656, ptr %23, align 1, !tbaa !90
  call void @_ZN5ImGui8EndPopupEv()
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  br label %657

657:                                              ; preds = %635, %623
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  br label %658

658:                                              ; preds = %657, %548
  %659 = load ptr, ptr %5, align 8, !tbaa !5
  %660 = load ptr, ptr %16, align 8, !tbaa !5
  %661 = icmp ne ptr %659, %660
  br i1 %661, label %662, label %697

662:                                              ; preds = %658
  %663 = load i32, ptr %7, align 4, !tbaa !9
  %664 = and i32 %663, 128
  %665 = icmp ne i32 %664, 0
  br i1 %665, label %697, label %666

666:                                              ; preds = %662
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #11
  %667 = load i32, ptr %7, align 4, !tbaa !9
  %668 = and i32 %667, 32
  %669 = icmp ne i32 %668, 0
  br i1 %669, label %670, label %672

670:                                              ; preds = %666
  %671 = load float, ptr %14, align 4, !tbaa !42
  br label %679

672:                                              ; preds = %666
  %673 = load float, ptr %13, align 4, !tbaa !42
  %674 = load ptr, ptr %11, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.ImGuiStyle, ptr %674, i32 0, i32 16
  %676 = getelementptr inbounds %struct.ImVec2, ptr %675, i32 0, i32 0
  %677 = load float, ptr %676, align 4, !tbaa !43
  %678 = fadd float %673, %677
  br label %679

679:                                              ; preds = %672, %670
  %680 = phi float [ %671, %670 ], [ %678, %672 ]
  store float %680, ptr %47, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %681 = getelementptr inbounds %struct.ImVec2, ptr %25, i32 0, i32 0
  %682 = load float, ptr %681, align 4, !tbaa !93
  %683 = load float, ptr %47, align 4, !tbaa !42
  %684 = fadd float %682, %683
  %685 = getelementptr inbounds %struct.ImVec2, ptr %25, i32 0, i32 1
  %686 = load float, ptr %685, align 4, !tbaa !99
  %687 = load ptr, ptr %11, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.ImGuiStyle, ptr %687, i32 0, i32 12
  %689 = getelementptr inbounds %struct.ImVec2, ptr %688, i32 0, i32 1
  %690 = load float, ptr %689, align 4, !tbaa !103
  %691 = fadd float %686, %690
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %48, float noundef %684, float noundef %691)
  %692 = load ptr, ptr %8, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.ImGuiWindow, ptr %692, i32 0, i32 54
  %694 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %693, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %694, ptr align 4 %48, i64 8, i1 false), !tbaa.struct !91
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  %695 = load ptr, ptr %5, align 8, !tbaa !5
  %696 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui6TextExEPKcS1_i(ptr noundef %695, ptr noundef %696, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  br label %697

697:                                              ; preds = %679, %662, %658
  %698 = load i8, ptr %23, align 1, !tbaa !90, !range !40, !noundef !41
  %699 = trunc i8 %698 to i1
  br i1 %699, label %700, label %799

700:                                              ; preds = %697
  %701 = load ptr, ptr %36, align 8, !tbaa !5
  %702 = icmp eq ptr %701, null
  br i1 %702, label %703, label %799

703:                                              ; preds = %700
  %704 = load i8, ptr %24, align 1, !tbaa !90, !range !40, !noundef !41
  %705 = trunc i8 %704 to i1
  br i1 %705, label %725, label %706

706:                                              ; preds = %703
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #11
  store i32 0, ptr %49, align 4, !tbaa !9
  br label %707

707:                                              ; preds = %721, %706
  %708 = load i32, ptr %49, align 4, !tbaa !9
  %709 = icmp slt i32 %708, 4
  br i1 %709, label %711, label %710

710:                                              ; preds = %707
  store i32 7, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  br label %724

711:                                              ; preds = %707
  %712 = load i32, ptr %49, align 4, !tbaa !9
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 %713
  %715 = load i32, ptr %714, align 4, !tbaa !9
  %716 = sitofp i32 %715 to float
  %717 = fdiv float %716, 2.550000e+02
  %718 = load i32, ptr %49, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 %719
  store float %717, ptr %720, align 4, !tbaa !42
  br label %721

721:                                              ; preds = %711
  %722 = load i32, ptr %49, align 4, !tbaa !9
  %723 = add nsw i32 %722, 1
  store i32 %723, ptr %49, align 4, !tbaa !9
  br label %707, !llvm.loop !104

724:                                              ; preds = %710
  br label %725

725:                                              ; preds = %724, %703
  %726 = load i32, ptr %7, align 4, !tbaa !9
  %727 = and i32 %726, 2097152
  %728 = icmp ne i32 %727, 0
  br i1 %728, label %729, label %760

729:                                              ; preds = %725
  %730 = load i32, ptr %7, align 4, !tbaa !9
  %731 = and i32 %730, 134217728
  %732 = icmp ne i32 %731, 0
  br i1 %732, label %733, label %760

733:                                              ; preds = %729
  %734 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %735 = load float, ptr %734, align 16, !tbaa !42
  %736 = load ptr, ptr %10, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ImGuiContext, ptr %736, i32 0, i32 178
  store float %735, ptr %737, align 8, !tbaa !105
  %738 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %739 = load float, ptr %738, align 4, !tbaa !42
  %740 = load ptr, ptr %10, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.ImGuiContext, ptr %740, i32 0, i32 179
  store float %739, ptr %741, align 4, !tbaa !106
  %742 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %743 = load float, ptr %742, align 16, !tbaa !42
  %744 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %745 = load float, ptr %744, align 4, !tbaa !42
  %746 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %747 = load float, ptr %746, align 8, !tbaa !42
  %748 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %749 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %750 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  call void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef %743, float noundef %745, float noundef %747, ptr noundef nonnull align 4 dereferenceable(4) %748, ptr noundef nonnull align 4 dereferenceable(4) %749, ptr noundef nonnull align 4 dereferenceable(4) %750)
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #11
  %751 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %752 = load float, ptr %751, align 16, !tbaa !42
  %753 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %754 = load float, ptr %753, align 4, !tbaa !42
  %755 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %756 = load float, ptr %755, align 8, !tbaa !42
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %50, float noundef %752, float noundef %754, float noundef %756, float noundef 0.000000e+00)
  %757 = call noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %50)
  %758 = load ptr, ptr %10, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.ImGuiContext, ptr %758, i32 0, i32 180
  store i32 %757, ptr %759, align 8, !tbaa !107
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #11
  br label %760

760:                                              ; preds = %733, %729, %725
  %761 = load i32, ptr %7, align 4, !tbaa !9
  %762 = and i32 %761, 1048576
  %763 = icmp ne i32 %762, 0
  br i1 %763, label %764, label %778

764:                                              ; preds = %760
  %765 = load i32, ptr %7, align 4, !tbaa !9
  %766 = and i32 %765, 268435456
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %778

768:                                              ; preds = %764
  %769 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %770 = load float, ptr %769, align 16, !tbaa !42
  %771 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %772 = load float, ptr %771, align 4, !tbaa !42
  %773 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %774 = load float, ptr %773, align 8, !tbaa !42
  %775 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %776 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %777 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %770, float noundef %772, float noundef %774, ptr noundef nonnull align 4 dereferenceable(4) %775, ptr noundef nonnull align 4 dereferenceable(4) %776, ptr noundef nonnull align 4 dereferenceable(4) %777)
  br label %778

778:                                              ; preds = %768, %764, %760
  %779 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %780 = load float, ptr %779, align 16, !tbaa !42
  %781 = load ptr, ptr %6, align 8, !tbaa !5
  %782 = getelementptr inbounds float, ptr %781, i64 0
  store float %780, ptr %782, align 4, !tbaa !42
  %783 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %784 = load float, ptr %783, align 4, !tbaa !42
  %785 = load ptr, ptr %6, align 8, !tbaa !5
  %786 = getelementptr inbounds float, ptr %785, i64 1
  store float %784, ptr %786, align 4, !tbaa !42
  %787 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %788 = load float, ptr %787, align 8, !tbaa !42
  %789 = load ptr, ptr %6, align 8, !tbaa !5
  %790 = getelementptr inbounds float, ptr %789, i64 2
  store float %788, ptr %790, align 4, !tbaa !42
  %791 = load i8, ptr %18, align 1, !tbaa !90, !range !40, !noundef !41
  %792 = trunc i8 %791 to i1
  br i1 %792, label %793, label %798

793:                                              ; preds = %778
  %794 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 3
  %795 = load float, ptr %794, align 4, !tbaa !42
  %796 = load ptr, ptr %6, align 8, !tbaa !5
  %797 = getelementptr inbounds float, ptr %796, i64 3
  store float %795, ptr %797, align 4, !tbaa !42
  br label %798

798:                                              ; preds = %793, %778
  br label %799

799:                                              ; preds = %798, %700, %697
  call void @_ZN5ImGui5PopIDEv()
  call void @_ZN5ImGui8EndGroupEv()
  %800 = load ptr, ptr %10, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.ImGuiContext, ptr %800, i32 0, i32 71
  %802 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %801, i32 0, i32 2
  %803 = load i32, ptr %802, align 8, !tbaa !108
  %804 = and i32 %803, 1
  %805 = icmp ne i32 %804, 0
  br i1 %805, label %806, label %857

806:                                              ; preds = %799
  %807 = load i32, ptr %7, align 4, !tbaa !9
  %808 = and i32 %807, 512
  %809 = icmp ne i32 %808, 0
  br i1 %809, label %857, label %810

810:                                              ; preds = %806
  %811 = call noundef zeroext i1 @_ZN5ImGui19BeginDragDropTargetEv()
  br i1 %811, label %812, label %857

812:                                              ; preds = %810
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #11
  store i8 0, ptr %51, align 1, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #11
  %813 = call noundef ptr @_ZN5ImGui21AcceptDragDropPayloadEPKci(ptr noundef @.str.110, i32 noundef 0)
  store ptr %813, ptr %52, align 8, !tbaa !5
  %814 = load ptr, ptr %52, align 8, !tbaa !5
  %815 = icmp ne ptr %814, null
  br i1 %815, label %816, label %821

816:                                              ; preds = %812
  %817 = load ptr, ptr %6, align 8, !tbaa !5
  %818 = load ptr, ptr %52, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.ImGuiPayload, ptr %818, i32 0, i32 0
  %820 = load ptr, ptr %819, align 8, !tbaa !109
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %817, ptr align 1 %820, i64 12, i1 false)
  store i8 1, ptr %51, align 1, !tbaa !90
  store i8 1, ptr %23, align 1, !tbaa !90
  br label %821

821:                                              ; preds = %816, %812
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #11
  %822 = call noundef ptr @_ZN5ImGui21AcceptDragDropPayloadEPKci(ptr noundef @.str.111, i32 noundef 0)
  store ptr %822, ptr %53, align 8, !tbaa !5
  %823 = load ptr, ptr %53, align 8, !tbaa !5
  %824 = icmp ne ptr %823, null
  br i1 %824, label %825, label %833

825:                                              ; preds = %821
  %826 = load ptr, ptr %6, align 8, !tbaa !5
  %827 = load ptr, ptr %53, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.ImGuiPayload, ptr %827, i32 0, i32 0
  %829 = load ptr, ptr %828, align 8, !tbaa !109
  %830 = load i32, ptr %20, align 4, !tbaa !9
  %831 = sext i32 %830 to i64
  %832 = mul i64 4, %831
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %826, ptr align 1 %829, i64 %832, i1 false)
  store i8 1, ptr %51, align 1, !tbaa !90
  store i8 1, ptr %23, align 1, !tbaa !90
  br label %833

833:                                              ; preds = %825, %821
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #11
  %834 = load i8, ptr %51, align 1, !tbaa !90, !range !40, !noundef !41
  %835 = trunc i8 %834 to i1
  br i1 %835, label %836, label %856

836:                                              ; preds = %833
  %837 = load i32, ptr %7, align 4, !tbaa !9
  %838 = and i32 %837, 268435456
  %839 = icmp ne i32 %838, 0
  br i1 %839, label %840, label %856

840:                                              ; preds = %836
  %841 = load ptr, ptr %6, align 8, !tbaa !5
  %842 = getelementptr inbounds float, ptr %841, i64 0
  %843 = load float, ptr %842, align 4, !tbaa !42
  %844 = load ptr, ptr %6, align 8, !tbaa !5
  %845 = getelementptr inbounds float, ptr %844, i64 1
  %846 = load float, ptr %845, align 4, !tbaa !42
  %847 = load ptr, ptr %6, align 8, !tbaa !5
  %848 = getelementptr inbounds float, ptr %847, i64 2
  %849 = load float, ptr %848, align 4, !tbaa !42
  %850 = load ptr, ptr %6, align 8, !tbaa !5
  %851 = getelementptr inbounds float, ptr %850, i64 0
  %852 = load ptr, ptr %6, align 8, !tbaa !5
  %853 = getelementptr inbounds float, ptr %852, i64 1
  %854 = load ptr, ptr %6, align 8, !tbaa !5
  %855 = getelementptr inbounds float, ptr %854, i64 2
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %843, float noundef %846, float noundef %849, ptr noundef nonnull align 4 dereferenceable(4) %851, ptr noundef nonnull align 4 dereferenceable(4) %853, ptr noundef nonnull align 4 dereferenceable(4) %855)
  br label %856

856:                                              ; preds = %840, %836, %833
  call void @_ZN5ImGui17EndDragDropTargetEv()
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #11
  br label %857

857:                                              ; preds = %856, %810, %806, %799
  %858 = load ptr, ptr %36, align 8, !tbaa !5
  %859 = icmp ne ptr %858, null
  br i1 %859, label %860, label %878

860:                                              ; preds = %857
  %861 = load ptr, ptr %10, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.ImGuiContext, ptr %861, i32 0, i32 44
  %863 = load i32, ptr %862, align 4, !tbaa !110
  %864 = icmp ne i32 %863, 0
  br i1 %864, label %865, label %878

865:                                              ; preds = %860
  %866 = load ptr, ptr %10, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.ImGuiContext, ptr %866, i32 0, i32 59
  %868 = load ptr, ptr %867, align 8, !tbaa !111
  %869 = load ptr, ptr %36, align 8, !tbaa !5
  %870 = icmp eq ptr %868, %869
  br i1 %870, label %871, label %878

871:                                              ; preds = %865
  %872 = load ptr, ptr %10, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.ImGuiContext, ptr %872, i32 0, i32 44
  %874 = load i32, ptr %873, align 4, !tbaa !110
  %875 = load ptr, ptr %10, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.ImGuiContext, ptr %875, i32 0, i32 71
  %877 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %876, i32 0, i32 0
  store i32 %874, ptr %877, align 8, !tbaa !112
  br label %878

878:                                              ; preds = %871, %865, %860, %857
  %879 = load i8, ptr %23, align 1, !tbaa !90, !range !40, !noundef !41
  %880 = trunc i8 %879 to i1
  br i1 %880, label %881, label %886

881:                                              ; preds = %878
  %882 = load ptr, ptr %10, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.ImGuiContext, ptr %882, i32 0, i32 71
  %884 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %883, i32 0, i32 0
  %885 = load i32, ptr %884, align 8, !tbaa !112
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %885)
  br label %886

886:                                              ; preds = %881, %878
  %887 = load i8, ptr %23, align 1, !tbaa !90, !range !40, !noundef !41
  %888 = trunc i8 %887 to i1
  store i1 %888, ptr %4, align 1
  store i32 1, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #11
  br label %889

889:                                              ; preds = %886, %59
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  %890 = load i1, ptr %4, align 1
  ret i1 %890
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN17ImGuiNextItemData10ClearFlagsEv(ptr noundef nonnull align 4 dereferenceable(17)) #2 align 2

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

declare void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef, float noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #5

declare void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef, float noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #5

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL18ColorEditRestoreHSPKfPfS1_S1_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #9

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui11ColorButtonEPKcRK6ImVec4i6ImVec2(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, <2 x float>) #0

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

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

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

declare noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16)) #5

declare noundef zeroext i1 @_ZN5ImGui19BeginDragDropTargetEv() #5

declare noundef ptr @_ZN5ImGui21AcceptDragDropPayloadEPKci(ptr noundef, i32 noundef) #5

declare void @_ZN5ImGui17EndDragDropTargetEv() #5

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { nounwind }
attributes #12 = { 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !15, i64 147}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !14, i64 72, !14, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !13, i64 92, !13, i64 100, !13, i64 108, !13, i64 116, !13, i64 124, !13, i64 132, !15, i64 140, !15, i64 141, !15, i64 142, !15, i64 143, !15, i64 144, !15, i64 145, !15, i64 146, !15, i64 147, !15, i64 148, !15, i64 149, !15, i64 150, !15, i64 151, !15, i64 152, !7, i64 153, !16, i64 154, !16, i64 156, !16, i64 158, !16, i64 160, !10, i64 164, !7, i64 168, !7, i64 169, !7, i64 170, !15, i64 171, !10, i64 172, !7, i64 176, !7, i64 177, !7, i64 178, !7, i64 179, !10, i64 180, !10, i64 181, !10, i64 182, !13, i64 184, !13, i64 192, !17, i64 200, !18, i64 216, !24, i64 448, !24, i64 464, !24, i64 480, !24, i64 496, !24, i64 512, !24, i64 528, !24, i64 544, !25, i64 560, !25, i64 564, !10, i64 568, !14, i64 572, !14, i64 576, !26, i64 584, !28, i64 600, !14, i64 616, !10, i64 620, !6, i64 624, !29, i64 632, !6, i64 832, !6, i64 840, !6, i64 848, !6, i64 856, !6, i64 864, !6, i64 872, !6, i64 880, !7, i64 888, !7, i64 896, !10, i64 928, !10, i64 932, !15, i64 936}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!18 = !{!"_ZTS19ImGuiWindowTempData", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !14, i64 56, !14, i64 60, !19, i64 64, !19, i64 68, !19, i64 72, !13, i64 76, !20, i64 84, !16, i64 88, !16, i64 90, !10, i64 92, !15, i64 96, !15, i64 97, !15, i64 98, !13, i64 100, !21, i64 108, !10, i64 136, !10, i64 140, !22, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !14, i64 188, !14, i64 192, !23, i64 200, !23, i64 216}
!19 = !{!"_ZTS6ImVec1", !14, i64 0}
!20 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!21 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !16, i64 8, !16, i64 10, !16, i64 12, !16, i64 14, !16, i64 16, !7, i64 18}
!22 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!25 = !{!"_ZTS8ImVec2ih", !16, i64 0, !16, i64 2}
!26 = !{!"_ZTS12ImGuiStorage", !27, i64 0}
!27 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS10ImDrawList", !30, i64 0, !31, i64 16, !32, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !33, i64 88, !34, i64 104, !35, i64 120, !36, i64 136, !38, i64 168, !14, i64 192}
!30 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS15ImDrawCmdHeader", !37, i64 0, !6, i64 16, !10, i64 24}
!37 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!38 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !39, i64 8}
!39 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!14, !14, i64 0}
!43 = !{!44, !14, i64 84}
!44 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !14, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !13, i64 24, !13, i64 32, !10, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !13, i64 60, !14, i64 68, !14, i64 72, !13, i64 76, !13, i64 84, !13, i64 92, !13, i64 100, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !14, i64 132, !14, i64 136, !14, i64 140, !14, i64 144, !10, i64 148, !13, i64 152, !13, i64 160, !13, i64 168, !13, i64 176, !14, i64 184, !15, i64 188, !15, i64 189, !15, i64 190, !14, i64 192, !14, i64 196, !7, i64 200}
!45 = !{!46, !10, i64 12332}
!46 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !47, i64 8, !44, i64 5488, !6, i64 6536, !14, i64 6544, !14, i64 6548, !48, i64 6552, !49, i64 7064, !10, i64 7072, !10, i64 7076, !10, i64 7080, !15, i64 7084, !15, i64 7085, !15, i64 7086, !15, i64 7087, !15, i64 7088, !6, i64 7096, !22, i64 7104, !22, i64 7120, !22, i64 7136, !50, i64 7152, !26, i64 7168, !10, i64 7184, !13, i64 7188, !6, i64 7200, !6, i64 7208, !6, i64 7216, !6, i64 7224, !6, i64 7232, !13, i64 7240, !14, i64 7248, !10, i64 7252, !10, i64 7256, !10, i64 7260, !15, i64 7264, !15, i64 7265, !15, i64 7266, !15, i64 7267, !14, i64 7268, !14, i64 7272, !10, i64 7276, !10, i64 7280, !14, i64 7284, !15, i64 7288, !15, i64 7289, !15, i64 7290, !15, i64 7291, !15, i64 7292, !15, i64 7293, !15, i64 7294, !10, i64 7296, !10, i64 7300, !51, i64 7304, !13, i64 7312, !6, i64 7320, !52, i64 7328, !10, i64 7332, !10, i64 7336, !15, i64 7340, !15, i64 7341, !6, i64 7344, !10, i64 7352, !14, i64 7356, !10, i64 7360, !53, i64 7364, !54, i64 7384, !55, i64 7448, !56, i64 7560, !57, i64 7576, !58, i64 7592, !17, i64 7608, !59, i64 7624, !60, i64 7640, !61, i64 7656, !61, i64 7672, !10, i64 7688, !62, i64 7696, !6, i64 7712, !10, i64 7720, !10, i64 7724, !10, i64 7728, !10, i64 7732, !10, i64 7736, !10, i64 7740, !10, i64 7744, !10, i64 7748, !10, i64 7752, !10, i64 7756, !10, i64 7760, !10, i64 7764, !52, i64 7768, !20, i64 7772, !15, i64 7776, !15, i64 7777, !15, i64 7778, !15, i64 7779, !15, i64 7780, !15, i64 7781, !15, i64 7782, !10, i64 7784, !24, i64 7788, !15, i64 7804, !15, i64 7805, !15, i64 7806, !10, i64 7808, !10, i64 7812, !10, i64 7816, !10, i64 7820, !10, i64 7824, !10, i64 7828, !24, i64 7832, !24, i64 7848, !10, i64 7864, !10, i64 7868, !10, i64 7872, !63, i64 7880, !63, i64 7928, !63, i64 7976, !63, i64 8024, !6, i64 8072, !6, i64 8080, !6, i64 8088, !14, i64 8096, !14, i64 8100, !15, i64 8104, !14, i64 8108, !10, i64 8112, !15, i64 8116, !15, i64 8117, !15, i64 8118, !10, i64 8120, !10, i64 8124, !10, i64 8128, !64, i64 8136, !24, i64 8200, !10, i64 8216, !10, i64 8220, !14, i64 8224, !10, i64 8228, !10, i64 8232, !10, i64 8236, !10, i64 8240, !65, i64 8248, !7, i64 8264, !10, i64 8280, !66, i64 8288, !6, i64 8304, !10, i64 8312, !67, i64 8320, !68, i64 8336, !23, i64 8376, !39, i64 8392, !6, i64 8408, !70, i64 8416, !72, i64 8456, !73, i64 8472, !13, i64 8488, !74, i64 8496, !78, i64 12216, !10, i64 12328, !10, i64 12332, !14, i64 12336, !14, i64 12340, !10, i64 12344, !37, i64 12348, !80, i64 12364, !14, i64 12412, !15, i64 12416, !15, i64 12417, !14, i64 12420, !14, i64 12424, !14, i64 12428, !14, i64 12432, !16, i64 12436, !16, i64 12438, !14, i64 12440, !75, i64 12448, !17, i64 12464, !13, i64 12480, !13, i64 12488, !7, i64 12496, !15, i64 12497, !14, i64 12500, !81, i64 12504, !82, i64 12520, !83, i64 12536, !84, i64 12552, !85, i64 12568, !10, i64 12584, !15, i64 12588, !86, i64 12592, !6, i64 12600, !81, i64 12608, !6, i64 12624, !6, i64 12632, !14, i64 12640, !15, i64 12644, !10, i64 12648, !10, i64 12652, !10, i64 12656, !15, i64 12660, !10, i64 12664, !87, i64 12668, !88, i64 12688, !7, i64 12720, !10, i64 13200, !10, i64 13204, !14, i64 13208, !10, i64 13212, !10, i64 13216, !10, i64 13220, !7, i64 13224}
!47 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !6, i64 24, !6, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !7, i64 52, !14, i64 140, !14, i64 144, !6, i64 152, !6, i64 160, !14, i64 168, !15, i64 172, !6, i64 176, !13, i64 184, !15, i64 192, !15, i64 193, !15, i64 194, !15, i64 195, !15, i64 196, !15, i64 197, !14, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !13, i64 288, !7, i64 296, !14, i64 304, !14, i64 308, !15, i64 312, !15, i64 313, !15, i64 314, !15, i64 315, !7, i64 316, !7, i64 828, !15, i64 908, !15, i64 909, !15, i64 910, !15, i64 911, !15, i64 912, !15, i64 913, !15, i64 914, !14, i64 916, !10, i64 920, !10, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !13, i64 940, !15, i64 948, !10, i64 952, !10, i64 956, !13, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1068, !7, i64 1078, !7, i64 1083, !7, i64 1088, !7, i64 1096, !7, i64 1116, !7, i64 1136, !7, i64 1176, !7, i64 1196, !7, i64 3244, !7, i64 5292, !7, i64 5372, !14, i64 5452, !15, i64 5456, !16, i64 5458, !31, i64 5464}
!48 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !37, i64 28, !10, i64 44, !7, i64 48, !14, i64 432, !7, i64 436, !6, i64 504}
!49 = !{!"double", !7, i64 0}
!50 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!51 = !{!"long long", !7, i64 0}
!52 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!53 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !14, i64 4, !10, i64 8, !10, i64 12, !15, i64 16}
!54 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !24, i64 12, !24, i64 28, !24, i64 44}
!55 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !15, i64 56, !24, i64 60, !6, i64 80, !6, i64 88, !14, i64 96, !13, i64 100}
!56 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !24, i64 16, !10, i64 32, !14, i64 36, !14, i64 40, !14, i64 44}
!64 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !15, i64 57, !15, i64 58}
!65 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS6ImPoolI10ImGuiTableE", !69, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!69 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !71, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!71 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !31, i64 16, !75, i64 32, !75, i64 48, !15, i64 64, !10, i64 68, !14, i64 72, !76, i64 76, !14, i64 3704, !15, i64 3708, !15, i64 3709, !15, i64 3710, !10, i64 3712}
!75 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !14, i64 28, !77, i64 32}
!77 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !10, i64 3588, !10, i64 3592}
!78 = !{!"_ZTS6ImFont", !23, i64 0, !14, i64 16, !14, i64 20, !31, i64 24, !79, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !16, i64 80, !16, i64 82, !16, i64 84, !16, i64 86, !15, i64 88, !14, i64 92, !14, i64 96, !14, i64 100, !10, i64 104, !7, i64 108}
!79 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!"_ZTS21ImGuiComboPreviewData", !24, i64 0, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44}
!81 = !{!"_ZTS15ImGuiTextBuffer", !75, i64 0}
!82 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !75, i64 0}
!84 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !75, i64 0}
!85 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!86 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!87 = !{!"_ZTS18ImGuiMetricsConfig", !15, i64 0, !15, i64 1, !15, i64 2, !15, i64 3, !15, i64 4, !15, i64 5, !10, i64 8, !10, i64 12}
!88 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !89, i64 16}
!89 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!90 = !{!15, !15, i64 0}
!91 = !{i64 0, i64 4, !42, i64 4, i64 4, !42}
!92 = !{!44, !10, i64 148}
!93 = !{!13, !14, i64 0}
!94 = !{!12, !14, i64 216}
!95 = distinct !{!95, !96}
!96 = !{!"llvm.loop.mustprogress"}
!97 = !{!7, !7, i64 0}
!98 = distinct !{!98, !96}
!99 = !{!13, !14, i64 4}
!100 = !{i64 0, i64 4, !42, i64 4, i64 4, !42, i64 8, i64 4, !42, i64 12, i64 4, !42}
!101 = !{!44, !14, i64 80}
!102 = !{!46, !6, i64 7200}
!103 = !{!44, !14, i64 64}
!104 = distinct !{!104, !96}
!105 = !{!46, !14, i64 12336}
!106 = !{!46, !14, i64 12340}
!107 = !{!46, !10, i64 12344}
!108 = !{!46, !10, i64 7392}
!109 = !{!64, !6, i64 0}
!110 = !{!46, !10, i64 7276}
!111 = !{!46, !6, i64 7320}
!112 = !{!46, !10, i64 7384}


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

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

@GImGui = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [57 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi = external hidden unnamed_addr constant [67 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [6 x i8], align 1
@_ZZN5ImGui10ColorEdit4EPKcPfiE3ids = external hidden local_unnamed_addr global [4 x ptr], align 16
@_ZZN5ImGui10ColorEdit4EPKcPfiE13fmt_table_int = external hidden local_unnamed_addr global [3 x [4 x ptr]], align 16
@_ZZN5ImGui10ColorEdit4EPKcPfiE15fmt_table_float = external hidden local_unnamed_addr global [3 x [4 x ptr]], align 16
@.str.101 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [7 x i8], align 1

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

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

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

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

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

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

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

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

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

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

declare noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #5

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

declare noundef float @_ZN5ImGui14GetFrameHeightEv() local_unnamed_addr #5

declare void @_ZN5ImGui5PopIDEv() local_unnamed_addr #5

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) local_unnamed_addr #5

declare noundef i32 @_Z14ImFormatStringPcmPKcz(ptr noundef, i64 noundef, ptr noundef, ...) local_unnamed_addr #5

declare void @_ZN5ImGui8SameLineEff(float noundef, float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui7SpacingEv() local_unnamed_addr #9

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL14ImIsPowerOfTwoi(i32 noundef) local_unnamed_addr #2

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

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

declare void @_ZN5ImGui8EndPopupEv() local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL14ImCharIsBlankAc(i8 noundef signext) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @__isoc99_sscanf(ptr nocapture noundef readonly, ptr nocapture noundef readonly, ...) local_unnamed_addr #10

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @_ZN5ImGui10BeginGroupEv() local_unnamed_addr #5

declare void @_ZN5ImGui6PushIDEPKc(ptr noundef) local_unnamed_addr #5

declare noundef ptr @_ZN5ImGui19FindRenderedTextEndEPKcS1_(ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @_ZN5ImGui8EndGroupEv() local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui9DragFloatEPKcPffffS1_i(ptr noundef, ptr noundef, float noundef, float noundef, float noundef, ptr noundef, i32 noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui7DragIntEPKcPifiiS1_i(ptr noundef, ptr noundef, float noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #9

declare void @_ZN5ImGui16SetNextItemWidthEf(float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui9InputTextEPKcPcmiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef, ptr noundef, i64 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #9

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #0 {
  %4 = alloca [4 x float], align 16
  %5 = alloca [4 x i32], align 16
  %6 = alloca [64 x i8], align 16
  %7 = alloca %struct.ImVec2, align 8
  %8 = alloca %struct.ImVec4, align 4
  %9 = alloca %struct.ImVec2, align 8
  %10 = alloca %struct.ImVec2, align 8
  %11 = alloca %struct.ImVec2, align 8
  %12 = alloca %struct.ImVec2, align 4
  %13 = alloca %struct.ImVec2, align 4
  %14 = alloca %struct.ImVec2, align 8
  %15 = alloca %struct.ImVec4, align 4
  %16 = tail call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %17 = getelementptr inbounds i8, ptr %16, i64 147
  %18 = load i8, ptr %17, align 1, !tbaa !5, !range !38, !noundef !39
  %19 = trunc nuw i8 %18 to i1
  br i1 %19, label %358, label %20

20:                                               ; preds = %3
  %21 = load ptr, ptr @GImGui, align 8, !tbaa !40
  %22 = tail call noundef float @_ZN5ImGui14GetFrameHeightEv()
  %23 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  %24 = and i32 %2, 16
  %.not = icmp eq i32 %24, 0
  br i1 %.not, label %25, label %29

25:                                               ; preds = %20
  %26 = getelementptr inbounds i8, ptr %21, i64 5572
  %27 = load float, ptr %26, align 4, !tbaa !41
  %28 = fadd float %22, %27
  br label %29

29:                                               ; preds = %20, %25
  %30 = phi float [ %28, %25 ], [ 0.000000e+00, %20 ]
  %31 = fsub float %23, %30
  %32 = tail call noundef ptr @_ZN5ImGui19FindRenderedTextEndEPKcS1_(ptr noundef %0, ptr noundef null)
  %33 = getelementptr inbounds i8, ptr %21, i64 7364
  tail call void @_ZN17ImGuiNextItemData10ClearFlagsEv(ptr noundef nonnull align 4 dereferenceable(17) %33)
  tail call void @_ZN5ImGui10BeginGroupEv()
  tail call void @_ZN5ImGui6PushIDEPKc(ptr noundef %0)
  %34 = and i32 %2, 32
  %.not216 = icmp eq i32 %34, 0
  %35 = and i32 %2, -7340041
  %36 = or disjoint i32 %35, 1048584
  %.0192 = select i1 %.not216, i32 %2, i32 %36
  %37 = and i32 %.0192, 8
  %.not217 = icmp eq i32 %37, 0
  br i1 %.not217, label %38, label %39

38:                                               ; preds = %29
  tail call void @_ZN5ImGui21ColorEditOptionsPopupEPKfi(ptr noundef %1, i32 noundef %.0192)
  br label %39

39:                                               ; preds = %38, %29
  %40 = and i32 %.0192, 7340032
  %.not218 = icmp eq i32 %40, 0
  br i1 %.not218, label %41, label %46

41:                                               ; preds = %39
  %42 = getelementptr inbounds i8, ptr %21, i64 12332
  %43 = load i32, ptr %42, align 4, !tbaa !43
  %44 = and i32 %43, 7340032
  %45 = or disjoint i32 %44, %.0192
  br label %46

46:                                               ; preds = %41, %39
  %.1 = phi i32 [ %.0192, %39 ], [ %45, %41 ]
  %47 = and i32 %.1, 25165824
  %.not219 = icmp eq i32 %47, 0
  br i1 %.not219, label %48, label %53

48:                                               ; preds = %46
  %49 = getelementptr inbounds i8, ptr %21, i64 12332
  %50 = load i32, ptr %49, align 4, !tbaa !43
  %51 = and i32 %50, 25165824
  %52 = or disjoint i32 %51, %.1
  br label %53

53:                                               ; preds = %48, %46
  %.2 = phi i32 [ %.1, %46 ], [ %52, %48 ]
  %54 = and i32 %.2, 100663296
  %.not220 = icmp eq i32 %54, 0
  br i1 %.not220, label %55, label %._crit_edge

55:                                               ; preds = %53
  %56 = getelementptr inbounds i8, ptr %21, i64 12332
  %57 = load i32, ptr %56, align 4, !tbaa !43
  %58 = and i32 %57, 100663296
  %59 = or disjoint i32 %58, %.2
  br label %._crit_edge

._crit_edge:                                      ; preds = %55, %53
  %.3 = phi i32 [ %.2, %53 ], [ %59, %55 ]
  %60 = and i32 %.3, 402653184
  %.not221 = icmp eq i32 %60, 0
  %61 = getelementptr inbounds i8, ptr %21, i64 12332
  %62 = load i32, ptr %61, align 4, !tbaa !43
  %63 = and i32 %62, 402653184
  %64 = select i1 %.not221, i32 %63, i32 0
  %.4 = or disjoint i32 %.3, %64
  %.4.fr = freeze i32 %.4
  %65 = and i32 %62, -535822337
  %66 = or i32 %65, %.4.fr
  %67 = and i32 %.4.fr, 7340032
  %68 = tail call noundef zeroext i1 @_ZL14ImIsPowerOfTwoi(i32 noundef %67)
  br i1 %68, label %70, label %69

69:                                               ; preds = %._crit_edge
  tail call void @__assert_fail(ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.2, i32 noundef 4911, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi) #12
  unreachable

70:                                               ; preds = %._crit_edge
  %71 = and i32 %.4.fr, 402653184
  %72 = tail call noundef zeroext i1 @_ZL14ImIsPowerOfTwoi(i32 noundef %71)
  br i1 %72, label %74, label %73

73:                                               ; preds = %70
  tail call void @__assert_fail(ptr noundef nonnull @.str.78, ptr noundef nonnull @.str.2, i32 noundef 4912, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi) #12
  unreachable

74:                                               ; preds = %70
  %75 = and i32 %66, 2
  %76 = icmp eq i32 %75, 0
  %77 = and i32 %66, 524288
  %.not222 = icmp eq i32 %77, 0
  %78 = select i1 %76, i32 4, i32 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #13
  %79 = getelementptr inbounds i8, ptr %4, i64 4
  %80 = getelementptr inbounds i8, ptr %1, i64 4
  %81 = load <2 x float>, ptr %1, align 4, !tbaa !88
  store <2 x float> %81, ptr %4, align 16, !tbaa !88
  %82 = getelementptr inbounds i8, ptr %4, i64 8
  %83 = getelementptr inbounds i8, ptr %1, i64 8
  %84 = load float, ptr %83, align 4, !tbaa !88
  store float %84, ptr %82, align 8, !tbaa !88
  %85 = getelementptr inbounds i8, ptr %4, i64 12
  br i1 %76, label %86, label %89

86:                                               ; preds = %74
  %87 = getelementptr inbounds i8, ptr %1, i64 12
  %88 = load float, ptr %87, align 4, !tbaa !88
  br label %89

89:                                               ; preds = %74, %86
  %90 = phi float [ %88, %86 ], [ 1.000000e+00, %74 ]
  store float %90, ptr %85, align 4, !tbaa !88
  %91 = and i32 %.4.fr, 268435456
  %.not223 = icmp ne i32 %91, 0
  %92 = and i32 %.4.fr, 269484032
  %or.cond251.not = icmp eq i32 %92, 269484032
  br i1 %or.cond251.not, label %93, label %96

93:                                               ; preds = %89
  %94 = extractelement <2 x float> %81, i64 0
  %95 = extractelement <2 x float> %81, i64 1
  call void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef %94, float noundef %95, float noundef %84, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull align 4 dereferenceable(4) %82)
  br label %101

96:                                               ; preds = %89
  %97 = and i32 %.4.fr, 136314880
  %or.cond252.not = icmp eq i32 %97, 136314880
  br i1 %or.cond252.not, label %98, label %101

98:                                               ; preds = %96
  %99 = extractelement <2 x float> %81, i64 0
  %100 = extractelement <2 x float> %81, i64 1
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %99, float noundef %100, float noundef %84, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull align 4 dereferenceable(4) %82)
  call void @_ZL18ColorEditRestoreHSPKfPfS1_S1_(ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %79, ptr noundef nonnull %82)
  br label %101

101:                                              ; preds = %96, %98, %93
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #13
  %102 = getelementptr inbounds i8, ptr %5, i64 4
  %103 = getelementptr inbounds i8, ptr %5, i64 8
  %104 = getelementptr inbounds i8, ptr %5, i64 12
  %105 = load <4 x float>, ptr %4, align 16, !tbaa !88
  %106 = fcmp oge <4 x float> %105, zeroinitializer
  %107 = select <4 x i1> %106, <4 x float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>, <4 x float> <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>
  %108 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %105, <4 x float> <float 2.550000e+02, float 2.550000e+02, float 2.550000e+02, float 2.550000e+02>, <4 x float> %107)
  %109 = fptosi <4 x float> %108 to <4 x i32>
  store <4 x i32> %109, ptr %5, align 16, !tbaa !89
  %110 = getelementptr inbounds i8, ptr %16, i64 216
  %.sroa.039.0.copyload = load float, ptr %110, align 8, !tbaa !88
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 220
  %.sroa.6.0.copyload = load float, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !88
  %111 = getelementptr inbounds i8, ptr %21, i64 5636
  %112 = load i32, ptr %111, align 4, !tbaa !90
  %113 = icmp eq i32 %112, 0
  %114 = select i1 %113, float %30, float 0.000000e+00
  %115 = fadd float %.sroa.039.0.copyload, %114
  store float %115, ptr %110, align 8, !tbaa !91
  %116 = and i32 %.4.fr, 3145728
  %.not227 = icmp ne i32 %116, 0
  %117 = and i32 %66, 32
  %118 = icmp eq i32 %117, 0
  %or.cond254 = select i1 %.not227, i1 %118, i1 false
  br i1 %or.cond254, label %119, label %189

119:                                              ; preds = %101
  %120 = getelementptr inbounds i8, ptr %21, i64 5572
  %121 = load float, ptr %120, align 4, !tbaa !41
  %122 = add nsw i32 %78, -1
  %123 = uitofp nneg i32 %122 to float
  %124 = fneg float %121
  %125 = call float @llvm.fmuladd.f32(float %124, float %123, float %31)
  %126 = uitofp nneg i32 %78 to float
  %127 = fdiv float %125, %126
  %128 = fptosi float %127 to i32
  %129 = sitofp i32 %128 to float
  %130 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 1.000000e+00, float noundef %129)
  %131 = load float, ptr %120, align 4, !tbaa !41
  %132 = fadd float %130, %131
  %133 = fneg float %132
  %134 = call float @llvm.fmuladd.f32(float %133, float %123, float %31)
  %135 = fptosi float %134 to i32
  %136 = sitofp i32 %135 to float
  %137 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 1.000000e+00, float noundef %136)
  %138 = and i32 %.4.fr, 16777216
  %.not230 = icmp eq i32 %138, 0
  %139 = select i1 %.not230, ptr @.str.80, ptr @.str.79
  %140 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef nonnull %139, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  %.sroa.0.0.vec.extract = extractelement <2 x float> %140, i64 0
  %141 = fcmp ugt float %130, %.sroa.0.0.vec.extract
  %142 = and i32 %.4.fr, 2097152
  %.not231 = icmp eq i32 %142, 0
  %143 = select i1 %.not231, i64 1, i64 2
  %144 = select i1 %.not222, float 1.000000e+00, float 0.000000e+00
  %145 = select i1 %141, i64 %143, i64 0
  %146 = select i1 %.not222, i32 255, i32 0
  %147 = and i32 %66, 8
  %.not250 = icmp eq i32 %147, 0
  %148 = zext nneg i32 %78 to i64
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %130)
  %149 = load ptr, ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, align 16, !tbaa !40
  br i1 %.not230, label %156, label %150

150:                                              ; preds = %119
  %151 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE15fmt_table_float, i64 0, i64 %145, i64 0
  %152 = load ptr, ptr %151, align 16, !tbaa !40
  %153 = call noundef zeroext i1 @_ZN5ImGui9DragFloatEPKcPffffS1_i(ptr noundef %149, ptr noundef nonnull %4, float noundef 0x3F70101020000000, float noundef 0.000000e+00, float noundef %144, ptr noundef %152, i32 noundef 0)
  %154 = zext i1 %153 to i8
  br i1 %.not250, label %155, label %.split.peel.next.preheader

155:                                              ; preds = %150
  call void @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.101, i32 noundef 1)
  br label %.split.peel.next.preheader

.split.peel.next.preheader:                       ; preds = %150, %155
  br label %.split.peel.next

156:                                              ; preds = %119
  %157 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE13fmt_table_int, i64 0, i64 %145, i64 0
  %158 = load ptr, ptr %157, align 16, !tbaa !40
  %159 = call noundef zeroext i1 @_ZN5ImGui7DragIntEPKcPifiiS1_i(ptr noundef %149, ptr noundef nonnull %5, float noundef 1.000000e+00, i32 noundef 0, i32 noundef %146, ptr noundef %158, i32 noundef 0)
  %160 = zext i1 %159 to i8
  br i1 %.not250, label %161, label %.split.us.peel.next.preheader

161:                                              ; preds = %156
  call void @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.101, i32 noundef 1)
  br label %.split.us.peel.next.preheader

.split.us.peel.next.preheader:                    ; preds = %156, %161
  br label %.split.us.peel.next

.split.us.peel.next:                              ; preds = %.split.us.peel.next.preheader, %174
  %indvars.iv273 = phi i64 [ %indvars.iv.next274, %174 ], [ 1, %.split.us.peel.next.preheader ]
  %.0196266.us = phi i8 [ %172, %174 ], [ %160, %.split.us.peel.next.preheader ]
  %162 = load float, ptr %120, align 4, !tbaa !41
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef %162)
  %indvars.iv.next274 = add nuw nsw i64 %indvars.iv273, 1
  %163 = icmp ult i64 %indvars.iv.next274, %148
  %164 = select i1 %163, float %130, float %137
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %164)
  %165 = getelementptr inbounds [4 x ptr], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, i64 0, i64 %indvars.iv273
  %166 = load ptr, ptr %165, align 8, !tbaa !40
  %167 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 %indvars.iv273
  %168 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE13fmt_table_int, i64 0, i64 %145, i64 %indvars.iv273
  %169 = load ptr, ptr %168, align 8, !tbaa !40
  %170 = call noundef zeroext i1 @_ZN5ImGui7DragIntEPKcPifiiS1_i(ptr noundef %166, ptr noundef nonnull %167, float noundef 1.000000e+00, i32 noundef 0, i32 noundef %146, ptr noundef %169, i32 noundef 0)
  %171 = zext i1 %170 to i8
  %172 = or i8 %.0196266.us, %171
  br i1 %.not250, label %173, label %174

173:                                              ; preds = %.split.us.peel.next
  call void @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.101, i32 noundef 1)
  br label %174

174:                                              ; preds = %173, %.split.us.peel.next
  %exitcond277.not = icmp eq i64 %indvars.iv.next274, %148
  br i1 %exitcond277.not, label %.loopexit262, label %.split.us.peel.next, !llvm.loop !92

.split.peel.next:                                 ; preds = %.split.peel.next.preheader, %188
  %indvars.iv = phi i64 [ %indvars.iv.next, %188 ], [ 1, %.split.peel.next.preheader ]
  %.0196266 = phi i8 [ %185, %188 ], [ %154, %.split.peel.next.preheader ]
  %.0201265 = phi i8 [ %186, %188 ], [ %154, %.split.peel.next.preheader ]
  %175 = load float, ptr %120, align 4, !tbaa !41
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef %175)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %176 = icmp ult i64 %indvars.iv.next, %148
  %177 = select i1 %176, float %130, float %137
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %177)
  %178 = getelementptr inbounds [4 x ptr], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, i64 0, i64 %indvars.iv
  %179 = load ptr, ptr %178, align 8, !tbaa !40
  %180 = getelementptr inbounds [4 x float], ptr %4, i64 0, i64 %indvars.iv
  %181 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE15fmt_table_float, i64 0, i64 %145, i64 %indvars.iv
  %182 = load ptr, ptr %181, align 8, !tbaa !40
  %183 = call noundef zeroext i1 @_ZN5ImGui9DragFloatEPKcPffffS1_i(ptr noundef %179, ptr noundef nonnull %180, float noundef 0x3F70101020000000, float noundef 0.000000e+00, float noundef %144, ptr noundef %182, i32 noundef 0)
  %184 = zext i1 %183 to i8
  %185 = or i8 %.0196266, %184
  %186 = or i8 %185, %.0201265
  br i1 %.not250, label %187, label %188

187:                                              ; preds = %.split.peel.next
  call void @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.101, i32 noundef 1)
  br label %188

188:                                              ; preds = %.split.peel.next, %187
  %exitcond.not = icmp eq i64 %indvars.iv.next, %148
  br i1 %exitcond.not, label %.loopexit262, label %.split.peel.next, !llvm.loop !95

189:                                              ; preds = %101
  %190 = and i32 %.4.fr, 4194304
  %.not228 = icmp ne i32 %190, 0
  %or.cond256 = select i1 %.not228, i1 %118, i1 false
  br i1 %or.cond256, label %191, label %.loopexit262

191:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #13
  %192 = extractelement <4 x i32> %109, i64 0
  %193 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %192, i32 noundef 0, i32 noundef 255)
  %194 = load i32, ptr %102, align 4, !tbaa !89
  %195 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %194, i32 noundef 0, i32 noundef 255)
  %196 = load i32, ptr %103, align 8, !tbaa !89
  %197 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %196, i32 noundef 0, i32 noundef 255)
  br i1 %76, label %198, label %202

198:                                              ; preds = %191
  %199 = load i32, ptr %104, align 4, !tbaa !89
  %200 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %199, i32 noundef 0, i32 noundef 255)
  %201 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %6, i64 noundef 64, ptr noundef nonnull @.str.102, i32 noundef %193, i32 noundef %195, i32 noundef %197, i32 noundef %200)
  br label %204

202:                                              ; preds = %191
  %203 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %6, i64 noundef 64, ptr noundef nonnull @.str.103, i32 noundef %193, i32 noundef %195, i32 noundef %197)
  br label %204

204:                                              ; preds = %202, %198
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %31)
  %205 = call noundef zeroext i1 @_ZN5ImGui9InputTextEPKcPcmiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull @.str.104, ptr noundef nonnull %6, i64 noundef 64, i32 noundef 6, ptr noundef null, ptr noundef null)
  br i1 %205, label %.preheader263, label %216

.preheader263:                                    ; preds = %204, %.critedge
  %.0207 = phi ptr [ %210, %.critedge ], [ %6, %204 ]
  %206 = load i8, ptr %.0207, align 1, !tbaa !96
  %207 = icmp eq i8 %206, 35
  br i1 %207, label %.critedge, label %208

208:                                              ; preds = %.preheader263
  %209 = call noundef zeroext i1 @_ZL14ImCharIsBlankAc(i8 noundef signext %206)
  br i1 %209, label %.critedge, label %211

.critedge:                                        ; preds = %.preheader263, %208
  %210 = getelementptr inbounds i8, ptr %.0207, i64 1
  br label %.preheader263, !llvm.loop !97

211:                                              ; preds = %208
  store <4 x i32> <i32 0, i32 0, i32 0, i32 255>, ptr %5, align 16, !tbaa !89
  br i1 %76, label %212, label %214

212:                                              ; preds = %211
  %213 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %.0207, ptr noundef nonnull @.str.105, ptr noundef nonnull %5, ptr noundef nonnull %102, ptr noundef nonnull %103, ptr noundef nonnull %104) #13
  br label %216

214:                                              ; preds = %211
  %215 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %.0207, ptr noundef nonnull @.str.106, ptr noundef nonnull %5, ptr noundef nonnull %102, ptr noundef nonnull %103) #13
  br label %216

216:                                              ; preds = %212, %214, %204
  %.2198 = phi i8 [ 0, %204 ], [ 1, %214 ], [ 1, %212 ]
  %217 = and i32 %66, 8
  %.not229 = icmp eq i32 %217, 0
  br i1 %.not229, label %218, label %219

218:                                              ; preds = %216
  call void @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.101, i32 noundef 1)
  br label %219

219:                                              ; preds = %218, %216
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #13
  br label %.loopexit262

.loopexit262:                                     ; preds = %188, %174, %189, %219
  %.2203 = phi i8 [ 0, %219 ], [ 0, %189 ], [ 0, %174 ], [ %186, %188 ]
  %.3199 = phi i8 [ %.2198, %219 ], [ 0, %189 ], [ %172, %174 ], [ %185, %188 ]
  %220 = and i32 %66, 16
  %.not232 = icmp eq i32 %220, 0
  br i1 %.not232, label %221, label %269

221:                                              ; preds = %.loopexit262
  br i1 %118, label %222, label %229

222:                                              ; preds = %221
  %223 = load i32, ptr %111, align 4, !tbaa !90
  %224 = icmp eq i32 %223, 0
  br i1 %224, label %229, label %225

225:                                              ; preds = %222
  %226 = getelementptr inbounds i8, ptr %21, i64 5572
  %227 = load float, ptr %226, align 4, !tbaa !41
  %228 = fadd float %31, %227
  br label %229

229:                                              ; preds = %221, %222, %225
  %230 = phi float [ %228, %225 ], [ 0.000000e+00, %222 ], [ 0.000000e+00, %221 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #13
  %231 = fadd float %.sroa.039.0.copyload, %230
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %7, float noundef %231, float noundef %.sroa.6.0.copyload)
  %232 = load i64, ptr %7, align 8
  store i64 %232, ptr %110, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #13
  %233 = load float, ptr %1, align 4, !tbaa !88
  %234 = load float, ptr %80, align 4, !tbaa !88
  %235 = load float, ptr %83, align 4, !tbaa !88
  br i1 %76, label %236, label %239

236:                                              ; preds = %229
  %237 = getelementptr inbounds i8, ptr %1, i64 12
  %238 = load float, ptr %237, align 4, !tbaa !88
  br label %239

239:                                              ; preds = %229, %236
  %240 = phi float [ %238, %236 ], [ 1.000000e+00, %229 ]
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef %233, float noundef %234, float noundef %235, float noundef %240)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %9, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %241 = load <2 x float>, ptr %9, align 8
  %242 = call noundef zeroext i1 @_ZN5ImGui11ColorButtonEPKcRK6ImVec4i6ImVec2(ptr noundef nonnull @.str.107, ptr noundef nonnull align 4 dereferenceable(16) %8, i32 noundef %66, <2 x float> %241)
  %243 = and i32 %66, 4
  %.not234 = icmp eq i32 %243, 0
  %or.cond257 = select i1 %242, i1 %.not234, i1 false
  br i1 %or.cond257, label %244, label %251

244:                                              ; preds = %239
  %245 = getelementptr inbounds i8, ptr %21, i64 12348
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %245, ptr noundef nonnull align 4 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !98
  call void @_ZN5ImGui9OpenPopupEPKci(ptr noundef nonnull @.str.108, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #13
  %246 = getelementptr inbounds i8, ptr %21, i64 7396
  %247 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %246)
  store <2 x float> %247, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #13
  %248 = getelementptr inbounds i8, ptr %21, i64 5568
  %249 = load float, ptr %248, align 4, !tbaa !99
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %12, float noundef -1.000000e+00, float noundef %249)
  %250 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %12)
  store <2 x float> %250, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @_ZN5ImGui16SetNextWindowPosERK6ImVec2iS2_(ptr noundef nonnull align 4 dereferenceable(8) %10, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(8) %13)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #13
  br label %251

251:                                              ; preds = %244, %239
  %252 = and i32 %66, 8
  %.not235 = icmp eq i32 %252, 0
  br i1 %.not235, label %253, label %254

253:                                              ; preds = %251
  call void @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.101, i32 noundef 1)
  br label %254

254:                                              ; preds = %253, %251
  %255 = call noundef zeroext i1 @_ZN5ImGui10BeginPopupEPKci(ptr noundef nonnull @.str.108, i32 noundef 0)
  br i1 %255, label %256, label %268

256:                                              ; preds = %254
  %257 = getelementptr inbounds i8, ptr %21, i64 7200
  %258 = load ptr, ptr %257, align 8, !tbaa !100
  %.not236 = icmp eq ptr %32, %0
  br i1 %.not236, label %260, label %259

259:                                              ; preds = %256
  call void @_ZN5ImGui6TextExEPKcS1_i(ptr noundef %0, ptr noundef %32, i32 noundef 0)
  call void @_ZN5ImGui7SpacingEv()
  br label %260

260:                                              ; preds = %259, %256
  %261 = and i32 %2, 529072130
  %262 = or disjoint i32 %261, 7602304
  %263 = fmul float %22, 1.200000e+01
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %263)
  %264 = getelementptr inbounds i8, ptr %21, i64 12348
  %265 = call noundef zeroext i1 @_ZN5ImGui12ColorPicker4EPKcPfiPKf(ptr noundef nonnull @.str.109, ptr noundef nonnull %1, i32 noundef %262, ptr noundef nonnull %264)
  %266 = zext i1 %265 to i8
  %267 = or i8 %.3199, %266
  call void @_ZN5ImGui8EndPopupEv()
  br label %268

268:                                              ; preds = %260, %254
  %.0205 = phi ptr [ %258, %260 ], [ null, %254 ]
  %.4200 = phi i8 [ %267, %260 ], [ %.3199, %254 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #13
  br label %269

269:                                              ; preds = %268, %.loopexit262
  %.1206 = phi ptr [ null, %.loopexit262 ], [ %.0205, %268 ]
  %.5 = phi i8 [ %.3199, %.loopexit262 ], [ %.4200, %268 ]
  %.not237 = icmp ne ptr %32, %0
  %270 = and i32 %66, 128
  %.not238 = icmp eq i32 %270, 0
  %or.cond258 = select i1 %.not237, i1 %.not238, i1 false
  br i1 %or.cond258, label %271, label %283

271:                                              ; preds = %269
  br i1 %118, label %272, label %276

272:                                              ; preds = %271
  %273 = getelementptr inbounds i8, ptr %21, i64 5572
  %274 = load float, ptr %273, align 4, !tbaa !41
  %275 = fadd float %23, %274
  br label %276

276:                                              ; preds = %271, %272
  %277 = phi float [ %275, %272 ], [ %30, %271 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #13
  %278 = fadd float %.sroa.039.0.copyload, %277
  %279 = getelementptr inbounds i8, ptr %21, i64 5552
  %280 = load float, ptr %279, align 4, !tbaa !101
  %281 = fadd float %.sroa.6.0.copyload, %280
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef %278, float noundef %281)
  %282 = load i64, ptr %14, align 8
  store i64 %282, ptr %110, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #13
  call void @_ZN5ImGui6TextExEPKcS1_i(ptr noundef %0, ptr noundef %32, i32 noundef 0)
  br label %283

283:                                              ; preds = %276, %269
  %284 = trunc nuw i8 %.5 to i1
  %285 = icmp eq ptr %.1206, null
  %or.cond = select i1 %284, i1 %285, i1 false
  br i1 %or.cond, label %286, label %320

286:                                              ; preds = %283
  %287 = trunc nuw i8 %.2203 to i1
  br i1 %287, label %..loopexit_crit_edge, label %.preheader.preheader

..loopexit_crit_edge:                             ; preds = %286
  %288 = load <2 x float>, ptr %4, align 16, !tbaa !88
  %.pre288.pre293.pre = load float, ptr %82, align 8, !tbaa !88
  br label %.loopexit

.preheader.preheader:                             ; preds = %286
  %289 = load <2 x i32>, ptr %5, align 16, !tbaa !89
  %290 = sitofp <2 x i32> %289 to <2 x float>
  %291 = fdiv <2 x float> %290, <float 2.550000e+02, float 2.550000e+02>
  store <2 x float> %291, ptr %4, align 16, !tbaa !88
  %292 = load <2 x i32>, ptr %103, align 8, !tbaa !89
  %293 = sitofp <2 x i32> %292 to <2 x float>
  %294 = fdiv <2 x float> %293, <float 2.550000e+02, float 2.550000e+02>
  store <2 x float> %294, ptr %82, align 8, !tbaa !88
  %295 = extractelement <2 x float> %294, i64 0
  br label %.loopexit

.loopexit:                                        ; preds = %..loopexit_crit_edge, %.preheader.preheader
  %.pre288.pre293 = phi float [ %.pre288.pre293.pre, %..loopexit_crit_edge ], [ %295, %.preheader.preheader ]
  %296 = phi <2 x float> [ %288, %..loopexit_crit_edge ], [ %291, %.preheader.preheader ]
  %297 = and i32 %.4.fr, 136314880
  %or.cond259.not = icmp eq i32 %297, 136314880
  br i1 %or.cond259.not, label %298, label %308

298:                                              ; preds = %.loopexit
  %299 = getelementptr inbounds i8, ptr %21, i64 12336
  store <2 x float> %296, ptr %299, align 8, !tbaa !88
  %300 = extractelement <2 x float> %296, i64 0
  %301 = extractelement <2 x float> %296, i64 1
  call void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef %300, float noundef %301, float noundef %.pre288.pre293, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull align 4 dereferenceable(4) %82)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #13
  %302 = load float, ptr %4, align 16, !tbaa !88
  %303 = load float, ptr %79, align 4, !tbaa !88
  %304 = load float, ptr %82, align 8, !tbaa !88
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %15, float noundef %302, float noundef %303, float noundef %304, float noundef 0.000000e+00)
  %305 = call noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %15)
  %306 = getelementptr inbounds i8, ptr %21, i64 12344
  store i32 %305, ptr %306, align 8, !tbaa !102
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #13
  %307 = load <2 x float>, ptr %4, align 16, !tbaa !88
  %.pre288.pre = load float, ptr %82, align 8, !tbaa !88
  br label %308

308:                                              ; preds = %298, %.loopexit
  %.pre288 = phi float [ %.pre288.pre, %298 ], [ %.pre288.pre293, %.loopexit ]
  %309 = phi <2 x float> [ %307, %298 ], [ %296, %.loopexit ]
  br i1 %or.cond251.not, label %310, label %314

310:                                              ; preds = %308
  %311 = extractelement <2 x float> %309, i64 0
  %312 = extractelement <2 x float> %309, i64 1
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %311, float noundef %312, float noundef %.pre288, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull align 4 dereferenceable(4) %82)
  %313 = load <2 x float>, ptr %4, align 16, !tbaa !88
  %.pre287 = load float, ptr %82, align 8, !tbaa !88
  br label %314

314:                                              ; preds = %308, %310
  %315 = phi float [ %.pre288, %308 ], [ %.pre287, %310 ]
  %316 = phi <2 x float> [ %309, %308 ], [ %313, %310 ]
  store <2 x float> %316, ptr %1, align 4, !tbaa !88
  store float %315, ptr %83, align 4, !tbaa !88
  br i1 %76, label %317, label %320

317:                                              ; preds = %314
  %318 = load float, ptr %85, align 4, !tbaa !88
  %319 = getelementptr inbounds i8, ptr %1, i64 12
  store float %318, ptr %319, align 4, !tbaa !88
  br label %320

320:                                              ; preds = %314, %317, %283
  call void @_ZN5ImGui5PopIDEv()
  call void @_ZN5ImGui8EndGroupEv()
  %321 = getelementptr inbounds i8, ptr %21, i64 7384
  %322 = getelementptr inbounds i8, ptr %21, i64 7392
  %323 = load i32, ptr %322, align 8, !tbaa !103
  %324 = and i32 %323, 1
  %.not243 = icmp ne i32 %324, 0
  %325 = and i32 %66, 512
  %.not244 = icmp eq i32 %325, 0
  %or.cond260 = select i1 %.not243, i1 %.not244, i1 false
  br i1 %or.cond260, label %326, label %344

326:                                              ; preds = %320
  %327 = call noundef zeroext i1 @_ZN5ImGui19BeginDragDropTargetEv()
  br i1 %327, label %328, label %344

328:                                              ; preds = %326
  %329 = call noundef ptr @_ZN5ImGui21AcceptDragDropPayloadEPKci(ptr noundef nonnull @.str.110, i32 noundef 0)
  %.not245 = icmp ne ptr %329, null
  br i1 %.not245, label %330, label %332

330:                                              ; preds = %328
  %331 = load ptr, ptr %329, align 8, !tbaa !104
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 1 dereferenceable(12) %331, i64 12, i1 false)
  br label %332

332:                                              ; preds = %330, %328
  %.6 = phi i8 [ 1, %330 ], [ %.5, %328 ]
  %333 = call noundef ptr @_ZN5ImGui21AcceptDragDropPayloadEPKci(ptr noundef nonnull @.str.111, i32 noundef 0)
  %.not246 = icmp eq ptr %333, null
  br i1 %.not246, label %338, label %334

334:                                              ; preds = %332
  %335 = load ptr, ptr %333, align 8, !tbaa !104
  %336 = shl nuw nsw i32 %78, 2
  %337 = zext nneg i32 %336 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %335, i64 %337, i1 false)
  br label %338

338:                                              ; preds = %334, %332
  %.7 = phi i8 [ 1, %334 ], [ %.6, %332 ]
  %.1194 = phi i1 [ true, %334 ], [ %.not245, %332 ]
  %brmerge261.not = and i1 %.not223, %.1194
  br i1 %brmerge261.not, label %339, label %343

339:                                              ; preds = %338
  %340 = load float, ptr %1, align 4, !tbaa !88
  %341 = load float, ptr %80, align 4, !tbaa !88
  %342 = load float, ptr %83, align 4, !tbaa !88
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %340, float noundef %341, float noundef %342, ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %80, ptr noundef nonnull align 4 dereferenceable(4) %83)
  br label %343

343:                                              ; preds = %338, %339
  call void @_ZN5ImGui17EndDragDropTargetEv()
  br label %344

344:                                              ; preds = %343, %326, %320
  %.8 = phi i8 [ %.7, %343 ], [ %.5, %326 ], [ %.5, %320 ]
  br i1 %285, label %353, label %345

345:                                              ; preds = %344
  %346 = getelementptr inbounds i8, ptr %21, i64 7276
  %347 = load i32, ptr %346, align 4, !tbaa !105
  %.not248 = icmp eq i32 %347, 0
  br i1 %.not248, label %353, label %348

348:                                              ; preds = %345
  %349 = getelementptr inbounds i8, ptr %21, i64 7320
  %350 = load ptr, ptr %349, align 8, !tbaa !106
  %351 = icmp eq ptr %350, %.1206
  br i1 %351, label %352, label %353

352:                                              ; preds = %348
  store i32 %347, ptr %321, align 8, !tbaa !107
  br label %353

353:                                              ; preds = %352, %348, %345, %344
  %354 = trunc nuw i8 %.8 to i1
  br i1 %354, label %355, label %357

355:                                              ; preds = %353
  %356 = load i32, ptr %321, align 8, !tbaa !107
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %356)
  br label %357

357:                                              ; preds = %355, %353
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #13
  br label %358

358:                                              ; preds = %3, %357
  %.0 = phi i1 [ %354, %357 ], [ false, %3 ]
  ret i1 %.0
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN17ImGuiNextItemData10ClearFlagsEv(ptr noundef nonnull align 4 dereferenceable(17)) local_unnamed_addr #2 align 2

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

declare void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef, float noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

declare void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef, float noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL18ColorEditRestoreHSPKfPfS1_S1_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #9

declare void @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui11ColorButtonEPKcRK6ImVec4i6ImVec2(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, <2 x float>) local_unnamed_addr #0

declare void @_ZN5ImGui9OpenPopupEPKci(ptr noundef, i32 noundef) local_unnamed_addr #5

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

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

declare noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #5

declare noundef zeroext i1 @_ZN5ImGui19BeginDragDropTargetEv() local_unnamed_addr #5

declare noundef ptr @_ZN5ImGui21AcceptDragDropPayloadEPKci(ptr noundef, i32 noundef) local_unnamed_addr #5

declare void @_ZN5ImGui17EndDragDropTargetEv() local_unnamed_addr #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>) #11

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nofree 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 #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #12 = { noreturn nounwind }
attributes #13 = { 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, !13, i64 147}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !12, i64 72, !12, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !11, i64 92, !11, i64 100, !11, i64 108, !11, i64 116, !11, i64 124, !11, i64 132, !13, i64 140, !13, i64 141, !13, i64 142, !13, i64 143, !13, i64 144, !13, i64 145, !13, i64 146, !13, i64 147, !13, i64 148, !13, i64 149, !13, i64 150, !13, i64 151, !13, i64 152, !8, i64 153, !14, i64 154, !14, i64 156, !14, i64 158, !14, i64 160, !10, i64 164, !8, i64 168, !8, i64 169, !8, i64 170, !13, i64 171, !10, i64 172, !8, i64 176, !8, i64 177, !8, i64 178, !8, i64 179, !10, i64 180, !10, i64 181, !10, i64 182, !11, i64 184, !11, i64 192, !15, i64 200, !16, i64 216, !22, i64 448, !22, i64 464, !22, i64 480, !22, i64 496, !22, i64 512, !22, i64 528, !22, i64 544, !23, i64 560, !23, i64 564, !10, i64 568, !12, i64 572, !12, i64 576, !24, i64 584, !26, i64 600, !12, i64 616, !10, i64 620, !7, i64 624, !27, i64 632, !7, i64 832, !7, i64 840, !7, i64 848, !7, i64 856, !7, i64 864, !7, i64 872, !7, i64 880, !8, i64 888, !8, i64 896, !10, i64 928, !10, i64 932, !13, i64 936}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS6ImVec2", !12, i64 0, !12, i64 4}
!12 = !{!"float", !8, i64 0}
!13 = !{!"bool", !8, i64 0}
!14 = !{!"short", !8, i64 0}
!15 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !7, i64 8}
!16 = !{!"_ZTS19ImGuiWindowTempData", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !12, i64 56, !12, i64 60, !17, i64 64, !17, i64 68, !17, i64 72, !11, i64 76, !18, i64 84, !14, i64 88, !14, i64 90, !10, i64 92, !13, i64 96, !13, i64 97, !13, i64 98, !11, i64 100, !19, i64 108, !10, i64 136, !10, i64 140, !20, i64 144, !7, i64 160, !7, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !12, i64 188, !12, i64 192, !21, i64 200, !21, i64 216}
!17 = !{!"_ZTS6ImVec1", !12, i64 0}
!18 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!19 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !14, i64 8, !14, i64 10, !14, i64 12, !14, i64 14, !14, i64 16, !8, i64 18}
!20 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!21 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!22 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!23 = !{!"_ZTS8ImVec2ih", !14, i64 0, !14, i64 2}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!26 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!27 = !{!"_ZTS10ImDrawList", !28, i64 0, !29, i64 16, !30, i64 32, !10, i64 48, !10, i64 52, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !31, i64 88, !32, i64 104, !33, i64 120, !34, i64 136, !36, i64 168, !12, i64 192}
!28 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!29 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!34 = !{!"_ZTS15ImDrawCmdHeader", !35, i64 0, !7, i64 16, !10, i64 24}
!35 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!36 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !37, i64 8}
!37 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!7, !7, i64 0}
!41 = !{!42, !12, i64 84}
!42 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !12, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !11, i64 24, !11, i64 32, !10, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !11, i64 60, !12, i64 68, !12, i64 72, !11, i64 76, !11, i64 84, !11, i64 92, !11, i64 100, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !10, i64 148, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !12, i64 184, !13, i64 188, !13, i64 189, !13, i64 190, !12, i64 192, !12, i64 196, !8, i64 200}
!43 = !{!44, !10, i64 12332}
!44 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !45, i64 8, !42, i64 5488, !7, i64 6536, !12, i64 6544, !12, i64 6548, !46, i64 6552, !47, i64 7064, !10, i64 7072, !10, i64 7076, !10, i64 7080, !13, i64 7084, !13, i64 7085, !13, i64 7086, !13, i64 7087, !13, i64 7088, !7, i64 7096, !20, i64 7104, !20, i64 7120, !20, i64 7136, !48, i64 7152, !24, i64 7168, !10, i64 7184, !11, i64 7188, !7, i64 7200, !7, i64 7208, !7, i64 7216, !7, i64 7224, !7, i64 7232, !11, i64 7240, !12, i64 7248, !10, i64 7252, !10, i64 7256, !10, i64 7260, !13, i64 7264, !13, i64 7265, !13, i64 7266, !13, i64 7267, !12, i64 7268, !12, i64 7272, !10, i64 7276, !10, i64 7280, !12, i64 7284, !13, i64 7288, !13, i64 7289, !13, i64 7290, !13, i64 7291, !13, i64 7292, !13, i64 7293, !13, i64 7294, !10, i64 7296, !10, i64 7300, !49, i64 7304, !11, i64 7312, !7, i64 7320, !50, i64 7328, !10, i64 7332, !10, i64 7336, !13, i64 7340, !13, i64 7341, !7, i64 7344, !10, i64 7352, !12, i64 7356, !10, i64 7360, !51, i64 7364, !52, i64 7384, !53, i64 7448, !54, i64 7560, !55, i64 7576, !56, i64 7592, !15, i64 7608, !57, i64 7624, !58, i64 7640, !59, i64 7656, !59, i64 7672, !10, i64 7688, !60, i64 7696, !7, i64 7712, !10, i64 7720, !10, i64 7724, !10, i64 7728, !10, i64 7732, !10, i64 7736, !10, i64 7740, !10, i64 7744, !10, i64 7748, !10, i64 7752, !10, i64 7756, !10, i64 7760, !10, i64 7764, !50, i64 7768, !18, i64 7772, !13, i64 7776, !13, i64 7777, !13, i64 7778, !13, i64 7779, !13, i64 7780, !13, i64 7781, !13, i64 7782, !10, i64 7784, !22, i64 7788, !13, i64 7804, !13, i64 7805, !13, i64 7806, !10, i64 7808, !10, i64 7812, !10, i64 7816, !10, i64 7820, !10, i64 7824, !10, i64 7828, !22, i64 7832, !22, i64 7848, !10, i64 7864, !10, i64 7868, !10, i64 7872, !61, i64 7880, !61, i64 7928, !61, i64 7976, !61, i64 8024, !7, i64 8072, !7, i64 8080, !7, i64 8088, !12, i64 8096, !12, i64 8100, !13, i64 8104, !12, i64 8108, !10, i64 8112, !13, i64 8116, !13, i64 8117, !13, i64 8118, !10, i64 8120, !10, i64 8124, !10, i64 8128, !62, i64 8136, !22, i64 8200, !10, i64 8216, !10, i64 8220, !12, i64 8224, !10, i64 8228, !10, i64 8232, !10, i64 8236, !10, i64 8240, !63, i64 8248, !8, i64 8264, !10, i64 8280, !64, i64 8288, !7, i64 8304, !10, i64 8312, !65, i64 8320, !66, i64 8336, !21, i64 8376, !37, i64 8392, !7, i64 8408, !68, i64 8416, !70, i64 8456, !71, i64 8472, !11, i64 8488, !72, i64 8496, !76, i64 12216, !10, i64 12328, !10, i64 12332, !12, i64 12336, !12, i64 12340, !10, i64 12344, !35, i64 12348, !78, i64 12364, !12, i64 12412, !13, i64 12416, !13, i64 12417, !12, i64 12420, !12, i64 12424, !12, i64 12428, !12, i64 12432, !14, i64 12436, !14, i64 12438, !12, i64 12440, !73, i64 12448, !15, i64 12464, !11, i64 12480, !11, i64 12488, !8, i64 12496, !13, i64 12497, !12, i64 12500, !79, i64 12504, !80, i64 12520, !81, i64 12536, !82, i64 12552, !83, i64 12568, !10, i64 12584, !13, i64 12588, !84, i64 12592, !7, i64 12600, !79, i64 12608, !7, i64 12624, !7, i64 12632, !12, i64 12640, !13, i64 12644, !10, i64 12648, !10, i64 12652, !10, i64 12656, !13, i64 12660, !10, i64 12664, !85, i64 12668, !86, i64 12688, !8, i64 12720, !10, i64 13200, !10, i64 13204, !12, i64 13208, !10, i64 13212, !10, i64 13216, !10, i64 13220, !8, i64 13224}
!45 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !7, i64 24, !7, i64 32, !12, i64 40, !12, i64 44, !12, i64 48, !8, i64 52, !12, i64 140, !12, i64 144, !7, i64 152, !7, i64 160, !12, i64 168, !13, i64 172, !7, i64 176, !11, i64 184, !13, i64 192, !13, i64 193, !13, i64 194, !13, i64 195, !13, i64 196, !13, i64 197, !12, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !11, i64 288, !8, i64 296, !12, i64 304, !12, i64 308, !13, i64 312, !13, i64 313, !13, i64 314, !13, i64 315, !8, i64 316, !8, i64 828, !13, i64 908, !13, i64 909, !13, i64 910, !13, i64 911, !13, i64 912, !13, i64 913, !13, i64 914, !12, i64 916, !10, i64 920, !10, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !11, i64 940, !13, i64 948, !10, i64 952, !10, i64 956, !11, i64 960, !8, i64 968, !8, i64 1008, !8, i64 1048, !8, i64 1053, !8, i64 1058, !8, i64 1068, !8, i64 1078, !8, i64 1083, !8, i64 1088, !8, i64 1096, !8, i64 1116, !8, i64 1136, !8, i64 1176, !8, i64 1196, !8, i64 3244, !8, i64 5292, !8, i64 5372, !12, i64 5452, !13, i64 5456, !14, i64 5458, !29, i64 5464}
!46 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !35, i64 28, !10, i64 44, !8, i64 48, !12, i64 432, !8, i64 436, !7, i64 504}
!47 = !{!"double", !8, i64 0}
!48 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!49 = !{!"long long", !8, i64 0}
!50 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!51 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !12, i64 4, !10, i64 8, !10, i64 12, !13, i64 16}
!52 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !22, i64 12, !22, i64 28, !22, i64 44}
!53 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !13, i64 56, !22, i64 60, !7, i64 80, !7, i64 88, !12, i64 96, !11, i64 100}
!54 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!55 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!56 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!57 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!58 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!59 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!60 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !7, i64 8}
!61 = !{!"_ZTS16ImGuiNavItemData", !7, i64 0, !10, i64 8, !10, i64 12, !22, i64 16, !10, i64 32, !12, i64 36, !12, i64 40, !12, i64 44}
!62 = !{!"_ZTS12ImGuiPayload", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !8, i64 24, !13, i64 57, !13, i64 58}
!63 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!64 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!65 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!66 = !{!"_ZTS6ImPoolI10ImGuiTableE", !67, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!67 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !7, i64 8}
!68 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !69, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!69 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!71 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !29, i64 16, !73, i64 32, !73, i64 48, !13, i64 64, !10, i64 68, !12, i64 72, !74, i64 76, !12, i64 3704, !13, i64 3708, !13, i64 3709, !13, i64 3710, !10, i64 3712}
!73 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!74 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !8, i64 12, !10, i64 16, !8, i64 20, !8, i64 21, !8, i64 22, !8, i64 23, !8, i64 24, !8, i64 25, !8, i64 26, !12, i64 28, !75, i64 32}
!75 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 3582, !14, i64 3584, !10, i64 3588, !10, i64 3592}
!76 = !{!"_ZTS6ImFont", !21, i64 0, !12, i64 16, !12, i64 20, !29, i64 24, !77, i64 40, !7, i64 56, !7, i64 64, !7, i64 72, !14, i64 80, !14, i64 82, !14, i64 84, !14, i64 86, !13, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !10, i64 104, !8, i64 108}
!77 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!78 = !{!"_ZTS21ImGuiComboPreviewData", !22, i64 0, !11, i64 16, !11, i64 24, !11, i64 32, !12, i64 40, !10, i64 44}
!79 = !{!"_ZTS15ImGuiTextBuffer", !73, i64 0}
!80 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!81 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !73, i64 0}
!82 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !73, i64 0}
!83 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !7, i64 8}
!84 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!85 = !{!"_ZTS18ImGuiMetricsConfig", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !13, i64 4, !13, i64 5, !10, i64 8, !10, i64 12}
!86 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !87, i64 16}
!87 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !7, i64 8}
!88 = !{!12, !12, i64 0}
!89 = !{!10, !10, i64 0}
!90 = !{!42, !10, i64 148}
!91 = !{!6, !12, i64 216}
!92 = distinct !{!92, !93, !94}
!93 = !{!"llvm.loop.mustprogress"}
!94 = !{!"llvm.loop.peeled.count", i32 1}
!95 = distinct !{!95, !93, !94}
!96 = !{!8, !8, i64 0}
!97 = distinct !{!97, !93}
!98 = !{i64 0, i64 4, !88, i64 4, i64 4, !88, i64 8, i64 4, !88, i64 12, i64 4, !88}
!99 = !{!42, !12, i64 80}
!100 = !{!44, !7, i64 7200}
!101 = !{!42, !12, i64 64}
!102 = !{!44, !10, i64 12344}
!103 = !{!44, !10, i64 7392}
!104 = !{!62, !7, i64 0}
!105 = !{!44, !10, i64 7276}
!106 = !{!44, !7, i64 7320}
!107 = !{!44, !10, i64 7384}


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