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

	if (updateRect.GetWidth() == 0 || updateRect.GetHeight() == 0) return Success();

	EnterProtectedRegion();

	Surface	*surface = GetDrawSurface();

#ifdef __WIN32__
	static Bool	 flatStyle = Backends::BackendWin32::IsWindowsVersionAtLeast(VER_PLATFORM_WIN32_NT, 6, 2);
#else
	static Bool	 flatStyle = True;
#endif

	Size	 realSize = GetRealSize();
	Float	 fontSize = surface->GetSurfaceDPI() / 96.0;

	if (updateRect.left < frameWidth)		  updateRect.left   = frameWidth - 1;
	if (updateRect.top  < frameWidth)		  updateRect.top    = frameWidth - 1;
	if (realSize.cx - updateRect.right  < frameWidth) updateRect.right  = realSize.cx - frameWidth + 1;
	if (realSize.cy - updateRect.bottom < frameWidth) updateRect.bottom = realSize.cy - frameWidth + 1;

	Rect	 workArea = System::Screen::GetVirtualScreenMetrics();

	if (message == SP_UPDATE				 &&
	    GetPosition().x		   > workArea.left   - 2 &&
	    GetPosition().y		   > workArea.top    - 2 &&
	    GetPosition().x + GetSize().cx < workArea.right  + 2 &&
	    GetPosition().y + GetSize().cy < workArea.bottom + 2)
	{
		surface->PaintRect(updateRect);
	}
	else
	{
		RightToLeftModifier	 rightToLeft;

		rightToLeft.SetSurfaceSize(surface->GetSize());
		rightToLeft.SetRightToLeft(IsRightToLeft());

		surface->StartPaint(rightToLeft.TranslateRect(updateRect));

		surface->Box(updateRect, Setup::BackgroundColor, Rect::Filled);

		if (type != ToolWindow::classID)
		{
			Widget	*lastTopWidget = NIL;
			Int	 topoffset = frameWidth;
			Int	 positions = 0;

			for (Int i = 0; i < GetNOfObjects(); i++)
			{
				Widget	*object = GetNthObject(i);

				positions |= object->GetOrientation();

				if (object->GetOrientation() == OR_TOP)
				{
					lastTopWidget = object;

					if (object->subtype == WO_SEPARATOR)
					{
						topoffset += object->GetSize().cy + 3;

						Point	 p1 = Point(frameWidth * fontSize, topoffset * fontSize - 2);
						Point	 p2 = Point(realSize.cx - frameWidth, p1.y);

#ifndef __APPLE__
						if (!flatStyle && icon != NIL) p1.x += Math::Round(18 * fontSize);
#endif

						surface->Bar(p1, p2, OR_HORZ);
					}
					else
					{
						topoffset += object->GetSize().cy;
					}
				}
			}

			if (positions & OR_TOP)
			{
				Point	 p1 = Point(frameWidth, topoffset * fontSize - 2);
				Point	 p2 = Point(realSize.cx - frameWidth, p1.y);

				if (lastTopWidget != NIL && lastTopWidget->subtype == WO_NOSEPARATOR)
				{
					p1.y += Math::Round(3 * surface->GetSurfaceDPI() / 96.0);
					p2.y += Math::Round(3 * surface->GetSurfaceDPI() / 96.0);
				}

				surface->Bar(p1, p2, OR_HORZ);
				surface->Bar(p1 + Point(0, 2), p2 + Point(0, 2), OR_HORZ);
			}

			if (positions & OR_BOTTOM)
			{
				Point	 p1 = Point(frameWidth, realSize.cy - innerOffset.bottom * fontSize + 1);
				Point	 p2 = Point(realSize.cx - frameWidth, p1.y);

				surface->Bar(p1, p2, OR_HORZ);
				surface->Bar(p1 + Point(0, 2), p2 + Point(0, 2), OR_HORZ);
			}

			if (positions & OR_LEFT)
			{
				Point	 p1 = Point(innerOffset.left * fontSize - 3, innerOffset.top);
				Point	 p2 = Point(p1.x, realSize.cy - innerOffset.bottom - 1);

				surface->Bar(p1, p2, OR_VERT);
			}

			if (positions & OR_RIGHT)
			{
				Point	 p1 = Point(realSize.cx - innerOffset.right * fontSize + 1, innerOffset.top);
				Point	 p2 = Point(p1.x, realSize.cy - innerOffset.bottom - 1);

				surface->Bar(p1, p2, OR_VERT);
			}
		}

		for (Int i = 0; i < GetNOfObjects(); i++)
		{
			Widget	*widget = GetNthObject(i);

			if (widget->GetObjectType() != Layer::classID && widget->IsAffected(updateRect)) widget->Paint(SP_PAINT);
		}

		for (Int i = 0; i < GetNOfObjects(); i++)
		{
			Widget	*widget = GetNthObject(i);

			if (widget->GetObjectType() == Layer::classID && widget->IsAffected(updateRect)) widget->Paint(SP_PAINT);
		}

		onPaint.Emit();

		surface->EndPaint();
	}

	LeaveProtectedRegion();

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x300, %rsp            # imm = 0x300
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xd8b04
leaq -0x28(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x5a9c0
movq -0x1b0(%rbp), %rdi
callq 0x59680
movl %eax, -0x1a4(%rbp)
jmp 0xd8ad3
movl -0x1a4(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xd996d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xd9979
movq -0x1a0(%rbp), %rax
testb $0x1, 0x5ca(%rax)
jne 0xd8b69
leaq -0x48(%rbp), %rdi
movq %rdi, -0x1c0(%rbp)
callq 0x5ca80
movq -0x1c0(%rbp), %rdi
callq 0x59680
movl %eax, -0x1b4(%rbp)
jmp 0xd8b38
movl -0x1b4(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xd996d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xd9979
movq -0x1a0(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xd8bd2
leaq -0x58(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x5ca80
movq -0x1d0(%rbp), %rdi
callq 0x59680
movl %eax, -0x1c4(%rbp)
jmp 0xd8ba1
movl -0x1c4(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x5a410
jmp 0xd996d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x5a410
jmp 0xd9979
movq -0x1a0(%rbp), %rdi
addq $0x5ec, %rdi            # imm = 0x5EC
callq 0x5a5a0
cmpl $0x0, %eax
je 0xd8c02
movq -0x1a0(%rbp), %rdi
addq $0x5ec, %rdi            # imm = 0x5EC
callq 0x591a0
cmpl $0x0, %eax
jne 0xd8c57
leaq -0x68(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x5ca80
movq -0x1e0(%rbp), %rdi
callq 0x59680
movl %eax, -0x1d4(%rbp)
jmp 0xd8c26
movl -0x1d4(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x5a410
jmp 0xd996d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x5a410
jmp 0xd9979
movq -0x1a0(%rbp), %rdi
callq 0x5b7c0
movq -0x1a0(%rbp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq -0x1a0(%rbp), %rdi
movq %rax, -0x70(%rbp)
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rdi
callq 0x5d470
movq -0x1a0(%rbp), %rcx
cwtl
cvtsi2sd %eax, %xmm0
movsd 0xae81e(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
movl 0x5ec(%rcx), %eax
cmpl 0x5e8(%rcx), %eax
jge 0xd8ccf
movq -0x1a0(%rbp), %rax
movl 0x5e8(%rax), %ecx
subl $0x1, %ecx
movl %ecx, 0x5ec(%rax)
movq -0x1a0(%rbp), %rcx
movl 0x5f0(%rcx), %eax
cmpl 0x5e8(%rcx), %eax
jge 0xd8cfa
movq -0x1a0(%rbp), %rax
movl 0x5e8(%rax), %ecx
subl $0x1, %ecx
movl %ecx, 0x5f0(%rax)
movq -0x1a0(%rbp), %rcx
movl -0x78(%rbp), %eax
subl 0x5f4(%rcx), %eax
cmpl 0x5e8(%rcx), %eax
jge 0xd8d2b
movq -0x1a0(%rbp), %rax
movl -0x78(%rbp), %ecx
subl 0x5e8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x5f4(%rax)
movq -0x1a0(%rbp), %rcx
movl -0x74(%rbp), %eax
subl 0x5f8(%rcx), %eax
cmpl 0x5e8(%rcx), %eax
jge 0xd8d5c
movq -0x1a0(%rbp), %rax
movl -0x74(%rbp), %ecx
subl 0x5e8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x5f8(%rax)
callq 0x5a460
movq %rax, -0x90(%rbp)
movq %rdx, -0x88(%rbp)
cmpl $0x1, -0x14(%rbp)
jne 0xd8e46
movq -0x1a0(%rbp), %rdi
callq 0x5d740
movl (%rax), %eax
movl -0x90(%rbp), %ecx
subl $0x2, %ecx
cmpl %ecx, %eax
jle 0xd8e46
movq -0x1a0(%rbp), %rdi
callq 0x5d740
movl 0x4(%rax), %eax
movl -0x8c(%rbp), %ecx
subl $0x2, %ecx
cmpl %ecx, %eax
jle 0xd8e46
movq -0x1a0(%rbp), %rdi
callq 0x5d740
movq -0x1a0(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x1e4(%rbp)
callq 0x5bf70
movq %rax, %rcx
movl -0x1e4(%rbp), %eax
addl (%rcx), %eax
movl -0x88(%rbp), %ecx
addl $0x2, %ecx
cmpl %ecx, %eax
jge 0xd8e46
movq -0x1a0(%rbp), %rdi
callq 0x5d740
movq -0x1a0(%rbp), %rdi
movl 0x4(%rax), %eax
movl %eax, -0x1e8(%rbp)
callq 0x5bf70
movq %rax, %rcx
movl -0x1e8(%rbp), %eax
addl 0x4(%rcx), %eax
movl -0x84(%rbp), %ecx
addl $0x2, %ecx
cmpl %ecx, %eax
jge 0xd8e46
movq -0x1a0(%rbp), %rsi
movq -0x70(%rbp), %rdi
addq $0x5ec, %rsi            # imm = 0x5EC
callq 0x5d1c0
jmp 0xd9909
leaq -0x9c(%rbp), %rdi
callq 0x73290
movq -0x70(%rbp), %rdi
callq 0x5c280
movq %rax, -0x1f0(%rbp)
jmp 0xd8e64
movq -0x1f0(%rbp), %rsi
leaq -0x9c(%rbp), %rdi
callq 0x73430
jmp 0xd8e79
movq -0x1a0(%rbp), %rdi
movq (%rdi), %rax
movq 0x160(%rax), %rax
callq *%rax
movb %al, -0x1f1(%rbp)
jmp 0xd8e94
movb -0x1f1(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x9c(%rbp), %rdi
callq 0x73460
jmp 0xd8eae
movq -0x1a0(%rbp), %rsi
movq -0x70(%rbp), %rax
movq %rax, -0x210(%rbp)
addq $0x5ec, %rsi            # imm = 0x5EC
leaq -0x9c(%rbp), %rdi
callq 0x73390
movq %rdx, -0x208(%rbp)
movq %rax, -0x200(%rbp)
jmp 0xd8ee3
movq -0x210(%rbp), %rdi
movq -0x208(%rbp), %rax
movq -0x200(%rbp), %rcx
movq %rcx, -0xac(%rbp)
movq %rax, -0xa4(%rbp)
leaq -0xac(%rbp), %rsi
callq 0x591b0
jmp 0xd8f14
movq -0x1a0(%rbp), %rax
movq -0x70(%rbp), %rcx
movq %rcx, -0x228(%rbp)
addq $0x5ec, %rax            # imm = 0x5EC
movq %rax, -0x220(%rbp)
movq 0x130066(%rip), %rax    # 0x208fa0
movl (%rax), %eax
movl %eax, -0x214(%rbp)
leaq -0xb4(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x59260
jmp 0xd8f54
movl -0x214(%rbp), %ecx
movq -0x220(%rbp), %rsi
movq -0x228(%rbp), %rdi
movq 0x12f539(%rip), %rdx    # 0x2084a8
leaq -0xb4(%rbp), %r8
callq 0x5c110
jmp 0xd8f7d
movq -0x1a0(%rbp), %rdi
addq $0x20, %rdi
movq 0x12fd39(%rip), %rax    # 0x208cc8
movswl (%rax), %esi
callq 0x5da50
movb %al, -0x229(%rbp)
jmp 0xd8f9f
movb -0x229(%rbp), %al
testb $0x1, %al
jne 0xd8fae
jmp 0xd96cf
movq -0x1a0(%rbp), %rax
movq $0x0, -0xc0(%rbp)
movl 0x5e8(%rax), %eax
movl %eax, -0xc4(%rbp)
movl $0x0, -0xc8(%rbp)
movl $0x0, -0xcc(%rbp)
movq -0x1a0(%rbp), %rdi
movl -0xcc(%rbp), %eax
movl %eax, -0x234(%rbp)
callq 0x5b470
movl %eax, -0x230(%rbp)
jmp 0xd9000
movl -0x234(%rbp), %eax
movl -0x230(%rbp), %ecx
cmpl %ecx, %eax
jge 0xd9244
movq -0x1a0(%rbp), %rdi
movl -0xcc(%rbp), %esi
callq 0x5c230
movq %rax, -0x240(%rbp)
jmp 0xd902f
movq -0x240(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rdi
movq (%rdi), %rax
movq 0x128(%rax), %rax
callq *%rax
movl %eax, -0x244(%rbp)
jmp 0xd9058
movl -0x244(%rbp), %ecx
movl -0xc8(%rbp), %eax
orl %ecx, %eax
movl %eax, -0xc8(%rbp)
movq -0xd8(%rbp), %rdi
movq (%rdi), %rax
movq 0x128(%rax), %rax
callq *%rax
movl %eax, -0x248(%rbp)
jmp 0xd9087
movl -0x248(%rbp), %eax
cmpl $0x4, %eax
jne 0xd922e
movq -0xd8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xd8(%rbp), %rax
movswl 0x1a0(%rax), %eax
cmpl $0x1, %eax
jne 0xd9201
movq -0xd8(%rbp), %rdi
callq 0x5bf70
movq %rax, -0x250(%rbp)
jmp 0xd90d0
movq -0x1a0(%rbp), %rax
movq -0x250(%rbp), %rcx
movl 0x4(%rcx), %esi
movl -0xc4(%rbp), %ecx
movl %ecx, %edx
movl %esi, %ecx
leal 0x3(%rcx,%rdx), %ecx
movl %ecx, -0xc4(%rbp)
cvtsi2sdl 0x5e8(%rax), %xmm0
movsd -0x80(%rbp), %xmm1
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %esi
cvtsi2sdl -0xc4(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd 0xb0dba(%rip), %xmm1    # 0x189ed8
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %edx
leaq -0xe0(%rbp), %rdi
callq 0x5c2c0
jmp 0xd9134
movq -0x1a0(%rbp), %rax
movl -0x78(%rbp), %esi
movl 0x5e8(%rax), %eax
subl %eax, %esi
movl -0xdc(%rbp), %edx
leaq -0xe8(%rbp), %rdi
callq 0x5c2c0
jmp 0xd915a
testb $0x1, 0x132660(%rip)    # 0x20b7c1
jne 0xd91e1
movq -0x1a0(%rbp), %rdi
addq $0x5d0, %rdi            # imm = 0x5D0
xorl %esi, %esi
callq 0x5a830
movb %al, -0x251(%rbp)
jmp 0xd9180
movb -0x251(%rbp), %al
testb $0x1, %al
jne 0xd918c
jmp 0xd91e1
movsd -0x80(%rbp), %xmm0
movsd 0xb1daf(%rip), %xmm1    # 0x18af48
mulsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x260(%rbp)
jmp 0xd91ab
movq -0x260(%rbp), %rcx
movslq -0xe0(%rbp), %rax
addq %rcx, %rax
movl %eax, -0xe0(%rbp)
jmp 0xd91e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x9c(%rbp), %rdi
callq 0x732d0
jmp 0xd9979
movq -0x70(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
leaq -0xe8(%rbp), %rdx
movl $0x1, %ecx
callq 0x5dc90
jmp 0xd91ff
jmp 0xd922c
movq -0xd8(%rbp), %rdi
callq 0x5bf70
movq %rax, -0x268(%rbp)
jmp 0xd9216
movq -0x268(%rbp), %rax
movl 0x4(%rax), %eax
addl -0xc4(%rbp), %eax
movl %eax, -0xc4(%rbp)
jmp 0xd922e
jmp 0xd9230
movl -0xcc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xcc(%rbp)
jmp 0xd8fe0
movl -0xc8(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xd9451
movq -0x1a0(%rbp), %rax
movl 0x5e8(%rax), %esi
cvtsi2sdl -0xc4(%rbp), %xmm0
movsd -0x80(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd 0xb0c5c(%rip), %xmm1    # 0x189ed8
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %edx
leaq -0xf0(%rbp), %rdi
callq 0x5c2c0
jmp 0xd9292
movq -0x1a0(%rbp), %rax
movl -0x78(%rbp), %esi
movl 0x5e8(%rax), %eax
subl %eax, %esi
movl -0xec(%rbp), %edx
leaq -0xf8(%rbp), %rdi
callq 0x5c2c0
jmp 0xd92b8
cmpq $0x0, -0xc0(%rbp)
je 0xd9387
movq -0xc0(%rbp), %rax
movswl 0x1a0(%rax), %eax
cmpl $0x2, %eax
jne 0xd9387
movq -0x70(%rbp), %rdi
callq 0x5d470
movw %ax, -0x26a(%rbp)
jmp 0xd92ef
movw -0x26a(%rbp), %ax
movswl %ax, %ecx
movl %ecx, %eax
leal (%rax,%rax,2), %eax
cvtsi2sd %eax, %xmm0
movsd 0xae1b6(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x278(%rbp)
jmp 0xd931c
movq -0x278(%rbp), %rcx
movl -0xec(%rbp), %eax
addl %ecx, %eax
movl %eax, -0xec(%rbp)
movq -0x70(%rbp), %rdi
callq 0x5d470
movw %ax, -0x27a(%rbp)
jmp 0xd9343
movw -0x27a(%rbp), %ax
movswl %ax, %ecx
movl %ecx, %eax
leal (%rax,%rax,2), %eax
cvtsi2sd %eax, %xmm0
movsd 0xae162(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x288(%rbp)
jmp 0xd9370
movq -0x288(%rbp), %rcx
movslq -0xf4(%rbp), %rax
addq %rcx, %rax
movl %eax, -0xf4(%rbp)
movq -0x70(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
leaq -0xf8(%rbp), %rdx
movl $0x1, %ecx
callq 0x5dc90
jmp 0xd93a5
movq -0x70(%rbp), %rax
movq %rax, -0x290(%rbp)
leaq -0x108(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x5c2c0
jmp 0xd93c5
leaq -0xf0(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x5ca20
movq %rax, -0x298(%rbp)
jmp 0xd93e1
movq -0x298(%rbp), %rax
movq %rax, -0x100(%rbp)
leaq -0x118(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x5c2c0
jmp 0xd9404
leaq -0xf8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x5ca20
movq %rax, -0x2a0(%rbp)
jmp 0xd9420
movq -0x290(%rbp), %rdi
movq -0x2a0(%rbp), %rax
movq %rax, -0x110(%rbp)
leaq -0x100(%rbp), %rsi
leaq -0x110(%rbp), %rdx
movl $0x1, %ecx
callq 0x5dc90
jmp 0xd944f
jmp 0xd9451
movl -0xc8(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xd9598
movq -0x1a0(%rbp), %rax
movl 0x5e8(%rax), %esi
cvtsi2sdl -0x74(%rbp), %xmm0
cvtsi2sdl 0x5e4(%rax), %xmm1
movsd -0x80(%rbp), %xmm2
mulsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movsd 0xaded6(%rip), %xmm1    # 0x187368
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %edx
leaq -0x120(%rbp), %rdi
callq 0x5c2c0
jmp 0xd94a8
movq -0x1a0(%rbp), %rax
movl -0x78(%rbp), %esi
movl 0x5e8(%rax), %eax
subl %eax, %esi
movl -0x11c(%rbp), %edx
leaq -0x128(%rbp), %rdi
callq 0x5c2c0
jmp 0xd94ce
movq -0x70(%rbp), %rdi
leaq -0x120(%rbp), %rsi
leaq -0x128(%rbp), %rdx
movl $0x1, %ecx
callq 0x5dc90
jmp 0xd94ec
movq -0x70(%rbp), %rax
movq %rax, -0x2a8(%rbp)
leaq -0x138(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x5c2c0
jmp 0xd950c
leaq -0x120(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x5ca20
movq %rax, -0x2b0(%rbp)
jmp 0xd9528
movq -0x2b0(%rbp), %rax
movq %rax, -0x130(%rbp)
leaq -0x148(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x5c2c0
jmp 0xd954b
leaq -0x128(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x5ca20
movq %rax, -0x2b8(%rbp)
jmp 0xd9567
movq -0x2a8(%rbp), %rdi
movq -0x2b8(%rbp), %rax
movq %rax, -0x140(%rbp)
leaq -0x130(%rbp), %rsi
leaq -0x140(%rbp), %rdx
movl $0x1, %ecx
callq 0x5dc90
jmp 0xd9596
jmp 0xd9598
movl -0xc8(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xd962e
movq -0x1a0(%rbp), %rax
cvtsi2sdl 0x5d8(%rax), %xmm0
movsd -0x80(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd 0xb136e(%rip), %xmm1    # 0x18a938
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %esi
movl 0x5dc(%rax), %edx
leaq -0x150(%rbp), %rdi
callq 0x5c2c0
jmp 0xd95e6
movq -0x1a0(%rbp), %rcx
movl -0x150(%rbp), %esi
movl -0x74(%rbp), %eax
movl 0x5e4(%rcx), %edx
notl %edx
addl %eax, %edx
leaq -0x158(%rbp), %rdi
callq 0x5c2c0
jmp 0xd960e
movq -0x70(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x158(%rbp), %rdx
movl $0x2, %ecx
callq 0x5dc90
jmp 0xd962c
jmp 0xd962e
movl -0xc8(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0xd96cd
movq -0x1a0(%rbp), %rax
cvtsi2sdl -0x78(%rbp), %xmm0
cvtsi2sdl 0x5e0(%rax), %xmm1
movsd -0x80(%rbp), %xmm2
mulsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movsd 0xadcff(%rip), %xmm1    # 0x187368
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %esi
movl 0x5dc(%rax), %edx
leaq -0x160(%rbp), %rdi
callq 0x5c2c0
jmp 0xd9685
movq -0x1a0(%rbp), %rcx
movl -0x160(%rbp), %esi
movl -0x74(%rbp), %eax
movl 0x5e4(%rcx), %edx
notl %edx
addl %eax, %edx
leaq -0x168(%rbp), %rdi
callq 0x5c2c0
jmp 0xd96ad
movq -0x70(%rbp), %rdi
leaq -0x160(%rbp), %rsi
leaq -0x168(%rbp), %rdx
movl $0x2, %ecx
callq 0x5dc90
jmp 0xd96cb
jmp 0xd96cd
jmp 0xd96cf
movl $0x0, -0x16c(%rbp)
movq -0x1a0(%rbp), %rdi
movl -0x16c(%rbp), %eax
movl %eax, -0x2c0(%rbp)
callq 0x5b470
movl %eax, -0x2bc(%rbp)
jmp 0xd96f9
movl -0x2c0(%rbp), %eax
movl -0x2bc(%rbp), %ecx
cmpl %ecx, %eax
jge 0xd97d6
movq -0x1a0(%rbp), %rdi
movl -0x16c(%rbp), %esi
callq 0x5c230
movq %rax, -0x2c8(%rbp)
jmp 0xd9728
movq -0x2c8(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x178(%rbp), %rdi
callq 0x5bb10
movq %rax, -0x2d0(%rbp)
jmp 0xd974b
movq -0x2d0(%rbp), %rdi
movq 0x12f07f(%rip), %rax    # 0x2087d8
movswl (%rax), %esi
callq 0x5da50
movb %al, -0x2d1(%rbp)
jmp 0xd9769
movb -0x2d1(%rbp), %al
testb $0x1, %al
jne 0xd9775
jmp 0xd97c0
movq -0x1a0(%rbp), %rsi
movq -0x178(%rbp), %rdi
addq $0x5ec, %rsi            # imm = 0x5EC
movq (%rdi), %rax
movq 0x158(%rax), %rax
callq *%rax
movb %al, -0x2d2(%rbp)
jmp 0xd979e
movb -0x2d2(%rbp), %al
testb $0x1, %al
jne 0xd97aa
jmp 0xd97c0
movq -0x178(%rbp), %rdi
movq (%rdi), %rax
movq 0x78(%rax), %rax
xorl %esi, %esi
callq *%rax
jmp 0xd97be
jmp 0xd97c0
jmp 0xd97c2
movl -0x16c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x16c(%rbp)
jmp 0xd96d9
movl $0x0, -0x17c(%rbp)
movq -0x1a0(%rbp), %rdi
movl -0x17c(%rbp), %eax
movl %eax, -0x2dc(%rbp)
callq 0x5b470
movl %eax, -0x2d8(%rbp)
jmp 0xd9800
movl -0x2dc(%rbp), %eax
movl -0x2d8(%rbp), %ecx
cmpl %ecx, %eax
jge 0xd98dd
movq -0x1a0(%rbp), %rdi
movl -0x17c(%rbp), %esi
callq 0x5c230
movq %rax, -0x2e8(%rbp)
jmp 0xd982f
movq -0x2e8(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rdi
callq 0x5bb10
movq %rax, -0x2f0(%rbp)
jmp 0xd9852
movq -0x2f0(%rbp), %rdi
movq 0x12ef78(%rip), %rax    # 0x2087d8
movswl (%rax), %esi
callq 0x5bc10
movb %al, -0x2f1(%rbp)
jmp 0xd9870
movb -0x2f1(%rbp), %al
testb $0x1, %al
jne 0xd987c
jmp 0xd98c7
movq -0x1a0(%rbp), %rsi
movq -0x188(%rbp), %rdi
addq $0x5ec, %rsi            # imm = 0x5EC
movq (%rdi), %rax
movq 0x158(%rax), %rax
callq *%rax
movb %al, -0x2f2(%rbp)
jmp 0xd98a5
movb -0x2f2(%rbp), %al
testb $0x1, %al
jne 0xd98b1
jmp 0xd98c7
movq -0x188(%rbp), %rdi
movq (%rdi), %rax
movq 0x78(%rax), %rax
xorl %esi, %esi
callq *%rax
jmp 0xd98c5
jmp 0xd98c7
jmp 0xd98c9
movl -0x17c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x17c(%rbp)
jmp 0xd97e0
movq -0x1a0(%rbp), %rdi
addq $0x648, %rdi            # imm = 0x648
callq 0x8af60
jmp 0xd98f2
movq -0x70(%rbp), %rdi
callq 0x5d270
jmp 0xd98fd
leaq -0x9c(%rbp), %rdi
callq 0x732d0
movq -0x1a0(%rbp), %rdi
callq 0x594d0
leaq -0x198(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x5ca80
movq -0x300(%rbp), %rdi
callq 0x59680
movl %eax, -0x2f8(%rbp)
jmp 0xd993c
movl -0x2f8(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x5a410
jmp 0xd996d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x5a410
jmp 0xd9979
movl -0x4(%rbp), %eax
addq $0x300, %rsp            # imm = 0x300
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x5b6b0
nopw %cs:(%rax,%rax)