// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::ColorButton(ImVec4 const&, bool, bool)
bool ImGui::ColorButton(const ImVec4& col, bool small_height, bool outline_border)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiState& g = *GImGui;
    const ImGuiStyle& style = g.Style;
    const ImGuiID id = window->GetID("#colorbutton");
    const float square_size = g.FontSize;
    const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(square_size + style.FramePadding.y*2, square_size + (small_height ? 0 : style.FramePadding.y*2)));
    ItemSize(bb, small_height ? 0.0f : style.FramePadding.y);
    if (!ItemAdd(bb, &id))
        return false;

    bool hovered, held;
    bool pressed = ButtonBehavior(bb, id, &hovered, &held, true);
    RenderFrame(bb.Min, bb.Max, window->Color(col), outline_border, style.FrameRounding);

    if (hovered)
    {
        int ix = (int)(col.x * 255.0f + 0.5f);
        int iy = (int)(col.y * 255.0f + 0.5f);
        int iz = (int)(col.z * 255.0f + 0.5f);
        int iw = (int)(col.w * 255.0f + 0.5f);
        ImGui::SetTooltip("Color:\n(%.2f,%.2f,%.2f,%.2f)\n#%02X%02X%02X%02X", col.x, col.y, col.z, col.w, ix, iy, iz, iw);
    }

    return pressed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movb %dl, %al
movb %sil, %cl
movq %rdi, -0x10(%rbp)
andb $0x1, %cl
movb %cl, -0x11(%rbp)
andb $0x1, %al
movb %al, -0x12(%rbp)
callq 0x2e220
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x28fbb
movb $0x0, -0x1(%rbp)
jmp 0x2927b
movq 0x504fe(%rip), %rax     # 0x794c0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
addq $0x13e8, %rax           # imm = 0x13E8
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x33357(%rip), %rsi     # 0x5c336
xorl %eax, %eax
movl %eax, %edx
callq 0xbc60
movl %eax, -0x34(%rbp)
movq -0x28(%rbp), %rax
movss 0x1718(%rax), %xmm0
movss %xmm0, -0x38(%rbp)
movq -0x20(%rbp), %rax
addq $0xa8, %rax
movq %rax, -0x98(%rbp)
movq -0x20(%rbp), %rax
addq $0xa8, %rax
movq %rax, -0x90(%rbp)
movss -0x38(%rbp), %xmm1
movq -0x30(%rbp), %rax
movss 0x24(%rax), %xmm0
addss %xmm0, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x88(%rbp)
movss -0x38(%rbp), %xmm0
movss %xmm0, -0x84(%rbp)
testb $0x1, -0x11(%rbp)
je 0x2905c
xorps %xmm0, %xmm0
movss %xmm0, -0x9c(%rbp)
jmp 0x29075
movq -0x30(%rbp), %rax
movss 0x32050(%rip), %xmm0    # 0x5b0b8
mulss 0x24(%rax), %xmm0
movss %xmm0, -0x9c(%rbp)
movss -0x88(%rbp), %xmm0
movss -0x84(%rbp), %xmm1
movss -0x9c(%rbp), %xmm2
addss %xmm2, %xmm1
leaq -0x58(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x2d280
movq -0x90(%rbp), %rdi
movq -0xa8(%rbp), %rsi
callq 0xc7e0
movq -0x98(%rbp), %rsi
movlpd %xmm0, -0x50(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x2eb40
testb $0x1, -0x11(%rbp)
je 0x290e0
xorps %xmm0, %xmm0
movss %xmm0, -0xac(%rbp)
jmp 0x290f1
movq -0x30(%rbp), %rax
movss 0x24(%rax), %xmm0
movss %xmm0, -0xac(%rbp)
movss -0xac(%rbp), %xmm0
leaq -0x48(%rbp), %rdi
callq 0xc060
leaq -0x48(%rbp), %rdi
leaq -0x34(%rbp), %rsi
callq 0xc0a0
testb $0x1, %al
jne 0x2911c
movb $0x0, -0x1(%rbp)
jmp 0x2927b
movl -0x34(%rbp), %esi
leaq -0x48(%rbp), %rdi
leaq -0x59(%rbp), %rdx
leaq -0x5a(%rbp), %rcx
movl $0x1, %r8d
xorl %r9d, %r9d
callq 0x17010
movb %al, -0x5b(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x2fd20
movl %eax, %edi
movb -0x12(%rbp), %al
movq -0x30(%rbp), %rcx
movss 0x28(%rcx), %xmm2
movsd -0x68(%rbp), %xmm0
movsd -0x70(%rbp), %xmm1
movzbl %al, %esi
andl $0x1, %esi
callq 0x10a20
testb $0x1, -0x59(%rbp)
je 0x29273
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movss 0x31ef6(%rip), %xmm1    # 0x5b08c
mulss %xmm1, %xmm0
movss 0x31e82(%rip), %xmm1    # 0x5b024
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x74(%rbp)
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm0
movss 0x31ece(%rip), %xmm1    # 0x5b08c
mulss %xmm1, %xmm0
movss 0x31e5a(%rip), %xmm1    # 0x5b024
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x78(%rbp)
movq -0x10(%rbp), %rax
movss 0x8(%rax), %xmm0
movss 0x31ea6(%rip), %xmm1    # 0x5b08c
mulss %xmm1, %xmm0
movss 0x31e32(%rip), %xmm1    # 0x5b024
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x7c(%rbp)
movq -0x10(%rbp), %rax
movss 0xc(%rax), %xmm0
movss 0x31e7e(%rip), %xmm1    # 0x5b08c
mulss %xmm1, %xmm0
movss 0x31e0a(%rip), %xmm1    # 0x5b024
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x80(%rbp)
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
movl -0x74(%rbp), %esi
movl -0x78(%rbp), %edx
movl -0x7c(%rbp), %ecx
movl -0x80(%rbp), %r8d
leaq 0x330d7(%rip), %rdi     # 0x5c343
movb $0x4, %al
callq 0x11f80
movb -0x5b(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xb0, %rsp
popq %rbp
retq
nopl (%rax)