LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listentryseparator.cpp
// Function: smooth::GUI::ListEntrySeparator::ListEntrySeparator()
S::GUI::ListEntrySeparator::ListEntrySeparator() : ListEntry(NIL)
{
	type		= classID;

	font.SetColor(Setup::InactiveTextColor);

	SetHeight(3);

	Remove(hotspot);
	Remove(markHotspot);

	internalOnSelectEntry.Disconnect(&ListEntry::OnSelectOtherEntry, this);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq %rsp, %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58e20
movq %rbx, %rdi
movq %r14, %rsi
callq 0x55290
movq %rsp, %rdi
callq 0x59200
movq 0xe3303(%rip), %rax     # 0x16b3c8
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xe3ae5(%rip), %rax     # 0x16bbb8
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0x140(%rbx), %rdi
movq 0xe3868(%rip), %rsi     # 0x16b950
callq 0x58650
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
movq %rsp, %rdx
movl %eax, (%rdx)
movl $0x3, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x38(%rax)
movq 0x5c8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x38(%rax)
movq 0xe3b6f(%rip), %rdi     # 0x16bca8
movq 0xe33d0(%rip), %rsi     # 0x16b510
xorl %edx, %edx
movq %rbx, %rcx
callq 0x882da
addq $0x18, %rsp
popq %rbx
popq %r14
retq
movq %rax, %r14
movq %rsp, %rdi
callq 0x59200
jmp 0x8816a
movq %rax, %r14
movq %rbx, %rdi
callq 0x58ed0
movq %r14, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/list/listentryseparator.cpp
// Function: smooth::GUI::ListEntrySeparator::Paint(int)
S::Int S::GUI::ListEntrySeparator::Paint(Int message)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

	switch (message)
	{
		case SP_PAINT:
			{
				Surface	*surface = GetDrawSurface();
				Rect	 frame	 = Rect(GetRealPosition(), GetRealSize());

				surface->Box(frame + Point(4, 1) - Size(8, 2), font.GetColor(), Rect::Filled);
			}
	}

	return Widget::Paint(message);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %esi, %ebx
movq %rdi, %r14
movq (%rdi), %rax
callq *0x88(%rax)
movl %eax, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
testb %cl, %cl
je 0x882b5
movq (%r14), %rax
movq %r14, %rdi
callq *0x90(%rax)
movl %eax, %ecx
xorl %eax, %eax
testb %cl, %cl
je 0x882b5
testl %ebx, %ebx
jne 0x882ab
movq (%r14), %rax
movq %r14, %rdi
callq *0x40(%rax)
movq %rax, %r15
movq (%r14), %rax
movq %r14, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq (%r14), %rax
movq %r14, %rdi
callq *0x50(%rax)
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
movq %rax, %rdx
andq %rcx, %rdx
movq %r12, %rsi
andq %rcx, %rsi
movl $0xfffffffc, %edi       # imm = 0xFFFFFFFC
orq %rdi, %rsi
leal 0x4(%r12), %r8d
addl %r12d, %edi
addl %edi, %eax
addq %r8, %rsi
addq $0x4, %rsi
addq %r12, %rdx
andq %rcx, %rdx
orq %rdx, %rax
addq %rcx, %rax
leaq 0x8(%rsp), %r12
movq %rsi, (%r12)
movq %rax, 0x8(%r12)
leaq 0x140(%r14), %rdi
callq 0x57550
movq 0xe3d17(%rip), %rcx     # 0x16bfa8
movl (%rcx), %ecx
movq %rsp, %r8
movq $0x0, (%r8)
movq %r15, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x57930
movq %r14, %rdi
movl %ebx, %esi
callq 0x567d0
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/menu/menubar.cpp
// Function: smooth::GUI::Menubar::Menubar()
S::GUI::Menubar::Menubar()
{
	type		= classID;
	orientation	= OR_TOP;
	subtype		= WO_SEPARATOR;

#ifdef __APPLE__
	menubarCocoa = NIL;
#endif

	SetSize(Size(18, 18));

	onRegister.Connect(&Menubar::OnRegister, this);
	onUnregister.Connect(&Menubar::OnUnregister, this);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x57670
movq 0xe3bdd(%rip), %rax     # 0x16bf90
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xe344f(%rip), %rax     # 0x16b810
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movw $0x4, 0xd0(%rbx)
movw $0x1, 0x1a0(%rbx)
movabsq $0x1200000012, %rax     # imm = 0x1200000012
movq %rsp, %rdx
movq %rax, (%rdx)
leaq 0xa8(%rbx), %rsi
movq %rbx, %rdi
callq 0x57080
leaq 0x558(%rbx), %rdi
movq 0xe3261(%rip), %rsi     # 0x16b668
xorl %edx, %edx
movq %rbx, %rcx
callq 0x88b92
leaq 0x578(%rbx), %rdi
movq 0xe3599(%rip), %rsi     # 0x16b9b8
xorl %edx, %edx
movq %rbx, %rcx
callq 0x88b92
addq $0x8, %rsp
popq %rbx
popq %r14
retq
jmp 0x88433
movq %rax, %r14
movq %rbx, %rdi
callq 0x554e0
movq %r14, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %r9, 0x8(%rsp)
movq %r8, %r12
movq %rcx, %r13
movq %rdx, %rbp
movq %rsi, %r15
movq %rdi, %r14
movl $0x608, %edi            # imm = 0x608
callq 0x556b0
movq %rax, %rbx
movl 0x50(%rsp), %eax
movl %eax, (%rsp)
movq %rbx, %rdi
movq %r15, %rsi
movq %rbp, %rdx
movq %r13, %rcx
movq %r12, %r8
movq 0x8(%rsp), %r9
callq 0x574f0
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
callq *0x30(%rax)
testl %eax, %eax
je 0x884d6
movq %rbx, %rdi
callq 0x58cc0
xorl %ebx, %ebx
jmp 0x88558
leaq 0x5b8(%r14), %rdi
movl 0x8(%rbx), %esi
leaq 0x6e487(%rip), %rdx     # 0xf696e
callq 0x838c2
movl 0xb4(%rbx), %eax
addl $0x2, %eax
cmpl %eax, 0xb4(%r14)
jge 0x88522
leaq 0xa8(%r14), %rsi
movl 0xb0(%r14), %ecx
leaq 0x10(%rsp), %rdx
movl %ecx, (%rdx)
movl %eax, 0x4(%rdx)
movq (%r14), %rax
movq %r14, %rdi
callq *0x150(%rax)
movl 0xb0(%rbx), %eax
addl $0x3, %eax
cmpl %eax, 0xb0(%r14)
jge 0x88558
leaq 0xa8(%r14), %rsi
movl 0xb4(%r14), %ecx
leaq 0x10(%rsp), %rdx
movl %eax, (%rdx)
movl %ecx, 0x4(%rdx)
movq (%r14), %rax
movq %r14, %rdi
callq *0x150(%rax)
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movl $0x608, %esi            # imm = 0x608
movq %rbx, %rdi
callq 0x55480
movq %r14, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/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:
movq 0x5b8(%rdi), %rax
testq %rax, %rax
je 0x8951b
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
cmpq %rdi, 0x190(%rax)
jne 0x8950d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
testb %al, %al
je 0x8942d
movq 0x190(%rbx), %rax
andl $-0x3, 0x30(%rax)
movq 0x5b8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x38(%rax)
movl $0x698, %edi            # imm = 0x698
addq 0x5b8(%rbx), %rdi
movq 0xe2a30(%rip), %rsi     # 0x16be80
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8a54a
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
testb %al, %al
je 0x89501
movq 0x190(%rbx), %rdi
callq 0x559e0
movq %rax, %r15
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq %rax, %rbp
shrq $0x20, %rbp
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
leal (%rax,%r12), %ecx
shrq $0x20, %rax
leaq 0x8(%rsp), %r13
movl %r12d, (%r13)
movl %ebp, 0x4(%r13)
movl %ecx, 0x8(%r13)
addl %ebp, %eax
movl %eax, 0xc(%r13)
movq %r14, %rdi
movq %r13, %rsi
callq 0x55160
movq %r15, %rdi
movq %r13, %rsi
callq 0x578a0
testb %al, %al
jne 0x894ec
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x3, %esi
callq *0x78(%rax)
movq 0x5f8(%rbx), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
movq %r14, %rdi
callq 0x58780
callq 0x570e0
movq %rax, 0x5f0(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %r9, %r14
movq %r8, %r15
movq %rcx, 0x10(%rsp)
movq %rdx, %r12
movq %rsi, %rbp
movq %rdi, %rbx
callq 0x588f0
movq 0xe1612(%rip), %rax     # 0x16bcf8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5c0(%rbx), %rdi
movq %rdi, 0x8(%rsp)
xorl %esi, %esi
callq 0x58950
leaq 0x5c8(%rbx), %r13
movq %r13, %rdi
xorl %esi, %esi
callq 0x58950
movl 0x50(%rsp), %eax
movq 0xe1534(%rip), %rcx     # 0x16bc50
movzwl (%rcx), %ecx
movw %cx, 0x20(%rbx)
xorl %ecx, %ecx
movq %rcx, 0x5b8(%rbx)
movq %r15, 0x5d8(%rbx)
movq %r14, 0x5e0(%rbx)
movl %eax, 0x5e8(%rbx)
movw $0x10, 0xd0(%rbx)
movq %rcx, 0x5d0(%rbx)
movq (%rbx), %rax
movq %rbx, %rdi
movq %rbp, %rsi
callq *0xa0(%rax)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x56610
movq %rbx, %rdi
movq 0x10(%rsp), %rsi
callq 0x565f0
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
jmp 0x8a79b
movq %rax, %r14
jmp 0x8a7a5
movq %rax, %r14
movq %r13, %rdi
callq 0x59148
movq 0x8(%rsp), %rdi
callq 0x59148
movq %rbx, %rdi
callq 0x57040
movq %r14, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/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 %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x5c0(%rdi), %r15
movq %r15, %rdi
callq 0x582c0
addq $0x5c8, %rbx            # imm = 0x5C8
movq %rbx, %rdi
movq %r14, %rsi
callq 0x582c0
movq %r15, %rdi
xorl %esi, %esi
callq 0x57e30
testb %al, %al
jne 0x8a7f8
movq %rbx, %rdi
callq 0x56db0
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/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 %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movq 0x5b8(%rdi), %rdi
testq %rdi, %rdi
je 0x8a82e
addq $0x598, %rdi            # imm = 0x598
movq 0xe15ec(%rip), %rsi     # 0x16be10
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8a996
movq %r14, 0x5b8(%rbx)
testq %r14, %r14
je 0x8a855
addq $0x598, %r14            # imm = 0x598
movq 0xe15c8(%rip), %rsi     # 0x16be10
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8aa02
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/menu/micromenu.cpp
// Function: smooth::GUI::MicroMenu::MicroMenu(smooth::GUI::Point const&, smooth::GUI::Size const&, int)
S::GUI::MicroMenu::MicroMenu(const Point &iPos, const Size &iSize, Int sType)
{
	type	= classID;
	subtype	= sType;

	SetMetrics(iPos, iSize);

	if (GetWidth() == 0) SetWidth(subtype == OR_VERT ? 13 : 7);
	if (GetHeight() == 0) SetHeight(subtype == OR_VERT ? 7 : 13);

	onOpenPopupMenu.SetParentObject(this);
	onClosePopupMenu.SetParentObject(this);

	hotspot	= new HotspotSimpleButton(Point(), GetSize());

	hotspot->onLeftButtonDown.Connect(&MicroMenu::OpenPopupMenu, this);

	Add(hotspot);

	popup = new PopupMenu();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %ecx, %ebp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
callq 0x57670
movq 0xe12fe(%rip), %rax     # 0x16be60
addq $0x10, %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x6a0(%rbx)
leaq 0xd6bcf(%rip), %rcx     # 0x161748
movq %rcx, 0x698(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x6a8(%rbx)
movq %rax, 0x6c0(%rbx)
movq %rcx, 0x6b8(%rbx)
movups %xmm0, 0x6c8(%rbx)
movq 0xe0ed2(%rip), %rax     # 0x16ba78
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movw %bp, 0x1a0(%rbx)
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x57080
cmpl $0x0, 0xb0(%rbx)
jne 0x8ac01
cmpw $0x2, 0x1a0(%rbx)
movl $0xd, %eax
movl $0x7, %ecx
cmovel %eax, %ecx
leaq 0xa8(%rbx), %rsi
movl 0xb4(%rbx), %eax
movq %rsp, %rdx
movl %ecx, (%rdx)
movl %eax, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
cmpl $0x0, 0xb4(%rbx)
jne 0x8ac40
cmpw $0x2, 0x1a0(%rbx)
movl $0x7, %eax
movl $0xd, %ecx
cmovel %eax, %ecx
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
movq %rsp, %rdx
movl %eax, (%rdx)
movl %ecx, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq %rbx, 0x6a0(%rbx)
movq %rbx, 0x6c0(%rbx)
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r15
leaq 0xb0(%rbx), %rdx
movq %rsp, %rsi
movq $0x0, (%rsi)
movq %rax, %rdi
callq 0x55a60
movq %r15, 0x688(%rbx)
addq $0x2f8, %r15            # imm = 0x2F8
movq 0xe0f57(%rip), %rsi     # 0x16bbe0
movq %r15, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8b4cc
movq 0x688(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
movl $0x6b8, %edi            # imm = 0x6B8
callq 0x556b0
movq %rax, %r15
movq %rax, %rdi
callq 0x58d00
movq %r15, 0x690(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movl $0x6b8, %esi            # imm = 0x6B8
jmp 0x8acdf
movq %rax, %r14
movl $0x5b8, %esi            # imm = 0x5B8
movq %r15, %rdi
callq 0x55480
jmp 0x8acec
movq %rax, %r14
leaq 0x698(%rbx), %r15
leaq 0x6b8(%rbx), %rdi
callq 0x700f4
movq %r15, %rdi
callq 0x700f4
movq %rbx, %rdi
callq 0x554e0
movq %r14, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/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 %rbx
movq 0x690(%rdi), %rsi
testq %rsi, %rsi
je 0x8b489
movq %rdi, %rbx
cmpq %rdi, 0x190(%rsi)
je 0x8b48b
popq %rbx
retq
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x38(%rax)
leaq 0x6b8(%rbx), %rdi
callq 0x701aa
movl $0x698, %edi            # imm = 0x698
addq 0x690(%rbx), %rdi
movq 0xe05b5(%rip), %rsi     # 0x16ba68
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8b740
movq 0x688(%rbx), %rdi
movq (%rdi), %rax
popq %rbx
jmpq *0x68(%rax)
nop
// File: /workspace/github_c_makefile_star2_O3/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 %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x57670
movq 0xe01c8(%rip), %rax     # 0x16ba08
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x698(%rbx), %r14
leaq 0xd5ef3(%rip), %rax     # 0x161748
movq %rax, 0x698(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x6a8(%rbx)
movq 0xe0153(%rip), %rax     # 0x16b9c0
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movw $0x80, 0xd0(%rbx)
movb $0x0, 0x690(%rbx)
movq $0x0, 0x688(%rbx)
movq %rbx, 0x6a0(%rbx)
movq 0xdfeeb(%rip), %rdi     # 0x16b788
movq 0xe00ec(%rip), %rsi     # 0x16b990
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8bff0
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r15
movq %r14, %rdi
callq 0x700f4
movq %rbx, %rdi
callq 0x554e0
movq %r15, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenu.cpp
// Function: smooth::GUI::PopupMenu::AddEntryInternal(smooth::String const&, smooth::GUI::Bitmap const&, smooth::GUI::PopupMenu*, bool*, int*, int)
S::GUI::MenuEntry *S::GUI::PopupMenu::AddEntryInternal(const String &text, const Bitmap &bitmap, PopupMenu *popupMenu, Bool *bVar, Int *iVar, Int iCode)
{
	PopupMenuEntry	*newEntry = NIL;

	if	(bVar != NIL) newEntry = new PopupMenuEntryCheck(text, bVar);
	else if (iVar != NIL) newEntry = new PopupMenuEntryOption(text, iVar, iCode);
	else		      newEntry = new PopupMenuEntry(text, bitmap, popupMenu);

	newEntry->SetOwner(this);

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

		return newEntry;
	}

	DeleteObject(newEntry);

	return NIL;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r15
movq %rdi, %r14
testq %r8, %r8
je 0x8b98e
movq %r8, %r13
movl $0x618, %edi            # imm = 0x618
callq 0x556b0
movq %rax, %rbx
movq %rax, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x56600
jmp 0x8b9ce
movq %r9, %r12
movq %rdx, %rbp
movq %rcx, %r13
movl $0x618, %edi            # imm = 0x618
callq 0x556b0
movq %rax, %rbx
testq %r12, %r12
je 0x8b9bd
movl 0x40(%rsp), %ecx
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x55dd0
jmp 0x8b9ce
movq %rbx, %rdi
movq %r15, %rsi
movq %rbp, %rdx
movq %r13, %rcx
callq 0x58b40
movq %r14, 0x600(%rbx)
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
callq *0x30(%rax)
testl %eax, %eax
je 0x8b9f1
movq %rbx, %rdi
callq 0x58cc0
xorl %ebx, %ebx
jmp 0x8ba0a
addq $0x5b8, %r14            # imm = 0x5B8
movl 0x8(%rbx), %esi
leaq 0x6b0f2(%rip), %rdx     # 0xf6af4
movq %r14, %rdi
callq 0x838c2
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8ba20
jmp 0x8ba20
movq %rax, %r14
movl $0x618, %esi            # imm = 0x618
movq %rbx, %rdi
callq 0x55480
movq %r14, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenu.cpp
// Function: smooth::GUI::PopupMenu::Show()
S::Int S::GUI::PopupMenu::Show()
{
	if (IsVisible()) return Success();

	visible = True;

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

	SetFlags(GetFlags() & ~MB_POPUPOPEN);

	closedByClick = False;

	Window	*window = container->GetContainerWindow();

	/* Create tool window, add entries and display it.
	 */
	toolWindow = new ToolWindow(GetPosition(), GetSize());
	toolWindow->onPaint.Connect(&PopupMenu::OnToolWindowPaint, this);
	toolWindow->onLoseFocus.Connect(&internalRequestClose);

	window->onChangePosition.Connect(&internalRequestClose);
	window->onChangeSize.Connect(&internalRequestClose);

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

		if (entry->GetObjectType() != PopupMenuEntry::classID) continue;

		entry->SetRegisteredFlag(False);

		toolWindow->Add(entry);
	}

	Add(toolWindow);

	internalOnOpenPopupMenu.Emit(GetHandle());

	toolWindow->Show();

	/* Notify subscribers of popup open.
	 */
	onShow.Emit();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
testb %al, %al
jne 0x8bbaf
movb $0x1, 0xcb(%rbx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
testb %al, %al
je 0x8bbaf
andb $-0x3, 0x30(%rbx)
movb $0x0, 0x690(%rbx)
movq 0x190(%rbx), %rdi
callq 0x559e0
movq %rax, %r15
movl $0x6d8, %edi            # imm = 0x6D8
callq 0x556b0
movq %rax, %r12
leaq 0xa8(%rbx), %rsi
leaq 0xb0(%rbx), %rdx
movq %rax, %rdi
callq 0x59000
movq %r12, 0x688(%rbx)
addq $0x648, %r12            # imm = 0x648
movq 0xdfa77(%rip), %rsi     # 0x16b538
xorl %r14d, %r14d
movq %r12, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8c11c
movl $0x518, %edi            # imm = 0x518
addq 0x688(%rbx), %rdi
leaq 0x698(%rbx), %r12
movq %r12, %rsi
callq 0x7654a
leaq 0x278(%r15), %rdi
movq %r12, %rsi
callq 0x71712
addq $0x298, %r15            # imm = 0x298
movq %r15, %rdi
movq %r12, %rsi
callq 0x8c1dc
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
testl %eax, %eax
jle 0x8bb74
movq 0xdfb64(%rip), %rax     # 0x16b688
movswl (%rax), %ebp
movq (%rbx), %rax
movq %rbx, %rdi
movl %r14d, %esi
callq *0x180(%rax)
movq %rax, %r15
leaq 0x20(%rax), %rdi
movl %ebp, %esi
callq 0x57520
testb %al, %al
je 0x8bb60
movb $0x0, 0xca(%r15)
movq 0x688(%rbx), %rdi
movq (%rdi), %rax
movq %r15, %rsi
callq *0x30(%rax)
incl %r14d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
cmpl %eax, %r14d
jl 0x8bb27
movq 0x688(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
movl 0x8(%rbx), %esi
movq 0xdfbfa(%rip), %rdi     # 0x16b788
callq 0x72a62
movq 0x688(%rbx), %rdi
movq (%rdi), %rax
callq *0x58(%rax)
addq $0x1f8, %rbx            # imm = 0x1F8
movq %rbx, %rdi
callq 0x701aa
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movl $0x6d8, %esi            # imm = 0x6D8
movq %r12, %rdi
callq 0x55480
movq %rbx, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenu.cpp
// Function: smooth::GUI::PopupMenu::Hide()
S::Int S::GUI::PopupMenu::Hide()
{
	if (!visible) return Success();

	visible = False;

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

	Window	*window = container->GetContainerWindow();

	/* Close tool window, remove entries and delete it.
	 */
	toolWindow->Close();

	window->onChangePosition.Disconnect(&internalRequestClose);
	window->onChangeSize.Disconnect(&internalRequestClose);

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

		if (entry->GetObjectType() != PopupMenuEntry::classID) continue;

		toolWindow->Remove(entry);

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

	DeleteObject(toolWindow);

	toolWindow = NIL;

	/* Notify subscribers of popup close.
	 */
	onHide.Emit();

	return Success();
}

// Assembly:
cmpb $0x1, 0xcb(%rdi)
jne 0x8bd33
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movb $0x0, 0xcb(%rdi)
movq (%rdi), %rax
callq *0x88(%rax)
testb %al, %al
je 0x8bd29
movq 0x190(%rbx), %rdi
callq 0x559e0
movq %rax, %r14
movq 0x688(%rbx), %rdi
callq 0x58420
leaq 0x278(%r14), %rdi
leaq 0x698(%rbx), %r15
movq %r15, %rsi
callq 0x8c28e
addq $0x298, %r14            # imm = 0x298
movq %r14, %rdi
movq %r15, %rsi
callq 0x8c2f2
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
testl %eax, %eax
jle 0x8bd03
movq 0xdf9dd(%rip), %rax     # 0x16b688
xorl %ebp, %ebp
movswl (%rax), %r14d
movq (%rbx), %rax
movq %rbx, %rdi
movl %ebp, %esi
callq *0x180(%rax)
movq %rax, %r15
leaq 0x20(%rax), %rdi
movl %r14d, %esi
callq 0x57520
testb %al, %al
je 0x8bcf1
movq 0x688(%rbx), %rdi
movq (%rdi), %rax
movq %r15, %rsi
callq *0x38(%rax)
movb $0x1, 0xca(%r15)
movq %rbx, 0x190(%r15)
incl %ebp
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x178(%rax)
cmpl %eax, %ebp
jl 0x8bcb1
movq 0x688(%rbx), %rdi
callq 0x58cc0
movq $0x0, 0x688(%rbx)
addq $0x218, %rbx            # imm = 0x218
movq %rbx, %rdi
callq 0x701aa
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/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:
movq 0x18(%rdi), %rax
testq %rax, %rax
je 0x8c2ec
pushq %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
leaq 0xd5857(%rip), %rcx     # 0x161b00
movq %rsp, %r14
movq %rcx, (%r14)
movq %rsi, 0x8(%r14)
movl 0x8(%rax), %ebp
testl %ebp, %ebp
jle 0x8c2e1
decl %ebp
movq 0x18(%rbx), %rdi
movl %ebp, %esi
callq 0x5b074
movq (%rax), %rdi
movq (%rdi), %rax
movq %r14, %rsi
callq *0x20(%rax)
testb %al, %al
je 0x8c2b6
movq %rbx, %rdi
movl %ebp, %esi
callq 0x70c10
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
retq
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/menu/popupmenuentry.cpp
// Function: smooth::GUI::PopupMenuEntry::PopupMenuEntry(smooth::String const&, smooth::GUI::Bitmap const&, smooth::GUI::PopupMenu*)
S::GUI::PopupMenuEntry::PopupMenuEntry(const String &iText, const Bitmap &iBitmap, PopupMenu *iPopup) : MenuEntry(iText, iBitmap, iPopup)
{
	type		= classID;
	orientation	= OR_UPPERLEFT;
	hotspot		= NIL;
	owner		= NIL;
	timer		= NIL;

	popupMenuClosed = 0;

	shortcutOffset	= 0;

	SetSize(GetMinimumSize());

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

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

		Add(hotspot);

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

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

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

		timer = NIL;
	}
}

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

	visible = False;

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

	return Success();
}

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

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

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

	Remove(popup);

	hotspot->Activate();

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

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

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

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

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

		timer = new System::Timer();

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

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

	EnterProtectedRegion();

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

	onAction.Emit();

	LeaveProtectedRegion();
}

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

	CalculateHeight();

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

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

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

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

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

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

	SetHeight(height);

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

	Widget	*widget = container;

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

			break;
		}

		widget = widget->GetContainer();
	}
}

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

	MarkText(-1, -1);

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

		timer = NIL;
	}

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

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

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

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

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

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

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

			break;
	}

	return Success();
}

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

	if (length == 0) return 0;

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

	Int	 startPos  = 0;
	Int	 endPos	   = length;

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

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

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

	return GetLogicalCursorPositionFromVisual(line, bestPos);
}

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

	ShowCursor(False);

	markStart	= newMarkStart;
	markEnd		= newMarkEnd;

	Paint(SP_PAINT);

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

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

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

		this->flags |= CF_NOINPUT;

		DeleteSelectedText();

		this->flags ^= CF_NOINPUT;

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

			insertText[0] = character;

			if (selected) RemoveHistoryEntry();

			InsertText(insertText);
		}

		onInput.Emit(text);
	}
}

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

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

		Int	 spaces = tabSize - i % tabSize;

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

	return string;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movl %edx, %r13d
movq %rdi, %rbx
callq 0x570b0
movq %rbx, 0x8(%rsp)
movq %rbx, %rdi
callq 0x57180
movl %eax, %r14d
testl %eax, %eax
jle 0x93ca4
xorl %r15d, %r15d
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
leaq 0x50(%rsp), %rbx
movl %r13d, 0x14(%rsp)
movq 0x8(%rsp), %rdi
movl %r15d, %esi
callq 0x58990
cmpl $0x9, (%rax)
jne 0x93c96
movq %r14, 0x18(%rsp)
movl %r15d, %eax
cltd
idivl %r13d
movl %edx, %r12d
leaq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
movl %r15d, %edx
callq 0x58b00
movq %rbx, %rdi
xorl %esi, %esi
callq 0x58e20
subl %r12d, %r13d
movq %rbx, %r14
movq %rbx, %rdi
movl $0x20, %esi
movl %r13d, %edx
callq 0x57bf0
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x562f0
movq %rax, %r12
movq 0x18(%rsp), %rax
leal (%rax,%rbp), %edx
leaq 0x38(%rsp), %rbx
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
callq 0x57f90
movq %r12, %rdi
movq %rbx, %rsi
callq 0x562f0
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x555f0
movq %rbx, %rdi
callq 0x59200
movq %r14, %rdi
callq 0x59200
leaq 0x20(%rsp), %rdi
callq 0x59200
movq 0x18(%rsp), %rbx
addl %r13d, %ebx
decl %ebx
movl 0x14(%rsp), %r13d
movq %r14, %r12
movq %rbx, %r14
movq %r12, %rbx
incl %r15d
decl %ebp
cmpl %r14d, %r15d
jl 0x93bcb
movq 0x8(%rsp), %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x93cc3
movq %rax, %r14
jmp 0x93ce4
jmp 0x93cc3
jmp 0x93cc8
movq %rax, %r14
jmp 0x93cee
movq %rax, %r14
jmp 0x93cda
movq %rax, %r14
leaq 0x38(%rsp), %rdi
callq 0x59200
leaq 0x50(%rsp), %rdi
callq 0x59200
leaq 0x20(%rsp), %rdi
callq 0x59200
movq 0x8(%rsp), %rdi
callq 0x59200
movq %r14, %rdi
callq 0x57090