LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::GetRealSize() const
S::GUI::Size S::GUI::Widget::GetRealSize() const
{
	if (!registered)   return size;
	if (realSizeValid) return realSize;

	Surface	*surface = GetDrawSurface();

	realSize      = size * surface->GetSurfaceDPI() / 96.0;
	realSizeValid = True;

	return realSize;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
cmpb $0x0, 0xca(%rdi)
je 0x6e9a2
cmpb $0x1, 0xc9(%rbx)
jne 0x6e9ae
movq 0xc0(%rbx), %rax
jmp 0x6eaac
movq 0xb0(%rbx), %rax
jmp 0x6eaac
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %rdi
callq 0x58930
cwtl
cvtsi2sd %eax, %xmm3
cvtsi2sdl 0xb0(%rbx), %xmm4
mulsd %xmm3, %xmm4
xorpd %xmm1, %xmm1
movapd %xmm4, %xmm5
cmpltsd %xmm1, %xmm5
movsd 0x859ab(%rip), %xmm0    # 0xf4390
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
movsd 0x859a3(%rip), %xmm2    # 0xf4398
andnpd %xmm2, %xmm5
orpd %xmm6, %xmm5
addsd %xmm4, %xmm5
cvttsd2si %xmm5, %rax
xorps %xmm4, %xmm4
cvtsi2sdl 0xb4(%rbx), %xmm4
mulsd %xmm3, %xmm4
movapd %xmm4, %xmm3
cmpltsd %xmm1, %xmm3
movapd %xmm3, %xmm5
andpd %xmm0, %xmm5
andnpd %xmm2, %xmm3
orpd %xmm5, %xmm3
addsd %xmm4, %xmm3
cvttsd2si %xmm3, %rcx
xorps %xmm3, %xmm3
cvtsi2sd %eax, %xmm3
movsd 0x85aaa(%rip), %xmm4    # 0xf44f0
divsd %xmm4, %xmm3
movapd %xmm3, %xmm5
cmpltsd %xmm1, %xmm5
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
andnpd %xmm2, %xmm5
orpd %xmm6, %xmm5
addsd %xmm3, %xmm5
cvttsd2si %xmm5, %rax
xorps %xmm3, %xmm3
cvtsi2sd %ecx, %xmm3
divsd %xmm4, %xmm3
movapd %xmm3, %xmm4
cmpltsd %xmm1, %xmm4
andpd %xmm4, %xmm0
andnpd %xmm2, %xmm4
orpd %xmm0, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rcx
shlq $0x20, %rcx
movl %eax, %eax
orq %rcx, %rax
movq %rax, 0xc0(%rbx)
movb $0x1, 0xc9(%rbx)
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetBackgroundColor(smooth::GUI::Color const&)
S::Int S::GUI::Widget::SetBackgroundColor(const Color &nColor)
{
	if (backgroundColorSet && backgroundColor == nColor) return Success();

	backgroundColor	   = nColor;
	backgroundColorSet = True;

	Paint(SP_PAINT);

	return Success();
}

// Assembly:
cmpb $0x1, 0xd8(%rdi)
jne 0x6eac4
movq 0xe8(%rdi), %rax
cmpq 0x8(%rsi), %rax
je 0x6eae2
pushq %rax
movups (%rsi), %xmm0
movups %xmm0, 0xe0(%rdi)
movb $0x1, 0xd8(%rdi)
movq (%rdi), %rax
xorl %esi, %esi
callq *0x78(%rax)
addq $0x8, %rsp
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::Show()
S::Int S::GUI::Widget::Show()
{
	if (visible) return Success();

	/* Show ourself.
	 */
	visible = True;

	if (!registered) return Success();

	if (IsVisible()) Paint(SP_PAINT);

	/* Show child widgets.
	 */
	for (Int i = 0; i < GetNOfObjects(); i++)
	{
		Widget	*object = GetNthObject(i);

		if (object == NIL || !object->IsVisible()) continue;

		visible = False;
		object->Hide();

		visible = True;
		object->Show();
	}

	/* Notify listeners.
	 */
	onShow.Emit();

	return Success();
}

// Assembly:
cmpb $0x0, 0xcb(%rdi)
jne 0x6ec0c
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movb $0x1, 0xcb(%rdi)
cmpb $0x1, 0xca(%rdi)
jne 0x6ec02
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x6eb9e
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
cmpl $0x0, 0x40(%rbx)
jle 0x6ebf3
leaq 0x38(%rbx), %r14
xorl %ebp, %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x5b0a4
movq (%rax), %r15
testq %r15, %r15
je 0x6ebec
movq (%r15), %rax
movq %r15, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x6ebec
movb $0x0, 0xcb(%rbx)
movq (%r15), %rax
movq %r15, %rdi
callq *0x60(%rax)
movb $0x1, 0xcb(%rbx)
movq (%r15), %rax
movq %r15, %rdi
callq *0x58(%rax)
incl %ebp
cmpl 0x40(%rbx), %ebp
jl 0x6ebaa
addq $0x1f8, %rbx            # imm = 0x1F8
movq %rbx, %rdi
callq 0x70488
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::Hide()
S::Int S::GUI::Widget::Hide()
{
	if (!visible) return Success();

	/* Hide child widgets.
	 */
	for (Int i = 0; i < GetNOfObjects(); i++)
	{
		Widget	*object = GetNthObject(i);

		if (object == NIL || !object->IsVisible()) continue;

		object->Hide();
		visible = False;

		object->Show();
		visible = True;
	}

	/* Hide ourself.
	 */
	Surface	*surface = (IsVisible() ? GetDrawSurface() : NIL);

	visible = False;

	if (!registered) return Success();

	if (surface)
	{
		if (focussed) { focussed = False; onLoseFocus.Emit(); }

		surface->Box(GetVisibleArea(), container->GetBackgroundColor(), Rect::Filled);

		DeactivateTooltip();
	}

	/* Reset mouse status.
	 */
	mouseOver	= False;

	leftButtonDown	= False;
	rightButtonDown	= False;

	mouseDragging	= False;

	/* Notify listeners.
	 */
	onHide.Emit();

	return Success();
}

// Assembly:
cmpb $0x1, 0xcb(%rdi)
jne 0x6ed49
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
cmpl $0x0, 0x40(%rdi)
jle 0x6ec7f
leaq 0x38(%rbx), %r14
xorl %ebp, %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x5b0a4
movq (%rax), %r15
testq %r15, %r15
je 0x6ec78
movq (%r15), %rax
movq %r15, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x6ec78
movq (%r15), %rax
movq %r15, %rdi
callq *0x60(%rax)
movb $0x0, 0xcb(%rbx)
movq (%r15), %rax
movq %r15, %rdi
callq *0x58(%rax)
movb $0x1, 0xcb(%rbx)
incl %ebp
cmpl 0x40(%rbx), %ebp
jl 0x6ec36
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x6ec9d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
jmp 0x6eca0
xorl %r14d, %r14d
movb $0x0, 0xcb(%rbx)
cmpb $0x1, 0xca(%rbx)
jne 0x6ed3f
testq %r14, %r14
je 0x6ed26
cmpb $0x1, 0xcd(%rbx)
jne 0x6ecd5
movb $0x0, 0xcd(%rbx)
leaq 0x518(%rbx), %rdi
callq 0x70488
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %r15
movq %rax, (%r15)
movq %rdx, 0x8(%r15)
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
callq *0x140(%rax)
movq 0xfe2a4(%rip), %rcx     # 0x16cfa8
movl (%rcx), %ecx
movq %rsp, %r8
movq $0x0, (%r8)
movq %r14, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x57930
movq %rbx, %rdi
callq 0x59208
movl $0x0, 0xd4(%rbx)
addq $0x218, %rbx            # imm = 0x218
movq %rbx, %rdi
callq 0x70488
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::Activate()
S::Int S::GUI::Widget::Activate()
{
	if (active) return Success();

	Surface	*surface = (IsVisible() ? GetDrawSurface() : NIL);

	if (surface) { surface->StartPaint(GetVisibleArea()); Hide(); }

	active = True;

	if (surface) { Show(); Process(SM_MOUSEMOVE, 0, 0); surface->EndPaint(); }

	onActivate.Emit();

	return Success();
}

// Assembly:
cmpb $0x0, 0xcc(%rdi)
jne 0x6edfb
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
testb %al, %al
je 0x6ed7e
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
jmp 0x6ed81
xorl %r14d, %r14d
testq %r14, %r14
je 0x6edde
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x55160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movb $0x1, 0xcc(%rbx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
movq %r14, %rdi
callq 0x58780
jmp 0x6ede5
movb $0x1, 0xcc(%rbx)
addq $0x238, %rbx            # imm = 0x238
movq %rbx, %rdi
callq 0x70488
addq $0x18, %rsp
popq %rbx
popq %r14
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::Deactivate()
S::Int S::GUI::Widget::Deactivate()
{
	if (!active) return Success();

	Surface	*surface = (IsVisible() ? GetDrawSurface() : NIL);

	if (surface) { surface->StartPaint(GetVisibleArea()); Hide(); }

	active = False;

	foreach (Widget *widget, widgets)
	{
		widget->mouseOver	= False;

		widget->leftButtonDown	= False;
		widget->rightButtonDown	= False;

		widget->mouseDragging	= False;
	}

	if (surface) { Show(); surface->EndPaint(); }

	onDeactivate.Emit();

	return Success();
}

// Assembly:
cmpb $0x1, 0xcc(%rdi)
jne 0x6eecb
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
testb %al, %al
je 0x6ee33
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
jmp 0x6ee36
xorl %r14d, %r14d
testq %r14, %r14
je 0x6ee64
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x55160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movb $0x0, 0xcc(%rbx)
cmpl $0x0, 0x40(%rbx)
jle 0x6ee9c
leaq 0x38(%rbx), %r15
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
incl %ebp
movq %r15, %rdi
movl %ebp, %esi
callq 0x60a40
movq (%rax), %rax
movl $0x0, 0xd4(%rax)
movl 0x40(%rbx), %eax
decl %eax
cmpl %eax, %ebp
jl 0x6ee7a
testq %r14, %r14
je 0x6eeb2
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq %r14, %rdi
callq 0x58780
addq $0x258, %rbx            # imm = 0x258
movq %rbx, %rdi
callq 0x70488
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::Paint(int)
S::Int S::GUI::Widget::Paint(Int message)
{
	if (!registered) return Error();
	if (!visible)	 return Success();

	Window	*window	= container->GetContainerWindow();

	if (window == NIL) return Success();

	switch (message)
	{
		case SP_PAINT:
			widgets.LockForRead();

			foreach (Widget *widget, widgets)
			{
				if (widget->IsAffected(window->GetUpdateRect())) widget->Paint(message);
			}

			widgets.Unlock();

			break;
	}

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
cmpb $0x1, 0xca(%rdi)
jne 0x6efb1
movq %rdi, %rbx
xorl %ebp, %ebp
cmpb $0x1, 0xcb(%rdi)
jne 0x6efb1
movl %esi, %r15d
movq 0x190(%rbx), %r14
movq 0xfd91a(%rip), %rax     # 0x16c828
movswl (%rax), %ebp
leaq 0x20(%r14), %rdi
movl %ebp, %esi
callq 0x57520
testb %al, %al
jne 0x6ef2f
movq 0x190(%r14), %r14
testq %r14, %r14
jne 0x6ef11
xorl %r14d, %r14d
testq %r14, %r14
sete %al
testl %r15d, %r15d
setne %cl
xorl %ebp, %ebp
orb %al, %cl
jne 0x6efb1
cmpb $0x1, 0x68(%rbx)
jne 0x6ef50
movq 0x70(%rbx), %rdi
callq 0x56d10
cmpl $0x0, 0x40(%rbx)
jle 0x6efa2
leaq 0x38(%rbx), %r15
addq $0x5ec, %r14            # imm = 0x5EC
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
incl %r12d
movq %r15, %rdi
movl %r12d, %esi
callq 0x60a40
movq (%rax), %r13
movq (%r13), %rax
movq %r13, %rdi
movq %r14, %rsi
callq *0x158(%rax)
testb %al, %al
je 0x6ef98
movq (%r13), %rax
movq %r13, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movl 0x40(%rbx), %eax
decl %eax
cmpl %eax, %r12d
jl 0x6ef67
cmpb $0x1, 0x68(%rbx)
jne 0x6efb1
movq 0x70(%rbx), %rdi
callq 0x55910
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetFocusByKeyboard()
S::Void S::GUI::Widget::SetFocusByKeyboard()
{
	if (!focussed)
	{
		focussed = True;

		onGetFocus.Emit();
		onGetFocusByKeyboard.Emit();
	}
}

// Assembly:
cmpb $0x0, 0xcd(%rdi)
je 0x6fcee
retq
pushq %rbx
movq %rdi, %rbx
movb $0x1, 0xcd(%rdi)
addq $0x4d8, %rdi            # imm = 0x4D8
callq 0x70488
addq $0x4f8, %rbx            # imm = 0x4F8
movq %rbx, %rdi
popq %rbx
jmp 0x70488
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::IsDropTarget() const
S::Bool S::GUI::Widget::IsDropTarget() const
{
	if (dropTarget) return True;

	foreach (Widget *widget, widgets)
	{
		if (widget->IsDropTarget()) return True;
	}

	return False;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movb $0x1, %r15b
cmpb $0x0, 0xd3(%rdi)
jne 0x6fd8d
movq %rdi, %rbx
cmpl $0x0, 0x40(%rdi)
jle 0x6fd8a
leaq 0x38(%rbx), %r14
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
incl %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x71446
movq (%rax), %r12
movb $0x1, %cl
xorl %edx, %edx
movl %edx, %r13d
testb $0x1, %cl
je 0x6fd7b
movl %ecx, %r15d
movq %r12, %rdi
callq 0x57e00
movb $0x1, %dl
xorl %ecx, %ecx
testb %al, %al
je 0x6fd52
notb %r13b
orb %r15b, %r13b
testb $0x1, %r13b
je 0x6fd81
jmp 0x6fd8d
testb $0x1, %r13b
je 0x6fd8a
movl 0x40(%rbx), %eax
decl %eax
cmpl %eax, %ebp
jl 0x6fd3f
xorl %r15d, %r15d
andb $0x1, %r15b
movl %r15d, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetFocus()
S::Int S::GUI::Widget::SetFocus()
{
	if (!focussed)
	{
		focussed = True;

		onGetFocus.Emit();

		if (GetNOfObjects() > 0) GetNthObject(0)->SetFocus();
	}

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
xorl %r14d, %r14d
xorl %r15d, %r15d
cmpb $0x0, 0xcd(%rbx)
jne 0x6fdf4
movb $0x1, 0xcd(%rbx)
leaq 0x4d8(%rbx), %rdi
callq 0x70488
cmpl $0x0, 0x40(%rbx)
jle 0x6fdf4
addq $0x38, %rbx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5b0a4
movq (%rax), %rbx
testb $0x1, %r15b
cmovel %r14d, %ebp
movb $0x1, %r15b
jmp 0x6fdb4
xorl %eax, %eax
testb $0x1, %r15b
cmovnel %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetText(smooth::String const&)
S::Int S::GUI::Widget::SetText(const String &nText)
{
	if (text == nText) return Success();

	Surface	*surface      = GetDrawSurface();

	Bool	 prevVisible  = IsVisible();
	Bool	 prevFocussed = focussed;

	if (registered && prevFocussed) { focussed = False; }
	if (registered && prevVisible)	{ surface->StartPaint(GetVisibleArea()); Hide(); }

	text = nText;

	ComputeTextSize();

	if (registered && prevVisible)  { Show(); Process(SM_MOUSEMOVE, 0, 0); surface->EndPaint(); }
	if (registered && prevFocussed) { focussed = True; }

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0xf0(%rdi), %r12
movq %r12, %rdi
callq 0x55900
testb %al, %al
jne 0x6fef5
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
movl %eax, %ebp
movb 0xca(%rbx), %al
movb 0xcd(%rbx), %r13b
movl %eax, %ecx
andb %r13b, %cl
cmpb $0x1, %cl
jne 0x6fe6b
movb $0x0, 0xcd(%rbx)
andb %bpl, %al
cmpb $0x1, %al
jne 0x6fe9b
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x55160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x555f0
movq %rbx, %rdi
callq 0x55bb0
movb 0xca(%rbx), %al
andb %bpl, %al
cmpb $0x1, %al
jne 0x6fee1
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
movq %r14, %rdi
callq 0x58780
andb 0xca(%rbx), %r13b
cmpb $0x1, %r13b
jne 0x6fef5
movb $0x1, 0xcd(%rbx)
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetFont(smooth::GUI::Font const&)
S::Int S::GUI::Widget::SetFont(const Font &nFont)
{
	if (font == nFont) return Success();

	Surface	*surface      = GetDrawSurface();

	Bool	 prevVisible  = IsVisible();
	Bool	 prevFocussed = focussed;

	if (registered && prevFocussed) { focussed = False; }
	if (registered && prevVisible)	{ surface->StartPaint(GetVisibleArea()); Hide(); }

	font = nFont;

	ComputeTextSize();

	if (registered && prevVisible)  { Show(); Process(SM_MOUSEMOVE, 0, 0); surface->EndPaint(); }
	if (registered && prevFocussed) { focussed = True; }

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x140(%rdi), %r12
movq %r12, %rdi
callq 0x58dc0
testb %al, %al
jne 0x7003d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
movl %eax, %ebp
movb 0xca(%rbx), %al
movb 0xcd(%rbx), %r13b
movl %eax, %ecx
andb %r13b, %cl
cmpb $0x1, %cl
jne 0x6ffb3
movb $0x0, 0xcd(%rbx)
andb %bpl, %al
cmpb $0x1, %al
jne 0x6ffe3
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x55160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x58c30
movq %rbx, %rdi
callq 0x55bb0
movb 0xca(%rbx), %al
andb %bpl, %al
cmpb $0x1, %al
jne 0x70029
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
movq %r14, %rdi
callq 0x58780
andb 0xca(%rbx), %r13b
cmpb $0x1, %r13b
jne 0x7003d
movb $0x1, 0xcd(%rbx)
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetOrientation(int)
S::Int S::GUI::Widget::SetOrientation(Int nOrientation)
{
	if (orientation == nOrientation) return Success();

	Bool	 prevVisible = IsVisible();

	if (registered && prevVisible) Hide();

	orientation = nOrientation;

	if (registered && prevVisible) Show();

	return Success();
}

// Assembly:
movswl 0xd0(%rdi), %eax
cmpl %esi, %eax
je 0x700a5
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
movl %eax, %r14d
testb %al, %al
je 0x70084
cmpb $0x0, 0xca(%rbx)
je 0x70084
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movw %bp, 0xd0(%rbx)
movb 0xca(%rbx), %al
andb %r14b, %al
cmpb $0x1, %al
jne 0x700a1
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
popq %rbx
popq %r14
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetMetrics(smooth::GUI::Point const&, smooth::GUI::Size const&)
S::Int S::GUI::Widget::SetMetrics(const Point &nPos, const Size &nSize)
{
	if (nPos.x == pos.x && nPos.y == pos.y && nSize.cx == size.cx && nSize.cy == size.cy) return Success();

	DeactivateTooltip();

	Surface	*surface = (IsVisible() ? GetDrawSurface() : NIL);

	if (surface && orientation != OR_FREE) surface->StartPaint(container->GetVisibleArea());
	if (surface			     ) Hide();

	InvalidateMetrics();

	if (nPos.x   != pos.x   || nPos.y   != pos.y  )	{ pos  = nPos;  onChangePosition.Emit(pos); }
	if (nSize.cx != size.cx || nSize.cy != size.cy)	{ size = nSize; onChangeSize.Emit(size);    }

	if (surface			     ) { Show(); Process(SM_MOUSEMOVE, 0, 0); }
	if (surface && orientation != OR_FREE) surface->EndPaint();

	return Success();
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
movl (%rsi), %eax
cmpl 0xa8(%rdi), %eax
jne 0x701d0
movl 0x4(%r12), %eax
cmpl 0xac(%rbx), %eax
jne 0x701d0
movl (%r14), %eax
cmpl 0xb0(%rbx), %eax
jne 0x701d0
movl 0x4(%r14), %eax
cmpl 0xb4(%rbx), %eax
je 0x702e7
movq %rbx, %rdi
callq 0x59208
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x701f6
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r15
jmp 0x701f9
xorl %r15d, %r15d
testq %r15, %r15
je 0x70230
movzwl 0xd0(%rbx), %eax
cmpl $0x80, %eax
je 0x70230
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r15, %rdi
callq 0x55160
testq %r15, %r15
je 0x7023e
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %rbx, %rdi
callq 0x58740
movl (%r12), %eax
cmpl 0xa8(%rbx), %eax
jne 0x7025f
movl 0x4(%r12), %eax
cmpl 0xac(%rbx), %eax
je 0x7027d
leaq 0xa8(%rbx), %rsi
movq (%r12), %rax
movq %rax, 0xa8(%rbx)
leaq 0x278(%rbx), %rdi
callq 0x70676
movl (%r14), %eax
cmpl 0xb0(%rbx), %eax
jne 0x70294
movl 0x4(%r14), %eax
cmpl 0xb4(%rbx), %eax
je 0x702b1
leaq 0xb0(%rbx), %rsi
movq (%r14), %rax
movq %rax, 0xb0(%rbx)
leaq 0x298(%rbx), %rdi
callq 0x7094c
testq %r15, %r15
je 0x702e7
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
cmpw $0x80, 0xd0(%rbx)
je 0x702e7
movq %r15, %rdi
callq 0x58780
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::IsRightToLeft() const
S::Bool S::GUI::Widget::IsRightToLeft() const
{
	if (IsRegistered())
	{
		Window	*containerWindow = container->GetContainerWindow();

		if (containerWindow != NIL) return containerWindow->IsRightToLeft();
	}

	return Setup::rightToLeft;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x88(%rax)
testb %al, %al
je 0x7034f
movq 0x190(%rbx), %rbx
movq 0xfc511(%rip), %rax     # 0x16c828
movswl (%rax), %ebp
leaq 0x20(%rbx), %rdi
movl %ebp, %esi
callq 0x57520
testb %al, %al
jne 0x70337
movq 0x190(%rbx), %rbx
testq %rbx, %rbx
jne 0x7031a
xorl %ebx, %ebx
testq %rbx, %rbx
je 0x7034a
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x160(%rax)
jmp 0x7034a
testq %rbx, %rbx
jne 0x70358
movq 0xfc78a(%rip), %rax     # 0x16cae0
movb (%rax), %al
andb $0x1, %al
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/../../../include/smooth/templates/signals/signal.h
// Function: int smooth::Signal1<void, int>::Disconnect<smooth::GUI::Widget, smooth::GUI::Widget, void>(void (smooth::GUI::Widget::*)(), smooth::GUI::Widget*)
Int Disconnect(slotReturnTYPE (classTYPE::*proc)(), oClassTYPE *inst)
			{
				if (slots0 == NIL) return Error();

				SlotClass0<classTYPE, slotReturnTYPE>	 slot(proc, inst);

				for (Int i = slots0->Length() - 1; i >= 0; i--)
				{
					if ((*((SlotBase0<Void> *) slots0->GetNth(i))) == slot)
					{
						RemoveNth0(i);

						break;
					}
				}

				return Success();
			}

// Assembly:
movq 0x18(%rdi), %rax
testq %rax, %rax
je 0x708da
pushq %rbp
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0xf2091(%rip), %rdi     # 0x162920
movq %rsp, %r14
movq %rdi, (%r14)
movq %rsi, 0x10(%r14)
movq %rdx, 0x18(%r14)
movq %rcx, 0x8(%r14)
movl 0x8(%rax), %ebp
testl %ebp, %ebp
jle 0x708cf
decl %ebp
movq 0x18(%rbx), %rdi
movl %ebp, %esi
callq 0x5b0a4
movq (%rax), %rdi
movq (%rdi), %rax
movq %r14, %rsi
callq *0x20(%rax)
testb %al, %al
je 0x708a4
movq %rbx, %rdi
movl %ebp, %esi
callq 0x715e6
xorl %eax, %eax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/../../../include/smooth/templates/signals/signalr.h
// Function: smooth::SignalR0<smooth::GUI::PopupMenu*>::Connect(smooth::GUI::PopupMenu*)
Int Connect(const returnTYPE value)
			{
				if (slots0 == NIL)
				{
					slots0 = new Array<Void *>();
					slots0->EnableLocking();
				}

				slots0->Add(new SlotRValue0<returnTYPE>(value));

				return Success();
			}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rsi, %rbx
movq %rdi, %r14
cmpq $0x0, 0x18(%rdi)
jne 0x713b6
movl $0x58, %edi
callq 0x556b0
movq %rax, %r15
movq %rax, %rdi
callq 0x55d90
leaq 0xef44c(%rip), %rax     # 0x1607e0
movq %rax, 0x40(%r15)
xorps %xmm0, %xmm0
movups %xmm0, 0x48(%r15)
leaq 0xef559(%rip), %rax     # 0x160900
movq %rax, (%r15)
movq %r15, 0x18(%r14)
movq %r15, %rdi
callq 0x571b0
movq 0x18(%r14), %r14
movl $0x10, %edi
callq 0x556b0
leaq 0xf14f5(%rip), %rcx     # 0x1628c0
movq %rcx, (%rax)
movq %rbx, 0x8(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %r14, %rdi
callq 0x5af08
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movl $0x58, %esi
movq %r15, %rdi
callq 0x55480
movq %rbx, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/../../../include/smooth/templates/signals/signalr.h
// Function: smooth::SignalR1<bool, smooth::GUI::Point const&>::Emit(smooth::GUI::Point const&) const
returnTYPE Emit(SIGNALS_ARGUMENT_PARAMETER_LIST) const
			{
				returnTYPE	 returnValue = (returnTYPE) NIL;

				if (slotsN == NIL && slots0 == NIL) return returnValue;

				ProtectParent();

				for (Int i = 0; slotsN != NIL && i < slotsN->Length(); i++) returnValue = ((SIGNALS_SLOT_BASE_CLASS_NAME<returnTYPE SIGNALS_CONDITIONAL_COMMA SIGNALS_ARGUMENT_TYPES> *) slotsN->GetNth(i))->Emit(SIGNALS_ARGUMENT_PARAMETERS);
				for (Int j = 0; slots0 != NIL && j < slots0->Length(); j++) returnValue = ((SlotRBase0<returnTYPE> *) slots0->GetNth(j))->Emit();

				UnprotectParent();

				return returnValue;
			}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq 0x18(%rdi), %rax
orq 0x10(%rdi), %rax
jne 0x714ba
xorl %ebp, %ebp
jmp 0x71559
movq %rsi, %r14
movq %rdi, %rbx
movq 0x8(%rdi), %rdi
testq %rdi, %rdi
je 0x714d2
addq $0x1c, %rdi
callq 0x578f0
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
je 0x7150e
xorl %r15d, %r15d
cmpl $0x0, 0x8(%rdi)
jle 0x7150e
movl %r15d, %esi
callq 0x5b0a4
movq (%rax), %rdi
movq (%rdi), %rax
movq %r14, %rsi
callq *0x18(%rax)
movl %eax, %ebp
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
je 0x71510
incl %r15d
cmpl 0x8(%rdi), %r15d
jl 0x714e4
jmp 0x71510
xorl %ebp, %ebp
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x71547
cmpl $0x0, 0x8(%rdi)
jle 0x71547
xorl %r14d, %r14d
movl %r14d, %esi
callq 0x5b0a4
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movl %eax, %ebp
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x71547
incl %r14d
cmpl 0x8(%rdi), %r14d
jl 0x71522
movq 0x8(%rbx), %rdi
testq %rdi, %rdi
je 0x71559
addq $0x1c, %rdi
callq 0x55cc0
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/activearea.cpp
// Function: smooth::GUI::ActiveArea::ActiveArea(smooth::GUI::Color const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::ActiveArea::ActiveArea(const Color &iColor, const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type		= classID;
	areaColor	= iColor;

	if (GetWidth()	== 0) SetWidth(80);
	if (GetHeight() == 0) SetHeight(20);

	hotspot	= new Hotspot(Point(1, 1), GetSize() - Size(2, 2));

	hotspot->onLeftButtonClick.Connect(&onAction);

	Add(hotspot);

	onChangeSize.Connect(&ActiveArea::OnChangeSize, this);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x57a30
movq 0xfb68b(%rip), %rax     # 0x16cdb0
addq $0x10, %rax
movq %rax, (%rbx)
movq $0x0, 0x5c0(%rbx)
movl $0x0, 0x5b8(%rbx)
movq 0xfb2c8(%rip), %rax     # 0x16ca10
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movups (%r14), %xmm0
movups %xmm0, 0x5b8(%rbx)
cmpl $0x0, 0xb0(%rbx)
jne 0x71784
leaq 0xa8(%rbx), %rsi
movl 0xb4(%rbx), %eax
movq %rsp, %rdx
movl $0x50, (%rdx)
movl %eax, 0x4(%rdx)
movq %rbx, %rdi
callq 0x57080
cmpl $0x0, 0xb4(%rbx)
jne 0x717b2
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
movq %rsp, %rdx
movl %eax, (%rdx)
movl $0x14, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r14
movabsq $0x100000001, %rax      # imm = 0x100000001
movq %rsp, %rsi
movq %rax, (%rsi)
movl 0xb0(%rbx), %eax
movl 0xb4(%rbx), %ecx
addl $-0x2, %eax
addl $-0x2, %ecx
shlq $0x20, %rcx
orq %rcx, %rax
leaq 0x8(%rsp), %rdx
movq %rax, (%rdx)
movq %r14, %rdi
callq 0x55a30
movq %r14, 0x5c8(%rbx)
addq $0x338, %r14            # imm = 0x338
leaq 0x478(%rbx), %rsi
movq %r14, %rdi
callq 0x71a12
movq 0x5c8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xfb06d(%rip), %rsi     # 0x16c8a0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x71ac2
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r15
movl $0x5b8, %esi            # imm = 0x5B8
movq %r14, %rdi
callq 0x55480
jmp 0x7185c
movq %rax, %r15
movq %rbx, %rdi
callq 0x57640
movq %r15, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/activearea.cpp
// Function: smooth::GUI::ActiveArea::Paint(int)
S::Int S::GUI::ActiveArea::Paint(Int message)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

	switch (message)
	{
		case SP_PAINT:
			{
				Surface	*surface = GetDrawSurface();
				Rect	 frame	 = Rect(GetRealPosition(), GetRealSize());

				surface->Box(frame + Point(1, 1) - Size(2, 2), areaColor, Rect::Filled);
				surface->Frame(frame, FRAME_DOWN);
			}

			break;
	}

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl %esi, %ebp
movq %rdi, %r14
movq (%rdi), %rax
callq *0x88(%rax)
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testb %al, %al
je 0x719e9
movq (%r14), %rax
movq %r14, %rdi
callq *0x90(%rax)
xorl %ebx, %ebx
testl %ebp, %ebp
jne 0x719e9
testb %al, %al
je 0x719e9
movq (%r14), %rax
movq %r14, %rdi
callq *0x40(%rax)
movq %rax, %r15
movq (%r14), %rax
movq %r14, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq %rax, %rbp
shrq $0x20, %rbp
movq (%r14), %rax
movq %r14, %rdi
callq *0x50(%rax)
leal (%rax,%r12), %ecx
leal (%rax,%r12), %edx
decl %edx
shrq $0x20, %rax
leaq 0x18(%rsp), %r13
movl %r12d, (%r13)
movl %ebp, 0x4(%r13)
movl %ecx, 0x8(%r13)
leal (%rax,%rbp), %ecx
movl %ecx, 0xc(%r13)
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
andq %r12, %rcx
leal 0x1(%r12), %esi
orq %rcx, %rsi
addl %ebp, %eax
decl %eax
movabsq $0x100000000, %rcx      # imm = 0x100000000
addq %rsi, %rcx
shlq $0x20, %rax
orq %rax, %rdx
leaq 0x8(%rsp), %rsi
movq %rcx, (%rsi)
movq %rdx, 0x8(%rsi)
addq $0x5b8, %r14            # imm = 0x5B8
movq 0xfb5e6(%rip), %rax     # 0x16cfa8
movl (%rax), %ecx
movq %rsp, %r8
movq $0x0, (%r8)
movq %r15, %rdi
movq %r14, %rdx
callq 0x57930
movq %r15, %rdi
movq %r13, %rsi
movl $0x1, %edx
callq 0x57890
movl %ebx, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/../../../../include/smooth/templates/signals/signal.h
// Function: int smooth::Signal1<void, smooth::GUI::Point const&>::Connect<void>(smooth::Signal0<void>*)
Int Connect(Signal0<slotReturnTYPE> *sig)
			{
				if ((Signal *) sig == (Signal *) this) return Error();

				if (slots0 == NIL)
				{
					slots0 = new Array<Void *>();
					slots0->EnableLocking();
				}

				slots0->Add(new SlotSignal0<slotReturnTYPE>(sig));

				return Success();
			}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
cmpq %rdi, %rsi
je 0x71a9b
movq %rsi, %rbx
movq %rdi, %r14
cmpq $0x0, 0x18(%rdi)
jne 0x71a6b
movl $0x58, %edi
callq 0x556b0
movq %rax, %r15
movq %rax, %rdi
callq 0x55d90
leaq 0xeed97(%rip), %rax     # 0x1607e0
movq %rax, 0x40(%r15)
xorps %xmm0, %xmm0
movups %xmm0, 0x48(%r15)
leaq 0xeeea4(%rip), %rax     # 0x160900
movq %rax, (%r15)
movq %r15, 0x18(%r14)
movq %r15, %rdi
callq 0x571b0
movq 0x18(%r14), %r14
movl $0x10, %edi
callq 0x556b0
leaq 0xf1080(%rip), %rcx     # 0x162b00
movq %rcx, (%rax)
movq %rbx, 0x8(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %r14, %rdi
callq 0x5af08
xorl %eax, %eax
jmp 0x71aa0
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movl $0x58, %esi
movq %r15, %rdi
callq 0x55480
movq %rbx, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::OnMouseDownPlus()
S::Void S::GUI::Arrows::OnMouseDownPlus()
{
	if (timer == NIL)
	{
		timer = new System::Timer();

		timer->onInterval.Connect(&Arrows::OnTimer, this);
		timer->Start(0);

		timerCount	= 0;
		timerDirection	= 1;
	}
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
cmpq $0x0, 0x5c0(%rdi)
jne 0x720e8
movq %rdi, %rbx
movl $0x68, %edi
callq 0x556b0
movq %rax, %r14
movq %rax, %rdi
callq 0x55b80
movq %r14, 0x5c0(%rbx)
addq $0x48, %r14
movq 0xfaee4(%rip), %rsi     # 0x16cfa0
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x72d02
movq 0x5c0(%rbx), %rdi
xorl %esi, %esi
callq 0x55100
movabsq $0x100000000, %rax      # imm = 0x100000000
movq %rax, 0x5c8(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
movl $0x68, %esi
movq %r14, %rdi
callq 0x55480
movq %rbx, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::OnMouseDownMinus()
S::Void S::GUI::Arrows::OnMouseDownMinus()
{
	if (timer == NIL)
	{
		timer = new System::Timer();

		timer->onInterval.Connect(&Arrows::OnTimer, this);
		timer->Start(0);

		timerCount	= 0;
		timerDirection	= -1;
	}
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
cmpq $0x0, 0x5c0(%rdi)
jne 0x7216c
movq %rdi, %rbx
movl $0x68, %edi
callq 0x556b0
movq %rax, %r14
movq %rax, %rdi
callq 0x55b80
movq %r14, 0x5c0(%rbx)
addq $0x48, %r14
movq 0xfae60(%rip), %rsi     # 0x16cfa0
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x72d02
movq 0x5c0(%rbx), %rdi
xorl %esi, %esi
callq 0x55100
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
movq %rax, 0x5c8(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
movl $0x68, %esi
movq %r14, %rdi
callq 0x55480
movq %rbx, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::OnMouseRelease()
S::Void S::GUI::Arrows::OnMouseRelease()
{
	if (timer != NIL)
	{
		timer->Stop();

		DeleteObject(timer);

		timer = NIL;
	}
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0x5c0(%rdi), %rdi
testq %rdi, %rdi
je 0x721b8
callq 0x59190
movq 0x5c0(%rbx), %rdi
callq 0x58cc0
movq $0x0, 0x5c0(%rbx)
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::~Arrows()
S::GUI::Arrows::~Arrows()
{
	if (timer != NIL)
	{
		timer->Stop();

		DeleteObject(timer);

		timer = NIL;
	}

	DeleteObject(arrow1Hotspot);
	DeleteObject(arrow2Hotspot);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0xfab37(%rip), %rax     # 0x16cdf8
addq $0x10, %rax
movq %rax, (%rdi)
movq 0x5c0(%rdi), %rdi
testq %rdi, %rdi
je 0x722f0
callq 0x59190
movq 0x5c0(%rbx), %rdi
callq 0x58cc0
movq $0x0, 0x5c0(%rbx)
movq 0x5e8(%rbx), %rdi
callq 0x58cc0
movq 0x5f0(%rbx), %rdi
callq 0x58cc0
leaq 0x618(%rbx), %rdi
leaq 0xf0a62(%rip), %rax     # 0x162d78
movq %rax, 0x618(%rbx)
callq 0x7304e
leaq 0x5f8(%rbx), %rdi
leaq 0xf0a10(%rip), %rax     # 0x162d40
movq %rax, 0x5f8(%rbx)
callq 0x72f5c
movq %rbx, %rdi
popq %rbx
jmp 0x57640
jmp 0x72349
jmp 0x72349
movq %rax, %rdi
callq 0x5aede
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::OnTimer()
S::Void S::GUI::Arrows::OnTimer()
{
	if (timerCount == 0) { timer->Stop(); timer->Start(250); }
	if (timerCount == 1) { timer->Stop(); timer->Start(100); }

	Int	 prevValue	= *variable;
	Int	 difference	= timerDirection;

	for (Int n = 1; n <= 8; n++)
	{
		if (timerCount >= 8 * n) difference = timerDirection * (Int) Math::Pow(2, n);
	}

	*variable = Math::Min(Math::Max(*variable + difference * Int(stepSize), startValue), endValue);

	if (*variable != prevValue) onValueChange.Emit(*variable);

	timerCount++;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0x5c8(%rdi)
jne 0x72987
movq 0x5c0(%rbx), %rdi
callq 0x59190
movq 0x5c0(%rbx), %rdi
movl $0xfa, %esi
callq 0x55100
cmpl $0x1, 0x5c8(%rbx)
jne 0x729ad
movq 0x5c0(%rbx), %rdi
callq 0x59190
movq 0x5c0(%rbx), %rdi
movl $0x64, %esi
callq 0x55100
movq 0x5d0(%rbx), %rax
movl (%rax), %r14d
movl 0x5cc(%rbx), %esi
movl $0x1, %ebp
movl $0x8, %r15d
cmpl %r15d, 0x5c8(%rbx)
jl 0x729ec
movl 0x5cc(%rbx), %r12d
movl $0x2, %edi
movl %ebp, %esi
callq 0x56010
cvttsd2si %xmm0, %esi
imull %r12d, %esi
incl %ebp
addl $0x8, %r15d
cmpl $0x48, %r15d
jne 0x729c8
movq 0x5d0(%rbx), %rax
imull 0x5e0(%rbx), %esi
addl (%rax), %esi
movl 0x5d8(%rbx), %ecx
cmpl %ecx, %esi
cmovlel %ecx, %esi
movl 0x5dc(%rbx), %ecx
cmpl %ecx, %esi
cmovgel %ecx, %esi
movl %esi, (%rax)
cmpl %r14d, %esi
je 0x72a31
leaq 0x618(%rbx), %rdi
callq 0x72dc0
incl 0x5c8(%rbx)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::SetRange(int, int)
S::Int S::GUI::Arrows::SetRange(Int rangeStart, Int rangeEnd)
{
	if (startValue == rangeStart && endValue == rangeEnd) return Success();

	startValue	= rangeStart;
	endValue	= rangeEnd;

	SetValue(*variable);

	onRangeChange.Emit(startValue, endValue);

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
cmpl %esi, 0x5d8(%rdi)
jne 0x72a54
cmpl %edx, 0x5dc(%rbx)
je 0x72a9d
movl %esi, 0x5d8(%rbx)
movl %edx, 0x5dc(%rbx)
movq 0x5d0(%rbx), %rax
movl (%rax), %ecx
cmpl %esi, %ecx
cmovgl %ecx, %esi
cmpl %edx, %esi
cmovgel %edx, %esi
movl %esi, (%rax)
cmpl %ecx, %esi
je 0x72a85
leaq 0x618(%rbx), %rdi
callq 0x72dc0
leaq 0x5f8(%rbx), %rdi
movl 0x5d8(%rbx), %esi
movl 0x5dc(%rbx), %edx
callq 0x72e5c
xorl %eax, %eax
popq %rbx
retq
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/button.cpp
// Function: smooth::GUI::Button::Button(smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::Button::Button(const String &iText, const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type = classID;
	text = iText;

	if (GetWidth()	== 0) SetWidth(80);
	if (GetHeight() == 0) SetHeight(22);

	ComputeTextSize();

	hotspot	= new HotspotSimpleButton(flags & BF_NOFRAME ? Point() : Point(4, 4), GetSize() - (flags & BF_NOFRAME ? Size() : Size(8, 8)));
	hotspot->onLeftButtonClick.Connect(&onAction);

	Add(hotspot);

	onChangeSize.Connect(&Button::OnChangeSize, this);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x57a30
movq 0xf95f1(%rip), %rax     # 0x16c7f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5b8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58950
movq 0xf9bfa(%rip), %rax     # 0x16ce20
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r15, %rsi
callq 0x555f0
cmpl $0x0, 0xb0(%rbx)
jne 0x7326c
leaq 0xa8(%rbx), %rsi
movl 0xb4(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl $0x50, (%rdx)
movl %eax, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
cmpl $0x0, 0xb4(%rbx)
jne 0x7329c
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl %eax, (%rdx)
movl $0x16, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq %rbx, %rdi
callq 0x55bb0
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r15
movl 0x30(%rbx), %eax
xorl %ecx, %ecx
andl $0x1, %eax
sete %cl
shll $0x2, %ecx
leaq 0x8(%rsp), %rsi
movl %ecx, (%rsi)
movl %ecx, 0x4(%rsi)
shll $0x3, %eax
xorl $0x8, %eax
movl 0xb0(%rbx), %ecx
movl 0xb4(%rbx), %edx
subl %eax, %ecx
subl %eax, %edx
shlq $0x20, %rdx
orq %rdx, %rcx
leaq 0x10(%rsp), %rdx
movq %rcx, (%rdx)
movq %r15, %rdi
callq 0x55a60
movq %r15, 0x5c0(%rbx)
addq $0x338, %r15            # imm = 0x338
leaq 0x478(%rbx), %rsi
movq %r15, %rdi
callq 0x71a12
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xf91bf(%rip), %rsi     # 0x16c4f0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x73da4
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r12
movl $0x5b8, %esi            # imm = 0x5B8
movq %r15, %rdi
callq 0x55480
jmp 0x73361
movq %rax, %r12
jmp 0x73369
movq %rax, %r12
movq %r14, %rdi
callq 0x59148
movq %rbx, %rdi
callq 0x57640
movq %r12, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/button.cpp
// Function: smooth::GUI::Button::Button(smooth::GUI::Bitmap const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::Button::Button(const Bitmap &iBitmap, const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type = classID;

	SetBitmap(iBitmap);

	if (GetWidth()	== 0) SetWidth(80);
	if (GetHeight() == 0) SetHeight(22);

	hotspot	= new HotspotSimpleButton(flags & BF_NOFRAME ? Point() : Point(4, 4), GetSize() - (flags & BF_NOFRAME ? Size() : Size(8, 8)));
	hotspot->onLeftButtonClick.Connect(&onAction);

	Add(hotspot);

	onChangeSize.Connect(&Button::OnChangeSize, this);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x57a30
movq 0xf941d(%rip), %rax     # 0x16c7f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5b8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58950
movq 0xf9a26(%rip), %rax     # 0x16ce20
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x58dd0
cmpl $0x0, 0xb0(%rbx)
jne 0x7343c
leaq 0xa8(%rbx), %rsi
movl 0xb4(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl $0x50, (%rdx)
movl %eax, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
cmpl $0x0, 0xb4(%rbx)
jne 0x7346c
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl %eax, (%rdx)
movl $0x16, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r15
movl 0x30(%rbx), %eax
xorl %ecx, %ecx
andl $0x1, %eax
sete %cl
shll $0x2, %ecx
leaq 0x8(%rsp), %rsi
movl %ecx, (%rsi)
movl %ecx, 0x4(%rsi)
shll $0x3, %eax
xorl $0x8, %eax
movl 0xb0(%rbx), %ecx
movl 0xb4(%rbx), %edx
subl %eax, %ecx
subl %eax, %edx
shlq $0x20, %rdx
orq %rdx, %rcx
leaq 0x10(%rsp), %rdx
movq %rcx, (%rdx)
movq %r15, %rdi
callq 0x55a60
movq %r15, 0x5c0(%rbx)
addq $0x338, %r15            # imm = 0x338
leaq 0x478(%rbx), %rsi
movq %r15, %rdi
callq 0x71a12
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xf8ff7(%rip), %rsi     # 0x16c4f0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x73da4
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r12
movl $0x5b8, %esi            # imm = 0x5B8
movq %r15, %rdi
callq 0x55480
jmp 0x73529
movq %rax, %r12
jmp 0x73531
movq %rax, %r12
movq %r14, %rdi
callq 0x59148
movq %rbx, %rdi
callq 0x57640
movq %r12, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/button.cpp
// Function: smooth::GUI::Button::SetBitmap(smooth::GUI::Bitmap const&)
S::Int S::GUI::Button::SetBitmap(const Bitmap &nBitmap)
{
	Bool	 prevVisible = IsVisible();

	if (IsRegistered() && prevVisible) Hide();

	bitmap = nBitmap;

	if (IsRegistered() && prevVisible) Show();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
movl %eax, %ebp
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
testb %bpl, %bpl
je 0x73575
testb %al, %al
je 0x73575
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
leaq 0x5b8(%rbx), %rdi
movq %r14, %rsi
callq 0x582c0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
andb %al, %bpl
cmpb $0x1, %bpl
jne 0x735a2
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
xorl %eax, %eax
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/button.cpp
// Function: smooth::GUI::Button::Button(smooth::String const&, smooth::GUI::Bitmap const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::Button::Button(const String &iText, const Bitmap &iBitmap, const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type = classID;
	text = iText;

	SetBitmap(iBitmap);

	if (GetWidth()	== 0) SetWidth(80);
	if (GetHeight() == 0) SetHeight(22);

	ComputeTextSize();

	hotspot	= new HotspotSimpleButton(flags & BF_NOFRAME ? Point() : Point(4, 4), GetSize() - (flags & BF_NOFRAME ? Size() : Size(8, 8)));
	hotspot->onLeftButtonClick.Connect(&onAction);

	Add(hotspot);

	onChangeSize.Connect(&Button::OnChangeSize, this);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
movq %rcx, %rsi
movq %r8, %rdx
callq 0x57a30
movq 0xf9228(%rip), %rax     # 0x16c7f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5b8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58950
movq 0xf9831(%rip), %rax     # 0x16ce20
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r12, %rsi
callq 0x555f0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x58dd0
cmpl $0x0, 0xb0(%rbx)
jne 0x73640
leaq 0xa8(%rbx), %rsi
movl 0xb4(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl $0x50, (%rdx)
movl %eax, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
cmpl $0x0, 0xb4(%rbx)
jne 0x73670
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl %eax, (%rdx)
movl $0x16, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq %rbx, %rdi
callq 0x55bb0
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r15
movl 0x30(%rbx), %eax
xorl %ecx, %ecx
andl $0x1, %eax
sete %cl
shll $0x2, %ecx
leaq 0x8(%rsp), %rsi
movl %ecx, (%rsi)
movl %ecx, 0x4(%rsi)
shll $0x3, %eax
xorl $0x8, %eax
movl 0xb0(%rbx), %ecx
movl 0xb4(%rbx), %edx
subl %eax, %ecx
subl %eax, %edx
shlq $0x20, %rdx
orq %rdx, %rcx
leaq 0x10(%rsp), %rdx
movq %rcx, (%rdx)
movq %r15, %rdi
callq 0x55a60
movq %r15, 0x5c0(%rbx)
addq $0x338, %r15            # imm = 0x338
leaq 0x478(%rbx), %rsi
movq %r15, %rdi
callq 0x71a12
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xf8deb(%rip), %rsi     # 0x16c4f0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x73da4
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r12
movl $0x5b8, %esi            # imm = 0x5B8
movq %r15, %rdi
callq 0x55480
jmp 0x73735
movq %rax, %r12
jmp 0x7373d
movq %rax, %r12
movq %r14, %rdi
callq 0x59148
movq %rbx, %rdi
callq 0x57640
movq %r12, %rdi
callq 0x57090
nop