LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/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 0x57a30
movq 0xf8650(%rip), %rax     # 0x16c558
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xf8762(%rip), %rax     # 0x16c678
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
leaq 0xf0(%rbx), %rdi
movq %r15, %rsi
callq 0x555f0
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 0x73f80
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 0x73fb0
leaq 0xa8(%rbx), %rsi
movl 0xb0(%rbx), %eax
leaq 0x8(%rsp), %rdx
movl %eax, (%rdx)
movl $0x11, 0x4(%rdx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x150(%rax)
movq %rbx, %rdi
callq 0x55bb0
movq 0xf87f9(%rip), %rdi     # 0x16c7b8
movq 0xf843a(%rip), %rsi     # 0x16c400
xorl %edx, %edx
movq %rbx, %rcx
callq 0x74818
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r14
leaq 0xb0(%rbx), %rdx
leaq 0x8(%rsp), %rsi
movq $0x0, (%rsi)
movq %rax, %rdi
callq 0x55a60
movq %r14, 0x5d0(%rbx)
addq $0x338, %r14            # imm = 0x338
movq 0xf8cc3(%rip), %rsi     # 0x16ccd0
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x748d6
movl $0x338, %edi            # imm = 0x338
addq 0x5d0(%rbx), %rdi
leaq 0x478(%rbx), %rsi
callq 0x71a12
leaq 0x298(%rbx), %rdi
movq 0x5d0(%rbx), %rcx
movq 0xf84d1(%rip), %rsi     # 0x16c518
xorl %edx, %edx
callq 0x74994
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 0x55480
jmp 0x7407d
movq %rax, %r15
movq %rbx, %rdi
callq 0x57640
movq %r15, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/../../../../include/smooth/basic/../graphics/color.h
// Function: smooth::GUI::Color::Average(smooth::GUI::Color const&) const
Color		 Average(const Color &color2) const			{ return Color( (GetRed()   + color2.GetRed())	 / 2	    |
														       ((GetGreen() + color2.GetGreen()) / 2) <<  8 |
														       ((GetBlue()  + color2.GetBlue())	 / 2) << 16 |
														       ((GetAlpha() + color2.GetAlpha()) / 2) << 24); }

// Assembly:
movq %rdi, %rax
movl 0x8(%rsi), %esi
movl 0x8(%rdx), %ecx
movl $0xff, %r8d
movl %esi, %edi
andl %r8d, %edi
movl %ecx, %edx
andl %r8d, %edx
addl %edi, %edx
shrl %edx
movl %esi, %r9d
shrl $0x8, %r9d
andl %r8d, %r9d
movl %ecx, %edi
shrl $0x8, %edi
andl %r8d, %edi
addl %r9d, %edi
shll $0x7, %edi
andl $0xff00, %edi           # imm = 0xFF00
movl %esi, %r9d
shrl $0x10, %r9d
andl %r8d, %r9d
movl %ecx, %r10d
shrl $0x10, %r10d
andl %r8d, %r10d
addl %r9d, %r10d
shll $0xf, %r10d
andl $0xff0000, %r10d        # imm = 0xFF0000
shrl $0x18, %esi
shrl $0x18, %ecx
addl %esi, %ecx
andl $-0x2, %ecx
shll $0x17, %ecx
orl %edx, %ecx
orl %edi, %ecx
orl %r10d, %ecx
movslq %ecx, %rcx
movq %rcx, 0x8(%rax)
movl $0x0, (%rax)
retq
// File: /workspace/github_c_makefile_star2_O1/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, %r14d
movl %esi, %ebp
movq %rdi, %rbx
xorl %r15d, %r15d
leaq 0x10(%rsp), %rsi
movq %r15, (%rsi)
leaq 0x8(%rsp), %rdx
movq %r15, (%rdx)
callq 0x57a30
movq 0xf7da3(%rip), %rax     # 0x16ce88
addq $0x10, %rax
movq %rax, (%rbx)
movq %r15, 0x5c0(%rbx)
movq %r15, 0x5e0(%rbx)
leaq 0xedc77(%rip), %rax     # 0x162d78
movq %rax, 0x5d8(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x5e8(%rbx)
movq 0xf79cf(%rip), %rax     # 0x16cae8
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
movl %r14d, 0x30(%rbx)
movw $0x80, 0xd0(%rbx)
movl %ebp, 0x5c8(%rbx)
movb $0x0, 0x5b8(%rbx)
movl $0x0, 0x5bc(%rbx)
testl %ebp, %ebp
jne 0x75152
movl $0x78, 0x5c8(%rbx)
movl $0x5b8, %edi            # imm = 0x5B8
callq 0x556b0
movq %rax, %r14
xorl %eax, %eax
leaq 0x10(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x8(%rsp), %rdx
movq %rax, (%rdx)
movq %r14, %rdi
callq 0x55a30
movq %r14, 0x5d0(%rbx)
movb $0x1, 0xcf(%r14)
addq $0x2b8, %r14            # imm = 0x2B8
movq 0xf77ea(%rip), %rsi     # 0x16c980
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x75980
movl $0x2d8, %edi            # imm = 0x2D8
addq 0x5d0(%rbx), %rdi
movq 0xf744a(%rip), %rsi     # 0x16c600
xorl %edx, %edx
movq %rbx, %rcx
callq 0x75980
movl $0x3f8, %edi            # imm = 0x3F8
addq 0x5d0(%rbx), %rdi
movq 0xf760d(%rip), %rsi     # 0x16c7e0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x75a3e
movl $0x418, %edi            # imm = 0x418
addq 0x5d0(%rbx), %rdi
movq 0xf7518(%rip), %rsi     # 0x16c708
xorl %edx, %edx
movq %rbx, %rcx
callq 0x75a3e
movl $0x438, %edi            # imm = 0x438
addq 0x5d0(%rbx), %rdi
movq 0xf795b(%rip), %rsi     # 0x16cb68
xorl %edx, %edx
movq %rbx, %rcx
callq 0x75a3e
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 0x55480
jmp 0x75247
movq %rax, %r15
leaq 0x5d8(%rbx), %rdi
callq 0x72cce
movq %rbx, %rdi
callq 0x57640
movq %r15, %rdi
callq 0x57090
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/divider.cpp
// Function: smooth::GUI::Divider::OnMouseDrag(smooth::GUI::Point const&)
S::Void S::GUI::Divider::OnMouseDrag(const Point &mousePos)
{
	Int	 pos = startPos;

	if (Binary::IsFlagSet(flags, OR_VERT))	pos -= (startMousePos.x - mousePos.x);
	else					pos -= (startMousePos.y - mousePos.y);

	if (pos != GetPos()) onDrag.Emit(pos);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movl 0x5bc(%rdi), %ebp
movl 0x30(%rdi), %edi
movl $0x2, %esi
callq 0x583f0
leaq 0x5c4(%rbx), %rcx
leaq 0x5c0(%rbx), %rdx
movl %eax, %esi
xorb $0x1, %sil
testb %al, %al
cmovneq %rdx, %rcx
movzbl %sil, %eax
movl (%r14,%rax,4), %esi
subl (%rcx), %esi
addl %ebp, %esi
cmpl 0x5c8(%rbx), %esi
jne 0x7535c
popq %rbx
popq %r14
popq %rbp
retq
addq $0x5d8, %rbx            # imm = 0x5D8
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x72dc0
nop
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/divider.cpp
// Function: smooth::GUI::Divider::SetPos(int)
S::Int S::GUI::Divider::SetPos(Int nPosition)
{
	Bool	 prevVisible = IsVisible();

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

	position = nPosition;

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

	return Success();
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %r14d
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 0x75437
testb %al, %al
je 0x75437
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x60(%rax)
movl %r14d, 0x5c8(%rbx)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x88(%rax)
andb %al, %bpl
cmpb $0x1, %bpl
jne 0x7545c
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_O1/enzo1982[P]smooth/classes/gui/widgets/basic/divider.cpp
// Function: smooth::GUI::Divider::Paint(int)
S::Int S::GUI::Divider::Paint(Int message)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

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

				Surface	*surface = GetDrawSurface();
				Rect	 rect	 = Rect(GetRealPosition(), GetRealSize());

				if (Binary::IsFlagSet(flags, OR_VERT))	surface->Bar(rect.GetPosition(), Point(rect.left,      rect.bottom - 1), OR_VERT);
				else					surface->Bar(rect.GetPosition(), Point(rect.right - 1, rect.top       ), OR_HORZ);
			}

			break;
	}

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %esi, %ebp
movq %rdi, %r15
movq (%rdi), %rax
callq *0x88(%rax)
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testb %al, %al
je 0x7553b
movq (%r15), %rax
movq %r15, %rdi
callq *0x90(%rax)
xorl %ebx, %ebx
testl %ebp, %ebp
jne 0x7553b
testb %al, %al
je 0x7553b
movq %r15, %rdi
callq 0x55150
movq (%r15), %rax
movq %r15, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq %rax, %rbp
shrq $0x20, %rbp
movq (%r15), %rax
movq %r15, %rdi
callq *0x50(%rax)
movq %rax, %r13
movl 0x30(%r15), %edi
movl $0x2, %esi
callq 0x583f0
testb %al, %al
je 0x75516
shrq $0x20, %r13
leaq 0x8(%rsp), %rsi
movq %r12, (%rsi)
leal -0x1(%rbp,%r13), %eax
leaq 0x10(%rsp), %rdx
movl %r12d, (%rdx)
movl %eax, 0x4(%rdx)
movq %r14, %rdi
movl $0x2, %ecx
jmp 0x75536
leaq 0x8(%rsp), %rsi
movq %r12, (%rsi)
leal (%r12,%r13), %eax
decl %eax
leaq 0x10(%rsp), %rdx
movl %eax, (%rdx)
movl %ebp, 0x4(%rdx)
movq %r14, %rdi
movl $0x1, %ecx
callq 0x58fc0
movl %ebx, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/basic/editbox.cpp
// Function: smooth::GUI::EditBox::Paint(int)
S::Int S::GUI::EditBox::Paint(Int message)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

	switch (message)
	{
		case SP_PAINT:
		{
			Surface	*surface	 = GetDrawSurface();
			Rect	 frame		 = Rect(GetRealPosition(), GetRealSize());
			Color	 backgroundColor = IsActive() ? Setup::ClientColor : Setup::BackgroundColor;

			surface->StartPaint(GetVisibleArea());

			cursor->SetBackgroundColor(backgroundColor);

			surface->Box(frame, backgroundColor, Rect::Filled);
			surface->Frame(frame, FRAME_DOWN);

			Widget::Paint(message);

			surface->EndPaint();

			return Success();
		}
	}

	return Widget::Paint(message);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movl %esi, %ebp
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x88(%rax)
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
testb %al, %al
je 0x764ad
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
xorl %r15d, %r15d
testb %al, %al
je 0x764ad
testl %ebp, %ebp
je 0x763a7
movq %rbx, %rdi
movl %ebp, %esi
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x567d0
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq %rax, %r13
shrq $0x20, %r13
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
leal (%rax,%r12), %ecx
shrq $0x20, %rax
leaq 0x28(%rsp), %r15
movl %r12d, (%r15)
movl %r13d, 0x4(%r15)
movl %ecx, 0x8(%r15)
addl %r13d, %eax
movl %eax, 0xc(%r15)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x98(%rax)
movq 0xf626f(%rip), %rcx     # 0x16c670
leaq 0x8(%rcx), %rdx
movq 0xf60c4(%rip), %rsi     # 0x16c4d0
leaq 0x8(%rsi), %rdi
testb %al, %al
cmovneq %rdx, %rdi
movq (%rdi), %rax
leaq 0x18(%rsp), %r12
cmovneq %rcx, %rsi
movq %rax, 0x8(%r12)
movl (%rsi), %eax
movl %eax, (%r12)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x130(%rax)
leaq 0x8(%rsp), %r13
movq %rax, (%r13)
movq %rdx, 0x8(%r13)
movq %r14, %rdi
movq %r13, %rsi
callq 0x55160
movq 0x5b8(%rbx), %rdi
movq (%rdi), %rax
movq %r12, %rsi
callq *0x138(%rax)
movq 0xf6b3d(%rip), %rax     # 0x16cfa8
movl (%rax), %ecx
movq $0x0, (%r13)
leaq 0x8(%rsp), %r8
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x57930
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0x57890
xorl %r15d, %r15d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x567d0
movq %r14, %rdi
callq 0x58780
movl %r15d, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O1/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 0x7650c
callq 0x58cc0
movq %r15, 0x5c0(%rbx)
testq %r15, %r15
je 0x76629
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 0xf5e6f(%rip), %rsi     # 0x16c3d0
xorl %r15d, %r15d
movq %r12, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x76926
movq 0x5c0(%rbx), %rdi
movq (%rdi), %rax
callq *0x178(%rax)
testl %eax, %eax
jle 0x7660a
movq 0xf6628(%rip), %rax     # 0x16cbb8
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 0x765c6
movq %r12, %rdi
callq 0x57350
jmp 0x765f2
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 0x76593
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_O1/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 0x769e4
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 0x76a7e
nop
// File: /workspace/github_c_makefile_star2_O1/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 0xf55ae(%rip), %rax     # 0x16c4e8
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xf5d78(%rip), %rax     # 0x16ccc0
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 0x76f96
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 0x76fc6
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_O1/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 0x77430
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 0x70488
popq %rbx
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O1/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 0x77460
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 0x70488
popq %rbx
xorl %eax, %eax
retq
nop
// File: /workspace/github_c_makefile_star2_O1/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 0x77a6e
leaq 0x140(%r14), %rbx
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x55b70
movq 0xf5530(%rip), %r15     # 0x16cf38
movq %rbx, %rdi
movq %r15, %rsi
callq 0x58650
movq 0x8(%r15), %rax
movq 0xf4c9a(%rip), %rcx     # 0x16c6b8
cmpq 0x8(%rcx), %rax
jne 0x77a36
movq 0xf4f6d(%rip), %rax     # 0x16c998
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_O1/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 0xf4beb(%rip), %rax     # 0x16c728
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 0xf4aeb(%rip), %rax     # 0x16c658
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 0x77bd6
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 0xf4865(%rip), %rsi     # 0x16c478
movq %r13, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x77ec2
movl $0x2d8, %edi            # imm = 0x2D8
addq 0x5e0(%rbx), %rdi
movq 0xf5145(%rip), %rsi     # 0x16cd78
xorl %edx, %edx
movq %rbx, %rcx
callq 0x77ec2
movl $0x338, %edi            # imm = 0x338
addq 0x5e0(%rbx), %rdi
movq 0xf4d80(%rip), %rsi     # 0x16c9d0
xorl %edx, %edx
movq %rbx, %rcx
callq 0x77f80
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 0x77ca7
movq %rax, %r12
jmp 0x77caf
movq %rax, %r12
jmp 0x77cb7
movq %rax, %r12
leaq 0x8(%rsp), %rdi
callq 0x59200
jmp 0x77cbf
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_O1/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 0x77e26
movq (%r14), %rax
movq %r14, %rdi
callq *0x90(%rax)
movl %eax, %ecx
xorl %eax, %eax
testb %cl, %cl
je 0x77e26
testl %ebx, %ebx
jne 0x77e1c
leaq 0x5d8(%r14), %r15
movq %r15, %rdi
xorl %esi, %esi
callq 0x563f0
testb %al, %al
je 0x77e1c
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)
movl (%rax), %ecx
movl %ecx, 0x8(%rdx)
movl 0x4(%rax), %eax
movl %eax, 0xc(%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_O1/enzo1982[P]smooth/classes/gui/widgets/basic/hyperlink.cpp
// Function: smooth::GUI::Hyperlink::SetText(smooth::String const&)
S::Int S::GUI::Hyperlink::SetText(const String &nText)
{
	if (linkBitmap != NIL) linkBitmap = NIL;

	Text::SetText(nText);

	hotspot->SetSize(GetSize());

	return Success();
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x5d8(%rdi), %r15
movq %r15, %rdi
xorl %esi, %esi
callq 0x563f0
testb %al, %al
je 0x77e60
movq %r15, %rdi
xorl %esi, %esi
callq 0x56740
movq %rbx, %rdi
movq %r14, %rsi
callq 0x58cf0
movq 0x5e0(%rbx), %rdi
addq $0xb0, %rbx
leaq 0xa8(%rdi), %rsi
movq (%rdi), %rax
movq %rbx, %rdx
callq *0x150(%rax)
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/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 0x781ea
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
movl %eax, %ebp
testb %al, %al
je 0x78197
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 0x781dc
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 0x781ea
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_O1/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
movl %esi, %r14d
movq %rdi, %rbx
testl %edx, %edx
je 0x78984
movq 0x5c0(%rbx), %rdi
testq %rdi, %rdi
je 0x789d5
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
movq 0x5c0(%rbx), %rdi
testq %rdi, %rdi
je 0x78956
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 0x78aa8
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 0xf3ea1(%rip), %rsi     # 0x16c910
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x792e6
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
// File: /workspace/github_c_makefile_star2_O1/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 0x7905f
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 0x79040
jmp 0x79064
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_O1/enzo1982[P]smooth/classes/gui/widgets/basic/multiedit.cpp
// Function: smooth::GUI::MultiEdit::SetText(smooth::String const&)
S::Int S::GUI::MultiEdit::SetText(const String &newText)
{
	scrollbarPos = 0;

	cursor->SetVisibleDirect(False);
	cursor->SetText(newText);
	cursor->SetVisibleDirect(True);

	if (IsVisible()) Paint(SP_PAINT);

	return Success();
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movl $0x0, 0x5c8(%rdi)
movq 0x5b8(%rdi), %rdi
movb $0x0, 0xcb(%rdi)
movq (%rdi), %rax
callq *0xa0(%rax)
movq 0x5b8(%rbx), %rax
movb $0x1, 0xcb(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x90(%rax)
testb %al, %al
je 0x79150
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
callq *0x78(%rax)
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/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 0xf39f3(%rip), %rax     # 0x16cf50
addq $0x10, %rax
movq %rax, (%rbx)
movq 0xf322d(%rip), %rax     # 0x16c798
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 0x795c6
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 0x795f4
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 0xf346d(%rip), %rdi     # 0x16ca70
movq 0xf2d5e(%rip), %rsi     # 0x16c368
xorl %edx, %edx
movq %rbx, %rcx
callq 0x79e90
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 0xf3221(%rip), %rsi     # 0x16c870
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x79f4e
movl $0x338, %edi            # imm = 0x338
addq 0x5c8(%rbx), %rdi
leaq 0x478(%rbx), %rsi
callq 0x71a12
leaq 0x298(%rbx), %rdi
movq 0x5c8(%rbx), %rcx
movq 0xf2e8f(%rip), %rsi     # 0x16c518
xorl %edx, %edx
callq 0x74994
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 0x796c0
movq %rax, %r15
movq %rbx, %rdi
callq 0x57640
movq %r15, %rdi
callq 0x57090
// File: /workspace/github_c_makefile_star2_O1/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 0xf2894(%rip), %rax     # 0x16c9b0
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 0xf26c5(%rip), %rdx     # 0x16c808
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 0x7a18b
movq (%rbx), %rax
movq %rbx, %rdi
movl $0x1, %esi
callq *0x78(%rax)
leaq 0x140(%rbx), %rdi
movq 0xf2c57(%rip), %rsi     # 0x16cdf0
callq 0x58650
cmpl $0x0, 0xb0(%rbx)
jne 0x7a1df
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 0x7a220
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 0x7a23d
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_O1/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 0x7b0b2
cmpw $0x1, 0x1a0(%rbx)
jne 0x7b03a
movl (%rsi), %r14d
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0x7b048
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
jne 0x7b08e
movq 0x648(%rbx), %rdi
movl $0xfa, %esi
callq 0x55100
xorl %eax, %eax
testl %ebp, %ebp
setg %al
leal -0x1(,%rax,2), %eax
movl %eax, 0x650(%rbx)
movl %ebp, %eax
cltd
idivl 0x650(%rbx)
testl %eax, %eax
js 0x7b0b2
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_O1/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 %rax, %r13
shrq $0x20, %r13
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
movq %rax, %r12
movq %rax, %rbp
shrq $0x20, %rbp
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x40(%rax)
movzwl 0x1a0(%rbx), %ecx
movl $0xa, %r14d
cmpw $0x1, %cx
jne 0x7b15e
cmpl $0x38, 0xb0(%rbx)
jl 0x7b183
cmpw $0x2, %cx
jne 0x7b16d
cmpl $0x38, 0xb4(%rbx)
jl 0x7b183
cmpw $0x1, %cx
jne 0x7b17c
movl 0xb4(%rbx), %r14d
jmp 0x7b183
movl 0xb0(%rbx), %r14d
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 0x79336(%rip), %xmm4    # 0xf44f0
xorpd %xmm2, %xmm2
movapd %xmm4, %xmm5
cmpltsd %xmm2, %xmm5
movsd 0x791c1(%rip), %xmm0    # 0xf4390
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
movsd 0x791b9(%rip), %xmm3    # 0xf4398
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_O1/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
movsd %xmm0, 0x8(%rsp)
cmpw $0x2, 0x1a0(%rdi)
jne 0x7b43e
movq %rdi, %rbx
movq 0x190(%rdi), %rdi
callq 0x559e0
cmpb $0x0, 0xd4(%rbx)
jne 0x7b301
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 0x7b43e
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
xorpd %xmm0, %xmm0
movsd 0x8(%rsp), %xmm5
movapd %xmm5, %xmm1
cmpltsd %xmm0, %xmm1
movsd 0x79064(%rip), %xmm2    # 0xf43b0
movapd %xmm1, %xmm3
andpd %xmm2, %xmm3
movsd 0x7902c(%rip), %xmm4    # 0xf4388
andnpd %xmm4, %xmm1
orpd %xmm3, %xmm1
movapd %xmm5, %xmm3
cmpeqsd %xmm0, %xmm3
andnpd %xmm1, %xmm3
movsd 0x640(%rbx), %xmm1
movapd %xmm1, %xmm5
cmpltsd %xmm0, %xmm5
andpd %xmm5, %xmm2
andnpd %xmm4, %xmm5
orpd %xmm2, %xmm5
cmpeqsd %xmm0, %xmm1
andnpd %xmm5, %xmm1
ucomisd %xmm1, %xmm3
jne 0x7b39f
jnp 0x7b3aa
movq $0x0, 0x640(%rbx)
movsd 0x640(%rbx), %xmm0
movl 0x5e0(%rbx), %eax
xorps %xmm1, %xmm1
cvtsi2sd %rax, %xmm1
addsd 0x8(%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
movsd 0x8(%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
// File: /workspace/github_c_makefile_star2_O1/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, %r14
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x48(%rax)
movq %rax, %r15
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x50(%rax)
movzwl 0x1a0(%rbx), %ecx
cmpw $0x1, %cx
jne 0x7ca46
movl 0x5dc(%rbx), %esi
subl 0x5d8(%rbx), %esi
cvtsi2sd %eax, %xmm0
movl 0x5c8(%rbx), %edx
cvtsi2sd %edx, %xmm1
subsd %xmm1, %xmm0
jmp 0x7ca70
shrq $0x20, %rax
shrq $0x20, %r15
movl 0x5c8(%rbx), %edx
movl 0x5dc(%rbx), %esi
subl 0x5d8(%rbx), %esi
cvtsi2sd %eax, %xmm0
cvtsi2sd %edx, %xmm1
subsd %xmm1, %xmm0
addq $0x4, %r14
cmpb $0x0, 0x5c4(%rbx)
je 0x7ca7f
popq %rbx
popq %r14
popq %r15
retq
xorps %xmm1, %xmm1
cvtsi2sd %esi, %xmm1
movl %edx, %eax
shrl $0x1f, %eax
addl %edx, %eax
sarl %eax
addl %eax, %r15d
movl (%r14), %eax
subl %r15d, %eax
cvtsi2sd %eax, %xmm2
divsd %xmm2, %xmm0
divsd %xmm0, %xmm1
xorpd %xmm0, %xmm0
xorl %eax, %eax
ucomisd %xmm1, %xmm0
seta %al
leaq 0x77cd8(%rip), %rdx     # 0xf4790
addsd (%rdx,%rax,8), %xmm1
cvttsd2si %xmm1, %rax
movl 0x5d8(%rbx), %edx
addl %eax, %edx
movl 0x5dc(%rbx), %esi
subl %eax, %esi
cmpw $0x1, %cx
cmovel %edx, %esi
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0x55250
// File: /workspace/github_c_makefile_star2_O1/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 0x7cb59
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 0x7cbb1
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