// File: /workspace/github_c_makefile_star2_O1/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 $0xa8, %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, 0x58(%rsp)
leaq 0x140(%r14), %rsi
leaq 0x68(%rsp), %rbp
movq %rbp, %rdi
callq 0x55b70
cmpb $0x0, 0xcc(%r14)
jne 0x8f890
movq 0xdd0c0(%rip), %r13     # 0x16c950
movq %rbp, %rdi
movq %r13, %rsi
callq 0x58650
leaq 0xf0(%r14), %r13
movq 0xdd307(%rip), %rsi     # 0x16cbb0
movq %r13, %rdi
callq 0x55180
movb %al, 0x6(%rsp)
movq %r13, 0x60(%rsp)
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, 0x48(%rsp)
movq 0x58(%rsp), %rax
leal (%rax,%r15), %ebp
testb %r12b, %r12b
je 0x8f960
movq %rbx, %rdi
callq 0x58930
cwtl
shll $0x4, %eax
cvtsi2sd %eax, %xmm0
divsd 0x64be4(%rip), %xmm0    # 0xf44f0
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x64e70(%rip), %rcx     # 0xf4790
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
leaq 0x30(%rsp), %rsi
movl %r15d, (%rsi)
movq 0x48(%rsp), %rcx
movl %ecx, 0x4(%rsi)
movl %ebp, 0x8(%rsi)
addl %ecx, %eax
movl %eax, 0xc(%rsi)
movq 0xdd66f(%rip), %rdx     # 0x16cfb8
movq 0xdd5d0(%rip), %rcx     # 0x16cf20
movq %rbx, %rdi
movl $0x1, %r8d
callq 0x58750
jmp 0x8f9d2
movq %rbx, %rdi
callq 0x58930
cwtl
shll $0x4, %eax
cvtsi2sd %eax, %xmm0
divsd 0x64b78(%rip), %xmm0    # 0xf44f0
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x64e04(%rip), %rcx     # 0xf4790
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
leaq 0x30(%rsp), %rsi
movl %r15d, (%rsi)
movq 0x48(%rsp), %rcx
movl %ecx, 0x4(%rsi)
movl %ebp, 0x8(%rsi)
addl %ecx, %eax
movl %eax, 0xc(%rsi)
movq 0xdd5f3(%rip), %rax     # 0x16cfa8
movl (%rax), %ecx
leaq 0x8(%rsp), %r8
movq $0x0, (%r8)
movq 0xdcca6(%rip), %rdx     # 0x16c670
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 0x6497a(%rip), %xmm0    # 0xf4390
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
movsd 0x64972(%rip), %xmm2    # 0xf4398
andnpd %xmm2, %xmm5
orpd %xmm6, %xmm5
addsd %xmm4, %xmm5
cvttsd2si %xmm5, %rcx
mulsd 0x64b21(%rip), %xmm3    # 0xf4560
movapd %xmm3, %xmm4
cmpltsd %xmm1, %xmm4
movapd %xmm4, %xmm5
andpd %xmm0, %xmm5
andnpd %xmm2, %xmm4
orpd %xmm5, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rsi
xorps %xmm3, %xmm3
cvtsi2sd %ecx, %xmm3
movq %r12, %rdx
movsd 0x64a7d(%rip), %xmm6    # 0xf44f0
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 %esi, %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, %rsi
shrq $0x20, %rdx
cwtl
xorps %xmm3, %xmm3
cvtsi2sd %eax, %xmm3
addq %r12, %rcx
mulsd 0x67c43(%rip), %xmm3    # 0xf7720
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 0x649e2(%rip), %xmm3    # 0xf44f0
movapd %xmm3, %xmm4
cmpltsd %xmm1, %xmm4
andpd %xmm4, %xmm0
andnpd %xmm2, %xmm4
orpd %xmm0, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rdi
addl %edx, %esi
movl %ecx, 0x8(%rsp)
movl %esi, 0xc(%rsp)
leal (%rdi,%rcx), %eax
movl %eax, 0x10(%rsp)
leal (%rsi,%rdi), %edx
movl %edx, 0x14(%rsp)
testb $0x1, %dil
jne 0x8fb68
incl %esi
shlq $0x20, %rsi
incl %ecx
orq %rsi, %rcx
shlq $0x20, %rdx
movl %eax, %eax
orq %rdx, %rax
movq %rcx, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movl 0xc(%rsp), %eax
cmpl 0x14(%rsp), %eax
movq %rbx, 0x18(%rsp)
jge 0x8fd27
movq 0xdd426(%rip), %rax     # 0x16cfa8
movl (%rax), %ecx
leaq 0x30(%rsp), %r8
movq $0x0, (%r8)
movq 0xdcad9(%rip), %rdx     # 0x16c670
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x57930
movq 0xdcc75(%rip), %rax     # 0x16c820
movl (%rax), %ecx
leaq 0x30(%rsp), %r8
movq $0x0, (%r8)
movq 0xdcd90(%rip), %r12     # 0x16c950
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
movq %r12, %rdx
callq 0x57930
movl 0x14(%rsp), %eax
addl $-0x3, %eax
cmpl %eax, 0xc(%rsp)
jg 0x8fd27
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, 0x50(%rsp)
movl %edx, 0x54(%rsp)
movq 0xdd1a6(%rip), %rax     # 0x16cdf0
movq 0x8(%rax), %rcx
movq %rcx, 0x38(%rsp)
movl (%rax), %eax
movl %eax, 0x30(%rsp)
cmpb $0x0, 0xcc(%r14)
jne 0x8fc6f
movupd (%r12), %xmm0
movapd %xmm0, 0x30(%rsp)
leaq 0x20(%rsp), %rsi
leaq 0x50(%rsp), %rdx
leaq 0x30(%rsp), %rcx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x58300
cmpb $0x0, 0x5b8(%r14)
jne 0x8fd27
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 0x50(%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 0xdd22f(%rip), %rax     # 0x16cf68
movswl (%rax), %esi
callq 0x57520
testb %al, %al
je 0x900e2
movq 0x190(%r14), %rax
movq 0x6d8(%rax), %rdi
callq 0x55530
testl %eax, %eax
setle %al
movb 0x6(%rsp), %cl
xorb $0x1, %cl
orb %al, %cl
jne 0x900e2
xorl %r15d, %r15d
movq 0x190(%r14), %rax
movq 0x6d8(%rax), %rdi
callq 0x55530
cmpl %eax, %r15d
movq 0x18(%rsp), %rbx
jge 0x9035b
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 0x68(%rsp), %rdi
movq 0xdcffc(%rip), %rsi     # 0x16cdb8
callq 0x57680
shrq $0x20, %r13
subl %eax, %r13d
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
movsd 0x645c0(%rip), %xmm1    # 0xf4398
mulsd %xmm1, %xmm0
callq 0x56cb0
movq %rax, %r13
movq %rbx, %rdi
callq 0x58930
movl %eax, %ebp
movq %rbx, %rdi
callq 0x58930
movsd 0x64592(%rip), %xmm1    # 0xf4390
testw %bp, %bp
js 0x8fe0b
movsd 0x6458d(%rip), %xmm1    # 0xf4398
movsd 0x6457d(%rip), %xmm0    # 0xf4390
testw %ax, %ax
js 0x8fe20
movsd 0x64578(%rip), %xmm0    # 0xf4398
movswl %bp, %ecx
cvtsi2sd %ecx, %xmm2
movq %r12, %rdx
addsd %xmm2, %xmm1
cvttsd2si %xmm1, %rcx
xorps %xmm1, %xmm1
cvtsi2sd %ecx, %xmm1
movsd 0x646ae(%rip), %xmm4    # 0xf44f0
divsd %xmm4, %xmm1
movapd %xmm1, %xmm2
xorpd %xmm7, %xmm7
cmpltsd %xmm7, %xmm2
movapd %xmm2, %xmm3
movsd 0x64531(%rip), %xmm6    # 0xf4390
andpd %xmm6, %xmm3
movsd 0x6452d(%rip), %xmm5    # 0xf4398
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 %eax, 0x20(%rsp)
xorl %eax, %eax
testl %r15d, %r15d
jne 0x8ff7e
movq 0x18(%rsp), %rdi
callq 0x58930
cwtl
shll $0x2, %eax
leal (%rax,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x64590(%rip), %xmm0    # 0xf44f0
xorl %eax, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta %al
leaq 0x6481c(%rip), %rcx     # 0xf4790
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
addl %eax, 0x20(%rsp)
movq 0x190(%r14), %rax
movq 0x6d8(%rax), %rdi
callq 0x55530
leal 0x2(%r15), %ecx
cmpl %ecx, %eax
jl 0x9006a
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 0x8ffe1
xorl %ebx, %ebx
jmp 0x9001f
movq 0x18(%rsp), %rdi
callq 0x58930
cwtl
shll $0x2, %eax
leal (%rax,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x644ef(%rip), %xmm0    # 0xf44f0
xorl %eax, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta %al
leaq 0x6477b(%rip), %rcx     # 0xf4790
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rbx
movq 0x18(%rsp), %rdi
callq 0x58930
cwtl
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x644b7(%rip), %xmm0    # 0xf44f0
xorl %eax, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta %al
leaq 0x64743(%rip), %rcx     # 0xf4790
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 0x900b8
movl 0x20(%rsp), %ebx
movl 0x28(%rsp), %ebp
leaq 0x68(%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 0x68(%rsp), %rcx
xorl %r8d, %r8d
callq 0x57b80
movq %r12, %rdi
callq 0x59200
incl %r15d
jmp 0x8fd73
movq 0xcf8(%r14), %rdi
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, %r14
movq 0xdccbf(%rip), %rsi     # 0x16cdb8
leaq 0x68(%rsp), %rdi
callq 0x57680
shrq $0x20, %r14
subl %eax, %r14d
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
mulsd 0x6427e(%rip), %xmm0    # 0xf4398
callq 0x56cb0
movq %rax, %r14
movq %rbx, %rdi
callq 0x58930
movl %eax, %r13d
movsd 0x6425b(%rip), %xmm0    # 0xf4390
movsd %xmm0, 0x18(%rsp)
testw %ax, %ax
js 0x9014e
movsd 0x64250(%rip), %xmm0    # 0xf4398
movsd %xmm0, 0x18(%rsp)
movq %rbx, %rdi
callq 0x58930
movw %ax, 0x6(%rsp)
movq %rbx, %rdi
callq 0x58930
movl %eax, %r12d
movq %rbx, %rdi
callq 0x58930
movq 0x58(%rsp), %rdx
shrq $0x20, %rdx
movq 0x48(%rsp), %r8
addl %r8d, %edx
movswl %r13w, %ecx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
movsd 0x18(%rsp), %xmm1
addsd %xmm0, %xmm1
cvttsd2si %xmm1, %rsi
xorps %xmm0, %xmm0
cvtsi2sd %esi, %xmm0
leal -0x2(%rdx,%r14), %ecx
divsd 0x64343(%rip), %xmm0    # 0xf44f0
xorpd %xmm1, %xmm1
movapd %xmm0, %xmm2
cmpltsd %xmm1, %xmm2
movsd 0x641ce(%rip), %xmm1    # 0xf4390
andpd %xmm2, %xmm1
movsd 0x641ca(%rip), %xmm3    # 0xf4398
andnpd %xmm3, %xmm2
orpd %xmm1, %xmm2
addsd %xmm0, %xmm2
cvttsd2si %xmm2, %rdi
leal (%r14,%r8), %edx
addl $-0x2, %edx
addl %edi, %edx
shlq $0x20, %rdx
addl %edi, %ecx
movsd 0x6419a(%rip), %xmm0    # 0xf4390
movsd 0x6419a(%rip), %xmm1    # 0xf4398
movapd %xmm0, %xmm2
testw %r12w, %r12w
js 0x9020c
movapd %xmm1, %xmm2
movswl %r12w, %edi
xorps %xmm3, %xmm3
cvtsi2sd %edi, %xmm3
addsd %xmm2, %xmm3
cvttsd2si %xmm3, %rdi
xorps %xmm3, %xmm3
cvtsi2sd %edi, %xmm3
movsd 0x642c1(%rip), %xmm6    # 0xf44f0
divsd %xmm6, %xmm3
xorpd %xmm2, %xmm2
movapd %xmm3, %xmm4
cmpltsd %xmm2, %xmm4
movapd %xmm4, %xmm5
andpd %xmm0, %xmm5
andnpd %xmm1, %xmm4
orpd %xmm5, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rdi
xorps %xmm3, %xmm3
cvtsi2sd %edi, %xmm3
addsd %xmm3, %xmm3
movapd %xmm3, %xmm4
cmpltsd %xmm2, %xmm4
movapd %xmm4, %xmm5
andpd %xmm0, %xmm5
andnpd %xmm1, %xmm4
orpd %xmm5, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rdi
xorps %xmm3, %xmm3
cvtsi2sd %esi, %xmm3
subl %edi, %ecx
divsd %xmm6, %xmm3
movapd %xmm3, %xmm4
cmpltsd %xmm2, %xmm4
movapd %xmm4, %xmm5
andpd %xmm0, %xmm5
andnpd %xmm1, %xmm4
orpd %xmm5, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rsi
movswl 0x6(%rsp), %r8d
shll $0x2, %r8d
leal (%r8,%r8,2), %r8d
xorps %xmm3, %xmm3
cvtsi2sd %r8d, %xmm3
shlq $0x20, %rcx
divsd %xmm6, %xmm3
movapd %xmm3, %xmm4
cmpltsd %xmm2, %xmm4
movapd %xmm4, %xmm5
andpd %xmm0, %xmm5
andnpd %xmm1, %xmm4
orpd %xmm5, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %r8
addl %r8d, %r15d
addl %esi, %r15d
cwtl
shll $0x2, %eax
leal (%rax,%rax,2), %eax
xorps %xmm3, %xmm3
cvtsi2sd %eax, %xmm3
divsd %xmm6, %xmm3
movapd %xmm3, %xmm4
cmpltsd %xmm2, %xmm4
andpd %xmm4, %xmm0
andnpd %xmm1, %xmm4
orpd %xmm0, %xmm4
addsd %xmm3, %xmm4
cvttsd2si %xmm4, %rax
addl %r8d, %ebp
addl %esi, %ebp
addl %edi, %eax
subl %eax, %ebp
orq %rdx, %r15
orq %rcx, %rbp
leaq 0x30(%rsp), %rdx
movq %r15, (%rdx)
movq %rbp, 0x8(%rdx)
leaq 0x68(%rsp), %rcx
movq %rbx, %rdi
movq 0x60(%rsp), %rsi
xorl %r8d, %r8d
callq 0x57b80
movq %rbx, %rdi
callq 0x58780
leaq 0x68(%rsp), %rdi
callq 0x56720
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
jmp 0x903c4
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x59200
jmp 0x903c7
jmp 0x903c4
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x56720
movq %rbx, %rdi
callq 0x57090
nop