LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenuentry.cpp
// Function: smooth::GUI::PopupMenuEntry::PopupMenuEntry(smooth::String const&, smooth::GUI::Bitmap const&, smooth::GUI::PopupMenu*)
S::GUI::PopupMenuEntry::PopupMenuEntry(const String &iText, const Bitmap &iBitmap, PopupMenu *iPopup) : MenuEntry(iText, iBitmap, iPopup)
{
	type		= classID;
	orientation	= OR_UPPERLEFT;
	hotspot		= NIL;
	owner		= NIL;
	timer		= NIL;

	popupMenuClosed = 0;

	shortcutOffset	= 0;

	SetSize(GetMinimumSize());

	if (text != NIL)
	{
		hotspot	= new Hotspot(Point(), GetSize());

		hotspot->onMouseOver.Connect(&PopupMenuEntry::OnMouseOver, this);
		hotspot->onMouseOut.Connect(&PopupMenuEntry::OnMouseOut, this);
		hotspot->onLeftButtonDown.Connect(&PopupMenuEntry::OpenPopupMenu, this);
		hotspot->onLeftButtonUp.Connect(&PopupMenuEntry::OnClickEntry, this);

		Add(hotspot);

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

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
xorl %r14d, %r14d
movl %r14d, (%rsp)
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x568d0
movq 0xe0127(%rip), %rax     # 0x16caf8
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xdfca9(%rip), %rax     # 0x16c688
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movw $0x14, 0xd0(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x5f0(%rbx)
movups %xmm0, 0x600(%rbx)
movl %r14d, 0x610(%rbx)
movq %rbx, %rdi
callq 0x56ad0
leaq 0x8(%rsp), %rdx
movq %rax, (%rdx)
leaq 0xa8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
leaq 0xf0(%rbx), %rdi
xorl %esi, %esi
callq 0x56bd0
testb %al, %al
je 0x8cb01
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r14
leaq 0x8(%rsp), %rsi
movq $0x0, (%rsi)
leaq 0xb0(%rbx), %rdx
movq %rax, %rdi
callq 0x55a30
movq %r14, 0x5f8(%rbx)
addq $0x2b8, %r14            # imm = 0x2B8
movl $0x169, %esi            # imm = 0x169
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8dd40
movl $0x2d8, %edi            # imm = 0x2D8
addq 0x5f8(%rbx), %rdi
movl $0x171, %esi            # imm = 0x171
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8dd40
movl $0x2f8, %edi            # imm = 0x2F8
addq 0x5f8(%rbx), %rdi
movq 0xdfe8a(%rip), %rsi     # 0x16c940
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8ddfe
movl $0x318, %edi            # imm = 0x318
addq 0x5f8(%rbx), %rdi
movl $0x179, %esi            # imm = 0x179
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8ddfe
movq 0x5f8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movl $0x181, %esi            # imm = 0x181
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8debc
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r15
movl $0x5b8, %esi            # imm = 0x5B8
movq %r14, %rdi
callq 0x55480
jmp 0x8cb22
jmp 0x8cb1f
movq %rax, %r15
movq %rbx, %rdi
callq 0x560a0
movq %r15, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenuentry.cpp
// Function: smooth::GUI::PopupMenuEntry::~PopupMenuEntry()
S::GUI::PopupMenuEntry::~PopupMenuEntry()
{
	if (hotspot != NIL) DeleteObject(hotspot);

	if (timer != NIL)
	{
		DeleteObject(timer);

		timer = NIL;
	}
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0xdfc13(%rip), %rax     # 0x16caf8
addq $0x10, %rax
movq %rax, (%rdi)
movq 0x5f8(%rdi), %rdi
testq %rdi, %rdi
je 0x8cefd
callq 0x58cc0
movq 0x608(%rbx), %rdi
testq %rdi, %rdi
je 0x8cf19
callq 0x58cc0
movq $0x0, 0x608(%rbx)
movq %rbx, %rdi
popq %rbx
jmp 0x560a0
movq %rax, %rdi
callq 0x5aede
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenuentry.cpp
// Function: smooth::GUI::PopupMenuEntry::Hide()
S::Int S::GUI::PopupMenuEntry::Hide()
{
	if (popup != NIL)
	{
		if (popup->GetContainer() == this) ClosePopupMenu();
	}

	visible = False;

	if (hotspot != NIL) hotspot->Hide();

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0x5b8(%rdi), %rax
testq %rax, %rax
je 0x8da0b
cmpq %rbx, 0x190(%rax)
jne 0x8da0b
movq %rbx, %rdi
callq 0x59188
movb $0x0, 0xcb(%rbx)
movq 0x5f8(%rbx), %rdi
testq %rdi, %rdi
je 0x8da24
movq (%rdi), %rax
callq *0x60(%rax)
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenuentry.cpp
// Function: smooth::GUI::PopupMenuEntry::ClosePopupMenu()
S::Void S::GUI::PopupMenuEntry::ClosePopupMenu()
{
	if (popup == NIL || popup->GetContainer() != this) return;

	if (IsRegistered()) owner->SetFlags(owner->GetFlags() & ~MB_POPUPOPEN);

	popup->internalRequestClose.Disconnect(&PopupMenuEntry::ClosePopupMenu, this);

	Remove(popup);

	hotspot->Activate();

	if (IsRegistered())
	{
		if (popup->IsClosedByClick())
		{
			owner->SetClosedByClick(True);
			owner->internalRequestClose.Emit();
		}
		else
		{
			if (!container->GetContainerWindow()->IsMouseOn(Rect(Point(), container->GetRealSize()))) owner->internalRequestClose.Emit();
			else											  container->GetContainerWindow()->Raise();
		}
	}

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

// Assembly:
movq 0x5b8(%rdi), %rax
testq %rax, %rax
je 0x8db57
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
cmpq %rdi, 0x190(%rax)
jne 0x8db50
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
testb %al, %al
je 0x8da6a
movq 0x600(%rbx), %rax
andl $-0x3, 0x30(%rax)
movl $0x698, %edi            # imm = 0x698
addq 0x5b8(%rbx), %rdi
movq 0xdefdb(%rip), %rsi     # 0x16ca58
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8df7a
movq 0x5b8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x38(%rax)
movq 0x5f8(%rbx), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
testb %al, %al
je 0x8db44
movq 0x5b8(%rbx), %rax
cmpb $0x1, 0x690(%rax)
jne 0x8dadf
movq 0x600(%rbx), %rdi
movb $0x1, 0x690(%rdi)
addq $0x698, %rdi            # imm = 0x698
jmp 0x8db3f
movq 0x190(%rbx), %rdi
callq 0x559e0
movq %rax, %r14
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
callq *0x50(%rax)
leaq 0x8(%rsp), %rsi
movq $0x0, (%rsi)
movl %eax, 0x8(%rsi)
shrq $0x20, %rax
movl %eax, 0xc(%rsi)
movq %r14, %rdi
callq 0x578a0
testb %al, %al
je 0x8db33
movq 0x190(%rbx), %rdi
callq 0x559e0
movq %rax, %rdi
callq 0x58b50
jmp 0x8db44
movl $0x698, %edi            # imm = 0x698
addq 0x600(%rbx), %rdi
callq 0x70488
callq 0x570e0
movq %rax, 0x5f0(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenuentry.cpp
// Function: smooth::GUI::PopupMenuEntry::OnMouseOver()
S::Void S::GUI::PopupMenuEntry::OnMouseOver()
{
	if (popup == NIL || IsMouseOver()) return;

	if (Binary::IsFlagSet(owner->GetFlags(), MB_POPUPOPEN))
	{
		container->GetContainerWindow()->Raise();

		OpenPopupMenu();
	}
	else
	{
		if (timer != NIL) DeleteObject(timer);

		timer = new System::Timer();

		timer->onInterval.Connect(&PopupMenuEntry::OpenPopupMenu, this);
		timer->Start(500);
	}
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
cmpq $0x0, 0x5b8(%rdi)
je 0x8dbda
movq %rdi, %rbx
cmpb $0x0, 0xd4(%rdi)
je 0x8dbe2
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq 0x600(%rbx), %rax
movl 0x30(%rax), %edi
movl $0x2, %esi
callq 0x583f0
testb %al, %al
je 0x8dc1d
movq 0x190(%rbx), %rdi
callq 0x559e0
movq %rax, %rdi
callq 0x58b50
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x59168
movq 0x608(%rbx), %rdi
testq %rdi, %rdi
je 0x8dc2e
callq 0x58cc0
movl $0x68, %edi
callq 0x556b0
movq %rax, %r14
movq %rax, %rdi
callq 0x55b80
movq %r14, 0x608(%rbx)
addq $0x48, %r14
movq 0xdeceb(%rip), %rsi     # 0x16c940
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8dd40
movq 0x608(%rbx), %rdi
movl $0x1f4, %esi            # imm = 0x1F4
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x55100
movq %rax, %rbx
movl $0x68, %esi
movq %r14, %rdi
callq 0x55480
movq %rbx, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenuentry.cpp
// Function: smooth::GUI::PopupMenuEntry::OnClickEntry()
S::Void S::GUI::PopupMenuEntry::OnClickEntry()
{
	if (popup != NIL) return;

	EnterProtectedRegion();

	owner->SetClosedByClick(True);
	owner->internalRequestClose.Emit();

	onAction.Emit();

	LeaveProtectedRegion();
}

// Assembly:
cmpq $0x0, 0x5b8(%rdi)
je 0x8dcbf
retq
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x1c(%rdi), %r14
movq %r14, %rdi
callq 0x578f0
movq 0x600(%rbx), %rdi
movb $0x1, 0x690(%rdi)
addq $0x698, %rdi            # imm = 0x698
callq 0x70488
addq $0x478, %rbx            # imm = 0x478
movq %rbx, %rdi
callq 0x70488
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x55cc0
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/multi/tree/tree.cpp
// Function: smooth::GUI::Tree::OnToggleMark(bool)
S::Void S::GUI::Tree::OnToggleMark(Bool marked)
{
	if (marked) onOpen.Emit();
	else	    onClose.Emit();

	CalculateHeight();

	if (IsRegistered())
	{
		/* Find ListBox container and repaint it.
		 */
		Widget	*widget = container;

		while (widget != NIL && widget->GetObjectType() != ListBox::classID) widget = widget->GetContainer();

		if (widget != NIL) widget->Paint(SP_PAINT);
	}
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
xorb $0x1, %sil
movzbl %sil, %eax
shll $0x5, %eax
addq %rax, %rdi
addq $0xd20, %rdi            # imm = 0xD20
callq 0x70488
movq %rbx, %rdi
callq 0x58830
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
testb %al, %al
je 0x8ee01
movq 0xde199(%rip), %rax     # 0x16cf68
movswl (%rax), %ebp
movq 0x190(%rbx), %rbx
testq %rbx, %rbx
je 0x8ee01
leaq 0x20(%rbx), %rdi
movl %ebp, %esi
callq 0x57520
testb %al, %al
je 0x8edd2
movq (%rbx), %rax
movq 0x78(%rax), %rax
movq %rbx, %rdi
xorl %esi, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmpq *%rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/multi/tree/tree.cpp
// Function: smooth::GUI::Tree::CalculateHeight()
S::Void S::GUI::Tree::CalculateHeight()
{
	/* Calculate tree height.
	 */
	Int	 height	= 16;

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

	/* Set new height if changed.
	 */
	if (height == GetHeight()) return;

	SetHeight(height);

	/* Recalculate parent trees.
	 */
	if (!IsRegistered()) return;

	Widget	*widget = container;

	while (widget->GetObjectType() != ListBox::classID)
	{
		if (widget->GetObjectType() == Tree::classID)
		{
			((Tree *) widget)->CalculateHeight();

			break;
		}

		widget = widget->GetContainer();
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0x10, %r15d
cmpb $0x1, 0x5b8(%rdi)
jne 0x8eff3
cmpl $0x0, 0xc48(%rbx)
jle 0x8eff3
leaq 0xc40(%rbx), %r14
xorl %ebp, %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x5b0a4
movq (%rax), %rax
addl 0xb4(%rax), %r15d
incl %ebp
cmpl 0xc48(%rbx), %ebp
jl 0x8efd5
cmpl 0xb4(%rbx), %r15d
je 0x8f070
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
movq %rsp, %rdx
movl %eax, (%rdx)
movl %r15d, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
testb %al, %al
je 0x8f070
movq 0xddf33(%rip), %rax     # 0x16cf68
movswl (%rax), %ebp
movq 0xddb91(%rip), %r15     # 0x16cbd0
movq 0x190(%rbx), %rbx
leaq 0x20(%rbx), %r14
movq %r14, %rdi
movl %ebp, %esi
callq 0x57520
testb %al, %al
jne 0x8f070
movswl (%r15), %esi
movq %r14, %rdi
callq 0x57520
testb %al, %al
je 0x8f03f
movq %rbx, %rdi
callq 0x58830
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::OnLoseFocus()
S::Void S::GUI::Cursor::OnLoseFocus()
{
	ShowCursor(False);

	MarkText(-1, -1);

	if (timer != NIL)
	{
		DeleteObject(timer);

		timer = NIL;
	}

	/* Notify listeners of removed cursor.
	 */
	internalRemoveCursor.Emit(this);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
xorl %esi, %esi
callq 0x58970
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x56ae0
movq 0x5b8(%rbx), %rdi
testq %rdi, %rdi
je 0x90c85
callq 0x58cc0
movq $0x0, 0x5b8(%rbx)
movq 0xdb95c(%rip), %rdi     # 0x16c5e8
movq %rbx, %rsi
popq %rbx
jmp 0x954a2
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::AddHistoryEntry()
S::Void S::GUI::Cursor::AddHistoryEntry()
{
	while (history.Length() > historyPos)
	{
		history.RemoveNth(history.Length() - 1);
		historyPrompt.RemoveNth(historyPrompt.Length() - 1);
	}

	history.Add(text);
	historyPrompt.Add(promptPos);
	historyPos++;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x650(%rdi), %r14
movl 0x658(%rdi), %esi
cmpl 0x700(%rdi), %esi
jle 0x910e8
leaq 0x6a8(%rbx), %r15
decl %esi
movq %r14, %rdi
callq 0x6401a
movl 0x6b0(%rbx), %esi
decl %esi
movq %r15, %rdi
callq 0x866e4
movl 0x658(%rbx), %esi
cmpl 0x700(%rbx), %esi
jg 0x910c0
leaq 0xf0(%rbx), %rsi
movq %r14, %rdi
callq 0x64280
leaq 0x6a8(%rbx), %rdi
leaq 0x5c0(%rbx), %rsi
callq 0x86944
incl 0x700(%rbx)
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::Paint(int)
S::Int S::GUI::Cursor::Paint(Int message)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

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

			break;
		case SP_MOUSEIN:
			Input::Pointer::SetCursor(container->GetContainerWindow(), Input::Pointer::CursorTextEdit);

			break;
		case SP_MOUSEOUT:
			Input::Pointer::SetCursor(container->GetContainerWindow(), Input::Pointer::CursorArrow);

			break;
	}

	return Success();
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebp
movq %rdi, %r14
movq (%rdi), %rax
callq *0x88(%rax)
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testb %al, %al
je 0x91261
movq (%r14), %rax
movq %r14, %rdi
callq *0x90(%rax)
xorl %ebx, %ebx
testb %al, %al
je 0x91261
cmpl $0x3, %ebp
je 0x91249
cmpl $0x2, %ebp
je 0x91233
testl %ebp, %ebp
jne 0x91261
movq %r14, %rdi
callq 0x58f40
jmp 0x91261
movq 0x190(%r14), %rdi
callq 0x559e0
movq %rax, %rdi
movl $0x1, %esi
jmp 0x9125c
movq 0x190(%r14), %rdi
callq 0x559e0
xorl %ebx, %ebx
movq %rax, %rdi
xorl %esi, %esi
callq 0x55d30
movl %ebx, %eax
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::GetLogicalCursorPositionFromDisplay(smooth::String const&, int) const
S::Int S::GUI::Cursor::GetLogicalCursorPositionFromDisplay(const String &line, Int displayPos) const
{
	FriBidiStrIndex	 length = line.Length();

	if (length == 0) return 0;

	/* Find best position using binary search.
	 */
	Int	 bestPos   = 0;
	Int	 bestValue = 2147483647;

	Int	 startPos  = 0;
	Int	 endPos	   = length;

	while (endPos >= startPos)
	{
		/* Select element to compare and perform comparison.
		 */
		Int	 m   = (startPos + endPos) / 2;
		Int	 pos = GetDisplayCursorPositionFromVisual(line, m);

		if ((!IsRightToLeft() && pos > displayPos) ||
		    ( IsRightToLeft() && pos < displayPos)) endPos   = m - 1;
		else					    startPos = m + 1;

		if (Math::Abs(pos - displayPos) < bestValue)
		{
			bestPos	  = m;
			bestValue = Math::Abs(pos - displayPos);
		}
	}

	return GetLogicalCursorPositionFromVisual(line, bestPos);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl %edx, 0x4(%rsp)
movq %rdi, 0x8(%rsp)
movq %rsi, 0x10(%rsp)
movq %rsi, %rdi
callq 0x57180
testl %eax, %eax
je 0x92d92
js 0x92da3
movl $0x7fffffff, %ebp       # imm = 0x7FFFFFFF
xorl %esi, %esi
xorl %r12d, %r12d
movl 0x4(%rsp), %r14d
movq %rax, 0x18(%rsp)
movq %rsi, 0x20(%rsp)
leal (%rax,%rsi), %r13d
shrl %r13d
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq 0x10(%rsp), %rsi
movl %r13d, %edx
callq 0x55350
movl %eax, %r15d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x160(%rax)
movl %r15d, %ebx
subl %r14d, %ebx
jle 0x92d3a
testb %al, %al
je 0x92d56
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x160(%rax)
movl 0x4(%rsp), %r14d
cmpl %r14d, %r15d
jge 0x92d61
testb %al, %al
je 0x92d61
leal -0x1(%r13), %eax
movq 0x20(%rsp), %rsi
jmp 0x92d6a
leal 0x1(%r13), %esi
movq 0x18(%rsp), %rax
sarl $0x1f, %ebx
orl $0x1, %ebx
subl %r14d, %r15d
movl $0x0, %edx
cmovel %edx, %ebx
imull %r15d, %ebx
cmpl %ebp, %ebx
cmovll %r13d, %r12d
cmovll %ebx, %ebp
cmpl %esi, %eax
jge 0x92cf9
jmp 0x92da6
xorl %eax, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r12d, %r12d
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movl %r12d, %edx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x560f0
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::MarkText(int, int)
S::Void S::GUI::Cursor::MarkText(Int newMarkStart, Int newMarkEnd)
{
	if (newMarkStart == markStart && newMarkEnd == markEnd) return;

	ShowCursor(False);

	markStart	= newMarkStart;
	markEnd		= newMarkEnd;

	Paint(SP_PAINT);

	/* Copy selected text to selection clipboard.
	 */
	if (Math::Abs(markEnd - markStart) > 0) Clipboard(container->GetContainerWindow()).SetSelectionText(text.SubString(Math::Min(markStart, markEnd), Math::Abs(markEnd - markStart)));
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
movl %edx, %ebp
movl %esi, %r14d
movq %rdi, %rbx
cmpl %esi, 0x5c8(%rdi)
jne 0x92dec
cmpl %ebp, 0x5cc(%rbx)
je 0x92ea6
xorl %r15d, %r15d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x58970
movl %r14d, 0x5c8(%rbx)
movl %ebp, 0x5cc(%rbx)
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movl 0x5cc(%rbx), %eax
movl 0x5c8(%rbx), %ecx
movl %eax, %edx
subl %ecx, %edx
sarl $0x1f, %edx
orl $0x1, %edx
subl %ecx, %eax
cmovel %r15d, %edx
imull %eax, %edx
testl %edx, %edx
jle 0x92ea6
movq 0x190(%rbx), %rdi
callq 0x559e0
movq %rsp, %rdi
movq %rax, %rsi
callq 0x581d0
movl 0x5c8(%rbx), %eax
movl 0x5cc(%rbx), %esi
movl %eax, %edi
subl %esi, %edi
movl %esi, %edx
cmovll %eax, %edx
negl %edi
movl %edi, %ecx
sarl $0x1f, %ecx
orl $0x1, %ecx
cmpl %eax, %esi
cmovel %r15d, %ecx
imull %edi, %ecx
addq $0xf0, %rbx
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x58f50
movq %rsp, %rdi
leaq 0x10(%rsp), %rsi
callq 0x57570
leaq 0x10(%rsp), %rdi
callq 0x59200
movq %rsp, %rdi
callq 0x586c0
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x59200
jmp 0x92ec3
movq %rax, %rbx
movq %rsp, %rdi
callq 0x586c0
movq %rbx, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::OnInput(int, int)
S::Void S::GUI::Cursor::OnInput(Int character, Int flags)
{
	/* Called when a character is entered.
	 */
	if (!focussed)					      return;
	if (text.Length() == maxSize && markStart == markEnd) return;

	if (character >= 0x20 && character != 0x7F && IsActive())
	{
		Bool	 selected = (markStart != markEnd && markStart >= 0 && markEnd >= 0);

		this->flags |= CF_NOINPUT;

		DeleteSelectedText();

		this->flags ^= CF_NOINPUT;

		if (!Binary::IsFlagSet(container->GetFlags(), EDB_NUMERIC) || (character >= '0' && character <= '9') || character == '-' || character == '.')
		{
			String	 insertText;

			insertText[0] = character;

			if (selected) RemoveHistoryEntry();

			InsertText(insertText);
		}

		onInput.Emit(text);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
cmpb $0x1, 0xcd(%rdi)
jne 0x941c7
movl %esi, %r15d
movq %rdi, %rbx
leaq 0xf0(%rdi), %r14
movq %r14, %rdi
callq 0x57180
cmpl 0x640(%rbx), %eax
jne 0x940f9
cmpl $0x7f, %r15d
je 0x941c7
cmpl $0x20, %r15d
jl 0x941c7
movl 0x5cc(%rbx), %eax
cmpl %eax, 0x5c8(%rbx)
jne 0x9410f
jmp 0x941c7
cmpl $0x20, %r15d
setl %al
cmpl $0x7f, %r15d
sete %cl
orb %al, %cl
jne 0x941c7
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x941c7
movl 0x5c8(%rbx), %eax
movl 0x5cc(%rbx), %ecx
cmpl %ecx, %eax
setne %bpl
orl %eax, %ecx
setns %r13b
orb $0x40, 0x33(%rbx)
movq %rbx, %rdi
callq 0x591d8
xorb $0x40, 0x33(%rbx)
movq 0x190(%rbx), %rax
movl 0x30(%rax), %edi
movl $0x1, %esi
callq 0x583f0
testb %al, %al
je 0x9417b
leal -0x30(%r15), %eax
cmpl $0xa, %eax
setae %al
leal -0x2d(%r15), %ecx
cmpl $0x2, %ecx
setae %cl
testb %cl, %al
jne 0x941b5
movq %rsp, %r12
movq %r12, %rdi
xorl %esi, %esi
callq 0x58e20
movq %r12, %rdi
xorl %esi, %esi
callq 0x58990
movl %r15d, (%rax)
andb %r13b, %bpl
je 0x941a2
movq %rbx, %rdi
callq 0x56870
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x56070
movq %rsp, %rdi
callq 0x59200
addq $0x708, %rbx            # imm = 0x708
movq %rbx, %rdi
movq %r14, %rsi
callq 0x76a7e
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x59200
movq %rbx, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::ConvertTabs(smooth::String const&, int)
S::String S::GUI::Cursor::ConvertTabs(const String &line, Int tabSize)
{
	String	 string	      = line;
	Int	 stringLength = string.Length();

	for (Int i = 0; i < stringLength; i++)
	{
		if (string[i] != '\t') continue;

		Int	 spaces = tabSize - i % tabSize;

		string	      = string.Head(i).Append(String().FillN(' ', spaces)).Append(string.Tail(stringLength - i - 1));
		stringLength += spaces - 1;
	}

	return string;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movl %edx, %r13d
movq %rdi, %rbx
callq 0x570b0
movq %rbx, 0x8(%rsp)
movq %rbx, %rdi
callq 0x57180
movl %eax, %r14d
testl %eax, %eax
jle 0x94306
xorl %r15d, %r15d
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
leaq 0x50(%rsp), %rbx
movl %r13d, 0x14(%rsp)
movq 0x8(%rsp), %rdi
movl %r15d, %esi
callq 0x58990
cmpl $0x9, (%rax)
jne 0x942f8
movq %r14, 0x18(%rsp)
movl %r15d, %eax
cltd
idivl %r13d
movl %edx, %r12d
leaq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
movl %r15d, %edx
callq 0x58b00
movq %rbx, %rdi
xorl %esi, %esi
callq 0x58e20
subl %r12d, %r13d
movq %rbx, %r14
movq %rbx, %rdi
movl $0x20, %esi
movl %r13d, %edx
callq 0x57bf0
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x562f0
movq %rax, %r12
movq 0x18(%rsp), %rax
leal (%rax,%rbp), %edx
leaq 0x38(%rsp), %rbx
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
callq 0x57f90
movq %r12, %rdi
movq %rbx, %rsi
callq 0x562f0
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x555f0
movq %rbx, %rdi
callq 0x59200
movq %r14, %rdi
callq 0x59200
leaq 0x20(%rsp), %rdi
callq 0x59200
movq 0x18(%rsp), %rbx
addl %r13d, %ebx
decl %ebx
movl 0x14(%rsp), %r13d
movq %r14, %r12
movq %rbx, %r14
movq %r12, %rbx
incl %r15d
decl %ebp
cmpl %r14d, %r15d
jl 0x9422d
movq 0x8(%rsp), %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x94325
movq %rax, %r14
jmp 0x94346
jmp 0x94325
jmp 0x9432a
movq %rax, %r14
jmp 0x94350
movq %rax, %r14
jmp 0x9433c
movq %rax, %r14
leaq 0x38(%rsp), %rdi
callq 0x59200
leaq 0x50(%rsp), %rdi
callq 0x59200
leaq 0x20(%rsp), %rdi
callq 0x59200
movq 0x8(%rsp), %rdi
callq 0x59200
movq %r14, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::ContainsRTLCharacters(smooth::String const&)
S::Bool S::GUI::Cursor::ContainsRTLCharacters(const String &line)
{
	FriBidiStrIndex	 length = line.Length();

	if (length == 0) return False;

	Bool		 rtlCharacters = False;

	if (Setup::useIconv)
	{
		/* Get BiDi types for input string.
		 */
		FriBidiCharType	*types = new FriBidiCharType [length + 1];

		fribidi_get_bidi_types((FriBidiChar *) line.ConvertTo("UCS-4LE"), length, types);

		/* Check if the input string contains RTL characters.
		 */
		for (Int i = 0; i < length; i++)
		{
			if (FRIBIDI_IS_RTL(types[i])) { rtlCharacters = True; break; }
		}

		delete [] types;
	}
	else
	{
		for (Int i = 0; i < length; i++)
		{
			if (line[i] >= 0x0590 && line[i] <= 0x08FF) { rtlCharacters = True; break; }
		}
	}

	return rtlCharacters;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
callq 0x57180
testl %eax, %eax
je 0x9442f
movl %eax, %ebx
movq 0xd7fde(%rip), %rax     # 0x16c360
cmpb $0x0, (%rax)
je 0x943fd
movslq %ebx, %rax
leaq 0x4(,%rax,4), %rax
cmpl $-0x1, %ebx
movq $-0x1, %rdi
cmovgeq %rax, %rdi
callq 0x56670
movq %rax, %r15
leaq 0x638ba(%rip), %rsi     # 0xf7c69
movq %r14, %rdi
callq 0x57940
movq %rax, %rdi
movl %ebx, %esi
movq %r15, %rdx
callq 0x57cc0
testl %ebx, %ebx
setg %bpl
jle 0x943f3
testb $0x1, (%r15)
jne 0x943f3
movl %ebx, %eax
movl $0x1, %edx
movq %rdx, %rcx
cmpq %rdx, %rax
je 0x943ec
leaq 0x1(%rcx), %rdx
testb $0x1, (%r15,%rcx,4)
je 0x943d9
cmpq %rax, %rcx
setb %bpl
movq %r15, %rdi
callq 0x561e0
jmp 0x94431
testl %ebx, %ebx
setg %bpl
jle 0x94431
xorl %ebp, %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x57fe0
cmpl $0x590, %eax            # imm = 0x590
jl 0x94429
movq %r14, %rdi
movl %ebp, %esi
callq 0x57fe0
cmpl $0x900, %eax            # imm = 0x900
jl 0x9443e
incl %ebp
cmpl %ebp, %ebx
jne 0x94407
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movb $0x1, %bpl
jmp 0x94431
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::ShowCursor(bool)
S::Void S::GUI::Cursor::ShowCursor(Bool visible)
{
	/* Cancel if cursor is displayed by the IME.
	 */
	if (imeCursor) return;

	/* Cancel if cursor is already in the desired state.
	 */
	if (promptVisible == visible) return;

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

	Int	 line = 0;

	if (Binary::IsFlagSet(GetFlags(), CF_MULTILINE))
	{
		for (Int j = promptPos - 1; j >= 0; j--)
		{
			if (text[j] == '\n') line++;
		}
	}

	point.x += GetDisplayCursorPositionFromLogical(promptPos) + imeAdvance;
	point.y += (font.GetScaledTextSizeY() + 3) * (line - scrollPos);

	if (!(Binary::IsFlagSet(GetFlags(), CF_MULTILINE) && (line - scrollPos < 0 || (font.GetUnscaledTextSizeY() + 3) * (line - scrollPos + 1) > GetHeight())))
	{
		if (IsVisible()) surface->Box(Rect(point, Size(1, font.GetScaledTextSizeY() + 3)), 0, Rect::Inverted);

		promptVisible = visible;
	}
}

// Assembly:
cmpb $0x0, 0x5e0(%rdi)
jne 0x94958
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %esi, %ebx
movq %rdi, %r14
cmpb %bl, 0x5c4(%rdi)
je 0x9494a
movq (%r14), %rax
movq %r14, %rdi
callq *0x40(%rax)
movq %rax, 0x18(%rsp)
movq (%r14), %rax
movq %r14, %rdi
callq *0x48(%rax)
movq %rax, 0x10(%rsp)
movl 0x30(%r14), %edi
movl $0x1, %esi
callq 0x583f0
xorl %r12d, %r12d
testb %al, %al
je 0x9483c
movl 0x5c0(%r14), %r13d
testl %r13d, %r13d
jle 0x9483c
leaq 0xf0(%r14), %r15
incl %r13d
xorl %r12d, %r12d
leal -0x2(%r13), %esi
movq %r15, %rdi
callq 0x58990
xorl %ecx, %ecx
cmpl $0xa, (%rax)
sete %cl
addl %ecx, %r12d
decl %r13d
cmpl $0x1, %r13d
jg 0x9481c
movl 0x5c0(%r14), %esi
movq %r14, %rdi
callq 0x580d0
movl %eax, %ebp
addl 0x10(%rsp), %ebp
addl 0x5dc(%r14), %ebp
leaq 0x140(%r14), %r13
movq 0xd8552(%rip), %rsi     # 0x16cdb8
movq %r13, %rdi
callq 0x57680
movl %eax, 0xc(%rsp)
movl %r12d, %r15d
subl 0x5d4(%r14), %r15d
movl 0x30(%r14), %edi
movl $0x1, %esi
callq 0x583f0
testb %al, %al
je 0x948c8
cmpl 0x5d4(%r14), %r12d
jl 0x9494a
movq 0xd8516(%rip), %rsi     # 0x16cdb8
movq %r13, %rdi
callq 0x58a50
addl $0x3, %eax
subl 0x5d4(%r14), %r12d
incl %r12d
imull %eax, %r12d
cmpl 0xb4(%r14), %r12d
jg 0x9494a
movq (%r14), %rax
movq %r14, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x94943
movq 0x10(%rsp), %rax
shrq $0x20, %rax
movl 0xc(%rsp), %ecx
addl $0x3, %ecx
imull %ecx, %r15d
addl %eax, %r15d
movq 0xd84c2(%rip), %rsi     # 0x16cdb8
movq %r13, %rdi
callq 0x57680
leaq 0x38(%rsp), %rsi
movl %ebp, (%rsi)
movl %r15d, 0x4(%rsi)
incl %ebp
movl %ebp, 0x8(%rsi)
addl %r15d, %eax
addl $0x3, %eax
movl %eax, 0xc(%rsi)
xorl %eax, %eax
leaq 0x28(%rsp), %rdx
movq %rax, 0x8(%rdx)
movl $0x0, (%rdx)
movq 0xd83e9(%rip), %rcx     # 0x16cd18
movl (%rcx), %ecx
leaq 0x20(%rsp), %r8
movq %rax, (%r8)
movq 0x18(%rsp), %rdi
callq 0x57930
movb %bl, 0x5c4(%r14)
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::GetDisplayCursorPositionFromLogical(int) const
S::Int S::GUI::Cursor::GetDisplayCursorPositionFromLogical(Int promptPos) const
{
	FriBidiStrIndex	 length = text.Length();

	if (length == 0) return 0;

	String	 wText = text;
	Int	 wPromptPos = promptPos;

	if (Binary::IsFlagSet(GetFlags(), CF_MULTILINE))
	{
		Int	 lineStart  = promptPos;
		Int	 lineLength = 0;

		for (Int i = promptPos - 1; i >= 0;	 i--) { if (text[i] == '\n')		     break; lineStart--;  }
		for (Int i = lineStart;	    i <  length; i++) { if (text[i] == '\n' || text[i] == 0) break; lineLength++; }

		wText = text.SubString(lineStart, lineLength);
		wPromptPos = promptPos - lineStart;
	}

	return GetDisplayCursorPositionFromLogical(wText, wPromptPos);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movl %esi, %ebp
movq %rdi, %rbx
leaq 0xf0(%rdi), %r14
movq %r14, %rdi
callq 0x57180
testl %eax, %eax
je 0x94a86
movl %eax, %r12d
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x570b0
movl 0x30(%rbx), %edi
movl $0x1, %esi
callq 0x583f0
testb %al, %al
je 0x94a5a
movl %ebp, %r15d
movl %ebp, (%rsp)
testl %ebp, %ebp
jle 0x949dc
movl (%rsp), %eax
movl %eax, %r15d
leal -0x1(%r15), %r13d
movq %r14, %rdi
movl %r13d, %esi
callq 0x57fe0
cmpl $0xa, %eax
je 0x949dc
leal 0x1(%r13), %eax
movl %r13d, %r15d
cmpl $0x1, %eax
jg 0x949b9
xorl %r15d, %r15d
xorl %r13d, %r13d
movl %r12d, %eax
subl %r15d, %eax
jle 0x94a28
movl %eax, 0x4(%rsp)
movl %r15d, %ebp
subl %r12d, %ebp
xorl %r13d, %r13d
leal (%r15,%r13), %r12d
movq %r14, %rdi
movl %r12d, %esi
callq 0x57fe0
cmpl $0xa, %eax
je 0x94a28
movq %r14, %rdi
movl %r12d, %esi
callq 0x57fe0
testl %eax, %eax
je 0x94a28
incl %r13d
movl %ebp, %eax
addl %r13d, %eax
jne 0x949f4
movl 0x4(%rsp), %eax
movl %eax, %r13d
leaq 0x20(%rsp), %rdi
movq %r14, %rsi
movl %r15d, %edx
movl %r13d, %ecx
callq 0x58f50
leaq 0x8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x555f0
leaq 0x20(%rsp), %rdi
callq 0x59200
movl (%rsp), %ebp
subl %r15d, %ebp
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
movl %ebp, %edx
callq 0x58a90
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
movl %eax, %edx
callq 0x55350
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x59200
jmp 0x94a88
xorl %ebx, %ebx
movl %ebx, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x59200
jmp 0x94ab1
jmp 0x94aae
jmp 0x94aae
jmp 0x94aae
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x59200
movq %rbx, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::SetText(smooth::String const&)
S::Int S::GUI::Cursor::SetText(const String &newText)
{
	if (text == newText) return Success();

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

	Bool	 visible = IsVisible();

	if (visible) surface->StartPaint(frame);

	ShowCursor(False);

	MarkText(-1, -1);

	lineIndices.RemoveAll();

	if (timer != NIL)
	{
		DeleteObject(timer);

		timer = NIL;
	}

	promptPos	= newText.Length();
	visibleOffset	= 0;
	scrollPos	= 0;

	ClearHistory();

	Widget::SetText(newText);

	if (IsActive()) AddHistoryEntry();

	if (visible) surface->EndPaint();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
addq $0xf0, %rdi
callq 0x55900
testb %al, %al
jne 0x94bff
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq %rax, %r13
shrq $0x20, %r13
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
leal (%rax,%r12), %ecx
shrq $0x20, %rax
movl %r12d, 0x8(%rsp)
movl %r13d, 0xc(%rsp)
movl %ecx, 0x10(%rsp)
addl %r13d, %eax
movl %eax, 0x14(%rsp)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
movl %eax, %ebp
testb %al, %al
je 0x94b50
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x55160
movq %rbx, %rdi
xorl %esi, %esi
callq 0x58970
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x56ae0
leaq 0x5e8(%rbx), %rdi
callq 0x86554
movq 0x5b8(%rbx), %rdi
testq %rdi, %rdi
je 0x94b94
callq 0x58cc0
movq $0x0, 0x5b8(%rbx)
movq %r15, %rdi
callq 0x57180
movl %eax, 0x5c0(%rbx)
movq $0x0, 0x5d0(%rbx)
leaq 0x650(%rbx), %rdi
callq 0x640f6
leaq 0x6a8(%rbx), %rdi
callq 0x86554
movl $0x0, 0x700(%rbx)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x56dd0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x94bf2
movq %rbx, %rdi
callq 0x587f0
testb %bpl, %bpl
je 0x94bff
movq %r14, %rdi
callq 0x58780
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::InsertFromClipboard()
S::Void S::GUI::Cursor::InsertFromClipboard()
{
	Bool	 selected = (markStart != markEnd && markStart >= 0 && markEnd >= 0);

	flags |= CF_NOINPUT;

	DeleteSelectedText();

	flags ^= CF_NOINPUT;

	String	 insertText = Clipboard(container->GetContainerWindow()).GetClipboardText();

	if (insertText.Length() > 0 && (insertText.Length() + text.Length()) <= maxSize)
	{
		if (Binary::IsFlagSet(container->GetFlags(), EDB_NUMERIC) && (insertText.ToInt() == 0 && insertText[0] != '0')) return;

		if (selected) RemoveHistoryEntry();

		InsertText(insertText);
	}

	onInput.Emit(text);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x30, %rsp
movq %rdi, %rbx
movl 0x5c8(%rdi), %eax
movl 0x5cc(%rdi), %ecx
cmpl %ecx, %eax
setne %r15b
orl %eax, %ecx
setns %r12b
orb $0x40, 0x33(%rdi)
callq 0x591d8
xorb $0x40, 0x33(%rbx)
movq 0x190(%rbx), %rdi
callq 0x559e0
leaq 0x20(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x581d0
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x56980
leaq 0x20(%rsp), %rdi
callq 0x586c0
leaq 0x8(%rsp), %rdi
callq 0x57180
testl %eax, %eax
jle 0x94e21
leaq 0x8(%rsp), %rdi
callq 0x57180
movl %eax, %ebp
leaq 0xf0(%rbx), %rdi
callq 0x57180
addl %ebp, %eax
cmpl 0x640(%rbx), %eax
jg 0x94e21
movq 0x190(%rbx), %rax
movl 0x30(%rax), %edi
movl $0x1, %esi
callq 0x583f0
testb %al, %al
je 0x94e07
leaq 0x8(%rsp), %rdi
callq 0x568c0
testq %rax, %rax
jne 0x94e07
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
callq 0x58990
cmpl $0x30, (%rax)
jne 0x94e37
andb %r12b, %r15b
je 0x94e14
movq %rbx, %rdi
callq 0x56870
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x56070
leaq 0x708(%rbx), %rdi
addq $0xf0, %rbx
movq %rbx, %rsi
callq 0x76a7e
leaq 0x8(%rsp), %rdi
callq 0x59200
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x586c0
jmp 0x94e6a
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x59200
movq %rbx, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::Scroll(int)
S::Int S::GUI::Cursor::Scroll(Int nScrollPos)
{
	ShowCursor(False);

	scrollPos = Math::Max(0, Math::Min(nScrollPos, maxScrollPos));

	Paint(SP_PAINT);

	onScroll.Emit(scrollPos, maxScrollPos);

	return Success();
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebx
movq %rdi, %r14
xorl %ebp, %ebp
xorl %esi, %esi
callq 0x58970
movl 0x5d8(%r14), %eax
cmpl %eax, %ebx
cmovll %ebx, %eax
testl %eax, %eax
cmovlel %ebp, %eax
movl %eax, 0x5d4(%r14)
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x78(%rax)
leaq 0x748(%r14), %rdi
movl 0x5d4(%r14), %esi
movl 0x5d8(%r14), %edx
callq 0x72e5c
xorl %eax, %eax
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::Undo()
S::Void S::GUI::Cursor::Undo()
{
	if (historyPos <= 1) return;

	lineIndices.RemoveAll();

	Surface	*surface = GetDrawSurface();

	surface->StartPaint(GetVisibleArea());

	Int	 index	 = --historyPos - 1;

	Widget::SetText(history.GetNth(index));
	SetCursorPos(historyPrompt.GetNth(index));

	surface->EndPaint();

	onInput.Emit(text);
}

// Assembly:
cmpl $0x2, 0x700(%rdi)
jl 0x94f96
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
addq $0x5e8, %rdi            # imm = 0x5E8
callq 0x86554
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x55160
movl 0x700(%rbx), %r15d
leal -0x1(%r15), %eax
movl %eax, 0x700(%rbx)
addl $-0x2, %r15d
leaq 0x650(%rbx), %rdi
movl %r15d, %esi
callq 0x6b6a6
movq %rbx, %rdi
movq %rax, %rsi
callq 0x56dd0
leaq 0x6a8(%rbx), %rdi
movl %r15d, %esi
callq 0x86b48
movl (%rax), %esi
movq %rbx, %rdi
callq 0x58a30
movq %r14, %rdi
callq 0x58780
leaq 0x708(%rbx), %rdi
addq $0xf0, %rbx
movq %rbx, %rsi
callq 0x76a7e
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::Redo()
S::Void S::GUI::Cursor::Redo()
{
	if (historyPos >= history.Length()) return;

	lineIndices.RemoveAll();

	Surface	*surface = GetDrawSurface();

	surface->StartPaint(GetVisibleArea());

	Int	 index	 = historyPos++;

	Widget::SetText(history.GetNth(index));
	SetCursorPos(historyPrompt.GetNth(index));

	surface->EndPaint();

	onInput.Emit(text);
}

// Assembly:
movl 0x700(%rdi), %eax
cmpl 0x658(%rdi), %eax
jge 0x95061
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
leaq 0x650(%rdi), %r15
addq $0x5e8, %rdi            # imm = 0x5E8
callq 0x86554
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x55160
movl 0x700(%rbx), %r12d
leal 0x1(%r12), %eax
movl %eax, 0x700(%rbx)
movq %r15, %rdi
movl %r12d, %esi
callq 0x6b6a6
movq %rbx, %rdi
movq %rax, %rsi
callq 0x56dd0
leaq 0x6a8(%rbx), %rdi
movl %r12d, %esi
callq 0x86b48
movl (%rax), %esi
movq %rbx, %rdi
callq 0x58a30
movq %r14, %rdi
callq 0x58780
leaq 0x708(%rbx), %rdi
addq $0xf0, %rbx
movq %rbx, %rsi
callq 0x76a7e
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/dragcontrol.cpp
// Function: smooth::GUI::DragControl::DragControl()
S::GUI::DragControl::DragControl() : Widget(Point(), Size(4096, 4096))
{
	type		= classID;
	orientation	= OR_CENTER;

	dragHotspot	= new Hotspot(GetPosition(), GetSize());

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

	Add(dragHotspot);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
xorl %r14d, %r14d
leaq 0x8(%rsp), %rsi
movq %r14, (%rsi)
movabsq $0x100000001000, %rax   # imm = 0x100000001000
movq %rsp, %rdx
movq %rax, (%rdx)
callq 0x57a30
movq 0xd73d1(%rip), %rax     # 0x16cf98
addq $0x10, %rax
movq %rax, (%rbx)
movq %r14, 0x5b8(%rbx)
movq 0xd727c(%rip), %rax     # 0x16ce58
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movw $0x40, 0xd0(%rbx)
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r14
leaq 0xa8(%rbx), %rsi
leaq 0xb0(%rbx), %rdx
movq %rax, %rdi
callq 0x55a30
movq %r14, 0x5c0(%rbx)
addq $0x3f8, %r14            # imm = 0x3F8
movq 0xd6c44(%rip), %rsi     # 0x16c868
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x95da2
movl $0x418, %edi            # imm = 0x418
addq 0x5c0(%rbx), %rdi
movq 0xd6d64(%rip), %rsi     # 0x16c9a8
xorl %edx, %edx
movq %rbx, %rcx
callq 0x95da2
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r15
movl $0x5b8, %esi            # imm = 0x5B8
movq %r14, %rdi
callq 0x55480
jmp 0x95c7d
movq %rax, %r15
movq %rbx, %rdi
callq 0x57640
movq %r15, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/droparea.cpp
// Function: smooth::GUI::DropArea::DropArea(smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::DropArea::DropArea(const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type	    = classID;
	dropTarget  = True;
	orientation = OR_FREE;

	if (GetSize() == Size(0, 0)) SetSize(Size(4096, 4096));

	onDropFile.SetParentObject(this);
	onDropFiles.SetParentObject(this);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x57a30
movq 0xd64f9(%rip), %rax     # 0x16c3f0
addq $0x10, %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x5c0(%rbx)
leaq 0xcd8b2(%rip), %rcx     # 0x1637c0
movq %rcx, 0x5b8(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x5c8(%rbx)
movq %rax, 0x5e0(%rbx)
leaq 0xd26db(%rip), %rax     # 0x168608
movq %rax, 0x5d8(%rbx)
movups %xmm0, 0x5e8(%rbx)
movq 0xd667e(%rip), %rax     # 0x16c5c0
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movb $0x1, 0xd3(%rbx)
movw $0x80, 0xd0(%rbx)
movl 0xb4(%rbx), %eax
orl 0xb0(%rbx), %eax
jne 0x95f94
leaq 0x5b8(%rbx), %r14
leaq 0x5d8(%rbx), %r15
movabsq $0x100000001000, %rax   # imm = 0x100000001000
movq %rsp, %rdx
movq %rax, (%rdx)
leaq 0xa8(%rbx), %rsi
movq %rbx, %rdi
callq 0x57080
movq %rbx, 0x5c0(%rbx)
movq %rbx, 0x5e0(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r12
movq %r15, %rdi
callq 0x9618a
movq %r14, %rdi
callq 0x7690c
movq %rbx, %rdi
callq 0x57640
movq %r12, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/droparea.cpp
// Function: smooth::GUI::DropArea::Process(int, int, int)
S::Int S::GUI::DropArea::Process(Int message, Int wParam, Int lParam)
{
	if (!IsRegistered())		 return Error();
	if (!IsActive() || !IsVisible()) return Success();

	switch (message)
	{
		case SM_DROPFILES:
			{
				Point	 mousePos = Point(wParam, lParam);

				Point	 realPos  = GetRealPosition();
				Size	 realSize = GetRealSize();

				if (mousePos.x > realPos.x && mousePos.x < (realPos.x + realSize.cx) && mousePos.y > realPos.y && mousePos.y < (realPos.y + realSize.cy))
				{
					const Array<String>	&fileNames = GetContainerWindow()->GetDroppedFiles();

					EnterProtectedRegion();

					foreach (const String &fileName, fileNames) onDropFile.Emit(fileName);

					onDropFiles.Emit(fileNames);

					LeaveProtectedRegion();

					return MessageProcessed;
				}
			}

			break;
	}

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %ecx, %ebp
movl %edx, %r14d
movl %esi, %r15d
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x88(%rax)
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
testb %al, %al
je 0x96166
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x98(%rax)
xorl %r12d, %r12d
testb %al, %al
je 0x96166
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x96166
cmpl $0x7814, %r15d          # imm = 0x7814
jne 0x96172
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
cmpl %r14d, %r12d
jge 0x96172
leal (%rax,%r12), %ecx
cmpl %r14d, %ecx
jle 0x96172
shrq $0x20, %r12
cmpl %ebp, %r12d
jge 0x96172
shrq $0x20, %rax
addl %r12d, %eax
cmpl %ebp, %eax
jle 0x96172
movq %rbx, %rdi
callq 0x559e0
movq %rax, %rdi
callq 0x583a0
movq %rax, %r15
leaq 0x1c(%rbx), %r14
movq %r14, %rdi
callq 0x578f0
cmpl $0x0, 0x8(%r15)
jle 0x96146
leaq 0x5b8(%rbx), %r12
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
incl %ebp
movq %r15, %rdi
movl %ebp, %esi
callq 0x64224
movq %r12, %rdi
movq %rax, %rsi
callq 0x76a7e
movl 0x8(%r15), %eax
decl %eax
cmpl %eax, %ebp
jl 0x96125
addq $0x5d8, %rbx            # imm = 0x5D8
movq %rbx, %rdi
movq %r15, %rsi
callq 0x961a4
movq %r14, %rdi
callq 0x55cc0
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
movl %r12d, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
movl %r15d, %esi
movl %r14d, %edx
movl %ebp, %ecx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x58220
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/shortcut.cpp
// Function: smooth::GUI::Shortcut::Shortcut(int, int, smooth::GUI::Widget*, int)
S::GUI::Shortcut::Shortcut(Int iFlags, Int iKey, Widget *iRef, Int iParam) : Widget(Point(), Size())
{
	type		= classID;
	orientation	= OR_FREE;

	key		= iKey;
	flags		= iFlags;
	param		= iParam;
	ref		= iRef;

	onKeyDown.SetParentObject(this);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rcx, %rbx
movl %edx, %r14d
movl %esi, %r15d
movq %rdi, %r12
xorl %r13d, %r13d
leaq 0x10(%rsp), %rsi
movq %r13, (%rsi)
leaq 0x8(%rsp), %rdx
movq %r13, (%rdx)
callq 0x57a30
movq 0xd69c8(%rip), %rax     # 0x16cd60
addq $0x10, %rax
movq %rax, (%r12)
movq %r13, 0x5d0(%r12)
leaq 0xcc9c9(%rip), %rax     # 0x162d78
movq %rax, 0x5c8(%r12)
xorps %xmm0, %xmm0
movups %xmm0, 0x5d8(%r12)
movq 0xd61ce(%rip), %rax     # 0x16c598
movzwl (%rax), %eax
movw %ax, 0x20(%r12)
movw $0x80, 0xd0(%r12)
movl %r14d, 0x5b8(%r12)
movl %r15d, 0x30(%r12)
movl %ebp, 0x5bc(%r12)
movq %rbx, 0x5c0(%r12)
movq %r12, 0x5d0(%r12)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/special/shortcut.cpp
// Function: smooth::GUI::Shortcut::Process(int, int, int)
S::Int S::GUI::Shortcut::Process(Int message, Int wParam, Int lParam)
{
	if (!IsRegistered()) return Error();
	if (!IsActive())     return Success();

	if (ref != NIL && !ref->IsActive()) return Success();

	switch (message)
	{
		case SM_KEYDOWN:
			if (wParam == key)
			{
				if ((((flags & SC_ALT) 	 && Input::Keyboard::GetKeyState(Input::Keyboard::KeyAlt))     || (!(flags & SC_ALT)   && !Input::Keyboard::GetKeyState(Input::Keyboard::KeyAlt)))     &&
				    (((flags & SC_CTRL)  && Input::Keyboard::GetKeyState(Input::Keyboard::KeyControl)) || (!(flags & SC_CTRL)  && !Input::Keyboard::GetKeyState(Input::Keyboard::KeyControl))) &&
				    (((flags & SC_CMD)   && Input::Keyboard::GetKeyState(Input::Keyboard::KeyCommand)) || (!(flags & SC_CMD)   && !Input::Keyboard::GetKeyState(Input::Keyboard::KeyCommand))) &&
				    (((flags & SC_SHIFT) && Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift))   || (!(flags & SC_SHIFT) && !Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift))))
				{
					onKeyDown.Emit(param);

					return MessageProcessed;
				}
			}

			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, %r15d
movq %rdi, %r14
movq (%rdi), %rax
callq *0x88(%rax)
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
testb %al, %al
je 0x965be
movq (%r14), %rax
movq %r14, %rdi
callq *0x98(%rax)
xorl %r12d, %r12d
testb %al, %al
je 0x965be
movq 0x5c0(%r14), %rdi
testq %rdi, %rdi
je 0x964c5
movq (%rdi), %rax
callq *0x98(%rax)
testb %al, %al
je 0x965be
cmpl $0x780e, %r15d          # imm = 0x780E
jne 0x9658b
cmpl %ebp, 0x5b8(%r14)
jne 0x9658b
testb $0x1, 0x30(%r14)
je 0x964f4
movl $0x12, %edi
callq 0x57510
testb %al, %al
jne 0x9650d
testb $0x1, 0x30(%r14)
jne 0x9658b
movl $0x12, %edi
callq 0x57510
testb %al, %al
jne 0x9658b
testb $0x2, 0x30(%r14)
je 0x96522
movl $0x11, %edi
callq 0x57510
testb %al, %al
jne 0x96537
testb $0x2, 0x30(%r14)
jne 0x9658b
movl $0x11, %edi
callq 0x57510
testb %al, %al
jne 0x9658b
testb $0x4, 0x30(%r14)
je 0x9654c
movl $0x5b, %edi
callq 0x57510
testb %al, %al
jne 0x96561
testb $0x4, 0x30(%r14)
jne 0x9658b
movl $0x5b, %edi
callq 0x57510
testb %al, %al
jne 0x9658b
testb $0x8, 0x30(%r14)
je 0x96576
movl $0x10, %edi
callq 0x57510
testb %al, %al
jne 0x965a2
testb $0x8, 0x30(%r14)
jne 0x9658b
movl $0x10, %edi
callq 0x57510
testb %al, %al
je 0x965a2
movq %r14, %rdi
movl %r15d, %esi
movl %ebp, %edx
movl %ebx, %ecx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x58220
movl 0x5bc(%r14), %esi
addq $0x5c8, %r14            # imm = 0x5C8
movq %r14, %rdi
callq 0x72dc0
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
movl %r12d, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq