; LLVM IR from Dragons-Lake/REI :: sources/REI_Integration/3rdParty/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, float, float, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, [2 x i8], i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32, float, float, %struct.ImGuiMenuColumns, %struct.ImGuiStorage, %struct.ImVector.5, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i8, [3 x i8], i32, i32, [4 x i8] }>
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, i32, i8, i8, i8, %struct.ImVec2, %struct.ImVector.0, ptr, i32, i32, i32, i32, i32, float, float, %struct.ImVector.1, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.3, [6 x i16], %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, ptr }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImVec1 = type { float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiMenuColumns = type { float, float, float, [3 x float], [3 x float] }
%struct.ImGuiStorage = type { %struct.ImVector.4 }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImDrawList = type { %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, i32, ptr, ptr, i32, i32, ptr, ptr, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImDrawListSplitter }
%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.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.12 }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImGuiContext = type <{ i8, i8, i8, i8, [4 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, [4 x i8], %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i8, [3 x i8], i32, float, float, i32, i32, float, i8, i8, i8, i8, i8, [3 x i8], i32, i32, [4 x i8], i64, %struct.ImVec2, ptr, i32, i32, i8, i8, [6 x i8], ptr, i32, float, %struct.ImGuiNextWindowData, %struct.ImGuiNextItemData, %struct.ImVector.13, %struct.ImVector.14, %struct.ImVector.15, %struct.ImVector.16, %struct.ImVector.16, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, i32, [4 x i8], ptr, ptr, ptr, float, float, i8, [3 x i8], i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, [2 x i8], i32, i32, i32, i32, i32, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, ptr, ptr, i32, i32, i32, i32, i8, [7 x i8], %struct.ImDrawData, %struct.ImDrawDataBuilder, float, [4 x i8], %struct.ImDrawList, %struct.ImDrawList, i32, i8, i8, [2 x i8], i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, %struct.ImVector.18, [8 x i8], ptr, %struct.ImPool, %struct.ImVector.20, %struct.ImVector.21, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, [3 x float], %struct.ImVec4, i8, [3 x i8], float, float, float, i32, [4 x i8], %struct.ImVector.22, i32, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], float, [4 x i8], %struct.ImGuiTextBuffer, %struct.ImVector.24, %struct.ImVector.25, i8, [3 x i8], i32, ptr, %struct.ImGuiTextBuffer, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, [120 x float], 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, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, [512 x i8], [21 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [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], [21 x float], [21 x float], %struct.ImVector.7 }
%struct.ImGuiStyle = type { float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, float, [48 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type <{ %struct.ImVec2, ptr, float, float, %struct.ImVec4, i32, [12 x %struct.ImVec2], [4 x i8] }>
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %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.ImGuiNextItemData = type { i32, float, i8, i32 }
%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.ImGuiNavMoveResult = type <{ i32, i32, ptr, float, float, float, %struct.ImRect, [4 x i8] }>
%struct.ImDrawData = type <{ i8, [7 x i8], ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImDrawDataBuilder = type { [2 x %struct.ImVector.17] }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImPool = type <{ %struct.ImVector.19, %struct.ImGuiStorage, i32, [4 x i8] }>
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type { i32, i32, i32, %struct.ImVector.7, %struct.ImVector.22, %struct.ImVector.22, i8, i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i32, ptr, ptr }
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, 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.2, float, float, %struct.ImVector.7, %struct.ImVector.23, ptr, %struct.ImVec2, ptr, ptr, i16, i16, i16, [2 x i8], float, float, float, i32, i8, [7 x i8] }>
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.22 }

@GImGui = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [57 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi = external hidden unnamed_addr constant [67 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.65 = 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.86 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.96 = 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #3

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

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

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

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

declare noundef float @_ZN5ImGui13CalcItemWidthEv() #6

declare noundef float @_ZN5ImGui14GetFrameHeightEv() #6

declare void @_ZN5ImGui5PopIDEv() #6

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #6

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

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

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

declare void @_ZN5ImGui8EndPopupEv() #6

; 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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @memcmp(ptr noundef, ptr noundef, i64 noundef) #11

declare void @_ZN5ImGui10BeginGroupEv() #6

declare void @_ZN5ImGui6PushIDEPKc(ptr noundef) #6

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

declare void @_ZN5ImGui8EndGroupEv() #6

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

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

declare void @_ZN5ImGui16SetNextItemWidthEf(float noundef) #6

; 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 #4 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 i8, align 1
  %34 = alloca [64 x i8], align 16
  %35 = alloca ptr, align 8
  %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 %struct.ImVec2, align 4
  %48 = alloca i32, align 4
  %49 = alloca i8, align 1
  %50 = alloca ptr, align 8
  %51 = 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) #12
  %52 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %52, ptr %8, align 8, !tbaa !5
  %53 = load ptr, ptr %8, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.ImGuiWindow, ptr %53, i32 0, i32 26
  %55 = load i8, ptr %54, align 1, !tbaa !11, !range !39, !noundef !40
  %56 = trunc i8 %55 to i1
  br i1 %56, label %57, label %58

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

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

67:                                               ; preds = %58
  br label %75

68:                                               ; preds = %58
  %69 = load float, ptr %12, align 4, !tbaa !41
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.ImGuiStyle, ptr %70, i32 0, i32 15
  %72 = getelementptr inbounds %struct.ImVec2, ptr %71, i32 0, i32 0
  %73 = load float, ptr %72, align 4, !tbaa !42
  %74 = fadd float %69, %73
  br label %75

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

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

94:                                               ; preds = %89, %75
  %95 = load i32, ptr %7, align 4, !tbaa !9
  %96 = and i32 %95, 8
  %97 = icmp ne i32 %96, 0
  br i1 %97, label %101, label %98

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

101:                                              ; preds = %98, %94
  %102 = load i32, ptr %7, align 4, !tbaa !9
  %103 = and i32 %102, 7340032
  %104 = icmp ne i32 %103, 0
  br i1 %104, label %112, label %105

105:                                              ; preds = %101
  %106 = load ptr, ptr %10, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.ImGuiContext, ptr %106, i32 0, i32 150
  %108 = load i32, ptr %107, align 4, !tbaa !44
  %109 = and i32 %108, 7340032
  %110 = load i32, ptr %7, align 4, !tbaa !9
  %111 = or i32 %110, %109
  store i32 %111, ptr %7, align 4, !tbaa !9
  br label %112

112:                                              ; preds = %105, %101
  %113 = load i32, ptr %7, align 4, !tbaa !9
  %114 = and i32 %113, 25165824
  %115 = icmp ne i32 %114, 0
  br i1 %115, label %123, label %116

116:                                              ; preds = %112
  %117 = load ptr, ptr %10, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.ImGuiContext, ptr %117, i32 0, i32 150
  %119 = load i32, ptr %118, align 4, !tbaa !44
  %120 = and i32 %119, 25165824
  %121 = load i32, ptr %7, align 4, !tbaa !9
  %122 = or i32 %121, %120
  store i32 %122, ptr %7, align 4, !tbaa !9
  br label %123

123:                                              ; preds = %116, %112
  %124 = load i32, ptr %7, align 4, !tbaa !9
  %125 = and i32 %124, 100663296
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %134, label %127

127:                                              ; preds = %123
  %128 = load ptr, ptr %10, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.ImGuiContext, ptr %128, i32 0, i32 150
  %130 = load i32, ptr %129, align 4, !tbaa !44
  %131 = and i32 %130, 100663296
  %132 = load i32, ptr %7, align 4, !tbaa !9
  %133 = or i32 %132, %131
  store i32 %133, ptr %7, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %127, %123
  %135 = load i32, ptr %7, align 4, !tbaa !9
  %136 = and i32 %135, 402653184
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %145, label %138

138:                                              ; preds = %134
  %139 = load ptr, ptr %10, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.ImGuiContext, ptr %139, i32 0, i32 150
  %141 = load i32, ptr %140, align 4, !tbaa !44
  %142 = and i32 %141, 402653184
  %143 = load i32, ptr %7, align 4, !tbaa !9
  %144 = or i32 %143, %142
  store i32 %144, ptr %7, align 4, !tbaa !9
  br label %145

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

155:                                              ; preds = %145
  br label %158

156:                                              ; preds = %145
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.1, i32 noundef 4213, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi) #13
  unreachable

157:                                              ; No predecessors!
  br label %158

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

162:                                              ; preds = %158
  br label %165

163:                                              ; preds = %158
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.1, i32 noundef 4214, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi) #13
  unreachable

164:                                              ; No predecessors!
  br label %165

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

192:                                              ; preds = %165
  %193 = load ptr, ptr %6, align 8, !tbaa !5
  %194 = getelementptr inbounds float, ptr %193, i64 3
  %195 = load float, ptr %194, align 4, !tbaa !41
  br label %197

196:                                              ; preds = %165
  br label %197

197:                                              ; preds = %196, %192
  %198 = phi float [ %195, %192 ], [ 1.000000e+00, %196 ]
  store float %198, ptr %189, align 4, !tbaa !41
  %199 = load i32, ptr %7, align 4, !tbaa !9
  %200 = and i32 %199, 268435456
  %201 = icmp ne i32 %200, 0
  br i1 %201, label %202, label %216

202:                                              ; preds = %197
  %203 = load i32, ptr %7, align 4, !tbaa !9
  %204 = and i32 %203, 1048576
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %216

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

216:                                              ; preds = %202, %197
  %217 = load i32, ptr %7, align 4, !tbaa !9
  %218 = and i32 %217, 134217728
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %250

220:                                              ; preds = %216
  %221 = load i32, ptr %7, align 4, !tbaa !9
  %222 = and i32 %221, 2097152
  %223 = icmp ne i32 %222, 0
  br i1 %223, label %224, label %250

224:                                              ; preds = %220
  %225 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %226 = load float, ptr %225, align 16, !tbaa !41
  %227 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %228 = load float, ptr %227, align 4, !tbaa !41
  %229 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %230 = load float, ptr %229, align 8, !tbaa !41
  %231 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %232 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %233 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %226, float noundef %228, float noundef %230, ptr noundef nonnull align 4 dereferenceable(4) %231, ptr noundef nonnull align 4 dereferenceable(4) %232, ptr noundef nonnull align 4 dereferenceable(4) %233)
  %234 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %235 = load float, ptr %234, align 4, !tbaa !41
  %236 = fcmp oeq float %235, 0.000000e+00
  br i1 %236, label %237, label %249

237:                                              ; preds = %224
  %238 = load ptr, ptr %10, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.ImGuiContext, ptr %238, i32 0, i32 152
  %240 = getelementptr inbounds [3 x float], ptr %239, i64 0, i64 0
  %241 = load ptr, ptr %6, align 8, !tbaa !5
  %242 = call i32 @memcmp(ptr noundef %240, ptr noundef %241, i64 noundef 12) #14
  %243 = icmp eq i32 %242, 0
  br i1 %243, label %244, label %249

244:                                              ; preds = %237
  %245 = load ptr, ptr %10, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.ImGuiContext, ptr %245, i32 0, i32 151
  %247 = load float, ptr %246, align 8, !tbaa !79
  %248 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  store float %247, ptr %248, align 16, !tbaa !41
  br label %249

249:                                              ; preds = %244, %237, %224
  br label %250

250:                                              ; preds = %249, %220, %216
  br label %251

251:                                              ; preds = %250, %206
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #12
  %252 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %253 = load float, ptr %252, align 16, !tbaa !41
  %254 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %255 = load float, ptr %254, align 16, !tbaa !41
  %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 %22, align 4, !tbaa !9
  %261 = getelementptr inbounds i32, ptr %22, i64 1
  %262 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %263 = load float, ptr %262, align 4, !tbaa !41
  %264 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %265 = load float, ptr %264, align 4, !tbaa !41
  %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 2
  %272 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %273 = load float, ptr %272, align 8, !tbaa !41
  %274 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %275 = load float, ptr %274, align 8, !tbaa !41
  %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
  %281 = getelementptr inbounds i32, ptr %22, i64 3
  %282 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 3
  %283 = load float, ptr %282, align 4, !tbaa !41
  %284 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 3
  %285 = load float, ptr %284, align 4, !tbaa !41
  %286 = fcmp oge float %285, 0.000000e+00
  %287 = zext i1 %286 to i64
  %288 = select i1 %286, float 5.000000e-01, float -5.000000e-01
  %289 = call float @llvm.fmuladd.f32(float %283, float 2.550000e+02, float %288)
  %290 = fptosi float %289 to i32
  store i32 %290, ptr %281, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #12
  store i8 0, ptr %23, align 1, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #12
  store i8 0, ptr %24, align 1, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #12
  %291 = load ptr, ptr %8, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.ImGuiWindow, ptr %291, i32 0, i32 49
  %293 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %292, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %25, ptr align 8 %293, i64 8, i1 false), !tbaa.struct !80
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #12
  %294 = load ptr, ptr %11, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.ImGuiStyle, ptr %294, i32 0, i32 25
  %296 = load i32, ptr %295, align 4, !tbaa !81
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %300

298:                                              ; preds = %251
  %299 = load float, ptr %14, align 4, !tbaa !41
  br label %301

300:                                              ; preds = %251
  br label %301

301:                                              ; preds = %300, %298
  %302 = phi float [ %299, %298 ], [ 0.000000e+00, %300 ]
  store float %302, ptr %26, align 4, !tbaa !41
  %303 = getelementptr inbounds %struct.ImVec2, ptr %25, i32 0, i32 0
  %304 = load float, ptr %303, align 4, !tbaa !82
  %305 = load float, ptr %26, align 4, !tbaa !41
  %306 = fadd float %304, %305
  %307 = load ptr, ptr %8, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.ImGuiWindow, ptr %307, i32 0, i32 49
  %309 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %308, i32 0, i32 0
  %310 = getelementptr inbounds %struct.ImVec2, ptr %309, i32 0, i32 0
  store float %306, ptr %310, align 8, !tbaa !83
  %311 = load i32, ptr %7, align 4, !tbaa !9
  %312 = and i32 %311, 3145728
  %313 = icmp ne i32 %312, 0
  br i1 %313, label %314, label %506

314:                                              ; preds = %301
  %315 = load i32, ptr %7, align 4, !tbaa !9
  %316 = and i32 %315, 32
  %317 = icmp eq i32 %316, 0
  br i1 %317, label %318, label %506

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

363:                                              ; preds = %318
  br label %370

364:                                              ; preds = %318
  %365 = load i32, ptr %7, align 4, !tbaa !9
  %366 = and i32 %365, 2097152
  %367 = icmp ne i32 %366, 0
  %368 = zext i1 %367 to i64
  %369 = select i1 %367, i32 2, i32 1
  br label %370

370:                                              ; preds = %364, %363
  %371 = phi i32 [ 0, %363 ], [ %369, %364 ]
  store i32 %371, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #12
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %372

372:                                              ; preds = %502, %370
  %373 = load i32, ptr %32, align 4, !tbaa !9
  %374 = load i32, ptr %20, align 4, !tbaa !9
  %375 = icmp slt i32 %373, %374
  br i1 %375, label %377, label %376

376:                                              ; preds = %372
  store i32 2, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #12
  br label %505

377:                                              ; preds = %372
  %378 = load i32, ptr %32, align 4, !tbaa !9
  %379 = icmp sgt i32 %378, 0
  br i1 %379, label %380, label %385

380:                                              ; preds = %377
  %381 = load ptr, ptr %11, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.ImGuiStyle, ptr %381, i32 0, i32 15
  %383 = getelementptr inbounds %struct.ImVec2, ptr %382, i32 0, i32 0
  %384 = load float, ptr %383, align 4, !tbaa !42
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef %384)
  br label %385

385:                                              ; preds = %380, %377
  %386 = load i32, ptr %32, align 4, !tbaa !9
  %387 = add nsw i32 %386, 1
  %388 = load i32, ptr %20, align 4, !tbaa !9
  %389 = icmp slt i32 %387, %388
  br i1 %389, label %390, label %392

390:                                              ; preds = %385
  %391 = load float, ptr %27, align 4, !tbaa !41
  br label %394

392:                                              ; preds = %385
  %393 = load float, ptr %28, align 4, !tbaa !41
  br label %394

394:                                              ; preds = %392, %390
  %395 = phi float [ %391, %390 ], [ %393, %392 ]
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %395)
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #12
  %396 = load i32, ptr %32, align 4, !tbaa !9
  %397 = icmp eq i32 %396, 0
  br i1 %397, label %398, label %406

398:                                              ; preds = %394
  %399 = load i32, ptr %7, align 4, !tbaa !9
  %400 = and i32 %399, 2097152
  %401 = icmp ne i32 %400, 0
  br i1 %401, label %402, label %406

402:                                              ; preds = %398
  %403 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  %404 = load i32, ptr %403, align 4, !tbaa !9
  %405 = icmp eq i32 %404, 0
  br label %406

406:                                              ; preds = %402, %398, %394
  %407 = phi i1 [ false, %398 ], [ false, %394 ], [ %405, %402 ]
  %408 = zext i1 %407 to i8
  store i8 %408, ptr %33, align 1, !tbaa !78
  %409 = load i32, ptr %7, align 4, !tbaa !9
  %410 = and i32 %409, 16777216
  %411 = icmp ne i32 %410, 0
  br i1 %411, label %412, label %458

412:                                              ; preds = %406
  %413 = load i32, ptr %32, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds [4 x ptr], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, i64 0, i64 %414
  %416 = load ptr, ptr %415, align 8, !tbaa !5
  %417 = load i32, ptr %32, align 4, !tbaa !9
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 %418
  %420 = load i8, ptr %33, align 1, !tbaa !78, !range !39, !noundef !40
  %421 = trunc i8 %420 to i1
  %422 = zext i1 %421 to i64
  %423 = select i1 %421, float 0x47EFFFFFE0000000, float 0.000000e+00
  %424 = load i8, ptr %33, align 1, !tbaa !78, !range !39, !noundef !40
  %425 = trunc i8 %424 to i1
  br i1 %425, label %426, label %427

426:                                              ; preds = %412
  br label %432

427:                                              ; preds = %412
  %428 = load i8, ptr %19, align 1, !tbaa !78, !range !39, !noundef !40
  %429 = trunc i8 %428 to i1
  %430 = zext i1 %429 to i64
  %431 = select i1 %429, float 0.000000e+00, float 1.000000e+00
  br label %432

432:                                              ; preds = %427, %426
  %433 = phi float [ 0xC7EFFFFFE0000000, %426 ], [ %431, %427 ]
  %434 = load i32, ptr %31, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE15fmt_table_float, i64 0, i64 %435
  %437 = load i32, ptr %32, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds [4 x ptr], ptr %436, i64 0, i64 %438
  %440 = load ptr, ptr %439, align 8, !tbaa !5
  %441 = call noundef zeroext i1 @_ZN5ImGui9DragFloatEPKcPffffS1_f(ptr noundef %416, ptr noundef %419, float noundef 0x3F70101020000000, float noundef %423, float noundef %433, ptr noundef %440, float noundef 1.000000e+00)
  %442 = zext i1 %441 to i32
  %443 = load i8, ptr %23, align 1, !tbaa !78, !range !39, !noundef !40
  %444 = trunc i8 %443 to i1
  %445 = zext i1 %444 to i32
  %446 = or i32 %445, %442
  %447 = icmp ne i32 %446, 0
  %448 = zext i1 %447 to i8
  store i8 %448, ptr %23, align 1, !tbaa !78
  %449 = load i8, ptr %23, align 1, !tbaa !78, !range !39, !noundef !40
  %450 = trunc i8 %449 to i1
  %451 = zext i1 %450 to i32
  %452 = load i8, ptr %24, align 1, !tbaa !78, !range !39, !noundef !40
  %453 = trunc i8 %452 to i1
  %454 = zext i1 %453 to i32
  %455 = or i32 %454, %451
  %456 = icmp ne i32 %455, 0
  %457 = zext i1 %456 to i8
  store i8 %457, ptr %24, align 1, !tbaa !78
  br label %495

458:                                              ; preds = %406
  %459 = load i32, ptr %32, align 4, !tbaa !9
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds [4 x ptr], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, i64 0, i64 %460
  %462 = load ptr, ptr %461, align 8, !tbaa !5
  %463 = load i32, ptr %32, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 %464
  %466 = load i8, ptr %33, align 1, !tbaa !78, !range !39, !noundef !40
  %467 = trunc i8 %466 to i1
  %468 = zext i1 %467 to i64
  %469 = select i1 %467, i32 2147483647, i32 0
  %470 = load i8, ptr %33, align 1, !tbaa !78, !range !39, !noundef !40
  %471 = trunc i8 %470 to i1
  br i1 %471, label %472, label %473

472:                                              ; preds = %458
  br label %478

473:                                              ; preds = %458
  %474 = load i8, ptr %19, align 1, !tbaa !78, !range !39, !noundef !40
  %475 = trunc i8 %474 to i1
  %476 = zext i1 %475 to i64
  %477 = select i1 %475, i32 0, i32 255
  br label %478

478:                                              ; preds = %473, %472
  %479 = phi i32 [ -2147483648, %472 ], [ %477, %473 ]
  %480 = load i32, ptr %31, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE13fmt_table_int, i64 0, i64 %481
  %483 = load i32, ptr %32, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds [4 x ptr], ptr %482, i64 0, i64 %484
  %486 = load ptr, ptr %485, align 8, !tbaa !5
  %487 = call noundef zeroext i1 @_ZN5ImGui7DragIntEPKcPifiiS1_(ptr noundef %462, ptr noundef %465, float noundef 1.000000e+00, i32 noundef %469, i32 noundef %479, ptr noundef %486)
  %488 = zext i1 %487 to i32
  %489 = load i8, ptr %23, align 1, !tbaa !78, !range !39, !noundef !40
  %490 = trunc i8 %489 to i1
  %491 = zext i1 %490 to i32
  %492 = or i32 %491, %488
  %493 = icmp ne i32 %492, 0
  %494 = zext i1 %493 to i8
  store i8 %494, ptr %23, align 1, !tbaa !78
  br label %495

495:                                              ; preds = %478, %432
  %496 = load i32, ptr %7, align 4, !tbaa !9
  %497 = and i32 %496, 8
  %498 = icmp ne i32 %497, 0
  br i1 %498, label %501, label %499

499:                                              ; preds = %495
  %500 = call noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef @.str.86, i32 noundef 1)
  br label %501

501:                                              ; preds = %499, %495
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #12
  br label %502

502:                                              ; preds = %501
  %503 = load i32, ptr %32, align 4, !tbaa !9
  %504 = add nsw i32 %503, 1
  store i32 %504, ptr %32, align 4, !tbaa !9
  br label %372, !llvm.loop !84

505:                                              ; preds = %376
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #12
  br label %593

506:                                              ; preds = %314, %301
  %507 = load i32, ptr %7, align 4, !tbaa !9
  %508 = and i32 %507, 4194304
  %509 = icmp ne i32 %508, 0
  br i1 %509, label %510, label %592

510:                                              ; preds = %506
  %511 = load i32, ptr %7, align 4, !tbaa !9
  %512 = and i32 %511, 32
  %513 = icmp eq i32 %512, 0
  br i1 %513, label %514, label %592

514:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 64, ptr %34) #12
  %515 = load i8, ptr %18, align 1, !tbaa !78, !range !39, !noundef !40
  %516 = trunc i8 %515 to i1
  br i1 %516, label %517, label %532

517:                                              ; preds = %514
  %518 = getelementptr inbounds [64 x i8], ptr %34, i64 0, i64 0
  %519 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 0
  %520 = load i32, ptr %519, align 16, !tbaa !9
  %521 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %520, i32 noundef 0, i32 noundef 255)
  %522 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  %523 = load i32, ptr %522, align 4, !tbaa !9
  %524 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %523, i32 noundef 0, i32 noundef 255)
  %525 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 2
  %526 = load i32, ptr %525, align 8, !tbaa !9
  %527 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %526, i32 noundef 0, i32 noundef 255)
  %528 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 3
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %529, i32 noundef 0, i32 noundef 255)
  %531 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %518, i64 noundef 64, ptr noundef @.str.87, i32 noundef %521, i32 noundef %524, i32 noundef %527, i32 noundef %530)
  br label %544

532:                                              ; preds = %514
  %533 = getelementptr inbounds [64 x i8], ptr %34, i64 0, i64 0
  %534 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 0
  %535 = load i32, ptr %534, align 16, !tbaa !9
  %536 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %535, i32 noundef 0, i32 noundef 255)
  %537 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %538, i32 noundef 0, i32 noundef 255)
  %540 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 2
  %541 = load i32, ptr %540, align 8, !tbaa !9
  %542 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %541, i32 noundef 0, i32 noundef 255)
  %543 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef %533, i64 noundef 64, ptr noundef @.str.88, i32 noundef %536, i32 noundef %539, i32 noundef %542)
  br label %544

544:                                              ; preds = %532, %517
  %545 = load float, ptr %15, align 4, !tbaa !41
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %545)
  %546 = getelementptr inbounds [64 x i8], ptr %34, i64 0, i64 0
  %547 = call noundef zeroext i1 @_ZN5ImGui9InputTextEPKcPcmiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef @.str.89, ptr noundef %546, i64 noundef 64, i32 noundef 6, ptr noundef null, ptr noundef null)
  br i1 %547, label %548, label %585

548:                                              ; preds = %544
  store i8 1, ptr %23, align 1, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #12
  %549 = getelementptr inbounds [64 x i8], ptr %34, i64 0, i64 0
  store ptr %549, ptr %35, align 8, !tbaa !5
  br label %550

550:                                              ; preds = %561, %548
  %551 = load ptr, ptr %35, align 8, !tbaa !5
  %552 = load i8, ptr %551, align 1, !tbaa !86
  %553 = sext i8 %552 to i32
  %554 = icmp eq i32 %553, 35
  br i1 %554, label %559, label %555

555:                                              ; preds = %550
  %556 = load ptr, ptr %35, align 8, !tbaa !5
  %557 = load i8, ptr %556, align 1, !tbaa !86
  %558 = call noundef zeroext i1 @_ZL14ImCharIsBlankAc(i8 noundef signext %557)
  br label %559

559:                                              ; preds = %555, %550
  %560 = phi i1 [ true, %550 ], [ %558, %555 ]
  br i1 %560, label %561, label %564

561:                                              ; preds = %559
  %562 = load ptr, ptr %35, align 8, !tbaa !5
  %563 = getelementptr inbounds i8, ptr %562, i32 1
  store ptr %563, ptr %35, align 8, !tbaa !5
  br label %550, !llvm.loop !87

564:                                              ; preds = %559
  %565 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 3
  store i32 0, ptr %565, align 4, !tbaa !9
  %566 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 2
  store i32 0, ptr %566, align 8, !tbaa !9
  %567 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  store i32 0, ptr %567, align 4, !tbaa !9
  %568 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 0
  store i32 0, ptr %568, align 16, !tbaa !9
  %569 = load i8, ptr %18, align 1, !tbaa !78, !range !39, !noundef !40
  %570 = trunc i8 %569 to i1
  br i1 %570, label %571, label %578

571:                                              ; preds = %564
  %572 = load ptr, ptr %35, align 8, !tbaa !5
  %573 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 0
  %574 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  %575 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 2
  %576 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 3
  %577 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %572, ptr noundef @.str.90, ptr noundef %573, ptr noundef %574, ptr noundef %575, ptr noundef %576) #12
  br label %584

578:                                              ; preds = %564
  %579 = load ptr, ptr %35, align 8, !tbaa !5
  %580 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 0
  %581 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 1
  %582 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 2
  %583 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %579, ptr noundef @.str.91, ptr noundef %580, ptr noundef %581, ptr noundef %582) #12
  br label %584

584:                                              ; preds = %578, %571
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #12
  br label %585

585:                                              ; preds = %584, %544
  %586 = load i32, ptr %7, align 4, !tbaa !9
  %587 = and i32 %586, 8
  %588 = icmp ne i32 %587, 0
  br i1 %588, label %591, label %589

589:                                              ; preds = %585
  %590 = call noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef @.str.86, i32 noundef 1)
  br label %591

591:                                              ; preds = %589, %585
  call void @llvm.lifetime.end.p0(i64 64, ptr %34) #12
  br label %592

592:                                              ; preds = %591, %510, %506
  br label %593

593:                                              ; preds = %592, %505
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #12
  store ptr null, ptr %36, align 8, !tbaa !5
  %594 = load i32, ptr %7, align 4, !tbaa !9
  %595 = and i32 %594, 16
  %596 = icmp ne i32 %595, 0
  br i1 %596, label %704, label %597

597:                                              ; preds = %593
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #12
  %598 = load i32, ptr %7, align 4, !tbaa !9
  %599 = and i32 %598, 32
  %600 = icmp ne i32 %599, 0
  br i1 %600, label %606, label %601

601:                                              ; preds = %597
  %602 = load ptr, ptr %11, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.ImGuiStyle, ptr %602, i32 0, i32 25
  %604 = load i32, ptr %603, align 4, !tbaa !81
  %605 = icmp eq i32 %604, 0
  br i1 %605, label %606, label %607

606:                                              ; preds = %601, %597
  br label %614

607:                                              ; preds = %601
  %608 = load float, ptr %15, align 4, !tbaa !41
  %609 = load ptr, ptr %11, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.ImGuiStyle, ptr %609, i32 0, i32 15
  %611 = getelementptr inbounds %struct.ImVec2, ptr %610, i32 0, i32 0
  %612 = load float, ptr %611, align 4, !tbaa !42
  %613 = fadd float %608, %612
  br label %614

614:                                              ; preds = %607, %606
  %615 = phi float [ 0.000000e+00, %606 ], [ %613, %607 ]
  store float %615, ptr %37, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #12
  %616 = getelementptr inbounds %struct.ImVec2, ptr %25, i32 0, i32 0
  %617 = load float, ptr %616, align 4, !tbaa !82
  %618 = load float, ptr %37, align 4, !tbaa !41
  %619 = fadd float %617, %618
  %620 = getelementptr inbounds %struct.ImVec2, ptr %25, i32 0, i32 1
  %621 = load float, ptr %620, align 4, !tbaa !88
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef %619, float noundef %621)
  %622 = load ptr, ptr %8, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.ImGuiWindow, ptr %622, i32 0, i32 49
  %624 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %623, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %624, ptr align 4 %38, i64 8, i1 false), !tbaa.struct !80
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #12
  %625 = load ptr, ptr %6, align 8, !tbaa !5
  %626 = getelementptr inbounds float, ptr %625, i64 0
  %627 = load float, ptr %626, align 4, !tbaa !41
  %628 = load ptr, ptr %6, align 8, !tbaa !5
  %629 = getelementptr inbounds float, ptr %628, i64 1
  %630 = load float, ptr %629, align 4, !tbaa !41
  %631 = load ptr, ptr %6, align 8, !tbaa !5
  %632 = getelementptr inbounds float, ptr %631, i64 2
  %633 = load float, ptr %632, align 4, !tbaa !41
  %634 = load i8, ptr %18, align 1, !tbaa !78, !range !39, !noundef !40
  %635 = trunc i8 %634 to i1
  br i1 %635, label %636, label %640

636:                                              ; preds = %614
  %637 = load ptr, ptr %6, align 8, !tbaa !5
  %638 = getelementptr inbounds float, ptr %637, i64 3
  %639 = load float, ptr %638, align 4, !tbaa !41
  br label %641

640:                                              ; preds = %614
  br label %641

641:                                              ; preds = %640, %636
  %642 = phi float [ %639, %636 ], [ 1.000000e+00, %640 ]
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %39, float noundef %627, float noundef %630, float noundef %633, float noundef %642)
  %643 = 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)
  %644 = load <2 x float>, ptr %40, align 4
  %645 = call noundef zeroext i1 @_ZN5ImGui11ColorButtonEPKcRK6ImVec4i6ImVec2(ptr noundef @.str.92, ptr noundef nonnull align 4 dereferenceable(16) %39, i32 noundef %643, <2 x float> %644)
  br i1 %645, label %646, label %663

646:                                              ; preds = %641
  %647 = load i32, ptr %7, align 4, !tbaa !9
  %648 = and i32 %647, 4
  %649 = icmp ne i32 %648, 0
  br i1 %649, label %662, label %650

650:                                              ; preds = %646
  %651 = load ptr, ptr %10, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.ImGuiContext, ptr %651, i32 0, i32 153
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %652, ptr align 4 %39, i64 16, i1 false), !tbaa.struct !89
  call void @_ZN5ImGui9OpenPopupEPKc(ptr noundef @.str.93)
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #12
  %653 = load ptr, ptr %8, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.ImGuiWindow, ptr %653, i32 0, i32 49
  %655 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %654, i32 0, i32 12
  %656 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %655)
  store <2 x float> %656, ptr %42, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #12
  %657 = load ptr, ptr %11, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.ImGuiStyle, ptr %657, i32 0, i32 14
  %659 = getelementptr inbounds %struct.ImVec2, ptr %658, i32 0, i32 1
  %660 = load float, ptr %659, align 4, !tbaa !90
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef -1.000000e+00, float noundef %660)
  %661 = 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> %661, ptr %41, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #12
  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) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #12
  br label %662

662:                                              ; preds = %650, %646
  br label %663

663:                                              ; preds = %662, %641
  %664 = load i32, ptr %7, align 4, !tbaa !9
  %665 = and i32 %664, 8
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %669, label %667

667:                                              ; preds = %663
  %668 = call noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef @.str.86, i32 noundef 1)
  br label %669

669:                                              ; preds = %667, %663
  %670 = call noundef zeroext i1 @_ZN5ImGui10BeginPopupEPKci(ptr noundef @.str.93, i32 noundef 0)
  br i1 %670, label %671, label %703

671:                                              ; preds = %669
  %672 = load ptr, ptr %10, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.ImGuiContext, ptr %672, i32 0, i32 23
  %674 = load ptr, ptr %673, align 8, !tbaa !91
  store ptr %674, ptr %36, align 8, !tbaa !5
  %675 = load ptr, ptr %5, align 8, !tbaa !5
  %676 = load ptr, ptr %16, align 8, !tbaa !5
  %677 = icmp ne ptr %675, %676
  br i1 %677, label %678, label %681

678:                                              ; preds = %671
  %679 = load ptr, ptr %5, align 8, !tbaa !5
  %680 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui6TextExEPKcS1_i(ptr noundef %679, ptr noundef %680, i32 noundef 0)
  call void @_ZN5ImGui7SpacingEv()
  br label %681

681:                                              ; preds = %678, %671
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #12
  store i32 529072130, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #12
  %682 = load i32, ptr %17, align 4, !tbaa !9
  %683 = load i32, ptr %45, align 4, !tbaa !9
  %684 = and i32 %682, %683
  %685 = or i32 %684, 7340032
  %686 = or i32 %685, 128
  %687 = or i32 %686, 262144
  store i32 %687, ptr %46, align 4, !tbaa !9
  %688 = load float, ptr %12, align 4, !tbaa !41
  %689 = fmul float %688, 1.200000e+01
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %689)
  %690 = load ptr, ptr %6, align 8, !tbaa !5
  %691 = load i32, ptr %46, align 4, !tbaa !9
  %692 = load ptr, ptr %10, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.ImGuiContext, ptr %692, i32 0, i32 153
  %694 = getelementptr inbounds %struct.ImVec4, ptr %693, i32 0, i32 0
  %695 = call noundef zeroext i1 @_ZN5ImGui12ColorPicker4EPKcPfiPKf(ptr noundef @.str.94, ptr noundef %690, i32 noundef %691, ptr noundef %694)
  %696 = zext i1 %695 to i32
  %697 = load i8, ptr %23, align 1, !tbaa !78, !range !39, !noundef !40
  %698 = trunc i8 %697 to i1
  %699 = zext i1 %698 to i32
  %700 = or i32 %699, %696
  %701 = icmp ne i32 %700, 0
  %702 = zext i1 %701 to i8
  store i8 %702, ptr %23, align 1, !tbaa !78
  call void @_ZN5ImGui8EndPopupEv()
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #12
  br label %703

703:                                              ; preds = %681, %669
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #12
  br label %704

704:                                              ; preds = %703, %593
  %705 = load ptr, ptr %5, align 8, !tbaa !5
  %706 = load ptr, ptr %16, align 8, !tbaa !5
  %707 = icmp ne ptr %705, %706
  br i1 %707, label %708, label %734

708:                                              ; preds = %704
  %709 = load i32, ptr %7, align 4, !tbaa !9
  %710 = and i32 %709, 128
  %711 = icmp ne i32 %710, 0
  br i1 %711, label %734, label %712

712:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #12
  %713 = getelementptr inbounds %struct.ImVec2, ptr %25, i32 0, i32 0
  %714 = load float, ptr %713, align 4, !tbaa !82
  %715 = load float, ptr %13, align 4, !tbaa !41
  %716 = fadd float %714, %715
  %717 = load ptr, ptr %11, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.ImGuiStyle, ptr %717, i32 0, i32 15
  %719 = getelementptr inbounds %struct.ImVec2, ptr %718, i32 0, i32 0
  %720 = load float, ptr %719, align 4, !tbaa !42
  %721 = fadd float %716, %720
  %722 = getelementptr inbounds %struct.ImVec2, ptr %25, i32 0, i32 1
  %723 = load float, ptr %722, align 4, !tbaa !88
  %724 = load ptr, ptr %11, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.ImGuiStyle, ptr %724, i32 0, i32 11
  %726 = getelementptr inbounds %struct.ImVec2, ptr %725, i32 0, i32 1
  %727 = load float, ptr %726, align 4, !tbaa !92
  %728 = fadd float %723, %727
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %47, float noundef %721, float noundef %728)
  %729 = load ptr, ptr %8, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.ImGuiWindow, ptr %729, i32 0, i32 49
  %731 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %730, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %731, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !80
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #12
  %732 = load ptr, ptr %5, align 8, !tbaa !5
  %733 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui6TextExEPKcS1_i(ptr noundef %732, ptr noundef %733, i32 noundef 0)
  br label %734

734:                                              ; preds = %712, %708, %704
  %735 = load i8, ptr %23, align 1, !tbaa !78, !range !39, !noundef !40
  %736 = trunc i8 %735 to i1
  br i1 %736, label %737, label %827

737:                                              ; preds = %734
  %738 = load ptr, ptr %36, align 8, !tbaa !5
  %739 = icmp eq ptr %738, null
  br i1 %739, label %740, label %827

740:                                              ; preds = %737
  %741 = load i8, ptr %24, align 1, !tbaa !78, !range !39, !noundef !40
  %742 = trunc i8 %741 to i1
  br i1 %742, label %762, label %743

743:                                              ; preds = %740
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #12
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %744

744:                                              ; preds = %758, %743
  %745 = load i32, ptr %48, align 4, !tbaa !9
  %746 = icmp slt i32 %745, 4
  br i1 %746, label %748, label %747

747:                                              ; preds = %744
  store i32 7, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #12
  br label %761

748:                                              ; preds = %744
  %749 = load i32, ptr %48, align 4, !tbaa !9
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 %750
  %752 = load i32, ptr %751, align 4, !tbaa !9
  %753 = sitofp i32 %752 to float
  %754 = fdiv float %753, 2.550000e+02
  %755 = load i32, ptr %48, align 4, !tbaa !9
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 %756
  store float %754, ptr %757, align 4, !tbaa !41
  br label %758

758:                                              ; preds = %748
  %759 = load i32, ptr %48, align 4, !tbaa !9
  %760 = add nsw i32 %759, 1
  store i32 %760, ptr %48, align 4, !tbaa !9
  br label %744, !llvm.loop !93

761:                                              ; preds = %747
  br label %762

762:                                              ; preds = %761, %740
  %763 = load i32, ptr %7, align 4, !tbaa !9
  %764 = and i32 %763, 2097152
  %765 = icmp ne i32 %764, 0
  br i1 %765, label %766, label %788

766:                                              ; preds = %762
  %767 = load i32, ptr %7, align 4, !tbaa !9
  %768 = and i32 %767, 134217728
  %769 = icmp ne i32 %768, 0
  br i1 %769, label %770, label %788

770:                                              ; preds = %766
  %771 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %772 = load float, ptr %771, align 16, !tbaa !41
  %773 = load ptr, ptr %10, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.ImGuiContext, ptr %773, i32 0, i32 151
  store float %772, ptr %774, align 8, !tbaa !79
  %775 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %776 = load float, ptr %775, align 16, !tbaa !41
  %777 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %778 = load float, ptr %777, align 4, !tbaa !41
  %779 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %780 = load float, ptr %779, align 8, !tbaa !41
  %781 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %782 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %783 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  call void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef %776, float noundef %778, float noundef %780, ptr noundef nonnull align 4 dereferenceable(4) %781, ptr noundef nonnull align 4 dereferenceable(4) %782, ptr noundef nonnull align 4 dereferenceable(4) %783)
  %784 = load ptr, ptr %10, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.ImGuiContext, ptr %784, i32 0, i32 152
  %786 = getelementptr inbounds [3 x float], ptr %785, i64 0, i64 0
  %787 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %786, ptr align 16 %787, i64 12, i1 false)
  br label %788

788:                                              ; preds = %770, %766, %762
  %789 = load i32, ptr %7, align 4, !tbaa !9
  %790 = and i32 %789, 1048576
  %791 = icmp ne i32 %790, 0
  br i1 %791, label %792, label %806

792:                                              ; preds = %788
  %793 = load i32, ptr %7, align 4, !tbaa !9
  %794 = and i32 %793, 268435456
  %795 = icmp ne i32 %794, 0
  br i1 %795, label %796, label %806

796:                                              ; preds = %792
  %797 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %798 = load float, ptr %797, align 16, !tbaa !41
  %799 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %800 = load float, ptr %799, align 4, !tbaa !41
  %801 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %802 = load float, ptr %801, align 8, !tbaa !41
  %803 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %804 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %805 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %798, float noundef %800, float noundef %802, ptr noundef nonnull align 4 dereferenceable(4) %803, ptr noundef nonnull align 4 dereferenceable(4) %804, ptr noundef nonnull align 4 dereferenceable(4) %805)
  br label %806

806:                                              ; preds = %796, %792, %788
  %807 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 0
  %808 = load float, ptr %807, align 16, !tbaa !41
  %809 = load ptr, ptr %6, align 8, !tbaa !5
  %810 = getelementptr inbounds float, ptr %809, i64 0
  store float %808, ptr %810, align 4, !tbaa !41
  %811 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 1
  %812 = load float, ptr %811, align 4, !tbaa !41
  %813 = load ptr, ptr %6, align 8, !tbaa !5
  %814 = getelementptr inbounds float, ptr %813, i64 1
  store float %812, ptr %814, align 4, !tbaa !41
  %815 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 2
  %816 = load float, ptr %815, align 8, !tbaa !41
  %817 = load ptr, ptr %6, align 8, !tbaa !5
  %818 = getelementptr inbounds float, ptr %817, i64 2
  store float %816, ptr %818, align 4, !tbaa !41
  %819 = load i8, ptr %18, align 1, !tbaa !78, !range !39, !noundef !40
  %820 = trunc i8 %819 to i1
  br i1 %820, label %821, label %826

821:                                              ; preds = %806
  %822 = getelementptr inbounds [4 x float], ptr %21, i64 0, i64 3
  %823 = load float, ptr %822, align 4, !tbaa !41
  %824 = load ptr, ptr %6, align 8, !tbaa !5
  %825 = getelementptr inbounds float, ptr %824, i64 3
  store float %823, ptr %825, align 4, !tbaa !41
  br label %826

826:                                              ; preds = %821, %806
  br label %827

827:                                              ; preds = %826, %737, %734
  call void @_ZN5ImGui5PopIDEv()
  call void @_ZN5ImGui8EndGroupEv()
  %828 = load ptr, ptr %8, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.ImGuiWindow, ptr %828, i32 0, i32 49
  %830 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %829, i32 0, i32 11
  %831 = load i32, ptr %830, align 4, !tbaa !94
  %832 = and i32 %831, 1
  %833 = icmp ne i32 %832, 0
  br i1 %833, label %834, label %885

834:                                              ; preds = %827
  %835 = load i32, ptr %7, align 4, !tbaa !9
  %836 = and i32 %835, 512
  %837 = icmp ne i32 %836, 0
  br i1 %837, label %885, label %838

838:                                              ; preds = %834
  %839 = call noundef zeroext i1 @_ZN5ImGui19BeginDragDropTargetEv()
  br i1 %839, label %840, label %885

840:                                              ; preds = %838
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #12
  store i8 0, ptr %49, align 1, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #12
  %841 = call noundef ptr @_ZN5ImGui21AcceptDragDropPayloadEPKci(ptr noundef @.str.95, i32 noundef 0)
  store ptr %841, ptr %50, align 8, !tbaa !5
  %842 = load ptr, ptr %50, align 8, !tbaa !5
  %843 = icmp ne ptr %842, null
  br i1 %843, label %844, label %849

844:                                              ; preds = %840
  %845 = load ptr, ptr %6, align 8, !tbaa !5
  %846 = load ptr, ptr %50, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.ImGuiPayload, ptr %846, i32 0, i32 0
  %848 = load ptr, ptr %847, align 8, !tbaa !95
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %845, ptr align 1 %848, i64 12, i1 false)
  store i8 1, ptr %49, align 1, !tbaa !78
  store i8 1, ptr %23, align 1, !tbaa !78
  br label %849

849:                                              ; preds = %844, %840
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #12
  %850 = call noundef ptr @_ZN5ImGui21AcceptDragDropPayloadEPKci(ptr noundef @.str.96, i32 noundef 0)
  store ptr %850, ptr %51, align 8, !tbaa !5
  %851 = load ptr, ptr %51, align 8, !tbaa !5
  %852 = icmp ne ptr %851, null
  br i1 %852, label %853, label %861

853:                                              ; preds = %849
  %854 = load ptr, ptr %6, align 8, !tbaa !5
  %855 = load ptr, ptr %51, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.ImGuiPayload, ptr %855, i32 0, i32 0
  %857 = load ptr, ptr %856, align 8, !tbaa !95
  %858 = load i32, ptr %20, align 4, !tbaa !9
  %859 = sext i32 %858 to i64
  %860 = mul i64 4, %859
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %854, ptr align 1 %857, i64 %860, i1 false)
  store i8 1, ptr %49, align 1, !tbaa !78
  store i8 1, ptr %23, align 1, !tbaa !78
  br label %861

861:                                              ; preds = %853, %849
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #12
  %862 = load i8, ptr %49, align 1, !tbaa !78, !range !39, !noundef !40
  %863 = trunc i8 %862 to i1
  br i1 %863, label %864, label %884

864:                                              ; preds = %861
  %865 = load i32, ptr %7, align 4, !tbaa !9
  %866 = and i32 %865, 268435456
  %867 = icmp ne i32 %866, 0
  br i1 %867, label %868, label %884

868:                                              ; preds = %864
  %869 = load ptr, ptr %6, align 8, !tbaa !5
  %870 = getelementptr inbounds float, ptr %869, i64 0
  %871 = load float, ptr %870, align 4, !tbaa !41
  %872 = load ptr, ptr %6, align 8, !tbaa !5
  %873 = getelementptr inbounds float, ptr %872, i64 1
  %874 = load float, ptr %873, align 4, !tbaa !41
  %875 = load ptr, ptr %6, align 8, !tbaa !5
  %876 = getelementptr inbounds float, ptr %875, i64 2
  %877 = load float, ptr %876, align 4, !tbaa !41
  %878 = load ptr, ptr %6, align 8, !tbaa !5
  %879 = getelementptr inbounds float, ptr %878, i64 0
  %880 = load ptr, ptr %6, align 8, !tbaa !5
  %881 = getelementptr inbounds float, ptr %880, i64 1
  %882 = load ptr, ptr %6, align 8, !tbaa !5
  %883 = getelementptr inbounds float, ptr %882, i64 2
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %871, float noundef %874, float noundef %877, ptr noundef nonnull align 4 dereferenceable(4) %879, ptr noundef nonnull align 4 dereferenceable(4) %881, ptr noundef nonnull align 4 dereferenceable(4) %883)
  br label %884

884:                                              ; preds = %868, %864, %861
  call void @_ZN5ImGui17EndDragDropTargetEv()
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #12
  br label %885

885:                                              ; preds = %884, %838, %834, %827
  %886 = load ptr, ptr %36, align 8, !tbaa !5
  %887 = icmp ne ptr %886, null
  br i1 %887, label %888, label %906

888:                                              ; preds = %885
  %889 = load ptr, ptr %10, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.ImGuiContext, ptr %889, i32 0, i32 36
  %891 = load i32, ptr %890, align 8, !tbaa !96
  %892 = icmp ne i32 %891, 0
  br i1 %892, label %893, label %906

893:                                              ; preds = %888
  %894 = load ptr, ptr %10, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.ImGuiContext, ptr %894, i32 0, i32 50
  %896 = load ptr, ptr %895, align 8, !tbaa !97
  %897 = load ptr, ptr %36, align 8, !tbaa !5
  %898 = icmp eq ptr %896, %897
  br i1 %898, label %899, label %906

899:                                              ; preds = %893
  %900 = load ptr, ptr %10, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.ImGuiContext, ptr %900, i32 0, i32 36
  %902 = load i32, ptr %901, align 8, !tbaa !96
  %903 = load ptr, ptr %8, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.ImGuiWindow, ptr %903, i32 0, i32 49
  %905 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %904, i32 0, i32 10
  store i32 %902, ptr %905, align 8, !tbaa !98
  br label %906

906:                                              ; preds = %899, %893, %888, %885
  %907 = load i8, ptr %23, align 1, !tbaa !78, !range !39, !noundef !40
  %908 = trunc i8 %907 to i1
  br i1 %908, label %909, label %914

909:                                              ; preds = %906
  %910 = load ptr, ptr %8, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.ImGuiWindow, ptr %910, i32 0, i32 49
  %912 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %911, i32 0, i32 10
  %913 = load i32, ptr %912, align 8, !tbaa !98
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %913)
  br label %914

914:                                              ; preds = %909, %906
  %915 = load i8, ptr %23, align 1, !tbaa !78, !range !39, !noundef !40
  %916 = trunc i8 %915 to i1
  store i1 %916, ptr %4, align 1
  store i32 1, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #12
  br label %917

917:                                              ; preds = %914, %57
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #12
  %918 = load i1, ptr %4, align 1
  ret i1 %918
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN17ImGuiNextItemData10ClearFlagsEv(ptr noundef nonnull align 4 dereferenceable(16)) #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)) #6

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

declare noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef, i32 noundef) #6

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

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

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

declare noundef zeroext i1 @_ZN5ImGui19BeginDragDropTargetEv() #6

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

declare void @_ZN5ImGui17EndDragDropTargetEv() #6

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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 #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 willreturn memory(read) "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 #12 = { nounwind }
attributes #13 = { noreturn nounwind }
attributes #14 = { nounwind willreturn memory(read) }

!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 131}
!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, !14, i64 64, !14, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !13, i64 84, !13, i64 92, !13, i64 100, !13, i64 108, !13, i64 116, !15, i64 124, !15, i64 125, !15, i64 126, !15, i64 127, !15, i64 128, !15, i64 129, !15, i64 130, !15, i64 131, !15, i64 132, !15, i64 133, !15, i64 134, !7, i64 135, !16, i64 136, !16, i64 138, !16, i64 140, !10, i64 144, !7, i64 148, !7, i64 149, !7, i64 150, !15, i64 151, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !13, i64 176, !13, i64 184, !17, i64 192, !18, i64 208, !19, i64 496, !19, i64 512, !19, i64 528, !19, i64 544, !19, i64 560, !19, i64 576, !10, i64 592, !14, i64 596, !14, i64 600, !26, i64 604, !27, i64 640, !29, i64 656, !14, i64 672, !10, i64 676, !6, i64 680, !30, i64 688, !6, i64 856, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !7, i64 896, !7, i64 904, !15, i64 936, !10, i64 940, !10, i64 944}
!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, !14, i64 48, !14, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !19, i64 72, !19, i64 88, !20, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !15, i64 120, !15, i64 121, !15, i64 122, !13, i64 124, !21, i64 136, !6, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !14, i64 180, !14, i64 184, !22, i64 192, !23, i64 208, !23, i64 224, !24, i64 240, !7, i64 256, !25, i64 268, !25, i64 272, !25, i64 276, !6, i64 280}
!19 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!20 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!21 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!22 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"_ZTS6ImVec1", !14, i64 0}
!26 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !7, i64 24}
!27 = !{!"_ZTS12ImGuiStorage", !28, i64 0}
!28 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS10ImDrawList", !31, i64 0, !32, i64 16, !33, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !10, i64 76, !6, i64 80, !6, i64 88, !34, i64 96, !35, i64 112, !36, i64 128, !37, i64 144}
!31 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!37 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !38, i64 8}
!38 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!14, !14, i64 0}
!42 = !{!43, !14, i64 80}
!43 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !13, i64 4, !14, i64 12, !14, i64 16, !13, i64 20, !13, i64 28, !10, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !13, i64 56, !14, i64 64, !14, i64 68, !13, i64 72, !13, i64 80, !13, i64 88, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !10, i64 128, !13, i64 132, !13, i64 140, !13, i64 148, !13, i64 156, !14, i64 164, !15, i64 168, !15, i64 169, !14, i64 172, !7, i64 176}
!44 = !{!45, !10, i64 11916}
!45 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !15, i64 2, !15, i64 3, !46, i64 8, !43, i64 5464, !6, i64 6408, !14, i64 6416, !14, i64 6420, !47, i64 6424, !49, i64 6568, !10, i64 6576, !10, i64 6580, !10, i64 6584, !21, i64 6592, !21, i64 6608, !21, i64 6624, !21, i64 6640, !27, i64 6656, !10, i64 6672, !6, i64 6680, !6, i64 6688, !6, i64 6696, !6, i64 6704, !6, i64 6712, !13, i64 6720, !14, i64 6728, !10, i64 6732, !15, i64 6736, !10, i64 6740, !14, i64 6744, !14, i64 6748, !10, i64 6752, !10, i64 6756, !14, i64 6760, !15, i64 6764, !15, i64 6765, !15, i64 6766, !15, i64 6767, !15, i64 6768, !10, i64 6772, !10, i64 6776, !50, i64 6784, !13, i64 6792, !6, i64 6800, !51, i64 6808, !10, i64 6812, !15, i64 6816, !15, i64 6817, !6, i64 6824, !10, i64 6832, !14, i64 6836, !52, i64 6840, !53, i64 6944, !54, i64 6960, !55, i64 6976, !56, i64 6992, !57, i64 7008, !57, i64 7024, !6, i64 7040, !10, i64 7048, !10, i64 7052, !10, i64 7056, !10, i64 7060, !10, i64 7064, !10, i64 7068, !10, i64 7072, !10, i64 7076, !10, i64 7080, !51, i64 7084, !19, i64 7088, !10, i64 7104, !6, i64 7112, !6, i64 7120, !6, i64 7128, !14, i64 7136, !14, i64 7140, !15, i64 7144, !20, i64 7148, !10, i64 7152, !15, i64 7156, !15, i64 7157, !15, i64 7158, !15, i64 7159, !15, i64 7160, !15, i64 7161, !15, i64 7162, !10, i64 7164, !19, i64 7168, !15, i64 7184, !15, i64 7185, !10, i64 7188, !58, i64 7192, !10, i64 7196, !10, i64 7200, !10, i64 7204, !59, i64 7208, !59, i64 7256, !59, i64 7304, !6, i64 7352, !6, i64 7360, !10, i64 7368, !10, i64 7372, !10, i64 7376, !10, i64 7380, !15, i64 7384, !60, i64 7392, !61, i64 7448, !14, i64 7480, !30, i64 7488, !30, i64 7656, !10, i64 7824, !15, i64 7828, !15, i64 7829, !10, i64 7832, !10, i64 7836, !10, i64 7840, !62, i64 7848, !19, i64 7912, !10, i64 7928, !10, i64 7932, !14, i64 7936, !10, i64 7940, !10, i64 7944, !10, i64 7948, !63, i64 7952, !7, i64 7968, !6, i64 7976, !64, i64 7984, !66, i64 8024, !67, i64 8040, !13, i64 8056, !68, i64 8064, !72, i64 11792, !10, i64 11912, !10, i64 11916, !14, i64 11920, !7, i64 11924, !48, i64 11936, !15, i64 11952, !14, i64 11956, !14, i64 11960, !14, i64 11964, !10, i64 11968, !69, i64 11976, !10, i64 11992, !13, i64 11996, !13, i64 12004, !15, i64 12012, !14, i64 12016, !74, i64 12024, !75, i64 12040, !76, i64 12056, !15, i64 12072, !77, i64 12076, !6, i64 12080, !74, i64 12088, !14, i64 12104, !15, i64 12108, !10, i64 12112, !10, i64 12116, !10, i64 12120, !15, i64 12124, !10, i64 12128, !7, i64 12132, !10, i64 12612, !14, i64 12616, !10, i64 12620, !10, i64 12624, !10, i64 12628, !7, i64 12632}
!46 = !{!"_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, !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, !6, i64 288, !13, i64 296, !7, i64 304, !14, i64 312, !14, i64 316, !15, i64 320, !15, i64 321, !15, i64 322, !15, i64 323, !7, i64 324, !7, i64 836, !15, i64 920, !15, i64 921, !15, i64 922, !15, i64 923, !15, i64 924, !15, i64 925, !15, i64 926, !14, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !10, i64 948, !13, i64 952, !13, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !32, i64 5440}
!47 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !48, i64 24, !10, i64 40, !7, i64 44}
!48 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!49 = !{!"double", !7, i64 0}
!50 = !{!"long long", !7, i64 0}
!51 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!52 = !{!"_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, !15, i64 48, !19, i64 52, !6, i64 72, !6, i64 80, !14, i64 88, !13, i64 92}
!53 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !14, i64 4, !15, i64 8, !10, i64 12}
!54 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!59 = !{!"_ZTS18ImGuiNavMoveResult", !10, i64 0, !10, i64 4, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !19, i64 28}
!60 = !{!"_ZTS10ImDrawData", !15, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !13, i64 28, !13, i64 36, !13, i64 44}
!61 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!62 = !{!"_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}
!63 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !65, i64 0, !27, i64 16, !10, i64 32}
!65 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !32, i64 16, !69, i64 32, !69, i64 48, !15, i64 64, !10, i64 68, !14, i64 72, !70, i64 76, !14, i64 3696, !15, i64 3700, !15, i64 3701, !10, i64 3704, !6, i64 3712, !6, i64 3720}
!69 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !14, i64 20, !71, i64 24}
!71 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !10, i64 3588, !10, i64 3592}
!72 = !{!"_ZTS6ImFont", !23, i64 0, !14, i64 16, !14, i64 20, !32, i64 24, !73, i64 40, !6, i64 56, !13, i64 64, !6, i64 72, !6, i64 80, !16, i64 88, !16, i64 90, !16, i64 92, !14, i64 96, !14, i64 100, !14, i64 104, !10, i64 108, !15, i64 112}
!73 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS15ImGuiTextBuffer", !69, i64 0}
!75 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!78 = !{!15, !15, i64 0}
!79 = !{!45, !14, i64 11920}
!80 = !{i64 0, i64 4, !41, i64 4, i64 4, !41}
!81 = !{!43, !10, i64 128}
!82 = !{!13, !14, i64 0}
!83 = !{!12, !14, i64 208}
!84 = distinct !{!84, !85}
!85 = !{!"llvm.loop.mustprogress"}
!86 = !{!7, !7, i64 0}
!87 = distinct !{!87, !85}
!88 = !{!13, !14, i64 4}
!89 = !{i64 0, i64 4, !41, i64 4, i64 4, !41, i64 8, i64 4, !41, i64 12, i64 4, !41}
!90 = !{!43, !14, i64 76}
!91 = !{!45, !6, i64 6680}
!92 = !{!43, !14, i64 60}
!93 = distinct !{!93, !85}
!94 = !{!12, !10, i64 276}
!95 = !{!62, !6, i64 0}
!96 = !{!45, !10, i64 6752}
!97 = !{!45, !6, i64 6800}
!98 = !{!12, !10, i64 272}


; 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.1 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [57 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi = external hidden unnamed_addr constant [67 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.65 = 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.86 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.96 = 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

declare noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #6

declare noundef float @_ZN5ImGui14GetFrameHeightEv() local_unnamed_addr #6

declare void @_ZN5ImGui5PopIDEv() local_unnamed_addr #6

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) local_unnamed_addr #6

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

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

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

declare void @_ZN5ImGui8EndPopupEv() local_unnamed_addr #6

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

declare void @_ZN5ImGui6PushIDEPKc(ptr noundef) local_unnamed_addr #6

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

declare void @_ZN5ImGui8EndGroupEv() local_unnamed_addr #6

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

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

declare void @_ZN5ImGui16SetNextItemWidthEf(float noundef) local_unnamed_addr #6

; 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 #4 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 = tail call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %16 = getelementptr inbounds i8, ptr %15, i64 131
  %17 = load i8, ptr %16, align 1, !tbaa !5, !range !37, !noundef !38
  %18 = trunc nuw i8 %17 to i1
  br i1 %18, label %383, label %19

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

24:                                               ; preds = %19
  %25 = getelementptr inbounds i8, ptr %20, i64 5544
  %26 = load float, ptr %25, align 4, !tbaa !40
  %27 = fadd float %21, %26
  br label %28

28:                                               ; preds = %19, %24
  %29 = phi float [ %27, %24 ], [ 0.000000e+00, %19 ]
  %30 = fsub float %22, %29
  %31 = tail call noundef ptr @_ZN5ImGui19FindRenderedTextEndEPKcS1_(ptr noundef %0, ptr noundef null)
  %32 = getelementptr inbounds i8, ptr %20, i64 6944
  tail call void @_ZN17ImGuiNextItemData10ClearFlagsEv(ptr noundef nonnull align 4 dereferenceable(16) %32)
  tail call void @_ZN5ImGui10BeginGroupEv()
  tail call void @_ZN5ImGui6PushIDEPKc(ptr noundef %0)
  %33 = and i32 %2, 32
  %.not220 = icmp eq i32 %33, 0
  %34 = and i32 %2, -7340041
  %35 = or disjoint i32 %34, 1048584
  %.0196 = select i1 %.not220, i32 %2, i32 %35
  %36 = and i32 %.0196, 8
  %.not221 = icmp eq i32 %36, 0
  br i1 %.not221, label %37, label %38

37:                                               ; preds = %28
  tail call void @_ZN5ImGui21ColorEditOptionsPopupEPKfi(ptr noundef %1, i32 noundef %.0196)
  br label %38

38:                                               ; preds = %37, %28
  %39 = and i32 %.0196, 7340032
  %.not222 = icmp eq i32 %39, 0
  br i1 %.not222, label %40, label %45

40:                                               ; preds = %38
  %41 = getelementptr inbounds i8, ptr %20, i64 11916
  %42 = load i32, ptr %41, align 4, !tbaa !42
  %43 = and i32 %42, 7340032
  %44 = or disjoint i32 %43, %.0196
  br label %45

45:                                               ; preds = %40, %38
  %.1 = phi i32 [ %.0196, %38 ], [ %44, %40 ]
  %46 = and i32 %.1, 25165824
  %.not223 = icmp eq i32 %46, 0
  br i1 %.not223, label %47, label %52

47:                                               ; preds = %45
  %48 = getelementptr inbounds i8, ptr %20, i64 11916
  %49 = load i32, ptr %48, align 4, !tbaa !42
  %50 = and i32 %49, 25165824
  %51 = or disjoint i32 %50, %.1
  br label %52

52:                                               ; preds = %47, %45
  %.2 = phi i32 [ %.1, %45 ], [ %51, %47 ]
  %53 = and i32 %.2, 100663296
  %.not224 = icmp eq i32 %53, 0
  br i1 %.not224, label %54, label %._crit_edge

54:                                               ; preds = %52
  %55 = getelementptr inbounds i8, ptr %20, i64 11916
  %56 = load i32, ptr %55, align 4, !tbaa !42
  %57 = and i32 %56, 100663296
  %58 = or disjoint i32 %57, %.2
  br label %._crit_edge

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

68:                                               ; preds = %._crit_edge
  tail call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.1, i32 noundef 4213, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi) #14
  unreachable

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

72:                                               ; preds = %69
  tail call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.1, i32 noundef 4214, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui10ColorEdit4EPKcPfi) #14
  unreachable

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

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

88:                                               ; preds = %73, %85
  %89 = phi float [ %87, %85 ], [ 1.000000e+00, %73 ]
  store float %89, ptr %84, align 4, !tbaa !76
  %90 = and i32 %.4.fr, 268435456
  %.not227 = icmp ne i32 %90, 0
  %91 = and i32 %.4.fr, 269484032
  %or.cond255.not = icmp eq i32 %91, 269484032
  br i1 %or.cond255.not, label %92, label %95

92:                                               ; preds = %88
  %93 = extractelement <2 x float> %80, i64 0
  %94 = extractelement <2 x float> %80, i64 1
  call void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef %93, float noundef %94, float noundef %83, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %78, ptr noundef nonnull align 4 dereferenceable(4) %81)
  %.pre288 = load float, ptr %78, align 4, !tbaa !76
  br label %108

95:                                               ; preds = %88
  %96 = and i32 %.4.fr, 136314880
  %or.cond256.not = icmp eq i32 %96, 136314880
  %97 = extractelement <2 x float> %80, i64 1
  br i1 %or.cond256.not, label %98, label %108

98:                                               ; preds = %95
  %99 = extractelement <2 x float> %80, i64 0
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %99, float noundef %97, float noundef %83, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %78, ptr noundef nonnull align 4 dereferenceable(4) %81)
  %100 = load float, ptr %78, align 4, !tbaa !76
  %101 = fcmp oeq float %100, 0.000000e+00
  br i1 %101, label %102, label %108

102:                                              ; preds = %98
  %103 = getelementptr inbounds i8, ptr %20, i64 11924
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(12) %103, ptr noundef nonnull dereferenceable(12) %1, i64 12)
  %104 = icmp eq i32 %bcmp, 0
  br i1 %104, label %105, label %108

105:                                              ; preds = %102
  %106 = getelementptr inbounds i8, ptr %20, i64 11920
  %107 = load float, ptr %106, align 8, !tbaa !77
  store float %107, ptr %4, align 16, !tbaa !76
  br label %108

108:                                              ; preds = %95, %105, %102, %98, %92
  %109 = phi float [ %97, %95 ], [ %100, %105 ], [ %100, %102 ], [ %100, %98 ], [ %.pre288, %92 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #15
  %110 = load <4 x float>, ptr %4, align 16
  %111 = getelementptr inbounds i8, ptr %5, i64 4
  %112 = getelementptr inbounds i8, ptr %5, i64 8
  %113 = getelementptr inbounds i8, ptr %5, i64 12
  %114 = load <2 x float>, ptr %81, align 8, !tbaa !76
  %115 = insertelement <4 x float> %110, float %109, i64 1
  %116 = shufflevector <2 x float> %114, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %117 = shufflevector <4 x float> %115, <4 x float> %116, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
  %118 = fcmp oge <4 x float> %117, zeroinitializer
  %119 = select <4 x i1> %118, <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>
  %120 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %117, <4 x float> <float 2.550000e+02, float 2.550000e+02, float 2.550000e+02, float 2.550000e+02>, <4 x float> %119)
  %121 = fptosi <4 x float> %120 to <4 x i32>
  store <4 x i32> %121, ptr %5, align 16, !tbaa !78
  %122 = getelementptr inbounds i8, ptr %15, i64 208
  %.sroa.043.0.copyload = load float, ptr %122, align 8, !tbaa !76
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %15, i64 212
  %.sroa.6.0.copyload = load float, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !76
  %123 = getelementptr inbounds i8, ptr %20, i64 5592
  %124 = load i32, ptr %123, align 4, !tbaa !79
  %125 = icmp eq i32 %124, 0
  %126 = select i1 %125, float %29, float 0.000000e+00
  %127 = fadd float %.sroa.043.0.copyload, %126
  store float %127, ptr %122, align 8, !tbaa !80
  %128 = and i32 %.4.fr, 3145728
  %.not231 = icmp ne i32 %128, 0
  %129 = and i32 %65, 32
  %130 = icmp eq i32 %129, 0
  %or.cond258 = select i1 %.not231, i1 %130, i1 false
  br i1 %or.cond258, label %131, label %218

131:                                              ; preds = %108
  %132 = getelementptr inbounds i8, ptr %20, i64 5544
  %133 = load float, ptr %132, align 4, !tbaa !40
  %134 = add nsw i32 %77, -1
  %135 = uitofp nneg i32 %134 to float
  %136 = fneg float %133
  %137 = call float @llvm.fmuladd.f32(float %136, float %135, float %30)
  %138 = uitofp nneg i32 %77 to float
  %139 = fdiv float %137, %138
  %140 = fptosi float %139 to i32
  %141 = sitofp i32 %140 to float
  %142 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 1.000000e+00, float noundef %141)
  %143 = load float, ptr %132, align 4, !tbaa !40
  %144 = fadd float %142, %143
  %145 = fneg float %144
  %146 = call float @llvm.fmuladd.f32(float %145, float %135, float %30)
  %147 = fptosi float %146 to i32
  %148 = sitofp i32 %147 to float
  %149 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 1.000000e+00, float noundef %148)
  %150 = and i32 %.4.fr, 16777216
  %.not234 = icmp eq i32 %150, 0
  %151 = select i1 %.not234, ptr @.str.65, ptr @.str.64
  %152 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef nonnull %151, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  %.sroa.0.0.vec.extract = extractelement <2 x float> %152, i64 0
  %153 = fcmp ugt float %142, %.sroa.0.0.vec.extract
  %154 = and i32 %.4.fr, 2097152
  %.not235 = icmp eq i32 %154, 0
  %155 = select i1 %.not235, i64 1, i64 2
  %156 = select i1 %.not226, float 1.000000e+00, float 0.000000e+00
  %157 = select i1 %153, i64 %155, i64 0
  %158 = select i1 %.not226, i32 255, i32 0
  %159 = and i32 %65, 8
  %.not254 = icmp eq i32 %159, 0
  %160 = zext nneg i32 %77 to i64
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %142)
  br i1 %.not234, label %.thread313, label %161

161:                                              ; preds = %131
  br i1 %.not235, label %.thread306, label %163

.thread306:                                       ; preds = %161
  %162 = load ptr, ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, align 16, !tbaa !39
  br label %168

163:                                              ; preds = %161
  %164 = load i32, ptr %111, align 4, !tbaa !78
  %.fr = freeze i32 %164
  %165 = icmp eq i32 %.fr, 0
  %166 = load ptr, ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, align 16, !tbaa !39
  br i1 %165, label %168, label %167

167:                                              ; preds = %163
  br label %168

168:                                              ; preds = %167, %163, %.thread306
  %169 = phi float [ 0.000000e+00, %167 ], [ 0.000000e+00, %.thread306 ], [ 0x47EFFFFFE0000000, %163 ]
  %170 = phi ptr [ %166, %167 ], [ %162, %.thread306 ], [ %166, %163 ]
  %171 = phi float [ %156, %167 ], [ %156, %.thread306 ], [ 0xC7EFFFFFE0000000, %163 ]
  %172 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE15fmt_table_float, i64 0, i64 %157, i64 0
  %173 = load ptr, ptr %172, align 16, !tbaa !39
  %174 = call noundef zeroext i1 @_ZN5ImGui9DragFloatEPKcPffffS1_f(ptr noundef %170, ptr noundef nonnull %4, float noundef 0x3F70101020000000, float noundef %169, float noundef %171, ptr noundef %173, float noundef 1.000000e+00)
  %175 = zext i1 %174 to i8
  br i1 %.not254, label %176, label %.split.peel.next.preheader

176:                                              ; preds = %168
  %177 = call noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.86, i32 noundef 1)
  br label %.split.peel.next.preheader

.split.peel.next.preheader:                       ; preds = %168, %176
  br label %.split.peel.next

.thread313:                                       ; preds = %131
  %178 = load i32, ptr %111, align 4
  %.fr319 = freeze i32 %178
  %179 = icmp eq i32 %.fr319, 0
  %spec.select = select i1 %179, i32 2147483647, i32 0
  %spec.select323 = select i1 %179, i32 -2147483648, i32 %158
  %180 = select i1 %.not235, i32 0, i32 %spec.select
  %181 = select i1 %.not235, i32 %158, i32 %spec.select323
  %182 = load ptr, ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, align 16, !tbaa !39
  %183 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE13fmt_table_int, i64 0, i64 %157, i64 0
  %184 = load ptr, ptr %183, align 16, !tbaa !39
  %185 = call noundef zeroext i1 @_ZN5ImGui7DragIntEPKcPifiiS1_(ptr noundef %182, ptr noundef nonnull %5, float noundef 1.000000e+00, i32 noundef %180, i32 noundef %181, ptr noundef %184)
  %186 = zext i1 %185 to i8
  br i1 %.not254, label %187, label %.split.us.peel.next.preheader

187:                                              ; preds = %.thread313
  %188 = call noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.86, i32 noundef 1)
  br label %.split.us.peel.next.preheader

.split.us.peel.next.preheader:                    ; preds = %.thread313, %187
  br label %.split.us.peel.next

.split.us.peel.next:                              ; preds = %.split.us.peel.next.preheader, %202
  %indvars.iv278 = phi i64 [ %indvars.iv.next279, %202 ], [ 1, %.split.us.peel.next.preheader ]
  %.0200271.us = phi i8 [ %199, %202 ], [ %186, %.split.us.peel.next.preheader ]
  %189 = load float, ptr %132, align 4, !tbaa !40
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef %189)
  %indvars.iv.next279 = add nuw nsw i64 %indvars.iv278, 1
  %190 = icmp ult i64 %indvars.iv.next279, %160
  %191 = select i1 %190, float %142, float %149
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %191)
  %192 = getelementptr inbounds [4 x ptr], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, i64 0, i64 %indvars.iv278
  %193 = load ptr, ptr %192, align 8, !tbaa !39
  %194 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 %indvars.iv278
  %195 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE13fmt_table_int, i64 0, i64 %157, i64 %indvars.iv278
  %196 = load ptr, ptr %195, align 8, !tbaa !39
  %197 = call noundef zeroext i1 @_ZN5ImGui7DragIntEPKcPifiiS1_(ptr noundef %193, ptr noundef nonnull %194, float noundef 1.000000e+00, i32 noundef 0, i32 noundef %158, ptr noundef %196)
  %198 = zext i1 %197 to i8
  %199 = or i8 %.0200271.us, %198
  br i1 %.not254, label %200, label %202

200:                                              ; preds = %.split.us.peel.next
  %201 = call noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.86, i32 noundef 1)
  br label %202

202:                                              ; preds = %200, %.split.us.peel.next
  %exitcond282.not = icmp eq i64 %indvars.iv.next279, %160
  br i1 %exitcond282.not, label %.loopexit267, label %.split.us.peel.next, !llvm.loop !81

.split.peel.next:                                 ; preds = %.split.peel.next.preheader, %217
  %indvars.iv = phi i64 [ %indvars.iv.next, %217 ], [ 1, %.split.peel.next.preheader ]
  %.0200271 = phi i8 [ %213, %217 ], [ %175, %.split.peel.next.preheader ]
  %.0205270 = phi i8 [ %214, %217 ], [ %175, %.split.peel.next.preheader ]
  %203 = load float, ptr %132, align 4, !tbaa !40
  call void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef %203)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %204 = icmp ult i64 %indvars.iv.next, %160
  %205 = select i1 %204, float %142, float %149
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %205)
  %206 = getelementptr inbounds [4 x ptr], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE3ids, i64 0, i64 %indvars.iv
  %207 = load ptr, ptr %206, align 8, !tbaa !39
  %208 = getelementptr inbounds [4 x float], ptr %4, i64 0, i64 %indvars.iv
  %209 = getelementptr inbounds [3 x [4 x ptr]], ptr @_ZZN5ImGui10ColorEdit4EPKcPfiE15fmt_table_float, i64 0, i64 %157, i64 %indvars.iv
  %210 = load ptr, ptr %209, align 8, !tbaa !39
  %211 = call noundef zeroext i1 @_ZN5ImGui9DragFloatEPKcPffffS1_f(ptr noundef %207, ptr noundef nonnull %208, float noundef 0x3F70101020000000, float noundef 0.000000e+00, float noundef %156, ptr noundef %210, float noundef 1.000000e+00)
  %212 = zext i1 %211 to i8
  %213 = or i8 %.0200271, %212
  %214 = or i8 %213, %.0205270
  br i1 %.not254, label %215, label %217

215:                                              ; preds = %.split.peel.next
  %216 = call noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.86, i32 noundef 1)
  br label %217

217:                                              ; preds = %215, %.split.peel.next
  %exitcond.not = icmp eq i64 %indvars.iv.next, %160
  br i1 %exitcond.not, label %.loopexit267, label %.split.peel.next, !llvm.loop !84

218:                                              ; preds = %108
  %219 = and i32 %.4.fr, 4194304
  %.not232 = icmp ne i32 %219, 0
  %or.cond261 = select i1 %.not232, i1 %130, i1 false
  br i1 %or.cond261, label %220, label %.loopexit267

220:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #15
  %221 = extractelement <4 x i32> %121, i64 0
  %222 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %221, i32 noundef 0, i32 noundef 255)
  %223 = load i32, ptr %111, align 4, !tbaa !78
  %224 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %223, i32 noundef 0, i32 noundef 255)
  %225 = load i32, ptr %112, align 8, !tbaa !78
  %226 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %225, i32 noundef 0, i32 noundef 255)
  br i1 %75, label %227, label %231

227:                                              ; preds = %220
  %228 = load i32, ptr %113, align 4, !tbaa !78
  %229 = call noundef i32 @_ZL7ImClampIiET_S0_S0_S0_(i32 noundef %228, i32 noundef 0, i32 noundef 255)
  %230 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %6, i64 noundef 64, ptr noundef nonnull @.str.87, i32 noundef %222, i32 noundef %224, i32 noundef %226, i32 noundef %229)
  br label %233

231:                                              ; preds = %220
  %232 = call noundef i32 (ptr, i64, ptr, ...) @_Z14ImFormatStringPcmPKcz(ptr noundef nonnull %6, i64 noundef 64, ptr noundef nonnull @.str.88, i32 noundef %222, i32 noundef %224, i32 noundef %226)
  br label %233

233:                                              ; preds = %231, %227
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %30)
  %234 = call noundef zeroext i1 @_ZN5ImGui9InputTextEPKcPcmiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull @.str.89, ptr noundef nonnull %6, i64 noundef 64, i32 noundef 6, ptr noundef null, ptr noundef null)
  br i1 %234, label %.preheader268, label %245

.preheader268:                                    ; preds = %233, %.critedge
  %.0210 = phi ptr [ %239, %.critedge ], [ %6, %233 ]
  %235 = load i8, ptr %.0210, align 1, !tbaa !85
  %236 = icmp eq i8 %235, 35
  br i1 %236, label %.critedge, label %237

237:                                              ; preds = %.preheader268
  %238 = call noundef zeroext i1 @_ZL14ImCharIsBlankAc(i8 noundef signext %235)
  br i1 %238, label %.critedge, label %240

.critedge:                                        ; preds = %.preheader268, %237
  %239 = getelementptr inbounds i8, ptr %.0210, i64 1
  br label %.preheader268, !llvm.loop !86

240:                                              ; preds = %237
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %5, i8 0, i64 16, i1 false)
  br i1 %75, label %241, label %243

241:                                              ; preds = %240
  %242 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %.0210, ptr noundef nonnull @.str.90, ptr noundef nonnull %5, ptr noundef nonnull %111, ptr noundef nonnull %112, ptr noundef nonnull %113) #15
  br label %245

243:                                              ; preds = %240
  %244 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %.0210, ptr noundef nonnull @.str.91, ptr noundef nonnull %5, ptr noundef nonnull %111, ptr noundef nonnull %112) #15
  br label %245

245:                                              ; preds = %241, %243, %233
  %.2202 = phi i8 [ 0, %233 ], [ 1, %243 ], [ 1, %241 ]
  %246 = and i32 %65, 8
  %.not233 = icmp eq i32 %246, 0
  br i1 %.not233, label %247, label %249

247:                                              ; preds = %245
  %248 = call noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.86, i32 noundef 1)
  br label %249

249:                                              ; preds = %247, %245
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #15
  br label %.loopexit267

.loopexit267:                                     ; preds = %217, %202, %218, %249
  %.2207 = phi i8 [ 0, %249 ], [ 0, %218 ], [ 0, %202 ], [ %214, %217 ]
  %.3203 = phi i8 [ %.2202, %249 ], [ 0, %218 ], [ %199, %202 ], [ %213, %217 ]
  %250 = and i32 %65, 16
  %.not236 = icmp eq i32 %250, 0
  br i1 %.not236, label %251, label %300

251:                                              ; preds = %.loopexit267
  br i1 %130, label %252, label %259

252:                                              ; preds = %251
  %253 = load i32, ptr %123, align 4, !tbaa !79
  %254 = icmp eq i32 %253, 0
  br i1 %254, label %259, label %255

255:                                              ; preds = %252
  %256 = getelementptr inbounds i8, ptr %20, i64 5544
  %257 = load float, ptr %256, align 4, !tbaa !40
  %258 = fadd float %30, %257
  br label %259

259:                                              ; preds = %251, %252, %255
  %260 = phi float [ %258, %255 ], [ 0.000000e+00, %252 ], [ 0.000000e+00, %251 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #15
  %261 = fadd float %.sroa.043.0.copyload, %260
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %7, float noundef %261, float noundef %.sroa.6.0.copyload)
  %262 = load i64, ptr %7, align 8
  store i64 %262, ptr %122, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #15
  %263 = load float, ptr %1, align 4, !tbaa !76
  %264 = load float, ptr %79, align 4, !tbaa !76
  %265 = load float, ptr %82, align 4, !tbaa !76
  br i1 %75, label %266, label %269

266:                                              ; preds = %259
  %267 = getelementptr inbounds i8, ptr %1, i64 12
  %268 = load float, ptr %267, align 4, !tbaa !76
  br label %269

269:                                              ; preds = %259, %266
  %270 = phi float [ %268, %266 ], [ 1.000000e+00, %259 ]
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef %263, float noundef %264, float noundef %265, float noundef %270)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %9, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %271 = load <2 x float>, ptr %9, align 8
  %272 = call noundef zeroext i1 @_ZN5ImGui11ColorButtonEPKcRK6ImVec4i6ImVec2(ptr noundef nonnull @.str.92, ptr noundef nonnull align 4 dereferenceable(16) %8, i32 noundef %65, <2 x float> %271)
  %273 = and i32 %65, 4
  %.not238 = icmp eq i32 %273, 0
  %or.cond262 = select i1 %272, i1 %.not238, i1 false
  br i1 %or.cond262, label %274, label %281

274:                                              ; preds = %269
  %275 = getelementptr inbounds i8, ptr %20, i64 11936
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %275, ptr noundef nonnull align 4 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !87
  call void @_ZN5ImGui9OpenPopupEPKc(ptr noundef nonnull @.str.93)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #15
  %276 = getelementptr inbounds i8, ptr %15, i64 280
  %277 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %276)
  store <2 x float> %277, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #15
  %278 = getelementptr inbounds i8, ptr %20, i64 5540
  %279 = load float, ptr %278, align 4, !tbaa !88
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %12, float noundef -1.000000e+00, float noundef %279)
  %280 = 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> %280, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #15
  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) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  br label %281

281:                                              ; preds = %274, %269
  %282 = and i32 %65, 8
  %.not239 = icmp eq i32 %282, 0
  br i1 %.not239, label %283, label %285

283:                                              ; preds = %281
  %284 = call noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef nonnull @.str.86, i32 noundef 1)
  br label %285

285:                                              ; preds = %283, %281
  %286 = call noundef zeroext i1 @_ZN5ImGui10BeginPopupEPKci(ptr noundef nonnull @.str.93, i32 noundef 0)
  br i1 %286, label %287, label %299

287:                                              ; preds = %285
  %288 = getelementptr inbounds i8, ptr %20, i64 6680
  %289 = load ptr, ptr %288, align 8, !tbaa !89
  %.not240 = icmp eq ptr %31, %0
  br i1 %.not240, label %291, label %290

290:                                              ; preds = %287
  call void @_ZN5ImGui6TextExEPKcS1_i(ptr noundef %0, ptr noundef %31, i32 noundef 0)
  call void @_ZN5ImGui7SpacingEv()
  br label %291

291:                                              ; preds = %290, %287
  %292 = and i32 %2, 529072130
  %293 = or disjoint i32 %292, 7602304
  %294 = fmul float %21, 1.200000e+01
  call void @_ZN5ImGui16SetNextItemWidthEf(float noundef %294)
  %295 = getelementptr inbounds i8, ptr %20, i64 11936
  %296 = call noundef zeroext i1 @_ZN5ImGui12ColorPicker4EPKcPfiPKf(ptr noundef nonnull @.str.94, ptr noundef nonnull %1, i32 noundef %293, ptr noundef nonnull %295)
  %297 = zext i1 %296 to i8
  %298 = or i8 %.3203, %297
  call void @_ZN5ImGui8EndPopupEv()
  br label %299

299:                                              ; preds = %291, %285
  %.0208 = phi ptr [ %289, %291 ], [ null, %285 ]
  %.4204 = phi i8 [ %298, %291 ], [ %.3203, %285 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #15
  br label %300

300:                                              ; preds = %299, %.loopexit267
  %.1209 = phi ptr [ null, %.loopexit267 ], [ %.0208, %299 ]
  %.5 = phi i8 [ %.3203, %.loopexit267 ], [ %.4204, %299 ]
  %.not241 = icmp ne ptr %31, %0
  %301 = and i32 %65, 128
  %.not242 = icmp eq i32 %301, 0
  %or.cond263 = select i1 %.not241, i1 %.not242, i1 false
  br i1 %or.cond263, label %302, label %311

302:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #15
  %303 = fadd float %22, %.sroa.043.0.copyload
  %304 = getelementptr inbounds i8, ptr %20, i64 5544
  %305 = load float, ptr %304, align 4, !tbaa !40
  %306 = fadd float %303, %305
  %307 = getelementptr inbounds i8, ptr %20, i64 5524
  %308 = load float, ptr %307, align 4, !tbaa !90
  %309 = fadd float %.sroa.6.0.copyload, %308
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef %306, float noundef %309)
  %310 = load i64, ptr %14, align 8
  store i64 %310, ptr %122, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #15
  call void @_ZN5ImGui6TextExEPKcS1_i(ptr noundef %0, ptr noundef %31, i32 noundef 0)
  br label %311

311:                                              ; preds = %302, %300
  %312 = trunc nuw i8 %.5 to i1
  %313 = icmp eq ptr %.1209, null
  %or.cond = select i1 %312, i1 %313, i1 false
  br i1 %or.cond, label %314, label %344

314:                                              ; preds = %311
  %315 = trunc nuw i8 %.2207 to i1
  br i1 %315, label %..loopexit_crit_edge, label %.preheader.preheader

..loopexit_crit_edge:                             ; preds = %314
  %316 = load <2 x float>, ptr %4, align 16, !tbaa !76
  %.pre294.pre299.pre = load float, ptr %81, align 8, !tbaa !76
  br label %.loopexit

.preheader.preheader:                             ; preds = %314
  %317 = load <2 x i32>, ptr %5, align 16, !tbaa !78
  %318 = sitofp <2 x i32> %317 to <2 x float>
  %319 = fdiv <2 x float> %318, <float 2.550000e+02, float 2.550000e+02>
  store <2 x float> %319, ptr %4, align 16, !tbaa !76
  %320 = load <2 x i32>, ptr %112, align 8, !tbaa !78
  %321 = sitofp <2 x i32> %320 to <2 x float>
  %322 = fdiv <2 x float> %321, <float 2.550000e+02, float 2.550000e+02>
  store <2 x float> %322, ptr %81, align 8, !tbaa !76
  %323 = extractelement <2 x float> %322, i64 0
  br label %.loopexit

.loopexit:                                        ; preds = %..loopexit_crit_edge, %.preheader.preheader
  %.pre294.pre299 = phi float [ %.pre294.pre299.pre, %..loopexit_crit_edge ], [ %323, %.preheader.preheader ]
  %324 = phi <2 x float> [ %316, %..loopexit_crit_edge ], [ %319, %.preheader.preheader ]
  %325 = and i32 %.4.fr, 136314880
  %or.cond264.not = icmp eq i32 %325, 136314880
  br i1 %or.cond264.not, label %326, label %332

326:                                              ; preds = %.loopexit
  %327 = getelementptr inbounds i8, ptr %20, i64 11920
  %328 = extractelement <2 x float> %324, i64 0
  store float %328, ptr %327, align 8, !tbaa !77
  %329 = extractelement <2 x float> %324, i64 1
  call void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef %328, float noundef %329, float noundef %.pre294.pre299, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %78, ptr noundef nonnull align 4 dereferenceable(4) %81)
  %330 = getelementptr inbounds i8, ptr %20, i64 11924
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %330, ptr noundef nonnull align 16 dereferenceable(12) %4, i64 12, i1 false)
  %331 = load <2 x float>, ptr %4, align 16, !tbaa !76
  %.pre294.pre = load float, ptr %81, align 8, !tbaa !76
  br label %332

332:                                              ; preds = %326, %.loopexit
  %.pre294 = phi float [ %.pre294.pre, %326 ], [ %.pre294.pre299, %.loopexit ]
  %333 = phi <2 x float> [ %331, %326 ], [ %324, %.loopexit ]
  br i1 %or.cond255.not, label %334, label %338

334:                                              ; preds = %332
  %335 = extractelement <2 x float> %333, i64 0
  %336 = extractelement <2 x float> %333, i64 1
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %335, float noundef %336, float noundef %.pre294, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %78, ptr noundef nonnull align 4 dereferenceable(4) %81)
  %337 = load <2 x float>, ptr %4, align 16, !tbaa !76
  %.pre293 = load float, ptr %81, align 8, !tbaa !76
  br label %338

338:                                              ; preds = %332, %334
  %339 = phi float [ %.pre294, %332 ], [ %.pre293, %334 ]
  %340 = phi <2 x float> [ %333, %332 ], [ %337, %334 ]
  store <2 x float> %340, ptr %1, align 4, !tbaa !76
  store float %339, ptr %82, align 4, !tbaa !76
  br i1 %75, label %341, label %344

341:                                              ; preds = %338
  %342 = load float, ptr %84, align 4, !tbaa !76
  %343 = getelementptr inbounds i8, ptr %1, i64 12
  store float %342, ptr %343, align 4, !tbaa !76
  br label %344

344:                                              ; preds = %338, %341, %311
  call void @_ZN5ImGui5PopIDEv()
  call void @_ZN5ImGui8EndGroupEv()
  %345 = getelementptr inbounds i8, ptr %15, i64 276
  %346 = load i32, ptr %345, align 4, !tbaa !91
  %347 = and i32 %346, 1
  %.not246 = icmp ne i32 %347, 0
  %348 = and i32 %65, 512
  %.not247 = icmp eq i32 %348, 0
  %or.cond265 = select i1 %.not246, i1 %.not247, i1 false
  br i1 %or.cond265, label %349, label %367

349:                                              ; preds = %344
  %350 = call noundef zeroext i1 @_ZN5ImGui19BeginDragDropTargetEv()
  br i1 %350, label %351, label %367

351:                                              ; preds = %349
  %352 = call noundef ptr @_ZN5ImGui21AcceptDragDropPayloadEPKci(ptr noundef nonnull @.str.95, i32 noundef 0)
  %.not248 = icmp ne ptr %352, null
  br i1 %.not248, label %353, label %355

353:                                              ; preds = %351
  %354 = load ptr, ptr %352, align 8, !tbaa !92
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 1 dereferenceable(12) %354, i64 12, i1 false)
  br label %355

355:                                              ; preds = %353, %351
  %.6 = phi i8 [ 1, %353 ], [ %.5, %351 ]
  %356 = call noundef ptr @_ZN5ImGui21AcceptDragDropPayloadEPKci(ptr noundef nonnull @.str.96, i32 noundef 0)
  %.not249 = icmp eq ptr %356, null
  br i1 %.not249, label %361, label %357

357:                                              ; preds = %355
  %358 = load ptr, ptr %356, align 8, !tbaa !92
  %359 = shl nuw nsw i32 %77, 2
  %360 = zext nneg i32 %359 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %358, i64 %360, i1 false)
  br label %361

361:                                              ; preds = %357, %355
  %.7 = phi i8 [ 1, %357 ], [ %.6, %355 ]
  %.1198 = phi i1 [ true, %357 ], [ %.not248, %355 ]
  %brmerge266.not = and i1 %.not227, %.1198
  br i1 %brmerge266.not, label %362, label %366

362:                                              ; preds = %361
  %363 = load float, ptr %1, align 4, !tbaa !76
  %364 = load float, ptr %79, align 4, !tbaa !76
  %365 = load float, ptr %82, align 4, !tbaa !76
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %363, float noundef %364, float noundef %365, ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull align 4 dereferenceable(4) %82)
  br label %366

366:                                              ; preds = %361, %362
  call void @_ZN5ImGui17EndDragDropTargetEv()
  br label %367

367:                                              ; preds = %366, %349, %344
  %.8 = phi i8 [ %.7, %366 ], [ %.5, %349 ], [ %.5, %344 ]
  br i1 %313, label %377, label %368

368:                                              ; preds = %367
  %369 = getelementptr inbounds i8, ptr %20, i64 6752
  %370 = load i32, ptr %369, align 8, !tbaa !93
  %.not251 = icmp eq i32 %370, 0
  br i1 %.not251, label %377, label %371

371:                                              ; preds = %368
  %372 = getelementptr inbounds i8, ptr %20, i64 6800
  %373 = load ptr, ptr %372, align 8, !tbaa !94
  %374 = icmp eq ptr %373, %.1209
  br i1 %374, label %375, label %377

375:                                              ; preds = %371
  %376 = getelementptr inbounds i8, ptr %15, i64 272
  store i32 %370, ptr %376, align 8, !tbaa !95
  br label %377

377:                                              ; preds = %375, %371, %368, %367
  %378 = trunc nuw i8 %.8 to i1
  br i1 %378, label %379, label %382

379:                                              ; preds = %377
  %380 = getelementptr inbounds i8, ptr %15, i64 272
  %381 = load i32, ptr %380, align 8, !tbaa !95
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %381)
  br label %382

382:                                              ; preds = %379, %377
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #15
  br label %383

383:                                              ; preds = %3, %382
  %.0 = phi i1 [ %378, %382 ], [ false, %3 ]
  ret i1 %.0
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN17ImGuiNextItemData10ClearFlagsEv(ptr noundef nonnull align 4 dereferenceable(16)) 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 #6

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

declare noundef zeroext i1 @_ZN5ImGui20OpenPopupOnItemClickEPKci(ptr noundef, i32 noundef) local_unnamed_addr #6

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

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

; 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 zeroext i1 @_ZN5ImGui19BeginDragDropTargetEv() local_unnamed_addr #6

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

declare void @_ZN5ImGui17EndDragDropTargetEv() local_unnamed_addr #6

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #11

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #12

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

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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 #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 = { nofree nounwind willreturn memory(argmem: read) }
attributes #12 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #14 = { noreturn nounwind }
attributes #15 = { 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 131}
!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, !12, i64 64, !12, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !11, i64 84, !11, i64 92, !11, i64 100, !11, i64 108, !11, i64 116, !13, i64 124, !13, i64 125, !13, i64 126, !13, i64 127, !13, i64 128, !13, i64 129, !13, i64 130, !13, i64 131, !13, i64 132, !13, i64 133, !13, i64 134, !8, i64 135, !14, i64 136, !14, i64 138, !14, i64 140, !10, i64 144, !8, i64 148, !8, i64 149, !8, i64 150, !13, i64 151, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !11, i64 176, !11, i64 184, !15, i64 192, !16, i64 208, !17, i64 496, !17, i64 512, !17, i64 528, !17, i64 544, !17, i64 560, !17, i64 576, !10, i64 592, !12, i64 596, !12, i64 600, !24, i64 604, !25, i64 640, !27, i64 656, !12, i64 672, !10, i64 676, !7, i64 680, !28, i64 688, !7, i64 856, !7, i64 864, !7, i64 872, !7, i64 880, !7, i64 888, !8, i64 896, !8, i64 904, !13, i64 936, !10, i64 940, !10, i64 944}
!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, !12, i64 48, !12, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !17, i64 72, !17, i64 88, !18, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !13, i64 120, !13, i64 121, !13, i64 122, !11, i64 124, !19, i64 136, !7, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !12, i64 180, !12, i64 184, !20, i64 192, !21, i64 208, !21, i64 224, !22, i64 240, !8, i64 256, !23, i64 268, !23, i64 272, !23, i64 276, !7, i64 280}
!17 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!18 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!19 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!20 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!21 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!22 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!23 = !{!"_ZTS6ImVec1", !12, i64 0}
!24 = !{!"_ZTS16ImGuiMenuColumns", !12, i64 0, !12, i64 4, !12, i64 8, !8, i64 12, !8, i64 24}
!25 = !{!"_ZTS12ImGuiStorage", !26, i64 0}
!26 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!27 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!28 = !{!"_ZTS10ImDrawList", !29, i64 0, !30, i64 16, !31, i64 32, !10, i64 48, !7, i64 56, !7, i64 64, !10, i64 72, !10, i64 76, !7, i64 80, !7, i64 88, !32, i64 96, !33, i64 112, !34, i64 128, !35, i64 144}
!29 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !7, i64 8}
!34 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!35 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !36, i64 8}
!36 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = !{!7, !7, i64 0}
!40 = !{!41, !12, i64 80}
!41 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !11, i64 4, !12, i64 12, !12, i64 16, !11, i64 20, !11, i64 28, !10, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !11, i64 56, !12, i64 64, !12, i64 68, !11, i64 72, !11, i64 80, !11, i64 88, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !10, i64 128, !11, i64 132, !11, i64 140, !11, i64 148, !11, i64 156, !12, i64 164, !13, i64 168, !13, i64 169, !12, i64 172, !8, i64 176}
!42 = !{!43, !10, i64 11916}
!43 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !44, i64 8, !41, i64 5464, !7, i64 6408, !12, i64 6416, !12, i64 6420, !45, i64 6424, !47, i64 6568, !10, i64 6576, !10, i64 6580, !10, i64 6584, !19, i64 6592, !19, i64 6608, !19, i64 6624, !19, i64 6640, !25, i64 6656, !10, i64 6672, !7, i64 6680, !7, i64 6688, !7, i64 6696, !7, i64 6704, !7, i64 6712, !11, i64 6720, !12, i64 6728, !10, i64 6732, !13, i64 6736, !10, i64 6740, !12, i64 6744, !12, i64 6748, !10, i64 6752, !10, i64 6756, !12, i64 6760, !13, i64 6764, !13, i64 6765, !13, i64 6766, !13, i64 6767, !13, i64 6768, !10, i64 6772, !10, i64 6776, !48, i64 6784, !11, i64 6792, !7, i64 6800, !49, i64 6808, !10, i64 6812, !13, i64 6816, !13, i64 6817, !7, i64 6824, !10, i64 6832, !12, i64 6836, !50, i64 6840, !51, i64 6944, !52, i64 6960, !53, i64 6976, !54, i64 6992, !55, i64 7008, !55, i64 7024, !7, i64 7040, !10, i64 7048, !10, i64 7052, !10, i64 7056, !10, i64 7060, !10, i64 7064, !10, i64 7068, !10, i64 7072, !10, i64 7076, !10, i64 7080, !49, i64 7084, !17, i64 7088, !10, i64 7104, !7, i64 7112, !7, i64 7120, !7, i64 7128, !12, i64 7136, !12, i64 7140, !13, i64 7144, !18, i64 7148, !10, i64 7152, !13, i64 7156, !13, i64 7157, !13, i64 7158, !13, i64 7159, !13, i64 7160, !13, i64 7161, !13, i64 7162, !10, i64 7164, !17, i64 7168, !13, i64 7184, !13, i64 7185, !10, i64 7188, !56, i64 7192, !10, i64 7196, !10, i64 7200, !10, i64 7204, !57, i64 7208, !57, i64 7256, !57, i64 7304, !7, i64 7352, !7, i64 7360, !10, i64 7368, !10, i64 7372, !10, i64 7376, !10, i64 7380, !13, i64 7384, !58, i64 7392, !59, i64 7448, !12, i64 7480, !28, i64 7488, !28, i64 7656, !10, i64 7824, !13, i64 7828, !13, i64 7829, !10, i64 7832, !10, i64 7836, !10, i64 7840, !60, i64 7848, !17, i64 7912, !10, i64 7928, !10, i64 7932, !12, i64 7936, !10, i64 7940, !10, i64 7944, !10, i64 7948, !61, i64 7952, !8, i64 7968, !7, i64 7976, !62, i64 7984, !64, i64 8024, !65, i64 8040, !11, i64 8056, !66, i64 8064, !70, i64 11792, !10, i64 11912, !10, i64 11916, !12, i64 11920, !8, i64 11924, !46, i64 11936, !13, i64 11952, !12, i64 11956, !12, i64 11960, !12, i64 11964, !10, i64 11968, !67, i64 11976, !10, i64 11992, !11, i64 11996, !11, i64 12004, !13, i64 12012, !12, i64 12016, !72, i64 12024, !73, i64 12040, !74, i64 12056, !13, i64 12072, !75, i64 12076, !7, i64 12080, !72, i64 12088, !12, i64 12104, !13, i64 12108, !10, i64 12112, !10, i64 12116, !10, i64 12120, !13, i64 12124, !10, i64 12128, !8, i64 12132, !10, i64 12612, !12, i64 12616, !10, i64 12620, !10, i64 12624, !10, i64 12628, !8, i64 12632}
!44 = !{!"_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, !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, !7, i64 288, !11, i64 296, !8, i64 304, !12, i64 312, !12, i64 316, !13, i64 320, !13, i64 321, !13, i64 322, !13, i64 323, !8, i64 324, !8, i64 836, !13, i64 920, !13, i64 921, !13, i64 922, !13, i64 923, !13, i64 924, !13, i64 925, !13, i64 926, !12, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !10, i64 948, !11, i64 952, !11, i64 960, !8, i64 968, !8, i64 1008, !8, i64 1048, !8, i64 1053, !8, i64 1058, !8, i64 1063, !8, i64 1068, !8, i64 1076, !8, i64 1096, !8, i64 1116, !8, i64 1156, !8, i64 1176, !8, i64 3224, !8, i64 5272, !8, i64 5356, !30, i64 5440}
!45 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !46, i64 24, !10, i64 40, !8, i64 44}
!46 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!47 = !{!"double", !8, i64 0}
!48 = !{!"long long", !8, i64 0}
!49 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!50 = !{!"_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, !13, i64 48, !17, i64 52, !7, i64 72, !7, i64 80, !12, i64 88, !11, i64 92}
!51 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !12, i64 4, !13, i64 8, !10, i64 12}
!52 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!53 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!54 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!55 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!56 = !{!"_ZTS15ImGuiNavForward", !8, i64 0}
!57 = !{!"_ZTS18ImGuiNavMoveResult", !10, i64 0, !10, i64 4, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !17, i64 28}
!58 = !{!"_ZTS10ImDrawData", !13, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !11, i64 28, !11, i64 36, !11, i64 44}
!59 = !{!"_ZTS17ImDrawDataBuilder", !8, i64 0}
!60 = !{!"_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}
!61 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!62 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !63, i64 0, !25, i64 16, !10, i64 32}
!63 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!64 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!65 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!66 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !30, i64 16, !67, i64 32, !67, i64 48, !13, i64 64, !10, i64 68, !12, i64 72, !68, i64 76, !12, i64 3696, !13, i64 3700, !13, i64 3701, !10, i64 3704, !7, i64 3712, !7, i64 3720}
!67 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!68 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !8, i64 12, !8, i64 13, !8, i64 14, !8, i64 15, !8, i64 16, !8, i64 17, !8, i64 18, !8, i64 19, !12, i64 20, !69, i64 24}
!69 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 3582, !14, i64 3584, !10, i64 3588, !10, i64 3592}
!70 = !{!"_ZTS6ImFont", !21, i64 0, !12, i64 16, !12, i64 20, !30, i64 24, !71, i64 40, !7, i64 56, !11, i64 64, !7, i64 72, !7, i64 80, !14, i64 88, !14, i64 90, !14, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !10, i64 108, !13, i64 112}
!71 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_ZTS15ImGuiTextBuffer", !67, i64 0}
!73 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!74 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !7, i64 8}
!75 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!76 = !{!12, !12, i64 0}
!77 = !{!43, !12, i64 11920}
!78 = !{!10, !10, i64 0}
!79 = !{!41, !10, i64 128}
!80 = !{!6, !12, i64 208}
!81 = distinct !{!81, !82, !83}
!82 = !{!"llvm.loop.mustprogress"}
!83 = !{!"llvm.loop.peeled.count", i32 1}
!84 = distinct !{!84, !82, !83}
!85 = !{!8, !8, i64 0}
!86 = distinct !{!86, !82}
!87 = !{i64 0, i64 4, !76, i64 4, i64 4, !76, i64 8, i64 4, !76, i64 12, i64 4, !76}
!88 = !{!41, !12, i64 76}
!89 = !{!43, !7, i64 6680}
!90 = !{!41, !12, i64 60}
!91 = !{!6, !10, i64 276}
!92 = !{!60, !7, i64 0}
!93 = !{!43, !10, i64 6752}
!94 = !{!43, !7, i64 6800}
!95 = !{!6, !10, i64 272}


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