LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
testb $0x1, 0xcd(%rax)
jne 0xcec68
jmp 0xcedf0
movq -0x48(%rbp), %rdi
addq $0xf0, %rdi
callq 0x5b800
movq -0x48(%rbp), %rcx
cmpl 0x640(%rcx), %eax
jne 0xcec9b
movq -0x48(%rbp), %rcx
movl 0x5c8(%rcx), %eax
cmpl 0x5cc(%rcx), %eax
jne 0xcec9b
jmp 0xcedf0
cmpl $0x20, -0xc(%rbp)
jl 0xcedf0
cmpl $0x7f, -0xc(%rbp)
je 0xcedf0
movq -0x48(%rbp), %rdi
movq (%rdi), %rax
callq *0x98(%rax)
testb $0x1, %al
jne 0xcecc5
jmp 0xcedf0
movq -0x48(%rbp), %rdx
movl 0x5c8(%rdx), %ecx
xorl %eax, %eax
cmpl 0x5cc(%rdx), %ecx
movb %al, -0x49(%rbp)
je 0xcecff
movq -0x48(%rbp), %rcx
xorl %eax, %eax
cmpl $0x0, 0x5c8(%rcx)
movb %al, -0x49(%rbp)
jl 0xcecff
movq -0x48(%rbp), %rax
cmpl $0x0, 0x5cc(%rax)
setge %al
movb %al, -0x49(%rbp)
movq -0x48(%rbp), %rdi
movb -0x49(%rbp), %al
andb $0x1, %al
movb %al, -0x11(%rbp)
movl 0x30(%rdi), %eax
orl $0x40000000, %eax       # imm = 0x40000000
movl %eax, 0x30(%rdi)
callq 0x5ded8
movq -0x48(%rbp), %rax
movl 0x30(%rax), %ecx
xorl $0x40000000, %ecx       # imm = 0x40000000
movl %ecx, 0x30(%rax)
movq 0x190(%rax), %rdi
callq 0x5a120
movl %eax, %edi
movl $0x1, %esi
callq 0x5ce30
testb $0x1, %al
jne 0xced49
jmp 0xced61
cmpl $0x30, -0xc(%rbp)
jl 0xced55
cmpl $0x39, -0xc(%rbp)
jle 0xced61
cmpl $0x2d, -0xc(%rbp)
je 0xced61
cmpl $0x2e, -0xc(%rbp)
jne 0xcedd6
leaq -0x30(%rbp), %rdi
movq %rdi, -0x68(%rbp)
xorl %esi, %esi
movl %esi, -0x60(%rbp)
callq 0x5da90
movq -0x68(%rbp), %rdi
movl -0x60(%rbp), %esi
movl -0xc(%rbp), %eax
movl %eax, -0x5c(%rbp)
callq 0x5d4e0
movq %rax, -0x58(%rbp)
jmp 0xced8b
movq -0x58(%rbp), %rax
movl -0x5c(%rbp), %ecx
movl %ecx, (%rax)
testb $0x1, -0x11(%rbp)
je 0xcedbe
movq -0x48(%rbp), %rdi
callq 0x5ad60
jmp 0xceda5
jmp 0xcedbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5df00
jmp 0xcedf6
movq -0x48(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x5a3c0
jmp 0xcedcd
leaq -0x30(%rbp), %rdi
callq 0x5df00
movq -0x48(%rbp), %rsi
movq %rsi, %rdi
addq $0x708, %rdi            # imm = 0x708
addq $0xf0, %rsi
callq 0x97960
addq $0x70, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nop
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x90(%rbp)
movq %rdi, %rax
movq %rax, -0x98(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movb $0x0, -0x15(%rbp)
movq -0x10(%rbp), %rsi
callq 0x5b6d0
movq -0x90(%rbp), %rdi
callq 0x5b800
movl %eax, -0x84(%rbp)
jmp 0xcee48
movl -0x84(%rbp), %eax
movl %eax, -0x1c(%rbp)
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0xcefd1
movq -0x90(%rbp), %rdi
movl -0x30(%rbp), %esi
callq 0x5d4e0
movq %rax, -0xa0(%rbp)
jmp 0xcee7c
movq -0xa0(%rbp), %rax
cmpl $0x9, (%rax)
je 0xcee9e
jmp 0xcef7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0xceff7
movq -0x90(%rbp), %rsi
movl -0x14(%rbp), %ecx
movl %ecx, -0xa4(%rbp)
movl -0x30(%rbp), %eax
cltd
idivl %ecx
movl -0xa4(%rbp), %eax
subl %edx, %eax
movl %eax, -0x34(%rbp)
movl -0x30(%rbp), %edx
leaq -0x50(%rbp), %rdi
callq 0x5d6b0
jmp 0xceecd
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
callq 0x5da90
jmp 0xceeda
movl -0x34(%rbp), %edx
leaq -0x68(%rbp), %rdi
movl $0x20, %esi
callq 0x5c480
movq %rax, -0xb0(%rbp)
jmp 0xceef4
movq -0xb0(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x5a710
movq %rax, -0xb8(%rbp)
jmp 0xcef0d
movq -0x90(%rbp), %rsi
movl -0x1c(%rbp), %eax
movl -0x30(%rbp), %edx
notl %edx
addl %eax, %edx
leaq -0x80(%rbp), %rdi
callq 0x5c8a0
jmp 0xcef29
movq -0xb8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x5a710
movq %rax, -0xc0(%rbp)
jmp 0xcef42
movq -0xc0(%rbp), %rsi
movq -0x90(%rbp), %rdi
callq 0x59760
jmp 0xcef57
leaq -0x80(%rbp), %rdi
callq 0x5df00
leaq -0x68(%rbp), %rdi
callq 0x5df00
leaq -0x50(%rbp), %rdi
callq 0x5df00
movl -0x34(%rbp), %eax
subl $0x1, %eax
addl -0x1c(%rbp), %eax
movl %eax, -0x1c(%rbp)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0xcee58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0xcefc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0xcefbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x5df00
leaq -0x68(%rbp), %rdi
callq 0x5df00
leaq -0x50(%rbp), %rdi
callq 0x5df00
jmp 0xceff7
movb $0x1, -0x15(%rbp)
testb $0x1, -0x15(%rbp)
jne 0xcefe7
movq -0x90(%rbp), %rdi
callq 0x5df00
movq -0x98(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
movq -0x90(%rbp), %rdi
callq 0x5df00
movq -0x28(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5b800
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
jne 0xcf037
movb $0x0, -0x1(%rbp)
jmp 0xcf139
movb $0x0, -0x15(%rbp)
movq 0x1392ee(%rip), %rax    # 0x208330
testb $0x1, (%rax)
je 0xcf0e7
movl -0x14(%rbp), %eax
addl $0x1, %eax
cltq
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x5ab20
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
leaq 0xbbc16(%rip), %rsi     # 0x18ac99
callq 0x5c120
movq %rax, %rdi
movl -0x14(%rbp), %esi
movq -0x20(%rbp), %rdx
callq 0x5c580
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0xcf0ce
movq -0x20(%rbp), %rax
movslq -0x24(%rbp), %rcx
movl (%rax,%rcx,4), %eax
andq $0x1, %rax
cmpq $0x0, %rax
je 0xcf0c1
movb $0x1, -0x15(%rbp)
jmp 0xcf0ce
jmp 0xcf0c3
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0xcf09e
movq -0x20(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0xcf0e5
movq -0x30(%rbp), %rdi
callq 0x5a5e0
jmp 0xcf131
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0xcf12f
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0x5c900
cmpl $0x590, %eax            # imm = 0x590
jl 0xcf122
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0x5c900
cmpl $0x8ff, %eax            # imm = 0x8FF
jg 0xcf122
movb $0x1, -0x15(%rbp)
jmp 0xcf12f
jmp 0xcf124
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0xcf0ee
jmp 0xcf131
movb -0x15(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x80(%rbp)
addq $0xf0, %rdi
movq -0x18(%rbp), %rsi
callq 0x59ac0
testb $0x1, %al
jne 0xcfb41
jmp 0xcfb96
leaq -0x28(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x5ca80
movq -0x90(%rbp), %rdi
callq 0x59680
movl %eax, -0x84(%rbp)
jmp 0xcfb65
movl -0x84(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5a410
jmp 0xcfd01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5a410
jmp 0xcfd0d
movq -0x80(%rbp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq -0x80(%rbp), %rdi
movq %rax, -0x40(%rbp)
movq (%rdi), %rax
callq *0x48(%rax)
movq -0x80(%rbp), %rdi
movq %rax, -0x58(%rbp)
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, -0x60(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x58(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x59ff0
movq -0x80(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
andb $0x1, %al
movb %al, -0x61(%rbp)
testb $0x1, -0x61(%rbp)
je 0xcfbf6
movq -0x40(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x591b0
movq -0x80(%rbp), %rdi
xorl %esi, %esi
callq 0x5d4c0
movq -0x80(%rbp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %edx, %esi
callq 0x5b020
movq -0x80(%rbp), %rdi
addq $0x5e8, %rdi            # imm = 0x5E8
callq 0xb5980
movq -0x80(%rbp), %rax
cmpq $0x0, 0x5b8(%rax)
je 0xcfc4e
movq -0x80(%rbp), %rax
movq 0x5b8(%rax), %rdi
callq 0x5d8d0
movq -0x80(%rbp), %rax
movq $0x0, 0x5b8(%rax)
movq -0x18(%rbp), %rdi
callq 0x5b800
movq -0x80(%rbp), %rdi
movl %eax, 0x5c0(%rdi)
movl $0x0, 0x5d0(%rdi)
movl $0x0, 0x5d4(%rdi)
callq 0x5cbe0
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5b380
movq -0x80(%rbp), %rdi
movq (%rdi), %rax
callq *0x98(%rax)
testb $0x1, %al
jne 0xcfc9a
jmp 0xcfca3
movq -0x80(%rbp), %rdi
callq 0x5d2f0
testb $0x1, -0x61(%rbp)
je 0xcfcb2
movq -0x40(%rbp), %rdi
callq 0x5d270
leaq -0x78(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x5ca80
movq -0xa0(%rbp), %rdi
callq 0x59680
movl %eax, -0x94(%rbp)
jmp 0xcfcd6
movl -0x94(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x5a410
jmp 0xcfd01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x5a410
jmp 0xcfd0d
movl -0x4(%rbp), %eax
addq $0xa0, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x5b6b0
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x40(%rbp)
xorl %esi, %esi
movl %esi, -0x44(%rbp)
callq 0x5d4c0
movq -0x40(%rbp), %rax
movl -0xc(%rbp), %edi
movl 0x5d8(%rax), %esi
callq 0x5ce90
movl -0x44(%rbp), %edi
movl %eax, %esi
callq 0x5aae0
movl -0x44(%rbp), %esi
movq -0x40(%rbp), %rdi
movl %eax, 0x5d4(%rdi)
movq (%rdi), %rax
movq 0x78(%rax), %rax
callq *%rax
movq -0x40(%rbp), %rax
movq %rax, %rdi
addq $0x748, %rdi            # imm = 0x748
movl 0x5d4(%rax), %esi
movl 0x5d8(%rax), %edx
callq 0x908f0
leaq -0x20(%rbp), %rdi
movq %rdi, -0x38(%rbp)
callq 0x5ca80
movq -0x38(%rbp), %rdi
callq 0x59680
movl %eax, -0x30(%rbp)
jmp 0xd018d
leaq -0x20(%rbp), %rdi
callq 0x5a410
movl -0x30(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
movq -0x28(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpl $0x1, 0x700(%rax)
jg 0xd0212
jmp 0xd02cf
movq -0x30(%rbp), %rdi
addq $0x5e8, %rdi            # imm = 0x5E8
callq 0xb5980
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq -0x30(%rbp), %rdi
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq (%rdi), %rax
callq *0x130(%rax)
movq -0x38(%rbp), %rdi
movq %rax, -0x20(%rbp)
movq %rdx, -0x18(%rbp)
leaq -0x20(%rbp), %rsi
callq 0x591b0
movq -0x30(%rbp), %rdi
movl 0x700(%rdi), %eax
addl $-0x1, %eax
movl %eax, 0x700(%rdi)
subl $0x1, %eax
movl %eax, -0x24(%rbp)
addq $0x650, %rdi            # imm = 0x650
movl -0x24(%rbp), %esi
callq 0x81b20
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x5b380
movq -0x30(%rbp), %rdi
addq $0x6a8, %rdi            # imm = 0x6A8
movl -0x24(%rbp), %esi
callq 0xb5a70
movq -0x30(%rbp), %rdi
movl (%rax), %esi
callq 0x5d5c0
movq -0x10(%rbp), %rdi
callq 0x5d270
movq -0x30(%rbp), %rsi
movq %rsi, %rdi
addq $0x708, %rdi            # imm = 0x708
addq $0xf0, %rsi
callq 0x97960
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x30(%rbp)
movl 0x700(%rdi), %eax
movl %eax, -0x28(%rbp)
addq $0x650, %rdi            # imm = 0x650
callq 0x5c990
movl %eax, %ecx
movl -0x28(%rbp), %eax
cmpl %ecx, %eax
jl 0xd0317
jmp 0xd03d3
movq -0x30(%rbp), %rdi
addq $0x5e8, %rdi            # imm = 0x5E8
callq 0xb5980
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq -0x30(%rbp), %rdi
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq (%rdi), %rax
callq *0x130(%rax)
movq -0x38(%rbp), %rdi
movq %rax, -0x20(%rbp)
movq %rdx, -0x18(%rbp)
leaq -0x20(%rbp), %rsi
callq 0x591b0
movq -0x30(%rbp), %rdi
movl 0x700(%rdi), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x700(%rdi)
movl %eax, -0x24(%rbp)
addq $0x650, %rdi            # imm = 0x650
movl -0x24(%rbp), %esi
callq 0x81b20
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x5b380
movq -0x30(%rbp), %rdi
addq $0x6a8, %rdi            # imm = 0x6A8
movl -0x24(%rbp), %esi
callq 0xb5a70
movq -0x30(%rbp), %rdi
movl (%rax), %esi
callq 0x5d5c0
movq -0x10(%rbp), %rdi
callq 0x5d270
movq -0x30(%rbp), %rsi
movq %rsi, %rdi
addq $0x708, %rdi            # imm = 0x708
addq $0xf0, %rsi
callq 0x97960
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x10(%rbp), %rdi
movq %rdi, -0x60(%rbp)
callq 0x5b530
leaq -0x18(%rbp), %rdi
movq %rdi, -0x58(%rbp)
movl $0x1000, %edx           # imm = 0x1000
movl %edx, %esi
callq 0x59260
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x50(%rbp), %rdi
callq 0x5c220
movq -0x50(%rbp), %rdi
movq 0x1371ac(%rip), %rax    # 0x208f90
addq $0x10, %rax
movq %rax, (%rdi)
addq $0x5b8, %rdi            # imm = 0x5B8
callq 0x5b530
jmp 0xd1df9
movq -0x50(%rbp), %rdi
movq 0x13704c(%rip), %rax    # 0x208e50
movswl (%rax), %esi
addq $0x20, %rdi
callq 0x5a2e0
jmp 0xd1e12
movq -0x50(%rbp), %rax
movw $0x40, 0xd0(%rax)
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x59820
movq %rax, -0x68(%rbp)
jmp 0xd1e2f
movq -0x50(%rbp), %rdi
callq 0x5d740
movq %rax, -0x70(%rbp)
jmp 0xd1e3e
movq -0x50(%rbp), %rdi
callq 0x5bf70
movq %rax, -0x78(%rbp)
jmp 0xd1e4d
movq -0x78(%rbp), %rdx
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdi
callq 0x59c30
jmp 0xd1e60
movq -0x50(%rbp), %rcx
movq -0x68(%rbp), %rax
movq %rax, 0x5c0(%rcx)
movq 0x5c0(%rcx), %rdi
addq $0x3f8, %rdi            # imm = 0x3F8
movq 0x1369bc(%rip), %rax    # 0x208840
movq %rax, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq 0xd20f0
jmp 0xd1e9f
movq -0x50(%rbp), %rcx
movq 0x5c0(%rcx), %rdi
addq $0x418, %rdi            # imm = 0x418
movq 0x136ad0(%rip), %rax    # 0x208988
movq %rax, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0xd20f0
jmp 0xd1ed3
movq -0x50(%rbp), %rdi
movq 0x5c0(%rdi), %rsi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
jmp 0xd1ee9
addq $0x80, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xd1f1a
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x5b8, %esi            # imm = 0x5B8
callq 0x595b0
movq -0x50(%rbp), %rdi
callq 0x5bd90
movq -0x20(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x48(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x5c220
movq -0x48(%rbp), %rdi
movq 0x135f64(%rip), %rax    # 0x2083c8
addq $0x10, %rax
movq %rax, (%rdi)
addq $0x5b8, %rdi            # imm = 0x5B8
movq %rdi, -0x40(%rbp)
callq 0x97240
jmp 0xd247d
movq -0x48(%rbp), %rdi
addq $0x5d8, %rdi            # imm = 0x5D8
movq %rdi, -0x50(%rbp)
callq 0xd2940
jmp 0xd2493
movq -0x48(%rbp), %rdi
movq 0x1360fa(%rip), %rax    # 0x208598
movswl (%rax), %esi
addq $0x20, %rdi
callq 0x5a2e0
jmp 0xd24ac
movq -0x48(%rbp), %rdi
movb $0x1, 0xd3(%rdi)
movw $0x80, 0xd0(%rdi)
callq 0x5bf70
movq %rax, -0x58(%rbp)
jmp 0xd24cb
leaq -0x2c(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x59260
jmp 0xd24da
movq -0x58(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0x59830
movb %al, -0x59(%rbp)
jmp 0xd24ec
movb -0x59(%rbp), %al
testb $0x1, %al
jne 0xd24f5
jmp 0xd254b
leaq -0x34(%rbp), %rdi
movl $0x1000, %edx           # imm = 0x1000
movl %edx, %esi
callq 0x59260
jmp 0xd2507
movq -0x48(%rbp), %rdi
leaq -0x34(%rbp), %rsi
callq 0x5de18
jmp 0xd2516
jmp 0xd254b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xd2584
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xd257b
movq -0x50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0xd2990
jmp 0xd257b
movq -0x48(%rbp), %rsi
movq %rsi, %rdi
addq $0x5b8, %rdi            # imm = 0x5B8
callq 0x8ad00
jmp 0xd2560
movq -0x48(%rbp), %rsi
movq %rsi, %rdi
addq $0x5d8, %rdi            # imm = 0x5D8
callq 0x8ad00
jmp 0xd2575
addq $0x60, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x976c0
movq -0x48(%rbp), %rdi
callq 0x5bd90
movq -0x20(%rbp), %rdi
callq 0x5b6b0
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x24(%rbp), %rdi
movq %rdi, -0x60(%rbp)
callq 0x5b530
leaq -0x2c(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0x59230
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x50(%rbp), %rdi
callq 0x5c220
movq -0x50(%rbp), %rdi
movq 0x135fe8(%rip), %rax    # 0x208d50
addq $0x10, %rax
movq %rax, (%rdi)
addq $0x5c8, %rdi            # imm = 0x5C8
movq %rdi, -0x48(%rbp)
callq 0x90210
jmp 0xd2d81
movq -0x50(%rbp), %rdi
movq 0x1357e4(%rip), %rax    # 0x208570
movswl (%rax), %esi
addq $0x20, %rdi
callq 0x5a2e0
jmp 0xd2d9a
movq -0x50(%rbp), %rsi
movw $0x80, 0xd0(%rsi)
movl -0x10(%rbp), %eax
movl %eax, 0x5b8(%rsi)
movl -0xc(%rbp), %eax
movl %eax, 0x30(%rsi)
movl -0x1c(%rbp), %eax
movl %eax, 0x5bc(%rsi)
movq -0x18(%rbp), %rax
movq %rax, 0x5c0(%rsi)
movq %rsi, %rdi
addq $0x5c8, %rdi            # imm = 0x5C8
callq 0x8ad00
jmp 0xd2ddb
addq $0x60, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xd2e04
movq -0x48(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x90610
movq -0x50(%rbp), %rdi
callq 0x5bd90
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/special/shortcut.cpp
// Function: smooth::GUI::Shortcut::SetShortcut(int, int, smooth::GUI::Widget*, int)
S::Int S::GUI::Shortcut::SetShortcut(Int nFlags, Int nKey, Widget *nRef, Int nParam)
{
	key	= nKey;
	flags	= nFlags;
	param	= nParam;
	ref	= nRef;

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movl -0x10(%rbp), %ecx
movl %ecx, 0x5b8(%rax)
movl -0xc(%rbp), %ecx
movl %ecx, 0x30(%rax)
movl -0x1c(%rbp), %ecx
movl %ecx, 0x5bc(%rax)
movq -0x18(%rbp), %rcx
movq %rcx, 0x5c0(%rax)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x5ca80
movq -0x48(%rbp), %rdi
callq 0x59680
movl %eax, -0x40(%rbp)
jmp 0xd31bc
leaq -0x30(%rbp), %rdi
callq 0x5a410
movl -0x40(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5a410
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/special/tooltip.cpp
// Function: smooth::GUI::Tooltip::Tooltip()
S::GUI::Tooltip::Tooltip() : Widget(Point(), Size())
{
	type		= classID;
	orientation	= OR_FREE;
	toolWindow	= NIL;
	timeOut		= 5000;
	timer		= NIL;

	layer		= NIL;

	font.SetColor(Setup::TooltipTextColor);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
leaq -0x10(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x5b530
leaq -0x18(%rbp), %rdi
movq %rdi, -0x38(%rbp)
callq 0x59230
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x30(%rbp), %rdi
callq 0x5c220
movq -0x30(%rbp), %rdi
movq 0x1349de(%rip), %rax    # 0x208d38
addq $0x10, %rax
movq %rax, (%rdi)
movq 0x1342b8(%rip), %rax    # 0x208620
movswl (%rax), %esi
addq $0x20, %rdi
callq 0x5a2e0
jmp 0xd4376
movq -0x30(%rbp), %rdi
movw $0x80, 0xd0(%rdi)
movq $0x0, 0x5b8(%rdi)
movl $0x1388, 0x5c8(%rdi)    # imm = 0x1388
movq $0x0, 0x5c0(%rdi)
movq $0x0, 0x5d0(%rdi)
addq $0x140, %rdi            # imm = 0x140
movq 0x1344ac(%rip), %rsi    # 0x208868
callq 0x5d110
jmp 0xd43c3
addq $0x40, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x5bd90
movq -0x20(%rbp), %rdi
callq 0x5b6b0
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/special/tooltip.cpp
// Function: smooth::GUI::Tooltip::~Tooltip()
S::GUI::Tooltip::~Tooltip()
{
	if (timer != NIL)
	{
		timer->Stop();

		DeleteObject(timer);
	}

	if (toolWindow != NIL) DeleteObject(toolWindow);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq 0x13492d(%rip), %rcx    # 0x208d38
addq $0x10, %rcx
movq %rcx, (%rax)
cmpq $0x0, 0x5c0(%rax)
je 0xd4442
movq -0x10(%rbp), %rax
movq 0x5c0(%rax), %rdi
callq 0x5de90
jmp 0xd442e
movq -0x10(%rbp), %rax
movq 0x5c0(%rax), %rdi
callq 0x5d8d0
jmp 0xd4440
jmp 0xd4442
movq -0x10(%rbp), %rax
cmpq $0x0, 0x5b8(%rax)
je 0xd4464
movq -0x10(%rbp), %rax
movq 0x5b8(%rax), %rdi
callq 0x5d8d0
jmp 0xd4462
jmp 0xd4464
movq -0x10(%rbp), %rdi
callq 0x5bd90
addq $0x10, %rsp
popq %rbp
retq
movq %rax, %rdi
callq 0x61c50
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/special/tooltip.cpp
// Function: smooth::GUI::Tooltip::OnToolWindowPaint()
S::Void S::GUI::Tooltip::OnToolWindowPaint()
{
	Surface	*surface = toolWindow->GetDrawSurface();
	Rect	 tRect	 = Rect(Point(0, 0), surface->GetSize());

	surface->Box(tRect, Color(0, 0, 0), Rect::Outlined);

	surface->SetText(text, tRect + Point(2, 1), font);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x70(%rbp)
movq 0x5b8(%rax), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq %rax, -0x10(%rbp)
leaq -0x28(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x5c2c0
movq -0x10(%rbp), %rdi
callq 0x5c280
movq %rax, %rdx
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x59ff0
movq -0x10(%rbp), %rax
movq %rax, -0x80(%rbp)
leaq -0x38(%rbp), %rdi
xorl %r8d, %r8d
movl %r8d, %esi
movl %r8d, %edx
movl %r8d, %ecx
callq 0x5a6b0
movq 0x133c86(%rip), %rax    # 0x2087f8
movl (%rax), %eax
movl %eax, -0x74(%rbp)
leaq -0x40(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x59260
movq -0x80(%rbp), %rdi
movl -0x74(%rbp), %ecx
leaq -0x20(%rbp), %rsi
leaq -0x38(%rbp), %rdx
leaq -0x40(%rbp), %r8
callq 0x5c110
movq -0x70(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, -0x68(%rbp)
addq $0xf0, %rax
movq %rax, -0x60(%rbp)
leaq -0x58(%rbp), %rdi
movl $0x2, %esi
movl $0x1, %edx
callq 0x5c2c0
leaq -0x20(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x5be80
movq -0x70(%rbp), %rcx
movq -0x68(%rbp), %rdi
movq -0x60(%rbp), %rsi
movq %rax, -0x50(%rbp)
movq %rdx, -0x48(%rbp)
addq $0x140, %rcx            # imm = 0x140
leaq -0x50(%rbp), %rdx
xorl %r8d, %r8d
callq 0x5c3f0
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/special/tooltip.cpp
// Function: smooth::GUI::Tooltip::OnToolWindowEvent(int, int, int)
S::Void S::GUI::Tooltip::OnToolWindowEvent(Int message, Int wParam, Int lParam)
{
	static Bool	 forwarding = False;

	if (forwarding) return;

	Window	*window	= container ? container->GetContainerWindow() : NIL;

	if (window == NIL) return;

	forwarding = True;

	EnterProtectedRegion();

	switch (message)
	{
		/* Forward mouse wheel messages posted to
		 * the tool window to our parent window.
		 */
		case SM_MOUSEWHEEL:
			window->Process(message, wParam, lParam);

			break;

		/* Pass on keyboard events as well and hide
		 * the tooltip immediately after char events.
		 */
		case SM_KEYDOWN:
		case SM_KEYUP:
#ifdef __WIN32__
			window->Process(message, wParam, lParam);
#endif
			break;
		case SM_CHAR:
#ifdef __WIN32__
			window->Process(message, wParam, lParam);
#endif
			Hide();

			break;
	}

	LeaveProtectedRegion();

	forwarding = False;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movl %ecx, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
testb $0x1, 0x1378c4(%rip)    # 0x20c4f8
je 0xd4c3b
jmp 0xd4ce6
movq -0x28(%rbp), %rax
cmpq $0x0, 0x190(%rax)
je 0xd4c5f
movq -0x28(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq %rax, -0x30(%rbp)
jmp 0xd4c67
xorl %eax, %eax
movq %rax, -0x30(%rbp)
jmp 0xd4c67
movq -0x30(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0xd4c78
jmp 0xd4ce6
movq -0x28(%rbp), %rdi
movb $0x1, 0x137875(%rip)    # 0x20c4f8
callq 0x5b7c0
movl -0xc(%rbp), %eax
movl %eax, -0x34(%rbp)
subl $0x780c, %eax           # imm = 0x780C
je 0xd4cb2
jmp 0xd4c97
movl -0x34(%rbp), %eax
addl $0xffff87f2, %eax       # imm = 0xFFFF87F2
subl $0x2, %eax
jb 0xd4cca
jmp 0xd4ca6
movl -0x34(%rbp), %eax
subl $0x7810, %eax           # imm = 0x7810
je 0xd4ccc
jmp 0xd4cd6
movq -0x20(%rbp), %rdi
movl -0xc(%rbp), %esi
movl -0x10(%rbp), %edx
movl -0x14(%rbp), %ecx
movq (%rdi), %rax
callq *0x80(%rax)
jmp 0xd4cd6
jmp 0xd4cd6
movq -0x28(%rbp), %rdi
movq (%rdi), %rax
callq *0x60(%rax)
movq -0x28(%rbp), %rdi
callq 0x594d0
movb $0x0, 0x137812(%rip)    # 0x20c4f8
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/special/tooltip.cpp
// Function: smooth::GUI::Tooltip::OnTimer()
S::Void S::GUI::Tooltip::OnTimer()
{
	Hide();

	timer->Stop();

	DeleteObject(timer);

	timer = NIL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x10(%rbp)
movq (%rdi), %rax
callq *0x60(%rax)
movq -0x10(%rbp), %rax
movq 0x5c0(%rax), %rdi
callq 0x5de90
movq -0x10(%rbp), %rax
movq 0x5c0(%rax), %rdi
callq 0x5d8d0
movq -0x10(%rbp), %rax
movq $0x0, 0x5c0(%rax)
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/special/tooltip.cpp
// Function: smooth::GUI::Tooltip::Hide()
S::Int S::GUI::Tooltip::Hide()
{
	if (!visible) return Success();

	visible = False;

	if (!IsRegistered()) return Success();

	if (toolWindow != NIL)
	{
		toolWindow->Close();

		Remove(toolWindow);

		if (layer != NIL) toolWindow->Remove(layer);

		toolWindow->onPaint.Disconnect(&Tooltip::OnToolWindowPaint, this);
		toolWindow->onEvent.Disconnect(&Tooltip::OnToolWindowEvent, this);

		DeleteObject(toolWindow);

		toolWindow = NIL;
	}

	onHide.Emit();

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
testb $0x1, 0xcb(%rax)
jne 0xd4daf
leaq -0x20(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x5ca80
movq -0x88(%rbp), %rdi
callq 0x59680
movl %eax, -0x7c(%rbp)
jmp 0xd4d81
movl -0x7c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
jmp 0xd4f57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
jmp 0xd4f63
movq -0x78(%rbp), %rdi
movb $0x0, 0xcb(%rdi)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xd4e1c
leaq -0x40(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x5ca80
movq -0x98(%rbp), %rdi
callq 0x59680
movl %eax, -0x8c(%rbp)
jmp 0xd4deb
movl -0x8c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5a410
jmp 0xd4f57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5a410
jmp 0xd4f63
movq -0x78(%rbp), %rax
cmpq $0x0, 0x5b8(%rax)
je 0xd4ef8
movq -0x78(%rbp), %rax
movq 0x5b8(%rax), %rdi
callq 0x5ce80
movq -0x78(%rbp), %rdi
movq 0x5b8(%rdi), %rsi
movq (%rdi), %rax
callq *0x38(%rax)
movq -0x78(%rbp), %rax
cmpq $0x0, 0x5d0(%rax)
je 0xd4e75
movq -0x78(%rbp), %rax
movq 0x5b8(%rax), %rdi
movq 0x5d0(%rax), %rsi
movq (%rdi), %rax
callq *0x38(%rax)
movq -0x78(%rbp), %rcx
movq 0x5b8(%rcx), %rdi
addq $0x648, %rdi            # imm = 0x648
movq 0x13349a(%rip), %rax    # 0x208328
movq %rax, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
callq 0xd51f0
movq -0x78(%rbp), %rcx
movq 0x5b8(%rcx), %rdi
addq $0x668, %rdi            # imm = 0x668
movq 0x133d78(%rip), %rax    # 0x208c38
movq %rax, -0x60(%rbp)
movq $0x0, -0x58(%rbp)
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
callq 0xd5370
movq -0x78(%rbp), %rax
movq 0x5b8(%rax), %rdi
callq 0x5d8d0
movq -0x78(%rbp), %rax
movq $0x0, 0x5b8(%rax)
movq -0x78(%rbp), %rdi
addq $0x218, %rdi            # imm = 0x218
callq 0x8af60
leaq -0x70(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x5ca80
movq -0xa8(%rbp), %rdi
callq 0x59680
movl %eax, -0x9c(%rbp)
jmp 0xd4f2c
movl -0x9c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x5a410
jmp 0xd4f57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x5a410
jmp 0xd4f63
movl -0x4(%rbp), %eax
addq $0xb0, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/window/toolwindow.cpp
// Function: smooth::GUI::ToolWindow::ToolWindow(smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::ToolWindow::ToolWindow(const Point &iPos, const Size &iSize) : Window("smooth ToolWindow", iPos, iSize)
{
	type		= classID;
	orientation	= OR_FREE;
	visible		= True;

	frameWidth	= 0;

	backend->SetSizeModifier(Size());

	SetFlags(WF_TOPMOST | WF_NOTASKBUTTON | WF_THINBORDER);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0xb5549(%rip), %rsi     # 0x18af1c
leaq -0x30(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0x5c1f0
movq -0x58(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r8d
callq 0x5d810
jmp 0xd59fc
leaq -0x30(%rbp), %rdi
callq 0x5df00
movq -0x58(%rbp), %rdi
movq 0x132b80(%rip), %rax    # 0x208590
addq $0x10, %rax
movq %rax, (%rdi)
movq 0x1332aa(%rip), %rax    # 0x208cc8
movswl (%rax), %esi
addq $0x20, %rdi
callq 0x5a2e0
jmp 0xd5a2c
movq -0x58(%rbp), %rax
movw $0x80, 0xd0(%rax)
movb $0x1, 0xcb(%rax)
movl $0x0, 0x5e8(%rax)
movq 0x5c0(%rax), %rax
movq %rax, -0x60(%rbp)
leaq -0x44(%rbp), %rdi
callq 0x59230
jmp 0xd5a60
movq -0x60(%rbp), %rdi
leaq -0x44(%rbp), %rsi
callq 0xdcdd0
jmp 0xd5a6f
movq -0x58(%rbp), %rdi
movl $0x1a, %esi
callq 0x59730
jmp 0xd5a7f
addq $0x60, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5df00
jmp 0xd5ab1
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x59b90
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/window/toolwindow.cpp
// Function: smooth::GUI::ToolWindow::Create()
S::Bool S::GUI::ToolWindow::Create()
{
	if (IsRegistered())
	{
		Window	*containerWindow = container->GetContainerWindow();

		if (containerWindow != NIL)
		{
			if (IsRightToLeft()) Window::SetMetrics(Point(containerWindow->GetRealSize().cx - (GetX() + GetRealSize().cx), GetY()), GetSize());

			Window::SetMetrics(GetPosition() + containerWindow->GetPosition(), GetSize());
		}
	}

	return Window::Create();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x38(%rbp)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xd5b36
jmp 0xd5c18
movq -0x38(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0xd5c16
movq -0x38(%rbp), %rdi
movq (%rdi), %rax
callq *0x160(%rax)
testb $0x1, %al
jne 0xd5b68
jmp 0xd5bd7
movq -0x10(%rbp), %rdi
movq (%rdi), %rax
callq *0x50(%rax)
movq -0x38(%rbp), %rdi
movq %rax, -0x20(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0x40(%rbp)
callq 0x5dab0
movq -0x38(%rbp), %rdi
movl %eax, -0x44(%rbp)
movq (%rdi), %rax
callq *0x50(%rax)
movl -0x44(%rbp), %ecx
movq -0x38(%rbp), %rdi
movq %rax, %rdx
movl -0x40(%rbp), %eax
movq %rdx, -0x28(%rbp)
addl -0x28(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0x3c(%rbp)
callq 0x5ddb0
movl -0x3c(%rbp), %esi
movl %eax, %edx
leaq -0x18(%rbp), %rdi
callq 0x5c2c0
movq -0x38(%rbp), %rdi
callq 0x5bf70
movq -0x38(%rbp), %rdi
movq %rax, %rdx
leaq -0x18(%rbp), %rsi
callq 0x59e40
movq -0x38(%rbp), %rdi
callq 0x5d740
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5d740
movq -0x50(%rbp), %rdi
movq %rax, %rsi
callq 0x5ca20
movq -0x38(%rbp), %rdi
movq %rax, -0x30(%rbp)
callq 0x5bf70
movq -0x38(%rbp), %rdi
movq %rax, %rdx
leaq -0x30(%rbp), %rsi
callq 0x59e40
jmp 0xd5c18
movq -0x38(%rbp), %rdi
callq 0x59510
andb $0x1, %al
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/window/toolwindow.cpp
// Function: smooth::GUI::ToolWindow::SetMetrics(smooth::GUI::Point const&, smooth::GUI::Size const&)
S::Int S::GUI::ToolWindow::SetMetrics(const Point &nPos, const Size &nSize)
{
	Point	 position = nPos;

	if (IsRegistered() && created)
	{
		Window	*containerWindow = container->GetContainerWindow();

		if (containerWindow != NIL)
		{
			if (IsRightToLeft())
			{
				Surface	*surface  = GetDrawSurface();
				Float	 fontSize = surface->GetSurfaceDPI() / 96.0;

				position.x = containerWindow->GetRealSize().cx - (nPos.x + Math::Round(nSize.cx * fontSize));
			}

			position += containerWindow->GetPosition();
		}
	}

	return Window::SetMetrics(position, nSize);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x48(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xd5c69
jmp 0xd5d37
movq -0x48(%rbp), %rax
testb $0x1, 0x5ca(%rax)
je 0xd5d37
movq -0x48(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0xd5d35
movq -0x48(%rbp), %rdi
movq (%rdi), %rax
callq *0x160(%rax)
testb $0x1, %al
jne 0xd5cac
jmp 0xd5d20
movq -0x48(%rbp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x5d470
cwtl
cvtsi2sd %eax, %xmm0
movsd 0xb17f0(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movq -0x28(%rbp), %rdi
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, -0x40(%rbp)
movslq -0x40(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rax
movslq (%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rax
cvtsi2sdl (%rax), %xmm0
mulsd -0x38(%rbp), %xmm0
callq 0x5a970
movq -0x58(%rbp), %rcx
movq %rax, %rdx
movq -0x50(%rbp), %rax
addq %rdx, %rcx
subq %rcx, %rax
movl %eax, -0x20(%rbp)
movq -0x28(%rbp), %rdi
callq 0x5d740
movq %rax, %rsi
leaq -0x20(%rbp), %rdi
callq 0x5a510
jmp 0xd5d37
movq -0x48(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq -0x20(%rbp), %rsi
callq 0x59e40
addq $0x60, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/window/toolwindow.cpp
// Function: smooth::GUI::ToolWindow::IsRightToLeft() const
S::Bool S::GUI::ToolWindow::IsRightToLeft() const
{
	if (IsRegistered() && layoutDirection == LD_DEFAULT)
	{
		Window	*containerWindow = container->GetContainerWindow();

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

	return Window::IsRightToLeft();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x20(%rbp)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xd5d73
jmp 0xd5db1
movq -0x20(%rbp), %rax
cmpl $0x0, 0x618(%rax)
jne 0xd5db1
movq -0x20(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0xd5daf
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
callq *0x160(%rax)
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0xd5dbf
jmp 0xd5db1
movq -0x20(%rbp), %rdi
callq 0x5bb30
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/window/window.cpp
// Function: smooth::GUI::Window::~Window()
S::GUI::Window::~Window()
{
	backend->onEvent.Disconnect(&Window::Process, this);

	if (created && !destroyed) backend->Close();

	Remove(mainLayer);
	DeleteObject(mainLayer);

	windows.Remove(GetHandle());

	delete backend;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rcx
movq %rcx, -0x20(%rbp)
movq 0x132155(%rip), %rax    # 0x208720
addq $0x10, %rax
movq %rax, (%rcx)
movq 0x5c0(%rcx), %rdi
addq $0x58, %rdi
movq $0x0, -0x10(%rbp)
movq $0x81, -0x18(%rbp)
movq -0x18(%rbp), %rsi
movq -0x10(%rbp), %rdx
callq 0xda9c0
jmp 0xd65fc
movq -0x20(%rbp), %rax
testb $0x1, 0x5ca(%rax)
je 0xd662f
movq -0x20(%rbp), %rax
movb 0x5cb(%rax), %al
testb $0x1, %al
jne 0xd662f
movq -0x20(%rbp), %rax
movq 0x5c0(%rax), %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
jmp 0xd662d
jmp 0xd662f
movq -0x20(%rbp), %rdi
movq 0x620(%rdi), %rsi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
jmp 0xd6645
movq -0x20(%rbp), %rax
movq 0x620(%rax), %rdi
callq 0x5d8d0
jmp 0xd6657
movq -0x20(%rbp), %rdi
callq 0x5d050
movl %eax, -0x24(%rbp)
jmp 0xd6665
movl -0x24(%rbp), %esi
movq 0x132019(%rip), %rdi    # 0x208688
callq 0x5d7a0
jmp 0xd6676
movq -0x20(%rbp), %rax
movq 0x5c0(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0xd6695
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq -0x20(%rbp), %rdi
addq $0x6b0, %rdi            # imm = 0x6B0
callq 0xda940
movq -0x20(%rbp), %rdi
addq $0x688, %rdi            # imm = 0x688
callq 0xda960
movq -0x20(%rbp), %rdi
addq $0x668, %rdi            # imm = 0x668
callq 0xda980
movq -0x20(%rbp), %rdi
addq $0x648, %rdi            # imm = 0x648
callq 0x8ad70
movq -0x20(%rbp), %rdi
addq $0x628, %rdi            # imm = 0x628
callq 0x8ad70
movq -0x20(%rbp), %rdi
addq $0x600, %rdi            # imm = 0x600
callq 0x5df00
movq -0x20(%rbp), %rdi
addq $0x5d0, %rdi            # imm = 0x5D0
callq 0x5de40
movq -0x20(%rbp), %rdi
callq 0x5bd90
addq $0x30, %rsp
popq %rbp
retq
movq %rax, %rdi
callq 0x61c50
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/window/window.cpp
// Function: smooth::GUI::Window::SetMetrics(smooth::GUI::Point const&, smooth::GUI::Size const&)
S::Int S::GUI::Window::SetMetrics(const Point &nPos, const Size &nSize)
{
	if (created && visible) backend->SetMetrics(nPos, nSize);

	Bool	 resized     = (GetSize() != nSize);
	Bool	 prevVisible = visible;

	visible = False;

	Widget::SetMetrics(nPos, nSize);

	if (resized) CalculateOffsets();

	visible = prevVisible;

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
testb $0x1, 0x5ca(%rax)
je 0xd679e
movq -0x48(%rbp), %rax
testb $0x1, 0xcb(%rax)
je 0xd679e
movq -0x48(%rbp), %rax
movq 0x5c0(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq (%rdi), %rax
callq *0x90(%rax)
movq -0x48(%rbp), %rdi
callq 0x5bf70
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x5d9c0
movq -0x48(%rbp), %rdi
andb $0x1, %al
movb %al, -0x19(%rbp)
movb 0xcb(%rdi), %al
andb $0x1, %al
movb %al, -0x1a(%rbp)
movb $0x0, 0xcb(%rdi)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x5b6a0
testb $0x1, -0x19(%rbp)
je 0xd67ea
movq -0x48(%rbp), %rdi
callq 0x5a1d0
movq -0x48(%rbp), %rax
movb -0x1a(%rbp), %cl
andb $0x1, %cl
movb %cl, 0xcb(%rax)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0x5ca80
movq -0x58(%rbp), %rdi
callq 0x59680
movl %eax, -0x4c(%rbp)
jmp 0xd6815
leaq -0x30(%rbp), %rdi
callq 0x5a410
movl -0x4c(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5a410
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/window/window.cpp
// Function: smooth::GUI::Window::SetIcon(smooth::GUI::Bitmap const&)
S::Int S::GUI::Window::SetIcon(const Bitmap &nIcon)
{
	Bitmap	 newIcon = nIcon;

#ifdef __WIN32__
	if (newIcon == NIL) newIcon = ImageLoader::Load(String("Icon:").Append(String::FromInt(IDI_ICON)));
#endif

	if (newIcon != NIL)
	{
		icon = newIcon;

		backend->SetIcon(icon);
	}

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x18(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x5b7e0
movq -0x48(%rbp), %rdi
xorl %esi, %esi
callq 0x5a830
movb %al, -0x39(%rbp)
jmp 0xd6f09
movb -0x39(%rbp), %al
testb $0x1, %al
jne 0xd6f12
jmp 0xd6f55
movq -0x50(%rbp), %rdi
addq $0x5d0, %rdi            # imm = 0x5D0
leaq -0x18(%rbp), %rsi
callq 0x5cca0
jmp 0xd6f28
movq -0x50(%rbp), %rsi
movq 0x5c0(%rsi), %rdi
addq $0x5d0, %rsi            # imm = 0x5D0
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
jmp 0xd6f45
jmp 0xd6f55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xd6f9e
leaq -0x38(%rbp), %rdi
callq 0x5ca80
jmp 0xd6f60
leaq -0x38(%rbp), %rdi
callq 0x59680
movl %eax, -0x54(%rbp)
jmp 0xd6f6e
leaq -0x38(%rbp), %rdi
callq 0x5a410
leaq -0x18(%rbp), %rdi
callq 0x5de40
movl -0x54(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x5a410
leaq -0x18(%rbp), %rdi
callq 0x5de40
movq -0x20(%rbp), %rdi
callq 0x5b6b0
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/window/window.cpp
// Function: smooth::GUI::Window::SetText(smooth::String const&)
S::Int S::GUI::Window::SetText(const String &nTitle)
{
	text = nTitle;

	if (created && !destroyed)
	{
		Process(SM_WINDOWTITLECHANGED, 0, 0);

		backend->SetTitle(text);
	}

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x38(%rbp)
movq -0x10(%rbp), %rsi
addq $0xf0, %rdi
callq 0x59760
movq -0x38(%rbp), %rax
testb $0x1, 0x5ca(%rax)
je 0xd70a1
movq -0x38(%rbp), %rax
movb 0x5cb(%rax), %al
testb $0x1, %al
jne 0xd70a1
movq -0x38(%rbp), %rdi
movq (%rdi), %rax
movl $0x780a, %esi           # imm = 0x780A
xorl %ecx, %ecx
movl %ecx, %edx
callq *0x80(%rax)
movq -0x38(%rbp), %rsi
movq 0x5c0(%rsi), %rdi
addq $0xf0, %rsi
movq (%rdi), %rax
callq *0x38(%rax)
leaq -0x20(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x5ca80
movq -0x48(%rbp), %rdi
callq 0x59680
movl %eax, -0x3c(%rbp)
jmp 0xd70bc
leaq -0x20(%rbp), %rdi
callq 0x5a410
movl -0x3c(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
movq -0x28(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)