LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O3/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 0x6ec65
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
movb $0x1, %r12b
testb %al, %al
je 0x6ebf9
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
testq %rax, %rax
je 0x6ebf9
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x55160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
xorl %r12d, %r12d
jmp 0x6ebfc
xorl %r14d, %r14d
movb $0x0, 0xcc(%rbx)
cmpl $0x0, 0x40(%rbx)
jle 0x6ec34
leaq 0x38(%rbx), %r15
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
incl %ebp
movq %r15, %rdi
movl %ebp, %esi
callq 0x60a9a
movq (%rax), %rax
movl $0x0, 0xd4(%rax)
movl 0x40(%rbx), %eax
decl %eax
cmpl %eax, %ebp
jl 0x6ec12
testb %r12b, %r12b
jne 0x6ec4a
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq %r14, %rdi
callq 0x58780
addq $0x258, %rbx            # imm = 0x258
movq %rbx, %rdi
callq 0x701aa
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/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, %ebx       # imm = 0xFFFFFFFF
cmpb $0x1, 0xca(%rdi)
jne 0x6ed48
movq %rdi, %r14
xorl %ebx, %ebx
cmpb $0x1, 0xcb(%rdi)
jne 0x6ed48
movl %esi, %ebp
movq 0x190(%r14), %r15
movq 0xfcb81(%rip), %rax     # 0x16b828
movswl (%rax), %r12d
leaq 0x20(%r15), %rdi
movl %r12d, %esi
callq 0x57520
testb %al, %al
jne 0x6ecc9
movq 0x190(%r15), %r15
testq %r15, %r15
jne 0x6ecab
jmp 0x6ed48
testq %r15, %r15
sete %al
testl %ebp, %ebp
setne %cl
orb %al, %cl
jne 0x6ed48
cmpb $0x1, 0x68(%r14)
jne 0x6ece8
movq 0x70(%r14), %rdi
callq 0x56d10
cmpl $0x0, 0x40(%r14)
jle 0x6ed38
leaq 0x38(%r14), %r12
addq $0x5ec, %r15            # imm = 0x5EC
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
incl %ebp
movq %r12, %rdi
movl %ebp, %esi
callq 0x60a9a
movq (%rax), %r13
movq (%r13), %rax
movq %r13, %rdi
movq %r15, %rsi
callq *0x158(%rax)
testb %al, %al
je 0x6ed2e
movq (%r13), %rax
movq %r13, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movl 0x40(%r14), %eax
decl %eax
cmpl %eax, %ebp
jl 0x6ecff
cmpb $0x1, 0x68(%r14)
jne 0x6ed48
movq 0x70(%r14), %rdi
callq 0x55910
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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 0x6fa66
retq
pushq %rbx
movq %rdi, %rbx
movb $0x1, 0xcd(%rdi)
addq $0x4d8, %rdi            # imm = 0x4D8
callq 0x701aa
addq $0x4f8, %rbx            # imm = 0x4F8
movq %rbx, %rdi
popq %rbx
jmp 0x701aa
nop
// File: /workspace/github_c_makefile_star2_O3/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:
movb $0x1, %al
cmpb $0x0, 0xd3(%rdi)
jne 0x6fad8
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0x40(%rdi)
jle 0x6fad2
leaq 0x38(%rbx), %r14
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
incl %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x71140
movq (%rax), %rdi
callq 0x57e00
testb %al, %al
jne 0x6fad4
movl 0x40(%rbx), %ecx
decl %ecx
cmpl %ecx, %ebp
jl 0x6faaf
jmp 0x6fad4
xorl %eax, %eax
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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:
cmpb $0x0, 0xcd(%rdi)
jne 0x6fb1b
pushq %rbx
movq %rdi, %rbx
movb $0x1, 0xcd(%rbx)
leaq 0x4d8(%rbx), %rdi
callq 0x701aa
cmpl $0x0, 0x40(%rbx)
jle 0x6fb1a
addq $0x38, %rbx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5b074
movq (%rax), %rbx
cmpb $0x1, 0xcd(%rbx)
jne 0x6fae7
popq %rbx
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x6fc0d
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 0x6fb81
movb $0x0, 0xcd(%rbx)
andb %bpl, %al
cmpb $0x1, %al
jne 0x6fbb1
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 %al, %bpl
cmpb $0x1, %bpl
jne 0x6fbff
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
movb 0xca(%rbx), %al
andb %r13b, %al
testb $0x1, %al
je 0x6fc0d
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_O3/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 0x6fd57
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 0x6fccb
movb $0x0, 0xcd(%rbx)
andb %bpl, %al
cmpb $0x1, %al
jne 0x6fcfb
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 %al, %bpl
cmpb $0x1, %bpl
jne 0x6fd49
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
movb 0xca(%rbx), %al
andb %r13b, %al
testb $0x1, %al
je 0x6fd57
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_O3/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 0x6fdc4
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
movl %eax, %r14d
movb 0xca(%rbx), %al
movl %r14d, %ecx
andb %al, %cl
cmpb $0x1, %cl
jne 0x6fda7
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movb 0xca(%rbx), %al
movw %bp, 0xd0(%rbx)
andb %al, %r14b
cmpb $0x1, %r14b
jne 0x6fdc0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
popq %rbx
popq %r14
popq %rbp
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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 %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
movl (%rsi), %eax
cmpl 0xa8(%rdi), %eax
jne 0x6fef1
movl 0x4(%r12), %eax
cmpl 0xac(%rbx), %eax
jne 0x6fef1
movl (%r14), %eax
cmpl 0xb0(%rbx), %eax
jne 0x6fef1
movl 0x4(%r14), %eax
cmpl 0xb4(%rbx), %eax
je 0x7000d
movq %rbx, %rdi
callq 0x59208
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x6ff5e
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r15
testq %rax, %rax
je 0x6ff4c
movzwl 0xd0(%rbx), %eax
cmpl $0x80, %eax
je 0x6ff4c
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
callq *0x130(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r15, %rdi
callq 0x55160
jmp 0x6ff51
testq %r15, %r15
je 0x6ff5e
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
xorl %ebp, %ebp
jmp 0x6ff64
movb $0x1, %bpl
xorl %r15d, %r15d
movq %rbx, %rdi
callq 0x58740
movl (%r12), %eax
cmpl 0xa8(%rbx), %eax
jne 0x6ff85
movl 0x4(%r12), %eax
cmpl 0xac(%rbx), %eax
je 0x6ffa3
leaq 0xa8(%rbx), %rsi
movq (%r12), %rax
movq %rax, 0xa8(%rbx)
leaq 0x278(%rbx), %rdi
callq 0x703b0
movl (%r14), %eax
cmpl 0xb0(%rbx), %eax
jne 0x6ffba
movl 0x4(%r14), %eax
cmpl 0xb4(%rbx), %eax
je 0x6ffd7
leaq 0xb0(%rbx), %rsi
movq (%r14), %rax
movq %rax, 0xb0(%rbx)
leaq 0x298(%rbx), %rdi
callq 0x70698
testb %bpl, %bpl
jne 0x7000d
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 0x7000d
movq %r15, %rdi
callq 0x58780
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x70074
movq 0x190(%rbx), %rbx
movq 0xfb7eb(%rip), %rax     # 0x16b828
movswl (%rax), %ebp
leaq 0x20(%rbx), %rdi
movl %ebp, %esi
callq 0x57520
testb %al, %al
jne 0x7005d
movq 0x190(%rbx), %rbx
testq %rbx, %rbx
jne 0x70040
jmp 0x70074
testq %rbx, %rbx
je 0x70074
movq (%rbx), %rax
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmpq *0x160(%rax)
movq 0xfba65(%rip), %rax     # 0x16bae0
movb (%rax), %al
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x70626
pushq %rbp
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0xf1345(%rip), %rdi     # 0x161920
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 0x7061b
decl %ebp
movq 0x18(%rbx), %rdi
movl %ebp, %esi
callq 0x5b074
movq (%rax), %rdi
movq (%rdi), %rax
movq %r14, %rsi
callq *0x20(%rax)
testb %al, %al
je 0x705f0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x712e6
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_O3/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 0x18(%rdi), %r15
testq %r15, %r15
jne 0x710b4
movq %rdi, %r14
movl $0x58, %edi
callq 0x556b0
movq %rax, %r15
movq %rax, %rdi
callq 0x55d90
leaq 0xee772(%rip), %rax     # 0x15f800
movq %rax, 0x40(%r15)
xorps %xmm0, %xmm0
movups %xmm0, 0x48(%r15)
leaq 0xee87f(%rip), %rax     # 0x15f920
movq %rax, (%r15)
movq %r15, 0x18(%r14)
movq %r15, %rdi
callq 0x571b0
movq 0x18(%r14), %r15
movl $0x10, %edi
callq 0x556b0
leaq 0xf07fb(%rip), %rcx     # 0x1618c0
movq %rcx, (%rax)
movq %rbx, 0x8(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %r15, %rdi
callq 0x5aed8
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_O3/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 %rdi, %rbx
movq 0x10(%rdi), %rdi
movq 0x18(%rbx), %rax
orq %rdi, %rax
jne 0x711ba
xorl %ebp, %ebp
jmp 0x71259
movq %rsi, %r14
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x711d6
addq $0x1c, %rax
movq %rax, %rdi
callq 0x578f0
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
je 0x7120e
xorl %r15d, %r15d
cmpl $0x0, 0x8(%rdi)
jle 0x7120e
movl %r15d, %esi
callq 0x5b074
movq (%rax), %rdi
movq (%rdi), %rax
movq %r14, %rsi
callq *0x18(%rax)
movl %eax, %ebp
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
je 0x71210
incl %r15d
cmpl 0x8(%rdi), %r15d
jl 0x711e4
jmp 0x71210
xorl %ebp, %ebp
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x71247
cmpl $0x0, 0x8(%rdi)
jle 0x71247
xorl %r14d, %r14d
movl %r14d, %esi
callq 0x5b074
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movl %eax, %ebp
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x71247
incl %r14d
cmpl 0x8(%rdi), %r14d
jl 0x71222
movq 0x8(%rbx), %rdi
testq %rdi, %rdi
je 0x71259
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_O3/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 0xfa98b(%rip), %rax     # 0x16bdb0
addq $0x10, %rax
movq %rax, (%rbx)
movq $0x0, 0x5c0(%rbx)
movl $0x0, 0x5b8(%rbx)
movq 0xfa5c8(%rip), %rax     # 0x16ba10
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movups (%r14), %xmm0
movups %xmm0, 0x5b8(%rbx)
cmpl $0x0, 0xb0(%rbx)
jne 0x71484
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 0x714b2
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 0x71712
movq 0x5c8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xfa36d(%rip), %rsi     # 0x16b8a0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x717c4
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r15
movl $0x5b8, %esi            # imm = 0x5B8
movq %r14, %rdi
callq 0x55480
jmp 0x7155c
movq %rax, %r15
movq %rbx, %rdi
callq 0x57640
movq %r15, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/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 0x7179d
movq %rsi, %rbx
movq %rdi, %r14
movq 0x18(%rdi), %r15
testq %r15, %r15
jne 0x71771
movl $0x58, %edi
callq 0x556b0
movq %rax, %r15
movq %rax, %rdi
callq 0x55d90
leaq 0xee0b5(%rip), %rax     # 0x15f800
movq %rax, 0x40(%r15)
xorps %xmm0, %xmm0
movups %xmm0, 0x48(%r15)
leaq 0xee1c2(%rip), %rax     # 0x15f920
movq %rax, (%r15)
movq %r15, 0x18(%r14)
movq %r15, %rdi
callq 0x571b0
movq 0x18(%r14), %r15
movl $0x10, %edi
callq 0x556b0
leaq 0xf037e(%rip), %rcx     # 0x161b00
movq %rcx, (%rax)
movq %rbx, 0x8(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %r15, %rdi
callq 0x5aed8
xorl %eax, %eax
jmp 0x717a2
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_O3/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 0x71dd6
movq %rdi, %rbx
movl $0x68, %edi
callq 0x556b0
movq %rax, %r14
movq %rax, %rdi
callq 0x55b80
movq %r14, 0x5c0(%rbx)
addq $0x48, %r14
movq 0xfa1f6(%rip), %rsi     # 0x16bfa0
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x729a2
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_O3/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 0x71e5a
movq %rdi, %rbx
movl $0x68, %edi
callq 0x556b0
movq %rax, %r14
movq %rax, %rdi
callq 0x55b80
movq %r14, 0x5c0(%rbx)
addq $0x48, %r14
movq 0xfa172(%rip), %rsi     # 0x16bfa0
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x729a2
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_O3/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 0x71ea6
callq 0x59190
movq 0x5c0(%rbx), %rdi
callq 0x58cc0
movq $0x0, 0x5c0(%rbx)
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/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 0xf9e57(%rip), %rax     # 0x16bdf8
addq $0x10, %rax
movq %rax, (%rdi)
movq 0x5c0(%rdi), %rdi
testq %rdi, %rdi
je 0x71fd0
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 0xefd82(%rip), %rax     # 0x161d78
movq %rax, 0x618(%rbx)
callq 0x72cfe
leaq 0x5f8(%rbx), %rdi
leaq 0xefd30(%rip), %rax     # 0x161d40
movq %rax, 0x5f8(%rbx)
callq 0x72c18
movq %rbx, %rdi
popq %rbx
jmp 0x57640
jmp 0x72029
jmp 0x72029
movq %rax, %rdi
callq 0x5aeae
nop
// File: /workspace/github_c_makefile_star2_O3/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
movl 0x5c8(%rdi), %eax
testl %eax, %eax
jne 0x72624
movq 0x5c0(%rbx), %rdi
callq 0x59190
movq 0x5c0(%rbx), %rdi
movl $0xfa, %esi
callq 0x55100
movl 0x5c8(%rbx), %eax
cmpl $0x1, %eax
jne 0x72646
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 0x72685
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 0x72661
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 0x726ca
leaq 0x618(%rbx), %rdi
callq 0x72a62
incl 0x5c8(%rbx)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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 0x726ee
cmpl %edx, 0x5dc(%rbx)
je 0x72737
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 0x7271f
leaq 0x618(%rbx), %rdi
callq 0x72a62
leaq 0x5f8(%rbx), %rdi
movl 0x5d8(%rbx), %esi
movl 0x5dc(%rbx), %edx
callq 0x72b08
xorl %eax, %eax
popq %rbx
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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 0xf8945(%rip), %rax     # 0x16b7f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5b8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58950
movq 0xf8f4e(%rip), %rax     # 0x16be20
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r15, %rsi
callq 0x555f0
cmpl $0x0, 0xb0(%rbx)
jne 0x72f18
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 0x72f48
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
andl $0x1, %eax
leal (,%rax,4), %ecx
xorl $0x4, %ecx
shll $0x3, %eax
xorl $0x8, %eax
leaq 0x8(%rsp), %rsi
movl %ecx, (%rsi)
movl %ecx, 0x4(%rsi)
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 0x71712
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xf8511(%rip), %rsi     # 0x16b4f0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x73ab0
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 0x7300f
movq %rax, %r12
jmp 0x73017
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_O3/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 0xf876f(%rip), %rax     # 0x16b7f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5b8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58950
movq 0xf8d78(%rip), %rax     # 0x16be20
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x58dd0
cmpl $0x0, 0xb0(%rbx)
jne 0x730ea
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 0x7311a
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
andl $0x1, %eax
leal (,%rax,4), %ecx
xorl $0x4, %ecx
shll $0x3, %eax
xorl $0x8, %eax
leaq 0x8(%rsp), %rsi
movl %ecx, (%rsi)
movl %ecx, 0x4(%rsi)
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 0x71712
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xf8347(%rip), %rsi     # 0x16b4f0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x73ab0
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 0x731d9
movq %rax, %r12
jmp 0x731e1
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_O3/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 0x73225
testb %al, %al
je 0x73225
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 0x73252
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_O3/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 0xf8578(%rip), %rax     # 0x16b7f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5b8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58950
movq 0xf8b81(%rip), %rax     # 0x16be20
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 0x732f0
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 0x73320
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
andl $0x1, %eax
leal (,%rax,4), %ecx
xorl $0x4, %ecx
shll $0x3, %eax
xorl $0x8, %eax
leaq 0x8(%rsp), %rsi
movl %ecx, (%rsi)
movl %ecx, 0x4(%rsi)
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 0x71712
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xf8139(%rip), %rsi     # 0x16b4f0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x73ab0
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 0x733e7
movq %rax, %r12
jmp 0x733ef
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_O3/enzo1982[P]smooth/classes/gui/widgets/basic/checkbox.cpp
// Function: smooth::GUI::CheckBox::CheckBox(smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&, bool*)
S::GUI::CheckBox::CheckBox(const String &iText, const Point &iPos, const Size &iSize, Bool *iVariable) : Widget(iPos, iSize)
{
	type		= classID;
	text		= iText;

	dummyVariable	= False;

	if (iVariable == NIL)	variable = &dummyVariable;
	else			variable = iVariable;

	state		= *variable;

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

	ComputeTextSize();

	internalCheckValues.Connect(&CheckBox::InternalCheckValues, this);

	hotspot	= new HotspotSimpleButton(Point(0, 0), GetSize());
	hotspot->onLeftButtonClick.Connect(&CheckBox::OnLeftButtonClick, this);
	hotspot->onLeftButtonClick.Connect(&onAction);

	onChangeSize.Connect(&HotspotSimpleButton::SetSize, hotspot);

	Add(hotspot);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %r8, %r14
movq %rsi, %r15
movq %rdi, %rbx
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x57a30
movq 0xf7944(%rip), %rax     # 0x16b558
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xf7a56(%rip), %rax     # 0x16b678
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r15, %rsi
callq 0x555f0
leaq 0x5b8(%rbx), %rax
movb $0x0, 0x5b8(%rbx)
testq %r14, %r14
cmovneq %r14, %rax
movq %rax, 0x5c0(%rbx)
movb (%rax), %al
movb %al, 0x5c8(%rbx)
cmpl $0x0, 0xb0(%rbx)
jne 0x73c8c
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 0x73cbc
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl %eax, (%rdx)
movl $0x11, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq %rbx, %rdi
callq 0x55bb0
movq 0xf7aed(%rip), %rdi     # 0x16b7b8
movq 0xf772e(%rip), %rsi     # 0x16b400
xorl %edx, %edx
movq %rbx, %rcx
callq 0x744f4
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r14
leaq 0xb0(%rbx), %rdx
leaq 0x8(%rsp), %rsi
movq $0x0, (%rsi)
movq %rax, %rdi
callq 0x55a60
movq %r14, 0x5d0(%rbx)
addq $0x338, %r14            # imm = 0x338
movq 0xf7fb7(%rip), %rsi     # 0x16bcd0
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x745b4
movl $0x338, %edi            # imm = 0x338
addq 0x5d0(%rbx), %rdi
leaq 0x478(%rbx), %rsi
callq 0x71712
leaq 0x298(%rbx), %rdi
movq 0x5d0(%rbx), %rcx
movq 0xf77c5(%rip), %rsi     # 0x16b518
xorl %edx, %edx
callq 0x74674
movq 0x5d0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r15
movl $0x5b8, %esi            # imm = 0x5B8
movq %r14, %rdi
callq 0x55480
jmp 0x73d89
movq %rax, %r15
movq %rbx, %rdi
callq 0x57640
movq %r15, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/divider.cpp
// Function: smooth::GUI::Divider::Divider(int, int)
S::GUI::Divider::Divider(Int iPosition, Int iOrientation) : Widget(Point(), Size())
{
	type		= classID;

	flags		= iOrientation;
	orientation	= OR_FREE;
	position	= iPosition;

	dragging	= False;
	startPos	= 0;

	if (position == 0) position = 120;

	dragHotspot = new Hotspot(Point(), Size());
	dragHotspot->SetIndependent(True);

	dragHotspot->onMouseOver.Connect(&Divider::OnMouseOver, this);
	dragHotspot->onMouseOut.Connect(&Divider::OnMouseOut, this);

	dragHotspot->onMouseDragStart.Connect(&Divider::OnMouseDragStart, this);
	dragHotspot->onMouseDrag.Connect(&Divider::OnMouseDrag, this);
	dragHotspot->onMouseDragEnd.Connect(&Divider::OnMouseDragEnd, this);

	Add(dragHotspot);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
movl %edx, %r14d
movl %esi, %ebp
movq %rdi, %rbx
xorl %r15d, %r15d
leaq 0x10(%rsp), %rsi
movq %r15, (%rsi)
leaq 0x8(%rsp), %rdx
movq %r15, (%rdx)
callq 0x57a30
movq 0xf709b(%rip), %rax     # 0x16be88
addq $0x10, %rax
movq %rax, (%rbx)
movq %r15, 0x5c0(%rbx)
movq %r15, 0x5e0(%rbx)
leaq 0xecf6f(%rip), %rax     # 0x161d78
movq %rax, 0x5d8(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x5e8(%rbx)
movq 0xf6cc7(%rip), %rax     # 0x16bae8
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movl %r14d, 0x30(%rbx)
movw $0x80, 0xd0(%rbx)
movl %ebp, 0x5c8(%rbx)
movb $0x0, 0x5b8(%rbx)
movl $0x0, 0x5bc(%rbx)
testl %ebp, %ebp
jne 0x74e5a
movl $0x78, 0x5c8(%rbx)
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r14
xorl %eax, %eax
leaq 0x10(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x8(%rsp), %rdx
movq %rax, (%rdx)
movq %r14, %rdi
callq 0x55a30
movq %r14, 0x5d0(%rbx)
movb $0x1, 0xcf(%r14)
addq $0x2b8, %r14            # imm = 0x2B8
movq 0xf6ae2(%rip), %rsi     # 0x16b980
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x75682
movl $0x2d8, %edi            # imm = 0x2D8
addq 0x5d0(%rbx), %rdi
movq 0xf6742(%rip), %rsi     # 0x16b600
xorl %edx, %edx
movq %rbx, %rcx
callq 0x75682
movl $0x3f8, %edi            # imm = 0x3F8
addq 0x5d0(%rbx), %rdi
movq 0xf6905(%rip), %rsi     # 0x16b7e0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x75742
movl $0x418, %edi            # imm = 0x418
addq 0x5d0(%rbx), %rdi
movq 0xf6810(%rip), %rsi     # 0x16b708
xorl %edx, %edx
movq %rbx, %rcx
callq 0x75742
movl $0x438, %edi            # imm = 0x438
addq 0x5d0(%rbx), %rdi
movq 0xf6c53(%rip), %rsi     # 0x16bb68
xorl %edx, %edx
movq %rbx, %rcx
callq 0x75742
movq 0x5d0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
movl $0x5b8, %esi            # imm = 0x5B8
movq %r14, %rdi
callq 0x55480
jmp 0x74f4f
movq %rax, %r15
leaq 0x5d8(%rbx), %rdi
callq 0x7296e
movq %rbx, %rdi
callq 0x57640
movq %r15, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/divider.cpp
// Function: smooth::GUI::Divider::OnMouseDrag(smooth::GUI::Point const&)
S::Void S::GUI::Divider::OnMouseDrag(const Point &mousePos)
{
	Int	 pos = startPos;

	if (Binary::IsFlagSet(flags, OR_VERT))	pos -= (startMousePos.x - mousePos.x);
	else					pos -= (startMousePos.y - mousePos.y);

	if (pos != GetPos()) onDrag.Emit(pos);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movl 0x5bc(%rdi), %ebp
movl 0x30(%rdi), %edi
movl $0x2, %esi
callq 0x583f0
leaq 0x5c4(%rbx), %rcx
leaq 0x5c0(%rbx), %rdx
movl %eax, %esi
xorb $0x1, %sil
testb %al, %al
cmovneq %rdx, %rcx
movzbl %sil, %eax
movl (%r14,%rax,4), %esi
subl (%rcx), %esi
addl %ebp, %esi
cmpl 0x5c8(%rbx), %esi
jne 0x75064
popq %rbx
popq %r14
popq %rbp
retq
addq $0x5d8, %rbx            # imm = 0x5D8
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x72a62
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/divider.cpp
// Function: smooth::GUI::Divider::Paint(int)
S::Int S::GUI::Divider::Paint(Int message)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

	switch (message)
	{
		case SP_PAINT:
			{
				UpdateMetrics();

				Surface	*surface = GetDrawSurface();
				Rect	 rect	 = Rect(GetRealPosition(), GetRealSize());

				if (Binary::IsFlagSet(flags, OR_VERT))	surface->Bar(rect.GetPosition(), Point(rect.left,      rect.bottom - 1), OR_VERT);
				else					surface->Bar(rect.GetPosition(), Point(rect.right - 1, rect.top       ), OR_HORZ);
			}

			break;
	}

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %esi, %ebp
movq %rdi, %r15
movq (%rdi), %rax
callq *0x88(%rax)
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testb %al, %al
je 0x75248
movq (%r15), %rax
movq %r15, %rdi
callq *0x90(%rax)
xorl %ebx, %ebx
testl %ebp, %ebp
jne 0x75248
testb %al, %al
je 0x75248
movq %r15, %rdi
callq 0x55150
movq (%r15), %rax
movq %r15, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq (%r15), %rax
movq %r15, %rdi
callq *0x50(%rax)
movq %rax, %r13
movl 0x30(%r15), %edi
movl $0x2, %esi
callq 0x583f0
testb %al, %al
je 0x7521e
shrq $0x20, %r13
movq %r12, %rax
shrq $0x20, %rax
leaq 0x8(%rsp), %rsi
movq %r12, (%rsi)
addl %r13d, %eax
decl %eax
leaq 0x10(%rsp), %rdx
movl %r12d, (%rdx)
movl %eax, 0x4(%rdx)
movq %r14, %rdi
movl $0x2, %ecx
jmp 0x75243
leaq 0x8(%rsp), %rsi
movq %r12, (%rsi)
leal (%r12,%r13), %eax
decl %eax
shrq $0x20, %r12
leaq 0x10(%rsp), %rdx
movl %eax, (%rdx)
movl %r12d, 0x4(%rdx)
movq %r14, %rdi
movl $0x1, %ecx
callq 0x58fc0
movl %ebx, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/editbox.cpp
// Function: smooth::GUI::EditBox::Paint(int)
S::Int S::GUI::EditBox::Paint(Int message)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

	switch (message)
	{
		case SP_PAINT:
		{
			Surface	*surface	 = GetDrawSurface();
			Rect	 frame		 = Rect(GetRealPosition(), GetRealSize());
			Color	 backgroundColor = IsActive() ? Setup::ClientColor : Setup::BackgroundColor;

			surface->StartPaint(GetVisibleArea());

			cursor->SetBackgroundColor(backgroundColor);

			surface->Box(frame, backgroundColor, Rect::Filled);
			surface->Frame(frame, FRAME_DOWN);

			Widget::Paint(message);

			surface->EndPaint();

			return Success();
		}
	}

	return Widget::Paint(message);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movl %esi, %ebp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x88(%rax)
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
testb %al, %al
je 0x761b1
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
xorl %r15d, %r15d
testb %al, %al
je 0x761b1
testl %ebp, %ebp
je 0x760ab
movq %rbx, %rdi
movl %ebp, %esi
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x567d0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq %rax, %r13
shrq $0x20, %r13
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
leal (%rax,%r12), %ecx
shrq $0x20, %rax
leaq 0x28(%rsp), %r15
movl %r12d, (%r15)
movl %r13d, 0x4(%r15)
movl %ecx, 0x8(%r15)
addl %r13d, %eax
movl %eax, 0xc(%r15)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x98(%rax)
movq 0xf556b(%rip), %rcx     # 0x16b670
leaq 0x8(%rcx), %rdx
movq 0xf53c0(%rip), %rsi     # 0x16b4d0
leaq 0x8(%rsi), %rdi
testb %al, %al
cmovneq %rdx, %rdi
movq (%rdi), %rax
leaq 0x18(%rsp), %r12
cmovneq %rcx, %rsi
movq %rax, 0x8(%r12)
movl (%rsi), %eax
movl %eax, (%r12)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %r13
movq %rax, (%r13)
movq %rdx, 0x8(%r13)
movq %r14, %rdi
movq %r13, %rsi
callq 0x55160
movq 0x5b8(%rbx), %rdi
movq (%rdi), %rax
movq %r12, %rsi
callq *0x138(%rax)
movq 0xf5e39(%rip), %rax     # 0x16bfa8
movl (%rax), %ecx
movq $0x0, (%r13)
leaq 0x8(%rsp), %r8
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x57930
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0x57890
xorl %r15d, %r15d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x567d0
movq %r14, %rdi
callq 0x58780
movl %r15d, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop