// File: /workspace/github_c_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
cmpq $0x0, 0x50(%rdi)
je 0xc4f49
movq %r8, %r12
movl %ecx, %ebp
movq %rdx, %r14
movq %rsi, %r13
movq %rdi, %rbx
addq $0x28, %rdi
callq 0x632ca
movq %rax, 0x28(%rsp)
movq %rdx, %r15
cmpw $0x0, 0xa(%rbx)
jne 0xc46a0
movq %rbx, %rdi
callq 0xc3f18
movq 0xc0(%rbx), %rdi
movl 0x8(%r14), %eax
movl $0xff, %ecx
movl %eax, %edx
andl %ecx, %edx
cvtsi2sd %edx, %xmm0
movsd 0x2eced(%rip), %xmm3    # 0xf3368
divsd %xmm3, %xmm0
movl %eax, %edx
shrl $0x8, %edx
andl %ecx, %edx
cvtsi2sd %edx, %xmm1
divsd %xmm3, %xmm1
shrl $0x10, %eax
andl %ecx, %eax
cvtsi2sd %eax, %xmm2
divsd %xmm3, %xmm2
callq 0x58030
movq 0xd0(%rbx), %rdi
movl 0x8(%r14), %eax
movl $0xff, %ecx
movl %eax, %edx
andl %ecx, %edx
xorps %xmm0, %xmm0
cvtsi2sd %edx, %xmm0
movsd 0x2eca5(%rip), %xmm3    # 0xf3368
divsd %xmm3, %xmm0
movl %eax, %edx
shrl $0x8, %edx
andl %ecx, %edx
xorps %xmm1, %xmm1
cvtsi2sd %edx, %xmm1
divsd %xmm3, %xmm1
shrl $0x10, %eax
andl %ecx, %eax
xorps %xmm2, %xmm2
cvtsi2sd %eax, %xmm2
divsd %xmm3, %xmm2
callq 0x58030
movq 0xa78b3(%rip), %rax     # 0x16bfa8
testl %ebp, (%rax)
je 0xc475e
movq 0xa72f0(%rip), %rcx     # 0x16b9f0
movzwl 0xa(%rbx), %eax
testl %ebp, (%rcx)
movq 0x28(%rsp), %rbp
je 0xc47db
testw %ax, %ax
je 0xc4895
movq %rbp, %r14
shrq $0x20, %r14
xorps %xmm1, %xmm1
cvtsi2sd %r14d, %xmm1
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, 0x10(%rsp)
movq %r15, %r13
shrq $0x20, %r13
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
movsd %xmm0, 0x18(%rsp)
xorps %xmm0, %xmm0
cvtsi2sd %ebp, %xmm0
movsd %xmm0, 0x20(%rsp)
jmp 0xc4a37
movq 0xa70bb(%rip), %rax     # 0x16b820
cmpl %ebp, (%rax)
jne 0xc4819
cmpw $0x0, 0xa(%rbx)
je 0xc4c29
movq 0x28(%rsp), %rcx
xorps %xmm1, %xmm1
cvtsi2sd %ecx, %xmm1
movsd 0x2ec0c(%rip), %xmm0    # 0xf3398
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rsp)
movq %rcx, %rax
shrq $0x20, %rax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x10(%rsp)
notl %ecx
addl %r15d, %ecx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
movsd %xmm0, 0x18(%rsp)
shrq $0x20, %r15
notl %eax
addl %r15d, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x20(%rsp)
jmp 0xc4cb3
testw %ax, %ax
je 0xc4b94
xorps %xmm0, %xmm0
cvtsi2sd %ebp, %xmm0
movq %rbp, %rax
shrq $0x20, %rax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movl %r15d, %ecx
subl %ebp, %ecx
xorps %xmm2, %xmm2
cvtsi2sd %ecx, %xmm2
shrq $0x20, %r15
subl %eax, %r15d
xorps %xmm3, %xmm3
cvtsi2sd %r15d, %xmm3
jmp 0xc4c0c
movq 0xa74f8(%rip), %rax     # 0x16bd18
testl %ebp, (%rax)
je 0xc4cfc
callq 0x55ce0
cmpl $0x2a96, %eax           # imm = 0x2A96
jl 0xc4d7a
cmpw $0x0, 0xa(%rbx)
je 0xc4e2d
movq 0x28(%rsp), %rdx
xorps %xmm0, %xmm0
cvtsi2sd %edx, %xmm0
movsd %xmm0, 0x8(%rsp)
movq %rdx, %rax
shrq $0x20, %rax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x10(%rsp)
movl %r15d, %ecx
subl %edx, %ecx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
movsd %xmm0, 0x18(%rsp)
shrq $0x20, %r15
subl %eax, %r15d
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, 0x20(%rsp)
jmp 0xc4ece
movq 0xc0(%rbx), %rdi
movl (%r12), %eax
addl %ebp, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movq %rbp, %r14
shrq $0x20, %r14
xorps %xmm1, %xmm1
cvtsi2sd %r14d, %xmm1
movsd %xmm1, 0x8(%rsp)
callq 0x572e0
movq 0xc0(%rbx), %rdi
movl %r15d, %eax
subl (%r12), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0x8(%rsp), %xmm1
callq 0x56480
movq 0xc0(%rbx), %rdi
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, 0x10(%rsp)
movl 0x4(%r12), %eax
addl %r14d, %eax
cvtsi2sd %eax, %xmm5
movsd 0x8(%rsp), %xmm1
movapd %xmm0, %xmm2
movaps %xmm1, %xmm3
movapd %xmm0, %xmm4
callq 0x573e0
movq 0xc0(%rbx), %rdi
movq %r15, %r13
shrq $0x20, %r13
movl %r13d, %eax
subl 0x4(%r12), %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movsd 0x10(%rsp), %xmm0
callq 0x56480
movq 0xc0(%rbx), %rdi
xorps %xmm1, %xmm1
cvtsi2sd %r13d, %xmm1
movsd %xmm1, 0x18(%rsp)
movl %r15d, %eax
subl (%r12), %eax
xorps %xmm4, %xmm4
cvtsi2sd %eax, %xmm4
movsd 0x10(%rsp), %xmm0
movaps %xmm0, %xmm2
movapd %xmm1, %xmm3
movapd %xmm1, %xmm5
callq 0x573e0
movq 0xc0(%rbx), %rdi
movl (%r12), %eax
addl %ebp, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0x18(%rsp), %xmm1
callq 0x56480
movq 0xc0(%rbx), %rdi
xorps %xmm0, %xmm0
cvtsi2sd %ebp, %xmm0
movsd %xmm0, 0x20(%rsp)
movl %r13d, %eax
subl 0x4(%r12), %eax
xorps %xmm5, %xmm5
cvtsi2sd %eax, %xmm5
movsd 0x18(%rsp), %xmm1
movapd %xmm0, %xmm2
movaps %xmm1, %xmm3
movapd %xmm0, %xmm4
callq 0x573e0
movq 0xc0(%rbx), %rdi
movl 0x4(%r12), %eax
addl %r14d, %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movsd 0x20(%rsp), %xmm0
callq 0x56480
movq 0xc0(%rbx), %rdi
movl (%r12), %eax
addl %ebp, %eax
xorps %xmm4, %xmm4
cvtsi2sd %eax, %xmm4
movsd 0x20(%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movapd %xmm0, %xmm2
movapd %xmm1, %xmm3
movapd %xmm1, %xmm5
callq 0x573e0
movq 0xc0(%rbx), %rdi
callq 0x57d40
movsd 0x8(%rsp), %xmm1
movq 0xd0(%rbx), %rdi
movl (%r12), %eax
addl %ebp, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm1, 0x8(%rsp)
callq 0x572e0
movq 0xd0(%rbx), %rdi
movl %r15d, %eax
subl (%r12), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0x8(%rsp), %xmm1
callq 0x56480
movq 0xd0(%rbx), %rdi
movl 0x4(%r12), %eax
addl %r14d, %eax
xorps %xmm5, %xmm5
cvtsi2sd %eax, %xmm5
movsd 0x10(%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movaps %xmm0, %xmm2
movaps %xmm1, %xmm3
movaps %xmm0, %xmm4
callq 0x573e0
movq 0xd0(%rbx), %rdi
movl %r13d, %eax
subl 0x4(%r12), %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movsd 0x10(%rsp), %xmm0
callq 0x56480
movq 0xd0(%rbx), %rdi
subl (%r12), %r15d
xorps %xmm4, %xmm4
cvtsi2sd %r15d, %xmm4
movsd 0x10(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
movaps %xmm0, %xmm2
movaps %xmm1, %xmm3
movaps %xmm1, %xmm5
callq 0x573e0
movq 0xd0(%rbx), %rdi
movl (%r12), %eax
addl %ebp, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0x18(%rsp), %xmm1
callq 0x56480
movq 0xd0(%rbx), %rdi
subl 0x4(%r12), %r13d
xorps %xmm5, %xmm5
cvtsi2sd %r13d, %xmm5
movsd 0x20(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
movaps %xmm0, %xmm2
movaps %xmm1, %xmm3
movaps %xmm0, %xmm4
callq 0x573e0
movq 0xd0(%rbx), %rdi
addl 0x4(%r12), %r14d
xorps %xmm1, %xmm1
cvtsi2sd %r14d, %xmm1
movsd 0x20(%rsp), %xmm0
callq 0x56480
movq 0xd0(%rbx), %rdi
addl (%r12), %ebp
xorps %xmm4, %xmm4
cvtsi2sd %ebp, %xmm4
movsd 0x20(%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movapd %xmm0, %xmm2
movapd %xmm1, %xmm3
movapd %xmm1, %xmm5
callq 0x573e0
jmp 0xc4c18
movq 0xc0(%rbx), %rdi
xorps %xmm0, %xmm0
cvtsi2sd %ebp, %xmm0
movsd %xmm0, 0x8(%rsp)
movq %rbp, %rax
shrq $0x20, %rax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movsd %xmm1, 0x10(%rsp)
movl %r15d, %ecx
subl %ebp, %ecx
xorps %xmm2, %xmm2
cvtsi2sd %ecx, %xmm2
movsd %xmm2, 0x18(%rsp)
shrq $0x20, %r15
subl %eax, %r15d
xorps %xmm3, %xmm3
cvtsi2sd %r15d, %xmm3
movsd %xmm3, 0x20(%rsp)
callq 0x565a0
movq 0xc0(%rbx), %rdi
callq 0x57d40
movsd 0x20(%rsp), %xmm3
movsd 0x18(%rsp), %xmm2
movsd 0x10(%rsp), %xmm1
movsd 0x8(%rsp), %xmm0
movq 0xd0(%rbx), %rdi
callq 0x565a0
movq 0xd0(%rbx), %rdi
callq 0x57d40
jmp 0xc4f3a
movq 0xc0(%rbx), %rdi
movsd 0x2e750(%rip), %xmm0    # 0xf3388
callq 0x56d40
movq 0xc0(%rbx), %rdi
movq 0x28(%rsp), %rcx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
movsd 0x2e740(%rip), %xmm2    # 0xf3398
addsd %xmm2, %xmm0
movq %rcx, %rax
shrq $0x20, %rax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
addsd %xmm2, %xmm1
notl %ecx
addl %r15d, %ecx
xorps %xmm2, %xmm2
cvtsi2sd %ecx, %xmm2
shrq $0x20, %r15
notl %eax
addl %r15d, %eax
xorps %xmm3, %xmm3
cvtsi2sd %eax, %xmm3
movsd %xmm0, 0x8(%rsp)
movsd %xmm1, 0x10(%rsp)
movsd %xmm2, 0x18(%rsp)
movsd %xmm3, 0x20(%rsp)
callq 0x565a0
movq 0xc0(%rbx), %rdi
callq 0x57010
movq 0xd0(%rbx), %rdi
movsd 0x2e6c6(%rip), %xmm0    # 0xf3388
callq 0x56d40
movq 0xd0(%rbx), %rdi
movsd 0x8(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x18(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
callq 0x565a0
movq 0xd0(%rbx), %rdi
callq 0x57010
jmp 0xc4f3a
movq 0xa718d(%rip), %rax     # 0x16be90
testl %ebp, (%rax)
je 0xc4f3a
movq 0x28(%rsp), %r12
leal 0x1(%r12), %ebp
cmpw $0x0, 0xa(%rbx)
jne 0xc50b9
cmpl %r15d, %ebp
jge 0xc4f5a
movq %r12, %rax
shrq $0x20, %rax
movq %rax, %r13
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x8(%rsp)
movl %ebp, %r14d
movq 0xc0(%rbx), %rdi
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd 0x8(%rsp), %xmm1
movsd 0x2e628(%rip), %xmm2    # 0xf3388
movapd %xmm2, %xmm3
callq 0x565a0
addl $0x2, %r14d
cmpl %r15d, %r14d
jl 0xc4d43
movq %r13, %rcx
jmp 0xc4f61
movl %r15d, %eax
movq 0x28(%rsp), %rdx
subl %edx, %eax
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
andq %rcx, %rdx
subq %rdx, %r15
andq %rcx, %r15
orq %r15, %rax
leaq 0x38(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x55960
movq %r14, %rdi
callq 0x58410
leaq 0x38(%rsp), %rcx
movq $0x0, (%rcx)
movq (%rax), %rax
movq %rax, 0x8(%rcx)
movq (%rbx), %rax
leaq 0x30(%rsp), %rdx
movq %rbx, %rdi
movq %r13, %rsi
callq *0x98(%rax)
leaq 0x30(%rsp), %rdi
callq 0x555c0
leaq 0x30(%rsp), %rdi
callq 0x58410
leaq 0x38(%rsp), %rdx
movq $0x0, (%rdx)
movq (%rax), %rax
movq %rax, 0x8(%rdx)
movq (%rbx), %rax
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
movq %r13, %rcx
callq *0x90(%rax)
leaq 0x30(%rsp), %rdi
callq 0x59148
jmp 0xc4f3a
movq 0xc0(%rbx), %rdi
movl $0x17, %esi
callq 0x55110
movq 0xc0(%rbx), %rdi
movsd 0x2e53b(%rip), %xmm0    # 0xf3388
movaps %xmm0, %xmm1
movaps %xmm0, %xmm2
callq 0x58030
movq 0xc0(%rbx), %rdi
movq 0x28(%rsp), %rdx
xorps %xmm0, %xmm0
cvtsi2sd %edx, %xmm0
movq %rdx, %rax
shrq $0x20, %rax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movl %r15d, %ecx
subl %edx, %ecx
xorps %xmm2, %xmm2
cvtsi2sd %ecx, %xmm2
shrq $0x20, %r15
subl %eax, %r15d
xorps %xmm3, %xmm3
cvtsi2sd %r15d, %xmm3
movsd %xmm0, 0x8(%rsp)
movsd %xmm1, 0x10(%rsp)
movsd %xmm2, 0x18(%rsp)
movsd %xmm3, 0x20(%rsp)
callq 0x565a0
movq 0xc0(%rbx), %rdi
callq 0x57d40
movq 0xc0(%rbx), %rdi
movl $0x2, %esi
callq 0x55110
movq 0xd0(%rbx), %rdi
movl $0x17, %esi
callq 0x55110
movq 0xd0(%rbx), %rdi
movsd 0x2e49a(%rip), %xmm0    # 0xf3388
movaps %xmm0, %xmm1
movaps %xmm0, %xmm2
callq 0x58030
movq 0xd0(%rbx), %rdi
movsd 0x8(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x18(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
callq 0x565a0
movq 0xd0(%rbx), %rdi
callq 0x57d40
movq 0xd0(%rbx), %rdi
movl $0x2, %esi
callq 0x55110
cmpw $0x0, 0xa(%rbx)
jne 0xc4f49
movq %rbx, %rdi
callq 0xc3f6e
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r12, %rcx
shrq $0x20, %rcx
movl %r15d, %r14d
subl %r12d, %r14d
movl %r14d, %eax
shrl $0x1f, %eax
addl %r14d, %eax
andl $-0x2, %eax
subl %r14d, %eax
movq %r15, %rdx
shrq $0x20, %rdx
leal (%rcx,%rax), %r13d
addl $0x2, %r13d
cmpl %edx, %r13d
movq %rcx, %r12
movq %rdx, 0x8(%rsp)
jge 0xc4fd7
leal -0x1(%r15), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0xc0(%rbx), %rdi
xorps %xmm1, %xmm1
cvtsi2sd %r13d, %xmm1
movsd 0x10(%rsp), %xmm0
movsd 0x2e3c8(%rip), %xmm2    # 0xf3388
movapd %xmm2, %xmm3
callq 0x565a0
movq 0x8(%rsp), %rdx
addl $0x2, %r13d
cmpl %edx, %r13d
jl 0xc4fa3
movl %edx, %r13d
movq %r12, 0x18(%rsp)
subl %r12d, %r13d
addl %r13d, %r14d
movl %r14d, %eax
shrl $0x1f, %eax
addl %r14d, %eax
andl $-0x2, %eax
subl %r14d, %eax
leal (%r15,%rax), %r14d
addl $-0x2, %r14d
movq 0x28(%rsp), %r12
cmpl %r12d, %r14d
jl 0xc5049
movq 0x8(%rsp), %rax
decl %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0xc0(%rbx), %rdi
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x2e351(%rip), %xmm2    # 0xf3388
movapd %xmm2, %xmm3
callq 0x565a0
addl $-0x2, %r14d
cmpl %r12d, %r14d
jge 0xc501a
movl %r13d, %eax
shrl $0x1f, %eax
addl %r13d, %eax
andl $-0x2, %eax
subl %eax, %r13d
notl %r13d
addl 0x8(%rsp), %r13d
movq 0x18(%rsp), %r14
cmpl %r14d, %r13d
jl 0xc50a8
xorps %xmm0, %xmm0
cvtsi2sdl 0x28(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0xc0(%rbx), %rdi
xorps %xmm1, %xmm1
cvtsi2sd %r13d, %xmm1
movsd 0x8(%rsp), %xmm0
movsd 0x2e2f2(%rip), %xmm2    # 0xf3388
movapd %xmm2, %xmm3
callq 0x565a0
addl $-0x2, %r13d
cmpl %r14d, %r13d
jge 0xc5079
movq 0xc0(%rbx), %rdi
callq 0x57d40
movq 0x28(%rsp), %r12
movq %r12, %r14
shrq $0x20, %r14
cmpl %r15d, %ebp
jge 0xc5100
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0xd0(%rbx), %rdi
xorps %xmm0, %xmm0
cvtsi2sd %ebp, %xmm0
movsd 0x8(%rsp), %xmm1
movsd 0x2e299(%rip), %xmm2    # 0xf3388
movapd %xmm2, %xmm3
callq 0x565a0
addl $0x2, %ebp
cmpl %r15d, %ebp
jl 0xc50d3
movl %r15d, %r13d
subl 0x28(%rsp), %r13d
movl %r13d, %eax
shrl $0x1f, %eax
addl %r13d, %eax
andl $-0x2, %eax
subl %r13d, %eax
movq %r15, %r12
shrq $0x20, %r12
leal (%r14,%rax), %ebp
addl $0x2, %ebp
cmpl %r12d, %ebp
jge 0xc5168
leal -0x1(%r15), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0xd0(%rbx), %rdi
xorps %xmm1, %xmm1
cvtsi2sd %ebp, %xmm1
movsd 0x8(%rsp), %xmm0
movsd 0x2e231(%rip), %xmm2    # 0xf3388
movapd %xmm2, %xmm3
callq 0x565a0
addl $0x2, %ebp
cmpl %r12d, %ebp
jl 0xc513b
movl %r12d, %ebp
subl %r14d, %ebp
addl %ebp, %r13d
movl %r13d, %eax
shrl $0x1f, %eax
addl %r13d, %eax
andl $-0x2, %eax
subl %r13d, %eax
addl %eax, %r15d
addl $-0x2, %r15d
movq 0x28(%rsp), %r13
cmpl %r13d, %r15d
jl 0xc51d2
leal -0x1(%r12), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0xd0(%rbx), %rdi
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd 0x8(%rsp), %xmm1
movsd 0x2e1c8(%rip), %xmm2    # 0xf3388
movapd %xmm2, %xmm3
callq 0x565a0
addl $-0x2, %r15d
cmpl %r13d, %r15d
jge 0xc51a3
movl %ebp, %eax
shrl $0x1f, %eax
addl %ebp, %eax
andl $-0x2, %eax
subl %eax, %ebp
notl %ebp
addl %r12d, %ebp
cmpl %r14d, %ebp
jl 0xc4c18
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0xd0(%rbx), %rdi
xorps %xmm1, %xmm1
cvtsi2sd %ebp, %xmm1
movsd 0x8(%rsp), %xmm0
movsd 0x2e172(%rip), %xmm2    # 0xf3388
movapd %xmm2, %xmm3
callq 0x565a0
addl $-0x2, %ebp
cmpl %r14d, %ebp
jge 0xc51fa
jmp 0xc4c18
jmp 0xc5230
jmp 0xc5230
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x59148
movq %rbx, %rdi
callq 0x57090
nop