LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O3/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)
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
testb %al, %al
je 0x7fb49
movq (%r15), %rax
movq %r15, %rdi
callq *0x98(%rax)
xorl %r12d, %r12d
testb %al, %al
je 0x7fb49
movq (%r15), %rax
movq %r15, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x7fb49
cmpl $0x780a, %r14d          # imm = 0x780A
jne 0x7fb32
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 0x58220
movl %r12d, %eax
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/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 0x559e0
movq %rax, %rbx
movb 0x5c8(%rax), %al
cmpb $0x1, %al
jne 0x7fc3e
movl (%r14), %ecx
cmpl 0x5bc(%r15), %ecx
jne 0x7fbb0
movl 0x5c0(%r15), %ecx
cmpl %ecx, 0x4(%r14)
je 0x7fc3e
movq %rbx, %rdi
callq 0x576e0
movq %rax, 0x8(%rsp)
movq %rdx, %rbp
callq 0x57e90
movq %rax, %r12
movq %rdx, %r13
movq %rbx, %rdi
callq 0x573f0
movl (%r14), %eax
subl 0x8(%rsp), %ebp
movl %ebp, %ecx
shrl $0x1f, %ecx
addl %ebp, %ecx
sarl %ecx
subl %ecx, %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 0x7fccb
movq (%r15), %rax
movq %r15, %rdi
callq *0x160(%rax)
testb %al, %al
je 0x7fc65
movl 0xb0(%rbx), %ebp
subl 0x5bc(%r15), %ebp
jmp 0x7fc6c
movl 0x5bc(%r15), %ebp
movl 0x5c0(%r15), %r12d
movq (%r15), %rax
movq %r15, %rdi
callq *0x160(%rax)
testb %al, %al
je 0x7fc8e
movl 0xb0(%rbx), %eax
subl (%r14), %eax
jmp 0x7fc91
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
// File: /workspace/github_c_makefile_star2_O3/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 0x80048
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 0x701aa
popq %rbx
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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
movl $0x3, %esi
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 0x701aa
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/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)
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testb %al, %al
je 0x8020d
movq (%r14), %rax
movq %r14, %rdi
callq *0x90(%rax)
xorl %ebx, %ebx
testb %al, %al
je 0x8020d
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 0x8020d
leaq 0x7622f(%rip), %rax     # 0xf63e8
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq %rsp, %rsi
movq %r12, %rdi
xorl %edx, %edx
jmp 0x80208
movq (%r14), %rax
movq %r14, %rdi
callq *0x140(%rax)
movq 0xeb641(%rip), %rcx     # 0x16b820
movl (%rcx), %ecx
leaq 0x10(%rsp), %r8
movq $0x0, (%r8)
movq %rsp, %rsi
movq %r12, %rdi
movq %rax, %rdx
callq 0x57930
jmp 0x8020d
movq %rsp, %rsi
movq %r12, %rdi
movl $0x1, %edx
callq 0x57890
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/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 0x803c0
callq 0x571b0
movq %r14, %rdi
callq 0x571b0
jmp 0x803cd
callq 0x57810
movq %r14, %rdi
callq 0x57810
movzbl %bpl, %esi
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x58ea0
nop
// File: /workspace/github_c_makefile_star2_O3/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
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testq %rsi, %rsi
je 0x80497
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x88(%rax)
testb %al, %al
jne 0x80497
movq %rbx, %rdi
movq %r14, %rsi
callq 0x57c50
testl %eax, %eax
jne 0x80497
leaq 0x20(%r14), %rdi
movq 0xeaf98(%rip), %rax     # 0x16b3c0
movswl (%rax), %esi
callq 0x57520
testb %al, %al
je 0x80497
leaq 0x610(%rbx), %rdi
movl 0x8(%r14), %edx
leaq 0x8(%rsp), %rsi
movq %r14, (%rsi)
callq 0x5af42
leaq 0x5b8(%rbx), %rdi
movl 0x8(%r14), %edx
leaq 0x75fbd(%rip), %rsi     # 0xf641b
callq 0x809d0
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x1, %esi
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 0x701aa
movl %ebp, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testq %rsi, %rsi
je 0x8054f
movq %rsi, %r14
movq %rdi, %rbx
callq 0x56df0
testl %eax, %eax
jne 0x8054f
leaq 0x20(%r14), %rdi
movq 0xeaeeb(%rip), %rax     # 0x16b3c0
movswl (%rax), %esi
callq 0x57520
testb %al, %al
je 0x8054f
movl 0x8(%r14), %ebp
leaq 0x5b8(%rbx), %r15
movq %r15, %rdi
movl %ebp, %esi
callq 0x80b00
cmpb $0x1, (%rax)
jne 0x80503
movq %r14, %rdi
callq 0x58cc0
leaq 0x610(%rbx), %rdi
movl %ebp, %esi
callq 0x58bb0
movq %r15, %rdi
movl %ebp, %esi
callq 0x58bb0
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x1, %esi
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 0x701aa
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/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 0x805f7
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 0x55160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
jmp 0x805f7
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 0x805d0
testb %bpl, %bpl
je 0x8061d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq %r14, %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/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 0x80690
movl %edx, %ebp
movl %esi, %r14d
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x178(%rax)
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
cmpl %r14d, %eax
jle 0x80690
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
movl %ebp, %ecx
orl %r14d, %ecx
js 0x80690
cmpl %ebp, %eax
jle 0x80690
leaq 0x610(%rbx), %rdi
movl %r14d, %esi
movl %ebp, %edx
callq 0x5abfe
addq $0x668, %rbx            # imm = 0x668
movq %rbx, %rdi
callq 0x701aa
xorl %r15d, %r15d
movl %r15d, %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/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 0x56da0
movq 0xeb234(%rip), %rax     # 0x16be68
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x6d8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58e20
movq 0xeac65(%rip), %rax     # 0x16b8b8
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movq $0x0, 0x6c8(%rbx)
movl $0x0, 0x6d0(%rbx)
movq (%rbx), %rax
movq 0xea9f7(%rip), %rsi     # 0x16b670
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 0x80cc4
leaq 0xa8(%rbx), %rsi
movl 0xb4(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl $0x78, (%rdx)
movl %eax, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
cmpl $0x0, 0xb4(%rbx)
jne 0x80cf4
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl %eax, (%rdx)
movl $0x50, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
leaq 0x298(%rbx), %rdi
movq 0xeaa0e(%rip), %rsi     # 0x16b710
xorl %edx, %edx
movq %rbx, %rcx
callq 0x81486
movl $0x668, %edi            # imm = 0x668
callq 0x556b0
movq %rax, %r15
leaq 0x6d0(%rbx), %r8
xorl %eax, %eax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdx
movq %rax, (%rdx)
movl $0x1, (%rsp)
movq %r15, %rdi
movl $0x1, %ecx
xorl %r9d, %r9d
callq 0x56880
movq %r15, 0x6c8(%rbx)
movq (%r15), %rax
movq %r15, %rdi
movl $0x18, %esi
callq *0x120(%rax)
movq 0x6c8(%rbx), %rdi
movl $0xf, 0x5e0(%rdi)
addq $0x618, %rdi            # imm = 0x618
movq 0xeaa50(%rip), %rsi     # 0x16b7d0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x81546
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 0x55480
jmp 0x80dcd
movq %rax, %r12
jmp 0x80dd5
movq %rax, %r12
movq %r14, %rdi
callq 0x59200
movq %rbx, %rdi
callq 0x58c00
movq %r12, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/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 %r12
pushq %rbx
cmpl $0x0, 0x40(%rdi)
jle 0x81430
movq %rdi, %rbx
leaq 0x38(%rdi), %r14
movq 0xea206(%rip), %rax     # 0x16b5f0
xorl %r15d, %r15d
movswl (%rax), %r12d
xorl %ebp, %ebp
movq %r14, %rdi
movl %r15d, %esi
callq 0x5b074
movq (%rax), %rdi
addq $0x20, %rdi
movl %r12d, %esi
callq 0x57520
testb %al, %al
je 0x81425
movq %r14, %rdi
movl %r15d, %esi
callq 0x5b074
movq (%rax), %rax
addl 0xb0(%rax), %ebp
incl %r15d
cmpl 0x40(%rbx), %r15d
jl 0x813f3
jmp 0x81432
xorl %ebp, %ebp
movl %ebp, %eax
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/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 0x58e20
movq %rbx, %rdi
movq %r12, %rsi
callq 0x55290
leaq 0x8(%rsp), %rdi
callq 0x59200
movq 0xea6a9(%rip), %rax     # 0x16be18
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xe9e9b(%rip), %rax     # 0x16b618
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xa8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x57080
movl $0x5c8, %edi            # imm = 0x5C8
callq 0x556b0
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 0x55980
movq %r12, 0x630(%rbx)
movq (%rbx), %rax
movq %rbx, %rdi
movq %r12, %rsi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xe9c73(%rip), %rsi     # 0x16b470
xorl %edx, %edx
movq %rbx, %rcx
callq 0x81d06
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r14
movl $0x5c8, %esi            # imm = 0x5C8
movq %r12, %rdi
callq 0x55480
jmp 0x81837
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x59200
jmp 0x8183f
movq %rax, %r14
movq %rbx, %rdi
callq 0x58ed0
movq %r14, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/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 0x825b8
movq %rbx, %rdi
callq 0x591e8
movl 0x6e0(%rbx), %eax
cmpl 0x8(%r14), %eax
je 0x825e7
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
testb $0x1, 0x30(%rbx)
je 0x825dd
movq %r14, %rdi
callq 0x56540
movl 0x8(%r14), %eax
movl %eax, 0x6e0(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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 %r12
pushq %rbx
subq $0x18, %rsp
cmpq $0x0, 0x6d0(%rdi)
je 0x8275b
movq %rdi, %rbx
movq 0x190(%rdi), %rdi
callq 0x559e0
movq %rax, %r15
movl $0x518, %edi            # imm = 0x518
addq 0x6c8(%rbx), %rdi
movq 0xe9882(%rip), %r12     # 0x16beb0
xorl %r14d, %r14d
movq %r12, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x83184
movq 0x6c8(%rbx), %rdi
callq 0x58420
leaq 0x278(%r15), %rdi
movq %r12, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x831f0
addq $0x298, %r15            # imm = 0x298
movq %r15, %rdi
movq %r12, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8325c
movq 0x6d0(%rbx), %rdi
movq (%rdi), %rax
callq *0x168(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
testl %eax, %eax
jle 0x82705
movq %rsp, %r15
movq (%rbx), %rax
movq %rbx, %rdi
movl %r14d, %esi
callq *0x180(%rax)
movq %rax, %r12
movq %r15, %rdi
xorl %esi, %esi
callq 0x58e20
movq (%r12), %rax
movq %r12, %rdi
movq %r15, %rsi
callq *0xb0(%rax)
movq %r15, %rdi
callq 0x59200
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
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
cmpl %eax, %r14d
jl 0x82698
leaq 0x6c8(%rbx), %r14
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 0x58cc0
movq 0x6c8(%rbx), %rdi
callq 0x58cc0
xorps %xmm0, %xmm0
movups %xmm0, (%r14)
callq 0x570e0
movq %rax, 0x6d8(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x59200
movq %rbx, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/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 0x556b0
movq %rax, %rbx
movq %rax, %rdi
movq %r15, %rsi
callq 0x57b40
movzbl %bpl, %esi
movq %rbx, %rdi
callq 0x59060
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
callq *0x30(%rax)
testl %eax, %eax
je 0x835bf
movq %rbx, %rdi
callq 0x58cc0
xorl %ebx, %ebx
jmp 0x835d8
addq $0x5b8, %r14            # imm = 0x5B8
movl 0x8(%rbx), %esi
leaq 0x730d9(%rip), %rdx     # 0xf66a9
movq %r14, %rdi
callq 0x838c2
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 0x55480
movq %r14, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/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 0x556b0
movq %rax, %rbx
movq %rax, %rdi
callq 0x56c00
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
callq *0x30(%rax)
testl %eax, %eax
je 0x83636
movq %rbx, %rdi
callq 0x58cc0
xorl %ebx, %ebx
jmp 0x8364f
addq $0x5b8, %r14            # imm = 0x5B8
movl 0x8(%rbx), %esi
leaq 0x73062(%rip), %rdx     # 0xf66a9
movq %r14, %rdi
callq 0x838c2
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %r14
movl $0x630, %esi            # imm = 0x630
movq %rbx, %rdi
callq 0x55480
movq %r14, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/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 0x83691
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x88(%rax)
testb %al, %al
je 0x8369e
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
addq $0x8, %rsp
popq %rbx
popq %r14
retq
leaq 0x20(%rbx), %rdi
movq 0xe7f47(%rip), %rax     # 0x16b5f0
movswl (%rax), %esi
callq 0x57520
testb %al, %al
je 0x836be
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x56d70
// File: /workspace/github_c_makefile_star2_O3/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:
cmpl $0x0, 0x618(%rdi)
jle 0x8371a
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x610(%rdi), %r15
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
incl %ebp
movq %r15, %rdi
movl %ebp, %esi
callq 0x60a9a
movq (%rax), %rdi
cmpq %rbx, %rdi
je 0x83720
movl 0x618(%r14), %eax
decl %eax
cmpl %eax, %ebp
jl 0x836f2
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x83727
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
retq
callq 0x57fb0
xorl %eax, %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/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
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testl %esi, %esi
js 0x837bc
movl %esi, %ebp
movq %rdi, %r14
movq (%rdi), %rax
callq *0x178(%rax)
cmpl %ebp, %eax
jle 0x837bc
movq (%r14), %rax
movq %r14, %rdi
movl %ebp, %esi
callq *0x180(%rax)
xorl %ebx, %ebx
cmpb $0x0, 0x5b9(%rax)
jne 0x837bc
movq %rax, %rdi
callq 0x57fb0
movl %ebx, %eax
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
cmpl $0x0, 0x618(%rdi)
jle 0x8380a
movq %rdi, %r14
leaq 0x610(%rdi), %r15
xorl %ebp, %ebp
movq %r15, %rdi
movl %ebp, %esi
callq 0x5b074
movq (%rax), %rax
cmpb $0x0, 0x5b9(%rax)
jne 0x83808
incl %ebp
cmpl 0x618(%r14), %ebp
jl 0x837e5
jmp 0x8380a
movl %ebp, %ebx
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/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
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
cmpl $0x0, 0x618(%rdi)
jle 0x83871
movq %rsi, %r14
movq %rdi, %r15
leaq 0x610(%rdi), %r12
xorl %ebp, %ebp
movq %r12, %rdi
movl %ebp, %esi
callq 0x5b074
movq (%rax), %rdi
movq (%rdi), %rax
callq *0xa8(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x55900
testb %al, %al
jne 0x8386f
incl %ebp
cmpl 0x618(%r15), %ebp
jl 0x8383d
jmp 0x83871
movl %ebp, %ebx
movl %ebx, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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)
cmpb $0x1, 0x30(%rdi)
jne 0x8394c
movq 0x38(%r14), %rdi
callq 0x551d0
cmpl %ebx, 0x8(%r14)
setg %al
testl %ebx, %ebx
setns %bpl
andb %al, %bpl
cmpb $0x1, %bpl
jne 0x83978
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 0x56310
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listbox.cpp
// Function: smooth::GUI::ListBox::GetEntriesHeight() const
S::Int S::GUI::ListBox::GetEntriesHeight() const
{
	Int	 entriesHeight	= 0;

	for (Int i = 0; i < Length(); i++)
	{
		entriesHeight += GetNthEntry(i)->GetHeight();
	}

	return entriesHeight;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x178(%rax)
testl %eax, %eax
jle 0x8461e
xorl %r14d, %r14d
xorl %ebp, %ebp
movq (%rbx), %rax
movq %rbx, %rdi
movl %r14d, %esi
callq *0x180(%rax)
addl 0xb4(%rax), %ebp
incl %r14d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
cmpl %eax, %r14d
jl 0x845f3
jmp 0x84620
xorl %ebp, %ebp
movl %ebp, %eax
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listboxheader.cpp
// Function: smooth::GUI::ListBoxHeader::OnMouseDragStart(smooth::GUI::Point const&)
S::Void S::GUI::ListBoxHeader::OnMouseDragStart(const Point &mousePos)
{
	if (moveTab == -1) return;

	startMousePos = mousePos;

	moveTabStartWidth = tabWidths.GetNth(moveTab);
	lastTabStartWidth = tabWidths.GetNth(tabWidths.Length() - 1);

	draggingTab = True;
}

// Assembly:
movq %rsi, %rax
movl 0x5b8(%rdi), %esi
cmpl $-0x1, %esi
je 0x84f7a
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rax), %rax
movq %rax, 0x5c0(%rdi)
leaq 0x630(%rdi), %r14
movq %r14, %rdi
callq 0x8661e
movl (%rax), %eax
movl %eax, 0x5c8(%rbx)
movl 0x638(%rbx), %esi
decl %esi
movq %r14, %rdi
callq 0x8661e
movl (%rax), %eax
movl %eax, 0x5cc(%rbx)
movb $0x1, 0x5bc(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listboxheader.cpp
// Function: smooth::GUI::ListBoxHeader::OnMouseDrag(smooth::GUI::Point const&)
S::Void S::GUI::ListBoxHeader::OnMouseDrag(const Point &mousePos)
{
	if (!draggingTab) return;

	Int	 bias = Math::Round((startMousePos.x - mousePos.x) * 96.0 / Surface().GetSurfaceDPI());

	if (bias != 0)
	{
		tabWidths.SetNth(moveTab, (Int) Math::Max(Math::Abs(moveTabStartWidth) - bias, 1) * Math::Sign(moveTabStartWidth));
		tabWidths.SetNth(tabWidths.Length() - 1, (Int) Math::Max(Math::Abs(lastTabStartWidth) + bias, 1) * Math::Sign(lastTabStartWidth));

		OnChangeSize(GetSize());

		container->Paint(SP_PAINT);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
cmpb $0x1, 0x5bc(%rdi)
jne 0x850a3
movq %rdi, %rbx
movl 0x5c0(%rdi), %ebp
movl (%rsi), %r15d
leaq 0x8(%rsp), %rdx
movq $0x0, (%rdx)
movq %rsp, %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x57150
movq %r14, %rdi
callq 0x58930
subl %r15d, %ebp
cvtsi2sd %ebp, %xmm0
mulsd 0x6e6e7(%rip), %xmm0    # 0xf36b8
cwtl
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x6e802(%rip), %rcx     # 0xf37f0
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %r12
movq %rsp, %rdi
callq 0x57b20
testl %r12d, %r12d
je 0x850a3
leaq 0x630(%rbx), %r14
movl 0x5c8(%rbx), %eax
movl %eax, %ecx
sarl $0x1f, %ecx
movl $0x1, %ebp
orl %ebp, %ecx
testl %eax, %eax
cmovel %eax, %ecx
imull %ecx, %eax
subl %r12d, %eax
cmpl $0x2, %eax
cmovll %ebp, %eax
movl 0x5b8(%rbx), %esi
imull %ecx, %eax
movq %rsp, %r15
movl %eax, (%r15)
movq %r14, %rdi
movq %r15, %rdx
callq 0x8667a
movl 0x638(%rbx), %esi
decl %esi
movl 0x5cc(%rbx), %eax
movl %eax, %ecx
sarl $0x1f, %ecx
orl $0x1, %ecx
testl %eax, %eax
cmovel %eax, %ecx
imull %ecx, %eax
addl %r12d, %eax
cmpl $0x2, %eax
cmovll %ebp, %eax
imull %ecx, %eax
movl %eax, (%r15)
movq %rsp, %rdx
movq %r14, %rdi
callq 0x8667a
leaq 0xb0(%rbx), %rsi
movq %rbx, %rdi
callq 0x591c8
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
xorl %esi, %esi
callq *0x78(%rax)
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x57b20
movq %rbx, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listboxheader.cpp
// Function: smooth::GUI::ListBoxHeader::OnLeftButtonClick(smooth::GUI::Point const&)
S::Void S::GUI::ListBoxHeader::OnLeftButtonClick(const Point &mousePos)
{
	if (draggingTab) return;

	Surface	*surface = GetDrawSurface();
	Point	 realPos = GetRealPosition();

	for (Int n = 0; n < GetNOfTabs(); n++)
	{
		if (mousePos.x - realPos.x >= GetNthTabOffset(n)		      * surface->GetSurfaceDPI() / 96.0 &&
		    mousePos.x - realPos.x < (GetNthTabOffset(n) + GetNthTabWidth(n)) * surface->GetSurfaceDPI() / 96.0)
		{
			onClickTab.Emit(n);

			break;
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
cmpb $0x0, 0x5bc(%rdi)
jne 0x851f1
movq %rsi, %r14
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x40(%rax)
movq %rax, %r15
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x48(%rax)
cmpl $0x0, 0x638(%rbx)
jle 0x851f1
movq %rax, %r12
leaq 0x630(%rbx), %rax
movq %rax, 0x8(%rsp)
xorl %ebp, %ebp
movq %r12, 0x10(%rsp)
movl (%r14), %eax
subl %r12d, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, (%rsp)
movq %rbx, %rdi
movl %ebp, %esi
callq 0x57a40
movl %eax, %r13d
movq %r15, %rdi
callq 0x58930
movsd 0x6e567(%rip), %xmm1    # 0xf36b8
cwtl
imull %r13d, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd %xmm1, %xmm0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jb 0x851e3
movl (%r14), %eax
subl %r12d, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, (%rsp)
movq %rbx, %rdi
movl %ebp, %esi
callq 0x57a40
movl %eax, %r13d
movq 0x8(%rsp), %rdi
movl %ebp, %esi
callq 0x8661e
movl (%rax), %eax
movq %r14, %r12
movl %eax, %r14d
sarl $0x1f, %r14d
orl $0x1, %r14d
testl %eax, %eax
cmovel %eax, %r14d
imull %eax, %r14d
addl %r13d, %r14d
movq %r15, %rdi
callq 0x58930
movsd 0x6e4f4(%rip), %xmm1    # 0xf36b8
cwtl
imull %r14d, %eax
movq %r12, %r14
movq 0x10(%rsp), %r12
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd %xmm1, %xmm0
ucomisd (%rsp), %xmm0
ja 0x85200
incl %ebp
cmpl 0x638(%rbx), %ebp
jl 0x85122
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
addq $0x738, %rbx            # imm = 0x738
movq %rbx, %rdi
movl %ebp, %esi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x72a62
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listboxheader.cpp
// Function: smooth::GUI::ListBoxHeader::OnChangeSize(smooth::GUI::Size const&)
S::Void S::GUI::ListBoxHeader::OnChangeSize(const Size &nSize)
{
	Int	 varSizeTabs	  = 0;
	Int	 sumFixedTabSizes = 0;

	for (Int i = 0; i < tabWidths.Length(); i++)
	{
		if (tabWidths.GetNth(i) <= 0)	varSizeTabs++;
		else				sumFixedTabSizes += tabWidths.GetNth(i);
	}

	if (varSizeTabs > 0)
	{
		for (Int i = 0; i < tabWidths.Length(); i++)
		{
			if (tabWidths.GetNth(i) <= 0) tabWidths.SetNth(i, -Math::Max(0, (GetWidth() - sumFixedTabSizes) / varSizeTabs));
		}
	}

	dragHotspot->SetSize(nSize);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, 0x10(%rsp)
movq %rdi, %r14
cmpl $0x0, 0x638(%rdi)
jle 0x852d7
leaq 0x630(%r14), %r15
xorl %ebp, %ebp
xorl %r13d, %r13d
xorl %ebx, %ebx
movq %r15, %rdi
movl %ebp, %esi
callq 0x8661e
cmpl $0x0, (%rax)
jle 0x8526f
movq %r15, %rdi
movl %ebp, %esi
callq 0x8661e
addl (%rax), %r13d
jmp 0x85271
incl %ebx
incl %ebp
movl 0x638(%r14), %eax
cmpl %eax, %ebp
jl 0x85251
testl %eax, %eax
setle %al
testl %ebx, %ebx
setle %cl
orb %al, %cl
jne 0x852d7
leaq 0xc(%rsp), %r12
xorl %ebp, %ebp
movq %r15, %rdi
movl %ebp, %esi
callq 0x8661e
cmpl $0x0, (%rax)
jg 0x852cc
movl 0xb0(%r14), %eax
subl %r13d, %eax
cltd
idivl %ebx
testl %eax, %eax
movl $0x0, %ecx
cmovlel %ecx, %eax
negl %eax
movl %eax, 0xc(%rsp)
movq %r15, %rdi
movl %ebp, %esi
movq %r12, %rdx
callq 0x8667a
incl %ebp
cmpl 0x638(%r14), %ebp
jl 0x85293
movq 0x5d0(%r14), %rdi
leaq 0xa8(%rdi), %rsi
movq (%rdi), %rax
movq 0x10(%rsp), %rdx
callq *0x150(%rax)
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/multi/list/listboxheader.cpp
// Function: smooth::GUI::ListBoxHeader::EnableLocking(bool)
S::Int S::GUI::ListBoxHeader::EnableLocking(Bool enable)
{
	if (enable)
	{
		tabNames.EnableLocking();
		tabWidths.EnableLocking();
		tabOrientations.EnableLocking();
		tabChecked.EnableLocking();
	}
	else
	{
		tabNames.DisableLocking();
		tabWidths.DisableLocking();
		tabOrientations.DisableLocking();
		tabChecked.DisableLocking();
	}

	return Widget::EnableLocking(enable);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %esi, %ebp
movq %rdi, %rbx
addq $0x5d8, %rdi            # imm = 0x5D8
leaq 0x630(%rbx), %r12
leaq 0x688(%rbx), %r15
leaq 0x6e0(%rbx), %r14
testl %esi, %esi
je 0x853e2
callq 0x571b0
movq %r12, %rdi
callq 0x571b0
movq %r15, %rdi
callq 0x571b0
movq %r14, %rdi
callq 0x571b0
jmp 0x853ff
callq 0x57810
movq %r12, %rdi
callq 0x57810
movq %r15, %rdi
callq 0x57810
movq %r14, %rdi
callq 0x57810
movzbl %bpl, %esi
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x58ea0
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listboxheader.cpp
// Function: smooth::GUI::ListBoxHeader::AddTab(smooth::String const&, int, int)
S::Int S::GUI::ListBoxHeader::AddTab(const String &iTabName, Int iTabWidth, Int iTabOrientation)
{
	tabNames.Add(iTabName);
	tabWidths.Add(iTabWidth);
	tabOrientations.Add(iTabOrientation);
	tabChecked.Add(False);

	OnChangeSize(GetSize());

	return Success();
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
leaq 0xc(%rsp), %r14
movl %edx, (%r14)
leaq 0x8(%rsp), %r15
movl %ecx, (%r15)
addq $0x5d8, %rdi            # imm = 0x5D8
callq 0x642ac
leaq 0x630(%rbx), %rdi
movq %r14, %rsi
callq 0x8641a
leaq 0x688(%rbx), %rdi
movq %r15, %rsi
callq 0x8641a
leaq 0x6e0(%rbx), %rdi
leaq 0x7130d(%rip), %rsi     # 0xf6775
callq 0x865b4
leaq 0xb0(%rbx), %rsi
movq %rbx, %rdi
callq 0x591c8
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listboxheader.cpp
// Function: smooth::GUI::ListBoxHeader::RemoveAllTabs()
S::Int S::GUI::ListBoxHeader::RemoveAllTabs()
{
	tabNames.RemoveAll();
	tabWidths.RemoveAll();
	tabOrientations.RemoveAll();
	tabChecked.RemoveAll();

	OnChangeSize(GetSize());

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
addq $0x5d8, %rdi            # imm = 0x5D8
callq 0x64126
leaq 0x630(%rbx), %rdi
callq 0x8603c
leaq 0x688(%rbx), %rdi
callq 0x8603c
leaq 0x6e0(%rbx), %rdi
callq 0x808aa
leaq 0xb0(%rbx), %rsi
movq %rbx, %rdi
callq 0x591c8
xorl %eax, %eax
popq %rbx
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listboxheader.cpp
// Function: smooth::GUI::ListBoxHeader::GetNthTabOffset(int) const
S::Int S::GUI::ListBoxHeader::GetNthTabOffset(Int n) const
{
	if (n >= tabWidths.Length()) return -1;

	Int	 offset = 0;

	for (Int i = 0; i < n; i++)
	{
		offset += (Int) Math::Abs(tabWidths.GetNth(i));
	}

	return offset;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
cmpl %esi, 0x638(%rdi)
jle 0x8552c
movl %esi, %ebx
testl %esi, %esi
jle 0x8552a
movq %rdi, %r14
addq $0x630, %r14            # imm = 0x630
xorl %r15d, %r15d
xorl %ebp, %ebp
movq %r14, %rdi
movl %r15d, %esi
callq 0x8661e
movl (%rax), %eax
movl %eax, %ecx
sarl $0x1f, %ecx
orl $0x1, %ecx
testl %eax, %eax
cmovel %eax, %ecx
imull %eax, %ecx
addl %ecx, %ebp
incl %r15d
cmpl %r15d, %ebx
jne 0x85501
jmp 0x8552c
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listentry.cpp
// Function: smooth::GUI::ListEntry::InitDrag()
S::Void S::GUI::ListEntry::InitDrag()
{
	if (container->GetObjectType() == ListBox::classID)
	{
		Point	 mousePos  = container->GetContainerWindow()->GetMousePosition();
		Point	 entryPos  = GetRealPosition();
		Size	 entrySize = GetRealSize();

		if	(mousePos.y <  entryPos.y		) ((ListBox *) container)->DragSelectedEntry(True);
		else if (mousePos.y >= entryPos.y + entrySize.cy) ((ListBox *) container)->DragSelectedEntry(False);
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0x190(%rdi), %rdi
addq $0x20, %rdi
movq 0xe55d6(%rip), %rax     # 0x16bf68
movswl (%rax), %esi
callq 0x57520
testb %al, %al
je 0x869e3
movq 0x190(%rbx), %rdi
callq 0x559e0
movq %rax, %rdi
callq 0x56b50
movq %rax, %r14
shrq $0x20, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x48(%rax)
movq %rax, %r15
shrq $0x20, %r15
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
cmpl %r15d, %r14d
jl 0x869e9
shrq $0x20, %rax
addl %r15d, %eax
cmpl %r14d, %eax
jle 0x869e9
popq %rbx
popq %r14
popq %r15
retq
xorl %esi, %esi
cmpl %r15d, %r14d
setl %sil
movq 0x190(%rbx), %rdi
popq %rbx
popq %r14
popq %r15
jmp 0x587a0
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listentry.cpp
// Function: smooth::GUI::ListEntry::GetNthTabText(int) const
S::String S::GUI::ListEntry::GetNthTabText(Int i) const
{
	String	 tabText;
	Int	 tabCount = 0;

	for (Int p = 0; p < text.Length(); p++)
	{
		if (tabCount == i)
		{
			for (Int q = p; q < text.Length(); q++)
			{
				if (text[q] == tabDelimiter[0]) break;

				tabText[q - p] = text[q];
			}

			break;
		}

		if (text[p] == tabDelimiter[0]) tabCount++;
	}

	return tabText;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %r14
xorl %ebx, %ebx
movq %rdi, (%rsp)
xorl %esi, %esi
callq 0x58e20
addq $0xf0, %r14
movq 0xe41a1(%rip), %r12     # 0x16bbb0
xorl %r15d, %r15d
movq %r14, %rdi
callq 0x57180
cmpl %eax, %r15d
jge 0x87aa3
cmpl %ebp, %ebx
je 0x87a4e
movq %r14, %rdi
movl %r15d, %esi
callq 0x57fe0
movl %eax, %r13d
movq %r12, %rdi
xorl %esi, %esi
callq 0x57fe0
xorl %ecx, %ecx
cmpl %eax, %r13d
sete %cl
addl %ecx, %ebx
incl %r15d
jmp 0x87a12
xorl %r12d, %r12d
movq 0xe4158(%rip), %rbx     # 0x16bbb0
movq %r14, %rdi
callq 0x57180
leal (%r15,%r12), %ebp
cmpl %eax, %ebp
jge 0x87aa3
movq %r14, %rdi
movl %ebp, %esi
callq 0x57fe0
movl %eax, %r13d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x57fe0
cmpl %eax, %r13d
je 0x87aa3
movq %r14, %rdi
movl %ebp, %esi
callq 0x57fe0
movl %eax, %ebp
movq (%rsp), %rdi
movl %r12d, %esi
callq 0x58990
movl %ebp, (%rax)
incl %r12d
jmp 0x87a58
movq (%rsp), %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x87ab8
movq %rax, %r14
movq (%rsp), %rdi
callq 0x59200
movq %r14, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listentry.cpp
// Function: smooth::GUI::ListEntry::SetMark(bool)
S::Int S::GUI::ListEntry::SetMark(Bool nMarked)
{
	if (nMarked == marked) return Success();

	marked = nMarked;

	if (IsRegistered())
	{
		Paint(SP_PAINT);

		((List *) container)->onMarkEntry.Emit(this);
	}

	onToggleMark.Emit(marked);

	return Success();
}

// Assembly:
cmpb %sil, 0x5b8(%rdi)
je 0x87b23
pushq %rbx
movq %rdi, %rbx
movb %sil, 0x5b8(%rdi)
movq (%rdi), %rax
callq *0x88(%rax)
testb %al, %al
je 0x87b0c
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movl $0x6a8, %edi            # imm = 0x6A8
addq 0x190(%rbx), %rdi
movq %rbx, %rsi
callq 0x766f0
movzbl 0x5b8(%rbx), %esi
addq $0x610, %rbx            # imm = 0x610
movq %rbx, %rdi
callq 0x87dc6
popq %rbx
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listentry.cpp
// Function: smooth::GUI::ListEntry::Select()
S::Int S::GUI::ListEntry::Select()
{
	selected = True;

	internalOnSelectEntry.Emit(container->GetHandle(), GetHandle());

	Paint(SP_PAINT);

	((List *) container)->onSelectEntry.Emit(this);

	onSelect.Emit();

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movb $0x1, 0x5b9(%rdi)
movq 0x190(%rdi), %rax
movl 0x8(%rax), %esi
movl 0x8(%rdi), %edx
movq 0xe4163(%rip), %rdi     # 0x16bca8
callq 0x72b08
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movl $0x688, %edi            # imm = 0x688
addq 0x190(%rbx), %rdi
movq %rbx, %rsi
callq 0x766f0
addq $0x5d0, %rbx            # imm = 0x5D0
movq %rbx, %rdi
callq 0x701aa
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listentry.cpp
// Function: smooth::GUI::ListEntry::Deselect()
S::Int S::GUI::ListEntry::Deselect()
{
	selected = False;

	Paint(SP_PAINT);

	onDeselect.Emit();

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movb $0x0, 0x5b9(%rdi)
movq (%rdi), %rax
xorl %esi, %esi
callq *0x78(%rax)
addq $0x5f0, %rbx            # imm = 0x5F0
movq %rbx, %rdi
callq 0x701aa
xorl %eax, %eax
popq %rbx
retq