// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/multi/tree/tree.cpp
// Function: smooth::GUI::Tree::PaintText(smooth::GUI::Color const&, bool)
S::Void S::GUI::Tree::PaintText(const Color &color, Bool drawGradient)
{
	Surface	*surface = GetDrawSurface();
	Rect	 frame	 = Rect(GetRealPosition(), GetRealSize());
	Font	 nFont	 = font;
	Bool	 gotTabs = False;

	if (!active) nFont.SetColor(Setup::InactiveTextColor);
	else	     nFont.SetColor(color);

	if (text.Contains(ListEntry::tabDelimiter)) gotTabs = True;

	surface->StartPaint(GetVisibleArea());

	if (drawGradient) surface->Gradient(Rect(Point(frame.left, frame.top), Size(frame.GetWidth(), Math::Round(16 * surface->GetSurfaceDPI() / 96.0))), Setup::GradientStartColor, Setup::GradientEndColor, OR_HORZ);
	else		  surface->Box(Rect(Point(frame.left, frame.top), Size(frame.GetWidth(), Math::Round(16 * surface->GetSurfaceDPI() / 96.0))), Setup::ClientColor, Rect::Filled);

	Rect	 cbRect = Rect(GetRealPosition() + Point(2, 3) * surface->GetSurfaceDPI() / 96.0, Size(9, 9) * surface->GetSurfaceDPI() / 96.0);

	if (cbRect.GetWidth() % 2 == 0) cbRect = cbRect + Point(1, 1) - Size(1, 1);

	if (cbRect.top <= cbRect.bottom - 1)
	{
		surface->Box(cbRect, Setup::ClientColor, Rect::Filled);
		surface->Box(cbRect, Setup::InactiveTextColor, Rect::Outlined);

		if (cbRect.top <= cbRect.bottom - 3)
		{
			Point	 p1 = Point(cbRect.left + 2 + (IsRightToLeft() ? 1 : 0), (cbRect.top + cbRect.bottom) / 2);
			Point	 p2 = Point(cbRect.right - 2 + (IsRightToLeft() ? 1 : 0), (cbRect.top + cbRect.bottom) / 2);

			Color	 darkColor = Setup::ClientTextColor;

			if (!active) darkColor = Setup::InactiveTextColor;

			surface->Line(p1, p2, darkColor);

			if (!IsMarked())
			{
				p1 = Point((cbRect.left + cbRect.right) / 2 + (IsRightToLeft() ? 1 : 0), cbRect.top + 2);
				p2 = Point((cbRect.left + cbRect.right) / 2 + (IsRightToLeft() ? 1 : 0), cbRect.bottom - 2);

				surface->Line(p1, p2, darkColor);
			}
		}
	}

	if (container->GetObjectType() == ListBox::classID && ((ListBox *) container)->GetNOfTabs() > 0 && gotTabs)
	{
		for (Int i = 0; i < ((ListBox *) container)->GetNOfTabs(); i++)
		{
			Rect	 rect = Rect(GetRealPosition() + Point(0, Math::Ceil(Float(headHotspot->GetRealSize().cy - nFont.GetScaledTextSizeY()) / 2) - 2) + Point(1, 1) * surface->GetSurfaceDPI() / 96.0, GetSize() - Size(1, 1) * surface->GetSurfaceDPI() / 96.0 * 2 - Size(1, 0));

			rect.left += ((ListBox *) container)->GetNthTabOffset(i);
			rect.left += (i == 0 ? Math::Round(12 * surface->GetSurfaceDPI() / 96.0) : 0);

			if (((ListBox *) container)->GetNOfTabs() >= i + 2) rect.right = rect.left + (((ListBox *) container)->GetNthTabOffset(i + 1) - ((ListBox *) container)->GetNthTabOffset(i)) - (i == 0 ? Math::Round(12 * surface->GetSurfaceDPI() / 96.0) : 0) - Math::Round(1 * surface->GetSurfaceDPI() / 96.0) * 2 - 1;

			String	 tabText = GetNthTabText(i);

			if (((ListBox *) container)->GetNthTabOrientation(i) == OR_RIGHT)
			{
				rect.left = Math::Max(rect.left, rect.right - nFont.GetScaledTextSizeX(tabText));
			}

			surface->SetText(tabText, rect, nFont);
		}
	}
	else
	{
		surface->SetText(text, frame + Point(0, Math::Ceil(Float(headHotspot->GetRealSize().cy - nFont.GetScaledTextSizeY()) / 2) - 2) + Point(1, 1) * surface->GetSurfaceDPI() / 96.0 + Point(Math::Round(12 * surface->GetSurfaceDPI() / 96.0), 0) - Size(1, 1) * surface->GetSurfaceDPI() / 96.0 * 2 - Size(Math::Round(12 * surface->GetSurfaceDPI() / 96.0), 0), nFont);
	}

	surface->EndPaint();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movl %edx, %r12d
movq %rsi, %r13
movq %rdi, %r14
movq (%rdi), %rax
callq *0x40(%rax)
movq %rax, %rbx
movq (%r14), %rax
movq %r14, %rdi
callq *0x48(%rax)
movq %rax, %r15
movq (%r14), %rax
movq %r14, %rdi
callq *0x50(%rax)
movq %rax, 0x68(%rsp)
leaq 0x140(%r14), %rsi
leaq 0x78(%rsp), %rbp
movq %rbp, %rdi
callq 0x55b70
cmpb $0x0, 0xcc(%r14)
jne 0x8f30e
movq 0xdc642(%rip), %r13     # 0x16b950
movq %rbp, %rdi
movq %r13, %rsi
callq 0x58650
leaq 0xf0(%r14), %rdi
movq 0xdc889(%rip), %rsi     # 0x16bbb0
movq %rdi, 0x70(%rsp)
callq 0x55180
movl %eax, %ebp
movq (%r14), %rax
movq %r14, %rdi
callq *0x130(%rax)
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %rbx, %rdi
callq 0x55160
movq %r15, %rax
shrq $0x20, %rax
movq %rax, 0x50(%rsp)
movq 0x68(%rsp), %rax
addl %r15d, %eax
movq %rax, 0x58(%rsp)
testb %r12b, %r12b
je 0x8f3e2
movq %rbx, %rdi
callq 0x58930
cwtl
shll $0x4, %eax
cvtsi2sd %eax, %xmm0
divsd 0x6432f(%rip), %xmm0    # 0xf36b8
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x64453(%rip), %rcx     # 0xf37f0
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
leaq 0x30(%rsp), %rsi
movl %r15d, (%rsi)
movq 0x50(%rsp), %rdx
movl %edx, 0x4(%rsi)
movq 0x58(%rsp), %rcx
movl %ecx, 0x8(%rsi)
addl %edx, %eax
movl %eax, 0xc(%rsi)
movq 0xdcbed(%rip), %rdx     # 0x16bfb8
movq 0xdcb4e(%rip), %rcx     # 0x16bf20
movq %rbx, %rdi
movl $0x1, %r8d
callq 0x58750
jmp 0x8f459
movq %rbx, %rdi
callq 0x58930
cwtl
shll $0x4, %eax
cvtsi2sd %eax, %xmm0
divsd 0x642be(%rip), %xmm0    # 0xf36b8
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x643e2(%rip), %rcx     # 0xf37f0
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
leaq 0x30(%rsp), %rsi
movl %r15d, (%rsi)
movq 0x50(%rsp), %rdx
movl %edx, 0x4(%rsi)
movq 0x58(%rsp), %rcx
movl %ecx, 0x8(%rsi)
addl %edx, %eax
movl %eax, 0xc(%rsi)
movq 0xdcb6c(%rip), %rax     # 0x16bfa8
movl (%rax), %ecx
leaq 0x8(%rsp), %r8
movq $0x0, (%r8)
movq 0xdc21f(%rip), %rdx     # 0x16b670
movq %rbx, %rdi
callq 0x57930
movq (%r14), %rax
movq %r14, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq %rbx, %rdi
callq 0x58930
movl %eax, %r13d
movq %rbx, %rdi
callq 0x58930
movswl %r13w, %ecx
cvtsi2sd %ecx, %xmm3
movapd %xmm3, %xmm4
addsd %xmm3, %xmm4
xorpd %xmm1, %xmm1
movapd %xmm4, %xmm5
cmpltsd %xmm1, %xmm5
movsd 0x63ef3(%rip), %xmm0    # 0xf3390
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
movsd 0x63eeb(%rip), %xmm2    # 0xf3398
andnpd %xmm2, %xmm5
orpd %xmm6, %xmm5
addsd %xmm4, %xmm5
cvttsd2si %xmm5, %rcx
mulsd 0x640f2(%rip), %xmm3    # 0xf35b8
movapd %xmm3, %xmm4
cmpltsd %xmm1, %xmm4
movapd %xmm4, %xmm5
andpd %xmm0, %xmm5
andnpd %xmm2, %xmm4
orpd %xmm5, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rdx
xorps %xmm3, %xmm3
cvtsi2sd %ecx, %xmm3
movq %r12, %rsi
movsd 0x641be(%rip), %xmm6    # 0xf36b8
divsd %xmm6, %xmm3
movapd %xmm3, %xmm4
cmpltsd %xmm1, %xmm4
movapd %xmm4, %xmm5
andpd %xmm0, %xmm5
andnpd %xmm2, %xmm4
orpd %xmm5, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rcx
xorps %xmm3, %xmm3
cvtsi2sd %edx, %xmm3
divsd %xmm6, %xmm3
movapd %xmm3, %xmm4
cmpltsd %xmm1, %xmm4
movapd %xmm4, %xmm5
andpd %xmm0, %xmm5
andnpd %xmm2, %xmm4
orpd %xmm5, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rdx
shrq $0x20, %rsi
cwtl
xorps %xmm3, %xmm3
cvtsi2sd %eax, %xmm3
addq %r12, %rcx
mulsd 0x676fc(%rip), %xmm3    # 0xf6c60
movapd %xmm3, %xmm4
cmpltsd %xmm1, %xmm4
movapd %xmm4, %xmm5
andpd %xmm0, %xmm5
andnpd %xmm2, %xmm4
orpd %xmm5, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rax
xorps %xmm3, %xmm3
cvtsi2sd %eax, %xmm3
divsd 0x64123(%rip), %xmm3    # 0xf36b8
movapd %xmm3, %xmm4
cmpltsd %xmm1, %xmm4
andpd %xmm4, %xmm0
andnpd %xmm2, %xmm4
orpd %xmm0, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rdi
addl %esi, %edx
movl %ecx, 0x8(%rsp)
movl %edx, 0xc(%rsp)
leal (%rdi,%rcx), %esi
movl %esi, 0x10(%rsp)
leal (%rdx,%rdi), %eax
movl %eax, 0x14(%rsp)
testb $0x1, %dil
jne 0x8f5f5
incl %edx
movq %rdx, %rdi
shlq $0x20, %rdi
incl %ecx
orq %rdi, %rcx
movq %rax, %rdi
shlq $0x20, %rdi
movl %esi, %esi
orq %rdi, %rsi
movq %rcx, 0x8(%rsp)
movq %rsi, 0x10(%rsp)
cmpl %eax, %edx
movq %rbx, 0x18(%rsp)
jge 0x8f7ae
movq 0xdc99f(%rip), %rax     # 0x16bfa8
movl (%rax), %ecx
leaq 0x30(%rsp), %r8
movq $0x0, (%r8)
movq 0xdc052(%rip), %rdx     # 0x16b670
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x57930
movq 0xdc1ee(%rip), %rax     # 0x16b820
movl (%rax), %ecx
leaq 0x30(%rsp), %r8
movq $0x0, (%r8)
movq 0xdc309(%rip), %r12     # 0x16b950
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
movq %r12, %rdx
callq 0x57930
movl 0x14(%rsp), %eax
addl $-0x3, %eax
cmpl %eax, 0xc(%rsp)
jg 0x8f7ae
movl 0x8(%rsp), %ebx
movq (%r14), %rax
movq %r14, %rdi
callq *0x160(%rax)
movzbl %al, %eax
addl %ebx, %eax
addl $0x2, %eax
movl 0x14(%rsp), %ecx
addl 0xc(%rsp), %ecx
movl 0x10(%rsp), %ebx
movl %ecx, %edx
shrl $0x1f, %edx
addl %ecx, %edx
sarl %edx
movl %eax, 0x20(%rsp)
movl %edx, 0x24(%rsp)
movq (%r14), %rax
movq %r14, %rdi
callq *0x160(%rax)
movzbl %al, %eax
addl %ebx, %eax
addl $-0x2, %eax
movl 0x14(%rsp), %ecx
addl 0xc(%rsp), %ecx
movl %ecx, %edx
shrl $0x1f, %edx
addl %ecx, %edx
sarl %edx
movl %eax, 0x60(%rsp)
movl %edx, 0x64(%rsp)
movq 0xdc71f(%rip), %rax     # 0x16bdf0
movq 0x8(%rax), %rcx
movq %rcx, 0x38(%rsp)
movl (%rax), %eax
movl %eax, 0x30(%rsp)
cmpb $0x0, 0xcc(%r14)
jne 0x8f6f6
movupd (%r12), %xmm0
movapd %xmm0, 0x30(%rsp)
leaq 0x20(%rsp), %rsi
leaq 0x60(%rsp), %rdx
leaq 0x30(%rsp), %rcx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x58300
cmpb $0x0, 0x5b8(%r14)
jne 0x8f7ae
movl 0x8(%rsp), %r12d
movl 0x10(%rsp), %ebx
movq (%r14), %rax
movq %r14, %rdi
callq *0x160(%rax)
addl %r12d, %ebx
movl %ebx, %ecx
shrl $0x1f, %ecx
addl %ebx, %ecx
sarl %ecx
movzbl %al, %eax
addl %ecx, %eax
movl 0x8(%rsp), %ebx
movl 0xc(%rsp), %ecx
addl $0x2, %ecx
shlq $0x20, %rcx
orq %rcx, %rax
movq %rax, 0x20(%rsp)
movl 0x10(%rsp), %r12d
movq (%r14), %rax
movq %r14, %rdi
callq *0x160(%rax)
addl %ebx, %r12d
movl %r12d, %ecx
shrl $0x1f, %ecx
addl %r12d, %ecx
sarl %ecx
movzbl %al, %eax
addl %ecx, %eax
movl 0x14(%rsp), %ecx
addl $-0x2, %ecx
shlq $0x20, %rcx
orq %rcx, %rax
leaq 0x60(%rsp), %rdx
movq %rax, (%rdx)
leaq 0x20(%rsp), %rsi
leaq 0x30(%rsp), %rcx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x58300
movq 0x190(%r14), %rdi
addq $0x20, %rdi
movq 0xdc7a8(%rip), %rax     # 0x16bf68
movswl (%rax), %esi
callq 0x57520
testb %al, %al
je 0x8fb71
movq 0x190(%r14), %rax
movq 0x6d8(%rax), %rdi
callq 0x55530
testl %eax, %eax
setle %al
xorb $0x1, %bpl
orb %al, %bpl
jne 0x8fb71
xorl %r15d, %r15d
movq 0x190(%r14), %rax
movq 0x6d8(%rax), %rdi
callq 0x55530
cmpl %eax, %r15d
movq 0x18(%rsp), %rbx
jge 0x8fdbf
movq (%r14), %rax
movq %r14, %rdi
callq *0x48(%rax)
movq %rax, %r12
movq 0xcf8(%r14), %rdi
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, %r13
leaq 0x78(%rsp), %rdi
movq 0xdc577(%rip), %rsi     # 0x16bdb8
callq 0x57680
shrq $0x20, %r13
subl %eax, %r13d
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
movsd 0x63b3b(%rip), %xmm1    # 0xf3398
mulsd %xmm1, %xmm0
callq 0x56cb0
movq %rax, %r13
movq %rbx, %rdi
callq 0x58930
movl %eax, %ebp
movq %rbx, %rdi
callq 0x58930
movsd 0x63b0d(%rip), %xmm1    # 0xf3390
testw %bp, %bp
js 0x8f890
movsd 0x63b08(%rip), %xmm1    # 0xf3398
movsd 0x63af8(%rip), %xmm0    # 0xf3390
testw %ax, %ax
js 0x8f8a5
movsd 0x63af3(%rip), %xmm0    # 0xf3398
movswl %bp, %ecx
cvtsi2sd %ecx, %xmm2
movq %r12, %rdx
addsd %xmm2, %xmm1
cvttsd2si %xmm1, %rcx
xorps %xmm1, %xmm1
cvtsi2sd %ecx, %xmm1
movsd 0x63df1(%rip), %xmm4    # 0xf36b8
divsd %xmm4, %xmm1
movapd %xmm1, %xmm2
xorpd %xmm7, %xmm7
cmpltsd %xmm7, %xmm2
movapd %xmm2, %xmm3
movsd 0x63aac(%rip), %xmm6    # 0xf3390
andpd %xmm6, %xmm3
movsd 0x63aa8(%rip), %xmm5    # 0xf3398
andnpd %xmm5, %xmm2
orpd %xmm3, %xmm2
addsd %xmm1, %xmm2
cvttsd2si %xmm2, %rsi
shrq $0x20, %rdx
leal (%r12,%rsi), %ecx
addl %edx, %r13d
leal (%rsi,%r13), %edx
addl $-0x2, %edx
cwtl
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
addsd %xmm0, %xmm1
cvttsd2si %xmm1, %rax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd %xmm4, %xmm0
movapd %xmm0, %xmm1
cmpltsd %xmm7, %xmm1
movapd %xmm1, %xmm2
andpd %xmm6, %xmm2
andnpd %xmm5, %xmm1
orpd %xmm2, %xmm1
addsd %xmm0, %xmm1
cvttsd2si %xmm1, %rax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
addsd %xmm0, %xmm0
movapd %xmm0, %xmm1
cmpltsd %xmm7, %xmm1
movapd %xmm1, %xmm2
andpd %xmm6, %xmm2
andnpd %xmm5, %xmm1
orpd %xmm2, %xmm1
addsd %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movl %edx, %esi
subl %eax, %esi
notl %eax
addl %ecx, %eax
addl 0xb0(%r14), %eax
addl 0xb4(%r14), %esi
movl %ecx, 0x20(%rsp)
movl %edx, 0x24(%rsp)
movl %eax, 0x28(%rsp)
movl %esi, 0x2c(%rsp)
movq 0x190(%r14), %rax
movq 0x6d8(%rax), %rdi
movl %r15d, %esi
callq 0x57a40
addl 0x20(%rsp), %eax
movl %eax, 0x20(%rsp)
xorl %ecx, %ecx
testl %r15d, %r15d
jne 0x8fa0b
movq 0x18(%rsp), %rdi
callq 0x58930
cwtl
shll $0x2, %eax
leal (%rax,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x63ccf(%rip), %xmm0    # 0xf36b8
xorl %eax, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta %al
leaq 0x63df3(%rip), %rcx     # 0xf37f0
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rcx
movl 0x20(%rsp), %eax
addl %ecx, %eax
movl %eax, 0x20(%rsp)
movq 0x190(%r14), %rax
movq 0x6d8(%rax), %rdi
callq 0x55530
leal 0x2(%r15), %ecx
cmpl %ecx, %eax
jl 0x8faf9
movl 0x20(%rsp), %ebp
movq 0x190(%r14), %rax
leal 0x1(%r15), %esi
movq 0x6d8(%rax), %rdi
callq 0x57a40
movl %eax, %r12d
movq 0x190(%r14), %rax
movq 0x6d8(%rax), %rdi
movl %r15d, %esi
callq 0x57a40
movl %eax, %r13d
testl %r15d, %r15d
je 0x8fa70
xorl %ebx, %ebx
jmp 0x8faae
movq 0x18(%rsp), %rdi
callq 0x58930
cwtl
shll $0x2, %eax
leal (%rax,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x63c28(%rip), %xmm0    # 0xf36b8
xorl %eax, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta %al
leaq 0x63d4c(%rip), %rcx     # 0xf37f0
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rbx
movq 0x18(%rsp), %rdi
callq 0x58930
cwtl
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x63bf0(%rip), %xmm0    # 0xf36b8
xorl %eax, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta %al
leaq 0x63d14(%rip), %rcx     # 0xf37f0
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
leal (%rbx,%rax,2), %eax
notl %eax
addl %ebp, %r12d
subl %r13d, %r12d
addl %eax, %r12d
movl %r12d, 0x28(%rsp)
leaq 0x30(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movl %r15d, %edx
callq 0x58cd0
movq 0x190(%r14), %rax
movq 0x6d8(%rax), %rdi
movl %r15d, %esi
callq 0x56ba0
cmpl $0x20, %eax
jne 0x8fb47
movl 0x20(%rsp), %ebx
movl 0x28(%rsp), %ebp
leaq 0x78(%rsp), %rdi
movq %r12, %rsi
callq 0x56730
subl %eax, %ebp
cmpl %ebp, %ebx
cmovgl %ebx, %ebp
movl %ebp, 0x20(%rsp)
movq 0x18(%rsp), %rdi
movq %r12, %rsi
leaq 0x20(%rsp), %rdx
leaq 0x78(%rsp), %rcx
xorl %r8d, %r8d
callq 0x57b80
movq %r12, %rdi
callq 0x59200
incl %r15d
jmp 0x8f7f8
movq 0xcf8(%r14), %rdi
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, %r14
movq 0xdc230(%rip), %rsi     # 0x16bdb8
leaq 0x78(%rsp), %rdi
callq 0x57680
shrq $0x20, %r14
subl %eax, %r14d
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
mulsd 0x637ef(%rip), %xmm0    # 0xf3398
callq 0x56cb0
movq %rax, %r14
movq %rbx, %rdi
callq 0x58930
movl %eax, %r13d
movsd 0x637cc(%rip), %xmm0    # 0xf3390
movsd %xmm0, 0x18(%rsp)
testw %ax, %ax
js 0x8fbdd
movsd 0x637c1(%rip), %xmm0    # 0xf3398
movsd %xmm0, 0x18(%rsp)
movq %rbx, %rdi
callq 0x58930
movl %eax, %ebp
movq %rbx, %rdi
callq 0x58930
movl %eax, %r12d
movq %rbx, %rdi
callq 0x58930
movq 0x68(%rsp), %rcx
shrq $0x20, %rcx
movq 0x50(%rsp), %rdx
addl %edx, %ecx
movswl %r13w, %esi
addl %r14d, %ecx
addl $-0x2, %ecx
leal -0x2(%r14,%rdx), %edx
xorps %xmm0, %xmm0
cvtsi2sd %esi, %xmm0
movsd 0x18(%rsp), %xmm1
addsd %xmm0, %xmm1
cvttsd2si %xmm1, %rsi
xorps %xmm0, %xmm0
cvtsi2sd %esi, %xmm0
divsd 0x63a7a(%rip), %xmm0    # 0xf36b8
xorpd %xmm1, %xmm1
movapd %xmm0, %xmm2
cmpltsd %xmm1, %xmm2
movsd 0x6373d(%rip), %xmm1    # 0xf3390
andpd %xmm2, %xmm1
movsd 0x63739(%rip), %xmm3    # 0xf3398
andnpd %xmm3, %xmm2
orpd %xmm1, %xmm2
addsd %xmm0, %xmm2
cvttsd2si %xmm2, %rsi
addl %esi, %edx
movsd 0x63716(%rip), %xmm0    # 0xf3390
movsd 0x63716(%rip), %xmm1    # 0xf3398
movapd %xmm0, %xmm2
testw %r12w, %r12w
js 0x8fc90
movapd %xmm1, %xmm2
movswl %r12w, %edi
xorps %xmm3, %xmm3
cvtsi2sd %edi, %xmm3
addl %esi, %ecx
addsd %xmm2, %xmm3
cvttsd2si %xmm3, %rdi
movswl %bp, %r8d
shll $0x2, %r8d
leal (%r8,%r8,2), %r8d
movd %edi, %xmm2
movd %r8d, %xmm3
punpckldq %xmm2, %xmm3    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
cvtdq2pd %xmm3, %xmm2
divpd 0x63855(%rip), %xmm2    # 0xf3520
pxor %xmm3, %xmm3
movapd %xmm2, %xmm4
cmpltpd %xmm3, %xmm4
movmskpd %xmm4, %r8d
movapd %xmm0, %xmm3
testb $0x2, %r8b
jne 0x8fceb
movapd %xmm1, %xmm3
movapd %xmm2, %xmm4
unpckhpd %xmm2, %xmm4            # xmm4 = xmm4[1],xmm2[1]
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rdi
xorps %xmm4, %xmm4
cvtsi2sd %edi, %xmm4
shlq $0x20, %rdx
addsd %xmm4, %xmm4
xorpd %xmm3, %xmm3
movapd %xmm4, %xmm5
cmpltsd %xmm3, %xmm5
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
andnpd %xmm1, %xmm5
orpd %xmm6, %xmm5
addsd %xmm4, %xmm5
cvttsd2si %xmm5, %rdi
subl %edi, %ecx
shlq $0x20, %rcx
movapd %xmm0, %xmm4
testb $0x1, %r8b
jne 0x8fd45
movapd %xmm1, %xmm4
addsd %xmm4, %xmm2
cvttsd2si %xmm2, %r8
addl %r8d, %r15d
cwtl
shll $0x2, %eax
leal (%rax,%rax,2), %eax
xorps %xmm2, %xmm2
cvtsi2sd %eax, %xmm2
addl %esi, %r15d
divsd 0x6394e(%rip), %xmm2    # 0xf36b8
movapd %xmm2, %xmm4
cmpltsd %xmm3, %xmm4
andpd %xmm4, %xmm0
andnpd %xmm1, %xmm4
orpd %xmm0, %xmm4
addsd %xmm2, %xmm4
cvttsd2si %xmm4, %rax
movq 0x58(%rsp), %r9
addl %esi, %r9d
addl %r8d, %r9d
addl %eax, %edi
subl %edi, %r9d
orq %rdx, %r15
orq %r9, %rcx
leaq 0x30(%rsp), %rdx
movq %r15, (%rdx)
movq %rcx, 0x8(%rdx)
leaq 0x78(%rsp), %rcx
movq %rbx, %rdi
movq 0x70(%rsp), %rsi
xorl %r8d, %r8d
callq 0x57b80
movq %rbx, %rdi
callq 0x58780
leaq 0x78(%rsp), %rdi
callq 0x56720
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
jmp 0x8fe28
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x59200
jmp 0x8fe2b
jmp 0x8fe28
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x56720
movq %rbx, %rdi
callq 0x57090
nop