// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/graphics/backends/cairo/surfacecairo.cpp
// Function: smooth::GUI::SurfaceCairo::Box(smooth::GUI::Rect const&, smooth::GUI::Color const&, int, smooth::GUI::Size const&)
S::Int S::GUI::SurfaceCairo::Box(const Rect &iRect, const Color &color, Int style, const Size &ellipse)
{
	if (window == NIL) return Success();

	Rect	 rect = rightToLeft.TranslateRect(iRect);

	if (!painting)
	{
		CreateCairoContext();

		cairo_set_source_rgb(context, color.GetRed() / 255.0, color.GetGreen() / 255.0, color.GetBlue() / 255.0);
	}

	cairo_set_source_rgb(paintContextCairo, color.GetRed() / 255.0, color.GetGreen() / 255.0, color.GetBlue() / 255.0);

	if (style & Rect::Filled)
	{
		if (style & Rect::Rounded)
		{
			if (!painting)
			{
				cairo_move_to(context, rect.left + ellipse.cx, rect.top);
				cairo_line_to(context, rect.right - ellipse.cx, rect.top);
				cairo_curve_to(context, rect.right, rect.top, rect.right, rect.top, rect.right, rect.top + ellipse.cy);
				cairo_line_to(context, rect.right, rect.bottom - ellipse.cy);
				cairo_curve_to(context, rect.right, rect.bottom, rect.right, rect.bottom, rect.right - ellipse.cx, rect.bottom);
				cairo_line_to(context, rect.left + ellipse.cx, rect.bottom);
				cairo_curve_to(context, rect.left, rect.bottom, rect.left, rect.bottom, rect.left, rect.bottom - ellipse.cy);
				cairo_line_to(context, rect.left, rect.top + ellipse.cy);
				cairo_curve_to(context, rect.left, rect.top, rect.left, rect.top, rect.left + ellipse.cx, rect.top);

				cairo_fill(context);
			}

			cairo_move_to(paintContextCairo, rect.left + ellipse.cx, rect.top);
			cairo_line_to(paintContextCairo, rect.right - ellipse.cx, rect.top);
			cairo_curve_to(paintContextCairo, rect.right, rect.top, rect.right, rect.top, rect.right, rect.top + ellipse.cy);
			cairo_line_to(paintContextCairo, rect.right, rect.bottom - ellipse.cy);
			cairo_curve_to(paintContextCairo, rect.right, rect.bottom, rect.right, rect.bottom, rect.right - ellipse.cx, rect.bottom);
			cairo_line_to(paintContextCairo, rect.left + ellipse.cx, rect.bottom);
			cairo_curve_to(paintContextCairo, rect.left, rect.bottom, rect.left, rect.bottom, rect.left, rect.bottom - ellipse.cy);
			cairo_line_to(paintContextCairo, rect.left, rect.top + ellipse.cy);
			cairo_curve_to(paintContextCairo, rect.left, rect.top, rect.left, rect.top, rect.left + ellipse.cx, rect.top);

			cairo_fill(paintContextCairo);
		}
		else
		{
			if (!painting)
			{
				cairo_rectangle(context, rect.left, rect.top, rect.GetWidth(), rect.GetHeight());
				cairo_fill(context);
			}

			cairo_rectangle(paintContextCairo, rect.left, rect.top, rect.GetWidth(), rect.GetHeight());
			cairo_fill(paintContextCairo);
		}
	}
	else if (style == Rect::Outlined)
	{
		if (!painting)
		{
			cairo_set_line_width(context, 1.0);
			cairo_rectangle(context, rect.left + 0.5, rect.top + 0.5, rect.GetWidth() - 1, rect.GetHeight() - 1);
			cairo_stroke(context);
		}

		cairo_set_line_width(paintContextCairo, 1.0);
		cairo_rectangle(paintContextCairo, rect.left + 0.5, rect.top + 0.5, rect.GetWidth() - 1, rect.GetHeight() - 1);
		cairo_stroke(paintContextCairo);
	}
	else if (style & Rect::Inverted)
	{
		if (cairo_version() >= CAIRO_VERSION_ENCODE(1,9,2))
		{
			if (!painting)
			{
				cairo_set_operator(context, CAIRO_OPERATOR_DIFFERENCE);
				cairo_set_source_rgb(context, 1.0, 1.0, 1.0);
				cairo_rectangle(context, rect.left, rect.top, rect.GetWidth(), rect.GetHeight());
				cairo_fill(context);
				cairo_set_operator(context, CAIRO_OPERATOR_OVER);
			}

			cairo_set_operator(paintContextCairo, CAIRO_OPERATOR_DIFFERENCE);
			cairo_set_source_rgb(paintContextCairo, 1.0, 1.0, 1.0);
			cairo_rectangle(paintContextCairo, rect.left, rect.top, rect.GetWidth(), rect.GetHeight());
			cairo_fill(paintContextCairo);
			cairo_set_operator(paintContextCairo, CAIRO_OPERATOR_OVER);
		}
		else
		{
			Bitmap	 area(rect.GetSize());

			BlitToBitmap(iRect, area, Rect(Point(0, 0), area.GetSize()));

			area.InvertColors();

			BlitFromBitmap(area, Rect(Point(0, 0), area.GetSize()), iRect);
		}
	}
	else if (style & Rect::Dotted)
	{
		if (!painting)
		{
			for (Int x = rect.left						    + 1; x <  rect.right;  x += 2) cairo_rectangle(context, x, rect.top, 1.0, 1.0);
			for (Int y = rect.top	 - (rect.GetWidth()		      ) % 2 + 2; y <  rect.bottom; y += 2) cairo_rectangle(context, rect.right - 1, y, 1.0, 1.0);
			for (Int x = rect.right	 - (rect.GetWidth() + rect.GetHeight()) % 2 - 2; x >= rect.left;   x -= 2) cairo_rectangle(context, x, rect.bottom - 1, 1.0, 1.0);
			for (Int y = rect.bottom - (		      rect.GetHeight()) % 2 - 1; y >= rect.top;	   y -= 2) cairo_rectangle(context, rect.left, y, 1.0, 1.0);

			cairo_fill(context);
		}

		for (Int x = rect.left						    + 1;  x <  rect.right;  x += 2) cairo_rectangle(paintContextCairo, x, rect.top,  1.0, 1.0);
		for (Int y = rect.top	 - (rect.GetWidth()		      ) % 2 + 2;  y <  rect.bottom; y += 2) cairo_rectangle(paintContextCairo, rect.right - 1, y,  1.0, 1.0);
		for (Int x = rect.right	 - (rect.GetWidth() + rect.GetHeight()) % 2 - 2;  x >= rect.left;   x -= 2) cairo_rectangle(paintContextCairo, x, rect.bottom - 1,  1.0, 1.0);
		for (Int y = rect.bottom - (		      rect.GetHeight()) % 2 - 1;  y >= rect.top;    y -= 2) cairo_rectangle(paintContextCairo, rect.left, y,  1.0, 1.0);

		cairo_fill(paintContextCairo);
	}

	if (!painting) DestroyCairoContext();

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x220, %rsp            # imm = 0x220
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movq %r8, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xd8(%rbp)
cmpq $0x0, 0x50(%rax)
jne 0x12c1f5
leaq -0x40(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0x5ca80
movq -0xe8(%rbp), %rdi
callq 0x59680
movl %eax, -0xdc(%rbp)
jmp 0x12c1c4
movl -0xdc(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5a410
jmp 0x12d134
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5a410
jmp 0x12d140
movq -0xd8(%rbp), %rdi
addq $0x28, %rdi
movq -0x18(%rbp), %rsi
callq 0x73390
movq %rax, %rcx
movq -0xd8(%rbp), %rax
movq %rcx, -0x5c(%rbp)
movq %rdx, -0x54(%rbp)
cmpw $0x0, 0xa(%rax)
jne 0x12c2be
movq -0xd8(%rbp), %rdi
callq 0x12b760
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rax
movq %rax, -0x100(%rbp)
movq -0x20(%rbp), %rdi
callq 0x59f20
cvtsi2sd %eax, %xmm0
movsd 0x5b0f4(%rip), %xmm1    # 0x187350
divsd %xmm1, %xmm0
movsd %xmm0, -0xf8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x5d920
cvtsi2sd %eax, %xmm0
movsd 0x5b0d3(%rip), %xmm1    # 0x187350
divsd %xmm1, %xmm0
movsd %xmm0, -0xf0(%rbp)
movq -0x20(%rbp), %rdi
callq 0x5b650
movq -0x100(%rbp), %rdi
movsd -0xf8(%rbp), %xmm0
movsd -0xf0(%rbp), %xmm1
cvtsi2sd %eax, %xmm2
movsd 0x5b09b(%rip), %xmm3    # 0x187350
divsd %xmm3, %xmm2
callq 0x5c970
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rax
movq %rax, -0x118(%rbp)
movq -0x20(%rbp), %rdi
callq 0x59f20
cvtsi2sd %eax, %xmm0
movsd 0x5b068(%rip), %xmm1    # 0x187350
divsd %xmm1, %xmm0
movsd %xmm0, -0x110(%rbp)
movq -0x20(%rbp), %rdi
callq 0x5d920
cvtsi2sd %eax, %xmm0
movsd 0x5b047(%rip), %xmm1    # 0x187350
divsd %xmm1, %xmm0
movsd %xmm0, -0x108(%rbp)
movq -0x20(%rbp), %rdi
callq 0x5b650
movq -0x118(%rbp), %rdi
movsd -0x110(%rbp), %xmm0
movsd -0x108(%rbp), %xmm1
cvtsi2sd %eax, %xmm2
movsd 0x5b00f(%rip), %xmm3    # 0x187350
divsd %xmm3, %xmm2
callq 0x5c970
movl -0x24(%rbp), %eax
movq 0xdcc4c(%rip), %rcx     # 0x208fa0
andl (%rcx), %eax
cmpl $0x0, %eax
je 0x12c81a
movl -0x24(%rbp), %eax
movq 0xdc667(%rip), %rcx     # 0x2089d0
andl (%rcx), %eax
cmpl $0x0, %eax
je 0x12c6f3
movq -0xd8(%rbp), %rax
cmpw $0x0, 0xa(%rax)
jne 0x12c53a
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
movl -0x5c(%rbp), %eax
movq -0x30(%rbp), %rcx
addl (%rcx), %eax
cvtsi2sd %eax, %xmm0
cvtsi2sdl -0x58(%rbp), %xmm1
callq 0x5b970
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
movl -0x54(%rbp), %eax
movq -0x30(%rbp), %rcx
subl (%rcx), %eax
cvtsi2sd %eax, %xmm0
cvtsi2sdl -0x58(%rbp), %xmm1
callq 0x5a8c0
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
cvtsi2sdl -0x54(%rbp), %xmm0
cvtsi2sdl -0x58(%rbp), %xmm1
cvtsi2sdl -0x54(%rbp), %xmm2
cvtsi2sdl -0x58(%rbp), %xmm3
cvtsi2sdl -0x54(%rbp), %xmm4
movl -0x58(%rbp), %eax
movq -0x30(%rbp), %rcx
addl 0x4(%rcx), %eax
cvtsi2sd %eax, %xmm5
callq 0x5bab0
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
cvtsi2sdl -0x54(%rbp), %xmm0
movl -0x50(%rbp), %eax
movq -0x30(%rbp), %rcx
subl 0x4(%rcx), %eax
cvtsi2sd %eax, %xmm1
callq 0x5a8c0
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
cvtsi2sdl -0x54(%rbp), %xmm0
cvtsi2sdl -0x50(%rbp), %xmm1
cvtsi2sdl -0x54(%rbp), %xmm2
cvtsi2sdl -0x50(%rbp), %xmm3
movl -0x54(%rbp), %eax
movq -0x30(%rbp), %rcx
subl (%rcx), %eax
cvtsi2sd %eax, %xmm4
cvtsi2sdl -0x50(%rbp), %xmm5
callq 0x5bab0
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
movl -0x5c(%rbp), %eax
movq -0x30(%rbp), %rcx
addl (%rcx), %eax
cvtsi2sd %eax, %xmm0
cvtsi2sdl -0x50(%rbp), %xmm1
callq 0x5a8c0
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
cvtsi2sdl -0x5c(%rbp), %xmm0
cvtsi2sdl -0x50(%rbp), %xmm1
cvtsi2sdl -0x5c(%rbp), %xmm2
cvtsi2sdl -0x50(%rbp), %xmm3
cvtsi2sdl -0x5c(%rbp), %xmm4
movl -0x50(%rbp), %eax
movq -0x30(%rbp), %rcx
subl 0x4(%rcx), %eax
cvtsi2sd %eax, %xmm5
callq 0x5bab0
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
cvtsi2sdl -0x5c(%rbp), %xmm0
movl -0x58(%rbp), %eax
movq -0x30(%rbp), %rcx
addl 0x4(%rcx), %eax
cvtsi2sd %eax, %xmm1
callq 0x5a8c0
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
cvtsi2sdl -0x5c(%rbp), %xmm0
cvtsi2sdl -0x58(%rbp), %xmm1
cvtsi2sdl -0x5c(%rbp), %xmm2
cvtsi2sdl -0x58(%rbp), %xmm3
movl -0x5c(%rbp), %eax
movq -0x30(%rbp), %rcx
addl (%rcx), %eax
cvtsi2sd %eax, %xmm4
cvtsi2sdl -0x58(%rbp), %xmm5
callq 0x5bab0
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
callq 0x5c620
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
movl -0x5c(%rbp), %eax
movq -0x30(%rbp), %rcx
addl (%rcx), %eax
cvtsi2sd %eax, %xmm0
cvtsi2sdl -0x58(%rbp), %xmm1
callq 0x5b970
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
movl -0x54(%rbp), %eax
movq -0x30(%rbp), %rcx
subl (%rcx), %eax
cvtsi2sd %eax, %xmm0
cvtsi2sdl -0x58(%rbp), %xmm1
callq 0x5a8c0
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
cvtsi2sdl -0x54(%rbp), %xmm0
cvtsi2sdl -0x58(%rbp), %xmm1
cvtsi2sdl -0x54(%rbp), %xmm2
cvtsi2sdl -0x58(%rbp), %xmm3
cvtsi2sdl -0x54(%rbp), %xmm4
movl -0x58(%rbp), %eax
movq -0x30(%rbp), %rcx
addl 0x4(%rcx), %eax
cvtsi2sd %eax, %xmm5
callq 0x5bab0
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
cvtsi2sdl -0x54(%rbp), %xmm0
movl -0x50(%rbp), %eax
movq -0x30(%rbp), %rcx
subl 0x4(%rcx), %eax
cvtsi2sd %eax, %xmm1
callq 0x5a8c0
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
cvtsi2sdl -0x54(%rbp), %xmm0
cvtsi2sdl -0x50(%rbp), %xmm1
cvtsi2sdl -0x54(%rbp), %xmm2
cvtsi2sdl -0x50(%rbp), %xmm3
movl -0x54(%rbp), %eax
movq -0x30(%rbp), %rcx
subl (%rcx), %eax
cvtsi2sd %eax, %xmm4
cvtsi2sdl -0x50(%rbp), %xmm5
callq 0x5bab0
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
movl -0x5c(%rbp), %eax
movq -0x30(%rbp), %rcx
addl (%rcx), %eax
cvtsi2sd %eax, %xmm0
cvtsi2sdl -0x50(%rbp), %xmm1
callq 0x5a8c0
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
cvtsi2sdl -0x5c(%rbp), %xmm0
cvtsi2sdl -0x50(%rbp), %xmm1
cvtsi2sdl -0x5c(%rbp), %xmm2
cvtsi2sdl -0x50(%rbp), %xmm3
cvtsi2sdl -0x5c(%rbp), %xmm4
movl -0x50(%rbp), %eax
movq -0x30(%rbp), %rcx
subl 0x4(%rcx), %eax
cvtsi2sd %eax, %xmm5
callq 0x5bab0
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
cvtsi2sdl -0x5c(%rbp), %xmm0
movl -0x58(%rbp), %eax
movq -0x30(%rbp), %rcx
addl 0x4(%rcx), %eax
cvtsi2sd %eax, %xmm1
callq 0x5a8c0
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
cvtsi2sdl -0x5c(%rbp), %xmm0
cvtsi2sdl -0x58(%rbp), %xmm1
cvtsi2sdl -0x5c(%rbp), %xmm2
cvtsi2sdl -0x58(%rbp), %xmm3
movl -0x5c(%rbp), %eax
movq -0x30(%rbp), %rcx
addl (%rcx), %eax
cvtsi2sd %eax, %xmm4
cvtsi2sdl -0x58(%rbp), %xmm5
callq 0x5bab0
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
callq 0x5c620
jmp 0x12c815
movq -0xd8(%rbp), %rax
cmpw $0x0, 0xa(%rax)
jne 0x12c78d
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rax
movq %rax, -0x138(%rbp)
cvtsi2sdl -0x5c(%rbp), %xmm0
movsd %xmm0, -0x130(%rbp)
cvtsi2sdl -0x58(%rbp), %xmm0
movsd %xmm0, -0x128(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x5a5a0
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x120(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x591a0
movq -0x138(%rbp), %rdi
movsd -0x130(%rbp), %xmm0
movsd -0x128(%rbp), %xmm1
movsd -0x120(%rbp), %xmm2
cvtsi2sd %eax, %xmm3
callq 0x5aa10
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
callq 0x5c620
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rax
movq %rax, -0x158(%rbp)
cvtsi2sdl -0x5c(%rbp), %xmm0
movsd %xmm0, -0x150(%rbp)
cvtsi2sdl -0x58(%rbp), %xmm0
movsd %xmm0, -0x148(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x5a5a0
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x140(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x591a0
movq -0x158(%rbp), %rdi
movsd -0x150(%rbp), %xmm0
movsd -0x148(%rbp), %xmm1
movsd -0x140(%rbp), %xmm2
cvtsi2sd %eax, %xmm3
callq 0x5aa10
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
callq 0x5c620
jmp 0x12d0c2
movl -0x24(%rbp), %eax
movq 0xdbfd4(%rip), %rcx     # 0x2087f8
cmpl (%rcx), %eax
jne 0x12c9c5
movq -0xd8(%rbp), %rax
cmpw $0x0, 0xa(%rax)
jne 0x12c8ff
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
movsd 0x5ab14(%rip), %xmm0    # 0x187368
callq 0x5b2e0
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rax
movq %rax, -0x178(%rbp)
cvtsi2sdl -0x5c(%rbp), %xmm0
movsd 0x5ab0d(%rip), %xmm1    # 0x187388
addsd %xmm1, %xmm0
movsd %xmm0, -0x170(%rbp)
cvtsi2sdl -0x58(%rbp), %xmm0
movsd 0x5aaf4(%rip), %xmm1    # 0x187388
addsd %xmm1, %xmm0
movsd %xmm0, -0x168(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x5a5a0
subl $0x1, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x160(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x591a0
movq -0x178(%rbp), %rdi
movsd -0x170(%rbp), %xmm0
movsd -0x168(%rbp), %xmm1
movsd -0x160(%rbp), %xmm2
subl $0x1, %eax
cvtsi2sd %eax, %xmm3
callq 0x5aa10
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
callq 0x5b610
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
movsd 0x5aa53(%rip), %xmm0    # 0x187368
callq 0x5b2e0
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rax
movq %rax, -0x198(%rbp)
cvtsi2sdl -0x5c(%rbp), %xmm0
movsd 0x5aa4c(%rip), %xmm1    # 0x187388
addsd %xmm1, %xmm0
movsd %xmm0, -0x190(%rbp)
cvtsi2sdl -0x58(%rbp), %xmm0
movsd 0x5aa33(%rip), %xmm1    # 0x187388
addsd %xmm1, %xmm0
movsd %xmm0, -0x188(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x5a5a0
subl $0x1, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x180(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x591a0
movq -0x198(%rbp), %rdi
movsd -0x190(%rbp), %xmm0
movsd -0x188(%rbp), %xmm1
movsd -0x180(%rbp), %xmm2
subl $0x1, %eax
cvtsi2sd %eax, %xmm3
callq 0x5aa10
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
callq 0x5b610
jmp 0x12d0c0
movl -0x24(%rbp), %eax
movq 0xdc339(%rip), %rcx     # 0x208d08
andl (%rcx), %eax
cmpl $0x0, %eax
je 0x12ccd7
callq 0x59f50
cmpl $0x2a96, %eax           # imm = 0x2A96
jl 0x12cbb3
movq -0xd8(%rbp), %rax
cmpw $0x0, 0xa(%rax)
jne 0x12cad5
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
movl $0x17, %esi
callq 0x59130
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
movsd 0x5a93e(%rip), %xmm2    # 0x187368
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x5c970
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rax
movq %rax, -0x1b8(%rbp)
cvtsi2sdl -0x5c(%rbp), %xmm0
movsd %xmm0, -0x1b0(%rbp)
cvtsi2sdl -0x58(%rbp), %xmm0
movsd %xmm0, -0x1a8(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x5a5a0
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x1a0(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x591a0
movq -0x1b8(%rbp), %rdi
movsd -0x1b0(%rbp), %xmm0
movsd -0x1a8(%rbp), %xmm1
movsd -0x1a0(%rbp), %xmm2
cvtsi2sd %eax, %xmm3
callq 0x5aa10
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
callq 0x5c620
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
movl $0x2, %esi
callq 0x59130
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
movl $0x17, %esi
callq 0x59130
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
movsd 0x5a865(%rip), %xmm2    # 0x187368
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x5c970
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rax
movq %rax, -0x1d8(%rbp)
cvtsi2sdl -0x5c(%rbp), %xmm0
movsd %xmm0, -0x1d0(%rbp)
cvtsi2sdl -0x58(%rbp), %xmm0
movsd %xmm0, -0x1c8(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x5a5a0
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x1c0(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x591a0
movq -0x1d8(%rbp), %rdi
movsd -0x1d0(%rbp), %xmm0
movsd -0x1c8(%rbp), %xmm1
movsd -0x1c0(%rbp), %xmm2
cvtsi2sd %eax, %xmm3
callq 0x5aa10
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
callq 0x5c620
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
movl $0x2, %esi
callq 0x59130
jmp 0x12ccd2
leaq -0x5c(%rbp), %rdi
callq 0x59e00
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x59b20
movq -0x18(%rbp), %rax
movq %rax, -0x1e0(%rbp)
leaq -0x88(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x5c2c0
jmp 0x12cbef
leaq -0x68(%rbp), %rdi
callq 0x5ce60
movq %rax, -0x1e8(%rbp)
jmp 0x12cc01
movq -0x1e8(%rbp), %rdx
leaq -0x80(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x59ff0
jmp 0x12cc1a
movq -0x1e0(%rbp), %rsi
movq -0xd8(%rbp), %rdi
movq (%rdi), %rax
movq 0x98(%rax), %rax
leaq -0x68(%rbp), %rdx
leaq -0x80(%rbp), %rcx
callq *%rax
jmp 0x12cc3e
leaq -0x68(%rbp), %rdi
callq 0x59720
jmp 0x12cc49
leaq -0xa0(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x5c2c0
jmp 0x12cc5b
leaq -0x68(%rbp), %rdi
callq 0x5ce60
movq %rax, -0x1f0(%rbp)
jmp 0x12cc6d
movq -0x1f0(%rbp), %rdx
leaq -0x98(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x59ff0
jmp 0x12cc89
movq -0xd8(%rbp), %rdi
movq -0x18(%rbp), %rcx
movq (%rdi), %rax
movq 0x90(%rax), %rax
leaq -0x68(%rbp), %rsi
leaq -0x98(%rbp), %rdx
callq *%rax
jmp 0x12ccad
leaq -0x68(%rbp), %rdi
callq 0x5de40
jmp 0x12ccd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x5de40
jmp 0x12d140
jmp 0x12d0be
movl -0x24(%rbp), %eax
movq 0xdc1a7(%rip), %rcx     # 0x208e88
andl (%rcx), %eax
cmpl $0x0, %eax
je 0x12d0bc
movq -0xd8(%rbp), %rax
cmpw $0x0, 0xa(%rax)
jne 0x12cedd
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0x12cd51
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
cvtsi2sdl -0xa4(%rbp), %xmm0
cvtsi2sdl -0x58(%rbp), %xmm1
movsd 0x5a630(%rip), %xmm3    # 0x187368
movaps %xmm3, %xmm2
callq 0x5aa10
movl -0xa4(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xa4(%rbp)
jmp 0x12cd0a
movl -0x58(%rbp), %eax
movl %eax, -0x1f4(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x5a5a0
movl $0x2, %ecx
cltd
idivl %ecx
movl -0x1f4(%rbp), %eax
subl %edx, %eax
addl $0x2, %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
cmpl -0x50(%rbp), %eax
jge 0x12cdc8
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
movl -0x54(%rbp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm0
cvtsi2sdl -0xa8(%rbp), %xmm1
movsd 0x5a5b9(%rip), %xmm3    # 0x187368
movaps %xmm3, %xmm2
callq 0x5aa10
movl -0xa8(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xa8(%rbp)
jmp 0x12cd7c
movl -0x54(%rbp), %eax
movl %eax, -0x1f8(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x5a5a0
movl %eax, -0x1fc(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x591a0
movl %eax, %ecx
movl -0x1fc(%rbp), %eax
addl %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl -0x1f8(%rbp), %eax
subl %edx, %eax
subl $0x2, %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jl 0x12ce58
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
cvtsi2sdl -0xac(%rbp), %xmm0
movl -0x50(%rbp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm1
movsd 0x5a529(%rip), %xmm3    # 0x187368
movaps %xmm3, %xmm2
callq 0x5aa10
movl -0xac(%rbp), %eax
subl $0x2, %eax
movl %eax, -0xac(%rbp)
jmp 0x12ce0c
movl -0x50(%rbp), %eax
movl %eax, -0x200(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x591a0
movl $0x2, %ecx
cltd
idivl %ecx
movl -0x200(%rbp), %eax
subl %edx, %eax
subl $0x1, %eax
movl %eax, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
cmpl -0x58(%rbp), %eax
jl 0x12ceca
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
cvtsi2sdl -0x5c(%rbp), %xmm0
cvtsi2sdl -0xb0(%rbp), %xmm1
movsd 0x5a4b7(%rip), %xmm3    # 0x187368
movaps %xmm3, %xmm2
callq 0x5aa10
movl -0xb0(%rbp), %eax
subl $0x2, %eax
movl %eax, -0xb0(%rbp)
jmp 0x12ce83
movq -0xd8(%rbp), %rax
movq 0xc0(%rax), %rdi
callq 0x5c620
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb4(%rbp)
movl -0xb4(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0x12cf30
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
cvtsi2sdl -0xb4(%rbp), %xmm0
cvtsi2sdl -0x58(%rbp), %xmm1
movsd 0x5a451(%rip), %xmm3    # 0x187368
movaps %xmm3, %xmm2
callq 0x5aa10
movl -0xb4(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xb4(%rbp)
jmp 0x12cee9
movl -0x58(%rbp), %eax
movl %eax, -0x204(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x5a5a0
movl $0x2, %ecx
cltd
idivl %ecx
movl -0x204(%rbp), %eax
subl %edx, %eax
addl $0x2, %eax
movl %eax, -0xb8(%rbp)
movl -0xb8(%rbp), %eax
cmpl -0x50(%rbp), %eax
jge 0x12cfa7
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
movl -0x54(%rbp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm0
cvtsi2sdl -0xb8(%rbp), %xmm1
movsd 0x5a3da(%rip), %xmm3    # 0x187368
movaps %xmm3, %xmm2
callq 0x5aa10
movl -0xb8(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xb8(%rbp)
jmp 0x12cf5b
movl -0x54(%rbp), %eax
movl %eax, -0x208(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x5a5a0
movl %eax, -0x20c(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x591a0
movl %eax, %ecx
movl -0x20c(%rbp), %eax
addl %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl -0x208(%rbp), %eax
subl %edx, %eax
subl $0x2, %eax
movl %eax, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jl 0x12d037
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
cvtsi2sdl -0xbc(%rbp), %xmm0
movl -0x50(%rbp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm1
movsd 0x5a34a(%rip), %xmm3    # 0x187368
movaps %xmm3, %xmm2
callq 0x5aa10
movl -0xbc(%rbp), %eax
subl $0x2, %eax
movl %eax, -0xbc(%rbp)
jmp 0x12cfeb
movl -0x50(%rbp), %eax
movl %eax, -0x210(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x591a0
movl $0x2, %ecx
cltd
idivl %ecx
movl -0x210(%rbp), %eax
subl %edx, %eax
subl $0x1, %eax
movl %eax, -0xc0(%rbp)
movl -0xc0(%rbp), %eax
cmpl -0x58(%rbp), %eax
jl 0x12d0a9
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
cvtsi2sdl -0x5c(%rbp), %xmm0
cvtsi2sdl -0xc0(%rbp), %xmm1
movsd 0x5a2d8(%rip), %xmm3    # 0x187368
movaps %xmm3, %xmm2
callq 0x5aa10
movl -0xc0(%rbp), %eax
subl $0x2, %eax
movl %eax, -0xc0(%rbp)
jmp 0x12d062
movq -0xd8(%rbp), %rax
movq 0xd0(%rax), %rdi
callq 0x5c620
jmp 0x12d0be
jmp 0x12d0c0
jmp 0x12d0c2
movq -0xd8(%rbp), %rax
cmpw $0x0, 0xa(%rax)
jne 0x12d0dc
movq -0xd8(%rbp), %rdi
callq 0x12b7f0
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0x5ca80
movq -0x220(%rbp), %rdi
callq 0x59680
movl %eax, -0x214(%rbp)
jmp 0x12d103
movl -0x214(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x5a410
jmp 0x12d134
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x5a410
jmp 0x12d140
movl -0x4(%rbp), %eax
addq $0x220, %rsp            # imm = 0x220
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)