// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/gui/widgets/multi/list/listentry.cpp
// Function: smooth::GUI::ListEntry::Paint(int)
S::Int S::GUI::ListEntry::Paint(Int message)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

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

	Widget	*listBox = container;

	Font	 nFont	 = font;
	Bool	 gotTabs = False;

	switch (message)
	{
		case SP_PAINT:
		case SP_MOUSEIN:
		case SP_MOUSEOUT:
			if (mouseOver) nFont.SetColor(Setup::GradientTextColor);
			if (!IsActive()) nFont.SetColor(Setup::InactiveTextColor);

			gotTabs = text.Contains(tabDelimiter);

			surface->StartPaint(GetVisibleArea());

			/* Draw background and frame.
			 */
			if (mouseOver)	surface->Gradient(frame, Setup::GradientStartColor, Setup::GradientEndColor, OR_HORZ);
			else		surface->Box(frame, IsActive() ? Setup::ClientColor : Setup::BackgroundColor, Rect::Filled);

			if (selected)	surface->Box(frame, Setup::ClientTextColor, Rect::Dotted);

			/* Draw checkbox if necessary.
			 */
			if (container->GetFlags() & LF_MULTICHECKBOX)
			{
				Rect	 cbRect = Rect(GetRealPosition() + Point(2, 3) * surface->GetSurfaceDPI() / 96.0, Size(9, 9) * surface->GetSurfaceDPI() / 96.0);

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

					if (marked && cbRect.top <= cbRect.bottom - 3)
					{
						Color	 lightColor = Setup::InactiveTextColor;
						Color	 darkColor = Setup::ClientTextColor;

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

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

						surface->Line(p1 + Point(0, 0), p2 + Point(0, 0), darkColor);
						surface->Line(p1 + Point(1, 0), p2 + Point(0, -1), lightColor);
						surface->Line(p1 + Point(0, 1), p2 + Point(-1, 0), lightColor);

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

						surface->Line(p1 + Point(0, 0), p2 + Point(0, 0), darkColor);
						surface->Line(p1 + Point(0, 1), p2 + Point(1, 0), lightColor);
						surface->Line(p1 + Point(-1, 0), p2 + Point(0, -1), lightColor);
					}
				}
			}

			/* Get parent ListBox widget.
			 */
			while (listBox->GetObjectType() != ListBox::classID)
			{
				listBox = listBox->GetContainer();

				if (listBox == NIL) break;
			}

			/* Draw entry text.
			 */
			Int	 lineHeight = scaledTextSize.cy;

			if (text.Contains("\n")) lineHeight = nFont.GetScaledTextSizeY();

			if (listBox != NIL && ((ListBox *) listBox)->GetNOfTabs() > 0 && gotTabs)
			{
				for (Int i = 0; i < ((ListBox *) listBox)->GetNOfTabs(); i++)
				{
					Rect	 rect = Rect(GetRealPosition() + Point(0, Math::Ceil(Float(frame.GetHeight() - lineHeight) / 2) - 2) + Point(1, 1) * surface->GetSurfaceDPI() / 96.0 + Point(i > 0 && listBox != container ? listBox->GetRealPosition().x - container->GetRealPosition().x + 2 : 0, 0), GetRealSize() - Size(1, 1) * surface->GetSurfaceDPI() / 96.0 * 2 - Size(1, 0));

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

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

					String	 tabText = GetNthTabText(i);

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

					surface->SetText(tabText, rect, nFont);
				}
			}
			else
			{
				surface->SetText(text, frame + Point(0, Math::Ceil(Float(frame.GetHeight() - lineHeight) / 2) - 2) + Point(1, 1) * surface->GetSurfaceDPI() / 96.0 + Point(container->GetFlags() & LF_MULTICHECKBOX ? Math::Round(12 * surface->GetSurfaceDPI() / 96.0) : 0, 0) - Size(1, 1) * surface->GetSurfaceDPI() / 96.0 * 2 - Size(container->GetFlags() & LF_MULTICHECKBOX ? Math::Round(12 * surface->GetSurfaceDPI() / 96.0) : 0, 0), nFont);
			}

			Widget::Paint(SP_PAINT);

			surface->EndPaint();

			return Success();
	}

	return Widget::Paint(message);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movl %esi, %ebp
movq %rdi, %r12
movq (%rdi), %rax
callq *0x88(%rax)
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testb %al, %al
je 0x87e81
movq (%r12), %rax
movq %r12, %rdi
callq *0x90(%rax)
xorl %ebx, %ebx
testb %al, %al
je 0x87e81
movq (%r12), %rax
movq %r12, %rdi
callq *0x40(%rax)
movq %rax, (%rsp)
movq (%r12), %rax
movq %r12, %rdi
callq *0x48(%rax)
movq %rax, %rbx
movq %rax, %r14
shrq $0x20, %r14
movq (%r12), %rax
movq %r12, %rdi
callq *0x50(%rax)
leal (%rax,%rbx), %ecx
shrq $0x20, %rax
movl %ebx, 0x50(%rsp)
movl %r14d, 0x54(%rsp)
movl %ecx, 0x58(%rsp)
addl %r14d, %eax
movl %eax, 0x5c(%rsp)
movq 0x190(%r12), %r15
leaq 0x140(%r12), %rsi
leaq 0x98(%rsp), %rdi
callq 0x55b70
cmpl $0x3, %ebp
ja 0x871d0
cmpl $0x1, %ebp
je 0x871d0
cmpb $0x1, 0xd4(%r12)
movq (%rsp), %r14
jne 0x87128
movq 0xe5a15(%rip), %rsi     # 0x16cb30
leaq 0x98(%rsp), %rdi
callq 0x58650
movq (%r12), %rax
movq %r12, %rdi
callq *0x98(%rax)
testb %al, %al
jne 0x8714d
movq 0xe5810(%rip), %rsi     # 0x16c950
leaq 0x98(%rsp), %rdi
callq 0x58650
leaq 0xf0(%r12), %rbp
movq 0xe5a54(%rip), %rsi     # 0x16cbb0
movq %rbp, %rdi
callq 0x55180
movl %eax, %r13d
movq (%r12), %rax
movq %r12, %rdi
callq *0x130(%rax)
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq %r14, %rdi
callq 0x55160
cmpb $0x1, 0xd4(%r12)
jne 0x871b6
movq 0xe5e1e(%rip), %rdx     # 0x16cfb8
movq 0xe5d7f(%rip), %rcx     # 0x16cf20
leaq 0x50(%rsp), %rsi
movq %r14, %rdi
movl $0x1, %r8d
callq 0x58750
jmp 0x8720a
movq (%r12), %rax
movq %r12, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x871e1
movq 0xe54a2(%rip), %rdx     # 0x16c670
jmp 0x871e8
movq %r12, %rdi
movl %ebp, %esi
callq 0x567d0
movl %eax, %ebx
jmp 0x87e74
movq 0xe52e8(%rip), %rdx     # 0x16c4d0
movq 0xe5db9(%rip), %rax     # 0x16cfa8
movl (%rax), %ecx
leaq 0x30(%rsp), %r8
movq $0x0, (%r8)
leaq 0x50(%rsp), %rsi
movq %r14, %rdi
callq 0x57930
cmpb $0x1, 0x5b9(%r12)
jne 0x8723e
movq 0xe5c74(%rip), %rax     # 0x16ce90
movl (%rax), %ecx
leaq 0x30(%rsp), %r8
movq $0x0, (%r8)
movq 0xe5bbf(%rip), %rdx     # 0x16cdf0
leaq 0x50(%rsp), %rsi
movq %r14, %rdi
callq 0x57930
movq 0x190(%r12), %rax
testb $0x4, 0x30(%rax)
movq %r12, 0x8(%rsp)
je 0x87692
movb %r13b, 0x28(%rsp)
movq (%r12), %rax
movq %r12, %rdi
callq *0x48(%rax)
movq %rax, %r13
movq %r14, %rdi
callq 0x58930
movl %eax, %ebx
movq %r14, %rdi
callq 0x58930
movswl %bx, %ecx
cvtsi2sd %ecx, %xmm4
movapd %xmm4, %xmm3
addsd %xmm4, %xmm3
xorpd %xmm1, %xmm1
movapd %xmm3, %xmm5
cmpltsd %xmm1, %xmm5
movsd 0x6d0f3(%rip), %xmm0    # 0xf4390
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
movsd 0x6d0eb(%rip), %xmm2    # 0xf4398
andnpd %xmm2, %xmm5
orpd %xmm6, %xmm5
addsd %xmm3, %xmm5
cvttsd2si %xmm5, %rcx
xorps %xmm5, %xmm5
cvtsi2sd %ecx, %xmm5
movsd 0x6d223(%rip), %xmm3    # 0xf44f0
divsd %xmm3, %xmm5
movapd %xmm5, %xmm6
cmpltsd %xmm1, %xmm6
movapd %xmm6, %xmm7
andpd %xmm0, %xmm7
andnpd %xmm2, %xmm6
orpd %xmm7, %xmm6
addsd %xmm5, %xmm6
cvttsd2si %xmm6, %rcx
mulsd 0x6d265(%rip), %xmm4    # 0xf4560
movapd %xmm4, %xmm5
cmpltsd %xmm1, %xmm5
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
andnpd %xmm2, %xmm5
orpd %xmm6, %xmm5
addsd %xmm4, %xmm5
cvttsd2si %xmm5, %rdx
xorps %xmm4, %xmm4
cvtsi2sd %edx, %xmm4
divsd %xmm3, %xmm4
movapd %xmm4, %xmm5
cmpltsd %xmm1, %xmm5
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
andnpd %xmm2, %xmm5
orpd %xmm6, %xmm5
addsd %xmm4, %xmm5
cvttsd2si %xmm5, %rdx
cwtl
xorps %xmm4, %xmm4
cvtsi2sd %eax, %xmm4
addl %r13d, %ecx
mulsd 0x703c3(%rip), %xmm4    # 0xf7720
movapd %xmm4, %xmm5
cmpltsd %xmm1, %xmm5
movapd %xmm5, %xmm6
andpd %xmm0, %xmm6
andnpd %xmm2, %xmm5
orpd %xmm6, %xmm5
addsd %xmm4, %xmm5
cvttsd2si %xmm5, %rax
shrq $0x20, %r13
xorps %xmm4, %xmm4
cvtsi2sd %eax, %xmm4
divsd %xmm3, %xmm4
movapd %xmm4, %xmm3
cmpltsd %xmm1, %xmm3
andpd %xmm3, %xmm0
andnpd %xmm2, %xmm3
orpd %xmm0, %xmm3
addsd %xmm4, %xmm3
cvttsd2si %xmm3, %rax
addl %edx, %r13d
movl %ecx, 0x30(%rsp)
movl %r13d, 0x34(%rsp)
addl %eax, %ecx
movl %ecx, 0x38(%rsp)
addl %eax, %r13d
movl %r13d, 0x3c(%rsp)
testl %eax, %eax
movb 0x28(%rsp), %r13b
jle 0x87692
movq 0xe5bce(%rip), %rax     # 0x16cfa8
movl (%rax), %ecx
leaq 0x18(%rsp), %r8
movq $0x0, (%r8)
movq 0xe5281(%rip), %rdx     # 0x16c670
leaq 0x30(%rsp), %rsi
movq %r14, %rdi
callq 0x57930
movq 0xe541d(%rip), %rax     # 0x16c820
movl (%rax), %ecx
leaq 0x18(%rsp), %r8
movq $0x0, (%r8)
movq 0xe5538(%rip), %rbx     # 0x16c950
leaq 0x30(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x57930
cmpb $0x1, 0x5b8(%r12)
jne 0x87692
movl 0x3c(%rsp), %eax
addl $-0x3, %eax
cmpl %eax, 0x34(%rsp)
jg 0x87692
movq 0x8(%rbx), %rax
movq %rax, 0x20(%rsp)
movl (%rbx), %eax
movl %eax, 0x18(%rsp)
movq 0xe5992(%rip), %rax     # 0x16cdf0
movq 0x8(%rax), %rcx
movq %rcx, 0x88(%rsp)
movl (%rax), %eax
movl %eax, 0x80(%rsp)
movq (%r12), %rax
movq %r12, %rdi
callq *0x98(%rax)
movq %rbp, 0x68(%rsp)
testb %al, %al
jne 0x87496
movupd (%rbx), %xmm0
movapd %xmm0, 0x80(%rsp)
movl 0x30(%rsp), %r12d
movq 0x8(%rsp), %rbp
movq (%rbp), %rax
movq %rbp, %rdi
callq *0x160(%rax)
movl %eax, %ebx
movl 0x34(%rsp), %r14d
movl 0x38(%rsp), %r13d
movq (%rbp), %rax
movq %rbp, %rdi
callq *0x160(%rax)
movzbl %bl, %ecx
leal (%r12,%rcx), %ebx
addl $0x2, %ebx
leal 0x2(%r14), %ebp
movzbl %al, %eax
leal (%rax,%r13), %ecx
addl $-0x2, %ecx
movl 0x3c(%rsp), %r13d
leal -0x2(%r13), %r12d
shlq $0x20, %rbp
movl %ebx, %eax
movq %rax, 0x48(%rsp)
addq %rbp, %rax
leaq 0x78(%rsp), %rsi
movq %rax, (%rsi)
shlq $0x20, %r12
movq %rcx, 0x10(%rsp)
leaq (%r12,%rcx), %rax
leaq 0x70(%rsp), %rdx
movq %rax, (%rdx)
leaq 0x80(%rsp), %rcx
movq (%rsp), %rdi
callq 0x58300
incl %ebx
orq %rbx, %rbp
leaq 0x78(%rsp), %rsi
movq %rbp, (%rsi)
addl $-0x3, %r13d
shlq $0x20, %r13
movq 0x10(%rsp), %rbx
orq %rbx, %r13
leaq 0x70(%rsp), %rdx
movq %r13, (%rdx)
leaq 0x18(%rsp), %rcx
movq (%rsp), %r13
movq %r13, %rdi
callq 0x58300
addl $0x3, %r14d
shlq $0x20, %r14
addq 0x48(%rsp), %r14
leaq 0x78(%rsp), %rsi
movq %r14, (%rsi)
decl %ebx
orq %rbx, %r12
leaq 0x70(%rsp), %rdx
movq %r12, (%rdx)
leaq 0x18(%rsp), %rcx
movq %r13, %rdi
callq 0x58300
movl 0x38(%rsp), %r12d
movq 0x8(%rsp), %r13
movq (%r13), %rax
movq %r13, %rdi
callq *0x160(%rax)
movl %eax, %ebx
movl 0x30(%rsp), %ebp
movl 0x34(%rsp), %r14d
movq (%r13), %rax
movq %r13, %rdi
callq *0x160(%rax)
movzbl %bl, %ecx
leal (%r12,%rcx), %edx
addl $-0x3, %edx
leal 0x2(%r14), %r13d
movzbl %al, %eax
leal (%rax,%rbp), %ecx
incl %ecx
movl 0x3c(%rsp), %ebx
leal -0x2(%rbx), %r12d
shlq $0x20, %r13
movq %rdx, 0x60(%rsp)
movl %edx, %eax
movq %rax, 0x48(%rsp)
addq %r13, %rax
leaq 0x78(%rsp), %rsi
movq %rax, (%rsi)
shlq $0x20, %r12
movq %rcx, 0x10(%rsp)
leaq (%r12,%rcx), %rax
leaq 0x70(%rsp), %rdx
movq %rax, (%rdx)
leaq 0x80(%rsp), %rcx
movq (%rsp), %rbp
movq %rbp, %rdi
callq 0x58300
addl $0x3, %r14d
shlq $0x20, %r14
addq 0x48(%rsp), %r14
leaq 0x78(%rsp), %rsi
movq %r14, (%rsi)
movq 0x10(%rsp), %rax
incl %eax
orq %rax, %r12
leaq 0x70(%rsp), %rdx
movq %r12, (%rdx)
leaq 0x18(%rsp), %rcx
movq %rbp, %rdi
callq 0x58300
movq %rbp, %r14
movq 0x60(%rsp), %rax
decl %eax
orq %rax, %r13
leaq 0x78(%rsp), %rsi
movq %r13, (%rsi)
addl $-0x3, %ebx
shlq $0x20, %rbx
addq 0x10(%rsp), %rbx
leaq 0x70(%rsp), %rdx
movq %rbx, (%rdx)
leaq 0x18(%rsp), %rcx
movq %rbp, %rdi
callq 0x58300
movq 0x8(%rsp), %r12
movq 0x68(%rsp), %rbp
movb 0x28(%rsp), %r13b
movq 0xe58cf(%rip), %rax     # 0x16cf68
movswl (%rax), %ebx
leaq 0x20(%r15), %rdi
movl %ebx, %esi
callq 0x57520
testb %al, %al
jne 0x876ba
movq 0x190(%r15), %r15
testq %r15, %r15
jne 0x8769c
xorl %r15d, %r15d
movl 0x18c(%r12), %eax
movl %eax, 0x10(%rsp)
leaq 0x8b1b6(%rip), %rsi     # 0x112883
leaq 0x30(%rsp), %rdi
callq 0x579f0
leaq 0x30(%rsp), %rsi
movq %rbp, %rdi
callq 0x55180
movl %eax, %ebx
leaq 0x30(%rsp), %rdi
callq 0x59200
testb %bl, %bl
je 0x8770c
movq 0xe56bd(%rip), %rsi     # 0x16cdb8
leaq 0x98(%rsp), %rdi
callq 0x57680
movl %eax, 0x10(%rsp)
testq %r15, %r15
je 0x87bde
movq 0x6d8(%r15), %rdi
callq 0x55530
testl %eax, %eax
setle %al
xorb $0x1, %r13b
orb %al, %r13b
jne 0x87bde
xorl %r12d, %r12d
movq 0x6d8(%r15), %rdi
callq 0x55530
cmpl %eax, %r12d
jge 0x87e5e
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x48(%rax)
movq %rax, %r13
movl 0x5c(%rsp), %eax
movl 0x54(%rsp), %ecx
addl 0x10(%rsp), %ecx
subl %ecx, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0x6cc22(%rip), %xmm1    # 0xf4398
mulsd %xmm1, %xmm0
callq 0x56cb0
movq %rax, %rbp
movq %r14, %rdi
callq 0x58930
movsd 0x6cbfe(%rip), %xmm0    # 0xf4390
testw %ax, %ax
js 0x8779f
movsd 0x6cbf9(%rip), %xmm0    # 0xf4398
cwtl
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
addsd %xmm0, %xmm1
cvttsd2si %xmm1, %rax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6cd31(%rip), %xmm0    # 0xf44f0
testl %r12d, %r12d
movsd %xmm0, 0x28(%rsp)
je 0x87804
movl $0x0, %ebx
movq 0x8(%rsp), %rax
cmpq 0x190(%rax), %r15
je 0x87806
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
movq %rax, %rbx
movq 0x8(%rsp), %rax
movq 0x190(%rax), %rdi
movq (%rdi), %rax
callq *0x48(%rax)
subq %rax, %rbx
addq $0x2, %rbx
jmp 0x87806
xorl %ebx, %ebx
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, %r14
movq (%rsp), %rdi
callq 0x58930
movsd 0x6cb6b(%rip), %xmm0    # 0xf4390
testw %ax, %ax
js 0x87832
movsd 0x6cb66(%rip), %xmm0    # 0xf4398
movq %r13, %rcx
shrq $0x20, %rcx
movsd 0x28(%rsp), %xmm6
movapd %xmm6, %xmm1
xorpd %xmm5, %xmm5
cmpltsd %xmm5, %xmm1
movapd %xmm1, %xmm2
movsd 0x6cb38(%rip), %xmm4    # 0xf4390
andpd %xmm4, %xmm2
movsd 0x6cb34(%rip), %xmm3    # 0xf4398
andnpd %xmm3, %xmm1
orpd %xmm2, %xmm1
addsd %xmm6, %xmm1
cvttsd2si %xmm1, %rdx
addq %rdx, %r13
addl %ebp, %ecx
addl %edx, %ecx
addl $-0x2, %ecx
addl %ebx, %r13d
movq %r14, %rdx
cwtl
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
addsd %xmm0, %xmm1
cvttsd2si %xmm1, %rax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6cc4b(%rip), %xmm0    # 0xf44f0
movapd %xmm0, %xmm1
cmpltsd %xmm5, %xmm1
movapd %xmm1, %xmm2
andpd %xmm4, %xmm2
andnpd %xmm3, %xmm1
orpd %xmm2, %xmm1
addsd %xmm0, %xmm1
cvttsd2si %xmm1, %rax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
shrq $0x20, %rdx
addsd %xmm0, %xmm0
movapd %xmm0, %xmm1
cmpltsd %xmm5, %xmm1
movapd %xmm1, %xmm2
andpd %xmm4, %xmm2
andnpd %xmm3, %xmm1
orpd %xmm2, %xmm1
addsd %xmm0, %xmm1
cvttsd2si %xmm1, %rax
subl %eax, %r14d
movl %r13d, 0x18(%rsp)
movl %ecx, 0x1c(%rsp)
leal (%r14,%r13), %esi
decl %esi
movl %esi, 0x20(%rsp)
addl %ecx, %edx
subl %eax, %edx
movl %edx, 0x24(%rsp)
movq 0x6d8(%r15), %rdi
movl %r12d, %esi
callq 0x57a40
movl %eax, %ebx
movq (%rsp), %rdi
callq 0x58930
cwtl
imull %eax, %ebx
xorps %xmm0, %xmm0
cvtsi2sd %ebx, %xmm0
divsd 0x6cbad(%rip), %xmm0    # 0xf44f0
xorl %eax, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta %al
leaq 0x6ce39(%rip), %rcx     # 0xf4790
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
addl %eax, 0x18(%rsp)
xorl %eax, %eax
testl %r12d, %r12d
jne 0x879bb
movq 0x8(%rsp), %rcx
movq 0x190(%rcx), %rcx
testb $0x4, 0x30(%rcx)
je 0x879bb
movq (%rsp), %rdi
callq 0x58930
cwtl
shll $0x2, %eax
leal (%rax,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6cb53(%rip), %xmm0    # 0xf44f0
xorl %eax, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta %al
leaq 0x6cddf(%rip), %rcx     # 0xf4790
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
addl %eax, 0x18(%rsp)
movq 0x6d8(%r15), %rdi
callq 0x55530
leal 0x2(%r12), %ecx
cmpl %ecx, %eax
jge 0x879fb
movq 0x6d8(%r15), %rdi
movl %r12d, %esi
callq 0x56ba0
cmpl $0x20, %eax
movq (%rsp), %r14
jne 0x87b20
movl 0x20(%rsp), %eax
incl %eax
jmp 0x87b1c
movl 0x18(%rsp), %eax
movq %rax, 0x28(%rsp)
leal 0x1(%r12), %esi
movq 0x6d8(%r15), %rdi
callq 0x57a40
movl %eax, %ebx
movq (%rsp), %rdi
callq 0x58930
cwtl
imull %eax, %ebx
xorps %xmm1, %xmm1
cvtsi2sd %ebx, %xmm1
divsd 0x6cabd(%rip), %xmm1    # 0xf44f0
xorl %r13d, %r13d
xorpd %xmm0, %xmm0
movsd %xmm1, 0x68(%rsp)
ucomisd %xmm1, %xmm0
seta %bpl
movq 0x6d8(%r15), %rdi
movl %r12d, %esi
callq 0x57a40
movl %eax, %ebx
movq (%rsp), %rdi
callq 0x58930
cwtl
imull %eax, %ebx
xorps %xmm1, %xmm1
cvtsi2sd %ebx, %xmm1
divsd 0x6ca7b(%rip), %xmm1    # 0xf44f0
xorl %ebx, %ebx
xorpd %xmm0, %xmm0
movsd %xmm1, 0x48(%rsp)
ucomisd %xmm1, %xmm0
seta 0x60(%rsp)
testl %r12d, %r12d
jne 0x87aa5
movq 0x8(%rsp), %rax
movq 0x190(%rax), %rax
testb $0x4, 0x30(%rax)
jne 0x87b9c
xorl %r14d, %r14d
movq (%rsp), %rdi
callq 0x58930
movb %bpl, %r13b
leaq 0x6ccd5(%rip), %rsi     # 0xf4790
movsd 0x68(%rsp), %xmm0
addsd (%rsi,%r13,8), %xmm0
cvttsd2si %xmm0, %rcx
movb 0x60(%rsp), %dl
movb %dl, %bl
movsd 0x48(%rsp), %xmm0
addsd (%rsi,%rbx,8), %xmm0
cvttsd2si %xmm0, %rdx
addl 0x28(%rsp), %ecx
addl %edx, %r14d
cwtl
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6c9f7(%rip), %xmm0    # 0xf44f0
xorl %eax, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta %al
addsd (%rsi,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
leal (%r14,%rax,2), %eax
notl %eax
addl %ecx, %eax
movq (%rsp), %r14
movl %eax, 0x20(%rsp)
leaq 0x30(%rsp), %rdi
movq 0x8(%rsp), %rsi
movl %r12d, %edx
callq 0x58cd0
movq 0x6d8(%r15), %rdi
movl %r12d, %esi
callq 0x56ba0
cmpl $0x20, %eax
jne 0x87b6d
movl 0x18(%rsp), %ebx
movl 0x20(%rsp), %ebp
leaq 0x98(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x56730
notl %eax
addl %eax, %ebp
cmpl %ebp, %ebx
cmovgl %ebx, %ebp
movl %ebp, 0x18(%rsp)
movq %r14, %rdi
leaq 0x30(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x98(%rsp), %rcx
xorl %r8d, %r8d
callq 0x57b80
leaq 0x30(%rsp), %rdi
callq 0x59200
incl %r12d
jmp 0x87736
movq (%rsp), %rdi
callq 0x58930
cwtl
shll $0x2, %eax
leal (%rax,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6c935(%rip), %xmm0    # 0xf44f0
xorl %eax, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta %al
leaq 0x6cbc1(%rip), %rcx     # 0xf4790
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %r14
jmp 0x87aa8
movq %rbp, 0x68(%rsp)
movl 0x5c(%rsp), %eax
movl 0x10(%rsp), %ecx
addl 0x54(%rsp), %ecx
subl %ecx, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
mulsd 0x6c798(%rip), %xmm0    # 0xf4398
callq 0x56cb0
movq %rax, %r15
movl 0x50(%rsp), %r13d
movl 0x54(%rsp), %eax
movq %rax, 0x48(%rsp)
movl 0x58(%rsp), %ebx
movl 0x5c(%rsp), %eax
movq %rax, 0x10(%rsp)
movq %r14, %rdi
callq 0x58930
movl %eax, %ebp
movsd 0x6c75b(%rip), %xmm0    # 0xf4390
movsd %xmm0, 0x28(%rsp)
testw %ax, %ax
js 0x87c4e
movsd 0x6c750(%rip), %xmm0    # 0xf4398
movsd %xmm0, 0x28(%rsp)
movq 0x190(%r12), %rax
xorl %r12d, %r12d
testb $0x4, 0x30(%rax)
je 0x87c9b
movq %r14, %rdi
callq 0x58930
cwtl
shll $0x2, %eax
leal (%rax,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6c873(%rip), %xmm0    # 0xf44f0
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x6caff(%rip), %rcx     # 0xf4790
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %r12
movq %r14, %rdi
callq 0x58930
movl %eax, %r14d
movsd 0x6c6e2(%rip), %xmm0    # 0xf4390
movsd 0x6c6e2(%rip), %xmm1    # 0xf4398
testw %ax, %ax
js 0x87cbf
movapd %xmm1, %xmm0
movsd %xmm0, 0x60(%rsp)
movq 0x8(%rsp), %rax
movq 0x190(%rax), %rcx
xorl %eax, %eax
testb $0x4, 0x30(%rcx)
je 0x87d16
movq (%rsp), %rdi
callq 0x58930
cwtl
shll $0x2, %eax
leal (%rax,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6c7f8(%rip), %xmm0    # 0xf44f0
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x6ca84(%rip), %rcx     # 0xf4790
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
movswl %bp, %ecx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
movsd 0x28(%rsp), %xmm1
addsd %xmm0, %xmm1
cvttsd2si %xmm1, %rcx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
divsd 0x6c7b2(%rip), %xmm0    # 0xf44f0
xorpd %xmm1, %xmm1
movapd %xmm0, %xmm2
cmpltsd %xmm1, %xmm2
movsd 0x6c63d(%rip), %xmm1    # 0xf4390
andpd %xmm2, %xmm1
movsd 0x6c639(%rip), %xmm3    # 0xf4398
andnpd %xmm3, %xmm2
orpd %xmm1, %xmm2
addsd %xmm0, %xmm2
cvttsd2si %xmm2, %rsi
movq 0x48(%rsp), %rcx
leal (%rcx,%r15), %edx
addl $-0x2, %edx
movq 0x10(%rsp), %rcx
addl %r15d, %ecx
addl $-0x2, %ecx
addl %esi, %edx
movswl %r14w, %edi
addl %esi, %r13d
addl %esi, %ecx
xorps %xmm0, %xmm0
cvtsi2sd %edi, %xmm0
movsd 0x60(%rsp), %xmm1
addsd %xmm0, %xmm1
shlq $0x20, %rdx
cvttsd2si %xmm1, %rdi
xorps %xmm0, %xmm0
cvtsi2sd %edi, %xmm0
divsd 0x6c735(%rip), %xmm0    # 0xf44f0
xorpd %xmm1, %xmm1
movapd %xmm0, %xmm2
cmpltsd %xmm1, %xmm2
movapd %xmm2, %xmm3
movsd 0x6c5bc(%rip), %xmm4    # 0xf4390
andpd %xmm4, %xmm3
movsd 0x6c5b8(%rip), %xmm5    # 0xf4398
andnpd %xmm5, %xmm2
orpd %xmm3, %xmm2
addsd %xmm0, %xmm2
cvttsd2si %xmm2, %rdi
addl %r12d, %r13d
xorps %xmm0, %xmm0
cvtsi2sd %edi, %xmm0
addsd %xmm0, %xmm0
movapd %xmm0, %xmm2
cmpltsd %xmm1, %xmm2
andpd %xmm2, %xmm4
andnpd %xmm5, %xmm2
orpd %xmm4, %xmm2
addsd %xmm0, %xmm2
cvttsd2si %xmm2, %rdi
subl %edi, %ecx
shlq $0x20, %rcx
addl %esi, %ebx
addl %r12d, %ebx
addl %edi, %eax
subl %eax, %ebx
movl %r13d, %eax
orq %rdx, %rax
orq %rcx, %rbx
leaq 0x30(%rsp), %rdx
movq %rax, (%rdx)
movq %rbx, 0x8(%rdx)
leaq 0x98(%rsp), %rcx
movq (%rsp), %rdi
movq 0x68(%rsp), %rsi
xorl %r8d, %r8d
callq 0x57b80
movq (%rsp), %r14
xorl %ebx, %ebx
movq 0x8(%rsp), %rdi
xorl %esi, %esi
callq 0x567d0
movq %r14, %rdi
callq 0x58780
leaq 0x98(%rsp), %rdi
callq 0x56720
movl %ebx, %eax
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ee1
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
jmp 0x87ef0
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x59200
jmp 0x87ef3
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x56720
movq %rbx, %rdi
callq 0x57090