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

	Surface	*surface = GetDrawSurface();
	Rect	 frame	 = Rect(GetRealPosition(), GetRealSize());
	Rect	 bmpRect = Rect(GetRealPosition() + Point(2, 2) * surface->GetSurfaceDPI() / 96.0 - Point(0, 1), Size(12, 12) * surface->GetSurfaceDPI() / 96.0);

	surface->StartPaint(frame);

	switch (message)
	{
		case SP_PAINT:
		case SP_MOUSEOUT:
			if (text == NIL && bitmap == NIL)
			{
				Point	 p1 = Point(frame.left - 1, frame.top + 1);
				Point	 p2 = Point(frame.right + 1, frame.top + 1);

				surface->Bar(p1, p2, OR_HORZ);
			}
			else if (text != NIL || bitmap != NIL)
			{
				Rect	 textRect = frame + Point(18 * surface->GetSurfaceDPI() / 96.0, Math::Ceil(Float(frame.GetHeight() - scaledTextSize.cy) / 2) - 2) - Size(4 + 18 * surface->GetSurfaceDPI() / 96.0, 0);
				Font	 nFont	  = font;

				if (!IsActive()) nFont.SetColor(Setup::InactiveTextColor);

				surface->Box(frame, Setup::BackgroundColor, Rect::Filled);
				surface->SetText(text, textRect, nFont);

				if (bitmap != NIL && bVar == NIL && iVar == NIL)
				{
					if (IsActive())	surface->BlitFromBitmap(bitmap, Rect(Point(0, 0), bitmap.GetSize()), bmpRect);
					else		surface->BlitFromBitmap(graymap, Rect(Point(0, 0), graymap.GetSize()), bmpRect);
				}

				if (shortcut != NIL)
				{
					textRect.left = textRect.right - Math::Round(shortcutOffset * surface->GetSurfaceDPI() / 96.0);

					surface->SetText(shortcut->ToString(), textRect, nFont);
				}

				if (popup != NIL)
				{
					Int	 size = Math::Round(3 * surface->GetSurfaceDPI() / 96.0);

					Point	 lineStart = Point(frame.right - 4 - size, frame.top + 1 + Math::Round(4 * surface->GetSurfaceDPI() / 96.0));
					Point	 lineEnd   = Point(frame.right - 4 - size, frame.top + 1 + Math::Round(4 * surface->GetSurfaceDPI() / 96.0) + size * 2 - 1);

					for (Int i = 0; i < size; i++) surface->Line(lineStart + Point(i, i), lineEnd + Point(i, -i), Setup::TextColor);
				}
			}

			break;
		case SP_MOUSEIN:
			if (text != NIL || bitmap != NIL)
			{
				Rect	 textRect = frame + Point(18 * surface->GetSurfaceDPI() / 96.0, Math::Ceil(Float(frame.GetHeight() - scaledTextSize.cy) / 2) - 2) - Size(4 + 18 * surface->GetSurfaceDPI() / 96.0, 0);
				Font	 nFont	  = font;

				nFont.SetColor(Setup::GradientTextColor);

				surface->Gradient(frame, Setup::GradientStartColor, Setup::GradientEndColor, OR_HORZ);
				surface->SetText(text, textRect, nFont);

				if (bitmap != NIL && bVar == NIL && iVar == NIL)
				{
					surface->BlitFromBitmap(bitmap, Rect(Point(0, 0), bitmap.GetSize()), bmpRect);
				}

				if (shortcut != NIL)
				{
					textRect.left = textRect.right - Math::Round(shortcutOffset * surface->GetSurfaceDPI() / 96.0);

					surface->SetText(shortcut->ToString(), textRect, nFont);
				}

				if (popup != NIL)
				{
					Int	 size = Math::Round(3 * surface->GetSurfaceDPI() / 96.0);

					Point	 lineStart = Point(frame.right - 4 - size, frame.top + 1 + Math::Round(4 * surface->GetSurfaceDPI() / 96.0));
					Point	 lineEnd   = Point(frame.right - 4 - size, frame.top + 1 + Math::Round(4 * surface->GetSurfaceDPI() / 96.0) + size * 2 - 1);

					for (Int i = 0; i < size; i++) surface->Line(lineStart + Point(i, i), lineEnd + Point(i, -i), Setup::GradientTextColor);
				}
			}

			break;
	}

	surface->EndPaint();

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4d0, %rsp            # imm = 0x4D0
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xc26b4
leaq -0x28(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x5a9c0
movq -0x2d8(%rbp), %rdi
callq 0x59680
movl %eax, -0x2cc(%rbp)
jmp 0xc2683
movl -0x2cc(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xc374b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xc3757
movq -0x2c8(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xc271d
leaq -0x48(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x5ca80
movq -0x2e8(%rbp), %rdi
callq 0x59680
movl %eax, -0x2dc(%rbp)
jmp 0xc26ec
movl -0x2dc(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xc374b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xc3757
movq -0x2c8(%rbp), %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
movq -0x2c8(%rbp), %rdi
movq %rax, -0x50(%rbp)
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
movq -0x2c8(%rbp), %rdi
movq %rax, -0x68(%rbp)
movq (%rdi), %rax
movq 0x50(%rax), %rax
callq *%rax
movq %rax, -0x70(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x2f8(%rbp)
leaq -0x68(%rbp), %rsi
leaq -0x70(%rbp), %rdx
callq 0x59ff0
movq -0x2c8(%rbp), %rdi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
movq %rax, -0x98(%rbp)
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x318(%rbp)
movl $0x2, %edx
movl %edx, %esi
callq 0x5c2c0
movq -0x50(%rbp), %rdi
callq 0x5d470
movq -0x318(%rbp), %rdi
cwtl
cvtsi2sd %eax, %xmm0
callq 0x5a300
movq %rax, -0xa8(%rbp)
leaq -0xa8(%rbp), %rdi
movsd 0xc4cee(%rip), %xmm0    # 0x1874c0
movsd %xmm0, -0x300(%rbp)
callq 0x5cd70
movq %rax, -0xa0(%rbp)
leaq -0x98(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x5ca20
movq %rax, -0x90(%rbp)
leaq -0xb8(%rbp), %rdi
movq %rdi, -0x310(%rbp)
xorl %esi, %esi
movl $0x1, %edx
callq 0x5c2c0
movq -0x310(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x5cbd0
movq %rax, -0x88(%rbp)
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x308(%rbp)
movl $0xc, %edx
movl %edx, %esi
callq 0x59260
movq -0x50(%rbp), %rdi
callq 0x5d470
movq -0x308(%rbp), %rdi
cwtl
cvtsi2sd %eax, %xmm0
callq 0x5a7b0
movsd -0x300(%rbp), %xmm0
movq %rax, -0xc8(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x5c6b0
movq %rax, -0xc0(%rbp)
leaq -0x80(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
callq 0x59ff0
movq -0x2f8(%rbp), %rsi
movq -0x50(%rbp), %rdi
callq 0x591b0
movl -0x14(%rbp), %eax
movl %eax, -0x2ec(%rbp)
testl %eax, %eax
je 0xc28e2
jmp 0xc28c0
movl -0x2ec(%rbp), %eax
subl $0x2, %eax
je 0xc30b3
jmp 0xc28d1
movl -0x2ec(%rbp), %eax
subl $0x3, %eax
jne 0xc36ea
jmp 0xc28e2
movq -0x2c8(%rbp), %rdi
addq $0xf0, %rdi
xorl %esi, %esi
callq 0x59320
testb $0x1, %al
jne 0xc28fd
jmp 0xc2969
movq -0x2c8(%rbp), %rdi
addq $0x5c0, %rdi            # imm = 0x5C0
xorl %esi, %esi
callq 0x5c730
testb $0x1, %al
jne 0xc2918
jmp 0xc2969
movl -0x60(%rbp), %esi
subl $0x1, %esi
movl -0x5c(%rbp), %edx
addl $0x1, %edx
leaq -0xd8(%rbp), %rdi
callq 0x5c2c0
movl -0x58(%rbp), %esi
addl $0x1, %esi
movl -0x5c(%rbp), %edx
addl $0x1, %edx
leaq -0xe0(%rbp), %rdi
callq 0x5c2c0
movq -0x50(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
movl $0x1, %ecx
callq 0x5dc90
jmp 0xc30ae
movq -0x2c8(%rbp), %rdi
addq $0xf0, %rdi
xorl %esi, %esi
callq 0x5b110
testb $0x1, %al
jne 0xc29a0
movq -0x2c8(%rbp), %rdi
addq $0x5c0, %rdi            # imm = 0x5C0
xorl %esi, %esi
callq 0x5a830
testb $0x1, %al
jne 0xc29a0
jmp 0xc30ac
movq -0x50(%rbp), %rdi
callq 0x5d470
movswl %ax, %ecx
addl %ecx, %ecx
movl %ecx, %eax
leal (%rax,%rax,8), %eax
cvtsi2sd %eax, %xmm0
movsd 0xc4b01(%rip), %xmm1    # 0x1874c0
movsd %xmm1, -0x330(%rbp)
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x344(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq 0x591a0
movq -0x2c8(%rbp), %rcx
movl 0x18c(%rcx), %ecx
subl %ecx, %eax
cvtsi2sd %eax, %xmm0
movsd 0xc4988(%rip), %xmm1    # 0x187388
mulsd %xmm1, %xmm0
callq 0x5b240
movl -0x344(%rbp), %esi
movl %eax, %edx
addl $-0x2, %edx
leaq -0x108(%rbp), %rdi
movq %rdi, -0x338(%rbp)
callq 0x5c2c0
movq -0x340(%rbp), %rdi
movq -0x338(%rbp), %rsi
callq 0x5be80
movq %rax, -0x100(%rbp)
movq %rdx, -0xf8(%rbp)
movq -0x50(%rbp), %rdi
callq 0x5d470
movsd -0x330(%rbp), %xmm1
movswl %ax, %ecx
addl %ecx, %ecx
movl %ecx, %eax
leal (%rax,%rax,8), %eax
cvtsi2sd %eax, %xmm0
divsd %xmm1, %xmm0
movsd 0xc48fd(%rip), %xmm1    # 0x187370
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %esi
leaq -0x110(%rbp), %rdi
movq %rdi, -0x328(%rbp)
xorl %edx, %edx
callq 0x59260
movq -0x328(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0x5c040
movq -0x2c8(%rbp), %rsi
movq %rax, -0xf0(%rbp)
movq %rdx, -0xe8(%rbp)
addq $0x140, %rsi            # imm = 0x140
leaq -0x150(%rbp), %rdi
callq 0x59da0
movq -0x2c8(%rbp), %rdi
movq (%rdi), %rax
movq 0x98(%rax), %rax
callq *%rax
movb %al, -0x319(%rbp)
jmp 0xc2ae6
movb -0x319(%rbp), %al
testb $0x1, %al
jne 0xc2b1a
jmp 0xc2af2
movq 0x145e37(%rip), %rsi    # 0x208930
leaq -0x150(%rbp), %rdi
callq 0x5d110
jmp 0xc2b07
jmp 0xc2b1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xc309b
movq -0x50(%rbp), %rax
movq %rax, -0x350(%rbp)
movq 0x146474(%rip), %rax    # 0x208fa0
movl (%rax), %eax
movl %eax, -0x348(%rbp)
leaq -0x158(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x59260
jmp 0xc2b46
movl -0x348(%rbp), %ecx
movq -0x350(%rbp), %rdi
movq 0x14594e(%rip), %rdx    # 0x2084a8
leaq -0x60(%rbp), %rsi
leaq -0x158(%rbp), %r8
callq 0x5c110
jmp 0xc2b6c
movq -0x2c8(%rbp), %rsi
movq -0x50(%rbp), %rdi
addq $0xf0, %rsi
leaq -0xf0(%rbp), %rdx
leaq -0x150(%rbp), %rcx
xorl %r8d, %r8d
callq 0x5c3f0
jmp 0xc2b96
movq -0x2c8(%rbp), %rdi
addq $0x5c0, %rdi            # imm = 0x5C0
xorl %esi, %esi
callq 0x5a830
movb %al, -0x351(%rbp)
jmp 0xc2bb3
movb -0x351(%rbp), %al
testb $0x1, %al
jne 0xc2bc2
jmp 0xc2d31
movq -0x2c8(%rbp), %rax
cmpq $0x0, 0x5d8(%rax)
jne 0xc2d31
movq -0x2c8(%rbp), %rax
cmpq $0x0, 0x5e0(%rax)
jne 0xc2d31
movq -0x2c8(%rbp), %rdi
movq (%rdi), %rax
movq 0x98(%rax), %rax
callq *%rax
movb %al, -0x352(%rbp)
jmp 0xc2c07
movb -0x352(%rbp), %al
testb $0x1, %al
jne 0xc2c16
jmp 0xc2ca4
movq -0x2c8(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rcx, -0x368(%rbp)
addq $0x5c0, %rax            # imm = 0x5C0
movq %rax, -0x360(%rbp)
leaq -0x170(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x5c2c0
jmp 0xc2c47
movq -0x2c8(%rbp), %rdi
addq $0x5c0, %rdi            # imm = 0x5C0
callq 0x5ce60
movq %rax, -0x370(%rbp)
jmp 0xc2c63
movq -0x370(%rbp), %rdx
leaq -0x168(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x59ff0
jmp 0xc2c7f
movq -0x360(%rbp), %rsi
movq -0x368(%rbp), %rdi
leaq -0x168(%rbp), %rdx
leaq -0x80(%rbp), %rcx
callq 0x59dd0
jmp 0xc2c9f
jmp 0xc2d2f
movq -0x2c8(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rcx, -0x380(%rbp)
addq $0x5c8, %rax            # imm = 0x5C8
movq %rax, -0x378(%rbp)
leaq -0x188(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x5c2c0
jmp 0xc2cd5
movq -0x2c8(%rbp), %rdi
addq $0x5c8, %rdi            # imm = 0x5C8
callq 0x5ce60
movq %rax, -0x388(%rbp)
jmp 0xc2cf1
movq -0x388(%rbp), %rdx
leaq -0x180(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x59ff0
jmp 0xc2d0d
movq -0x378(%rbp), %rsi
movq -0x380(%rbp), %rdi
leaq -0x180(%rbp), %rdx
leaq -0x80(%rbp), %rcx
callq 0x59dd0
jmp 0xc2d2d
jmp 0xc2d2f
jmp 0xc2d31
movq -0x2c8(%rbp), %rax
cmpq $0x0, 0x5d0(%rax)
je 0xc2e3c
movq -0x2c8(%rbp), %rax
movslq -0xe8(%rbp), %rcx
movq %rcx, -0x398(%rbp)
movl 0x610(%rax), %eax
movl %eax, -0x390(%rbp)
movq -0x50(%rbp), %rdi
callq 0x5d470
movw %ax, -0x38a(%rbp)
jmp 0xc2d79
movl -0x390(%rbp), %eax
movw -0x38a(%rbp), %cx
movswl %cx, %ecx
imull %ecx, %eax
cvtsi2sd %eax, %xmm0
movsd 0xc4728(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x3a0(%rbp)
jmp 0xc2daa
movq -0x2c8(%rbp), %rax
movq -0x398(%rbp), %rcx
movq -0x3a0(%rbp), %rdx
subl %edx, %ecx
movl %ecx, -0xf0(%rbp)
movq -0x50(%rbp), %rcx
movq %rcx, -0x3a8(%rbp)
movq 0x5d0(%rax), %rsi
movq (%rsi), %rax
movq 0x20(%rax), %rax
leaq -0x1a0(%rbp), %rdi
callq *%rax
jmp 0xc2deb
movq -0x3a8(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
leaq -0x150(%rbp), %rcx
xorl %r8d, %r8d
callq 0x5c3f0
jmp 0xc2e11
leaq -0x1a0(%rbp), %rdi
callq 0x5df00
jmp 0xc2e3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x5df00
jmp 0xc309b
movq -0x2c8(%rbp), %rax
cmpq $0x0, 0x5b8(%rax)
je 0xc308d
movq -0x50(%rbp), %rdi
callq 0x5d470
movw %ax, -0x3aa(%rbp)
jmp 0xc2e63
movw -0x3aa(%rbp), %ax
movswl %ax, %ecx
movl %ecx, %eax
leal (%rax,%rax,2), %eax
cvtsi2sd %eax, %xmm0
movsd 0xc4642(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x3b8(%rbp)
jmp 0xc2e90
movq -0x3b8(%rbp), %rax
movl %eax, -0x1a4(%rbp)
movl -0x5c(%rbp), %eax
movl -0x58(%rbp), %ecx
movl -0x1a4(%rbp), %edx
subl %edx, %ecx
addl $-0x4, %ecx
movl %ecx, -0x3c4(%rbp)
incl %eax
movl %eax, -0x3c0(%rbp)
cltq
movq -0x50(%rbp), %rdi
callq 0x5d470
movw %ax, -0x3ba(%rbp)
jmp 0xc2ed0
movw -0x3ba(%rbp), %ax
cwtl
shll $0x2, %eax
cvtsi2sd %eax, %xmm0
movsd 0xc45d9(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x3d0(%rbp)
jmp 0xc2ef9
movl -0x3c4(%rbp), %esi
movl -0x3c0(%rbp), %edx
movq -0x3d0(%rbp), %rax
addl %eax, %edx
leaq -0x1ac(%rbp), %rdi
callq 0x5c2c0
jmp 0xc2f1c
movl -0x5c(%rbp), %eax
movl -0x58(%rbp), %ecx
movl -0x1a4(%rbp), %edx
subl %edx, %ecx
addl $-0x4, %ecx
movl %ecx, -0x3dc(%rbp)
incl %eax
movl %eax, -0x3d8(%rbp)
cltq
movq -0x50(%rbp), %rdi
callq 0x5d470
movw %ax, -0x3d2(%rbp)
jmp 0xc2f4f
movw -0x3d2(%rbp), %ax
cwtl
shll $0x2, %eax
cvtsi2sd %eax, %xmm0
movsd 0xc455a(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x3e8(%rbp)
jmp 0xc2f78
movl -0x3dc(%rbp), %esi
movl -0x3d8(%rbp), %edx
movq -0x3e8(%rbp), %rax
addl %eax, %edx
movl -0x1a4(%rbp), %eax
movl %eax, %ecx
movl %edx, %eax
leal -0x1(%rax,%rcx,2), %edx
leaq -0x1b4(%rbp), %rdi
callq 0x5c2c0
jmp 0xc2fa9
movl $0x0, -0x1b8(%rbp)
movl -0x1b8(%rbp), %eax
cmpl -0x1a4(%rbp), %eax
jge 0xc308b
movq -0x50(%rbp), %rax
movq %rax, -0x3f0(%rbp)
movl -0x1b8(%rbp), %edx
leaq -0x1c8(%rbp), %rdi
movl %edx, %esi
callq 0x5c2c0
jmp 0xc2fe6
leaq -0x1ac(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x5ca20
movq %rax, -0x3f8(%rbp)
jmp 0xc3002
movq -0x3f8(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movl -0x1b8(%rbp), %esi
movl %esi, %edx
negl %edx
leaq -0x1d8(%rbp), %rdi
callq 0x5c2c0
jmp 0xc3028
leaq -0x1b4(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x5ca20
movq %rax, -0x400(%rbp)
jmp 0xc3044
movq -0x3f0(%rbp), %rdi
movq -0x400(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq 0x145968(%rip), %rcx    # 0x2089c8
leaq -0x1c0(%rbp), %rsi
leaq -0x1d0(%rbp), %rdx
callq 0x5cce0
jmp 0xc3075
jmp 0xc3077
movl -0x1b8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1b8(%rbp)
jmp 0xc2fb3
jmp 0xc308d
leaq -0x150(%rbp), %rdi
callq 0x5abf0
jmp 0xc30ac
leaq -0x150(%rbp), %rdi
callq 0x5abf0
jmp 0xc3757
jmp 0xc30ae
jmp 0xc36ea
movq -0x2c8(%rbp), %rdi
addq $0xf0, %rdi
xorl %esi, %esi
callq 0x5b110
testb $0x1, %al
jne 0xc30ea
movq -0x2c8(%rbp), %rdi
addq $0x5c0, %rdi            # imm = 0x5C0
xorl %esi, %esi
callq 0x5a830
testb $0x1, %al
jne 0xc30ea
jmp 0xc36e8
movq -0x50(%rbp), %rdi
callq 0x5d470
movswl %ax, %ecx
addl %ecx, %ecx
movl %ecx, %eax
leal (%rax,%rax,8), %eax
cvtsi2sd %eax, %xmm0
movsd 0xc43b7(%rip), %xmm1    # 0x1874c0
movsd %xmm1, -0x418(%rbp)
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x42c(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x428(%rbp)
callq 0x591a0
movq -0x2c8(%rbp), %rcx
movl 0x18c(%rcx), %ecx
subl %ecx, %eax
cvtsi2sd %eax, %xmm0
movsd 0xc423e(%rip), %xmm1    # 0x187388
mulsd %xmm1, %xmm0
callq 0x5b240
movl -0x42c(%rbp), %esi
movl %eax, %edx
addl $-0x2, %edx
leaq -0x200(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x5c2c0
movq -0x428(%rbp), %rdi
movq -0x420(%rbp), %rsi
callq 0x5be80
movq %rax, -0x1f8(%rbp)
movq %rdx, -0x1f0(%rbp)
movq -0x50(%rbp), %rdi
callq 0x5d470
movsd -0x418(%rbp), %xmm1
movswl %ax, %ecx
addl %ecx, %ecx
movl %ecx, %eax
leal (%rax,%rax,8), %eax
cvtsi2sd %eax, %xmm0
divsd %xmm1, %xmm0
movsd 0xc41b3(%rip), %xmm1    # 0x187370
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %esi
leaq -0x208(%rbp), %rdi
movq %rdi, -0x410(%rbp)
xorl %edx, %edx
callq 0x59260
movq -0x410(%rbp), %rsi
leaq -0x1f8(%rbp), %rdi
callq 0x5c040
movq -0x2c8(%rbp), %rsi
movq %rax, -0x1e8(%rbp)
movq %rdx, -0x1e0(%rbp)
addq $0x140, %rsi            # imm = 0x140
leaq -0x248(%rbp), %rdi
movq %rdi, -0x408(%rbp)
callq 0x59da0
movq -0x408(%rbp), %rdi
movq 0x1458ee(%rip), %rsi    # 0x208b18
callq 0x5d110
jmp 0xc3231
movq -0x50(%rbp), %rdi
movq 0x145d7c(%rip), %rdx    # 0x208fb8
movq 0x145cd5(%rip), %rcx    # 0x208f18
leaq -0x60(%rbp), %rsi
movl $0x1, %r8d
callq 0x5d230
jmp 0xc3254
movq -0x2c8(%rbp), %rsi
movq -0x50(%rbp), %rdi
addq $0xf0, %rsi
leaq -0x1e8(%rbp), %rdx
leaq -0x248(%rbp), %rcx
xorl %r8d, %r8d
callq 0x5c3f0
jmp 0xc327e
movq -0x2c8(%rbp), %rdi
addq $0x5c0, %rdi            # imm = 0x5C0
xorl %esi, %esi
callq 0x5a830
movb %al, -0x42d(%rbp)
jmp 0xc329b
movb -0x42d(%rbp), %al
testb $0x1, %al
jne 0xc32aa
jmp 0xc3370
movq -0x2c8(%rbp), %rax
cmpq $0x0, 0x5d8(%rax)
jne 0xc3370
movq -0x2c8(%rbp), %rax
cmpq $0x0, 0x5e0(%rax)
jne 0xc3370
movq -0x2c8(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rcx, -0x440(%rbp)
addq $0x5c0, %rax            # imm = 0x5C0
movq %rax, -0x438(%rbp)
leaq -0x260(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x5c2c0
jmp 0xc3305
movq -0x2c8(%rbp), %rdi
addq $0x5c0, %rdi            # imm = 0x5C0
callq 0x5ce60
movq %rax, -0x448(%rbp)
jmp 0xc3321
movq -0x448(%rbp), %rdx
leaq -0x258(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x59ff0
jmp 0xc333d
movq -0x438(%rbp), %rsi
movq -0x440(%rbp), %rdi
leaq -0x258(%rbp), %rdx
leaq -0x80(%rbp), %rcx
callq 0x59dd0
jmp 0xc335d
jmp 0xc3370
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xc36da
movq -0x2c8(%rbp), %rax
cmpq $0x0, 0x5d0(%rax)
je 0xc347b
movq -0x2c8(%rbp), %rax
movslq -0x1e0(%rbp), %rcx
movq %rcx, -0x458(%rbp)
movl 0x610(%rax), %eax
movl %eax, -0x450(%rbp)
movq -0x50(%rbp), %rdi
callq 0x5d470
movw %ax, -0x44a(%rbp)
jmp 0xc33b8
movl -0x450(%rbp), %eax
movw -0x44a(%rbp), %cx
movswl %cx, %ecx
imull %ecx, %eax
cvtsi2sd %eax, %xmm0
movsd 0xc40e9(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x460(%rbp)
jmp 0xc33e9
movq -0x2c8(%rbp), %rax
movq -0x458(%rbp), %rcx
movq -0x460(%rbp), %rdx
subl %edx, %ecx
movl %ecx, -0x1e8(%rbp)
movq -0x50(%rbp), %rcx
movq %rcx, -0x468(%rbp)
movq 0x5d0(%rax), %rsi
movq (%rsi), %rax
movq 0x20(%rax), %rax
leaq -0x278(%rbp), %rdi
callq *%rax
jmp 0xc342a
movq -0x468(%rbp), %rdi
leaq -0x278(%rbp), %rsi
leaq -0x1e8(%rbp), %rdx
leaq -0x248(%rbp), %rcx
xorl %r8d, %r8d
callq 0x5c3f0
jmp 0xc3450
leaq -0x278(%rbp), %rdi
callq 0x5df00
jmp 0xc347b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x5df00
jmp 0xc36da
movq -0x2c8(%rbp), %rax
cmpq $0x0, 0x5b8(%rax)
je 0xc36cc
movq -0x50(%rbp), %rdi
callq 0x5d470
movw %ax, -0x46a(%rbp)
jmp 0xc34a2
movw -0x46a(%rbp), %ax
movswl %ax, %ecx
movl %ecx, %eax
leal (%rax,%rax,2), %eax
cvtsi2sd %eax, %xmm0
movsd 0xc4003(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x478(%rbp)
jmp 0xc34cf
movq -0x478(%rbp), %rax
movl %eax, -0x27c(%rbp)
movl -0x5c(%rbp), %eax
movl -0x58(%rbp), %ecx
movl -0x27c(%rbp), %edx
subl %edx, %ecx
addl $-0x4, %ecx
movl %ecx, -0x484(%rbp)
incl %eax
movl %eax, -0x480(%rbp)
cltq
movq -0x50(%rbp), %rdi
callq 0x5d470
movw %ax, -0x47a(%rbp)
jmp 0xc350f
movw -0x47a(%rbp), %ax
cwtl
shll $0x2, %eax
cvtsi2sd %eax, %xmm0
movsd 0xc3f9a(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x490(%rbp)
jmp 0xc3538
movl -0x484(%rbp), %esi
movl -0x480(%rbp), %edx
movq -0x490(%rbp), %rax
addl %eax, %edx
leaq -0x284(%rbp), %rdi
callq 0x5c2c0
jmp 0xc355b
movl -0x5c(%rbp), %eax
movl -0x58(%rbp), %ecx
movl -0x27c(%rbp), %edx
subl %edx, %ecx
addl $-0x4, %ecx
movl %ecx, -0x49c(%rbp)
incl %eax
movl %eax, -0x498(%rbp)
cltq
movq -0x50(%rbp), %rdi
callq 0x5d470
movw %ax, -0x492(%rbp)
jmp 0xc358e
movw -0x492(%rbp), %ax
cwtl
shll $0x2, %eax
cvtsi2sd %eax, %xmm0
movsd 0xc3f1b(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x4a8(%rbp)
jmp 0xc35b7
movl -0x49c(%rbp), %esi
movl -0x498(%rbp), %edx
movq -0x4a8(%rbp), %rax
addl %eax, %edx
movl -0x27c(%rbp), %eax
movl %eax, %ecx
movl %edx, %eax
leal -0x1(%rax,%rcx,2), %edx
leaq -0x28c(%rbp), %rdi
callq 0x5c2c0
jmp 0xc35e8
movl $0x0, -0x290(%rbp)
movl -0x290(%rbp), %eax
cmpl -0x27c(%rbp), %eax
jge 0xc36ca
movq -0x50(%rbp), %rax
movq %rax, -0x4b0(%rbp)
movl -0x290(%rbp), %edx
leaq -0x2a0(%rbp), %rdi
movl %edx, %esi
callq 0x5c2c0
jmp 0xc3625
leaq -0x284(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x5ca20
movq %rax, -0x4b8(%rbp)
jmp 0xc3641
movq -0x4b8(%rbp), %rax
movq %rax, -0x298(%rbp)
movl -0x290(%rbp), %esi
movl %esi, %edx
negl %edx
leaq -0x2b0(%rbp), %rdi
callq 0x5c2c0
jmp 0xc3667
leaq -0x28c(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x5ca20
movq %rax, -0x4c0(%rbp)
jmp 0xc3683
movq -0x4b0(%rbp), %rdi
movq -0x4c0(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq 0x145479(%rip), %rcx    # 0x208b18
leaq -0x298(%rbp), %rsi
leaq -0x2a8(%rbp), %rdx
callq 0x5cce0
jmp 0xc36b4
jmp 0xc36b6
movl -0x290(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x290(%rbp)
jmp 0xc35f2
jmp 0xc36cc
leaq -0x248(%rbp), %rdi
callq 0x5abf0
jmp 0xc36e8
leaq -0x248(%rbp), %rdi
callq 0x5abf0
jmp 0xc3757
jmp 0xc36ea
movq -0x50(%rbp), %rdi
callq 0x5d270
leaq -0x2c0(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0x5ca80
movq -0x4d0(%rbp), %rdi
callq 0x59680
movl %eax, -0x4c4(%rbp)
jmp 0xc371a
movl -0x4c4(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x5a410
jmp 0xc374b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x5a410
jmp 0xc3757
movl -0x4(%rbp), %eax
addq $0x4d0, %rsp            # imm = 0x4D0
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x5b6b0