LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::GetRealSize() const
S::GUI::Size S::GUI::Widget::GetRealSize() const
{
	if (!registered)   return size;
	if (realSizeValid) return realSize;

	Surface	*surface = GetDrawSurface();

	realSize      = size * surface->GetSurfaceDPI() / 96.0;
	realSizeValid = True;

	return realSize;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpb $0x0, 0xca(%rdi)
je 0x6e87c
cmpb $0x1, 0xc9(%rbx)
jne 0x6e885
movq 0xc0(%rbx), %rax
jmp 0x6e8cb
movq 0xb0(%rbx), %rax
jmp 0x6e8cb
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
leaq 0xb0(%rbx), %r14
movq %rax, %rdi
callq 0x59c60
cwtl
cvtsi2sd %eax, %xmm0
movq %r14, %rdi
callq 0x57480
movq %rsp, %rdi
movq %rax, (%rdi)
movsd 0x74c58(%rip), %xmm0    # 0xe3510
callq 0x59050
movq %rax, 0xc0(%rbx)
movb $0x1, 0xc9(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetBackgroundColor(smooth::GUI::Color const&)
S::Int S::GUI::Widget::SetBackgroundColor(const Color &nColor)
{
	if (backgroundColorSet && backgroundColor == nColor) return Success();

	backgroundColor	   = nColor;
	backgroundColorSet = True;

	Paint(SP_PAINT);

	return Success();
}

// Assembly:
cmpb $0x1, 0xd8(%rdi)
jne 0x6e8ea
movq 0xe8(%rdi), %rax
cmpq 0x8(%rsi), %rax
je 0x6e908
pushq %rax
movups (%rsi), %xmm0
movups %xmm0, 0xe0(%rdi)
movb $0x1, 0xd8(%rdi)
movq (%rdi), %rax
xorl %esi, %esi
callq *0x78(%rax)
addq $0x8, %rsp
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::Show()
S::Int S::GUI::Widget::Show()
{
	if (visible) return Success();

	/* Show ourself.
	 */
	visible = True;

	if (!registered) return Success();

	if (IsVisible()) Paint(SP_PAINT);

	/* Show child widgets.
	 */
	for (Int i = 0; i < GetNOfObjects(); i++)
	{
		Widget	*object = GetNthObject(i);

		if (object == NIL || !object->IsVisible()) continue;

		visible = False;
		object->Hide();

		visible = True;
		object->Show();
	}

	/* Notify listeners.
	 */
	onShow.Emit();

	return Success();
}

// Assembly:
cmpb $0x0, 0xcb(%rdi)
jne 0x6ea21
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movb $0x1, 0xcb(%rdi)
cmpb $0x1, 0xca(%rdi)
jne 0x6ea1d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x6e9c1
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
xorl %ebp, %ebp
cmpl 0x40(%rbx), %ebp
jge 0x6ea0e
movq %rbx, %rdi
movl %ebp, %esi
callq 0x58c90
testq %rax, %rax
je 0x6ea0a
movq %rax, %r14
movq (%rax), %rax
movq %r14, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x6ea0a
movb $0x0, 0xcb(%rbx)
movq (%r14), %rax
movq %r14, %rdi
callq *0x60(%rax)
movb $0x1, 0xcb(%rbx)
movq (%r14), %rax
movq %r14, %rdi
callq *0x58(%rax)
incl %ebp
jmp 0x6e9c3
addq $0x1f8, %rbx            # imm = 0x1F8
movq %rbx, %rdi
callq 0x70196
popq %rbx
popq %r14
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::Hide()
S::Int S::GUI::Widget::Hide()
{
	if (!visible) return Success();

	/* Hide child widgets.
	 */
	for (Int i = 0; i < GetNOfObjects(); i++)
	{
		Widget	*object = GetNthObject(i);

		if (object == NIL || !object->IsVisible()) continue;

		object->Hide();
		visible = False;

		object->Show();
		visible = True;
	}

	/* Hide ourself.
	 */
	Surface	*surface = (IsVisible() ? GetDrawSurface() : NIL);

	visible = False;

	if (!registered) return Success();

	if (surface)
	{
		if (focussed) { focussed = False; onLoseFocus.Emit(); }

		surface->Box(GetVisibleArea(), container->GetBackgroundColor(), Rect::Filled);

		DeactivateTooltip();
	}

	/* Reset mouse status.
	 */
	mouseOver	= False;

	leftButtonDown	= False;
	rightButtonDown	= False;

	mouseDragging	= False;

	/* Notify listeners.
	 */
	onHide.Emit();

	return Success();
}

// Assembly:
cmpb $0x1, 0xcb(%rdi)
jne 0x6eb60
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
xorl %ebp, %ebp
cmpl 0x40(%rbx), %ebp
jge 0x6ea8b
movq %rbx, %rdi
movl %ebp, %esi
callq 0x58c90
testq %rax, %rax
je 0x6ea87
movq %rax, %r14
movq (%rax), %rax
movq %r14, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x6ea87
movq (%r14), %rax
movq %r14, %rdi
callq *0x60(%rax)
movb $0x0, 0xcb(%rbx)
movq (%r14), %rax
movq %r14, %rdi
callq *0x58(%rax)
movb $0x1, 0xcb(%rbx)
incl %ebp
jmp 0x6ea40
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x6eb30
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movb $0x0, 0xcb(%rbx)
cmpb $0x0, 0xca(%rbx)
je 0x6eb56
movq %rax, %r14
testq %rax, %rax
je 0x6eb40
cmpb $0x1, 0xcd(%rbx)
jne 0x6eae0
movb $0x0, 0xcd(%rbx)
leaq 0x518(%rbx), %rdi
callq 0x70196
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %r15
movq %rax, (%r15)
movq %rdx, 0x8(%r15)
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
callq *0x140(%rax)
movq 0xf3499(%rip), %rcx     # 0x161fa8
movl (%rcx), %ecx
movq %rsp, %r8
andq $0x0, (%r8)
movq %r14, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x58b80
movq %rbx, %rdi
callq 0x5a590
jmp 0x6eb40
movb $0x0, 0xcb(%rbx)
cmpb $0x0, 0xca(%rbx)
je 0x6eb56
andl $0x0, 0xd4(%rbx)
addq $0x218, %rbx            # imm = 0x218
movq %rbx, %rdi
callq 0x70196
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::Activate()
S::Int S::GUI::Widget::Activate()
{
	if (active) return Success();

	Surface	*surface = (IsVisible() ? GetDrawSurface() : NIL);

	if (surface) { surface->StartPaint(GetVisibleArea()); Hide(); }

	active = True;

	if (surface) { Show(); Process(SM_MOUSEMOVE, 0, 0); surface->EndPaint(); }

	onActivate.Emit();

	return Success();
}

// Assembly:
cmpb $0x0, 0xcc(%rdi)
jne 0x6ec0e
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
testb %al, %al
je 0x6ebf1
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
testq %rax, %rax
je 0x6ebf1
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x56160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movb $0x1, 0xcc(%rbx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
movq %r14, %rdi
callq 0x59a80
jmp 0x6ebf8
movb $0x1, 0xcc(%rbx)
addq $0x238, %rbx            # imm = 0x238
movq %rbx, %rdi
callq 0x70196
addq $0x18, %rsp
popq %rbx
popq %r14
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::Deactivate()
S::Int S::GUI::Widget::Deactivate()
{
	if (!active) return Success();

	Surface	*surface = (IsVisible() ? GetDrawSurface() : NIL);

	if (surface) { surface->StartPaint(GetVisibleArea()); Hide(); }

	active = False;

	foreach (Widget *widget, widgets)
	{
		widget->mouseOver	= False;

		widget->leftButtonDown	= False;
		widget->rightButtonDown	= False;

		widget->mouseDragging	= False;
	}

	if (surface) { Show(); surface->EndPaint(); }

	onDeactivate.Emit();

	return Success();
}

// Assembly:
cmpb $0x1, 0xcc(%rdi)
jne 0x6ece3
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
movb $0x1, %bpl
xorl %r14d, %r14d
testb %al, %al
je 0x6ec7d
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
testq %rax, %rax
je 0x6ec7d
movq %rax, %r15
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r15, %rdi
callq 0x56160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
xorl %ebp, %ebp
jmp 0x6ec80
xorl %r15d, %r15d
movb $0x0, 0xcc(%rbx)
leaq 0x38(%rbx), %r12
leal -0x1(%r14), %eax
movl 0x40(%rbx), %ecx
decl %ecx
cmpl %ecx, %eax
jge 0x6ecb2
movq %r12, %rdi
movl %r14d, %esi
callq 0x6180a
movq (%rax), %rax
andl $0x0, 0xd4(%rax)
incl %r14d
jmp 0x6ec8b
testb %bpl, %bpl
jne 0x6ecc8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq %r15, %rdi
callq 0x59a80
addq $0x258, %rbx            # imm = 0x258
movq %rbx, %rdi
callq 0x70196
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::Paint(int)
S::Int S::GUI::Widget::Paint(Int message)
{
	if (!registered) return Error();
	if (!visible)	 return Success();

	Window	*window	= container->GetContainerWindow();

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

	switch (message)
	{
		case SP_PAINT:
			widgets.LockForRead();

			foreach (Widget *widget, widgets)
			{
				if (widget->IsAffected(window->GetUpdateRect())) widget->Paint(message);
			}

			widgets.Unlock();

			break;
	}

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
cmpb $0x1, 0xca(%rdi)
jne 0x6ed85
movq %rdi, %rbx
xorl %ebp, %ebp
cmpb $0x1, 0xcb(%rdi)
jne 0x6ed88
movl %esi, %r15d
movq 0x190(%rbx), %rdi
callq 0x56a50
movq %rax, %r14
testq %rax, %rax
sete %al
testl %r15d, %r15d
setne %cl
orb %al, %cl
jne 0x6ed88
leaq 0x38(%rbx), %r15
movq %r15, %rdi
callq 0x58e30
addq $0x5ec, %r14            # imm = 0x5EC
xorl %r12d, %r12d
leal -0x1(%r12), %eax
movl 0x40(%rbx), %ecx
decl %ecx
cmpl %ecx, %eax
jge 0x6ed99
movq %r15, %rdi
movl %r12d, %esi
callq 0x6180a
movq (%rax), %r13
movq (%r13), %rax
movq %r13, %rdi
movq %r14, %rsi
callq *0x158(%rax)
testb %al, %al
je 0x6ed80
movq (%r13), %rax
movq %r13, %rdi
xorl %esi, %esi
callq *0x78(%rax)
incl %r12d
jmp 0x6ed44
pushq $-0x1
popq %rbp
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r15, %rdi
callq 0x56da0
xorl %ebp, %ebp
jmp 0x6ed88
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetFocusByKeyboard()
S::Void S::GUI::Widget::SetFocusByKeyboard()
{
	if (!focussed)
	{
		focussed = True;

		onGetFocus.Emit();
		onGetFocusByKeyboard.Emit();
	}
}

// Assembly:
cmpb $0x0, 0xcd(%rdi)
je 0x6fa08
retq
pushq %rbx
movq %rdi, %rbx
movb $0x1, 0xcd(%rdi)
addq $0x4d8, %rdi            # imm = 0x4D8
callq 0x70196
addq $0x4f8, %rbx            # imm = 0x4F8
movq %rbx, %rdi
popq %rbx
jmp 0x70196
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::IsDropTarget() const
S::Bool S::GUI::Widget::IsDropTarget() const
{
	if (dropTarget) return True;

	foreach (Widget *widget, widgets)
	{
		if (widget->IsDropTarget()) return True;
	}

	return False;
}

// Assembly:
movb $0x1, %al
cmpb $0x0, 0xd3(%rdi)
jne 0x6fa96
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
leaq 0x38(%rdi), %r14
pushq $-0x1
popq %r12
xorl %ecx, %ecx
movl %r12d, %ebp
testl %ecx, %ecx
jne 0x6fa97
movl 0x40(%rbx), %eax
decl %eax
cmpl %eax, %ebp
jge 0x6fa97
incl %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x70f08
movq (%rax), %r15
movb $0x1, %dl
movl %r12d, %ecx
testb $0x1, %dl
je 0x6fa53
movq %r15, %rdi
callq 0x59090
xorl %edx, %edx
movl $0x0, %ecx
testb %al, %al
je 0x6fa74
movb $0x1, %al
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
xorl %eax, %eax
jmp 0x6fa8e
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetFocus()
S::Int S::GUI::Widget::SetFocus()
{
	if (!focussed)
	{
		focussed = True;

		onGetFocus.Emit();

		if (GetNOfObjects() > 0) GetNthObject(0)->SetFocus();
	}

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
cmpb $0x0, 0xcd(%rbx)
jne 0x6fad1
movb $0x1, 0xcd(%rbx)
leaq 0x4d8(%rbx), %rdi
callq 0x70196
cmpl $0x0, 0x40(%rbx)
jle 0x6fad1
movq %rbx, %rdi
xorl %esi, %esi
callq 0x58c90
movq %rax, %rbx
jmp 0x6faa0
xorl %eax, %eax
popq %rbx
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetText(smooth::String const&)
S::Int S::GUI::Widget::SetText(const String &nText)
{
	if (text == nText) return Success();

	Surface	*surface      = GetDrawSurface();

	Bool	 prevVisible  = IsVisible();
	Bool	 prevFocussed = focussed;

	if (registered && prevFocussed) { focussed = False; }
	if (registered && prevVisible)	{ surface->StartPaint(GetVisibleArea()); Hide(); }

	text = nText;

	ComputeTextSize();

	if (registered && prevVisible)  { Show(); Process(SM_MOUSEMOVE, 0, 0); surface->EndPaint(); }
	if (registered && prevFocussed) { focussed = True; }

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0xf0(%rdi), %r12
movq %r12, %rdi
callq 0x56960
testb %al, %al
jne 0x6fbc5
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
movl %eax, %ebp
movb 0xca(%rbx), %al
movb 0xcd(%rbx), %r13b
movl %eax, %ecx
andb %r13b, %cl
cmpb $0x1, %cl
jne 0x6fb39
movb $0x0, 0xcd(%rbx)
andb %bpl, %al
cmpb $0x1, %al
jne 0x6fb69
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x56160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x56630
movq %rbx, %rdi
callq 0x56c30
movb 0xca(%rbx), %al
andb %al, %bpl
cmpb $0x1, %bpl
jne 0x6fbb7
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
movq %r14, %rdi
callq 0x59a80
movb 0xca(%rbx), %al
andb %r13b, %al
testb $0x1, %al
je 0x6fbc5
movb $0x1, 0xcd(%rbx)
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetFont(smooth::GUI::Font const&)
S::Int S::GUI::Widget::SetFont(const Font &nFont)
{
	if (font == nFont) return Success();

	Surface	*surface      = GetDrawSurface();

	Bool	 prevVisible  = IsVisible();
	Bool	 prevFocussed = focussed;

	if (registered && prevFocussed) { focussed = False; }
	if (registered && prevVisible)	{ surface->StartPaint(GetVisibleArea()); Hide(); }

	font = nFont;

	ComputeTextSize();

	if (registered && prevVisible)  { Show(); Process(SM_MOUSEMOVE, 0, 0); surface->EndPaint(); }
	if (registered && prevFocussed) { focussed = True; }

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x140(%rdi), %r12
movq %r12, %rdi
callq 0x5a110
testb %al, %al
jne 0x6fd0b
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
movl %eax, %ebp
movb 0xca(%rbx), %al
movb 0xcd(%rbx), %r13b
movl %eax, %ecx
andb %r13b, %cl
cmpb $0x1, %cl
jne 0x6fc7f
movb $0x0, 0xcd(%rbx)
andb %bpl, %al
cmpb $0x1, %al
jne 0x6fcaf
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x56160
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x59f80
movq %rbx, %rdi
callq 0x56c30
movb 0xca(%rbx), %al
andb %al, %bpl
cmpb $0x1, %bpl
jne 0x6fcfd
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
movq %r14, %rdi
callq 0x59a80
movb 0xca(%rbx), %al
andb %r13b, %al
testb $0x1, %al
je 0x6fd0b
movb $0x1, 0xcd(%rbx)
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetOrientation(int)
S::Int S::GUI::Widget::SetOrientation(Int nOrientation)
{
	if (orientation == nOrientation) return Success();

	Bool	 prevVisible = IsVisible();

	if (registered && prevVisible) Hide();

	orientation = nOrientation;

	if (registered && prevVisible) Show();

	return Success();
}

// Assembly:
movswl 0xd0(%rdi), %eax
cmpl %esi, %eax
je 0x6fd78
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
movl %eax, %r14d
movb 0xca(%rbx), %al
movl %r14d, %ecx
andb %al, %cl
cmpb $0x1, %cl
jne 0x6fd5b
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movb 0xca(%rbx), %al
movw %bp, 0xd0(%rbx)
andb %al, %r14b
cmpb $0x1, %r14b
jne 0x6fd74
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
popq %rbx
popq %r14
popq %rbp
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::SetMetrics(smooth::GUI::Point const&, smooth::GUI::Size const&)
S::Int S::GUI::Widget::SetMetrics(const Point &nPos, const Size &nSize)
{
	if (nPos.x == pos.x && nPos.y == pos.y && nSize.cx == size.cx && nSize.cy == size.cy) return Success();

	DeactivateTooltip();

	Surface	*surface = (IsVisible() ? GetDrawSurface() : NIL);

	if (surface && orientation != OR_FREE) surface->StartPaint(container->GetVisibleArea());
	if (surface			     ) Hide();

	InvalidateMetrics();

	if (nPos.x   != pos.x   || nPos.y   != pos.y  )	{ pos  = nPos;  onChangePosition.Emit(pos); }
	if (nSize.cx != size.cx || nSize.cy != size.cy)	{ size = nSize; onChangeSize.Emit(size);    }

	if (surface			     ) { Show(); Process(SM_MOUSEMOVE, 0, 0); }
	if (surface && orientation != OR_FREE) surface->EndPaint();

	return Success();
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
movl (%rsi), %eax
cmpl 0xa8(%rdi), %eax
jne 0x6fea4
movl 0x4(%r12), %eax
cmpl 0xac(%rbx), %eax
jne 0x6fea4
movl (%r14), %eax
cmpl 0xb0(%rbx), %eax
jne 0x6fea4
movl 0x4(%r14), %eax
cmpl 0xb4(%rbx), %eax
je 0x6ffba
movq %rbx, %rdi
callq 0x5a590
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x6feca
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r15
jmp 0x6fecd
xorl %r15d, %r15d
testq %r15, %r15
je 0x6ff03
cmpw $0x80, 0xd0(%rbx)
je 0x6ff03
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r15, %rdi
callq 0x56160
jmp 0x6ff08
testq %r15, %r15
je 0x6ff11
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %rbx, %rdi
callq 0x59a30
movl (%r12), %eax
cmpl 0xa8(%rbx), %eax
jne 0x6ff32
movl 0x4(%r12), %eax
cmpl 0xac(%rbx), %eax
je 0x6ff50
leaq 0xa8(%rbx), %rsi
movq (%r12), %rax
movq %rax, 0xa8(%rbx)
leaq 0x278(%rbx), %rdi
callq 0x70356
movl (%r14), %eax
cmpl 0xb0(%rbx), %eax
jne 0x6ff67
movl 0x4(%r14), %eax
cmpl 0xb4(%rbx), %eax
je 0x6ff84
leaq 0xb0(%rbx), %rsi
movq (%r14), %rax
movq %rax, 0xb0(%rbx)
leaq 0x298(%rbx), %rdi
callq 0x705b8
testq %r15, %r15
je 0x6ffba
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
cmpw $0x80, 0xd0(%rbx)
je 0x6ffba
movq %r15, %rdi
callq 0x59a80
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/widget.cpp
// Function: smooth::GUI::Widget::IsRightToLeft() const
S::Bool S::GUI::Widget::IsRightToLeft() const
{
	if (IsRegistered())
	{
		Window	*containerWindow = container->GetContainerWindow();

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

	return Setup::rightToLeft;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x88(%rax)
testb %al, %al
je 0x6fff7
movq 0x190(%rbx), %rdi
callq 0x56a50
testq %rax, %rax
je 0x6fff7
movq (%rax), %rcx
movq %rax, %rdi
popq %rbx
jmpq *0x160(%rcx)
movq 0xf1ae2(%rip), %rax     # 0x161ae0
movb (%rax), %al
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/../../../include/smooth/templates/signals/signal.h
// Function: int smooth::Signal1<void, int>::Disconnect<smooth::GUI::Widget, smooth::GUI::Widget, void>(void (smooth::GUI::Widget::*)(), smooth::GUI::Widget*)
Int Disconnect(slotReturnTYPE (classTYPE::*proc)(), oClassTYPE *inst)
			{
				if (slots0 == NIL) return Error();

				SlotClass0<classTYPE, slotReturnTYPE>	 slot(proc, inst);

				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 0x7054a
pushq %rbp
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0xe7441(%rip), %rdi     # 0x157940
movq %rsp, %r14
movq %rdi, (%r14)
movq %rsi, 0x10(%r14)
movq %rdx, 0x18(%r14)
movq %rcx, 0x8(%r14)
movl 0x8(%rax), %ebp
testl %ebp, %ebp
jle 0x7053f
decl %ebp
movq 0x18(%rbx), %rdi
movl %ebp, %esi
callq 0x5c1b6
movq (%rax), %rdi
movq (%rdi), %rax
movq %r14, %rsi
callq *0x20(%rax)
testb %al, %al
je 0x70514
movq %rbx, %rdi
movl %ebp, %esi
callq 0x71054
xorl %eax, %eax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %rbp
retq
pushq $-0x1
popq %rax
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/../../../include/smooth/templates/signals/signalr.h
// Function: smooth::SignalR0<smooth::GUI::PopupMenu*>::Connect(smooth::GUI::PopupMenu*)
Int Connect(const returnTYPE value)
			{
				if (slots0 == NIL)
				{
					slots0 = new Array<Void *>();
					slots0->EnableLocking();
				}

				slots0->Add(new SlotRValue0<returnTYPE>(value));

				return Success();
			}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rsi, %rbx
movq 0x18(%rdi), %r15
testq %r15, %r15
jne 0x70e5b
movq %rdi, %r14
pushq $0x58
popq %rdi
callq 0x56700
movq %rax, %r15
movq %rax, %rdi
callq 0x5c808
movq %r15, 0x18(%r14)
movq %r15, %rdi
callq 0x583a0
movq 0x18(%r14), %r15
pushq $0x10
popq %rdi
callq 0x56700
leaq 0xe6a76(%rip), %rcx     # 0x1578e0
movq %rcx, (%rax)
movq %rbx, 0x8(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %r15, %rdi
callq 0x5c03a
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
pushq $0x58
popq %rsi
movq %r15, %rdi
callq 0x564c0
movq %rbx, %rdi
callq 0x58260
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/../../../include/smooth/templates/signals/signalr.h
// Function: smooth::SignalR0<smooth::GUI::PopupMenu*>::Emit() const
returnTYPE Emit(SIGNALS_ARGUMENT_PARAMETER_LIST) const
			{
				returnTYPE	 returnValue = (returnTYPE) NIL;

				if (slotsN == NIL && slots0 == NIL) return returnValue;

				ProtectParent();

				for (Int i = 0; slotsN != NIL && i < slotsN->Length(); i++) returnValue = ((SIGNALS_SLOT_BASE_CLASS_NAME<returnTYPE SIGNALS_CONDITIONAL_COMMA SIGNALS_ARGUMENT_TYPES> *) slotsN->GetNth(i))->Emit(SIGNALS_ARGUMENT_PARAMETERS);
				for (Int j = 0; slots0 != NIL && j < slots0->Length(); j++) returnValue = ((SlotRBase0<returnTYPE> *) slots0->GetNth(j))->Emit();

				UnprotectParent();

				return returnValue;
			}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq 0x18(%rdi), %rax
xorl %r15d, %r15d
orq 0x10(%rdi), %rax
jne 0x710c1
xorl %r14d, %r14d
jmp 0x71123
movq %rdi, %rbx
callq 0x70ee0
xorl %r14d, %r14d
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
je 0x710f4
cmpl 0x8(%rdi), %r15d
jge 0x710f4
movl %r15d, %esi
callq 0x5c1b6
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq %rax, %r14
incl %r15d
jmp 0x710cc
xorl %ebp, %ebp
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x7111b
cmpl 0x8(%rdi), %ebp
jge 0x7111b
movl %ebp, %esi
callq 0x5c1b6
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq %rax, %r14
incl %ebp
jmp 0x710f6
movq %rbx, %rdi
callq 0x70ef4
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/activearea.cpp
// Function: smooth::GUI::ActiveArea::ActiveArea(smooth::GUI::Color const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::ActiveArea::ActiveArea(const Color &iColor, const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type		= classID;
	areaColor	= iColor;

	if (GetWidth()	== 0) SetWidth(80);
	if (GetHeight() == 0) SetHeight(20);

	hotspot	= new Hotspot(Point(1, 1), GetSize() - Size(2, 2));

	hotspot->onLeftButtonClick.Connect(&onAction);

	Add(hotspot);

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

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x58c80
movq 0xf0c5b(%rip), %rax     # 0x161db0
addq $0x10, %rax
movq %rax, (%rbx)
andq $0x0, 0x5c0(%rbx)
andl $0x0, 0x5b8(%rbx)
movq 0xf089e(%rip), %rax     # 0x161a10
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movups (%r14), %xmm0
movups %xmm0, 0x5b8(%rbx)
cmpl $0x0, 0xb0(%rbx)
jne 0x71198
pushq $0x50
popq %rsi
movq %rbx, %rdi
callq 0x5a1f0
cmpl $0x0, 0xb4(%rbx)
jne 0x711ac
pushq $0x14
popq %rsi
movq %rbx, %rdi
callq 0x58980
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x56700
movq %rax, %r14
movabsq $0x100000001, %rax      # imm = 0x100000001
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movl 0xb0(%rbx), %eax
movl 0xb4(%rbx), %ecx
addl $-0x2, %eax
addl $-0x2, %ecx
shlq $0x20, %rcx
orq %rcx, %rax
movq %rsp, %rdx
movq %rax, (%rdx)
movq %r14, %rdi
callq 0x56aa0
movq %r14, 0x5c8(%rbx)
addq $0x338, %r14            # imm = 0x338
leaq 0x478(%rbx), %rsi
movq %r14, %rdi
callq 0x71412
movq 0x5c8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xf0673(%rip), %rsi     # 0x1618a0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x714a0
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r15
movl $0x5b8, %esi            # imm = 0x5B8
movq %r14, %rdi
callq 0x564c0
jmp 0x71256
movq %rax, %r15
movq %rbx, %rdi
callq 0x58860
movq %r15, %rdi
callq 0x58260
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/activearea.cpp
// Function: smooth::GUI::ActiveArea::Paint(int)
S::Int S::GUI::ActiveArea::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(1, 1) - Size(2, 2), areaColor, Rect::Filled);
				surface->Frame(frame, FRAME_DOWN);
			}

			break;
	}

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movl %esi, %ebp
movq %rdi, %r14
movq (%rdi), %rax
callq *0x88(%rax)
testb %al, %al
je 0x713e6
movq (%r14), %rax
movq %r14, %rdi
callq *0x90(%rax)
xorl %ebx, %ebx
testl %ebp, %ebp
jne 0x713e9
testb %al, %al
je 0x713e9
movq (%r14), %rax
movq %r14, %rdi
callq *0x40(%rax)
movq %rax, %r15
movq (%r14), %rax
movq %r14, %rdi
callq *0x48(%rax)
movq %rax, %r13
movq %rax, %rbp
shrq $0x20, %rbp
movq (%r14), %rax
movq %r14, %rdi
callq *0x50(%rax)
leal (%rax,%r13), %ecx
shrq $0x20, %rax
leaq 0x28(%rsp), %r12
movl %r13d, (%r12)
movl %ebp, 0x4(%r12)
movl %ecx, 0x8(%r12)
addl %ebp, %eax
movl %eax, 0xc(%r12)
movabsq $0x100000001, %rax      # imm = 0x100000001
leaq 0x10(%rsp), %rsi
movq %rax, (%rsi)
movq %r12, %rdi
callq 0x58930
leal -0x2(%rdx), %ecx
movabsq $-0x100000000, %rsi     # imm = 0xFFFFFFFF00000000
andq %rdx, %rsi
orq %rsi, %rcx
movabsq $-0x200000000, %rdx     # imm = 0xFFFFFFFE00000000
addq %rcx, %rdx
leaq 0x18(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
addq $0x5b8, %r14            # imm = 0x5B8
movq 0xf0be8(%rip), %rax     # 0x161fa8
movl (%rax), %ecx
leaq 0x8(%rsp), %r8
andq $0x0, (%r8)
movq %r15, %rdi
movq %r14, %rdx
callq 0x58b80
pushq $0x1
popq %rdx
movq %r15, %rdi
movq %r12, %rsi
callq 0x58ad0
jmp 0x713e9
pushq $-0x1
popq %rbx
movl %ebx, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/../../../../include/smooth/templates/signals/signal.h
// Function: int smooth::Signal1<void, smooth::GUI::Point const&>::Connect<void>(smooth::Signal0<void>*)
Int Connect(Signal0<slotReturnTYPE> *sig)
			{
				if ((Signal *) sig == (Signal *) this) return Error();

				if (slots0 == NIL)
				{
					slots0 = new Array<Void *>();
					slots0->EnableLocking();
				}

				slots0->Add(new SlotSignal0<slotReturnTYPE>(sig));

				return Success();
			}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
cmpq %rdi, %rsi
je 0x7147c
movq %rsi, %rbx
movq %rdi, %r14
movq 0x18(%rdi), %r15
testq %r15, %r15
jne 0x71452
pushq $0x58
popq %rdi
callq 0x56700
movq %rax, %r15
movq %rax, %rdi
callq 0x5c808
movq %r15, 0x18(%r14)
movq %r15, %rdi
callq 0x583a0
movq 0x18(%r14), %r15
pushq $0x10
popq %rdi
callq 0x56700
leaq 0xe66bf(%rip), %rcx     # 0x157b20
movq %rcx, (%rax)
movq %rbx, 0x8(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %r15, %rdi
callq 0x5c03a
xorl %eax, %eax
jmp 0x7147f
pushq $-0x1
popq %rax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
pushq $0x58
popq %rsi
movq %r15, %rdi
callq 0x564c0
movq %rbx, %rdi
callq 0x58260
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::OnMouseDownPlus()
S::Void S::GUI::Arrows::OnMouseDownPlus()
{
	if (timer == NIL)
	{
		timer = new System::Timer();

		timer->onInterval.Connect(&Arrows::OnTimer, this);
		timer->Start(0);

		timerCount	= 0;
		timerDirection	= 1;
	}
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
cmpq $0x0, 0x5c0(%rdi)
jne 0x71a08
movq %rdi, %rbx
pushq $0x68
popq %rdi
callq 0x56700
movq %rax, %r14
movq %rax, %rdi
callq 0x56c00
movq %r14, 0x5c0(%rbx)
addq $0x48, %r14
movq 0xf05c4(%rip), %rsi     # 0x161fa0
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x724fa
movq 0x5c0(%rbx), %rdi
xorl %esi, %esi
callq 0x56100
movabsq $0x100000000, %rax      # imm = 0x100000000
movq %rax, 0x5c8(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
pushq $0x68
popq %rsi
movq %r14, %rdi
callq 0x564c0
movq %rbx, %rdi
callq 0x58260
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::OnMouseDownMinus()
S::Void S::GUI::Arrows::OnMouseDownMinus()
{
	if (timer == NIL)
	{
		timer = new System::Timer();

		timer->onInterval.Connect(&Arrows::OnTimer, this);
		timer->Start(0);

		timerCount	= 0;
		timerDirection	= -1;
	}
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
cmpq $0x0, 0x5c0(%rdi)
jne 0x71a88
movq %rdi, %rbx
pushq $0x68
popq %rdi
callq 0x56700
movq %rax, %r14
movq %rax, %rdi
callq 0x56c00
movq %r14, 0x5c0(%rbx)
addq $0x48, %r14
movq 0xf0544(%rip), %rsi     # 0x161fa0
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x724fa
movq 0x5c0(%rbx), %rdi
xorl %esi, %esi
callq 0x56100
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
movq %rax, 0x5c8(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
pushq $0x68
popq %rsi
movq %r14, %rdi
callq 0x564c0
movq %rbx, %rdi
callq 0x58260
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::OnMouseRelease()
S::Void S::GUI::Arrows::OnMouseRelease()
{
	if (timer != NIL)
	{
		timer->Stop();

		DeleteObject(timer);

		timer = NIL;
	}
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0x5c0(%rdi), %rdi
testq %rdi, %rdi
je 0x71acf
callq 0x5a518
movq 0x5c0(%rbx), %rdi
callq 0x5a010
andq $0x0, 0x5c0(%rbx)
popq %rbx
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::~Arrows()
S::GUI::Arrows::~Arrows()
{
	if (timer != NIL)
	{
		timer->Stop();

		DeleteObject(timer);

		timer = NIL;
	}

	DeleteObject(arrow1Hotspot);
	DeleteObject(arrow2Hotspot);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0xf024d(%rip), %rax     # 0x161df8
addq $0x10, %rax
movq %rax, (%rdi)
movq 0x5c0(%rdi), %rdi
testq %rdi, %rdi
je 0x71bd7
callq 0x5a518
movq 0x5c0(%rbx), %rdi
callq 0x5a010
andq $0x0, 0x5c0(%rbx)
movq 0x5e8(%rbx), %rdi
callq 0x5a010
movq 0x5f0(%rbx), %rdi
callq 0x5a010
leaq 0x618(%rbx), %rdi
callq 0x724c6
leaq 0x5f8(%rbx), %rdi
callq 0x724e0
movq %rbx, %rdi
popq %rbx
jmp 0x58860
movq %rax, %rdi
callq 0x5bffa
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::OnTimer()
S::Void S::GUI::Arrows::OnTimer()
{
	if (timerCount == 0) { timer->Stop(); timer->Start(250); }
	if (timerCount == 1) { timer->Stop(); timer->Start(100); }

	Int	 prevValue	= *variable;
	Int	 difference	= timerDirection;

	for (Int n = 1; n <= 8; n++)
	{
		if (timerCount >= 8 * n) difference = timerDirection * (Int) Math::Pow(2, n);
	}

	*variable = Math::Min(Math::Max(*variable + difference * Int(stepSize), startValue), endValue);

	if (*variable != prevValue) onValueChange.Emit(*variable);

	timerCount++;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl 0x5c8(%rdi), %eax
testl %eax, %eax
jne 0x721f9
movq 0x5c0(%rbx), %rdi
callq 0x5a518
movq 0x5c0(%rbx), %rdi
movl $0xfa, %esi
callq 0x56100
movl 0x5c8(%rbx), %eax
cmpl $0x1, %eax
jne 0x72219
movq 0x5c0(%rbx), %rdi
callq 0x5a518
movq 0x5c0(%rbx), %rdi
pushq $0x64
popq %rsi
callq 0x56100
movq 0x5d0(%rbx), %rax
movl (%rax), %r15d
movl 0x5cc(%rbx), %esi
pushq $0x1
popq %rbp
pushq $0x8
popq %r12
pushq $0x2
popq %r14
cmpl $0x9, %ebp
je 0x72263
cmpl %r12d, 0x5c8(%rbx)
jl 0x7225b
movl 0x5cc(%rbx), %r13d
movl %r14d, %edi
movl %ebp, %esi
callq 0x570f0
cvttsd2si %xmm0, %esi
imull %r13d, %esi
incl %ebp
addl $0x8, %r12d
jmp 0x72234
movq 0x5d0(%rbx), %rax
imull 0x5e0(%rbx), %esi
addl (%rax), %esi
movl 0x5d8(%rbx), %ecx
cmpl %ecx, %esi
cmovlel %ecx, %esi
movl 0x5dc(%rbx), %ecx
cmpl %ecx, %esi
cmovgel %ecx, %esi
movl %esi, (%rax)
cmpl %r15d, %esi
je 0x7229c
leaq 0x618(%rbx), %rdi
callq 0x72596
incl 0x5c8(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/arrows.cpp
// Function: smooth::GUI::Arrows::SetRange(int, int)
S::Int S::GUI::Arrows::SetRange(Int rangeStart, Int rangeEnd)
{
	if (startValue == rangeStart && endValue == rangeEnd) return Success();

	startValue	= rangeStart;
	endValue	= rangeEnd;

	SetValue(*variable);

	onRangeChange.Emit(startValue, endValue);

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
cmpl %esi, 0x5d8(%rdi)
jne 0x722c6
cmpl %edx, 0x5dc(%rbx)
je 0x722fb
movl %esi, 0x5d8(%rbx)
movl %edx, 0x5dc(%rbx)
movq 0x5d0(%rbx), %rax
movl (%rax), %esi
movq %rbx, %rdi
callq 0x58130
leaq 0x5f8(%rbx), %rdi
movl 0x5d8(%rbx), %esi
movl 0x5dc(%rbx), %edx
callq 0x7260e
xorl %eax, %eax
popq %rbx
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/button.cpp
// Function: smooth::GUI::Button::Button(smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::Button::Button(const String &iText, const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type = classID;
	text = iText;

	if (GetWidth()	== 0) SetWidth(80);
	if (GetHeight() == 0) SetHeight(22);

	ComputeTextSize();

	hotspot	= new HotspotSimpleButton(flags & BF_NOFRAME ? Point() : Point(4, 4), GetSize() - (flags & BF_NOFRAME ? Size() : Size(8, 8)));
	hotspot->onLeftButtonClick.Connect(&onAction);

	Add(hotspot);

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

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x58c80
movq 0xeeed9(%rip), %rax     # 0x1617f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5b8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x59c80
movq 0xef4e2(%rip), %rax     # 0x161e20
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r15, %rsi
callq 0x56630
cmpl $0x0, 0xb0(%rbx)
jne 0x72968
pushq $0x50
popq %rsi
movq %rbx, %rdi
callq 0x5a1f0
cmpl $0x0, 0xb4(%rbx)
jne 0x7297c
pushq $0x16
popq %rsi
movq %rbx, %rdi
callq 0x58980
movq %rbx, %rdi
callq 0x56c30
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x56700
movq %rax, %r15
movl 0x30(%rbx), %eax
andl $0x1, %eax
leal (,%rax,4), %ecx
xorl $0x4, %ecx
shll $0x3, %eax
xorl $0x8, %eax
leaq 0x10(%rsp), %rsi
movl %ecx, (%rsi)
movl %ecx, 0x4(%rsi)
movl 0xb0(%rbx), %ecx
movl 0xb4(%rbx), %edx
subl %eax, %ecx
subl %eax, %edx
shlq $0x20, %rdx
orq %rdx, %rcx
leaq 0x8(%rsp), %rdx
movq %rcx, (%rdx)
movq %r15, %rdi
callq 0x56ad0
movq %r15, 0x5c0(%rbx)
addq $0x338, %r15            # imm = 0x338
leaq 0x478(%rbx), %rsi
movq %r15, %rdi
callq 0x71412
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xeeadd(%rip), %rsi     # 0x1614f0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x732e6
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r12
movl $0x5b8, %esi            # imm = 0x5B8
movq %r15, %rdi
callq 0x564c0
jmp 0x72a43
movq %rax, %r12
jmp 0x72a4b
movq %rax, %r12
movq %r14, %rdi
callq 0x5a4c8
movq %rbx, %rdi
callq 0x58860
movq %r12, %rdi
callq 0x58260
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/button.cpp
// Function: smooth::GUI::Button::Button(smooth::GUI::Bitmap const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::Button::Button(const Bitmap &iBitmap, const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type = classID;

	SetBitmap(iBitmap);

	if (GetWidth()	== 0) SetWidth(80);
	if (GetHeight() == 0) SetHeight(22);

	hotspot	= new HotspotSimpleButton(flags & BF_NOFRAME ? Point() : Point(4, 4), GetSize() - (flags & BF_NOFRAME ? Size() : Size(8, 8)));
	hotspot->onLeftButtonClick.Connect(&onAction);

	Add(hotspot);

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

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x58c80
movq 0xeed3b(%rip), %rax     # 0x1617f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5b8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x59c80
movq 0xef344(%rip), %rax     # 0x161e20
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a120
cmpl $0x0, 0xb0(%rbx)
jne 0x72b02
pushq $0x50
popq %rsi
movq %rbx, %rdi
callq 0x5a1f0
cmpl $0x0, 0xb4(%rbx)
jne 0x72b16
pushq $0x16
popq %rsi
movq %rbx, %rdi
callq 0x58980
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x56700
movq %rax, %r15
movl 0x30(%rbx), %eax
andl $0x1, %eax
leal (,%rax,4), %ecx
xorl $0x4, %ecx
shll $0x3, %eax
xorl $0x8, %eax
leaq 0x10(%rsp), %rsi
movl %ecx, (%rsi)
movl %ecx, 0x4(%rsi)
movl 0xb0(%rbx), %ecx
movl 0xb4(%rbx), %edx
subl %eax, %ecx
subl %eax, %edx
shlq $0x20, %rdx
orq %rdx, %rcx
leaq 0x8(%rsp), %rdx
movq %rcx, (%rdx)
movq %r15, %rdi
callq 0x56ad0
movq %r15, 0x5c0(%rbx)
addq $0x338, %r15            # imm = 0x338
leaq 0x478(%rbx), %rsi
movq %r15, %rdi
callq 0x71412
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xee94b(%rip), %rsi     # 0x1614f0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x732e6
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r12
movl $0x5b8, %esi            # imm = 0x5B8
movq %r15, %rdi
callq 0x564c0
jmp 0x72bd5
movq %rax, %r12
jmp 0x72bdd
movq %rax, %r12
movq %r14, %rdi
callq 0x5a4c8
movq %rbx, %rdi
callq 0x58860
movq %r12, %rdi
callq 0x58260
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/button.cpp
// Function: smooth::GUI::Button::SetBitmap(smooth::GUI::Bitmap const&)
S::Int S::GUI::Button::SetBitmap(const Bitmap &nBitmap)
{
	Bool	 prevVisible = IsVisible();

	if (IsRegistered() && prevVisible) Hide();

	bitmap = nBitmap;

	if (IsRegistered() && prevVisible) Show();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x90(%rax)
movl %eax, %ebp
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
testb %bpl, %bpl
je 0x72c21
testb %al, %al
je 0x72c21
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
leaq 0x5b8(%rbx), %rdi
movq %r14, %rsi
callq 0x59570
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
andb %al, %bpl
cmpb $0x1, %bpl
jne 0x72c4e
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
xorl %eax, %eax
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/button.cpp
// Function: smooth::GUI::Button::Button(smooth::String const&, smooth::GUI::Bitmap const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::Button::Button(const String &iText, const Bitmap &iBitmap, const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type = classID;
	text = iText;

	SetBitmap(iBitmap);

	if (GetWidth()	== 0) SetWidth(80);
	if (GetHeight() == 0) SetHeight(22);

	ComputeTextSize();

	hotspot	= new HotspotSimpleButton(flags & BF_NOFRAME ? Point() : Point(4, 4), GetSize() - (flags & BF_NOFRAME ? Size() : Size(8, 8)));
	hotspot->onLeftButtonClick.Connect(&onAction);

	Add(hotspot);

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

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
movq %rcx, %rsi
movq %r8, %rdx
callq 0x58c80
movq 0xeeb7c(%rip), %rax     # 0x1617f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5b8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x59c80
movq 0xef185(%rip), %rax     # 0x161e20
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r12, %rsi
callq 0x56630
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a120
cmpl $0x0, 0xb0(%rbx)
jne 0x72cd0
pushq $0x50
popq %rsi
movq %rbx, %rdi
callq 0x5a1f0
cmpl $0x0, 0xb4(%rbx)
jne 0x72ce4
pushq $0x16
popq %rsi
movq %rbx, %rdi
callq 0x58980
movq %rbx, %rdi
callq 0x56c30
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x56700
movq %rax, %r15
movl 0x30(%rbx), %eax
andl $0x1, %eax
leal (,%rax,4), %ecx
xorl $0x4, %ecx
shll $0x3, %eax
xorl $0x8, %eax
leaq 0x10(%rsp), %rsi
movl %ecx, (%rsi)
movl %ecx, 0x4(%rsi)
movl 0xb0(%rbx), %ecx
movl 0xb4(%rbx), %edx
subl %eax, %ecx
subl %eax, %edx
shlq $0x20, %rdx
orq %rdx, %rcx
leaq 0x8(%rsp), %rdx
movq %rcx, (%rdx)
movq %r15, %rdi
callq 0x56ad0
movq %r15, 0x5c0(%rbx)
addq $0x338, %r15            # imm = 0x338
leaq 0x478(%rbx), %rsi
movq %r15, %rdi
callq 0x71412
movq 0x5c0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0x298(%rbx), %rdi
movq 0xee775(%rip), %rsi     # 0x1614f0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x732e6
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r12
movl $0x5b8, %esi            # imm = 0x5B8
movq %r15, %rdi
callq 0x564c0
jmp 0x72dab
movq %rax, %r12
jmp 0x72db3
movq %rax, %r12
movq %r14, %rdi
callq 0x5a4c8
movq %rbx, %rdi
callq 0x58860
movq %r12, %rdi
callq 0x58260
nop
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/checkbox.cpp
// Function: smooth::GUI::CheckBox::CheckBox(smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&, bool*)
S::GUI::CheckBox::CheckBox(const String &iText, const Point &iPos, const Size &iSize, Bool *iVariable) : Widget(iPos, iSize)
{
	type		= classID;
	text		= iText;

	dummyVariable	= False;

	if (iVariable == NIL)	variable = &dummyVariable;
	else			variable = iVariable;

	state		= *variable;

	if (GetWidth() == 0) SetWidth(80);
	if (GetHeight() == 0) SetHeight(17);

	ComputeTextSize();

	internalCheckValues.Connect(&CheckBox::InternalCheckValues, this);

	hotspot	= new HotspotSimpleButton(Point(0, 0), GetSize());
	hotspot->onLeftButtonClick.Connect(&CheckBox::OnLeftButtonClick, this);
	hotspot->onLeftButtonClick.Connect(&onAction);

	onChangeSize.Connect(&HotspotSimpleButton::SetSize, hotspot);

	Add(hotspot);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %r8, %r14
movq %rsi, %r15
movq %rdi, %rbx
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x58c80
movq 0xee14c(%rip), %rax     # 0x161558
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xee25e(%rip), %rax     # 0x161678
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r15, %rsi
callq 0x56630
leaq 0x5b8(%rbx), %rax
movb $0x0, 0x5b8(%rbx)
testq %r14, %r14
cmovneq %r14, %rax
movq %rax, 0x5c0(%rbx)
movb (%rax), %al
movb %al, 0x5c8(%rbx)
cmpl $0x0, 0xb0(%rbx)
jne 0x73468
pushq $0x50
popq %rsi
movq %rbx, %rdi
callq 0x5a1f0
cmpl $0x0, 0xb4(%rbx)
jne 0x7347c
pushq $0x11
popq %rsi
movq %rbx, %rdi
callq 0x58980
movq %rbx, %rdi
callq 0x56c30
movq 0xee32d(%rip), %rdi     # 0x1617b8
movq 0xedf6e(%rip), %rsi     # 0x161400
xorl %edx, %edx
movq %rbx, %rcx
callq 0x73c3e
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x56700
movq %rax, %r14
leaq 0xb0(%rbx), %rdx
leaq 0x8(%rsp), %rsi
andq $0x0, (%rsi)
movq %rax, %rdi
callq 0x56ad0
movq %r14, 0x5d0(%rbx)
addq $0x338, %r14            # imm = 0x338
movq 0xee7fa(%rip), %rsi     # 0x161cd0
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x73cda
movl $0x338, %edi            # imm = 0x338
addq 0x5d0(%rbx), %rdi
leaq 0x478(%rbx), %rsi
callq 0x71412
leaq 0x298(%rbx), %rdi
movq 0x5d0(%rbx), %rcx
movq 0xee008(%rip), %rsi     # 0x161518
xorl %edx, %edx
callq 0x73d76
movq 0x5d0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r15
movl $0x5b8, %esi            # imm = 0x5B8
movq %r14, %rdi
callq 0x564c0
jmp 0x73546
movq %rax, %r15
movq %rbx, %rdi
callq 0x58860
movq %r15, %rdi
callq 0x58260
// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/divider.cpp
// Function: smooth::GUI::Divider::Divider(int, int)
S::GUI::Divider::Divider(Int iPosition, Int iOrientation) : Widget(Point(), Size())
{
	type		= classID;

	flags		= iOrientation;
	orientation	= OR_FREE;
	position	= iPosition;

	dragging	= False;
	startPos	= 0;

	if (position == 0) position = 120;

	dragHotspot = new Hotspot(Point(), Size());
	dragHotspot->SetIndependent(True);

	dragHotspot->onMouseOver.Connect(&Divider::OnMouseOver, this);
	dragHotspot->onMouseOut.Connect(&Divider::OnMouseOut, this);

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

	Add(dragHotspot);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
movl %edx, %ebp
movl %esi, %r14d
movq %rdi, %rbx
leaq 0x10(%rsp), %rsi
andq $0x0, (%rsi)
leaq 0x8(%rsp), %rdx
andq $0x0, (%rdx)
callq 0x58c80
movq 0xeda2c(%rip), %rax     # 0x161e88
addq $0x10, %rax
movq %rax, (%rbx)
andq $0x0, 0x5c0(%rbx)
andq $0x0, 0x5e0(%rbx)
leaq 0xe391e(%rip), %rax     # 0x157d98
movq %rax, 0x5d8(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x5e8(%rbx)
movq 0xed656(%rip), %rax     # 0x161ae8
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movl %ebp, 0x30(%rbx)
movw $0x80, 0xd0(%rbx)
movl %r14d, 0x5c8(%rbx)
movb $0x0, 0x5b8(%rbx)
andl $0x0, 0x5bc(%rbx)
testl %r14d, %r14d
jne 0x744c9
movl $0x78, 0x5c8(%rbx)
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x56700
movq %rax, %r14
leaq 0x10(%rsp), %rsi
andq $0x0, (%rsi)
leaq 0x8(%rsp), %rdx
andq $0x0, (%rdx)
movq %rax, %rdi
callq 0x56aa0
movq %r14, 0x5d0(%rbx)
movb $0x1, 0xcf(%r14)
addq $0x2b8, %r14            # imm = 0x2B8
movq 0xed473(%rip), %rsi     # 0x161980
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x74c86
movl $0x2d8, %edi            # imm = 0x2D8
addq 0x5d0(%rbx), %rdi
movq 0xed0d3(%rip), %rsi     # 0x161600
xorl %edx, %edx
movq %rbx, %rcx
callq 0x74c86
movl $0x3f8, %edi            # imm = 0x3F8
addq 0x5d0(%rbx), %rdi
movq 0xed296(%rip), %rsi     # 0x1617e0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x74d22
movl $0x418, %edi            # imm = 0x418
addq 0x5d0(%rbx), %rdi
movq 0xed1a1(%rip), %rsi     # 0x161708
xorl %edx, %edx
movq %rbx, %rcx
callq 0x74d22
movl $0x438, %edi            # imm = 0x438
addq 0x5d0(%rbx), %rdi
movq 0xed5e4(%rip), %rsi     # 0x161b68
xorl %edx, %edx
movq %rbx, %rcx
callq 0x74d22
movq 0x5d0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
movl $0x5b8, %esi            # imm = 0x5B8
movq %r14, %rdi
callq 0x564c0
jmp 0x745be
movq %rax, %r15
leaq 0x5d8(%rbx), %rdi
callq 0x724c6
movq %rbx, %rdi
callq 0x58860
movq %r15, %rdi
callq 0x58260