// File: /workspace/github_c_makefile_star2_O2/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 0xbec41
movq %r8, %r12
movl %ecx, %ebp
movq %rdx, %r14
movq %rsi, %r13
movq %rdi, %rbx
addq $0x28, %rdi
callq 0x63e10
movq %rax, 0x10(%rsp)
movq %rdx, %r15
cmpw $0x0, 0xa(%rbx)
jne 0xbe48c
movq %rbx, %rdi
callq 0xbdda4
movq 0xc0(%rbx), %rdi
movl 0x8(%r14), %eax
movl $0xff, %ecx
movl %eax, %edx
andl %ecx, %edx
cvtsi2sd %edx, %xmm0
movsd 0x24ee9(%rip), %xmm3    # 0xe3350
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 0x592c0
movq 0xd0(%rbx), %rdi
movl 0x8(%r14), %eax
movl $0xff, %ecx
movl %eax, %edx
andl %ecx, %edx
cvtsi2sd %edx, %xmm0
movsd 0x24ea4(%rip), %xmm3    # 0xe3350
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 0x592c0
movq 0xa3ad0(%rip), %rax     # 0x161fa8
testl %ebp, (%rax)
je 0xbe534
movq 0xa350d(%rip), %rcx     # 0x1619f0
movzwl 0xa(%rbx), %eax
testl %ebp, (%rcx)
je 0xbe5a4
testw %ax, %ax
movq 0x10(%rsp), %rbp
je 0xbe64c
movq %rbp, %r14
shrq $0x20, %r14
cvtsi2sd %r14d, %xmm1
cvtsi2sd %r15d, %xmm0
movsd %xmm0, (%rsp)
movq %r15, %r13
shrq $0x20, %r13
cvtsi2sd %r13d, %xmm0
movsd %xmm0, 0x18(%rsp)
cvtsi2sd %ebp, %xmm0
movsd %xmm0, 0x20(%rsp)
jmp 0xbe7c7
movq 0xa32e5(%rip), %rax     # 0x161820
cmpl %ebp, (%rax)
jne 0xbe5db
cmpw $0x0, 0xa(%rbx)
je 0xbe98a
movq 0x10(%rsp), %rcx
cvtsi2sd %ecx, %xmm1
movsd 0x24e21(%rip), %xmm0    # 0xe3380
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rsp)
movq %rcx, %rax
shrq $0x20, %rax
cvtsi2sd %eax, %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rsp)
notl %ecx
addl %r15d, %ecx
cvtsi2sd %ecx, %xmm0
movsd %xmm0, 0x10(%rsp)
shrq $0x20, %r15
notl %eax
addl %r15d, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x18(%rsp)
jmp 0xbea07
testw %ax, %ax
movq 0x10(%rsp), %rdx
je 0xbe903
cvtsi2sd %edx, %xmm0
movq %rdx, %rax
shrq $0x20, %rax
cvtsi2sd %eax, %xmm1
movl %r15d, %ecx
subl %edx, %ecx
cvtsi2sd %ecx, %xmm2
shrq $0x20, %r15
subl %eax, %r15d
cvtsi2sd %r15d, %xmm3
jmp 0xbe96d
movq 0xa3736(%rip), %rax     # 0x161d18
testl %ebp, (%rax)
je 0xbea4f
callq 0x56d80
cmpl $0x2a96, %eax           # imm = 0x2A96
jl 0xbea93
cmpw $0x0, 0xa(%rbx)
movq 0x10(%rsp), %r14
je 0xbeb3e
cvtsi2sd %r14d, %xmm0
movsd %xmm0, 0x8(%rsp)
movq %r14, %rax
shrq $0x20, %rax
cvtsi2sd %eax, %xmm0
movsd %xmm0, (%rsp)
movl %r15d, %ecx
subl %r14d, %ecx
cvtsi2sd %ecx, %xmm0
movsd %xmm0, 0x10(%rsp)
shrq $0x20, %r15
subl %eax, %r15d
cvtsi2sd %r15d, %xmm0
movsd %xmm0, 0x18(%rsp)
jmp 0xbebcb
movq 0xc0(%rbx), %rdi
movl (%r12), %eax
addl %ebp, %eax
cvtsi2sd %eax, %xmm0
movq %rbp, %r14
shrq $0x20, %r14
cvtsi2sd %r14d, %xmm1
movsd %xmm1, 0x8(%rsp)
callq 0x584d0
movq 0xc0(%rbx), %rdi
movl %r15d, %eax
subl (%r12), %eax
cvtsi2sd %eax, %xmm0
movsd 0x8(%rsp), %xmm1
callq 0x57580
movq 0xc0(%rbx), %rdi
cvtsi2sd %r15d, %xmm0
movsd %xmm0, (%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 0x585e0
movq 0xc0(%rbx), %rdi
movq %r15, %r13
shrq $0x20, %r13
movl %r13d, %eax
subl 0x4(%r12), %eax
cvtsi2sd %eax, %xmm1
movsd (%rsp), %xmm0
callq 0x57580
movq 0xc0(%rbx), %rdi
cvtsi2sd %r13d, %xmm1
movsd %xmm1, 0x18(%rsp)
movl %r15d, %eax
subl (%r12), %eax
cvtsi2sd %eax, %xmm4
movsd (%rsp), %xmm0
movaps %xmm0, %xmm2
movapd %xmm1, %xmm3
movapd %xmm1, %xmm5
callq 0x585e0
movq 0xc0(%rbx), %rdi
movl (%r12), %eax
addl %ebp, %eax
cvtsi2sd %eax, %xmm0
movsd 0x18(%rsp), %xmm1
callq 0x57580
movq 0xc0(%rbx), %rdi
cvtsi2sd %ebp, %xmm0
movsd %xmm0, 0x20(%rsp)
movl %r13d, %eax
subl 0x4(%r12), %eax
cvtsi2sd %eax, %xmm5
movsd 0x18(%rsp), %xmm1
movapd %xmm0, %xmm2
movaps %xmm1, %xmm3
movapd %xmm0, %xmm4
callq 0x585e0
movq 0xc0(%rbx), %rdi
movl 0x4(%r12), %eax
addl %r14d, %eax
cvtsi2sd %eax, %xmm1
movsd 0x20(%rsp), %xmm0
callq 0x57580
movq 0xc0(%rbx), %rdi
movl (%r12), %eax
addl %ebp, %eax
cvtsi2sd %eax, %xmm4
movsd 0x20(%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movapd %xmm0, %xmm2
movapd %xmm1, %xmm3
movapd %xmm1, %xmm5
callq 0x585e0
movq 0xc0(%rbx), %rdi
callq 0x58fc0
movsd 0x8(%rsp), %xmm1
movq 0xd0(%rbx), %rdi
movl (%r12), %eax
addl %ebp, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm1, 0x8(%rsp)
callq 0x584d0
movq 0xd0(%rbx), %rdi
movl %r15d, %eax
subl (%r12), %eax
cvtsi2sd %eax, %xmm0
movsd 0x8(%rsp), %xmm1
callq 0x57580
movq 0xd0(%rbx), %rdi
movl 0x4(%r12), %eax
addl %r14d, %eax
cvtsi2sd %eax, %xmm5
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movaps %xmm0, %xmm2
movaps %xmm1, %xmm3
movaps %xmm0, %xmm4
callq 0x585e0
movq 0xd0(%rbx), %rdi
movl %r13d, %eax
subl 0x4(%r12), %eax
cvtsi2sd %eax, %xmm1
movsd (%rsp), %xmm0
callq 0x57580
movq 0xd0(%rbx), %rdi
subl (%r12), %r15d
cvtsi2sd %r15d, %xmm4
movsd (%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
movaps %xmm0, %xmm2
movaps %xmm1, %xmm3
movaps %xmm1, %xmm5
callq 0x585e0
movq 0xd0(%rbx), %rdi
movl (%r12), %eax
addl %ebp, %eax
cvtsi2sd %eax, %xmm0
movsd 0x18(%rsp), %xmm1
callq 0x57580
movq 0xd0(%rbx), %rdi
subl 0x4(%r12), %r13d
cvtsi2sd %r13d, %xmm5
movsd 0x20(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
movaps %xmm0, %xmm2
movaps %xmm1, %xmm3
movaps %xmm0, %xmm4
callq 0x585e0
movq 0xd0(%rbx), %rdi
addl 0x4(%r12), %r14d
cvtsi2sd %r14d, %xmm1
movsd 0x20(%rsp), %xmm0
callq 0x57580
movq 0xd0(%rbx), %rdi
addl (%r12), %ebp
cvtsi2sd %ebp, %xmm4
movsd 0x20(%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movapd %xmm0, %xmm2
movapd %xmm1, %xmm3
movapd %xmm1, %xmm5
callq 0x585e0
jmp 0xbe979
movq 0xc0(%rbx), %rdi
cvtsi2sd %edx, %xmm0
movsd %xmm0, 0x8(%rsp)
movq %rdx, %rax
shrq $0x20, %rax
cvtsi2sd %eax, %xmm1
movsd %xmm1, (%rsp)
movl %r15d, %ecx
subl %edx, %ecx
cvtsi2sd %ecx, %xmm2
movsd %xmm2, 0x10(%rsp)
shrq $0x20, %r15
subl %eax, %r15d
cvtsi2sd %r15d, %xmm3
movsd %xmm3, 0x18(%rsp)
callq 0x576b0
movq 0xc0(%rbx), %rdi
callq 0x58fc0
movsd 0x18(%rsp), %xmm3
movsd 0x10(%rsp), %xmm2
movsd (%rsp), %xmm1
movsd 0x8(%rsp), %xmm0
movq 0xd0(%rbx), %rdi
callq 0x576b0
movq 0xd0(%rbx), %rdi
callq 0x58fc0
jmp 0xbec32
movq 0xc0(%rbx), %rdi
movsd 0x249d7(%rip), %xmm0    # 0xe3370
callq 0x57ed0
movq 0xc0(%rbx), %rdi
movq 0x10(%rsp), %rcx
cvtsi2sd %ecx, %xmm0
movsd 0x249ca(%rip), %xmm2    # 0xe3380
addsd %xmm2, %xmm0
movq %rcx, %rax
shrq $0x20, %rax
cvtsi2sd %eax, %xmm1
addsd %xmm2, %xmm1
notl %ecx
addl %r15d, %ecx
cvtsi2sd %ecx, %xmm2
shrq $0x20, %r15
notl %eax
addl %r15d, %eax
cvtsi2sd %eax, %xmm3
movsd %xmm0, 0x8(%rsp)
movsd %xmm1, (%rsp)
movsd %xmm2, 0x10(%rsp)
movsd %xmm3, 0x18(%rsp)
callq 0x576b0
movq 0xc0(%rbx), %rdi
callq 0x581d0
movq 0xd0(%rbx), %rdi
movsd 0x2495a(%rip), %xmm0    # 0xe3370
callq 0x57ed0
movq 0xd0(%rbx), %rdi
movsd 0x8(%rsp), %xmm0
movsd (%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movsd 0x18(%rsp), %xmm3
callq 0x576b0
movq 0xd0(%rbx), %rdi
callq 0x581d0
jmp 0xbec32
movq 0xa343a(%rip), %rax     # 0x161e90
testl %ebp, (%rax)
je 0xbec32
movq 0x10(%rsp), %r14
leal 0x1(%r14), %r13d
cmpw $0x0, 0xa(%rbx)
cvtsi2sd %r14d, %xmm0
movsd %xmm0, 0x8(%rsp)
je 0xbec52
movq %r14, %r12
shrq $0x20, %r12
cvtsi2sd %r12d, %xmm0
movsd %xmm0, (%rsp)
jmp 0xbedad
movl %r15d, %eax
movq 0x10(%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 0x28(%rsp), %r14
pushq $-0x1
popq %rdx
movq %r14, %rdi
callq 0x569c0
movq %r14, %rdi
callq 0x596e0
leaq 0x38(%rsp), %rcx
andq $0x0, (%rcx)
movq (%rax), %rax
movq %rax, 0x8(%rcx)
movq (%rbx), %rax
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
movq %r13, %rsi
callq *0x98(%rax)
leaq 0x28(%rsp), %rdi
callq 0x56600
leaq 0x28(%rsp), %rdi
callq 0x596e0
leaq 0x38(%rsp), %rdx
andq $0x0, (%rdx)
movq (%rax), %rax
movq %rax, 0x8(%rdx)
movq (%rbx), %rax
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
movq %r13, %rcx
callq *0x90(%rax)
leaq 0x28(%rsp), %rdi
callq 0x5a4c8
jmp 0xbec32
movq 0xc0(%rbx), %rdi
pushq $0x17
popq %rsi
callq 0x56110
movq 0xc0(%rbx), %rdi
movsd 0x24814(%rip), %xmm0    # 0xe3370
movaps %xmm0, %xmm1
movaps %xmm0, %xmm2
callq 0x592c0
movq 0xc0(%rbx), %rdi
cvtsi2sd %r14d, %xmm0
movq %r14, %rax
shrq $0x20, %rax
cvtsi2sd %eax, %xmm1
movl %r15d, %ecx
subl %r14d, %ecx
cvtsi2sd %ecx, %xmm2
shrq $0x20, %r15
subl %eax, %r15d
cvtsi2sd %r15d, %xmm3
movsd %xmm0, 0x8(%rsp)
movsd %xmm1, (%rsp)
movsd %xmm2, 0x10(%rsp)
movsd %xmm3, 0x18(%rsp)
callq 0x576b0
movq 0xc0(%rbx), %rdi
callq 0x58fc0
movq 0xc0(%rbx), %rdi
pushq $0x2
popq %rsi
callq 0x56110
movq 0xd0(%rbx), %rdi
pushq $0x17
popq %rsi
callq 0x56110
movq 0xd0(%rbx), %rdi
movsd 0x24787(%rip), %xmm0    # 0xe3370
movaps %xmm0, %xmm1
movaps %xmm0, %xmm2
callq 0x592c0
movq 0xd0(%rbx), %rdi
movsd 0x8(%rsp), %xmm0
movsd (%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movsd 0x18(%rsp), %xmm3
callq 0x576b0
movq 0xd0(%rbx), %rdi
callq 0x58fc0
movq 0xd0(%rbx), %rdi
pushq $0x2
popq %rsi
callq 0x56110
cmpw $0x0, 0xa(%rbx)
jne 0xbec41
movq %rbx, %rdi
callq 0xbddf8
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r14, %r12
shrq $0x20, %r12
cvtsi2sd %r12d, %xmm0
movsd %xmm0, (%rsp)
movl %r13d, %ebp
cmpl %r15d, %ebp
jge 0xbec91
movq 0xc0(%rbx), %rdi
cvtsi2sd %ebp, %xmm0
movsd (%rsp), %xmm1
movsd 0x246ed(%rip), %xmm2    # 0xe3370
movapd %xmm2, %xmm3
callq 0x576b0
addl $0x2, %ebp
jmp 0xbec66
movl %r15d, %eax
subl 0x10(%rsp), %eax
pushq $0x2
popq %rcx
movl %eax, 0x20(%rsp)
cltd
idivl %ecx
movq %r15, %r14
shrq $0x20, %r14
leal -0x1(%r15), %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x18(%rsp)
movl %r12d, %ebp
subl %edx, %ebp
addl $0x2, %ebp
cmpl %r14d, %ebp
jge 0xbece8
movq 0xc0(%rbx), %rdi
cvtsi2sd %ebp, %xmm1
movsd 0x18(%rsp), %xmm0
movsd 0x24693(%rip), %xmm2    # 0xe3370
movapd %xmm2, %xmm3
callq 0x576b0
jmp 0xbecbc
movl %r14d, %ecx
subl %r12d, %ecx
movl 0x20(%rsp), %eax
movl %ecx, 0x34(%rsp)
addl %ecx, %eax
cltd
pushq $0x2
popq %rcx
idivl %ecx
leal -0x1(%r14), %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x18(%rsp)
movl %r15d, %ebp
subl %edx, %ebp
addl $-0x2, %ebp
cmpl 0x10(%rsp), %ebp
jl 0xbed3e
movq 0xc0(%rbx), %rdi
cvtsi2sd %ebp, %xmm0
movsd 0x18(%rsp), %xmm1
movsd 0x2463d(%rip), %xmm2    # 0xe3370
movapd %xmm2, %xmm3
callq 0x576b0
jmp 0xbed11
movl 0x34(%rsp), %eax
cltd
pushq $0x2
popq %rcx
idivl %ecx
movl %edx, %ebp
notl %ebp
addl %r14d, %ebp
movq 0xc0(%rbx), %rdi
cmpl %r12d, %ebp
jl 0xbed7b
cvtsi2sd %ebp, %xmm1
movsd 0x8(%rsp), %xmm0
movsd 0x24603(%rip), %xmm2    # 0xe3370
movapd %xmm2, %xmm3
callq 0x576b0
addl $-0x2, %ebp
jmp 0xbed4f
callq 0x58fc0
movq 0x10(%rsp), %r14
jmp 0xbedad
movq 0xd0(%rbx), %rdi
cvtsi2sd %r13d, %xmm0
movsd (%rsp), %xmm1
movsd 0x245d0(%rip), %xmm2    # 0xe3370
movapd %xmm2, %xmm3
callq 0x576b0
addl $0x2, %r13d
cmpl %r15d, %r13d
jl 0xbed87
movl %r15d, %ebp
subl %r14d, %ebp
pushq $0x2
popq %rcx
movl %ebp, %eax
cltd
idivl %ecx
movq %r15, %r13
shrq $0x20, %r13
leal -0x1(%r15), %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, (%rsp)
movl %r12d, %r14d
subl %edx, %r14d
addl $0x2, %r14d
cmpl %r13d, %r14d
jge 0xbee07
movq 0xd0(%rbx), %rdi
cvtsi2sd %r14d, %xmm1
movsd (%rsp), %xmm0
movsd 0x24574(%rip), %xmm2    # 0xe3370
movapd %xmm2, %xmm3
callq 0x576b0
jmp 0xbedda
movl %r13d, %r14d
subl %r12d, %r14d
addl %r14d, %ebp
movl %ebp, %eax
cltd
pushq $0x2
popq %rcx
idivl %ecx
leal -0x1(%r13), %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, (%rsp)
subl %edx, %r15d
addl $-0x2, %r15d
movq 0x10(%rsp), %rbp
cmpl %ebp, %r15d
jl 0xbee5e
movq 0xd0(%rbx), %rdi
cvtsi2sd %r15d, %xmm0
movsd (%rsp), %xmm1
movsd 0x24521(%rip), %xmm2    # 0xe3370
movapd %xmm2, %xmm3
callq 0x576b0
addl $-0x2, %r15d
jmp 0xbee31
movl %r14d, %eax
cltd
pushq $0x2
popq %rcx
idivl %ecx
movl %edx, %ebp
notl %ebp
addl %r13d, %ebp
movq 0xd0(%rbx), %rdi
cmpl %r12d, %ebp
jl 0xbe980
cvtsi2sd %ebp, %xmm1
movsd 0x8(%rsp), %xmm0
movsd 0x244e0(%rip), %xmm2    # 0xe3370
movapd %xmm2, %xmm3
callq 0x576b0
addl $-0x2, %ebp
jmp 0xbee6e
jmp 0xbeea2
jmp 0xbeea2
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x5a4c8
movq %rbx, %rdi
callq 0x58260
nop