LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menubar.cpp
// Function: smooth::GUI::Menubar::AddEntryInternal(smooth::String const&, smooth::GUI::Bitmap const&, smooth::GUI::PopupMenu*, bool*, int*, int)
S::GUI::MenuEntry *S::GUI::Menubar::AddEntryInternal(const String &text, const Bitmap &bitmap, PopupMenu *popupMenu, Bool *bVar, Int *iVar, Int iCode)
{
	MenuEntry	*newEntry = new MenubarEntry(text, bitmap, popupMenu, bVar, iVar, iCode);

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

		if (GetHeight() < newEntry->GetHeight() + 2) SetHeight(newEntry->GetHeight() + 2);
		if (GetWidth() < newEntry->GetWidth() + 3) SetWidth(newEntry->GetWidth() + 3);

		return newEntry;
	}

	DeleteObject(newEntry);

	return NIL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movl 0x10(%rbp), %eax
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movl $0x608, %edi            # imm = 0x608
callq 0x59820
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
movl 0x10(%rbp), %r10d
movq %rsp, %rax
movl %r10d, (%rax)
callq 0x5bbe0
jmp 0xba627
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rsi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
movl %eax, -0x84(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x5ca80
movq -0x80(%rbp), %rdi
callq 0x59680
movl %eax, -0x74(%rbp)
jmp 0xba661
leaq -0x60(%rbp), %rdi
callq 0x5a410
movl -0x74(%rbp), %ecx
movl -0x84(%rbp), %eax
cmpl %ecx, %eax
jne 0xba765
movq -0x70(%rbp), %rax
addq $0x5b8, %rax            # imm = 0x5B8
movq %rax, -0x90(%rbp)
movq -0x40(%rbp), %rdi
callq 0x5d050
movq -0x90(%rbp), %rdi
movl %eax, %esi
leaq 0xd00b1(%rip), %rdx     # 0x18a756
callq 0xb0fa0
movq -0x70(%rbp), %rdi
callq 0x5b860
movl %eax, -0x88(%rbp)
movq -0x40(%rbp), %rdi
callq 0x5b860
movl %eax, %ecx
movl -0x88(%rbp), %eax
addl $0x2, %ecx
cmpl %ecx, %eax
jge 0xba71d
movq -0x40(%rbp), %rdi
callq 0x5b860
movq -0x70(%rbp), %rdi
movl %eax, %esi
addl $0x2, %esi
callq 0x5bed0
jmp 0xba71d
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x608, %esi            # imm = 0x608
callq 0x595b0
jmp 0xba783
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x5a410
jmp 0xba783
movq -0x70(%rbp), %rdi
callq 0x5a210
movl %eax, -0x94(%rbp)
movq -0x40(%rbp), %rdi
callq 0x5a210
movl %eax, %ecx
movl -0x94(%rbp), %eax
addl $0x3, %ecx
cmpl %ecx, %eax
jge 0xba75b
movq -0x40(%rbp), %rdi
callq 0x5a210
movq -0x70(%rbp), %rdi
movl %eax, %esi
addl $0x3, %esi
callq 0x5db30
movq -0x40(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xba776
movq -0x40(%rbp), %rdi
callq 0x5d8d0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menubar.cpp
// Function: smooth::GUI::Menubar::Show()
S::Int S::GUI::Menubar::Show()
{
	if (visible) return Success();

#ifdef __APPLE__
	if (menubarCocoa != NIL) { visible = True; return menubarCocoa->Show(); }
#endif

	return Menu::Show();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
testb $0x1, 0xcb(%rax)
je 0xba7f0
leaq -0x20(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x5ca80
movq -0x48(%rbp), %rdi
callq 0x59680
movl %eax, -0x3c(%rbp)
jmp 0xba7c8
movl -0x3c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
jmp 0xba7fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
jmp 0xba805
movq -0x38(%rbp), %rdi
callq 0x5c770
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x5b6b0
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menubar.cpp
// Function: smooth::GUI::Menubar::Hide()
S::Int S::GUI::Menubar::Hide()
{
	if (!visible) return Success();

#ifdef __APPLE__
	if (menubarCocoa != NIL) { visible = False; return menubarCocoa->Hide(); }
#endif

	return Menu::Hide();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
testb $0x1, 0xcb(%rax)
jne 0xba870
leaq -0x20(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x5ca80
movq -0x48(%rbp), %rdi
callq 0x59680
movl %eax, -0x3c(%rbp)
jmp 0xba848
movl -0x3c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
jmp 0xba87c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
jmp 0xba885
movq -0x38(%rbp), %rdi
callq 0x59770
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x5b6b0
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menubar.cpp
// Function: smooth::GUI::Menubar::Process(int, int, int)
S::Int S::GUI::Menubar::Process(Int message, Int wParam, Int lParam)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

	if (orientation == OR_FREE) return Success();

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x68(%rbp)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xbb3bb
leaq -0x30(%rbp), %rdi
movq %rdi, -0x78(%rbp)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x5a9c0
movq -0x78(%rbp), %rdi
callq 0x59680
movl %eax, -0x6c(%rbp)
jmp 0xbb38d
movl -0x6c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5b5b0
jmp 0xbb491
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5b5b0
jmp 0xbb49d
movq -0x68(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xbb41b
leaq -0x50(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x5ca80
movq -0x88(%rbp), %rdi
callq 0x59680
movl %eax, -0x7c(%rbp)
jmp 0xbb3ed
movl -0x7c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5a410
jmp 0xbb491
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5a410
jmp 0xbb49d
movq -0x68(%rbp), %rax
movswl 0xd0(%rax), %eax
cmpl $0x80, %eax
jne 0xbb47c
leaq -0x60(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x5ca80
movq -0x98(%rbp), %rdi
callq 0x59680
movl %eax, -0x8c(%rbp)
jmp 0xbb451
movl -0x8c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x5a410
jmp 0xbb491
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x5a410
jmp 0xbb49d
movq -0x68(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
movl -0x1c(%rbp), %ecx
callq 0x5cbf0
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xa0, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menubarentry.cpp
// Function: smooth::GUI::MenubarEntry::ClosePopupMenu()
S::Void S::GUI::MenubarEntry::ClosePopupMenu()
{
	if (popup == NIL || popup->GetContainer() != this) return;

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

	Remove(popup);

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

	if (IsRegistered())
	{
		Window	*window	 = container->GetContainerWindow();
		Surface	*surface = GetDrawSurface();
		Rect	 frame	 = Rect(GetRealPosition(), GetRealSize());

		surface->StartPaint(frame);

		if (!window->IsMouseOn(frame)) Paint(SP_MOUSEOUT);

		hotspot->Activate();

		surface->EndPaint();
	}

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, 0x5b8(%rax)
je 0xbc467
movq -0x50(%rbp), %rax
movq 0x5b8(%rax), %rdi
callq 0x5c9c0
movq -0x50(%rbp), %rcx
cmpq %rcx, %rax
je 0xbc46c
jmp 0xbc5ad
movq -0x50(%rbp), %rdi
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xbc47f
jmp 0xbc4a8
movq -0x50(%rbp), %rax
movq 0x190(%rax), %rcx
movq %rcx, -0x58(%rbp)
movq 0x190(%rax), %rdi
callq 0x5a120
movq -0x58(%rbp), %rdi
movl %eax, %esi
andl $-0x3, %esi
callq 0x59730
movq -0x50(%rbp), %rdi
movq 0x5b8(%rdi), %rsi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq -0x50(%rbp), %rcx
movq 0x5b8(%rcx), %rdi
addq $0x698, %rdi            # imm = 0x698
movq 0x14c9a3(%rip), %rax    # 0x208e78
movq %rax, -0x18(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x18(%rbp), %rsi
movq -0x10(%rbp), %rdx
callq 0xbde60
movq -0x50(%rbp), %rdi
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xbc504
jmp 0xbc59a
movq -0x50(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq -0x50(%rbp), %rdi
movq %rax, -0x20(%rbp)
movq (%rdi), %rax
callq *0x40(%rax)
movq -0x50(%rbp), %rdi
movq %rax, -0x28(%rbp)
movq (%rdi), %rax
callq *0x48(%rax)
movq -0x50(%rbp), %rdi
movq %rax, -0x40(%rbp)
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, -0x48(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x40(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x59ff0
movq -0x28(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x591b0
movq -0x20(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x5c060
testb $0x1, %al
jne 0xbc580
movq -0x50(%rbp), %rdi
movq (%rdi), %rax
movl $0x3, %esi
callq *0x78(%rax)
movq -0x50(%rbp), %rax
movq 0x5f8(%rax), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
movq -0x28(%rbp), %rdi
callq 0x5d270
callq 0x5b700
movq %rax, %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x5f0(%rax)
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menubarentry.cpp
// Function: smooth::GUI::MenubarEntry::Show()
S::Int S::GUI::MenubarEntry::Show()
{
	if (visible) return Success();

#ifdef __APPLE__
	if (IsRegistered() && container->GetOrientation() == OR_FREE)
	{
		visible = True;

		onShow.Emit();
 
		return container->Paint(SP_UPDATE);
	}
#endif

	return MenuEntry::Show();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
testb $0x1, 0xcb(%rax)
je 0xbc7c0
leaq -0x20(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x5ca80
movq -0x48(%rbp), %rdi
callq 0x59680
movl %eax, -0x3c(%rbp)
jmp 0xbc798
movl -0x3c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
jmp 0xbc7cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
jmp 0xbc7d5
movq -0x38(%rbp), %rdi
callq 0x5c770
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x5b6b0
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menubarentry.cpp
// Function: smooth::GUI::MenubarEntry::Hide()
S::Int S::GUI::MenubarEntry::Hide()
{
	if (!visible) return Success();

#ifdef __APPLE__
	if (IsRegistered() && container->GetOrientation() == OR_FREE)
	{
		visible = False;

		onHide.Emit(); 

		return container->Paint(SP_UPDATE);
	}
#endif

	return MenuEntry::Hide();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
testb $0x1, 0xcb(%rax)
jne 0xbc840
leaq -0x20(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x5ca80
movq -0x48(%rbp), %rdi
callq 0x59680
movl %eax, -0x3c(%rbp)
jmp 0xbc818
movl -0x3c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
jmp 0xbc84c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x5a410
jmp 0xbc855
movq -0x38(%rbp), %rdi
callq 0x59770
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x5b6b0
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/../../../../../include/smooth/templates/signals/signal.h
// Function: smooth::Signal0<void>::GetNOfConnectedSlots() const
Int GetNOfConnectedSlots() const
			{
				if (slotsN == NIL && slots0 == NIL) return 0;

				if (slotsN == NIL) return slots0->Length();
				if (slots0 == NIL) return slotsN->Length();

				return slotsN->Length() + slots0->Length();
			}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, 0x10(%rax)
jne 0xbddef
movq -0x18(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0xbddef
movl $0x0, -0x4(%rbp)
jmp 0xbde52
movq -0x18(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0xbde0c
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x5c990
movl %eax, -0x4(%rbp)
jmp 0xbde52
movq -0x18(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0xbde29
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x5c990
movl %eax, -0x4(%rbp)
jmp 0xbde52
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x5c990
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, -0x1c(%rbp)
movq 0x18(%rax), %rdi
callq 0x5c990
movl %eax, %ecx
movl -0x1c(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menuentry.cpp
// Function: smooth::GUI::MenuEntry::MenuEntry(smooth::String const&, smooth::GUI::Bitmap const&, smooth::GUI::PopupMenu*, bool*, int*, int)
S::GUI::MenuEntry::MenuEntry(const String &iText, const Bitmap &iBitmap, PopupMenu *iPopup, Bool *ibVar, Int *iiVar, Int iiCode)
{
	type	    = classID;

	popup	    = NIL;
	bVar	    = ibVar;
	iVar	    = iiVar;
	iCode	    = iiCode;
	orientation = OR_LEFT;

	shortcut    = NIL;

	SetText(iText);
	SetBitmap(iBitmap);

	SetPopupMenu(iPopup);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movl 0x10(%rbp), %eax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0x5d430
movq -0x50(%rbp), %rdi
movq 0x14a8cd(%rip), %rax    # 0x208ce8
addq $0x10, %rax
movq %rax, (%rdi)
addq $0x5c0, %rdi            # imm = 0x5C0
movq %rdi, -0x48(%rbp)
xorl %esi, %esi
callq 0x5d4a0
jmp 0xbe436
movq -0x50(%rbp), %rdi
addq $0x5c8, %rdi            # imm = 0x5C8
movq %rdi, -0x58(%rbp)
xorl %esi, %esi
callq 0x5d4a0
jmp 0xbe44e
movq -0x50(%rbp), %rdi
movq 0x14a7e7(%rip), %rax    # 0x208c40
movswl (%rax), %esi
addq $0x20, %rdi
callq 0x5a2e0
jmp 0xbe467
movq -0x50(%rbp), %rdi
movq $0x0, 0x5b8(%rdi)
movq -0x28(%rbp), %rax
movq %rax, 0x5d8(%rdi)
movq -0x30(%rbp), %rax
movq %rax, 0x5e0(%rdi)
movl 0x10(%rbp), %eax
movl %eax, 0x5e8(%rdi)
movw $0x10, 0xd0(%rdi)
movq $0x0, 0x5d0(%rdi)
movq -0x10(%rbp), %rsi
movq (%rdi), %rax
movq 0xa0(%rax), %rax
callq *%rax
jmp 0xbe4bb
movq -0x50(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5aa80
jmp 0xbe4ca
movq -0x50(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5aa60
jmp 0xbe4d9
addq $0x60, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xbe519
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xbe510
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x5de40
movq -0x48(%rbp), %rdi
callq 0x5de40
movq -0x50(%rbp), %rdi
callq 0x5b640
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menuentry.cpp
// Function: smooth::GUI::MenuEntry::SetBitmap(smooth::GUI::Bitmap const&)
S::Int S::GUI::MenuEntry::SetBitmap(const Bitmap &newBitmap)
{
	bitmap	= newBitmap;
	graymap	= newBitmap;

	if (bitmap == NIL) return Success();

	graymap.GrayscaleBitmap();

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x50(%rbp)
movq -0x18(%rbp), %rsi
addq $0x5c0, %rdi            # imm = 0x5C0
callq 0x5cca0
movq -0x50(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x5c8, %rdi            # imm = 0x5C8
callq 0x5cca0
movq -0x50(%rbp), %rdi
addq $0x5c0, %rdi            # imm = 0x5C0
xorl %esi, %esi
callq 0x5c730
testb $0x1, %al
jne 0xbe584
jmp 0xbe5c7
leaq -0x28(%rbp), %rdi
movq %rdi, -0x60(%rbp)
callq 0x5ca80
movq -0x60(%rbp), %rdi
callq 0x59680
movl %eax, -0x54(%rbp)
jmp 0xbe59f
movl -0x54(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5a410
jmp 0xbe61a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5a410
jmp 0xbe623
movq -0x50(%rbp), %rdi
addq $0x5c8, %rdi            # imm = 0x5C8
callq 0x5b360
leaq -0x48(%rbp), %rdi
movq %rdi, -0x70(%rbp)
callq 0x5ca80
movq -0x70(%rbp), %rdi
callq 0x59680
movl %eax, -0x64(%rbp)
jmp 0xbe5f2
movl -0x64(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xbe61a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xbe623
movl -0x4(%rbp), %eax
addq $0x70, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menuentry.cpp
// Function: smooth::GUI::MenuEntry::SetPopupMenu(smooth::GUI::PopupMenu*)
S::Int S::GUI::MenuEntry::SetPopupMenu(PopupMenu *nPopup)
{
	if (popup != NIL) popup->onEnqueueForDeletion.Disconnect(&MenuEntry::InternalOnDeletePopup, this);

	popup = nPopup;

	if (popup != NIL) popup->onEnqueueForDeletion.Connect(&MenuEntry::InternalOnDeletePopup, this);

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, 0x5b8(%rax)
je 0xbe684
movq -0x58(%rbp), %rcx
movq 0x5b8(%rcx), %rdi
addq $0x598, %rdi            # imm = 0x598
movq 0x14a795(%rip), %rax    # 0x208e00
movq %rax, -0x20(%rbp)
movq $0x0, -0x18(%rbp)
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0xbe970
movq -0x58(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, 0x5b8(%rax)
cmpq $0x0, 0x5b8(%rax)
je 0xbe6cf
movq -0x58(%rbp), %rcx
movq 0x5b8(%rcx), %rdi
addq $0x598, %rdi            # imm = 0x598
movq 0x14a74a(%rip), %rax    # 0x208e00
movq %rax, -0x30(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0xbeb00
leaq -0x40(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0x5ca80
movq -0x68(%rbp), %rdi
callq 0x59680
movl %eax, -0x5c(%rbp)
jmp 0xbe6ea
leaq -0x40(%rbp), %rdi
callq 0x5a410
movl -0x5c(%rbp), %eax
addq $0x70, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5a410
movq -0x48(%rbp), %rdi
callq 0x5b6b0
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menuentry.cpp
// Function: smooth::GUI::MenuEntry::SetShortcut(int, int, smooth::GUI::Window*)
S::Int S::GUI::MenuEntry::SetShortcut(Int scFlags, Int scKey, Window *window)
{
	shortcut = new Shortcut(scFlags, scKey, this);
	shortcut->onKeyDown.Connect(&onAction);

	window->Add(shortcut);

	return Success();
}

// 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)
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
movl $0x5e8, %edi            # imm = 0x5E8
callq 0x59820
movq -0x48(%rbp), %rcx
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x40(%rbp)
movl -0xc(%rbp), %esi
movl -0x10(%rbp), %edx
xorl %r8d, %r8d
callq 0x5c2f0
jmp 0xbe876
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rax
movq %rax, 0x5d0(%rsi)
movq 0x5d0(%rsi), %rdi
addq $0x5c8, %rdi            # imm = 0x5C8
addq $0x478, %rsi            # imm = 0x478
callq 0x90260
movq -0x48(%rbp), %rax
movq -0x18(%rbp), %rdi
movq 0x5d0(%rax), %rsi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
leaq -0x38(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0x5ca80
movq -0x58(%rbp), %rdi
callq 0x59680
movl %eax, -0x4c(%rbp)
jmp 0xbe8d2
leaq -0x38(%rbp), %rdi
callq 0x5a410
movl -0x4c(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x5e8, %esi            # imm = 0x5E8
callq 0x595b0
jmp 0xbe915
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x5a410
movq -0x20(%rbp), %rdi
callq 0x5b6b0
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/micromenu.cpp
// Function: smooth::GUI::MicroMenu::ClosePopupMenu()
S::Void S::GUI::MicroMenu::ClosePopupMenu()
{
	if (popup == NIL || popup->GetContainer() != this) return;

	Remove(popup);

	onClosePopupMenu.Emit();

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

	hotspot->Activate();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, 0x690(%rax)
je 0xbfcf7
movq -0x20(%rbp), %rax
movq 0x690(%rax), %rdi
callq 0x5c9c0
movq -0x20(%rbp), %rcx
cmpq %rcx, %rax
je 0xbfcf9
jmp 0xbfd60
movq -0x20(%rbp), %rdi
movq 0x690(%rdi), %rsi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq -0x20(%rbp), %rdi
addq $0x6b8, %rdi            # imm = 0x6B8
callq 0x8af60
movq -0x20(%rbp), %rcx
movq 0x690(%rcx), %rdi
addq $0x698, %rdi            # imm = 0x698
movq 0x148d12(%rip), %rax    # 0x208a48
movq %rax, -0x18(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x18(%rbp), %rsi
movq -0x10(%rbp), %rdx
callq 0xc0180
movq -0x20(%rbp), %rax
movq 0x688(%rax), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenu.cpp
// Function: smooth::GUI::PopupMenu::PopupMenu()
S::GUI::PopupMenu::PopupMenu()
{
	type		= classID;
	orientation	= OR_FREE;

	closedByClick	= False;

	toolWindow = NIL;

	internalRequestClose.SetParentObject(this);

	internalOnOpenPopupMenu.Connect(&PopupMenu::OnOpenPopupMenu, this);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x38(%rbp)
callq 0x5bdc0
movq -0x38(%rbp), %rdi
movq 0x1484c4(%rip), %rax    # 0x2089e8
addq $0x10, %rax
movq %rax, (%rdi)
addq $0x698, %rdi            # imm = 0x698
movq %rdi, -0x30(%rbp)
callq 0x8aae0
jmp 0xc053d
movq -0x38(%rbp), %rdi
movq 0x148458(%rip), %rax    # 0x2089a0
movswl (%rax), %esi
addq $0x20, %rdi
callq 0x5a2e0
jmp 0xc0556
movq -0x38(%rbp), %rsi
movw $0x80, 0xd0(%rsi)
movb $0x0, 0x690(%rsi)
movq $0x0, 0x688(%rsi)
movq %rsi, %rdi
addq $0x698, %rdi            # imm = 0x698
callq 0x8ad00
jmp 0xc0586
movq -0x38(%rbp), %rcx
movq 0x1483df(%rip), %rax    # 0x208970
movq %rax, -0x28(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq 0x1481b4(%rip), %rdi    # 0x208760
callq 0xc1230
jmp 0xc05b3
addq $0x40, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xc05dc
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0x8ad70
movq -0x38(%rbp), %rdi
callq 0x59620
movq -0x10(%rbp), %rdi
callq 0x5b6b0
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenu.cpp
// Function: smooth::GUI::PopupMenu::OnToolWindowPaint()
S::Void S::GUI::PopupMenu::OnToolWindowPaint()
{
	if (toolWindow == NIL) return;

	Surface	*surface = toolWindow->GetDrawSurface();
	Rect	 frame = Rect(Point(0, 0), GetRealSize());

	surface->Frame(frame, FRAME_UP);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, 0x688(%rax)
jne 0xc0ca0
jmp 0xc0cf0
movq -0x38(%rbp), %rax
movq 0x688(%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 -0x38(%rbp), %rdi
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, -0x30(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x59ff0
movq -0x10(%rbp), %rdi
leaq -0x20(%rbp), %rsi
xorl %edx, %edx
callq 0x5c050
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/menu/../../../../../include/smooth/templates/signals/signal.h
// Function: int smooth::Signal1<void, smooth::GUI::Point const&>::Disconnect<void>(smooth::Signal0<void>*)
Int Disconnect(Signal0<slotReturnTYPE> *sig)
			{
				if (slots0 == NIL) return Error();

				SlotSignal0<slotReturnTYPE>	 slot(sig);

				for (Int i = slots0->Length() - 1; i >= 0; i--)
				{
					if ((*((SlotBase0<Void> *) slots0->GetNth(i))) == slot)
					{
						RemoveNth0(i);

						break;
					}
				}

				return Success();
			}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x68(%rbp)
cmpq $0x0, 0x18(%rax)
jne 0xc17ca
leaq -0x28(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x5a9c0
leaq -0x28(%rbp), %rdi
callq 0x59680
movl %eax, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xc1885
movq -0x18(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x8e500
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x5c990
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x0, -0x3c(%rbp)
jl 0xc185c
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x3c(%rbp), %esi
callq 0x820b0
movq %rax, -0x70(%rbp)
jmp 0xc1806
movq -0x70(%rbp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x20(%rax), %rax
leaq -0x38(%rbp), %rsi
callq *%rax
movb %al, -0x71(%rbp)
jmp 0xc181f
movb -0x71(%rbp), %al
testb $0x1, %al
jne 0xc1828
jmp 0xc184f
movq -0x68(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c940
jmp 0xc1836
jmp 0xc185c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x8e540
jmp 0xc1891
jmp 0xc1851
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0xc17ea
leaq -0x60(%rbp), %rdi
callq 0x5ca80
jmp 0xc1867
leaq -0x60(%rbp), %rdi
callq 0x59680
movl %eax, -0x4(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x5a410
leaq -0x38(%rbp), %rdi
callq 0x8e540
movl -0x4(%rbp), %eax
addq $0x80, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x5b6b0
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq 0x146555(%rip), %rcx    # 0x208ae0
addq $0x10, %rcx
movq %rcx, (%rax)
cmpq $0x0, 0x5f8(%rax)
je 0xc25b0
movq -0x10(%rbp), %rax
movq 0x5f8(%rax), %rdi
callq 0x5d8d0
jmp 0xc25ae
jmp 0xc25b0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x608(%rax)
je 0xc25df
movq -0x10(%rbp), %rax
movq 0x608(%rax), %rdi
callq 0x5d8d0
jmp 0xc25d0
movq -0x10(%rbp), %rax
movq $0x0, 0x608(%rax)
movq -0x10(%rbp), %rdi
callq 0x5a3f0
addq $0x10, %rsp
popq %rbp
retq
movq %rax, %rdi
callq 0x61c50
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, 0x5b8(%rax)
je 0xc3832
movq -0x30(%rbp), %rax
movq 0x5b8(%rax), %rdi
callq 0x5c9c0
movq -0x30(%rbp), %rcx
cmpq %rcx, %rax
jne 0xc3830
movq -0x30(%rbp), %rdi
callq 0x5de88
jmp 0xc3832
movq -0x30(%rbp), %rax
movb $0x0, 0xcb(%rax)
cmpq $0x0, 0x5f8(%rax)
je 0xc3858
movq -0x30(%rbp), %rax
movq 0x5f8(%rax), %rdi
movq (%rdi), %rax
callq *0x60(%rax)
leaq -0x18(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x5ca80
movq -0x40(%rbp), %rdi
callq 0x59680
movl %eax, -0x34(%rbp)
jmp 0xc3873
leaq -0x18(%rbp), %rdi
callq 0x5a410
movl -0x34(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x5a410
movq -0x20(%rbp), %rdi
callq 0x5b6b0
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, 0x5b8(%rax)
je 0xc38e7
movq -0x40(%rbp), %rax
movq 0x5b8(%rax), %rdi
callq 0x5c9c0
movq -0x40(%rbp), %rcx
cmpq %rcx, %rax
je 0xc38ec
jmp 0xc3a79
movq -0x40(%rbp), %rdi
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xc38ff
jmp 0xc3928
movq -0x40(%rbp), %rax
movq 0x600(%rax), %rcx
movq %rcx, -0x48(%rbp)
movq 0x600(%rax), %rdi
callq 0x5a120
movq -0x48(%rbp), %rdi
movl %eax, %esi
andl $-0x3, %esi
callq 0x59730
movq -0x40(%rbp), %rcx
movq 0x5b8(%rcx), %rdi
addq $0x698, %rdi            # imm = 0x698
movq 0x1450f7(%rip), %rax    # 0x208a38
movq %rax, -0x18(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x18(%rbp), %rsi
movq -0x10(%rbp), %rdx
callq 0xc41b0
movq -0x40(%rbp), %rdi
movq 0x5b8(%rdi), %rsi
movq (%rdi), %rax
callq *0x38(%rax)
movq -0x40(%rbp), %rax
movq 0x5f8(%rax), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
movq -0x40(%rbp), %rdi
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xc3992
jmp 0xc3a66
movq -0x40(%rbp), %rax
movq 0x5b8(%rax), %rdi
callq 0x59f90
testb $0x1, %al
jne 0xc39a8
jmp 0xc39d9
movq -0x40(%rbp), %rax
movq 0x600(%rax), %rdi
movl $0x1, %esi
callq 0x5d9b0
movq -0x40(%rbp), %rax
movq 0x600(%rax), %rdi
addq $0x698, %rdi            # imm = 0x698
callq 0x8af60
jmp 0xc3a64
movq -0x40(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq %rax, -0x50(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5b530
movq -0x40(%rbp), %rax
movq 0x190(%rax), %rdi
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, -0x38(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x38(%rbp), %rdx
callq 0x59ff0
movq -0x50(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x5c060
xorb $-0x1, %al
testb $0x1, %al
jne 0xc3a31
jmp 0xc3a4a
movq -0x40(%rbp), %rax
movq 0x600(%rax), %rdi
addq $0x698, %rdi            # imm = 0x698
callq 0x8af60
jmp 0xc3a62
movq -0x40(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq %rax, %rdi
callq 0x5d710
jmp 0xc3a64
jmp 0xc3a66
callq 0x5b700
movq %rax, %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x5f0(%rax)
addq $0x50, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, 0x5b8(%rax)
je 0xc3b6d
movq -0x30(%rbp), %rdi
callq 0x5d390
testb $0x1, %al
jne 0xc3b6d
jmp 0xc3b72
jmp 0xc3c60
movq -0x30(%rbp), %rax
movq 0x600(%rax), %rdi
callq 0x5a120
movl %eax, %edi
movl $0x2, %esi
callq 0x5ce30
testb $0x1, %al
jne 0xc3b94
jmp 0xc3bba
movq -0x30(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq %rax, %rdi
callq 0x5d710
movq -0x30(%rbp), %rdi
callq 0x5de68
jmp 0xc3c60
movq -0x30(%rbp), %rax
cmpq $0x0, 0x608(%rax)
je 0xc3bd8
movq -0x30(%rbp), %rax
movq 0x608(%rax), %rdi
callq 0x5d8d0
movl $0x68, %edi
callq 0x59820
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x38(%rbp)
callq 0x59db0
jmp 0xc3bf3
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %rax
movq %rax, 0x608(%rcx)
movq 0x608(%rcx), %rdi
addq $0x48, %rdi
movq 0x144d0c(%rip), %rax    # 0x208920
movq %rax, -0x28(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0xc3dc0
movq -0x30(%rbp), %rax
movq 0x608(%rax), %rdi
movl $0x1f4, %esi            # imm = 0x1F4
callq 0x59120
jmp 0xc3c60
movq -0x38(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
movl $0x68, %esi
callq 0x595b0
jmp 0xc3c66
addq $0x40, %rsp
popq %rbp
retq
movq -0x10(%rbp), %rdi
callq 0x5b6b0
nop
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, 0x5b8(%rax)
je 0xc3ce0
jmp 0xc3d2e
movq -0x10(%rbp), %rdi
callq 0x5b7c0
movq -0x10(%rbp), %rax
movq 0x600(%rax), %rdi
movl $0x1, %esi
callq 0x5d9b0
movq -0x10(%rbp), %rax
movq 0x600(%rax), %rdi
addq $0x698, %rdi            # imm = 0x698
callq 0x8af60
movq -0x10(%rbp), %rdi
addq $0x478, %rdi            # imm = 0x478
callq 0x8af60
movq -0x10(%rbp), %rdi
callq 0x594d0
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
andb $0x1, %al
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
testb $0x1, -0x9(%rbp)
je 0xc5fc4
movq -0x20(%rbp), %rdi
addq $0xd20, %rdi            # imm = 0xD20
callq 0x8af60
jmp 0xc5fd4
movq -0x20(%rbp), %rdi
addq $0xd40, %rdi            # imm = 0xD40
callq 0x8af60
movq -0x20(%rbp), %rdi
callq 0x5d340
movq -0x20(%rbp), %rdi
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xc5ff0
jmp 0xc6056
movq -0x20(%rbp), %rax
movq 0x190(%rax), %rax
movq %rax, -0x18(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x18(%rbp)
movb %al, -0x21(%rbp)
je 0xc6029
movq -0x18(%rbp), %rdi
callq 0x5bb10
movq %rax, %rdi
movq 0x142f42(%rip), %rax    # 0x208f60
movswl (%rax), %esi
callq 0x5da50
movb %al, -0x21(%rbp)
movb -0x21(%rbp), %al
testb $0x1, %al
jne 0xc6032
jmp 0xc6041
movq -0x18(%rbp), %rdi
callq 0x5c9c0
movq %rax, -0x18(%rbp)
jmp 0xc5fff
cmpq $0x0, -0x18(%rbp)
je 0xc6054
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
xorl %esi, %esi
callq *0x78(%rax)
jmp 0xc6056
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x20(%rbp)
movl $0x10, -0xc(%rbp)
callq 0x5b1b0
testb $0x1, %al
jne 0xc6356
jmp 0xc639c
movl $0x0, -0x10(%rbp)
movq -0x20(%rbp), %rdi
movl -0x10(%rbp), %eax
movl %eax, -0x24(%rbp)
callq 0x59190
movl %eax, %ecx
movl -0x24(%rbp), %eax
cmpl %ecx, %eax
jge 0xc639a
movq -0x20(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0x5d640
movq %rax, %rdi
callq 0x5b860
addl -0xc(%rbp), %eax
movl %eax, -0xc(%rbp)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xc635d
jmp 0xc639c
movq -0x20(%rbp), %rdi
movl -0xc(%rbp), %eax
movl %eax, -0x28(%rbp)
callq 0x5b860
movl %eax, %ecx
movl -0x28(%rbp), %eax
cmpl %ecx, %eax
jne 0xc63b9
jmp 0xc6443
movq -0x20(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x5bed0
movq -0x20(%rbp), %rdi
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xc63d8
jmp 0xc6443
movq -0x20(%rbp), %rax
movq 0x190(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5bb10
movq %rax, %rdi
movq 0x142b66(%rip), %rax    # 0x208f60
movswl (%rax), %esi
callq 0x5da50
testb $0x1, %al
jne 0xc6408
jmp 0xc6443
movq -0x18(%rbp), %rdi
callq 0x5bb10
movq %rax, %rdi
movq 0x1427a5(%rip), %rax    # 0x208bc0
movswl (%rax), %esi
callq 0x5bc10
testb $0x1, %al
jne 0xc6429
jmp 0xc6434
movq -0x18(%rbp), %rdi
callq 0x5d340
jmp 0xc6443
movq -0x18(%rbp), %rdi
callq 0x5c9c0
movq %rax, -0x18(%rbp)
jmp 0xc63e7
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x10(%rbp)
xorl %esi, %esi
callq 0x5d4c0
movq -0x10(%rbp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %edx, %esi
callq 0x5b020
movq -0x10(%rbp), %rax
cmpq $0x0, 0x5b8(%rax)
je 0xc97d8
movq -0x10(%rbp), %rax
movq 0x5b8(%rax), %rdi
callq 0x5d8d0
movq -0x10(%rbp), %rax
movq $0x0, 0x5b8(%rax)
movq -0x10(%rbp), %rsi
movq 0x13eddd(%rip), %rdi    # 0x2085c0
callq 0xd0df0
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
addq $0x650, %rdi            # imm = 0x650
callq 0x5c990
movq -0x10(%rbp), %rcx
cmpl 0x700(%rcx), %eax
jle 0xca0e8
movq -0x10(%rbp), %rdi
movq %rdi, %rax
addq $0x650, %rax            # imm = 0x650
movq %rax, -0x20(%rbp)
addq $0x650, %rdi            # imm = 0x650
callq 0x5c990
movq -0x20(%rbp), %rdi
movl %eax, %esi
subl $0x1, %esi
callq 0x74d80
movq -0x10(%rbp), %rdi
movq %rdi, %rax
addq $0x6a8, %rax            # imm = 0x6A8
movq %rax, -0x18(%rbp)
addq $0x6a8, %rdi            # imm = 0x6A8
callq 0x5c990
movq -0x18(%rbp), %rdi
movl %eax, %esi
subl $0x1, %esi
callq 0xb5e00
jmp 0xca074
movq -0x10(%rbp), %rsi
movq %rsi, %rdi
addq $0x650, %rdi            # imm = 0x650
addq $0xf0, %rsi
callq 0x74750
movq -0x10(%rbp), %rsi
movq %rsi, %rdi
addq $0x6a8, %rdi            # imm = 0x6A8
addq $0x5c0, %rsi            # imm = 0x5C0
callq 0xb5920
movq -0x10(%rbp), %rax
movl 0x700(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x700(%rax)
addq $0x20, %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::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
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x60(%rbp)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xca2c5
leaq -0x28(%rbp), %rdi
movq %rdi, -0x70(%rbp)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x5a9c0
movq -0x70(%rbp), %rdi
callq 0x59680
movl %eax, -0x64(%rbp)
jmp 0xca297
movl -0x64(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xca3db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xca3e7
movq -0x60(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xca31f
leaq -0x48(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x5ca80
movq -0x80(%rbp), %rdi
callq 0x59680
movl %eax, -0x74(%rbp)
jmp 0xca2f1
movl -0x74(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xca3db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xca3e7
movl -0x14(%rbp), %eax
movl %eax, -0x84(%rbp)
testl %eax, %eax
je 0xca348
jmp 0xca32e
movl -0x84(%rbp), %eax
subl $0x2, %eax
je 0xca353
jmp 0xca33b
movl -0x84(%rbp), %eax
subl $0x3, %eax
je 0xca372
jmp 0xca38c
movq -0x60(%rbp), %rdi
callq 0x5dc10
jmp 0xca38c
movq -0x60(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq %rax, %rdi
movl $0x1, %esi
callq 0x59fc0
jmp 0xca38c
movq -0x60(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq %rax, %rdi
xorl %esi, %esi
callq 0x59fc0
leaq -0x58(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x5ca80
movq -0x90(%rbp), %rdi
callq 0x59680
movl %eax, -0x88(%rbp)
jmp 0xca3b0
movl -0x88(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x5a410
jmp 0xca3db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x5a410
jmp 0xca3e7
movl -0x4(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x5b6b0
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5b800
movl %eax, -0x20(%rbp)
cmpl $0x0, -0x20(%rbp)
jne 0xcd149
movl $0x0, -0x4(%rbp)
jmp 0xcd218
movl $0x0, -0x24(%rbp)
movl $0x7fffffff, -0x28(%rbp) # imm = 0x7FFFFFFF
movl $0x0, -0x2c(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jl 0xcd205
movq -0x40(%rbp), %rdi
movl -0x2c(%rbp), %eax
addl -0x30(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, -0x34(%rbp)
movq -0x18(%rbp), %rsi
movl -0x34(%rbp), %edx
callq 0x59440
movq -0x40(%rbp), %rdi
movl %eax, -0x38(%rbp)
movq (%rdi), %rax
callq *0x160(%rax)
testb $0x1, %al
jne 0xcd1ad
movl -0x38(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jg 0xcd1c8
movq -0x40(%rbp), %rdi
movq (%rdi), %rax
callq *0x160(%rax)
testb $0x1, %al
jne 0xcd1c0
jmp 0xcd1d3
movl -0x38(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0xcd1d3
movl -0x34(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0xcd1dc
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
movl -0x38(%rbp), %edi
subl -0x1c(%rbp), %edi
callq 0x5c600
cmpl -0x28(%rbp), %eax
jge 0xcd200
movl -0x34(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x38(%rbp), %edi
subl -0x1c(%rbp), %edi
callq 0x5c600
movl %eax, -0x28(%rbp)
jmp 0xcd164
movq -0x40(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl -0x24(%rbp), %edx
callq 0x5a490
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
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::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
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rcx
movq %rcx, -0x50(%rbp)
movl -0xc(%rbp), %eax
cmpl 0x5c8(%rcx), %eax
jne 0xcd269
movq -0x50(%rbp), %rcx
movl -0x10(%rbp), %eax
cmpl 0x5cc(%rcx), %eax
jne 0xcd269
jmp 0xcd376
movq -0x50(%rbp), %rdi
xorl %esi, %esi
callq 0x5d4c0
movq -0x50(%rbp), %rdi
movl -0xc(%rbp), %eax
movl %eax, 0x5c8(%rdi)
movl -0x10(%rbp), %eax
movl %eax, 0x5cc(%rdi)
movq (%rdi), %rax
xorl %esi, %esi
callq *0x78(%rax)
movq -0x50(%rbp), %rax
movl 0x5cc(%rax), %edi
subl 0x5c8(%rax), %edi
callq 0x5c600
cmpl $0x0, %eax
jle 0xcd376
movq -0x50(%rbp), %rax
movq 0x190(%rax), %rdi
callq 0x59bc0
movq %rax, %rsi
leaq -0x20(%rbp), %rdi
callq 0x5cb80
movq -0x50(%rbp), %rax
movq %rax, %rcx
addq $0xf0, %rcx
movq %rcx, -0x60(%rbp)
movl 0x5c8(%rax), %edi
movl 0x5cc(%rax), %esi
callq 0x5ce90
movl %eax, -0x54(%rbp)
jmp 0xcd2f4
movq -0x50(%rbp), %rcx
movl 0x5c8(%rcx), %eax
movl 0x5cc(%rcx), %edi
subl %eax, %edi
callq 0x5c600
movl %eax, -0x64(%rbp)
jmp 0xcd310
movl -0x64(%rbp), %ecx
movl -0x54(%rbp), %edx
movq -0x60(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x5dc20
jmp 0xcd325
leaq -0x20(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x5bc70
jmp 0xcd334
leaq -0x38(%rbp), %rdi
callq 0x5df00
leaq -0x20(%rbp), %rdi
callq 0x5d190
jmp 0xcd376
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xcd36b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x5df00
leaq -0x20(%rbp), %rdi
callq 0x5d190
jmp 0xcd37c
addq $0x70, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x5b6b0
nopw %cs:(%rax,%rax)