// File: Ciaxur[P]yagb-emu/include/imgui/imgui_widgets.cpp
// Function: ImGui::ColorTooltip(char const*, float const*, int)
void ImGui::ColorTooltip(const char* text, const float* col, ImGuiColorEditFlags flags)
{
    ImGuiContext& g = *GImGui;

    BeginTooltipEx(0, ImGuiTooltipFlags_OverridePreviousTooltip);
    const char* text_end = text ? FindRenderedTextEnd(text, NULL) : text;
    if (text_end > text)
    {
        TextEx(text, text_end);
        Separator();
    }

    ImVec2 sz(g.FontSize * 3 + g.Style.FramePadding.y * 2, g.FontSize * 3 + g.Style.FramePadding.y * 2);
    ImVec4 cf(col[0], col[1], col[2], (flags & ImGuiColorEditFlags_NoAlpha) ? 1.0f : col[3]);
    int cr = IM_F32_TO_INT8_SAT(col[0]), cg = IM_F32_TO_INT8_SAT(col[1]), cb = IM_F32_TO_INT8_SAT(col[2]), ca = (flags & ImGuiColorEditFlags_NoAlpha) ? 255 : IM_F32_TO_INT8_SAT(col[3]);
    ColorButton("##preview", cf, (flags & (ImGuiColorEditFlags__InputMask | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf)) | ImGuiColorEditFlags_NoTooltip, sz);
    SameLine();
    if ((flags & ImGuiColorEditFlags_InputRGB) || !(flags & ImGuiColorEditFlags__InputMask))
    {
        if (flags & ImGuiColorEditFlags_NoAlpha)
            Text("#%02X%02X%02X\nR: %d, G: %d, B: %d\n(%.3f, %.3f, %.3f)", cr, cg, cb, cr, cg, cb, col[0], col[1], col[2]);
        else
            Text("#%02X%02X%02X%02X\nR:%d, G:%d, B:%d, A:%d\n(%.3f, %.3f, %.3f, %.3f)", cr, cg, cb, ca, cr, cg, cb, ca, col[0], col[1], col[2], col[3]);
    }
    else if (flags & ImGuiColorEditFlags_InputHSV)
    {
        if (flags & ImGuiColorEditFlags_NoAlpha)
            Text("H: %.3f, S: %.3f, V: %.3f", col[0], col[1], col[2]);
        else
            Text("H: %.3f, S: %.3f, V: %.3f, A: %.3f", col[0], col[1], col[2], col[3]);
    }
    EndTooltip();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
leaq 0xc2693(%rip), %rax     # 0x212f40
movq (%rax), %rax
movq %rax, -0x20(%rbp)
xorl %edi, %edi
movl $0x1, %esi
callq 0xddb60
cmpq $0x0, -0x8(%rbp)
je 0x1508da
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xc8090
movq %rax, -0x60(%rbp)
jmp 0x1508e2
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x8(%rbp), %rax
jbe 0x150908
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x138a30
callq 0x13dec0
movq -0x20(%rbp), %rax
movss 0x1980(%rax), %xmm0
movq -0x20(%rbp), %rax
movss 0x216ac(%rip), %xmm1    # 0x171fcc
mulss 0x159c(%rax), %xmm1
movss 0x21690(%rip), %xmm2    # 0x171fc0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x1980(%rax), %xmm1
movq -0x20(%rbp), %rax
movss 0x2167c(%rip), %xmm2    # 0x171fcc
mulss 0x159c(%rax), %xmm2
movss 0x21660(%rip), %xmm3    # 0x171fc0
mulss %xmm3, %xmm1
addss %xmm2, %xmm1
leaq -0x30(%rbp), %rdi
callq 0xbf4c0
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x6c(%rbp)
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm0
movss %xmm0, -0x68(%rbp)
movq -0x10(%rbp), %rax
movss 0x8(%rax), %xmm0
movss %xmm0, -0x64(%rbp)
movl -0x14(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x1509b4
movss 0x2028f(%rip), %xmm0    # 0x170c3c
movss %xmm0, -0x70(%rbp)
jmp 0x1509c2
movq -0x10(%rbp), %rax
movss 0xc(%rax), %xmm0
movss %xmm0, -0x70(%rbp)
movss -0x64(%rbp), %xmm2
movss -0x68(%rbp), %xmm1
movss -0x6c(%rbp), %xmm0
movss -0x70(%rbp), %xmm3
leaq -0x40(%rbp), %rdi
callq 0xbf4f0
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
callq 0x13bfc0
movss 0x21d68(%rip), %xmm1    # 0x17275c
mulss %xmm1, %xmm0
movss 0x215d8(%rip), %xmm1    # 0x171fd8
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x44(%rbp)
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm0
callq 0x13bfc0
movss 0x21d3b(%rip), %xmm1    # 0x17275c
mulss %xmm1, %xmm0
movss 0x215ab(%rip), %xmm1    # 0x171fd8
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movss 0x8(%rax), %xmm0
callq 0x13bfc0
movss 0x21d0e(%rip), %xmm1    # 0x17275c
mulss %xmm1, %xmm0
movss 0x2157e(%rip), %xmm1    # 0x171fd8
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x4c(%rbp)
movl -0x14(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x150a7a
movl $0xff, %eax
movl %eax, -0x74(%rbp)
jmp 0x150aa7
movq -0x10(%rbp), %rax
movss 0xc(%rax), %xmm0
callq 0x13bfc0
movss 0x21ccc(%rip), %xmm1    # 0x17275c
mulss %xmm1, %xmm0
movss 0x2153c(%rip), %xmm1    # 0x171fd8
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x74(%rbp)
movl -0x74(%rbp), %eax
movl %eax, -0x50(%rbp)
movl -0x14(%rbp), %edx
andl $0x18060002, %edx       # imm = 0x18060002
orl $0x40, %edx
movq -0x30(%rbp), %rax
movq %rax, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
leaq 0x3f128(%rip), %rdi     # 0x18fbf5
leaq -0x40(%rbp), %rsi
callq 0x14d5d0
xorps %xmm0, %xmm0
movss 0x2149f(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
movl -0x14(%rbp), %eax
andl $0x8000000, %eax        # imm = 0x8000000
cmpl $0x0, %eax
jne 0x150b04
movl -0x14(%rbp), %eax
andl $0x18000000, %eax       # imm = 0x18000000
cmpl $0x0, %eax
jne 0x150bcb
movl -0x14(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x150b5c
movl -0x44(%rbp), %esi
movl -0x48(%rbp), %edx
movl -0x4c(%rbp), %ecx
movl -0x44(%rbp), %r8d
movl -0x48(%rbp), %r9d
movl -0x4c(%rbp), %eax
movq -0x10(%rbp), %rdi
movss (%rdi), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x10(%rbp), %rdi
movss 0x4(%rdi), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x10(%rbp), %rdi
movss 0x8(%rdi), %xmm2
cvtss2sd %xmm2, %xmm2
leaq 0x3f0af(%rip), %rdi     # 0x18fbff
movl %eax, (%rsp)
movb $0x3, %al
callq 0x139160
jmp 0x150bc6
movl -0x44(%rbp), %esi
movl -0x48(%rbp), %edx
movl -0x4c(%rbp), %ecx
movl -0x50(%rbp), %r8d
movl -0x44(%rbp), %r9d
movl -0x48(%rbp), %r11d
movl -0x4c(%rbp), %r10d
movl -0x50(%rbp), %eax
movq -0x10(%rbp), %rdi
movss (%rdi), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x10(%rbp), %rdi
movss 0x4(%rdi), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x10(%rbp), %rdi
movss 0x8(%rdi), %xmm2
cvtss2sd %xmm2, %xmm2
movq -0x10(%rbp), %rdi
movss 0xc(%rdi), %xmm3
cvtss2sd %xmm3, %xmm3
leaq 0x3f082(%rip), %rdi     # 0x18fc34
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movb $0x4, %al
callq 0x139160
jmp 0x150c62
movl -0x14(%rbp), %eax
andl $0x10000000, %eax       # imm = 0x10000000
cmpl $0x0, %eax
je 0x150c60
movl -0x14(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x150c1d
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x10(%rbp), %rax
movss 0x8(%rax), %xmm2
cvtss2sd %xmm2, %xmm2
leaq 0x3f062(%rip), %rdi     # 0x18fc76
movb $0x3, %al
callq 0x139160
jmp 0x150c5e
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x10(%rbp), %rax
movss 0x8(%rax), %xmm2
cvtss2sd %xmm2, %xmm2
movq -0x10(%rbp), %rax
movss 0xc(%rax), %xmm3
cvtss2sd %xmm3, %xmm3
leaq 0x3f039(%rip), %rdi     # 0x18fc90
movb $0x4, %al
callq 0x139160
jmp 0x150c60
jmp 0x150c62
callq 0xddce0
addq $0x90, %rsp
popq %rbp
retq