// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/backends/xlib/backendxlib.cpp
// Function: smooth::Backends::BackendXLib::UpdateColorsGnome()
S::Bool S::Backends::BackendXLib::UpdateColorsGnome()
{
	/* Query UI colors defined in GTK theme.
	 */
	GdkRGBA	 backgroundColor    = get_gtk_color(GTK_TYPE_WINDOW, GTK_STYLE_CLASS_BACKGROUND, GTK_STATE_FLAG_NORMAL, true);

	GdkRGBA	 textColor	    = get_gtk_color(GTK_TYPE_BUTTON, GTK_STYLE_CLASS_VIEW, GTK_STATE_FLAG_NORMAL, false);

	if (gdk_rgba_equal(&backgroundColor, &textColor)) return False;

	GdkRGBA	 clientColor	    = get_gtk_color(GTK_TYPE_TEXT_VIEW, GTK_STYLE_CLASS_VIEW, GTK_STATE_FLAG_NORMAL, true);
	GdkRGBA	 clientTextColor    = get_gtk_color(GTK_TYPE_TEXT_VIEW, GTK_STYLE_CLASS_VIEW, GTK_STATE_FLAG_NORMAL, false);

	GdkRGBA	 highlightColor	    = get_gtk_color(GTK_TYPE_TEXT_VIEW, GTK_STYLE_CLASS_VIEW, GtkStateFlags(GTK_STATE_FLAG_SELECTED | GTK_STATE_FLAG_FOCUSED), true);
	GdkRGBA	 highlightTextColor = get_gtk_color(GTK_TYPE_TEXT_VIEW, GTK_STYLE_CLASS_VIEW, GtkStateFlags(GTK_STATE_FLAG_SELECTED | GTK_STATE_FLAG_FOCUSED), false);

	GdkRGBA	 tooltipColor	    = get_gtk_color(GTK_TYPE_TOOLTIP, GTK_STYLE_CLASS_VIEW, GTK_STATE_FLAG_NORMAL, true);
	GdkRGBA	 tooltipTextColor   = get_gtk_color(GTK_TYPE_TOOLTIP, GTK_STYLE_CLASS_VIEW, GTK_STATE_FLAG_NORMAL, false);

	GdkRGBA	 linkColor	    = get_gtk_color(GTK_TYPE_LINK_BUTTON, GTK_STYLE_CLASS_VIEW, GTK_STATE_FLAG_LINK, false);
	GdkRGBA	 linkHighlightColor = get_gtk_color(GTK_TYPE_LINK_BUTTON, GTK_STYLE_CLASS_VIEW, GtkStateFlags(GTK_STATE_FLAG_LINK | GTK_STATE_FLAG_PRELIGHT), false);

	/* Convert to smooth colors.
	 */
	Setup::BackgroundColor	  = GUI::Color(255 * backgroundColor.red, 255 * backgroundColor.green, 255 * backgroundColor.blue);
	Setup::LightGrayColor	  = GUI::Color(255 * (backgroundColor.red + (1.0 - backgroundColor.red) * 0.6), 255 * (backgroundColor.green + (1.0 - backgroundColor.green) * 0.6), 255 * (backgroundColor.blue + (1.0 - backgroundColor.blue) * 0.6));

	Setup::ClientColor	  = GUI::Color(255 * clientColor.red, 255 * clientColor.green, 255 * clientColor.blue);
	Setup::ClientTextColor	  = GUI::Color(255 * clientTextColor.red, 255 * clientTextColor.green, 255 * clientTextColor.blue);

	Setup::DividerLightColor  = GUI::Color(255 * (backgroundColor.red + (1.0 - backgroundColor.red) * 0.6), 255 * (backgroundColor.green + (1.0 - backgroundColor.green) * 0.6), 255 * (backgroundColor.blue + (1.0 - backgroundColor.blue) * 0.6));
	Setup::DividerDarkColor	  = GUI::Color(255 * backgroundColor.red * 0.7, 255 * backgroundColor.green * 0.7, 255 * backgroundColor.blue * 0.7);

	Setup::TextColor	  = GUI::Color(255 * textColor.red, 255 * textColor.green, 255 * textColor.blue);
	Setup::InactiveTextColor  = Setup::TextColor.Average(Setup::BackgroundColor);

	Setup::HighlightColor	  = GUI::Color(255 * highlightColor.red, 255 * highlightColor.green, 255 * highlightColor.blue);
	Setup::HighlightTextColor = GUI::Color(255 * highlightTextColor.red, 255 * highlightTextColor.green, 255 * highlightTextColor.blue);

	Setup::GradientStartColor = GUI::Color(255 * (highlightColor.red - highlightColor.red * 0.15), 255 * (highlightColor.green - highlightColor.green * 0.15), 255 * (highlightColor.blue - highlightColor.blue * 0.15));
	Setup::GradientEndColor	  = GUI::Color(255 * (highlightColor.red + (1.0 - highlightColor.red) * 0.15), 255 * (highlightColor.green + (1.0 - highlightColor.green) * 0.15), 255 * (highlightColor.blue + (1.0 - highlightColor.blue) * 0.15));
	Setup::GradientTextColor  = GUI::Color(255 * highlightTextColor.red, 255 * highlightTextColor.green, 255 * highlightTextColor.blue);

	Setup::TooltipColor	  = GUI::Color(255 * tooltipColor.red, 255 * tooltipColor.green, 255 * tooltipColor.blue);
	Setup::TooltipTextColor	  = GUI::Color(255 * tooltipTextColor.red, 255 * tooltipTextColor.green, 255 * tooltipTextColor.blue);

	if (GUI::Color(255 * linkColor.red, 255 * linkColor.green, 255 * linkColor.blue) != Setup::TextColor)
	{
		Setup::LinkColor	  = GUI::Color(255 * linkColor.red, 255 * linkColor.green, 255 * linkColor.blue);
		Setup::LinkHighlightColor = GUI::Color(255 * linkHighlightColor.red, 255 * linkHighlightColor.green, 255 * linkHighlightColor.blue);
	}

	return True;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x158, %rsp            # imm = 0x158
callq 0x59fa0
leaq 0x4c48f(%rip), %rdx     # 0x102d56
leaq 0x48(%rsp), %rbx
pushq $0x1
popq %r8
movq %rbx, %rdi
movq %rax, %rsi
xorl %ecx, %ecx
callq 0xb6ef4
callq 0x57c20
leaq 0x4c478(%rip), %rdx     # 0x102d61
leaq 0x28(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0xb6ef4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x59420
movl %eax, %ebx
testl %eax, %eax
jne 0xb6edd
callq 0x58430
movq %rax, %rbp
leaq 0x4c43f(%rip), %r12     # 0x102d61
leaq 0x138(%rsp), %r15
pushq $0x1
popq %r13
movq %r15, %rdi
movq %rax, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movl %r13d, %r8d
callq 0xb6ef4
leaq 0xd8(%rsp), %rdi
movq %rbp, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0xb6ef4
leaq 0xb8(%rsp), %rdi
pushq $0x24
popq %r14
movq %rbp, %rsi
movq %r12, %rdx
movl %r14d, %ecx
movl %r13d, %r8d
callq 0xb6ef4
leaq 0x98(%rsp), %rdi
movq %rbp, %rsi
movq %r12, %rdx
movl %r14d, %ecx
xorl %r8d, %r8d
callq 0xb6ef4
callq 0x580c0
leaq 0x78(%rsp), %rdi
movq %rax, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movl %r13d, %r8d
callq 0xb6ef4
callq 0x580c0
leaq 0x118(%rsp), %rbp
movq %rbp, %rdi
movq %rax, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0xb6ef4
callq 0x56a80
movq %rax, %r14
leaq 0xf8(%rsp), %r13
movq %r13, %rdi
movq %rax, %rsi
movq %r12, %rdx
movl $0x200, %ecx            # imm = 0x200
xorl %r8d, %r8d
callq 0xb6ef4
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
movq %r12, %rdx
movl $0x202, %ecx            # imm = 0x202
xorl %r8d, %r8d
callq 0xb6ef4
movsd 0x48(%rsp), %xmm0
movsd 0x50(%rsp), %xmm1
movsd 0x2c935(%rip), %xmm7    # 0xe3350
movsd 0x2c94d(%rip), %xmm2    # 0xe3370
movapd %xmm2, %xmm3
movapd %xmm2, %xmm6
subsd %xmm0, %xmm3
movsd 0x300d9(%rip), %xmm2    # 0xe6b10
mulsd %xmm2, %xmm3
addsd %xmm0, %xmm3
mulsd %xmm7, %xmm0
cvttsd2si %xmm0, %eax
movapd %xmm6, %xmm4
subsd %xmm1, %xmm4
mulsd %xmm2, %xmm4
addsd %xmm1, %xmm4
mulsd %xmm7, %xmm1
cvttsd2si %xmm1, %ecx
movsd 0x58(%rsp), %xmm5
subsd %xmm5, %xmm6
mulsd %xmm2, %xmm6
addsd %xmm5, %xmm6
movapd %xmm5, %xmm2
mulsd %xmm7, %xmm2
cvttsd2si %xmm2, %edx
shll $0x10, %edx
shll $0x8, %ecx
orl %eax, %ecx
orl %edx, %ecx
movq 0xaaa42(%rip), %rdx     # 0x1614d0
andl $0x0, (%rdx)
movslq %ecx, %rax
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %ecx
movq %rax, 0x8(%rdx)
mulsd %xmm7, %xmm4
cvttsd2si %xmm4, %eax
mulsd %xmm7, %xmm6
cvttsd2si %xmm6, %esi
shll $0x10, %esi
shll $0x8, %eax
orl %ecx, %eax
orl %esi, %eax
cltq
movq 0xaace5(%rip), %rcx     # 0x1617a8
andl $0x0, (%rcx)
movsd (%r15), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %esi
movsd 0x8(%r15), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %edi
movsd 0x10(%r15), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %r8d
movq %rax, 0x8(%rcx)
shll $0x10, %r8d
shll $0x8, %edi
orl %esi, %edi
movq 0xaab6c(%rip), %rcx     # 0x161670
andl $0x0, (%rcx)
orl %r8d, %edi
movslq %edi, %rsi
movq %rsi, 0x8(%rcx)
leaq 0xd8(%rsp), %rsi
movsd (%rsi), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %ecx
movsd 0x8(%rsi), %xmm3
movq %rsi, %rdi
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %esi
movsd 0x10(%rdi), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %edi
shll $0x10, %edi
shll $0x8, %esi
orl %ecx, %esi
orl %edi, %esi
movslq %esi, %rcx
movq 0xab29a(%rip), %rsi     # 0x161df0
andl $0x0, (%rsi)
movq 0xaad18(%rip), %rdi     # 0x161878
andl $0x0, (%rdi)
movsd 0x4c18d(%rip), %xmm3    # 0x102cf8
mulsd %xmm3, %xmm0
cvttsd2si %xmm0, %r8d
movq %rcx, 0x8(%rsi)
mulsd %xmm3, %xmm1
cvttsd2si %xmm1, %ecx
movq %rax, 0x8(%rdi)
mulsd %xmm3, %xmm2
cvttsd2si %xmm2, %eax
shll $0x10, %eax
shll $0x8, %ecx
orl %r8d, %ecx
orl %eax, %ecx
movq 0xaacea(%rip), %rax     # 0x161888
andl $0x0, (%rax)
movslq %ecx, %rcx
movq %rcx, 0x8(%rax)
movsd 0x28(%rsp), %xmm0
mulsd %xmm7, %xmm0
cvttsd2si %xmm0, %eax
movsd 0x30(%rsp), %xmm0
mulsd %xmm7, %xmm0
cvttsd2si %xmm0, %ecx
movsd 0x38(%rsp), %xmm0
mulsd %xmm7, %xmm0
cvttsd2si %xmm0, %esi
shll $0x10, %esi
shll $0x8, %ecx
orl %eax, %ecx
orl %esi, %ecx
movslq %ecx, %rax
movq 0xaae02(%rip), %r14     # 0x1619e8
andl $0x0, (%r14)
movq %rax, 0x8(%r14)
leaq 0x68(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x594a0
leaq 0xb8(%rsp), %rcx
movsd (%rcx), %xmm1
movsd 0x4c0f6(%rip), %xmm0    # 0x102d08
movapd %xmm1, %xmm3
movapd %xmm1, %xmm4
movsd 0x2c74d(%rip), %xmm9    # 0xe3370
movapd %xmm9, %xmm2
subsd %xmm1, %xmm2
mulsd %xmm0, %xmm2
addsd %xmm1, %xmm2
movsd 0x2c713(%rip), %xmm11   # 0xe3350
mulsd %xmm11, %xmm1
cvttsd2si %xmm1, %eax
movsd 0x8(%rcx), %xmm6
movq %rcx, %rdx
movapd %xmm6, %xmm7
movapd %xmm6, %xmm5
movapd %xmm9, %xmm1
subsd %xmm6, %xmm1
mulsd %xmm0, %xmm1
addsd %xmm6, %xmm1
mulsd %xmm11, %xmm6
cvttsd2si %xmm6, %ecx
movsd 0x10(%rdx), %xmm8
movapd %xmm8, %xmm6
subsd %xmm8, %xmm9
mulsd %xmm0, %xmm9
addsd %xmm8, %xmm9
movapd %xmm9, %xmm10
movapd %xmm8, %xmm9
mulsd %xmm11, %xmm9
cvttsd2si %xmm9, %edx
leaq 0x98(%rsp), %rdi
movsd (%rdi), %xmm9
mulsd %xmm11, %xmm9
cvttsd2si %xmm9, %esi
movsd 0x8(%rdi), %xmm9
movq %rdi, %r8
mulsd %xmm11, %xmm9
cvttsd2si %xmm9, %edi
movsd 0x10(%r8), %xmm9
mulsd %xmm11, %xmm9
cvttsd2si %xmm9, %r8d
mulsd %xmm0, %xmm3
subsd %xmm3, %xmm4
mulsd %xmm11, %xmm4
cvttsd2si %xmm4, %r9d
movups (%r15), %xmm3
movq 0xaac5b(%rip), %r10     # 0x161950
movups %xmm3, (%r10)
mulsd %xmm0, %xmm7
subsd %xmm7, %xmm5
shll $0x8, %ecx
orl %eax, %ecx
shll $0x10, %edx
orl %edx, %ecx
movslq %ecx, %rax
movq 0xaa74b(%rip), %rcx     # 0x161460
andl $0x0, (%rcx)
movq %rax, 0x8(%rcx)
shll $0x10, %r8d
shll $0x8, %edi
orl %esi, %edi
movq 0xaa9c4(%rip), %rcx     # 0x1616f0
andl $0x0, (%rcx)
orl %r8d, %edi
movslq %edi, %rax
movq %rax, 0x8(%rcx)
mulsd %xmm11, %xmm5
cvttsd2si %xmm5, %ecx
mulsd %xmm0, %xmm6
subsd %xmm6, %xmm8
mulsd %xmm11, %xmm8
cvttsd2si %xmm8, %edx
shll $0x10, %edx
shll $0x8, %ecx
orl %r9d, %ecx
orl %edx, %ecx
movslq %ecx, %rcx
movq 0xab24e(%rip), %rdx     # 0x161fb8
andl $0x0, (%rdx)
movq %rcx, 0x8(%rdx)
mulsd %xmm11, %xmm2
cvttsd2si %xmm2, %ecx
mulsd %xmm11, %xmm1
cvttsd2si %xmm1, %edx
mulsd %xmm11, %xmm10
cvttsd2si %xmm10, %esi
shll $0x10, %esi
shll $0x8, %edx
orl %ecx, %edx
orl %esi, %edx
movslq %edx, %rcx
movq 0xab17f(%rip), %rdx     # 0x161f20
andl $0x0, (%rdx)
movq %rcx, 0x8(%rdx)
movq 0xaad81(%rip), %rcx     # 0x161b30
andl $0x0, (%rcx)
leaq 0x78(%rsp), %rsi
movsd (%rsi), %xmm0
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %edx
movsd 0x8(%rsi), %xmm0
movq %rsi, %rdi
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %esi
movsd 0x10(%rdi), %xmm0
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %edi
movq %rax, 0x8(%rcx)
shll $0x10, %edi
shll $0x8, %esi
orl %edx, %esi
movq 0xaa70a(%rip), %rax     # 0x161500
andl $0x0, (%rax)
orl %edi, %esi
movslq %esi, %rcx
movq %rcx, 0x8(%rax)
movsd (%rbp), %xmm0
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %eax
movsd 0x8(%rbp), %xmm0
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %ecx
movsd 0x10(%rbp), %xmm0
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %edx
shll $0x10, %edx
shll $0x8, %ecx
orl %eax, %ecx
orl %edx, %ecx
movslq %ecx, %rax
movq 0xaaa50(%rip), %rcx     # 0x161890
andl $0x0, (%rcx)
movsd (%r13), %xmm0
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %edx
movsd 0x8(%r13), %xmm0
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %esi
movsd 0x10(%r13), %xmm0
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %edi
movq %rax, 0x8(%rcx)
shll $0x10, %edi
shll $0x8, %esi
orl %edx, %esi
orl %edi, %esi
movslq %esi, %rax
cmpq %rax, 0x8(%r14)
je 0xb6edd
movapd %xmm11, %xmm1
movq 0xaa825(%rip), %rcx     # 0x1616b8
andl $0x0, (%rcx)
movq %rax, 0x8(%rcx)
movsd 0x8(%rsp), %xmm0
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %eax
movsd 0x10(%rsp), %xmm0
mulsd %xmm11, %xmm0
cvttsd2si %xmm0, %ecx
mulsd 0x18(%rsp), %xmm1
cvttsd2si %xmm1, %edx
shll $0x10, %edx
shll $0x8, %ecx
orl %eax, %ecx
orl %edx, %ecx
movslq %ecx, %rax
movq 0xab062(%rip), %rcx     # 0x161f38
andl $0x0, (%rcx)
movq %rax, 0x8(%rcx)
testl %ebx, %ebx
sete %al
addq $0x158, %rsp            # imm = 0x158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq