LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/editbox.cpp
// Function: smooth::GUI::EditBox::SetDropDownList(smooth::GUI::List*)
S::Int S::GUI::EditBox::SetDropDownList(List *nDropDownList)
{
	Surface	*surface = GetDrawSurface();

	surface->StartPaint(GetVisibleArea());

	if (comboBox != NIL) DeleteObject(comboBox);

	dropDownList = nDropDownList;

	if (dropDownList != NIL)
	{
		comboBox = new ComboBox(Point(), Size());
		comboBox->SetFlags(CB_HOTSPOTONLY);
		comboBox->onSelectEntry.Connect(&EditBox::OnSelectEntry, this);

		for (Int i = 0; i < dropDownList->Length(); i++)
		{
			if (dropDownList->GetNthEntry(i)->GetObjectType() == ListEntrySeparator::classID) comboBox->AddSeparator();
			else										  comboBox->AddEntry(dropDownList->GetNthEntry(i)->GetText());
		}

		Add(comboBox);

		OnChangeSize(GetSize());
	}

	Paint(SP_PAINT);

	surface->EndPaint();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x20, %rsp
movq %rsi, %r15
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x55160
movq 0x5c8(%rbx), %rdi
testq %rdi, %rdi
je 0x76210
callq 0x58cc0
movq %r15, 0x5c0(%rbx)
testq %r15, %r15
je 0x7632d
movl $0x6f8, %edi            # imm = 0x6F8
callq 0x556b0
movq %rax, %r12
xorl %eax, %eax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x18(%rsp), %rdx
movq %rax, (%rdx)
movq %r12, %rdi
callq 0x55650
movq %r12, 0x5c8(%rbx)
movl $0x1, 0x30(%r12)
addq $0x688, %r12            # imm = 0x688
movq 0xf516b(%rip), %rsi     # 0x16b3d0
xorl %r15d, %r15d
movq %r12, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x76630
movq 0x5c0(%rbx), %rdi
movq (%rdi), %rax
callq *0x178(%rax)
testl %eax, %eax
jle 0x7630e
movq 0xf5924(%rip), %rax     # 0x16bbb8
movswl (%rax), %ebp
movq 0x5c0(%rbx), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x180(%rax)
leaq 0x20(%rax), %rdi
movl %ebp, %esi
callq 0x57520
movq 0x5c8(%rbx), %r12
testb %al, %al
je 0x762ca
movq %r12, %rdi
callq 0x57350
jmp 0x762f6
movq 0x5c0(%rbx), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x180(%rax)
movq (%rax), %rcx
movq %rax, %rdi
callq *0xa8(%rcx)
movq %r12, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x58f90
incl %r15d
movq 0x5c0(%rbx), %rdi
movq (%rdi), %rax
callq *0x178(%rax)
cmpl %eax, %r15d
jl 0x76297
movq 0x5c8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
leaq 0xb0(%rbx), %rsi
movq %rbx, %rdi
callq 0x59198
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movq %r14, %rdi
callq 0x58780
xorl %eax, %eax
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movl $0x6f8, %esi            # imm = 0x6F8
movq %r12, %rdi
callq 0x55480
movq %rbx, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/editbox.cpp
// Function: smooth::GUI::EditBox::OnSelectEntry(smooth::GUI::ListEntry*)
S::Void S::GUI::EditBox::OnSelectEntry(ListEntry *entry)
{
	cursor->SetText(entry->GetText());
	cursor->MarkAll();

	onSelectEntry.Emit(entry);
	onInput.Emit(cursor->GetText());
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movq 0x5b8(%rdi), %r15
movq (%rsi), %rax
movq %rsi, %rdi
callq *0xa8(%rax)
movq (%r15), %rcx
movq %r15, %rdi
movq %rax, %rsi
callq *0xa0(%rcx)
movq 0x5b8(%rbx), %rdi
callq 0x591b8
leaq 0x610(%rbx), %rdi
movq %r14, %rsi
callq 0x766f0
movq 0x5b8(%rbx), %rdi
addq $0x5d0, %rbx            # imm = 0x5D0
movq (%rdi), %rax
callq *0xa8(%rax)
movq %rbx, %rdi
movq %rax, %rsi
popq %rbx
popq %r14
popq %r15
jmp 0x76794
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/groupbox.cpp
// Function: smooth::GUI::GroupBox::GroupBox(smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::GroupBox::GroupBox(const String &iText, const Point &iPos, const Size &iSize) : Layer(iText)
{
	type	    = classID;
	orientation = OR_UPPERLEFT;

	SetMetrics(iPos, iSize);

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

	ComputeTextSize();
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rcx, %r14
movq %rdx, %r15
movq %rdi, %rbx
callq 0x56060
movq 0xf48a6(%rip), %rax     # 0x16b4e8
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xf5070(%rip), %rax     # 0x16bcc0
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movw $0x14, 0xd0(%rbx)
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x57a10
cmpl $0x0, 0xb0(%rbx)
jne 0x76c9e
leaq 0xa8(%rbx), %rsi
movl 0xb4(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl $0x50, (%rdx)
movl %eax, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
cmpl $0x0, 0xb4(%rbx)
jne 0x76cce
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl %eax, (%rdx)
movl $0x50, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq %rbx, %rdi
callq 0x55bb0
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x57070
movq %r14, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/groupbox.cpp
// Function: smooth::GUI::GroupBox::Activate()
S::Int S::GUI::GroupBox::Activate()
{
	if (active) return Success();

	active = True;

	Paint(SP_PAINT);

	onActivate.Emit();

	return Success();
}

// Assembly:
cmpb $0x0, 0xcc(%rdi)
jne 0x77138
pushq %rbx
movq %rdi, %rbx
movb $0x1, 0xcc(%rdi)
movq (%rdi), %rax
xorl %esi, %esi
callq *0x78(%rax)
addq $0x238, %rbx            # imm = 0x238
movq %rbx, %rdi
callq 0x701aa
popq %rbx
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/groupbox.cpp
// Function: smooth::GUI::GroupBox::Deactivate()
S::Int S::GUI::GroupBox::Deactivate()
{
	if (!active) return Success();

	active = False;

	Paint(SP_PAINT);

	onDeactivate.Emit();

	return Success();
}

// Assembly:
cmpb $0x1, 0xcc(%rdi)
jne 0x77168
pushq %rbx
movq %rdi, %rbx
movb $0x0, 0xcc(%rdi)
movq (%rdi), %rax
xorl %esi, %esi
callq *0x78(%rax)
addq $0x258, %rbx            # imm = 0x258
movq %rbx, %rdi
callq 0x701aa
popq %rbx
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/hyperlink.cpp
// Function: smooth::GUI::Hyperlink::OnMouseOver()
S::Void S::GUI::Hyperlink::OnMouseOver()
{
	Input::Pointer::SetCursor(container->GetContainerWindow(), Input::Pointer::CursorHand);

	if (linkBitmap == NIL)
	{
		Font	 originalFont = font;

		font.SetColor(Setup::LinkHighlightColor);

		if (Setup::LinkHighlightColor == Setup::LinkColor) font.SetStyle(Font::Underline);

		Text::Paint(SP_PAINT);

		font.SetColor(originalFont.GetColor());
		font.SetStyle(originalFont.GetStyle());
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x40, %rsp
movq %rdi, %r14
movq 0x190(%rdi), %rdi
callq 0x559e0
movq %rax, %rdi
movl $0x2, %esi
callq 0x55d30
leaq 0x5d8(%r14), %rdi
xorl %esi, %esi
callq 0x57e30
testb %al, %al
je 0x7772a
leaq 0x140(%r14), %rbx
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x55b70
movq 0xf4874(%rip), %r15     # 0x16bf38
movq %rbx, %rdi
movq %r15, %rsi
callq 0x58650
movq 0x8(%r15), %rax
movq 0xf3fde(%rip), %rcx     # 0x16b6b8
cmpq 0x8(%rcx), %rax
jne 0x776f2
movq 0xf42b1(%rip), %rax     # 0x16b998
movswl (%rax), %esi
movq %rbx, %rdi
callq 0x55540
movq %r14, %rdi
xorl %esi, %esi
callq 0x57af0
movq %rsp, %rdi
callq 0x57550
movq %rbx, %rdi
movq %rax, %rsi
callq 0x58650
movq %rsp, %rdi
callq 0x58850
movswl %ax, %esi
movq %rbx, %rdi
callq 0x55540
movq %rsp, %rdi
callq 0x56720
addq $0x40, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x56720
movq %rbx, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/hyperlink.cpp
// Function: smooth::GUI::Hyperlink::Hyperlink(smooth::GUI::Bitmap const&, smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::Hyperlink::Hyperlink(const Bitmap &iBitmap, const String &iLink, const Point &iPos, const Size &iSize) : Text(NIL, iPos, Size())
{
	type	= classID;
	linkURL	= iLink;

	SetSize(iSize);
	SetBitmap(iBitmap);

	if (GetSize() == Size(0, 0)) SetSize(linkBitmap.GetSize());

	hotspot	= new Hotspot(Point(0, 0), GetSize());

	hotspot->onMouseOver.Connect(&Hyperlink::OnMouseOver, this);
	hotspot->onMouseOut.Connect(&Hyperlink::OnMouseOut, this);
	hotspot->onLeftButtonClick.Connect(&Hyperlink::OnClickLink, this);

	Add(hotspot);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %r8, %r13
movq %rcx, %r14
movq %rdx, %rbp
movq %rsi, %r12
movq %rdi, %rbx
leaq 0x8(%rsp), %r15
movq %r15, %rdi
xorl %esi, %esi
callq 0x58e20
leaq 0x20(%rsp), %rcx
movq $0x0, (%rcx)
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x56240
leaq 0x8(%rsp), %rdi
callq 0x59200
movq 0xf3f2f(%rip), %rax     # 0x16b728
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5c0(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58e20
leaq 0x5d8(%rbx), %r15
movq %r15, %rdi
xorl %esi, %esi
callq 0x58950
movq 0xf3e2f(%rip), %rax     # 0x16b658
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movq %r14, %rdi
movq %rbp, %rsi
callq 0x555f0
leaq 0xa8(%rbx), %rbp
movq (%rbx), %rax
movq %rbx, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq *0x150(%rax)
movq %r15, %rdi
movq %r12, %rsi
callq 0x582c0
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movl 0xb4(%rbx), %eax
orl 0xb0(%rbx), %eax
jne 0x77892
movq %r15, %rdi
callq 0x58410
movq (%rbx), %rcx
movq %rbx, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq *0x150(%rcx)
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r13
leaq 0xb0(%rbx), %rdx
leaq 0x8(%rsp), %rsi
movq $0x0, (%rsi)
movq %rax, %rdi
callq 0x55a30
movq %r13, 0x5e0(%rbx)
addq $0x2b8, %r13            # imm = 0x2B8
movq 0xf3ba9(%rip), %rsi     # 0x16b478
movq %r13, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x77b7a
movl $0x2d8, %edi            # imm = 0x2D8
addq 0x5e0(%rbx), %rdi
movq 0xf4489(%rip), %rsi     # 0x16bd78
xorl %edx, %edx
movq %rbx, %rcx
callq 0x77b7a
movl $0x338, %edi            # imm = 0x338
addq 0x5e0(%rbx), %rdi
movq 0xf40c4(%rip), %rsi     # 0x16b9d0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x77c3a
movq 0x5e0(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r12
movl $0x5b8, %esi            # imm = 0x5B8
movq %r13, %rdi
callq 0x55480
jmp 0x77963
movq %rax, %r12
jmp 0x7796b
movq %rax, %r12
jmp 0x77973
movq %rax, %r12
leaq 0x8(%rsp), %rdi
callq 0x59200
jmp 0x7797b
movq %rax, %r12
movq %r15, %rdi
callq 0x59148
movq %r14, %rdi
callq 0x59200
movq %rbx, %rdi
callq 0x55e80
movq %r12, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/hyperlink.cpp
// Function: smooth::GUI::Hyperlink::Paint(int)
S::Int S::GUI::Hyperlink::Paint(Int message)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

	switch (message)
	{
		case SP_PAINT:
			if (linkBitmap != NIL)
			{
				Rect	 rect	 = Rect(GetRealPosition(), GetRealSize());
				Surface	*surface = GetDrawSurface();

				surface->BlitFromBitmap(linkBitmap, Rect(Point(0, 0), linkBitmap.GetSize()), rect);
			}

			break;
	}

	return Text::Paint(message);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %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 0x77ade
movq (%r14), %rax
movq %r14, %rdi
callq *0x90(%rax)
movl %eax, %ecx
xorl %eax, %eax
testb %cl, %cl
je 0x77ade
testl %ebx, %ebx
jne 0x77ad4
leaq 0x5d8(%r14), %r15
movq %r15, %rdi
xorl %esi, %esi
callq 0x563f0
testb %al, %al
je 0x77ad4
movq (%r14), %rax
movq %r14, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq %rax, %rbp
shrq $0x20, %rbp
movq (%r14), %rax
movq %r14, %rdi
callq *0x50(%rax)
leal (%rax,%r12), %ecx
shrq $0x20, %rax
leaq 0x18(%rsp), %r13
movl %r12d, (%r13)
movl %ebp, 0x4(%r13)
movl %ecx, 0x8(%r13)
addl %ebp, %eax
movl %eax, 0xc(%r13)
movq (%r14), %rax
movq %r14, %rdi
callq *0x40(%rax)
movq %rax, %r12
movq %r15, %rdi
callq 0x58410
leaq 0x8(%rsp), %rdx
movq $0x0, (%rdx)
movq (%rax), %rax
movq %rax, 0x8(%rdx)
movq %r12, %rdi
movq %r15, %rsi
movq %r13, %rcx
callq 0x55ba0
movq %r14, %rdi
movl %ebx, %esi
callq 0x57af0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/image.cpp
// Function: smooth::GUI::Image::SetBitmap(smooth::GUI::Bitmap const&)
S::Int S::GUI::Image::SetBitmap(const Bitmap &newBmp)
{
	if (bitmap == newBmp) return Success();

	Bool	 prevVisible = IsVisible();

	if (prevVisible) Hide();

	bitmap	     = newBmp;
	bitmapScaled = NIL;

	if (GetSize() == Size(0, 0)) SetSize(bitmap.GetSize());

	if (prevVisible) Show();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x5b8(%rdi), %r14
movq %r14, %rdi
callq 0x55d00
testb %al, %al
jne 0x77ea6
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
movl %eax, %ebp
testb %al, %al
je 0x77e53
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x582c0
leaq 0x5c0(%rbx), %rdi
xorl %esi, %esi
callq 0x56740
movl 0xb4(%rbx), %eax
orl 0xb0(%rbx), %eax
jne 0x77e98
movq %r14, %rdi
callq 0x58410
leaq 0xa8(%rbx), %rsi
movq (%rbx), %rcx
movq %rbx, %rdi
movq %rax, %rdx
callq *0x150(%rcx)
testb %bpl, %bpl
je 0x77ea6
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
xorl %eax, %eax
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/basic/multiedit.cpp
// Function: smooth::GUI::MultiEdit::OnCursorScroll(int, int)
S::Void S::GUI::MultiEdit::OnCursorScroll(Int scrollPos, Int maxScrollPos)
{
	if (maxScrollPos == 0 && scrollbar != NIL)
	{
		DeleteObject(scrollbar);

		scrollbar = NIL;

		cursor->SetWidth(cursor->GetWidth() + 17);

		Paint(SP_PAINT);
	}
	else if (scrollbar == NIL)
	{
		cursor->SetWidth(cursor->GetWidth() - 17);

		scrollbar = new Scrollbar(Point(18, 1), Size(0, GetHeight() - 2), OR_VERT, &scrollbarPos, 0, maxScrollPos);
		scrollbar->onValueChange.Connect(&MultiEdit::OnScroll, this);
		scrollbar->SetOrientation(OR_UPPERRIGHT);
		scrollbar->SetAlwaysActive(True);

		Add(scrollbar);

		Paint(SP_PAINT);
	}
	else
	{
		scrollbar->SetRange(0, maxScrollPos);
		scrollbar->SetValue(scrollPos);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
movl %edx, %ebp
movq %rdi, %rbx
movq 0x5c0(%rdi), %rdi
testl %edx, %edx
je 0x7860c
testq %rdi, %rdi
je 0x78656
movl %esi, %r14d
xorl %esi, %esi
movl %ebp, %edx
callq 0x557e0
movq 0x5c0(%rbx), %rdi
movl %r14d, %esi
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x56f80
testq %rdi, %rdi
je 0x78656
callq 0x58cc0
movq $0x0, 0x5c0(%rbx)
movq 0x5b8(%rbx), %rdi
movl 0xb0(%rdi), %eax
addl $0x11, %eax
leaq 0xa8(%rdi), %rsi
movl 0xb4(%rdi), %ecx
leaq 0x8(%rsp), %rdx
movl %eax, (%rdx)
movl %ecx, 0x4(%rdx)
movq (%rdi), %rax
callq *0x150(%rax)
jmp 0x78729
movq 0x5b8(%rbx), %rdi
movl 0xb0(%rdi), %eax
addl $-0x11, %eax
leaq 0xa8(%rdi), %rsi
movl 0xb4(%rdi), %ecx
leaq 0x8(%rsp), %r15
movl %eax, (%r15)
movl %ecx, 0x4(%r15)
movq (%rdi), %rax
movq %r15, %rdx
callq *0x150(%rax)
movl $0x668, %edi            # imm = 0x668
callq 0x556b0
movq %rax, %r14
movabsq $0x100000012, %rax      # imm = 0x100000012
movq %rax, (%r15)
movl 0xb4(%rbx), %eax
addl $-0x2, %eax
leaq 0x10(%rsp), %rdx
movl $0x0, (%rdx)
movl %eax, 0x4(%rdx)
leaq 0x5c8(%rbx), %r8
movl %ebp, (%rsp)
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movl $0x2, %ecx
xorl %r9d, %r9d
callq 0x56880
movq %r14, 0x5c0(%rbx)
addq $0x618, %r14            # imm = 0x618
movq 0xf3220(%rip), %rsi     # 0x16b910
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x78f74
movq 0x5c0(%rbx), %rdi
movq (%rdi), %rax
movl $0x24, %esi
callq *0x120(%rax)
movq 0x5c0(%rbx), %rsi
movb $0x1, 0xce(%rsi)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movl $0x668, %esi            # imm = 0x668
movq %r14, %rdi
callq 0x55480
movq %rbx, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/multiedit.cpp
// Function: smooth::GUI::MultiEdit::GetNOfLines()
S::Int S::GUI::MultiEdit::GetNOfLines()
{
	Int	 lines	= 1;
	Int	 length = text.Length();

	for (Int i = 0; i < length; i++)
	{
		if (text[i] == '\n') lines++;
	}

	return lines;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
addq $0xf0, %rbx
movq %rbx, %rdi
callq 0x57180
testl %eax, %eax
jle 0x78ce9
movl %eax, %r14d
movl $0x1, %ebp
xorl %r15d, %r15d
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
xorl %ecx, %ecx
cmpl $0xa, (%rax)
sete %cl
addl %ecx, %ebp
incl %r15d
cmpl %r15d, %r14d
jne 0x78cca
jmp 0x78cee
movl $0x1, %ebp
movl %ebp, %eax
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/basic/optionbox.cpp
// Function: smooth::GUI::OptionBox::OptionBox(smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&, int*, int)
S::GUI::OptionBox::OptionBox(const String &iText, const Point &iPos, const Size &iSize, Int *var, Int iCode) : Widget(iPos, iSize)
{
	type		= classID;
	text		= iText;
	variable	= var;
	code		= iCode;

	if (*variable == code)	state = True;
	else			state = False;

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

	ComputeTextSize();

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

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

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

	Add(hotspot);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %r9d, %ebp
movq %r8, %r14
movq %rsi, %r15
movq %rdi, %rbx
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x57a30
movq 0xf2d63(%rip), %rax     # 0x16bf50
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xf259d(%rip), %rax     # 0x16b798
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r15, %rsi
callq 0x555f0
movq %r14, 0x5b8(%rbx)
movl %ebp, 0x5c0(%rbx)
cmpl %ebp, (%r14)
sete 0x5c4(%rbx)
cmpl $0x0, 0xb0(%rbx)
jne 0x79256
leaq 0xa8(%rbx), %rsi
movl 0xb4(%rbx), %eax
movq %rsp, %rdx
movl $0x50, (%rdx)
movl %eax, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
cmpl $0x0, 0xb4(%rbx)
jne 0x79284
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
movq %rsp, %rdx
movl %eax, (%rdx)
movl $0x11, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq %rbx, %rdi
callq 0x55bb0
movq 0xf27dd(%rip), %rdi     # 0x16ba70
movq 0xf20ce(%rip), %rsi     # 0x16b368
xorl %edx, %edx
movq %rbx, %rcx
callq 0x79b86
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r14
leaq 0xb0(%rbx), %rdx
movq %rsp, %rsi
movq $0x0, (%rsi)
movq %rax, %rdi
callq 0x55a60
movq %r14, 0x5c8(%rbx)
addq $0x338, %r14            # imm = 0x338
movq 0xf2591(%rip), %rsi     # 0x16b870
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x79c46
movl $0x338, %edi            # imm = 0x338
addq 0x5c8(%rbx), %rdi
leaq 0x478(%rbx), %rsi
callq 0x71712
leaq 0x298(%rbx), %rdi
movq 0x5c8(%rbx), %rcx
movq 0xf21ff(%rip), %rsi     # 0x16b518
xorl %edx, %edx
callq 0x74674
movq 0x5c8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
movl $0x5b8, %esi            # imm = 0x5B8
movq %r14, %rdi
callq 0x55480
jmp 0x79350
movq %rax, %r15
movq %rbx, %rdi
callq 0x57640
movq %r15, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/progressbar.cpp
// Function: smooth::GUI::Progressbar::Progressbar(smooth::GUI::Point const&, smooth::GUI::Size const&, int, int, int, int, int)
S::GUI::Progressbar::Progressbar(const Point &iPos, const Size &iSize, Int sType, Int iTextFlag, Int rangeStart, Int rangeEnd, Int iValue) : Widget(iPos, iSize)
{
	type		  = classID;
	subtype		  = sType;

	startValue	  = rangeStart;
	endValue	  = rangeEnd;

	value		  = startValue;

	gradientDirection = 0;

	SetFlags(iTextFlag);
	SetValue(iValue);

	font.SetColor(Setup::ClientTextColor);

	if (GetWidth() == 0) SetWidth(subtype == OR_VERT ? 19 : 80);
	if (GetHeight() == 0) SetHeight(subtype == OR_VERT ? 80 : 19);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movl %r9d, %ebp
movl %r8d, %r15d
movl %ecx, %r12d
movq %rdi, %rbx
callq 0x57a30
movq 0xf1b98(%rip), %rax     # 0x16b9b0
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5b8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58950
movl 0x48(%rsp), %eax
movl 0x40(%rsp), %ecx
movq 0xf19c9(%rip), %rdx     # 0x16b808
movzwl (%rdx), %edx
movw %dx, 0x20(%rbx)
movw %r12w, 0x1a0(%rbx)
movl %ebp, 0x5c8(%rbx)
movl %ecx, 0x5cc(%rbx)
movb $0x0, 0x5c0(%rbx)
movl %r15d, 0x30(%rbx)
cmpl %eax, %ebp
cmovgl %ebp, %eax
cmpl %eax, %ecx
cmovll %ecx, %eax
movl %eax, 0x5c4(%rbx)
cmpl %ebp, %eax
je 0x79e87
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x1, %esi
callq *0x78(%rax)
leaq 0x140(%rbx), %rdi
movq 0xf1f5b(%rip), %rsi     # 0x16bdf0
callq 0x58650
cmpl $0x0, 0xb0(%rbx)
jne 0x79edb
cmpw $0x2, 0x1a0(%rbx)
movl $0x13, %eax
movl $0x50, %ecx
cmovel %eax, %ecx
leaq 0xa8(%rbx), %rsi
movl 0xb4(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl %ecx, (%rdx)
movl %eax, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
cmpl $0x0, 0xb4(%rbx)
jne 0x79f1c
cmpw $0x2, 0x1a0(%rbx)
movl $0x50, %eax
movl $0x13, %ecx
cmovel %eax, %ecx
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl %eax, (%rdx)
movl %ecx, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
jmp 0x79f39
movq %rax, %r15
movq %r14, %rdi
callq 0x59148
movq %rbx, %rdi
callq 0x57640
movq %r15, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/scrollbar.cpp
// Function: smooth::GUI::Scrollbar::OnMouseClick(smooth::GUI::Point const&)
S::Void S::GUI::Scrollbar::OnMouseClick(const Point &mousePos)
{
	if (dragHotspot->IsMouseOver()) return;

	Int	 value = 0;

	if (subtype == OR_HORZ)	value = (mousePos.x < dragHotspot->GetRealPosition().x) ? -pageSize : pageSize;
	else			value = (mousePos.y < dragHotspot->GetRealPosition().y) ? -pageSize : pageSize;

	if (clickTimer->GetStatus() == System::TIMER_STOPPED)
	{
		clickTimer->Start(250);
		clickTimerDirection = (value > 0 ? 1 : -1);
	}

	if (value / clickTimerDirection >= 0) SetValue(*variable + value);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0x660(%rdi), %rdi
cmpb $0x0, 0xd4(%rdi)
jne 0x7adaa
cmpw $0x1, 0x1a0(%rbx)
jne 0x7ad2e
movl (%rsi), %r14d
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0x7ad3c
movl 0x4(%rsi), %r14d
movq (%rdi), %rax
callq *0x48(%rax)
shrq $0x20, %rax
movl 0x654(%rbx), %ecx
movl %ecx, %ebp
negl %ebp
cmpl %eax, %r14d
cmovgel %ecx, %ebp
movq 0x648(%rbx), %rdi
callq 0x58ab0
testw %ax, %ax
je 0x7ad65
movl 0x650(%rbx), %ecx
jmp 0x7ad8a
movq 0x648(%rbx), %rdi
movl $0xfa, %esi
callq 0x55100
xorl %eax, %eax
testl %ebp, %ebp
setg %al
leal -0x1(,%rax,2), %ecx
movl %ecx, 0x650(%rbx)
movl %ebp, %eax
cltd
idivl %ecx
testl %eax, %eax
js 0x7adaa
movq 0x5d0(%rbx), %rax
addl (%rax), %ebp
movq %rbx, %rdi
movl %ebp, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x56f80
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/scrollbar.cpp
// Function: smooth::GUI::Scrollbar::OnMouseDrag(smooth::GUI::Point const&)
S::Void S::GUI::Scrollbar::OnMouseDrag(const Point &mousePos)
{
	Point	 realPos  = GetRealPosition();
	Size	 realSize = GetRealSize();

	Int	 value = 0;

	Surface	*surface	= GetDrawSurface();

	Bool	 smallHotspots	= (subtype == OR_HORZ && (GetWidth() <= 55)) || (subtype == OR_VERT && (GetHeight() <= 55));
	Int	 hotspotSize	= Math::Round((smallHotspots ? 10 : (subtype == OR_HORZ ? GetHeight() : GetWidth())) * surface->GetSurfaceDPI() / 96.0) - 4;

	if (subtype == OR_HORZ)	value = Math::Round((((Float) (endValue - startValue)) / ((Float) realSize.cx - 3 * (hotspotSize + 4))) * ((Float) (mousePos.x - clickOffset - (realPos.x + hotspotSize + 4))));
	else			value = Math::Round((((Float) (endValue - startValue)) / ((Float) realSize.cy - 3 * (hotspotSize + 4))) * ((Float) (mousePos.y - clickOffset - (realPos.y + hotspotSize + 4))));

	SetValue(startValue + value);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, (%rsp)
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x48(%rax)
movq %rax, %r15
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
movq %rax, %r12
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movzwl 0x1a0(%rbx), %ecx
cmpl $0x2, %ecx
je 0x7ae55
cmpl $0x1, %ecx
jne 0x7ae64
movl $0xa, %r14d
cmpl $0x38, 0xb0(%rbx)
jl 0x7ae6b
movl 0xb4(%rbx), %r14d
jmp 0x7ae6b
movl $0xa, %r14d
cmpl $0x38, 0xb4(%rbx)
jl 0x7ae6b
movl 0xb0(%rbx), %r14d
movq %r12, %rbp
shrq $0x20, %rbp
movq %r15, %r13
shrq $0x20, %r13
movq %rax, %rdi
callq 0x58930
movl 0x5dc(%rbx), %edx
movl 0x5d8(%rbx), %ecx
subl %ecx, %edx
movswl %ax, %esi
imull %r14d, %esi
xorl %eax, %eax
cmpw $0x1, 0x1a0(%rbx)
cvtsi2sd %edx, %xmm1
cvtsi2sd %esi, %xmm4
divsd 0x78808(%rip), %xmm4    # 0xf36b8
xorpd %xmm2, %xmm2
movapd %xmm4, %xmm5
cmpltsd %xmm2, %xmm5
movsd 0x784cb(%rip), %xmm0    # 0xf3390
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
movsd 0x784c3(%rip), %xmm3    # 0xf3398
andnpd %xmm3, %xmm5
orpd %xmm6, %xmm5
addsd %xmm4, %xmm5
cvttsd2si %xmm5, %rdx
setne %al
leal (%rdx,%rdx,2), %esi
xorps %xmm4, %xmm4
cvtsi2sd %esi, %xmm4
cmovel %r12d, %ebp
xorps %xmm5, %xmm5
cvtsi2sd %ebp, %xmm5
subsd %xmm4, %xmm5
divsd %xmm5, %xmm1
cmovel %r15d, %r13d
movq (%rsp), %rsi
movl (%rsi,%rax,4), %eax
addl %edx, %r13d
addl 0x63c(%rbx), %r13d
subl %r13d, %eax
xorps %xmm4, %xmm4
cvtsi2sd %eax, %xmm4
mulsd %xmm1, %xmm4
movapd %xmm4, %xmm1
cmpltsd %xmm2, %xmm1
andpd %xmm1, %xmm0
andnpd %xmm3, %xmm1
orpd %xmm0, %xmm1
addsd %xmm4, %xmm1
cvttsd2si %xmm1, %rsi
addl %ecx, %esi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x56f80
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/scrollbar.cpp
// Function: smooth::GUI::Scrollbar::OnMouseWheel(double)
S::Void S::GUI::Scrollbar::OnMouseWheel(Float value)
{
	if (subtype != OR_VERT) return;

	Window	*window	= container->GetContainerWindow();

	if (IsMouseOver() || window->IsMouseOn(Rect(container->GetRealPosition(), container->GetRealSize())))
	{
		Surface	*surface = GetDrawSurface();

		surface->StartPaint(container->GetVisibleArea());

		/* Reset spill value upon scroll direction change.
		 */
		if (Math::Sign(value) != Math::Sign(scrollSpill)) scrollSpill = 0;

		/* Update scroll position value.
		 */
		Int	 amount = (value + scrollSpill) * stepSize;

		SetValue(*variable - amount);

		scrollSpill += value - (Float(amount) / stepSize);

		/* Send an event to update widget under cursor if necessary.
		 */
		container->Process(SM_MOUSEMOVE, 0, 0);

		surface->EndPaint();
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x38, %rsp
movapd %xmm0, (%rsp)
cmpw $0x2, 0x1a0(%rdi)
jne 0x7b10b
movq %rdi, %rbx
movq 0x190(%rdi), %rdi
callq 0x559e0
cmpb $0x0, 0xd4(%rbx)
jne 0x7aff6
movq %rax, %r14
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
callq *0x48(%rax)
movq %rax, %r15
movq %rax, %r12
shrq $0x20, %r12
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
callq *0x50(%rax)
leal (%rax,%r15), %ecx
shrq $0x20, %rax
leaq 0x28(%rsp), %rsi
movl %r15d, (%rsi)
movl %r12d, 0x4(%rsi)
movl %ecx, 0x8(%rsi)
addl %r12d, %eax
movl %eax, 0xc(%rsi)
movq %r14, %rdi
callq 0x578a0
testb %al, %al
je 0x7b10b
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
callq *0x130(%rax)
leaq 0x28(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x55160
movsd 0x640(%rbx), %xmm0
movapd (%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
xorpd %xmm2, %xmm2
movapd %xmm1, %xmm3
cmpltpd %xmm2, %xmm3
movapd %xmm3, %xmm4
andnpd 0x7b070(%rip), %xmm4    # 0xf60c0
andpd 0x78468(%rip), %xmm3    # 0xf34c0
orpd %xmm4, %xmm3
cmpneqpd %xmm2, %xmm1
andpd %xmm3, %xmm1
pshufd $0xee, %xmm1, %xmm2     # xmm2 = xmm1[2,3,2,3]
ucomisd %xmm2, %xmm1
jne 0x7b072
jnp 0x7b081
movq $0x0, 0x640(%rbx)
xorpd %xmm0, %xmm0
movl 0x5e0(%rbx), %eax
xorps %xmm1, %xmm1
cvtsi2sd %rax, %xmm1
addsd (%rsp), %xmm0
mulsd %xmm0, %xmm1
movapd %xmm1, 0x10(%rsp)
cvttsd2si %xmm1, %eax
movq 0x5d0(%rbx), %rcx
movl (%rcx), %esi
subl %eax, %esi
movq %rbx, %rdi
callq 0x56f80
cvttpd2dq 0x10(%rsp), %xmm0
cvtdq2pd %xmm0, %xmm0
movl 0x5e0(%rbx), %eax
xorps %xmm1, %xmm1
cvtsi2sd %rax, %xmm1
divsd %xmm1, %xmm0
movapd (%rsp), %xmm1
subsd %xmm0, %xmm1
addsd 0x640(%rbx), %xmm1
movsd %xmm1, 0x640(%rbx)
movq 0x190(%rbx), %rdi
movq (%rdi), %rax
movl $0x7800, %esi           # imm = 0x7800
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x80(%rax)
movq %r14, %rdi
callq 0x58780
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/slider.cpp
// Function: smooth::GUI::Slider::OnMouseClick(smooth::GUI::Point const&)
S::Void S::GUI::Slider::OnMouseClick(const Point &mousePos)
{
	Int	 value	  = 0;

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

	if (subtype == OR_HORZ)	value = Math::Round(((Float) (endValue - startValue)) / (((Float) realSize.cx - gripSize) / ((Float) (mousePos.x - (realPos.x + gripSize / 2)))));
	else			value = Math::Round(((Float) (endValue - startValue)) / (((Float) realSize.cy - gripSize) / ((Float) (mousePos.y - (realPos.y + gripSize / 2)))));

	if (!dragging)
	{
		if (subtype == OR_HORZ)	SetValue(startValue + value);
		else			SetValue(endValue - value);
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r15
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x48(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
cmpw $0x1, 0x1a0(%rbx)
movb 0x5c4(%rbx), %cl
jne 0x7c6d6
testb %cl, %cl
jne 0x7c6da
movl 0x5dc(%rbx), %edx
movl 0x5c8(%rbx), %esi
movl 0x5d8(%rbx), %ecx
subl %ecx, %edx
cvtsi2sd %edx, %xmm0
cvtsi2sd %eax, %xmm1
cvtsi2sd %esi, %xmm2
subsd %xmm2, %xmm1
movl (%r15), %eax
movl %esi, %edx
shrl $0x1f, %edx
addl %esi, %edx
sarl %edx
addl %edx, %r14d
subl %r14d, %eax
xorps %xmm2, %xmm2
cvtsi2sd %eax, %xmm2
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x77128(%rip), %rdx     # 0xf37f0
addsd (%rdx,%rax,8), %xmm0
cvttsd2si %xmm0, %rsi
addl %ecx, %esi
jmp 0x7c74e
testb %cl, %cl
je 0x7c6e0
popq %rbx
popq %r14
popq %r15
retq
movl 0x5dc(%rbx), %esi
movl %esi, %ecx
subl 0x5d8(%rbx), %ecx
movl 0x5c8(%rbx), %edx
cvtsi2sd %ecx, %xmm0
shrq $0x20, %rax
cvtsi2sd %eax, %xmm1
cvtsi2sd %edx, %xmm2
subsd %xmm2, %xmm1
movl 0x4(%r15), %eax
movl %edx, %ecx
shrl $0x1f, %ecx
addl %edx, %ecx
sarl %ecx
shrq $0x20, %r14
addl %ecx, %r14d
subl %r14d, %eax
xorps %xmm2, %xmm2
cvtsi2sd %eax, %xmm2
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x770ae(%rip), %rcx     # 0xf37f0
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
subl %eax, %esi
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0x55250
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/slider.cpp
// Function: smooth::GUI::Slider::OnMouseDragStart(smooth::GUI::Point const&)
S::Void S::GUI::Slider::OnMouseDragStart(const Point &mousePos)
{
	Point	 realPos  = GetRealPosition();
	Size	 realSize = GetRealSize();

	if (subtype == OR_HORZ)	mouseBias = (realPos.x + (Int) (((Float) (realSize.cx - gripSize)) / ((Float) (endValue - startValue)) * ((Float) (*variable - startValue))) + gripSize / 2) - mousePos.x;
	else			mouseBias = (realPos.y + (realSize.cy - gripSize) - (Int) (((Float) (realSize.cy - gripSize)) / ((Float) (endValue - startValue)) * ((Float) (*variable - startValue))) + gripSize / 2) - mousePos.y;

	dragging = True;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x48(%rax)
movq %rax, %r15
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
cmpw $0x1, 0x1a0(%rbx)
jne 0x7c7cf
movl 0x5c8(%rbx), %edx
subl %edx, %eax
cvtsi2sd %eax, %xmm0
movl 0x5dc(%rbx), %eax
movl 0x5d8(%rbx), %ecx
subl %ecx, %eax
cvtsi2sd %eax, %xmm1
movq 0x5d0(%rbx), %rax
movl (%rax), %eax
subl %ecx, %eax
cvtsi2sd %eax, %xmm2
divsd %xmm1, %xmm0
mulsd %xmm0, %xmm2
cvttsd2si %xmm2, %eax
movl %edx, %ecx
shrl $0x1f, %ecx
addl %edx, %ecx
sarl %ecx
addl %r15d, %ecx
subl (%r14), %ecx
addl %eax, %ecx
jmp 0x7c827
shrq $0x20, %rax
movl 0x5c8(%rbx), %edx
subl %edx, %eax
cvtsi2sd %eax, %xmm0
shrq $0x20, %r15
movl 0x5dc(%rbx), %ecx
movl 0x5d8(%rbx), %esi
subl %esi, %ecx
cvtsi2sd %ecx, %xmm1
divsd %xmm1, %xmm0
movq 0x5d0(%rbx), %rcx
movl (%rcx), %ecx
subl %esi, %ecx
xorps %xmm1, %xmm1
cvtsi2sd %ecx, %xmm1
mulsd %xmm0, %xmm1
cvttsd2si %xmm1, %esi
movl %edx, %ecx
shrl $0x1f, %ecx
addl %edx, %ecx
sarl %ecx
addl %r15d, %ecx
addl %eax, %ecx
addl 0x4(%r14), %esi
subl %esi, %ecx
movl %ecx, 0x5c0(%rbx)
movb $0x1, 0x5c4(%rbx)
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/slider.cpp
// Function: smooth::GUI::Slider::OnMouseDrag(smooth::GUI::Point const&)
S::Void S::GUI::Slider::OnMouseDrag(const Point &mousePos)
{
	Point	 realPos  = GetRealPosition();
	Size	 realSize = GetRealSize();

	Int	 value = 0;

	if (subtype == OR_HORZ)	value = Math::Round(((Float) (endValue - startValue)) / (((Float) realSize.cx - gripSize) / ((Float) (mousePos.x + mouseBias - (realPos.x + gripSize / 2)))));
	else			value = Math::Round(((Float) (endValue - startValue)) / (((Float) realSize.cy - gripSize) / ((Float) (mousePos.y + mouseBias - (realPos.y + gripSize / 2)))));

	dragging = False;

	if (subtype == OR_HORZ)	SetValue(startValue + value);
	else			SetValue(endValue - value);

	dragging = True;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r15
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x48(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
cmpw $0x1, 0x1a0(%rbx)
jne 0x7c8d4
movl 0x5dc(%rbx), %edx
movl 0x5c8(%rbx), %esi
movl 0x5d8(%rbx), %ecx
subl %ecx, %edx
cvtsi2sd %edx, %xmm0
cvtsi2sd %eax, %xmm1
cvtsi2sd %esi, %xmm2
subsd %xmm2, %xmm1
movl (%r15), %eax
movl %esi, %edx
shrl $0x1f, %edx
addl %esi, %edx
sarl %edx
subl %r14d, %eax
subl %edx, %eax
addl 0x5c0(%rbx), %eax
xorps %xmm2, %xmm2
cvtsi2sd %eax, %xmm2
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x76f31(%rip), %rdx     # 0xf37f0
addsd (%rdx,%rax,8), %xmm0
cvttsd2si %xmm0, %rsi
movb $0x0, 0x5c4(%rbx)
addl %ecx, %esi
jmp 0x7c94e
shrq $0x20, %rax
shrq $0x20, %r14
movl 0x5c8(%rbx), %ecx
movl 0x5dc(%rbx), %esi
movl %esi, %edx
subl 0x5d8(%rbx), %edx
cvtsi2sd %edx, %xmm0
cvtsi2sd %eax, %xmm1
cvtsi2sd %ecx, %xmm2
subsd %xmm2, %xmm1
movl 0x4(%r15), %eax
movl %ecx, %edx
shrl $0x1f, %edx
addl %ecx, %edx
sarl %edx
subl %r14d, %eax
subl %edx, %eax
addl 0x5c0(%rbx), %eax
xorps %xmm2, %xmm2
cvtsi2sd %eax, %xmm2
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x76eb5(%rip), %rcx     # 0xf37f0
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
movb $0x0, 0x5c4(%rbx)
subl %eax, %esi
movq %rbx, %rdi
callq 0x55250
movb $0x1, 0x5c4(%rbx)
popq %rbx
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/slider.cpp
// Function: smooth::GUI::Slider::SetValue(int)
S::Void S::GUI::Slider::SetValue(Int newValue)
{
	Int	 previousVariable = *variable;

	*variable = Math::Min(Math::Max(newValue, startValue), endValue);

	if (*variable != previousValue)
	{
		if (!dragging)
		{
			Point	 prevPosition = dragHotspot->GetPosition();

			UpdateHotspotPositions();

			if (dragHotspot->GetPosition() != prevPosition) Paint(SP_PAINT);
		}

		previousValue = *variable;

		if (*variable != previousVariable) onValueChange.Emit(*variable);
	}
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq 0x5d0(%rdi), %rax
movl 0x5d8(%rdi), %ecx
cmpl %ecx, %esi
cmovgl %esi, %ecx
movl 0x5dc(%rdi), %edx
cmpl %edx, %ecx
cmovgel %edx, %ecx
movl (%rax), %ebp
movl %ecx, (%rax)
cmpl 0x5bc(%rdi), %ecx
je 0x7cb0c
movq %rdi, %rbx
cmpb $0x0, 0x5c4(%rdi)
jne 0x7caf9
movq 0x5e8(%rbx), %rax
movq 0xa8(%rax), %r14
movq %rbx, %rdi
callq 0x591f8
movq 0x5e8(%rbx), %rax
cmpl %r14d, 0xa8(%rax)
jne 0x7caee
shrq $0x20, %r14
cmpl %r14d, 0xac(%rax)
je 0x7caf9
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movq 0x5d0(%rbx), %rax
movl (%rax), %esi
movl %esi, 0x5bc(%rbx)
cmpl %ebp, %esi
jne 0x7cb11
popq %rbx
popq %r14
popq %rbp
retq
addq $0x5f0, %rbx            # imm = 0x5F0
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x72a62
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/slider.cpp
// Function: smooth::GUI::Slider::SetRange(int, int)
S::Int S::GUI::Slider::SetRange(Int rangeStart, Int rangeEnd)
{
	if (startValue == rangeStart &&
	    endValue   == rangeEnd) return Success();

	startValue	= rangeStart;
	endValue	= rangeEnd;

	*variable  = Math::Min(Math::Max(*variable, startValue), endValue);

	Paint(SP_PAINT);

	UpdateHotspotPositions();

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
cmpl %esi, 0x5d8(%rdi)
jne 0x7d0c4
cmpl %edx, 0x5dc(%rbx)
je 0x7d0f8
movl %esi, 0x5d8(%rbx)
movl %edx, 0x5dc(%rbx)
movq 0x5d0(%rbx), %rax
movl (%rax), %ecx
cmpl %esi, %ecx
cmovgl %ecx, %esi
cmpl %edx, %esi
cmovgel %edx, %esi
movl %esi, (%rax)
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movq %rbx, %rdi
callq 0x591f8
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/tabwidget.cpp
// Function: smooth::GUI::TabWidget::TabWidget(smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::TabWidget::TabWidget(const Point &iPos, const Size &iSize) : Widget(iPos, iSize)
{
	type	= classID;

	if (GetWidth()	== 0) SetWidth(120);
	if (GetHeight()	== 0) SetHeight(100);

	selectedTab = NIL;

	onSelectTab.SetParentObject(this);

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

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x57a30
movq 0xedf3d(%rip), %rax     # 0x16b6f8
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x5c0(%rbx), %r14
movq %r14, %rdi
callq 0x55d90
leaq 0xe6540(%rip), %rax     # 0x163d18
movq %rax, 0x600(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x608(%rbx)
leaq 0xe6488(%rip), %rax     # 0x163c78
movq %rax, 0x5c0(%rbx)
leaq 0x618(%rbx), %r15
movq $0x0, 0x620(%rbx)
leaq 0xe6538(%rip), %rax     # 0x163d48
movq %rax, 0x618(%rbx)
movups %xmm0, 0x628(%rbx)
movq 0xede0b(%rip), %rax     # 0x16b630
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
cmpl $0x0, 0xb0(%rbx)
jne 0x7d85a
leaq 0xa8(%rbx), %rsi
movl 0xb4(%rbx), %eax
movq %rsp, %rdx
movl $0x78, (%rdx)
movl %eax, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
cmpl $0x0, 0xb4(%rbx)
jne 0x7d888
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
movq %rsp, %rdx
movl %eax, (%rdx)
movl $0x64, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq $0x0, 0x5b8(%rbx)
movq %rbx, 0x620(%rbx)
leaq 0x298(%rbx), %rdi
movq 0xedc38(%rip), %rsi     # 0x16b4e0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x7e806
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r12
jmp 0x7d8d6
movq %rax, %r12
movq %r15, %rdi
callq 0x7e8c6
movq %r14, %rdi
callq 0x7e8e0
movq %rbx, %rdi
callq 0x57640
movq %r12, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/tabwidget.cpp
// Function: smooth::GUI::TabWidget::SelectTab(smooth::GUI::Widget const*)
S::Int S::GUI::TabWidget::SelectTab(const Widget *tabWidget)
{
	for (Int i = 0; i < GetNOfObjects(); i++)
	{
		Widget	*widget = GetNthObject(i);

		if (widget != tabWidget) continue;

		Surface	*surface = GetDrawSurface();

		surface->StartPaint(GetVisibleArea());

		for (Int j = 0; j < GetNOfObjects(); j++)
		{
			if (j == i) continue;

			GetNthObject(j)->Hide();
		}

		widget->Show();

		Paint(SP_PAINT);

		surface->EndPaint();

		selectedTab = widget;

		onSelectTab.Emit(widget);

		return Success();
	}

	return Error();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
cmpl $0x0, 0x40(%rdi)
jle 0x7e653
movq %rsi, %r13
movq %rdi, %rbx
leaq 0x38(%rdi), %r12
leaq 0x618(%rdi), %rax
movq %rax, (%rsp)
xorl %ebp, %ebp
movq %r12, %rdi
movl %ebp, %esi
callq 0x5b074
movq (%rax), %r15
cmpq %r13, %r15
je 0x7e5c7
incl %ebp
cmpl 0x40(%rbx), %ebp
jl 0x7e5a9
jmp 0x7e653
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r13
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r13, %rdi
callq 0x55160
movl 0x40(%rbx), %eax
testl %eax, %eax
jle 0x7e621
xorl %r14d, %r14d
cmpl %r14d, %ebp
je 0x7e619
movq %r12, %rdi
movl %r14d, %esi
callq 0x5b074
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x60(%rax)
movl 0x40(%rbx), %eax
incl %r14d
cmpl %eax, %r14d
jl 0x7e5fd
movq (%r15), %rax
movq %r15, %rdi
callq *0x58(%rax)
movq (%rbx), %rax
xorl %r14d, %r14d
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
movq %r13, %rdi
callq 0x58780
movq %r15, 0x5b8(%rbx)
movq (%rsp), %rdi
movq %r15, %rsi
callq 0x7e918
movl %r14d, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/tabwidget.cpp
// Function: smooth::GUI::TabWidget::Add(smooth::GUI::Widget*, smooth::GUI::Bitmap const&)
S::Int S::GUI::TabWidget::Add(Widget *widget, const Bitmap &bitmap)
{
	if (widget == NIL) return Error();

	if (!widget->IsRegistered())
	{
		widget->Hide();

		if (Widget::Add(widget) == Success())
		{
			bitmaps.Add(bitmap, widget->GetHandle());

			widget->SetMetrics(Point(2, 21), GetSize() - Size(3, 22));

			if (GetNOfObjects() == 1) SelectTab(widget);

			return Success();
		}
	}

	return Error();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testq %rsi, %rsi
je 0x7e774
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x88(%rax)
testb %al, %al
jne 0x7e774
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x57c50
testl %eax, %eax
jne 0x7e774
leaq 0x5c0(%r14), %rdi
movl 0x8(%rbx), %edx
movq %r15, %rsi
callq 0x7eef0
movabsq $0x1500000002, %rax     # imm = 0x1500000002
leaq 0x10(%rsp), %rsi
movq %rax, (%rsi)
movl 0xb0(%r14), %eax
movl 0xb4(%r14), %ecx
addl $-0x3, %eax
addl $-0x16, %ecx
shlq $0x20, %rcx
orq %rcx, %rax
leaq 0x8(%rsp), %rdx
movq %rax, (%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
xorl %ebp, %ebp
cmpl $0x1, 0x40(%r14)
jne 0x7e774
movq %r14, %rdi
movq %rbx, %rsi
callq 0x56450
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/tabwidget.cpp
// Function: smooth::GUI::TabWidget::Remove(smooth::GUI::Widget*)
S::Int S::GUI::TabWidget::Remove(Widget *widget)
{
	if (widget == NIL) return Error();

	Bool	 wasVisible = widget->IsVisible();

	if (Widget::Remove(widget) == Success())
	{
		bitmaps.Remove(widget->GetHandle());

		if (wasVisible)
		{
			if (GetNOfObjects() > 0) SelectTab(GetNthObject(0));
			else			 selectedTab = NIL;
		}

		return Success();
	}

	return Error();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testq %rsi, %rsi
je 0x7e7f9
movq %rsi, %r15
movq %rdi, %r14
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x90(%rax)
movl %eax, %ebp
movq %r14, %rdi
movq %r15, %rsi
callq 0x56df0
testl %eax, %eax
jne 0x7e7f9
leaq 0x5c0(%r14), %rdi
movl 0x8(%r15), %esi
callq 0x58bb0
xorl %ebx, %ebx
testb %bpl, %bpl
je 0x7e7f9
cmpl $0x0, 0x40(%r14)
jle 0x7e7ee
leaq 0x38(%r14), %rdi
xorl %ebx, %ebx
xorl %esi, %esi
callq 0x5b074
movq (%rax), %rsi
movq %r14, %rdi
callq 0x56450
jmp 0x7e7f9
movq $0x0, 0x5b8(%r14)
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/basic/text.cpp
// Function: smooth::GUI::Text::Text(smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&)
S::GUI::Text::Text(const String &iText, const Point &iPos, const Size &iAlign) : Widget(iPos, Size())
{
	type	= classID;
	text	= iText;
	align	= iAlign;

	ComputeTextSize();

	SetSize(scaledTextSize * 96.0 / Surface().GetSurfaceDPI() + Size(0, 2));
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rcx, %r14
movq %rsi, %r15
movq %rdi, %rbx
xorl %r12d, %r12d
leaq 0x8(%rsp), %rax
movq %r12, (%rax)
movq %rdx, %rsi
movq %rax, %rdx
callq 0x57a30
movq 0xecdb7(%rip), %rax     # 0x16be30
addq $0x10, %rax
movq %rax, (%rbx)
movq %r12, 0x5b8(%rbx)
movq 0xecc7a(%rip), %rax     # 0x16bd08
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r15, %rsi
callq 0x555f0
movq (%r14), %rax
movq %rax, 0x5b8(%rbx)
movq %rbx, %rdi
callq 0x55bb0
cvtdq2pd 0x188(%rbx), %xmm0
movapd %xmm0, 0x10(%rsp)
leaq 0x20(%rsp), %rdx
movq $0x0, (%rdx)
movq %rsp, %rdi
xorl %esi, %esi
callq 0x57150
movq %rsp, %rdi
callq 0x58930
movapd 0x10(%rsp), %xmm2
mulpd 0x74430(%rip), %xmm2    # 0xf3520
xorpd %xmm0, %xmm0
movapd %xmm2, %xmm1
cmpltpd %xmm0, %xmm1
movapd %xmm1, %xmm0
andnpd 0x74427(%rip), %xmm0    # 0xf3530
andpd 0x7442f(%rip), %xmm1    # 0xf3540
orpd %xmm0, %xmm1
addpd %xmm2, %xmm1
cvttsd2si %xmm1, %rcx
movq %rcx, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
cvttsd2si %xmm1, %rcx
movq %rcx, %xmm1
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
pshufd $0xe8, %xmm0, %xmm0     # xmm0 = xmm0[0,2,2,3]
cwtl
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
cvtdq2pd %xmm0, %xmm0
unpcklpd %xmm1, %xmm1            # xmm1 = xmm1[0,0]
divpd %xmm1, %xmm0
xorpd %xmm1, %xmm1
movapd %xmm0, %xmm2
cmpltpd %xmm1, %xmm2
movapd %xmm2, %xmm1
andnpd 0x743c9(%rip), %xmm1    # 0xf3530
andpd 0x743d1(%rip), %xmm2    # 0xf3540
orpd %xmm1, %xmm2
addpd %xmm0, %xmm2
cvttsd2si %xmm2, %rax
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
cvttsd2si %xmm2, %rcx
shlq $0x20, %rcx
movl %eax, %eax
orq %rcx, %rax
movabsq $0x200000000, %rcx      # imm = 0x200000000
addq %rax, %rcx
leaq 0x8(%rsp), %rdx
movq %rcx, (%rdx)
leaq 0xa8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq %rsp, %rdi
callq 0x57b20
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0x7f1cc
movq %rax, %r14
movq %rsp, %rdi
callq 0x57b20
jmp 0x7f1de
jmp 0x7f1db
movq %rax, %r14
movq %rbx, %rdi
callq 0x57640
movq %r14, %rdi
callq 0x57090