LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/slider.cpp
// Function: smooth::GUI::Slider::SetValue(int)
S::Void S::GUI::Slider::SetValue(Int newValue)
{
	Int	 previousVariable = *variable;

	*variable = Math::Min(Math::Max(newValue, startValue), endValue);

	if (*variable != previousValue)
	{
		if (!dragging)
		{
			Point	 prevPosition = dragHotspot->GetPosition();

			UpdateHotspotPositions();

			if (dragHotspot->GetPosition() != prevPosition) Paint(SP_PAINT);
		}

		previousValue = *variable;

		if (*variable != previousVariable) onValueChange.Emit(*variable);
	}
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq 0x5d0(%rdi), %rax
movl 0x5d8(%rdi), %ecx
cmpl %ecx, %esi
cmovgl %esi, %ecx
movl 0x5dc(%rdi), %edx
cmpl %edx, %ecx
cmovgel %edx, %ecx
movl (%rax), %ebp
movl %ecx, (%rax)
cmpl 0x5bc(%rdi), %ecx
je 0x7b404
movq %rdi, %rbx
cmpb $0x0, 0x5c4(%rdi)
jne 0x7b3f1
movq 0x5e8(%rbx), %rax
movq 0xa8(%rax), %r14
movq %rbx, %rdi
callq 0x5a580
movq 0x5e8(%rbx), %rax
cmpl %r14d, 0xa8(%rax)
jne 0x7b3e6
shrq $0x20, %r14
cmpl %r14d, 0xac(%rax)
je 0x7b3f1
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movq 0x5d0(%rbx), %rax
movl (%rax), %esi
movl %esi, 0x5bc(%rbx)
cmpl %ebp, %esi
jne 0x7b409
popq %rbx
popq %r14
popq %rbp
retq
addq $0x5f0, %rbx            # imm = 0x5F0
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x72596
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/slider.cpp
// Function: smooth::GUI::Slider::SetRange(int, int)
S::Int S::GUI::Slider::SetRange(Int rangeStart, Int rangeEnd)
{
	if (startValue == rangeStart &&
	    endValue   == rangeEnd) return Success();

	startValue	= rangeStart;
	endValue	= rangeEnd;

	*variable  = Math::Min(Math::Max(*variable, startValue), endValue);

	Paint(SP_PAINT);

	UpdateHotspotPositions();

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
cmpl %esi, 0x5d8(%rdi)
jne 0x7b870
cmpl %edx, 0x5dc(%rbx)
je 0x7b8a4
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)
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movq %rbx, %rdi
callq 0x5a580
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/slider.cpp
// Function: smooth::GUI::Slider::SetGripSize(int)
S::Int S::GUI::Slider::SetGripSize(Int newGripSize)
{
	gripSize = newGripSize;

	Paint(SP_PAINT);

	UpdateHotspotPositions();

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movl %esi, 0x5c8(%rdi)
movq (%rdi), %rax
xorl %esi, %esi
callq *0x78(%rax)
movq %rbx, %rdi
callq 0x5a580
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/tabwidget.cpp
// Function: smooth::GUI::TabWidget::TabWidget(smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::TabWidget::TabWidget(const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type	= classID;

	if (GetWidth()	== 0) SetWidth(120);
	if (GetHeight()	== 0) SetHeight(100);

	selectedTab = NIL;

	onSelectTab.SetParentObject(this);

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

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x58c80
movq 0xe5889(%rip), %rax     # 0x1616f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5c0(%rbx), %r14
movq %r14, %rdi
callq 0x7cc8a
leaq 0x618(%rbx), %r15
andq $0x0, 0x620(%rbx)
leaq 0xddecd(%rip), %rax     # 0x159d68
movq %rax, 0x618(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x628(%rbx)
movq 0xe577d(%rip), %rax     # 0x161630
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
cmpl $0x0, 0xb0(%rbx)
jne 0x7bece
pushq $0x78
popq %rsi
movq %rbx, %rdi
callq 0x5a1f0
cmpl $0x0, 0xb4(%rbx)
jne 0x7bee2
pushq $0x64
popq %rsi
movq %rbx, %rdi
callq 0x58980
andq $0x0, 0x5b8(%rbx)
movq %rbx, 0x620(%rbx)
leaq 0x298(%rbx), %rdi
movq 0xe55e1(%rip), %rsi     # 0x1614e0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x7cca0
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r12
jmp 0x7bf2d
movq %rax, %r12
movq %r15, %rdi
callq 0x7cd3c
movq %r14, %rdi
callq 0x7cd56
movq %rbx, %rdi
callq 0x58860
movq %r12, %rdi
callq 0x58260
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/tabwidget.cpp
// Function: smooth::GUI::TabWidget::SelectTab(smooth::GUI::Widget const*)
S::Int S::GUI::TabWidget::SelectTab(const Widget *tabWidget)
{
	for (Int i = 0; i < GetNOfObjects(); i++)
	{
		Widget	*widget = GetNthObject(i);

		if (widget != tabWidget) continue;

		Surface	*surface = GetDrawSurface();

		surface->StartPaint(GetVisibleArea());

		for (Int j = 0; j < GetNOfObjects(); j++)
		{
			if (j == i) continue;

			GetNthObject(j)->Hide();
		}

		widget->Show();

		Paint(SP_PAINT);

		surface->EndPaint();

		selectedTab = widget;

		onSelectTab.Emit(widget);

		return Success();
	}

	return Error();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r12
movq %rdi, %r14
leaq 0x618(%rdi), %rbx
xorl %ebp, %ebp
pushq $-0x1
popq %r13
cmpl 0x40(%r14), %ebp
jge 0x7cadf
movq %r14, %rdi
movl %ebp, %esi
callq 0x58c90
cmpq %r12, %rax
je 0x7ca58
incl %ebp
jmp 0x7ca3b
movq %rax, %r15
movq (%r14), %rax
movq %r14, %rdi
callq *0x40(%rax)
movq %rax, %r12
movq (%r14), %rax
movq %r14, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r12, %rdi
callq 0x56160
xorl %r13d, %r13d
cmpl 0x40(%r14), %r13d
jge 0x7caae
cmpl %r13d, %ebp
je 0x7caa9
movq %r14, %rdi
movl %r13d, %esi
callq 0x58c90
movq (%rax), %rcx
movq %rax, %rdi
callq *0x60(%rcx)
incl %r13d
jmp 0x7ca8a
movq (%r15), %rax
movq %r15, %rdi
callq *0x58(%rax)
movq (%r14), %rax
xorl %r13d, %r13d
movq %r14, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movq %r12, %rdi
callq 0x59a80
movq %r15, 0x5b8(%r14)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7cd84
movl %r13d, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/tabwidget.cpp
// Function: smooth::GUI::TabWidget::Add(smooth::GUI::Widget*, smooth::GUI::Bitmap const&)
S::Int S::GUI::TabWidget::Add(Widget *widget, const Bitmap &bitmap)
{
	if (widget == NIL) return Error();

	if (!widget->IsRegistered())
	{
		widget->Hide();

		if (Widget::Add(widget) == Success())
		{
			bitmaps.Add(bitmap, widget->GetHandle());

			widget->SetMetrics(Point(2, 21), GetSize() - Size(3, 22));

			if (GetNOfObjects() == 1) SelectTab(widget);

			return Success();
		}
	}

	return Error();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
pushq $-0x1
popq %rbp
testq %rsi, %rsi
je 0x7cbfe
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x88(%rax)
testb %al, %al
jne 0x7cbfe
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x58ed0
testl %eax, %eax
jne 0x7cbfe
leaq 0x5c0(%r14), %rdi
movl 0x8(%rbx), %edx
movq %r15, %rsi
callq 0x7d2da
movabsq $0x1500000002, %rax     # imm = 0x1500000002
leaq 0x10(%rsp), %rsi
movq %rax, (%rsi)
movl 0xb0(%r14), %eax
movl 0xb4(%r14), %ecx
addl $-0x3, %eax
addl $-0x16, %ecx
shlq $0x20, %rcx
orq %rcx, %rax
leaq 0x8(%rsp), %rdx
movq %rax, (%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
xorl %ebp, %ebp
cmpl $0x1, 0x40(%r14)
jne 0x7cbfe
movq %r14, %rdi
movq %rbx, %rsi
callq 0x57550
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/tabwidget.cpp
// Function: smooth::GUI::TabWidget::Remove(smooth::GUI::Widget*)
S::Int S::GUI::TabWidget::Remove(Widget *widget)
{
	if (widget == NIL) return Error();

	Bool	 wasVisible = widget->IsVisible();

	if (Widget::Remove(widget) == Success())
	{
		bitmaps.Remove(widget->GetHandle());

		if (wasVisible)
		{
			if (GetNOfObjects() > 0) SelectTab(GetNthObject(0));
			else			 selectedTab = NIL;
		}

		return Success();
	}

	return Error();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
pushq $-0x1
popq %rbx
testq %rsi, %rsi
je 0x7cc7d
movq %rsi, %r15
movq %rdi, %r14
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x90(%rax)
movl %eax, %ebp
movq %r14, %rdi
movq %r15, %rsi
callq 0x57fa0
testl %eax, %eax
jne 0x7cc7d
leaq 0x5c0(%r14), %rdi
movl 0x8(%r15), %esi
callq 0x59f00
xorl %ebx, %ebx
testb %bpl, %bpl
je 0x7cc7d
cmpl $0x0, 0x40(%r14)
jle 0x7cc75
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
callq 0x58c90
movq %r14, %rdi
movq %rax, %rsi
callq 0x57550
jmp 0x7cc7d
andq $0x0, 0x5b8(%r14)
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/text.cpp
// Function: smooth::GUI::Text::Text(smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::Text::Text(const String &iText, const Point &iPos, const Size &iAlign) : Widget(iPos, Size())
{
	type	= classID;
	text	= iText;
	align	= iAlign;

	ComputeTextSize();

	SetSize(scaledTextSize * 96.0 / Surface().GetSurfaceDPI() + Size(0, 2));
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rcx, %r14
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x10(%rsp), %rax
andq $0x0, (%rax)
movq %rdx, %rsi
movq %rax, %rdx
callq 0x58c80
movq 0xe49e3(%rip), %rax     # 0x161e30
addq $0x10, %rax
movq %rax, (%rbx)
andq $0x0, 0x5b8(%rbx)
movq 0xe48a5(%rip), %rax     # 0x161d08
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r15, %rsi
callq 0x56630
movq (%r14), %rax
movq %rax, 0x5b8(%rbx)
movq %rbx, %rdi
callq 0x56c30
leaq 0x188(%rbx), %rdi
movsd 0x66076(%rip), %xmm0    # 0xe3510
callq 0x57480
movq %rax, 0x8(%rsp)
leaq 0x18(%rsp), %rdx
andq $0x0, (%rdx)
movq %rsp, %rdi
xorl %esi, %esi
callq 0x58340
movq %rsp, %rdi
callq 0x59c60
cwtl
cvtsi2sd %eax, %xmm0
leaq 0x8(%rsp), %rdi
callq 0x59050
movabsq $0x200000000, %rcx      # imm = 0x200000000
addq %rcx, %rax
leaq 0x10(%rsp), %rdx
movq %rax, (%rdx)
leaq 0xa8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq %rsp, %rdi
callq 0x58d90
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x7d50e
jmp 0x7d51b
jmp 0x7d51b
movq %rax, %r14
movq %rsp, %rdi
callq 0x58d90
jmp 0x7d51e
movq %rax, %r14
movq %rbx, %rdi
callq 0x58860
movq %r14, %rdi
callq 0x58260
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/text.cpp
// Function: smooth::GUI::Text::SetText(smooth::String const&)
S::Int S::GUI::Text::SetText(const String &nText)
{
	if (text == nText) return Success();

	Surface	*surface    = GetDrawSurface();

	Bool	 registered = IsRegistered();
	Bool	 visible    = IsVisible();

	if (registered && visible)
	{
		Rect	 oldRect = Rect(GetRealPosition(), GetRealSize());
		Rect	 newRect = Rect(oldRect.GetPosition(), Size(font.GetScaledTextSizeX(nText), font.GetScaledTextSizeY(nText)));

		surface->StartPaint(Rect::EncloseRect(oldRect, newRect));
	}

	Widget::SetText(nText);

	SetSize(scaledTextSize * 96.0 / Surface().GetSurfaceDPI() + Size(0, 2));

	Paint(SP_PAINT);

	if (registered && visible) surface->EndPaint();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r15
movq %rdi, %rbx
addq $0xf0, %rdi
callq 0x56960
testb %al, %al
jne 0x7d9f6
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r13
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
movl %eax, %r12d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
movl %eax, %ebp
andb %r12b, %bpl
cmpb $0x1, %bpl
jne 0x7d959
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x48(%rax)
movq %rax, %r12
movb %bpl, 0x7(%rsp)
movq %rax, %rbp
shrq $0x20, %rbp
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
leal (%rax,%r12), %ecx
shrq $0x20, %rax
leaq 0x30(%rsp), %rdx
movq %r12, (%rdx)
movl %ecx, 0x8(%rdx)
addl %ebp, %eax
movl %eax, 0xc(%rdx)
leaq 0x140(%rbx), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x57870
movq %r13, 0x8(%rsp)
movl %eax, %r13d
movq %r14, %rdi
movq %r15, %rsi
callq 0x588a0
leaq 0x20(%rsp), %rsi
movl %r12d, (%rsi)
movl %ebp, 0x4(%rsi)
addl %r12d, %r13d
movl %r13d, 0x8(%rsi)
movq 0x8(%rsp), %r13
addl %ebp, %eax
movb 0x7(%rsp), %bpl
movl %eax, 0xc(%rsi)
leaq 0x30(%rsp), %rdi
callq 0x58650
leaq 0x10(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r13, %rdi
callq 0x56160
movq %rbx, %rdi
movq %r15, %rsi
callq 0x57f80
leaq 0x188(%rbx), %rdi
movsd 0x65b9d(%rip), %xmm0    # 0xe3510
callq 0x57480
movq %rax, 0x20(%rsp)
leaq 0x40(%rsp), %rdx
andq $0x0, (%rdx)
leaq 0x10(%rsp), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58340
movq %r14, %rdi
callq 0x59c60
cwtl
cvtsi2sd %eax, %xmm0
leaq 0x20(%rsp), %rdi
callq 0x59050
movabsq $0x200000000, %rcx      # imm = 0x200000000
addq %rcx, %rax
leaq 0x30(%rsp), %rdx
movq %rax, (%rdx)
leaq 0xa8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
leaq 0x10(%rsp), %rdi
callq 0x58d90
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
testb %bpl, %bpl
je 0x7d9f6
movq %r13, %rdi
callq 0x59a80
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7da09
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x58d90
movq %rbx, %rdi
callq 0x58260
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/text.cpp
// Function: smooth::GUI::Text::SetFont(smooth::GUI::Font const&)
S::Int S::GUI::Text::SetFont(const Font &nFont)
{
	if (font == nFont) return Success();

	Surface	*surface    = GetDrawSurface();

	Bool	 registered = IsRegistered();
	Bool	 visible    = IsVisible();

	if (registered && visible)
	{
		Rect	 oldRect = Rect(GetRealPosition(), GetRealSize());
		Rect	 newRect = Rect(oldRect.GetPosition(), Size(nFont.GetScaledTextSizeX(text), nFont.GetScaledTextSizeY(text)));

		surface->StartPaint(Rect::EncloseRect(oldRect, newRect));
	}

	Widget::SetFont(nFont);

	SetSize(scaledTextSize * 96.0 / Surface().GetSurfaceDPI() + Size(0, 2));

	Paint(SP_PAINT);

	if (registered && visible) surface->EndPaint();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r15
movq %rdi, %rbx
addq $0x140, %rdi            # imm = 0x140
callq 0x5a110
testb %al, %al
jne 0x7dbb6
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r13
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
movl %eax, %r12d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
movl %eax, %ebp
andb %r12b, %bpl
cmpb $0x1, %bpl
jne 0x7db19
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x48(%rax)
movq %rax, %r12
movb %bpl, 0x7(%rsp)
movq %rax, %rbp
shrq $0x20, %rbp
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
leal (%rax,%r12), %ecx
shrq $0x20, %rax
leaq 0x30(%rsp), %rdx
movq %r12, (%rdx)
movl %ecx, 0x8(%rdx)
addl %ebp, %eax
movl %eax, 0xc(%rdx)
leaq 0xf0(%rbx), %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x57870
movq %r13, 0x8(%rsp)
movl %eax, %r13d
movq %r15, %rdi
movq %r14, %rsi
callq 0x588a0
leaq 0x20(%rsp), %rsi
movl %r12d, (%rsi)
movl %ebp, 0x4(%rsi)
addl %r12d, %r13d
movl %r13d, 0x8(%rsi)
movq 0x8(%rsp), %r13
addl %ebp, %eax
movb 0x7(%rsp), %bpl
movl %eax, 0xc(%rsi)
leaq 0x30(%rsp), %rdi
callq 0x58650
leaq 0x10(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r13, %rdi
callq 0x56160
movq %rbx, %rdi
movq %r15, %rsi
callq 0x56f80
leaq 0x188(%rbx), %rdi
movsd 0x659dd(%rip), %xmm0    # 0xe3510
callq 0x57480
movq %rax, 0x20(%rsp)
leaq 0x40(%rsp), %rdx
andq $0x0, (%rdx)
leaq 0x10(%rsp), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58340
movq %r14, %rdi
callq 0x59c60
cwtl
cvtsi2sd %eax, %xmm0
leaq 0x20(%rsp), %rdi
callq 0x59050
movabsq $0x200000000, %rcx      # imm = 0x200000000
addq %rcx, %rax
leaq 0x30(%rsp), %rdx
movq %rax, (%rdx)
leaq 0xa8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
leaq 0x10(%rsp), %rdi
callq 0x58d90
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
testb %bpl, %bpl
je 0x7dbb6
movq %r13, %rdi
callq 0x59a80
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7dbc9
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x58d90
movq %rbx, %rdi
callq 0x58260
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/titlebar.cpp
// Function: smooth::GUI::Titlebar::Process(int, int, int)
S::Int S::GUI::Titlebar::Process(Int message, Int wParam, Int lParam)
{
	if (!IsRegistered())		 return Error();
	if (!IsActive() || !IsVisible()) return Success();

#ifdef __WIN32__
	Window	*window = container->GetContainerWindow();
#endif

	Bool	 prevPaintActive = paintActive;

	switch (message)
	{
		case SM_GETFOCUS:
		case SM_LOSEFOCUS:
		case SM_WINDOWTITLECHANGED:
#ifdef __WIN32__
			if (GetActiveWindow() == (HWND) window->GetSystemWindow() && (!paintActive || message == SM_WINDOWTITLECHANGED))
			{
				paintActive = True;
			}
			else if (GetActiveWindow() != (HWND) window->GetSystemWindow())
			{
				paintActive = False;

				Widget	*remoteParent = Window::GetWindow(GetActiveWindow());

				if (remoteParent != NIL)
				{
					if (remoteParent->GetObjectType() == ToolWindow::classID)
					{
						do
						{
							remoteParent = remoteParent->GetContainer();

							if (remoteParent == window) { paintActive = True; break; }
						}
						while (remoteParent != NIL);
					}
				}
			}
#endif
			if (message == SM_WINDOWTITLECHANGED || paintActive != prevPaintActive) Paint(SP_PAINT);

			break;
	}

	return Widget::Process(message, wParam, lParam);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %ecx, %ebx
movl %edx, %ebp
movl %esi, %r14d
movq %rdi, %r15
movq (%rdi), %rax
callq *0x88(%rax)
testb %al, %al
je 0x7dd39
movq (%r15), %rax
movq %r15, %rdi
callq *0x98(%rax)
xorl %r12d, %r12d
testb %al, %al
je 0x7dd3d
movq (%r15), %rax
movq %r15, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x7dd3d
cmpl $0x780a, %r14d          # imm = 0x780A
jne 0x7dd22
movq (%r15), %rax
movq %r15, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movq %r15, %rdi
movl %r14d, %esi
movl %ebp, %edx
movl %ebx, %ecx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x594d0
pushq $-0x1
popq %r12
movl %r12d, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/titlebar.cpp
// Function: smooth::GUI::Titlebar::OnMouseDrag(smooth::GUI::Point const&)
S::Void S::GUI::Titlebar::OnMouseDrag(const Point &mousePos)
{
	Window	*window	= container->GetContainerWindow();

	if (window->IsMaximized() && mousePos != startMousePos)
	{
		Rect	 nonMaxRect = window->GetRestoredWindowRect();
		Rect	 workArea   = System::Screen::GetActiveScreenWorkArea();

		window->Restore();
		window->SetPosition(Point(workArea.left + Math::Max(0, Math::Min(mousePos.x - nonMaxRect.GetWidth() / 2, workArea.GetWidth() - nonMaxRect.GetWidth())), workArea.top + mousePos.y - startMousePos.y));

		startMousePos.x -= window->GetX();
	}

	if (!window->IsMaximized()) window->SetPosition(window->GetPosition() - (Point((IsRightToLeft() ? window->GetWidth() - startMousePos.x : startMousePos.x), startMousePos.y) - Point((IsRightToLeft() ? window->GetWidth() - mousePos.x : mousePos.x), mousePos.y)));
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r14
movq %rdi, %r15
movq 0x190(%rdi), %rdi
callq 0x56a50
movq %rax, %rbx
movb 0x5c8(%rax), %al
cmpb $0x1, %al
jne 0x7de2f
movl (%r14), %ecx
cmpl 0x5bc(%r15), %ecx
jne 0x7dda4
movl 0x5c0(%r15), %ecx
cmpl %ecx, 0x4(%r14)
je 0x7de2f
movq %rbx, %rdi
callq 0x58900
movq %rax, 0x8(%rsp)
movq %rdx, %rbp
callq 0x59120
movq %rax, %r12
movq %rdx, %r13
movq %rbx, %rdi
callq 0x585f0
subl 0x8(%rsp), %ebp
pushq $-0x2
popq %rcx
movl %ebp, %eax
cltd
idivl %ecx
addl (%r14), %eax
addl %r12d, %ebp
subl %ebp, %r13d
cmpl %r13d, %eax
cmovll %eax, %r13d
xorl %eax, %eax
testl %r13d, %r13d
cmovgl %r13d, %eax
addl %r12d, %eax
shrq $0x20, %r12
addl 0x4(%r14), %r12d
subl 0x5c0(%r15), %r12d
leaq 0x10(%rsp), %rsi
movl %eax, (%rsi)
movl %r12d, 0x4(%rsi)
leaq 0xb0(%rbx), %rdx
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movl 0xa8(%rbx), %eax
subl %eax, 0x5bc(%r15)
movb 0x5c8(%rbx), %al
testb $0x1, %al
jne 0x7debc
movq (%r15), %rax
movq %r15, %rdi
callq *0x160(%rax)
testb %al, %al
je 0x7de56
movl 0xb0(%rbx), %ebp
subl 0x5bc(%r15), %ebp
jmp 0x7de5d
movl 0x5bc(%r15), %ebp
movl 0x5c0(%r15), %r12d
movq (%r15), %rax
movq %r15, %rdi
callq *0x160(%rax)
testb %al, %al
je 0x7de7f
movl 0xb0(%rbx), %eax
subl (%r14), %eax
jmp 0x7de82
movl (%r14), %eax
subl %ebp, %eax
movl 0x4(%r14), %ecx
subl %r12d, %ecx
addl 0xa8(%rbx), %eax
addl 0xac(%rbx), %ecx
shlq $0x20, %rcx
orq %rcx, %rax
leaq 0x10(%rsp), %rsi
movq %rax, (%rsi)
movq %rbx, %rdx
addq $0xb0, %rdx
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/hotspot/hotspot.cpp
// Function: smooth::GUI::Hotspot::Show()
S::Int S::GUI::Hotspot::Show()
{
	if (visible) return Success();

	visible = True;

	Process(SM_MOUSEMOVE, 0, 0);

	onShow.Emit();

	return Success();
}

// Assembly:
cmpb $0x0, 0xcb(%rdi)
jne 0x7e21c
pushq %rbx
movq %rdi, %rbx
movb $0x1, 0xcb(%rdi)
movq (%rdi), %rax
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
addq $0x1f8, %rbx            # imm = 0x1F8
movq %rbx, %rdi
callq 0x70196
popq %rbx
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/hotspot/hotspot.cpp
// Function: smooth::GUI::Hotspot::Activate()
S::Int S::GUI::Hotspot::Activate()
{
	active = True;

	Paint(SP_MOUSEOUT);
	Process(SM_MOUSEMOVE, 0, 0);

	onActivate.Emit();

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movb $0x1, 0xcc(%rdi)
movq (%rdi), %rax
pushq $0x3
popq %rsi
callq *0x78(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
addq $0x238, %rbx            # imm = 0x238
movq %rbx, %rdi
callq 0x70196
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/hotspot/simplebutton.cpp
// Function: smooth::GUI::HotspotSimpleButton::Paint(int)
S::Int S::GUI::HotspotSimpleButton::Paint(Int message)
{
	if (!IsRegistered())	return Error();
	if (!IsVisible())	return Success();

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

	switch (message)
	{
		case SP_MOUSEIN:
		case SP_MOUSEUP:
			surface->Frame(frame, FRAME_UP);

			break;
		case SP_MOUSEDOWN:
			surface->Frame(frame, FRAME_DOWN);

			break;
		case SP_MOUSEOUT:
			surface->Box(frame, GetBackgroundColor(), Rect::Outlined);

			break;
	}

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %esi, %r15d
movq %rdi, %r14
movq (%rdi), %rax
callq *0x88(%rax)
testb %al, %al
je 0x7e393
movq (%r14), %rax
movq %r14, %rdi
callq *0x90(%rax)
xorl %ebx, %ebx
testb %al, %al
je 0x7e3d4
movq (%r14), %rax
movq %r14, %rdi
callq *0x40(%rax)
movq %rax, %r12
movq (%r14), %rax
movq %r14, %rdi
callq *0x48(%rax)
movq %rax, %r13
movq %rax, %rbp
shrq $0x20, %rbp
movq (%r14), %rax
movq %r14, %rdi
callq *0x50(%rax)
leal (%rax,%r13), %ecx
shrq $0x20, %rax
movl %r13d, (%rsp)
movl %ebp, 0x4(%rsp)
movl %ecx, 0x8(%rsp)
addl %ebp, %eax
movl %eax, 0xc(%rsp)
addl $-0x2, %r15d
cmpl $0x3, %r15d
ja 0x7e3d4
leaq 0x67fa8(%rip), %rax     # 0xe6328
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq %rsp, %rsi
movq %r12, %rdi
xorl %edx, %edx
jmp 0x7e3cf
pushq $-0x1
popq %rbx
jmp 0x7e3d4
movq (%r14), %rax
movq %r14, %rdi
callq *0x140(%rax)
movq 0xe3475(%rip), %rcx     # 0x161820
movl (%rcx), %ecx
leaq 0x10(%rsp), %r8
andq $0x0, (%r8)
movq %rsp, %rsi
movq %r12, %rdi
movq %rax, %rdx
callq 0x58b80
jmp 0x7e3d4
movq %rsp, %rsi
pushq $0x1
popq %rdx
movq %r12, %rdi
callq 0x58ad0
movl %ebx, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/generic/container.cpp
// Function: smooth::GUI::Container::EnableLocking(bool)
S::Int S::GUI::Container::EnableLocking(Bool enable)
{
	if (enable)
	{
		createdEntry.EnableLocking();
		elementOrder.EnableLocking();
	}
	else
	{
		createdEntry.DisableLocking();
		elementOrder.DisableLocking();
	}

	return Widget::EnableLocking(enable);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebp
movq %rdi, %rbx
addq $0x5b8, %rdi            # imm = 0x5B8
leaq 0x610(%rbx), %r14
testl %esi, %esi
je 0x7e534
callq 0x583a0
movq %r14, %rdi
callq 0x583a0
jmp 0x7e541
callq 0x58a50
movq %r14, %rdi
callq 0x58a50
movzbl %bpl, %esi
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x5a210
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/generic/container.cpp
// Function: smooth::GUI::Container::Add(smooth::GUI::Widget*)
S::Int S::GUI::Container::Add(Widget *widget)
{
	if (widget == NIL) return Error();

	if (!widget->IsRegistered())
	{
		if (Widget::Add(widget) == Success() && widget->GetObjectType() == Entry::classID)
		{
			elementOrder.Add((Entry *) widget, widget->GetHandle());
			createdEntry.Add(False, widget->GetHandle());

			Paint(SP_UPDATE);
			Process(SM_MOUSEMOVE, 0, 0);

			onChangeEntryOrder.Emit();

			return Success();
		}
	}

	return Error();
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
pushq $-0x1
popq %rbp
testq %rsi, %rsi
je 0x7e607
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x88(%rax)
testb %al, %al
jne 0x7e607
movq %rbx, %rdi
movq %r14, %rsi
callq 0x58ed0
testl %eax, %eax
jne 0x7e607
leaq 0x20(%r14), %rdi
movq 0xe2e26(%rip), %rax     # 0x1613c0
movswl (%rax), %esi
callq 0x58720
testb %al, %al
je 0x7e607
leaq 0x610(%rbx), %rdi
leaq 0x8(%rsp), %rsi
movq %r14, (%rsi)
movl 0x8(%r14), %edx
callq 0x7e862
leaq 0x5b8(%rbx), %rdi
movl 0x8(%r14), %edx
leaq 0x67d8b(%rip), %rsi     # 0xe635b
callq 0x7eb72
movq (%rbx), %rax
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq *0x78(%rax)
movq (%rbx), %rax
xorl %ebp, %ebp
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
addq $0x668, %rbx            # imm = 0x668
movq %rbx, %rdi
callq 0x70196
movl %ebp, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/generic/container.cpp
// Function: smooth::GUI::Container::Remove(smooth::GUI::Widget*)
S::Int S::GUI::Container::Remove(Widget *widget)
{
	if (widget == NIL) return Error();

	if (Widget::Remove(widget) == Success() && widget->GetObjectType() == Entry::classID)
	{
		Int	 entryHandle = widget->GetHandle();

		if (createdEntry.Get(entryHandle)) DeleteObject(widget);

		elementOrder.Remove(entryHandle);
		createdEntry.Remove(entryHandle);

		Paint(SP_UPDATE);
		Process(SM_MOUSEMOVE, 0, 0);

		onChangeEntryOrder.Emit();

		return Success();
	}

	return Error();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
pushq $-0x1
popq %rbp
testq %rsi, %rsi
je 0x7e6bb
movq %rsi, %r14
movq %rdi, %rbx
callq 0x57fa0
testl %eax, %eax
jne 0x7e6bb
leaq 0x20(%r14), %rdi
movq 0xe2d7d(%rip), %rax     # 0x1613c0
movswl (%rax), %esi
callq 0x58720
testb %al, %al
je 0x7e6bb
movl 0x8(%r14), %ebp
leaq 0x5b8(%rbx), %r15
movq %r15, %rdi
movl %ebp, %esi
callq 0x7ec92
cmpb $0x1, (%rax)
jne 0x7e671
movq %r14, %rdi
callq 0x5a010
leaq 0x610(%rbx), %rdi
movl %ebp, %esi
callq 0x59f00
movq %r15, %rdi
movl %ebp, %esi
callq 0x59f00
movq (%rbx), %rax
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq *0x78(%rax)
movq (%rbx), %rax
xorl %ebp, %ebp
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
addq $0x668, %rbx            # imm = 0x668
movq %rbx, %rdi
callq 0x70196
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/generic/container.cpp
// Function: smooth::GUI::Container::RemoveAllEntries()
S::Int S::GUI::Container::RemoveAllEntries()
{
	Surface	*surface = GetDrawSurface();
	Bool	 visible = IsVisible();

	if (visible)
	{
		Rect	 frame = Rect(GetRealPosition(), GetRealSize());

		surface->StartPaint(frame);

		Hide();
	}

	while (Length() > 0) Remove(GetNthEntry(Length() - 1));

	if (visible)
	{
		Show();

		surface->EndPaint();
	}

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
movl %eax, %ebp
testb %al, %al
je 0x7e763
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x48(%rax)
movq %rax, %r15
movq %rax, %r12
shrq $0x20, %r12
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
leal (%rax,%r15), %ecx
shrq $0x20, %rax
movq %rsp, %rsi
movl %r15d, (%rsi)
movl %r12d, 0x4(%rsi)
movl %ecx, 0x8(%rsi)
addl %r12d, %eax
movl %eax, 0xc(%rsi)
movq %r14, %rdi
callq 0x56160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
jmp 0x7e763
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
leal -0x1(%rax), %esi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x180(%rax)
movq (%rbx), %rcx
movq %rbx, %rdi
movq %rax, %rsi
callq *0x38(%rcx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
testl %eax, %eax
jg 0x7e73c
testb %bpl, %bpl
je 0x7e789
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq %r14, %rdi
callq 0x59a80
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/generic/container.cpp
// Function: smooth::GUI::Container::MoveEntry(int, int)
S::Int S::GUI::Container::MoveEntry(Int n, Int m)
{
	if (n == m)			    return Success();
	if (n >= Length() || m >= Length()) return Error();
	if (n <  0	  || m <  0	  ) return Error();

	elementOrder.MoveNth(n, m);

	onChangeEntryOrder.Emit();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
xorl %r15d, %r15d
cmpl %edx, %esi
je 0x7e7fa
movl %edx, %ebp
movl %esi, %r14d
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x178(%rax)
pushq $-0x1
popq %r15
cmpl %r14d, %eax
jle 0x7e7fa
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
movl %ebp, %ecx
orl %r14d, %ecx
js 0x7e7fa
cmpl %ebp, %eax
jle 0x7e7fa
leaq 0x610(%rbx), %rdi
movl %r14d, %esi
movl %ebp, %edx
callq 0x5bd6a
addq $0x668, %rbx            # imm = 0x668
movq %rbx, %rdi
callq 0x70196
xorl %r15d, %r15d
movl %r15d, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/image/imagebox.cpp
// Function: smooth::GUI::ImageBox::ImageBox(smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::ImageBox::ImageBox(const Point &iPos, const Size &iSize)
{
	type	     = classID;

	scrollbar    = NIL;
	scrollbarPos = 0;

	SetBackgroundColor(Setup::ClientColor);
	SetMetrics(iPos, iSize);

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

	onChangeSize.Connect(&ImageBox::OnChangeSize, this);

	scrollbar = new Scrollbar(Point(), Size(), OR_HORZ, &scrollbarPos, 0, 1);
	scrollbar->SetOrientation(OR_LOWERLEFT);
	scrollbar->SetStepSize(15);
	scrollbar->onValueChange.Connect(&ImageBox::OnScrollbarValueChange, this);
	scrollbar->Hide();

	Add(scrollbar);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
callq 0x57f30
movq 0xe30b4(%rip), %rax     # 0x161e68
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x6d8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x5a180
movq 0xe2ae5(%rip), %rax     # 0x1618b8
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
andq $0x0, 0x6c8(%rbx)
andl $0x0, 0x6d0(%rbx)
movq (%rbx), %rax
movq 0xe287d(%rip), %rsi     # 0x161670
movq %rbx, %rdi
callq *0x138(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq *0x150(%rax)
cmpl $0x0, 0xb0(%rbx)
jne 0x7ee22
pushq $0x78
popq %rsi
movq %rbx, %rdi
callq 0x5a1f0
cmpl $0x0, 0xb4(%rbx)
jne 0x7ee36
pushq $0x50
popq %rsi
movq %rbx, %rdi
callq 0x58980
leaq 0x298(%rbx), %rdi
movq 0xe28cc(%rip), %rsi     # 0x161710
xorl %edx, %edx
movq %rbx, %rcx
callq 0x7f568
movl $0x668, %edi            # imm = 0x668
callq 0x56700
movq %rax, %r15
leaq 0x6d0(%rbx), %r8
leaq 0x10(%rsp), %rsi
andq $0x0, (%rsi)
leaq 0x8(%rsp), %rdx
andq $0x0, (%rdx)
movl $0x1, (%rsp)
pushq $0x1
popq %rcx
movq %rax, %rdi
xorl %r9d, %r9d
callq 0x579c0
movq %r15, 0x6c8(%rbx)
movq (%r15), %rax
pushq $0x18
popq %rsi
movq %r15, %rdi
callq *0x120(%rax)
movq 0x6c8(%rbx), %rdi
movl $0xf, 0x5e0(%rdi)
addq $0x618, %rdi            # imm = 0x618
movq 0xe2912(%rip), %rsi     # 0x1617d0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x7f604
movq 0x6c8(%rbx), %rdi
movq (%rdi), %rax
callq *0x60(%rax)
movq 0x6c8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r12
movl $0x668, %esi            # imm = 0x668
movq %r15, %rdi
callq 0x564c0
jmp 0x7ef0b
movq %rax, %r12
jmp 0x7ef13
movq %rax, %r12
movq %r14, %rdi
callq 0x5a588
movq %rbx, %rdi
callq 0x59f50
movq %r12, %rdi
callq 0x58260
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/image/imagebox.cpp
// Function: smooth::GUI::ImageBox::OnChangeSize(smooth::GUI::Size const&)
S::Void S::GUI::ImageBox::OnChangeSize(const Size &nSize)
{
	if (scrollbar->IsVisible())
	{
		scrollbar->SetWidth(nSize.cx - 2);
		scrollbar->SetRange(0, GetEntriesWidth() - (GetWidth() - 4));

		scrollbar->SetPageSize(GetWidth() - 4);
	}
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movq 0x6c8(%rdi), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb %al, %al
je 0x7ef8c
movq 0x6c8(%rbx), %rdi
movl (%r14), %esi
addl $-0x2, %esi
callq 0x5a1f0
movq 0x6c8(%rbx), %r14
movq %rbx, %rdi
callq 0x57df0
subl 0xb0(%rbx), %eax
leal 0x4(%rax), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0x56840
movq 0x6c8(%rbx), %rax
movl 0xb0(%rbx), %ecx
addl $-0x4, %ecx
movl %ecx, 0x654(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/image/imagebox.cpp
// Function: smooth::GUI::ImageBox::GetEntriesWidth() const
S::Int S::GUI::ImageBox::GetEntriesWidth() const
{
	Int	 entriesWidth	= 0;

	for (Int i = 0; i < GetNOfObjects(); i++)
	{
		if (GetNthObject(i)->GetObjectType() != ListEntry::classID) continue;

		entriesWidth += GetNthObject(i)->GetWidth();
	}

	return entriesWidth;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0xe2133(%rip), %rax     # 0x1615f0
xorl %ebp, %ebp
movswl (%rax), %r14d
xorl %r15d, %r15d
cmpl 0x40(%rbx), %r15d
jge 0x7f4fd
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58c90
leaq 0x20(%rax), %rdi
movl %r14d, %esi
callq 0x5a150
testb %al, %al
jne 0x7f4f8
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58c90
addl 0xb0(%rax), %ebp
incl %r15d
jmp 0x7f4c6
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/image/imageentry.cpp
// Function: smooth::GUI::ImageEntry::ImageEntry(smooth::GUI::Bitmap const&, smooth::GUI::Size const&)
S::GUI::ImageEntry::ImageEntry(const Bitmap &iBitmap, const Size &iSize) : ListEntry(NIL)
{
	type	= classID;

	SetSize(iSize);

	image	= new Image(iBitmap, Point(2, 2), iSize - Size(4, 4));

	Add(image);

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

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x8(%rsp), %r12
movq %r12, %rdi
xorl %esi, %esi
callq 0x5a180
movq %rbx, %rdi
movq %r12, %rsi
callq 0x562b0
leaq 0x8(%rsp), %rdi
callq 0x5a588
movq 0xe2651(%rip), %rax     # 0x161e18
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xe1e43(%rip), %rax     # 0x161618
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xa8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x58250
movl $0x5c8, %edi            # imm = 0x5C8
callq 0x56700
movq %rax, %r12
movabsq $0x200000002, %rax      # imm = 0x200000002
leaq 0x8(%rsp), %rdx
movq %rax, (%rdx)
movl (%r15), %eax
movl 0x4(%r15), %ecx
addl $-0x4, %eax
addl $-0x4, %ecx
shlq $0x20, %rcx
orq %rcx, %rax
leaq 0x20(%rsp), %rcx
movq %rax, (%rcx)
movq %r12, %rdi
movq %r14, %rsi
callq 0x569e0
movq %r12, 0x630(%rbx)
movq (%rbx), %rax
movq %rbx, %rdi
movq %r12, %rsi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xe1c1b(%rip), %rsi     # 0x161470
xorl %edx, %edx
movq %rbx, %rcx
callq 0x7fd54
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r14
movl $0x5c8, %esi            # imm = 0x5C8
movq %r12, %rdi
callq 0x564c0
jmp 0x7f88f
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x5a588
jmp 0x7f897
movq %rax, %r14
movq %rbx, %rdi
callq 0x5a240
movq %r14, %rdi
callq 0x58260
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/list/combobox.cpp
// Function: smooth::GUI::ComboBox::OnSelectEntry(smooth::GUI::ListEntry*)
S::Void S::GUI::ComboBox::OnSelectEntry(ListEntry *entry)
{
	if (listBox != NIL) CloseListBox();

	if (prevSelectedEntry != entry->GetHandle())
	{
		Paint(SP_PAINT);

		if (flags & CB_HOTSPOTONLY) entry->Deselect();

		prevSelectedEntry = entry->GetHandle();
	}
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
cmpq $0x0, 0x6d0(%rdi)
je 0x80530
movq %rbx, %rdi
callq 0x5a570
movl 0x6e0(%rbx), %eax
cmpl 0x8(%r14), %eax
je 0x8055f
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
testb $0x1, 0x30(%rbx)
je 0x80555
movq %r14, %rdi
callq 0x57650
movl 0x8(%r14), %eax
movl %eax, 0x6e0(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/list/combobox.cpp
// Function: smooth::GUI::ComboBox::CloseListBox()
S::Void S::GUI::ComboBox::CloseListBox()
{
	if (listBox == NIL) return;

	Window	*window = container->GetContainerWindow();

	toolWindow->onLoseFocus.Disconnect(&ComboBox::CloseListBox, this);
	toolWindow->Close();

	window->onChangePosition.Disconnect(&ComboBox::CloseListBox, this);
	window->onChangeSize.Disconnect(&ComboBox::CloseListBox, this);

	listBox->RemoveAllEntries();

	for (Int i = 0; i < Length(); i++)
	{
		ListEntry	*entry = GetNthEntry(i);

		entry->SetTooltipText(NIL);

		entry->Hide();
		entry->Deactivate();

		entry->SetRegisteredFlag(True);
		entry->SetContainer(this);
	}

	toolWindow->Remove(listBox);

	Remove(toolWindow);

	DeleteObject(listBox);
	DeleteObject(toolWindow);

	listBox	   = NIL;
	toolWindow = NIL;

	listBoxClosed = S::System::System::Clock();
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x20, %rsp
cmpq $0x0, 0x6d0(%rdi)
je 0x806ca
movq %rdi, %rbx
movq 0x190(%rdi), %rdi
callq 0x56a50
movq %rax, %r15
leaq 0x6c8(%rbx), %r13
movl $0x518, %edi            # imm = 0x518
addq 0x6c8(%rbx), %rdi
movq 0xe1901(%rip), %r12     # 0x161eb0
xorl %r14d, %r14d
movq %r12, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x81068
movq 0x6c8(%rbx), %rdi
callq 0x59700
leaq 0x278(%r15), %rdi
movq %r12, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x810d2
addq $0x298, %r15            # imm = 0x298
movq %r15, %rdi
movq %r12, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8113c
movq 0x6d0(%rbx), %rdi
movq (%rdi), %rax
callq *0x168(%rax)
leaq 0x8(%rsp), %r15
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
cmpl %eax, %r14d
jge 0x8067a
movq (%rbx), %rax
movq %rbx, %rdi
movl %r14d, %esi
callq *0x180(%rax)
movq %rax, %r12
movq %r15, %rdi
xorl %esi, %esi
callq 0x5a180
movq (%r12), %rax
movq %r12, %rdi
movq %r15, %rsi
callq *0xb0(%rax)
movq %r15, %rdi
callq 0x5a588
movq (%r12), %rax
movq %r12, %rdi
callq *0x60(%rax)
movq (%r12), %rax
movq %r12, %rdi
callq *0x70(%rax)
movb $0x1, 0xca(%r12)
movq %rbx, 0x190(%r12)
incl %r14d
jmp 0x8060b
movq 0x6c8(%rbx), %rdi
movq 0x6d0(%rbx), %rsi
movq (%rdi), %rax
callq *0x38(%rax)
movq 0x6c8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x38(%rax)
movq 0x6d0(%rbx), %rdi
callq 0x5a010
movq 0x6c8(%rbx), %rdi
callq 0x5a010
xorps %xmm0, %xmm0
movups %xmm0, (%r13)
callq 0x582b0
movq %rax, 0x6d8(%rbx)
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x5a588
movq %rbx, %rdi
callq 0x58260
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/list/list.cpp
// Function: smooth::GUI::List::AddEntry(smooth::String const&, bool)
S::GUI::ListEntry *S::GUI::List::AddEntry(const String &text, Bool marked)
{
	ListEntry	*newEntry = new ListEntry(text);

	newEntry->SetMark(marked);

	if (Add(newEntry) == Success())
	{
		createdEntry.Set(newEntry->GetHandle(), True);

		return newEntry;
	}

	DeleteObject(newEntry);

	return NIL;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %r15
movq %rdi, %r14
movl $0x630, %edi            # imm = 0x630
callq 0x56700
movq %rax, %rbx
movq %rax, %rdi
movq %r15, %rsi
callq 0x58db0
movzbl %bpl, %esi
movq %rbx, %rdi
callq 0x5a3e0
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
callq *0x30(%rax)
testl %eax, %eax
je 0x81423
movq %rbx, %rdi
callq 0x5a010
xorl %ebx, %ebx
jmp 0x8143c
addq $0x5b8, %r14            # imm = 0x5B8
movl 0x8(%rbx), %esi
leaq 0x651b5(%rip), %rdx     # 0xe65e9
movq %r14, %rdi
callq 0x816fc
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movl $0x630, %esi            # imm = 0x630
movq %rbx, %rdi
callq 0x564c0
movq %r14, %rdi
callq 0x58260
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/list/list.cpp
// Function: smooth::GUI::List::AddSeparator()
S::GUI::ListEntry *S::GUI::List::AddSeparator()
{
	ListEntrySeparator	*newEntry = new ListEntrySeparator();

	if (Add(newEntry) == Success())
	{
		createdEntry.Set(newEntry->GetHandle(), True);

		return newEntry;
	}

	DeleteObject(newEntry);

	return NIL;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
movl $0x630, %edi            # imm = 0x630
callq 0x56700
movq %rax, %rbx
movq %rax, %rdi
callq 0x57d70
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
callq *0x30(%rax)
testl %eax, %eax
je 0x8149a
movq %rbx, %rdi
callq 0x5a010
xorl %ebx, %ebx
jmp 0x814b3
addq $0x5b8, %r14            # imm = 0x5B8
movl 0x8(%rbx), %esi
leaq 0x6513e(%rip), %rdx     # 0xe65e9
movq %r14, %rdi
callq 0x816fc
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %r14
movl $0x630, %esi            # imm = 0x630
movq %rbx, %rdi
callq 0x564c0
movq %r14, %rdi
callq 0x58260
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/list/list.cpp
// Function: smooth::GUI::List::Add(smooth::GUI::Widget*)
S::Int S::GUI::List::Add(Widget *widget)
{
	if (widget == NIL) return Error();

	if (!widget->IsRegistered())
	{
		if (widget->GetObjectType() == ListEntry::classID) widget->Hide();

		return Container::Add(widget);
	}

	return Error();
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
testq %rsi, %rsi
je 0x814f5
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x88(%rax)
testb %al, %al
je 0x81500
pushq $-0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
leaq 0x20(%rbx), %rdi
movq 0xe00e5(%rip), %rax     # 0x1615f0
movswl (%rax), %esi
callq 0x58720
testb %al, %al
je 0x81520
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x57f00
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/list/list.cpp
// Function: smooth::GUI::List::SelectEntry(smooth::GUI::ListEntry const*)
S::Int S::GUI::List::SelectEntry(const ListEntry *entryToSelect)
{
	foreach (Entry *entry, elementOrder)
	{
		if (entry != entryToSelect) continue;

		((ListEntry *) entry)->Select();

		return Success();
	}

	return Error();
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rsi, %r14
movq %rdi, %r15
leaq 0x610(%rdi), %r12
xorl %r13d, %r13d
pushq $-0x1
popq %rbx
leal -0x1(%r13), %eax
movl 0x618(%r15), %ecx
decl %ecx
cmpl %ecx, %eax
jge 0x8157c
movq %r12, %rdi
movl %r13d, %esi
callq 0x6180a
movq (%rax), %rdi
incl %r13d
cmpq %r14, %rdi
jne 0x8154e
callq 0x59240
xorl %ebx, %ebx
movl %ebx, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/list/list.cpp
// Function: smooth::GUI::List::SelectNthEntry(int)
S::Int S::GUI::List::SelectNthEntry(Int n)
{
	if (n < 0 || n >= Length()) return Error();

	ListEntry	*entry = GetNthEntry(n);

	if (!entry->IsSelected()) entry->Select();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
pushq $-0x1
popq %rbx
testl %esi, %esi
js 0x8160c
movl %esi, %ebp
movq %rdi, %r14
movq (%rdi), %rax
callq *0x178(%rax)
cmpl %ebp, %eax
jle 0x8160c
movq (%r14), %rax
movq %r14, %rdi
movl %ebp, %esi
callq *0x180(%rax)
xorl %ebx, %ebx
cmpb $0x0, 0x5b9(%rax)
jne 0x8160c
movq %rax, %rdi
callq 0x59240
movl %ebx, %eax
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/list/list.cpp
// Function: smooth::GUI::List::GetSelectedEntryNumber() const
S::Int S::GUI::List::GetSelectedEntryNumber() const
{
	for (Int i = 0; i < elementOrder.Length(); i++)
	{
		ListEntry	*entry = (ListEntry *) elementOrder.GetNth(i);

		if (entry->IsSelected()) return i;
	}

	return -1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
leaq 0x610(%rdi), %r15
xorl %ebp, %ebp
pushq $-0x1
popq %rbx
cmpl 0x618(%r14), %ebp
jge 0x8164f
movq %r15, %rdi
movl %ebp, %esi
callq 0x5c1b6
movq (%rax), %rax
cmpb $0x0, 0x5b9(%rax)
jne 0x8164d
incl %ebp
jmp 0x8162a
movl %ebp, %ebx
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/list/list.cpp
// Function: smooth::GUI::List::GetEntryNumber(smooth::String const&) const
S::Int S::GUI::List::GetEntryNumber(const String &entryText) const
{
	for (Int i = 0; i < elementOrder.Length(); i++)
	{
		ListEntry	*entry = (ListEntry *) elementOrder.GetNth(i);

		if (entry->GetText() == entryText) return i;
	}

	return -1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %r14
movq %rdi, %r15
leaq 0x610(%rdi), %r12
xorl %ebp, %ebp
pushq $-0x1
popq %rbx
cmpl 0x618(%r15), %ebp
jge 0x816aa
movq %r12, %rdi
movl %ebp, %esi
callq 0x5c1b6
movq (%rax), %rdi
movq (%rdi), %rax
callq *0xa8(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x56960
testb %al, %al
jne 0x816a8
incl %ebp
jmp 0x81676
movl %ebp, %ebx
movl %ebx, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/multi/list/../../../../../include/smooth/templates/array/arraybackend.h
// Function: smooth::ArrayBackend<bool>::SetNth(int, bool const&)
Bool SetNth(Int n, const s &value)
			{
				WriteLock	 lock(*this);

				if (nOfEntries > n && n >= 0)
				{
					entries[n]->value = value;

					lastAccessedEntry = n;

					return True;
				}

				return False;
			}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %r15
movl %esi, %ebx
movq %rdi, %r14
movq %rdi, (%rsp)
callq 0x56300
cmpl %ebx, 0x8(%r14)
setg %al
testl %ebx, %ebx
setns %bpl
andb %al, %bpl
cmpb $0x1, %bpl
jne 0x8179e
movb (%r15), %al
movq 0x48(%r14), %rcx
movq (%rcx), %rcx
movl %ebx, %edx
movq (%rcx,%rdx,8), %rcx
movb %al, (%rcx)
movl %ebx, 0x14(%r14)
movq %rsp, %rdi
callq 0x57400
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop