// File: /workspace/github_c_makefile_star2_O3/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 0x58c50
leaq 0x56731(%rip), %rdx     # 0x112e9e
leaq 0x48(%rsp), %rbx
xorl %ebp, %ebp
movq %rbx, %rdi
movq %rax, %rsi
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0xbcd92
callq 0x56ab0
leaq 0x56716(%rip), %rdx     # 0x112ea9
leaq 0x28(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0xbcd92
movq %rbx, %rdi
movq %r14, %rsi
callq 0x58190
movl %eax, %ebx
testl %eax, %eax
jne 0xbcd7b
callq 0x57240
movq %rax, %r13
leaq 0x566dd(%rip), %r12     # 0x112ea9
leaq 0x138(%rsp), %r15
movq %r15, %rdi
movq %rax, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0xbcd92
leaq 0x118(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0xbcd92
leaq 0xf8(%rsp), %rdi
movq %r13, %rsi
movq %r12, %rdx
movl $0x24, %ecx
movl $0x1, %r8d
callq 0xbcd92
leaq 0xd8(%rsp), %rdi
movq %r13, %rsi
movq %r12, %rdx
movl $0x24, %ecx
xorl %r8d, %r8d
callq 0xbcd92
callq 0x56f10
leaq 0xb8(%rsp), %rdi
movq %rax, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0xbcd92
callq 0x56f10
leaq 0x98(%rsp), %rdi
movq %rax, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0xbcd92
callq 0x55a10
movq %rax, %r13
leaq 0x78(%rsp), %rdi
movq %rax, %rsi
movq %r12, %rdx
movl $0x200, %ecx            # imm = 0x200
xorl %r8d, %r8d
callq 0xbcd92
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
movq %r12, %rdx
movl $0x202, %ecx            # imm = 0x202
xorl %r8d, %r8d
callq 0xbcd92
movsd 0x48(%rsp), %xmm0
movsd 0x36aa7(%rip), %xmm7    # 0xf3368
movsd 0x36abf(%rip), %xmm1    # 0xf3388
movapd %xmm1, %xmm3
movapd %xmm1, %xmm6
subsd %xmm0, %xmm3
movsd 0x3a333(%rip), %xmm2    # 0xf6c10
mulsd %xmm2, %xmm3
addsd %xmm0, %xmm3
mulsd %xmm7, %xmm0
cvttsd2si %xmm0, %eax
movsd 0x50(%rsp), %xmm5
movapd %xmm1, %xmm4
subsd %xmm5, %xmm4
movapd %xmm5, %xmm1
mulsd %xmm7, %xmm1
cvttsd2si %xmm1, %ecx
mulsd %xmm2, %xmm4
addsd %xmm5, %xmm4
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
movslq %ecx, %rax
movq 0xaeb8f(%rip), %rdx     # 0x16b4d0
movl %ebp, (%rdx)
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 0xaee36(%rip), %rcx     # 0x16b7a8
movl %ebp, (%rcx)
movq %rax, 0x8(%rcx)
movsd (%r15), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %ecx
movsd 0x8(%r15), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %esi
movsd 0x10(%r15), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %edi
shll $0x10, %edi
shll $0x8, %esi
orl %ecx, %esi
orl %edi, %esi
movslq %esi, %rcx
movq 0xaecbb(%rip), %rsi     # 0x16b670
movl %ebp, (%rsi)
movq %rcx, 0x8(%rsi)
movsd (%r14), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %ecx
movsd 0x8(%r14), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %esi
movsd 0x10(%r14), %xmm3
mulsd %xmm7, %xmm3
cvttsd2si %xmm3, %edi
shll $0x10, %edi
shll $0x8, %esi
orl %ecx, %esi
orl %edi, %esi
movslq %esi, %rcx
movq 0xaf3f8(%rip), %rsi     # 0x16bdf0
movl %ebp, (%rsi)
movq %rcx, 0x8(%rsi)
movq 0xaee73(%rip), %rcx     # 0x16b878
movsd 0x56433(%rip), %xmm3    # 0x112e40
mulsd %xmm3, %xmm0
cvttsd2si %xmm0, %esi
movl %ebp, (%rcx)
mulsd %xmm3, %xmm1
cvttsd2si %xmm1, %edi
movq %rax, 0x8(%rcx)
mulsd %xmm3, %xmm2
cvttsd2si %xmm2, %eax
shll $0x10, %eax
shll $0x8, %edi
orl %esi, %edi
orl %eax, %edi
movslq %edi, %rax
movq 0xaee49(%rip), %rcx     # 0x16b888
movl %ebp, (%rcx)
movq %rax, 0x8(%rcx)
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 0xaef65(%rip), %r14     # 0x16b9e8
movl %ebp, (%r14)
movq %rax, 0x8(%r14)
leaq 0x68(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x58200
movq 0xaeeaf(%rip), %rax     # 0x16b950
movups (%r15), %xmm0
movups %xmm0, (%rax)
leaq 0xf8(%rsp), %rdx
movsd (%rdx), %xmm2
movsd 0x8(%rdx), %xmm1
movsd 0x5638f(%rip), %xmm0    # 0x112e50
movapd %xmm2, %xmm4
movapd %xmm2, %xmm5
movsd 0x368b6(%rip), %xmm10   # 0xf3388
movapd %xmm10, %xmm3
subsd %xmm2, %xmm3
mulsd %xmm0, %xmm3
addsd %xmm2, %xmm3
movsd 0x3687c(%rip), %xmm11   # 0xf3368
mulsd %xmm11, %xmm2
cvttsd2si %xmm2, %eax
movapd %xmm1, %xmm8
movapd %xmm1, %xmm6
movapd %xmm10, %xmm2
subsd %xmm1, %xmm2
mulsd %xmm0, %xmm2
addsd %xmm1, %xmm2
mulsd %xmm11, %xmm1
cvttsd2si %xmm1, %ecx
movsd 0x10(%rdx), %xmm9
movapd %xmm9, %xmm7
movapd %xmm9, %xmm1
subsd %xmm9, %xmm10
mulsd %xmm0, %xmm10
addsd %xmm9, %xmm10
mulsd %xmm11, %xmm9
cvttsd2si %xmm9, %edx
leaq 0xd8(%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, %xmm4
subsd %xmm4, %xmm5
mulsd %xmm11, %xmm5
cvttsd2si %xmm5, %r9d
mulsd %xmm0, %xmm8
subsd %xmm8, %xmm6
shll $0x8, %ecx
orl %eax, %ecx
shll $0x10, %edx
orl %edx, %ecx
movslq %ecx, %rax
movq 0xae8b5(%rip), %rcx     # 0x16b460
movl %ebp, (%rcx)
movq %rax, 0x8(%rcx)
shll $0x10, %r8d
shll $0x8, %edi
orl %esi, %edi
orl %r8d, %edi
movslq %edi, %rax
movq 0xaeb29(%rip), %rcx     # 0x16b6f0
movl %ebp, (%rcx)
mulsd %xmm11, %xmm6
cvttsd2si %xmm6, %edx
mulsd %xmm0, %xmm7
subsd %xmm7, %xmm1
mulsd %xmm11, %xmm1
cvttsd2si %xmm1, %esi
movq %rax, 0x8(%rcx)
shll $0x10, %esi
shll $0x8, %edx
orl %r9d, %edx
orl %esi, %edx
movslq %edx, %rcx
movq 0xaf3bc(%rip), %rdx     # 0x16bfb8
movl %ebp, (%rdx)
movq %rcx, 0x8(%rdx)
mulsd %xmm11, %xmm3
cvttsd2si %xmm3, %ecx
mulsd %xmm11, %xmm2
cvttsd2si %xmm2, %edx
mulsd %xmm11, %xmm10
cvttsd2si %xmm10, %esi
shll $0x10, %esi
shll $0x8, %edx
orl %ecx, %edx
orl %esi, %edx
movslq %edx, %rcx
movq 0xaf2ee(%rip), %rdx     # 0x16bf20
movl %ebp, (%rdx)
movq %rcx, 0x8(%rdx)
movq 0xaeef1(%rip), %rcx     # 0x16bb30
movl %ebp, (%rcx)
leaq 0xb8(%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
orl %edi, %esi
movslq %esi, %rax
movq 0xae873(%rip), %rcx     # 0x16b500
movl %ebp, (%rcx)
leaq 0x98(%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
orl %edi, %esi
movslq %esi, %rax
movq 0xaebb5(%rip), %rcx     # 0x16b890
movl %ebp, (%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
orl %edi, %esi
movslq %esi, %rax
cmpq %rax, 0x8(%r14)
je 0xbcd7b
movapd %xmm11, %xmm1
movq 0xae987(%rip), %rcx     # 0x16b6b8
xorl %edx, %edx
movl %edx, (%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, %esi
shll $0x10, %esi
shll $0x8, %ecx
orl %eax, %ecx
orl %esi, %ecx
movslq %ecx, %rax
movq 0xaf1c3(%rip), %rcx     # 0x16bf38
movl %edx, (%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