; LLVM IR from DarrenSweeney/3D-Physics-Engine :: Physics Engine/Imgui/imgui.ll (ZN5ImGui10ColorEdit4EPKcPfb)

; 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.ImVec4 = type { float, float, float, float }
%struct.ImVec2 = type { float, float }
%struct.ImGuiWindow = type { ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, i8, i8, i8, i32, i8, i32, i32, i32, %struct.ImGuiDrawContext, %class.ImVector.11, %class.ImVector.12, %struct.ImGuiAabb, i32, float, %struct.ImGuiStorage, float, ptr, ptr, i32, i32, i32, i32, i32, i32 }
%struct.ImGuiDrawContext = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, i32, i32, %struct.ImGuiAabb, i8, %class.ImVector.1, %class.ImVector.9, %class.ImVector.10, %class.ImVector.10, i32, ptr, float, float, i32, i32, %struct.ImVec2, float, float, i8, i32, %class.ImVector.10 }
%class.ImVector.1 = type { i64, i64, ptr }
%class.ImVector.9 = type { i64, i64, ptr }
%class.ImVector.10 = type { i64, i64, ptr }
%class.ImVector.11 = type { i64, i64, ptr }
%class.ImVector.12 = type { i64, i64, ptr }
%struct.ImGuiAabb = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiStorage = type { %class.ImVector.6 }
%class.ImVector.6 = type { i64, i64, ptr }
%struct.ImGuiState = type { i8, [7 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, %struct.ImVec2, float, i32, i32, %class.ImVector.1, ptr, %class.ImVector.1, ptr, ptr, ptr, i32, i32, i32, i8, i8, ptr, float, %class.ImVector.2, %class.ImVector.3, %class.ImVector.4, %class.ImVector, %struct.ImVec2, i32, %struct.ImVec2, i32, i8, i32, i8, i8, i32, %class.ImVector.5, %class.ImVector.1, %struct.ImGuiTextEditState, i32, %struct.ImGuiStorage, i32, [1024 x i8], ptr, i8, ptr, ptr, i32, i32, [120 x float], i32, float }
%struct.ImGuiIO = type <{ %struct.ImVec2, float, float, ptr, ptr, float, float, [17 x i32], [4 x i8], ptr, ptr, float, i8, [3 x i8], %struct.ImVec2, %struct.ImVec2, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], [3 x i8], float, i8, i8, i8, [512 x i8], i8, [17 x i16], i8, i8, float, %struct.ImVec2, %struct.ImVec2, [5 x i8], [3 x i8], [5 x %struct.ImVec2], [5 x float], [5 x i8], [5 x i8], [2 x i8], [5 x float], [512 x float], [4 x i8] }>
%struct.ImGuiStyle = type { float, %struct.ImVec2, %struct.ImVec2, float, float, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, [39 x %struct.ImVec4] }
%class.ImVector.2 = type { i64, i64, ptr }
%class.ImVector.3 = type { i64, i64, ptr }
%class.ImVector.4 = type { i64, i64, ptr }
%class.ImVector = type { i64, i64, ptr }
%class.ImVector.5 = type { i64, i64, ptr }
%struct.ImGuiTextEditState = type <{ i32, [1024 x i16], [3073 x i8], [3 x i8], i64, float, float, %struct.STB_TexteditState, float, %struct.ImVec2, i8, [7 x i8], ptr, float, [4 x i8] }>
%struct.STB_TexteditState = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, %struct.StbUndoState }
%struct.StbUndoState = type { [99 x %struct.StbUndoRecord], [999 x i16], i16, i16, i16, i16 }
%struct.StbUndoRecord = type { i32, i16, i16, i16 }

@_ZL6GImGui = external hidden global ptr, align 8
@.str.111 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [13 x i8], align 1
@__const._ZN5ImGui10ColorEdit4EPKcPfb.button_titles = external hidden unnamed_addr constant [3 x ptr], align 16

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

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

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

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

; 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 #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local 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)) #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local 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)) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13PushItemWidthEf(float noundef) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui12PopItemWidthEv() #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui15TextUnformattedEPKcS1_(ptr noundef, ptr noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef ptr @_ZL18FindTextDisplayEndPKcS0_(ptr noundef, ptr noundef) #0

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5ImGui13CalcItemWidthEv() #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui8SameLineEii(i32 noundef, i32 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2b(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), i1 noundef zeroext) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui5PopIDEv() #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui6PushIDEPKc(ptr noundef) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui11ColorButtonERK6ImVec4bb(ptr noundef nonnull align 4 dereferenceable(16), i1 noundef zeroext, i1 noundef zeroext) #5

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

43:                                               ; preds = %3
  store i1 false, ptr %4, align 1
  store i32 1, ptr %10, align 4
  br label %409

44:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.ImGuiState, ptr %45, i32 0, i32 3
  store ptr %46, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  %47 = load ptr, ptr %9, align 8, !tbaa !5
  %48 = load ptr, ptr %5, align 8, !tbaa !5
  %49 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %47, ptr noundef %48)
  store i32 %49, ptr %12, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  %50 = call noundef float @_ZN5ImGui13CalcItemWidthEv()
  store float %50, ptr %13, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %51 = load ptr, ptr %9, align 8, !tbaa !5
  %52 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %51)
  %53 = load ptr, ptr %11, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.ImGuiStyle, ptr %53, i32 0, i32 5
  %55 = getelementptr inbounds %struct.ImVec2, ptr %54, i32 0, i32 0
  %56 = load float, ptr %55, align 4, !tbaa !30
  %57 = call float @llvm.fmuladd.f32(float %56, float 2.000000e+00, float %52)
  store float %57, ptr %14, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  %58 = load ptr, ptr %9, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.ImGuiWindow, ptr %58, i32 0, i32 20
  %60 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %59, i32 0, i32 14
  %61 = load i32, ptr %60, align 8, !tbaa !32
  store i32 %61, ptr %15, align 4, !tbaa !28
  %62 = load i32, ptr %15, align 4, !tbaa !28
  %63 = icmp eq i32 %62, -2
  br i1 %63, label %67, label %64

64:                                               ; preds = %44
  %65 = load i32, ptr %15, align 4, !tbaa !28
  %66 = icmp eq i32 %65, -1
  br i1 %66, label %67, label %73

67:                                               ; preds = %64, %44
  %68 = load ptr, ptr %8, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.ImGuiState, ptr %68, i32 0, i32 40
  %70 = load i32, ptr %12, align 4, !tbaa !28
  %71 = call noundef i32 @_ZNK12ImGuiStorage6GetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %69, i32 noundef %70, i32 noundef 0)
  %72 = srem i32 %71, 3
  store i32 %72, ptr %15, align 4, !tbaa !28
  br label %73

73:                                               ; preds = %67, %64
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = getelementptr inbounds float, ptr %74, i64 0
  %76 = load float, ptr %75, align 4, !tbaa !29
  store float %76, ptr %16, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  %78 = getelementptr inbounds float, ptr %77, i64 1
  %79 = load float, ptr %78, align 4, !tbaa !29
  store float %79, ptr %17, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = getelementptr inbounds float, ptr %80, i64 2
  %82 = load float, ptr %81, align 4, !tbaa !29
  store float %82, ptr %18, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  %83 = load ptr, ptr %6, align 8, !tbaa !5
  %84 = getelementptr inbounds float, ptr %83, i64 3
  %85 = load float, ptr %84, align 4, !tbaa !29
  store float %85, ptr %19, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #8
  %86 = load float, ptr %16, align 4, !tbaa !29
  %87 = load float, ptr %17, align 4, !tbaa !29
  %88 = load float, ptr %18, align 4, !tbaa !29
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %20, float noundef %86, float noundef %87, float noundef %88, float noundef 1.000000e+00)
  %89 = load i32, ptr %15, align 4, !tbaa !28
  %90 = icmp eq i32 %89, 1
  br i1 %90, label %91, label %95

91:                                               ; preds = %73
  %92 = load float, ptr %16, align 4, !tbaa !29
  %93 = load float, ptr %17, align 4, !tbaa !29
  %94 = load float, ptr %18, align 4, !tbaa !29
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %92, float noundef %93, float noundef %94, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %18)
  br label %95

95:                                               ; preds = %91, %73
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %96 = load float, ptr %16, align 4, !tbaa !29
  %97 = call float @llvm.fmuladd.f32(float %96, float 2.550000e+02, float 5.000000e-01)
  %98 = fptosi float %97 to i32
  store i32 %98, ptr %21, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %99 = load float, ptr %17, align 4, !tbaa !29
  %100 = call float @llvm.fmuladd.f32(float %99, float 2.550000e+02, float 5.000000e-01)
  %101 = fptosi float %100 to i32
  store i32 %101, ptr %22, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  %102 = load float, ptr %18, align 4, !tbaa !29
  %103 = call float @llvm.fmuladd.f32(float %102, float 2.550000e+02, float 5.000000e-01)
  %104 = fptosi float %103 to i32
  store i32 %104, ptr %23, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  %105 = load float, ptr %19, align 4, !tbaa !29
  %106 = call float @llvm.fmuladd.f32(float %105, float 2.550000e+02, float 5.000000e-01)
  %107 = fptosi float %106 to i32
  store i32 %107, ptr %24, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %108 = load i8, ptr %7, align 1, !tbaa !9, !range !26, !noundef !27
  %109 = trunc i8 %108 to i1
  %110 = zext i1 %109 to i64
  %111 = select i1 %109, i32 4, i32 3
  store i32 %111, ptr %25, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #8
  store i8 0, ptr %26, align 1, !tbaa !9
  %112 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5ImGui6PushIDEPKc(ptr noundef %112)
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #8
  %113 = load i32, ptr %15, align 4, !tbaa !28
  %114 = icmp eq i32 %113, 1
  %115 = zext i1 %114 to i8
  store i8 %115, ptr %27, align 1, !tbaa !9
  %116 = load i32, ptr %15, align 4, !tbaa !28
  switch i32 %116, label %319 [
    i32 0, label %117
    i32 1, label %117
    i32 2, label %258
  ]

117:                                              ; preds = %95, %95
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  %118 = load float, ptr %13, align 4, !tbaa !29
  %119 = load float, ptr %14, align 4, !tbaa !29
  %120 = load ptr, ptr %11, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.ImGuiStyle, ptr %120, i32 0, i32 8
  %122 = getelementptr inbounds %struct.ImVec2, ptr %121, i32 0, i32 0
  %123 = load float, ptr %122, align 4, !tbaa !33
  %124 = fadd float %119, %123
  %125 = fsub float %118, %124
  store float %125, ptr %28, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  %126 = load float, ptr %28, align 4, !tbaa !29
  %127 = load ptr, ptr %11, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.ImGuiStyle, ptr %127, i32 0, i32 5
  %129 = getelementptr inbounds %struct.ImVec2, ptr %128, i32 0, i32 0
  %130 = load float, ptr %129, align 4, !tbaa !30
  %131 = load ptr, ptr %11, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.ImGuiStyle, ptr %131, i32 0, i32 8
  %133 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %134 = load float, ptr %133, align 4, !tbaa !33
  %135 = call float @llvm.fmuladd.f32(float %130, float 2.000000e+00, float %134)
  %136 = load i32, ptr %25, align 4, !tbaa !28
  %137 = sub nsw i32 %136, 1
  %138 = sitofp i32 %137 to float
  %139 = fneg float %135
  %140 = call float @llvm.fmuladd.f32(float %139, float %138, float %126)
  %141 = load i32, ptr %25, align 4, !tbaa !28
  %142 = sitofp i32 %141 to float
  %143 = fdiv float %140, %142
  %144 = fptosi float %143 to i32
  %145 = sitofp i32 %144 to float
  %146 = call noundef float @_ZL5ImMaxff(float noundef 1.000000e+00, float noundef %145)
  store float %146, ptr %29, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  %147 = load float, ptr %28, align 4, !tbaa !29
  %148 = load float, ptr %29, align 4, !tbaa !29
  %149 = load ptr, ptr %11, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.ImGuiStyle, ptr %149, i32 0, i32 5
  %151 = getelementptr inbounds %struct.ImVec2, ptr %150, i32 0, i32 0
  %152 = load float, ptr %151, align 4, !tbaa !30
  %153 = call float @llvm.fmuladd.f32(float %152, float 2.000000e+00, float %148)
  %154 = load ptr, ptr %11, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.ImGuiStyle, ptr %154, i32 0, i32 8
  %156 = getelementptr inbounds %struct.ImVec2, ptr %155, i32 0, i32 0
  %157 = load float, ptr %156, align 4, !tbaa !33
  %158 = fadd float %153, %157
  %159 = load i32, ptr %25, align 4, !tbaa !28
  %160 = sub nsw i32 %159, 1
  %161 = sitofp i32 %160 to float
  %162 = fneg float %158
  %163 = call float @llvm.fmuladd.f32(float %162, float %161, float %147)
  %164 = fptosi float %163 to i32
  %165 = sitofp i32 %164 to float
  %166 = call noundef float @_ZL5ImMaxff(float noundef 1.000000e+00, float noundef %165)
  store float %166, ptr %30, align 4, !tbaa !29
  %167 = load float, ptr %29, align 4, !tbaa !29
  call void @_ZN5ImGui13PushItemWidthEf(float noundef %167)
  %168 = load i8, ptr %27, align 1, !tbaa !9, !range !26, !noundef !27
  %169 = trunc i8 %168 to i1
  br i1 %169, label %170, label %171

170:                                              ; preds = %117
  br label %172

171:                                              ; preds = %117
  br label %172

172:                                              ; preds = %171, %170
  %173 = phi ptr [ @.str.112, %170 ], [ @.str.113, %171 ]
  %174 = getelementptr inbounds [8 x i8], ptr %173, i64 0, i64 0
  %175 = call noundef zeroext i1 @_ZN5ImGui9SliderIntEPKcPiiiS1_(ptr noundef @.str.111, ptr noundef %21, i32 noundef 0, i32 noundef 255, ptr noundef %174)
  %176 = zext i1 %175 to i32
  %177 = load i8, ptr %26, align 1, !tbaa !9, !range !26, !noundef !27
  %178 = trunc i8 %177 to i1
  %179 = zext i1 %178 to i32
  %180 = or i32 %179, %176
  %181 = icmp ne i32 %180, 0
  %182 = zext i1 %181 to i8
  store i8 %182, ptr %26, align 1, !tbaa !9
  %183 = load ptr, ptr %11, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.ImGuiStyle, ptr %183, i32 0, i32 8
  %185 = getelementptr inbounds %struct.ImVec2, ptr %184, i32 0, i32 0
  %186 = load float, ptr %185, align 4, !tbaa !33
  %187 = fptosi float %186 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %187)
  %188 = load i8, ptr %27, align 1, !tbaa !9, !range !26, !noundef !27
  %189 = trunc i8 %188 to i1
  br i1 %189, label %190, label %191

190:                                              ; preds = %172
  br label %192

191:                                              ; preds = %172
  br label %192

192:                                              ; preds = %191, %190
  %193 = phi ptr [ @.str.115, %190 ], [ @.str.116, %191 ]
  %194 = getelementptr inbounds [8 x i8], ptr %193, i64 0, i64 0
  %195 = call noundef zeroext i1 @_ZN5ImGui9SliderIntEPKcPiiiS1_(ptr noundef @.str.114, ptr noundef %22, i32 noundef 0, i32 noundef 255, ptr noundef %194)
  %196 = zext i1 %195 to i32
  %197 = load i8, ptr %26, align 1, !tbaa !9, !range !26, !noundef !27
  %198 = trunc i8 %197 to i1
  %199 = zext i1 %198 to i32
  %200 = or i32 %199, %196
  %201 = icmp ne i32 %200, 0
  %202 = zext i1 %201 to i8
  store i8 %202, ptr %26, align 1, !tbaa !9
  %203 = load ptr, ptr %11, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.ImGuiStyle, ptr %203, i32 0, i32 8
  %205 = getelementptr inbounds %struct.ImVec2, ptr %204, i32 0, i32 0
  %206 = load float, ptr %205, align 4, !tbaa !33
  %207 = fptosi float %206 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %207)
  %208 = load i8, ptr %7, align 1, !tbaa !9, !range !26, !noundef !27
  %209 = trunc i8 %208 to i1
  br i1 %209, label %210, label %240

210:                                              ; preds = %192
  %211 = load i8, ptr %27, align 1, !tbaa !9, !range !26, !noundef !27
  %212 = trunc i8 %211 to i1
  br i1 %212, label %213, label %214

213:                                              ; preds = %210
  br label %215

214:                                              ; preds = %210
  br label %215

215:                                              ; preds = %214, %213
  %216 = phi ptr [ @.str.118, %213 ], [ @.str.119, %214 ]
  %217 = getelementptr inbounds [8 x i8], ptr %216, i64 0, i64 0
  %218 = call noundef zeroext i1 @_ZN5ImGui9SliderIntEPKcPiiiS1_(ptr noundef @.str.117, ptr noundef %23, i32 noundef 0, i32 noundef 255, ptr noundef %217)
  %219 = zext i1 %218 to i32
  %220 = load i8, ptr %26, align 1, !tbaa !9, !range !26, !noundef !27
  %221 = trunc i8 %220 to i1
  %222 = zext i1 %221 to i32
  %223 = or i32 %222, %219
  %224 = icmp ne i32 %223, 0
  %225 = zext i1 %224 to i8
  store i8 %225, ptr %26, align 1, !tbaa !9
  %226 = load ptr, ptr %11, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.ImGuiStyle, ptr %226, i32 0, i32 8
  %228 = getelementptr inbounds %struct.ImVec2, ptr %227, i32 0, i32 0
  %229 = load float, ptr %228, align 4, !tbaa !33
  %230 = fptosi float %229 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %230)
  %231 = load float, ptr %30, align 4, !tbaa !29
  call void @_ZN5ImGui13PushItemWidthEf(float noundef %231)
  %232 = call noundef zeroext i1 @_ZN5ImGui9SliderIntEPKcPiiiS1_(ptr noundef @.str.120, ptr noundef %24, i32 noundef 0, i32 noundef 255, ptr noundef @.str.121)
  %233 = zext i1 %232 to i32
  %234 = load i8, ptr %26, align 1, !tbaa !9, !range !26, !noundef !27
  %235 = trunc i8 %234 to i1
  %236 = zext i1 %235 to i32
  %237 = or i32 %236, %233
  %238 = icmp ne i32 %237, 0
  %239 = zext i1 %238 to i8
  store i8 %239, ptr %26, align 1, !tbaa !9
  br label %257

240:                                              ; preds = %192
  %241 = load float, ptr %30, align 4, !tbaa !29
  call void @_ZN5ImGui13PushItemWidthEf(float noundef %241)
  %242 = load i8, ptr %27, align 1, !tbaa !9, !range !26, !noundef !27
  %243 = trunc i8 %242 to i1
  br i1 %243, label %244, label %245

244:                                              ; preds = %240
  br label %246

245:                                              ; preds = %240
  br label %246

246:                                              ; preds = %245, %244
  %247 = phi ptr [ @.str.118, %244 ], [ @.str.119, %245 ]
  %248 = getelementptr inbounds [8 x i8], ptr %247, i64 0, i64 0
  %249 = call noundef zeroext i1 @_ZN5ImGui9SliderIntEPKcPiiiS1_(ptr noundef @.str.117, ptr noundef %23, i32 noundef 0, i32 noundef 255, ptr noundef %248)
  %250 = zext i1 %249 to i32
  %251 = load i8, ptr %26, align 1, !tbaa !9, !range !26, !noundef !27
  %252 = trunc i8 %251 to i1
  %253 = zext i1 %252 to i32
  %254 = or i32 %253, %250
  %255 = icmp ne i32 %254, 0
  %256 = zext i1 %255 to i8
  store i8 %256, ptr %26, align 1, !tbaa !9
  br label %257

257:                                              ; preds = %246, %215
  call void @_ZN5ImGui12PopItemWidthEv()
  call void @_ZN5ImGui12PopItemWidthEv()
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %319

258:                                              ; preds = %95
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  %259 = load float, ptr %13, align 4, !tbaa !29
  %260 = load float, ptr %14, align 4, !tbaa !29
  %261 = fsub float %259, %260
  store float %261, ptr %31, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 64, ptr %32) #8
  %262 = load i8, ptr %7, align 1, !tbaa !9, !range !26, !noundef !27
  %263 = trunc i8 %262 to i1
  br i1 %263, label %264, label %271

264:                                              ; preds = %258
  %265 = getelementptr inbounds [64 x i8], ptr %32, i64 0, i64 0
  %266 = load i32, ptr %21, align 4, !tbaa !28
  %267 = load i32, ptr %22, align 4, !tbaa !28
  %268 = load i32, ptr %23, align 4, !tbaa !28
  %269 = load i32, ptr %24, align 4, !tbaa !28
  %270 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %265, ptr noundef @.str.122, i32 noundef %266, i32 noundef %267, i32 noundef %268, i32 noundef %269) #8
  br label %277

271:                                              ; preds = %258
  %272 = getelementptr inbounds [64 x i8], ptr %32, i64 0, i64 0
  %273 = load i32, ptr %21, align 4, !tbaa !28
  %274 = load i32, ptr %22, align 4, !tbaa !28
  %275 = load i32, ptr %23, align 4, !tbaa !28
  %276 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %272, ptr noundef @.str.123, i32 noundef %273, i32 noundef %274, i32 noundef %275) #8
  br label %277

277:                                              ; preds = %271, %264
  %278 = load float, ptr %31, align 4, !tbaa !29
  %279 = load ptr, ptr %11, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.ImGuiStyle, ptr %279, i32 0, i32 8
  %281 = getelementptr inbounds %struct.ImVec2, ptr %280, i32 0, i32 0
  %282 = load float, ptr %281, align 4, !tbaa !33
  %283 = fsub float %278, %282
  call void @_ZN5ImGui13PushItemWidthEf(float noundef %283)
  %284 = getelementptr inbounds [64 x i8], ptr %32, i64 0, i64 0
  %285 = call noundef zeroext i1 @_ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef @.str.124, ptr noundef %284, i64 noundef 64, i32 noundef 2, ptr noundef null, ptr noundef null)
  %286 = zext i1 %285 to i32
  %287 = load i8, ptr %26, align 1, !tbaa !9, !range !26, !noundef !27
  %288 = trunc i8 %287 to i1
  %289 = zext i1 %288 to i32
  %290 = or i32 %289, %286
  %291 = icmp ne i32 %290, 0
  %292 = zext i1 %291 to i8
  store i8 %292, ptr %26, align 1, !tbaa !9
  call void @_ZN5ImGui12PopItemWidthEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %293 = getelementptr inbounds [64 x i8], ptr %32, i64 0, i64 0
  store ptr %293, ptr %33, align 8, !tbaa !5
  br label %294

294:                                              ; preds = %306, %277
  %295 = load ptr, ptr %33, align 8, !tbaa !5
  %296 = load i8, ptr %295, align 1, !tbaa !34
  %297 = sext i8 %296 to i32
  %298 = icmp eq i32 %297, 35
  br i1 %298, label %304, label %299

299:                                              ; preds = %294
  %300 = load ptr, ptr %33, align 8, !tbaa !5
  %301 = load i8, ptr %300, align 1, !tbaa !34
  %302 = sext i8 %301 to i32
  %303 = call noundef zeroext i1 @_ZL13ImCharIsSpacei(i32 noundef %302)
  br label %304

304:                                              ; preds = %299, %294
  %305 = phi i1 [ true, %294 ], [ %303, %299 ]
  br i1 %305, label %306, label %309

306:                                              ; preds = %304
  %307 = load ptr, ptr %33, align 8, !tbaa !5
  %308 = getelementptr inbounds i8, ptr %307, i32 1
  store ptr %308, ptr %33, align 8, !tbaa !5
  br label %294, !llvm.loop !35

309:                                              ; preds = %304
  store i32 0, ptr %24, align 4, !tbaa !28
  store i32 0, ptr %23, align 4, !tbaa !28
  store i32 0, ptr %22, align 4, !tbaa !28
  store i32 0, ptr %21, align 4, !tbaa !28
  %310 = load i8, ptr %7, align 1, !tbaa !9, !range !26, !noundef !27
  %311 = trunc i8 %310 to i1
  br i1 %311, label %312, label %315

312:                                              ; preds = %309
  %313 = load ptr, ptr %33, align 8, !tbaa !5
  %314 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %313, ptr noundef @.str.125, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) #8
  br label %318

315:                                              ; preds = %309
  %316 = load ptr, ptr %33, align 8, !tbaa !5
  %317 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %316, ptr noundef @.str.126, ptr noundef %21, ptr noundef %22, ptr noundef %23) #8
  br label %318

318:                                              ; preds = %315, %312
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %319

319:                                              ; preds = %318, %257, %95
  %320 = load ptr, ptr %11, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.ImGuiStyle, ptr %320, i32 0, i32 8
  %322 = getelementptr inbounds %struct.ImVec2, ptr %321, i32 0, i32 0
  %323 = load float, ptr %322, align 4, !tbaa !33
  %324 = fptosi float %323 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %324)
  %325 = call noundef zeroext i1 @_ZN5ImGui11ColorButtonERK6ImVec4bb(ptr noundef nonnull align 4 dereferenceable(16) %20, i1 noundef zeroext false, i1 noundef zeroext true)
  br i1 %325, label %326, label %333

326:                                              ; preds = %319
  %327 = load ptr, ptr %8, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.ImGuiState, ptr %327, i32 0, i32 40
  %329 = load i32, ptr %12, align 4, !tbaa !28
  %330 = load i32, ptr %15, align 4, !tbaa !28
  %331 = add nsw i32 %330, 1
  %332 = srem i32 %331, 3
  call void @_ZN12ImGuiStorage6SetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef %329, i32 noundef %332)
  br label %333

333:                                              ; preds = %326, %319
  %334 = load ptr, ptr %9, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.ImGuiWindow, ptr %334, i32 0, i32 20
  %336 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %335, i32 0, i32 14
  %337 = load i32, ptr %336, align 8, !tbaa !32
  %338 = icmp eq i32 %337, -1
  br i1 %338, label %339, label %358

339:                                              ; preds = %333
  %340 = load ptr, ptr %11, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.ImGuiStyle, ptr %340, i32 0, i32 8
  %342 = getelementptr inbounds %struct.ImVec2, ptr %341, i32 0, i32 0
  %343 = load float, ptr %342, align 4, !tbaa !33
  %344 = fptosi float %343 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %344)
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %34, ptr align 16 @__const._ZN5ImGui10ColorEdit4EPKcPfb.button_titles, i64 24, i1 false)
  %345 = load i32, ptr %15, align 4, !tbaa !28
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds [3 x ptr], ptr %34, i64 0, i64 %346
  %348 = load ptr, ptr %347, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %349 = call noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2b(ptr noundef %348, ptr noundef nonnull align 4 dereferenceable(8) %35, i1 noundef zeroext false)
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br i1 %349, label %350, label %357

350:                                              ; preds = %339
  %351 = load ptr, ptr %8, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.ImGuiState, ptr %351, i32 0, i32 40
  %353 = load i32, ptr %12, align 4, !tbaa !28
  %354 = load i32, ptr %15, align 4, !tbaa !28
  %355 = add nsw i32 %354, 1
  %356 = srem i32 %355, 3
  call void @_ZN12ImGuiStorage6SetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %352, i32 noundef %353, i32 noundef %356)
  br label %357

357:                                              ; preds = %350, %339
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef -1)
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #8
  br label %364

358:                                              ; preds = %333
  %359 = load ptr, ptr %11, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.ImGuiStyle, ptr %359, i32 0, i32 8
  %361 = getelementptr inbounds %struct.ImVec2, ptr %360, i32 0, i32 0
  %362 = load float, ptr %361, align 4, !tbaa !33
  %363 = fptosi float %362 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %363)
  br label %364

364:                                              ; preds = %358, %357
  %365 = load ptr, ptr %5, align 8, !tbaa !5
  %366 = load ptr, ptr %5, align 8, !tbaa !5
  %367 = call noundef ptr @_ZL18FindTextDisplayEndPKcS0_(ptr noundef %366, ptr noundef null)
  call void @_ZN5ImGui15TextUnformattedEPKcS1_(ptr noundef %365, ptr noundef %367)
  %368 = load i32, ptr %21, align 4, !tbaa !28
  %369 = sitofp i32 %368 to float
  %370 = fdiv float %369, 2.550000e+02
  store float %370, ptr %16, align 4, !tbaa !29
  %371 = load i32, ptr %22, align 4, !tbaa !28
  %372 = sitofp i32 %371 to float
  %373 = fdiv float %372, 2.550000e+02
  store float %373, ptr %17, align 4, !tbaa !29
  %374 = load i32, ptr %23, align 4, !tbaa !28
  %375 = sitofp i32 %374 to float
  %376 = fdiv float %375, 2.550000e+02
  store float %376, ptr %18, align 4, !tbaa !29
  %377 = load i32, ptr %24, align 4, !tbaa !28
  %378 = sitofp i32 %377 to float
  %379 = fdiv float %378, 2.550000e+02
  store float %379, ptr %19, align 4, !tbaa !29
  %380 = load i32, ptr %15, align 4, !tbaa !28
  %381 = icmp eq i32 %380, 1
  br i1 %381, label %382, label %386

382:                                              ; preds = %364
  %383 = load float, ptr %16, align 4, !tbaa !29
  %384 = load float, ptr %17, align 4, !tbaa !29
  %385 = load float, ptr %18, align 4, !tbaa !29
  call void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef %383, float noundef %384, float noundef %385, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %18)
  br label %386

386:                                              ; preds = %382, %364
  %387 = load i8, ptr %26, align 1, !tbaa !9, !range !26, !noundef !27
  %388 = trunc i8 %387 to i1
  br i1 %388, label %389, label %406

389:                                              ; preds = %386
  %390 = load float, ptr %16, align 4, !tbaa !29
  %391 = load ptr, ptr %6, align 8, !tbaa !5
  %392 = getelementptr inbounds float, ptr %391, i64 0
  store float %390, ptr %392, align 4, !tbaa !29
  %393 = load float, ptr %17, align 4, !tbaa !29
  %394 = load ptr, ptr %6, align 8, !tbaa !5
  %395 = getelementptr inbounds float, ptr %394, i64 1
  store float %393, ptr %395, align 4, !tbaa !29
  %396 = load float, ptr %18, align 4, !tbaa !29
  %397 = load ptr, ptr %6, align 8, !tbaa !5
  %398 = getelementptr inbounds float, ptr %397, i64 2
  store float %396, ptr %398, align 4, !tbaa !29
  %399 = load i8, ptr %7, align 1, !tbaa !9, !range !26, !noundef !27
  %400 = trunc i8 %399 to i1
  br i1 %400, label %401, label %405

401:                                              ; preds = %389
  %402 = load float, ptr %19, align 4, !tbaa !29
  %403 = load ptr, ptr %6, align 8, !tbaa !5
  %404 = getelementptr inbounds float, ptr %403, i64 3
  store float %402, ptr %404, align 4, !tbaa !29
  br label %405

405:                                              ; preds = %401, %389
  br label %406

406:                                              ; preds = %405, %386
  call void @_ZN5ImGui5PopIDEv()
  %407 = load i8, ptr %26, align 1, !tbaa !9, !range !26, !noundef !27
  %408 = trunc i8 %407 to i1
  store i1 %408, ptr %4, align 1
  store i32 1, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %409

409:                                              ; preds = %406, %43
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  %410 = load i1, ptr %4, align 1
  ret i1 %410
}

; Function Attrs: nounwind
declare i32 @sprintf(ptr noundef, ptr noundef, ...) #7

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !10, i64 68}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !13, i64 8, !13, i64 12, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !15, i64 56, !15, i64 60, !10, i64 64, !10, i64 65, !10, i64 66, !10, i64 67, !10, i64 68, !13, i64 72, !10, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !16, i64 96, !22, i64 336, !23, i64 360, !17, i64 384, !13, i64 400, !15, i64 404, !24, i64 408, !15, i64 432, !6, i64 440, !6, i64 448, !13, i64 456, !13, i64 460, !13, i64 464, !13, i64 468, !13, i64 472, !13, i64 476}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS6ImVec2", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!"_ZTS16ImGuiDrawContext", !14, i64 0, !14, i64 8, !14, i64 16, !15, i64 24, !15, i64 28, !15, i64 32, !13, i64 36, !13, i64 40, !17, i64 44, !10, i64 60, !18, i64 64, !20, i64 88, !21, i64 112, !21, i64 136, !13, i64 160, !6, i64 168, !15, i64 176, !15, i64 180, !13, i64 184, !13, i64 188, !14, i64 192, !15, i64 200, !15, i64 204, !10, i64 208, !13, i64 212, !21, i64 216}
!17 = !{!"_ZTS9ImGuiAabb", !14, i64 0, !14, i64 8}
!18 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !19, i64 0, !19, i64 8, !6, i64 16}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_ZTS8ImVectorIbE", !19, i64 0, !19, i64 8, !6, i64 16}
!21 = !{!"_ZTS8ImVectorIfE", !19, i64 0, !19, i64 8, !6, i64 16}
!22 = !{!"_ZTS8ImVectorIjE", !19, i64 0, !19, i64 8, !6, i64 16}
!23 = !{!"_ZTS8ImVectorI6ImVec4E", !19, i64 0, !19, i64 8, !6, i64 16}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !19, i64 0, !19, i64 8, !6, i64 16}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!13, !13, i64 0}
!29 = !{!15, !15, i64 0}
!30 = !{!31, !15, i64 28}
!31 = !{!"_ZTS10ImGuiStyle", !15, i64 0, !14, i64 4, !14, i64 12, !15, i64 20, !15, i64 24, !14, i64 28, !15, i64 36, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !15, i64 72, !15, i64 76, !15, i64 80, !15, i64 84, !7, i64 88}
!32 = !{!12, !13, i64 256}
!33 = !{!31, !15, i64 48}
!34 = !{!7, !7, i64 0}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}


; 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.ImVec4 = type { float, float, float, float }
%struct.ImVec2 = type { float, float }

@_ZL6GImGui = external hidden local_unnamed_addr global ptr, align 8
@.str.111 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [13 x i8], align 1
@__const._ZN5ImGui10ColorEdit4EPKcPfb.button_titles = external hidden unnamed_addr constant [3 x ptr], align 16

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

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

; 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 nounwind uwtable
declare dso_local void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, float noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local 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 #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local 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 #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13PushItemWidthEf(float noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui12PopItemWidthEv() local_unnamed_addr #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui15TextUnformattedEPKcS1_(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef ptr @_ZL18FindTextDisplayEndPKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui8SameLineEii(i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2b(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui5PopIDEv() local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui6PushIDEPKc(ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui11ColorButtonERK6ImVec4bb(ptr noundef nonnull align 4 dereferenceable(16), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #4

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

19:                                               ; preds = %3
  %20 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %15, ptr noundef %0)
  %21 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  %22 = tail call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %15)
  %23 = getelementptr inbounds i8, ptr %14, i64 2988
  %24 = load float, ptr %23, align 4, !tbaa !27
  %25 = tail call float @llvm.fmuladd.f32(float %24, float 2.000000e+00, float %22)
  %26 = getelementptr inbounds i8, ptr %15, i64 256
  %27 = load i32, ptr %26, align 8, !tbaa !29
  %or.cond = icmp ugt i32 %27, -3
  br i1 %or.cond, label %28, label %32

28:                                               ; preds = %19
  %29 = getelementptr inbounds i8, ptr %14, i64 12408
  %30 = tail call noundef i32 @_ZNK12ImGuiStorage6GetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %29, i32 noundef %20, i32 noundef 0)
  %31 = srem i32 %30, 3
  br label %32

32:                                               ; preds = %19, %28
  %.087 = phi i32 [ %31, %28 ], [ %27, %19 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #7
  %33 = load float, ptr %1, align 4, !tbaa !30
  store float %33, ptr %4, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  %34 = getelementptr inbounds i8, ptr %1, i64 4
  %35 = load float, ptr %34, align 4, !tbaa !30
  store float %35, ptr %5, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  %36 = getelementptr inbounds i8, ptr %1, i64 8
  %37 = load float, ptr %36, align 4, !tbaa !30
  store float %37, ptr %6, align 4, !tbaa !30
  %38 = getelementptr inbounds i8, ptr %1, i64 12
  %39 = load float, ptr %38, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %7, float noundef %33, float noundef %35, float noundef %37, float noundef 1.000000e+00)
  %40 = icmp eq i32 %.087, 1
  br i1 %40, label %41, label %42

41:                                               ; preds = %32
  call void @_ZN5ImGui20ColorConvertRGBtoHSVEfffRfS0_S0_(float noundef %33, float noundef %35, float noundef %37, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %.pre = load float, ptr %4, align 4, !tbaa !30
  %.pre91 = load float, ptr %5, align 4, !tbaa !30
  %.pre92 = load float, ptr %6, align 4, !tbaa !30
  br label %42

42:                                               ; preds = %41, %32
  %43 = phi float [ %.pre92, %41 ], [ %37, %32 ]
  %44 = phi float [ %.pre91, %41 ], [ %35, %32 ]
  %45 = phi float [ %.pre, %41 ], [ %33, %32 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  %46 = call float @llvm.fmuladd.f32(float %45, float 2.550000e+02, float 5.000000e-01)
  %47 = fptosi float %46 to i32
  store i32 %47, ptr %8, align 4, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  %48 = call float @llvm.fmuladd.f32(float %44, float 2.550000e+02, float 5.000000e-01)
  %49 = fptosi float %48 to i32
  store i32 %49, ptr %9, align 4, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  %50 = call float @llvm.fmuladd.f32(float %43, float 2.550000e+02, float 5.000000e-01)
  %51 = fptosi float %50 to i32
  store i32 %51, ptr %10, align 4, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  %52 = call float @llvm.fmuladd.f32(float %39, float 2.550000e+02, float 5.000000e-01)
  %53 = fptosi float %52 to i32
  store i32 %53, ptr %11, align 4, !tbaa !31
  call void @_ZN5ImGui6PushIDEPKc(ptr noundef %0)
  switch i32 %.087, label %121 [
    i32 0, label %54
    i32 1, label %54
    i32 2, label %97
  ]

54:                                               ; preds = %42, %42
  %55 = select i1 %2, i32 4, i32 3
  %56 = getelementptr inbounds i8, ptr %14, i64 3008
  %57 = load float, ptr %56, align 4, !tbaa !32
  %58 = fadd float %25, %57
  %59 = fsub float %21, %58
  %60 = load float, ptr %23, align 4, !tbaa !27
  %61 = call float @llvm.fmuladd.f32(float %60, float 2.000000e+00, float %57)
  %62 = add nsw i32 %55, -1
  %63 = uitofp nneg i32 %62 to float
  %64 = fneg float %61
  %65 = call float @llvm.fmuladd.f32(float %64, float %63, float %59)
  %66 = uitofp nneg i32 %55 to float
  %67 = fdiv float %65, %66
  %68 = fptosi float %67 to i32
  %69 = sitofp i32 %68 to float
  %70 = call noundef float @_ZL5ImMaxff(float noundef 1.000000e+00, float noundef %69)
  %71 = load float, ptr %23, align 4, !tbaa !27
  %72 = call float @llvm.fmuladd.f32(float %71, float 2.000000e+00, float %70)
  %73 = load float, ptr %56, align 4, !tbaa !32
  %74 = fadd float %72, %73
  %75 = fneg float %74
  %76 = call float @llvm.fmuladd.f32(float %75, float %63, float %59)
  %77 = fptosi float %76 to i32
  %78 = sitofp i32 %77 to float
  %79 = call noundef float @_ZL5ImMaxff(float noundef 1.000000e+00, float noundef %78)
  call void @_ZN5ImGui13PushItemWidthEf(float noundef %70)
  %.str.112..str.113 = select i1 %40, ptr @.str.112, ptr @.str.113
  %80 = call noundef zeroext i1 @_ZN5ImGui9SliderIntEPKcPiiiS1_(ptr noundef nonnull @.str.111, ptr noundef nonnull %8, i32 noundef 0, i32 noundef 255, ptr noundef nonnull %.str.112..str.113)
  %81 = load float, ptr %56, align 4, !tbaa !32
  %82 = fptosi float %81 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %82)
  %83 = select i1 %40, ptr @.str.115, ptr @.str.116
  %84 = call noundef zeroext i1 @_ZN5ImGui9SliderIntEPKcPiiiS1_(ptr noundef nonnull @.str.114, ptr noundef nonnull %9, i32 noundef 0, i32 noundef 255, ptr noundef nonnull %83)
  %85 = or i1 %80, %84
  %86 = load float, ptr %56, align 4, !tbaa !32
  %87 = fptosi float %86 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %87)
  br i1 %2, label %88, label %94

88:                                               ; preds = %54
  %.str.118..str.119 = select i1 %40, ptr @.str.118, ptr @.str.119
  %89 = call noundef zeroext i1 @_ZN5ImGui9SliderIntEPKcPiiiS1_(ptr noundef nonnull @.str.117, ptr noundef nonnull %10, i32 noundef 0, i32 noundef 255, ptr noundef nonnull %.str.118..str.119)
  %90 = load float, ptr %56, align 4, !tbaa !32
  %91 = fptosi float %90 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %91)
  call void @_ZN5ImGui13PushItemWidthEf(float noundef %79)
  %92 = call noundef zeroext i1 @_ZN5ImGui9SliderIntEPKcPiiiS1_(ptr noundef nonnull @.str.120, ptr noundef nonnull %11, i32 noundef 0, i32 noundef 255, ptr noundef nonnull @.str.121)
  %93 = or i1 %89, %92
  br label %96

94:                                               ; preds = %54
  call void @_ZN5ImGui13PushItemWidthEf(float noundef %79)
  %.str.118..str.1192 = select i1 %40, ptr @.str.118, ptr @.str.119
  %95 = call noundef zeroext i1 @_ZN5ImGui9SliderIntEPKcPiiiS1_(ptr noundef nonnull @.str.117, ptr noundef nonnull %10, i32 noundef 0, i32 noundef 255, ptr noundef nonnull %.str.118..str.1192)
  br label %96

96:                                               ; preds = %94, %88
  %.pn = phi i1 [ %93, %88 ], [ %95, %94 ]
  %.088.in = or i1 %85, %.pn
  call void @_ZN5ImGui12PopItemWidthEv()
  call void @_ZN5ImGui12PopItemWidthEv()
  br label %121

97:                                               ; preds = %42
  %98 = fsub float %21, %25
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #7
  br i1 %2, label %99, label %101

99:                                               ; preds = %97
  %100 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %12, ptr noundef nonnull dereferenceable(1) @.str.122, i32 noundef %47, i32 noundef %49, i32 noundef %51, i32 noundef %53) #7
  br label %103

101:                                              ; preds = %97
  %102 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %12, ptr noundef nonnull dereferenceable(1) @.str.123, i32 noundef %47, i32 noundef %49, i32 noundef %51) #7
  br label %103

103:                                              ; preds = %101, %99
  %104 = getelementptr inbounds i8, ptr %14, i64 3008
  %105 = load float, ptr %104, align 4, !tbaa !32
  %106 = fsub float %98, %105
  call void @_ZN5ImGui13PushItemWidthEf(float noundef %106)
  %107 = call noundef zeroext i1 @_ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull @.str.124, ptr noundef nonnull %12, i64 noundef 64, i32 noundef 2, ptr noundef null, ptr noundef null)
  call void @_ZN5ImGui12PopItemWidthEv()
  br label %108

108:                                              ; preds = %.critedge, %103
  %.0 = phi ptr [ %12, %103 ], [ %114, %.critedge ]
  %109 = load i8, ptr %.0, align 1, !tbaa !33
  %110 = icmp eq i8 %109, 35
  br i1 %110, label %.critedge, label %111

111:                                              ; preds = %108
  %112 = sext i8 %109 to i32
  %113 = call noundef zeroext i1 @_ZL13ImCharIsSpacei(i32 noundef %112)
  br i1 %113, label %.critedge, label %115

.critedge:                                        ; preds = %108, %111
  %114 = getelementptr inbounds i8, ptr %.0, i64 1
  br label %108, !llvm.loop !34

115:                                              ; preds = %111
  store i32 0, ptr %11, align 4, !tbaa !31
  store i32 0, ptr %10, align 4, !tbaa !31
  store i32 0, ptr %9, align 4, !tbaa !31
  store i32 0, ptr %8, align 4, !tbaa !31
  br i1 %2, label %116, label %118

116:                                              ; preds = %115
  %117 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %.0, ptr noundef nonnull @.str.125, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11) #7
  br label %120

118:                                              ; preds = %115
  %119 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %.0, ptr noundef nonnull @.str.126, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10) #7
  br label %120

120:                                              ; preds = %118, %116
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #7
  br label %121

121:                                              ; preds = %120, %96, %42
  %.1.shrunk = phi i1 [ false, %42 ], [ %107, %120 ], [ %.088.in, %96 ]
  %122 = getelementptr inbounds i8, ptr %14, i64 3008
  %123 = load float, ptr %122, align 4, !tbaa !32
  %124 = fptosi float %123 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %124)
  %125 = call noundef zeroext i1 @_ZN5ImGui11ColorButtonERK6ImVec4bb(ptr noundef nonnull align 4 dereferenceable(16) %7, i1 noundef zeroext false, i1 noundef zeroext true)
  br i1 %125, label %126, label %130

126:                                              ; preds = %121
  %127 = getelementptr inbounds i8, ptr %14, i64 12408
  %128 = add nsw i32 %.087, 1
  %129 = srem i32 %128, 3
  call void @_ZN12ImGuiStorage6SetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %127, i32 noundef %20, i32 noundef %129)
  br label %130

130:                                              ; preds = %126, %121
  %131 = load i32, ptr %26, align 8, !tbaa !29
  %132 = icmp eq i32 %131, -1
  %133 = load float, ptr %122, align 4, !tbaa !32
  %134 = fptosi float %133 to i32
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef %134)
  br i1 %132, label %135, label %145

135:                                              ; preds = %130
  %136 = sext i32 %.087 to i64
  %137 = getelementptr inbounds [3 x ptr], ptr @__const._ZN5ImGui10ColorEdit4EPKcPfb.button_titles, i64 0, i64 %136
  %138 = load ptr, ptr %137, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %139 = call noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2b(ptr noundef %138, ptr noundef nonnull align 4 dereferenceable(8) %13, i1 noundef zeroext false)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  br i1 %139, label %140, label %144

140:                                              ; preds = %135
  %141 = getelementptr inbounds i8, ptr %14, i64 12408
  %142 = add nsw i32 %.087, 1
  %143 = srem i32 %142, 3
  call void @_ZN12ImGuiStorage6SetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %141, i32 noundef %20, i32 noundef %143)
  br label %144

144:                                              ; preds = %140, %135
  call void @_ZN5ImGui8SameLineEii(i32 noundef 0, i32 noundef -1)
  br label %145

145:                                              ; preds = %130, %144
  %146 = call noundef ptr @_ZL18FindTextDisplayEndPKcS0_(ptr noundef %0, ptr noundef null)
  call void @_ZN5ImGui15TextUnformattedEPKcS1_(ptr noundef %0, ptr noundef %146)
  %147 = load i32, ptr %8, align 4, !tbaa !31
  %148 = sitofp i32 %147 to float
  %149 = fdiv float %148, 2.550000e+02
  store float %149, ptr %4, align 4, !tbaa !30
  %150 = load i32, ptr %9, align 4, !tbaa !31
  %151 = sitofp i32 %150 to float
  %152 = fdiv float %151, 2.550000e+02
  store float %152, ptr %5, align 4, !tbaa !30
  %153 = load i32, ptr %10, align 4, !tbaa !31
  %154 = sitofp i32 %153 to float
  %155 = fdiv float %154, 2.550000e+02
  store float %155, ptr %6, align 4, !tbaa !30
  %156 = load i32, ptr %11, align 4, !tbaa !31
  %157 = sitofp i32 %156 to float
  %158 = fdiv float %157, 2.550000e+02
  br i1 %40, label %159, label %160

159:                                              ; preds = %145
  call void @_ZN5ImGui20ColorConvertHSVtoRGBEfffRfS0_S0_(float noundef %149, float noundef %152, float noundef %155, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6)
  br label %160

160:                                              ; preds = %159, %145
  br i1 %.1.shrunk, label %161, label %166

161:                                              ; preds = %160
  %162 = load float, ptr %4, align 4, !tbaa !30
  store float %162, ptr %1, align 4, !tbaa !30
  %163 = load float, ptr %5, align 4, !tbaa !30
  store float %163, ptr %34, align 4, !tbaa !30
  %164 = load float, ptr %6, align 4, !tbaa !30
  store float %164, ptr %36, align 4, !tbaa !30
  br i1 %2, label %165, label %166

165:                                              ; preds = %161
  store float %158, ptr %38, align 4, !tbaa !30
  br label %166

166:                                              ; preds = %161, %165, %160
  call void @_ZN5ImGui5PopIDEv()
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7
  br label %167

167:                                              ; preds = %3, %166
  %.086 = phi i1 [ %.1.shrunk, %166 ], [ false, %3 ]
  ret i1 %.086
}

; Function Attrs: nofree nounwind
declare noundef i32 @sprintf(ptr noalias nocapture noundef writeonly, ptr nocapture noundef readonly, ...) local_unnamed_addr #6

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !14, i64 68}
!10 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !11, i64 8, !11, i64 12, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !13, i64 56, !13, i64 60, !14, i64 64, !14, i64 65, !14, i64 66, !14, i64 67, !14, i64 68, !11, i64 72, !14, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !15, i64 96, !21, i64 336, !22, i64 360, !16, i64 384, !11, i64 400, !13, i64 404, !23, i64 408, !13, i64 432, !6, i64 440, !6, i64 448, !11, i64 456, !11, i64 460, !11, i64 464, !11, i64 468, !11, i64 472, !11, i64 476}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS6ImVec2", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS16ImGuiDrawContext", !12, i64 0, !12, i64 8, !12, i64 16, !13, i64 24, !13, i64 28, !13, i64 32, !11, i64 36, !11, i64 40, !16, i64 44, !14, i64 60, !17, i64 64, !19, i64 88, !20, i64 112, !20, i64 136, !11, i64 160, !6, i64 168, !13, i64 176, !13, i64 180, !11, i64 184, !11, i64 188, !12, i64 192, !13, i64 200, !13, i64 204, !14, i64 208, !11, i64 212, !20, i64 216}
!16 = !{!"_ZTS9ImGuiAabb", !12, i64 0, !12, i64 8}
!17 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !18, i64 0, !18, i64 8, !6, i64 16}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTS8ImVectorIbE", !18, i64 0, !18, i64 8, !6, i64 16}
!20 = !{!"_ZTS8ImVectorIfE", !18, i64 0, !18, i64 8, !6, i64 16}
!21 = !{!"_ZTS8ImVectorIjE", !18, i64 0, !18, i64 8, !6, i64 16}
!22 = !{!"_ZTS8ImVectorI6ImVec4E", !18, i64 0, !18, i64 8, !6, i64 16}
!23 = !{!"_ZTS12ImGuiStorage", !24, i64 0}
!24 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !18, i64 0, !18, i64 8, !6, i64 16}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = !{!28, !13, i64 28}
!28 = !{!"_ZTS10ImGuiStyle", !13, i64 0, !12, i64 4, !12, i64 12, !13, i64 20, !13, i64 24, !12, i64 28, !13, i64 36, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !13, i64 72, !13, i64 76, !13, i64 80, !13, i64 84, !7, i64 88}
!29 = !{!10, !11, i64 256}
!30 = !{!13, !13, i64 0}
!31 = !{!11, !11, i64 0}
!32 = !{!28, !13, i64 48}
!33 = !{!7, !7, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,LCSSAPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass