// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/graphics/backends/cairo/surfacecairo.cpp
// Function: smooth::GUI::SurfaceCairo::SetText(smooth::String const&, smooth::GUI::Rect const&, smooth::GUI::Font const&, bool)
S::Int S::GUI::SurfaceCairo::SetText(const String &string, const Rect &iRect, const Font &iFont, Bool shadow)
{
	if (window == NIL) return Success();

	if (string == NIL) return Error();
	if (shadow)	   return SurfaceBackend::SetText(string, iRect, iFont, shadow);

	Font	 font	      = iFont;
	Rect	 rect	      = iRect;
	Int	 lineHeight   = 0;

	/* Set up Cairo font.
	 */
	Rect	 tRect = rightToLeft.TranslateRect(rect);

	PangoLayout		*layout = NIL;
	PangoFontDescription	*desc	= pango_font_description_from_string(String(font.GetName())
									    .Append(" ")
									    .Append(font.GetStyle() & Font::Italic ? "Italic " : "")
									    .Append(font.GetWeight() >= Font::Bold ? "Bold " : "")
									    .Append(String::FromInt(Math::Round(font.GetSize() * fontSize.TranslateY(96) / 96.0))));

	if (!painting)
	{
		CreateCairoContext();

		cairo_save(context);
		cairo_rectangle(context, tRect.left, tRect.top, tRect.GetWidth(), tRect.GetHeight() + 1);
		cairo_clip(context);

		cairo_set_source_rgb(context, font.GetColor().GetRed() / 255.0, font.GetColor().GetGreen() / 255.0, font.GetColor().GetBlue() / 255.0);

		layout = pango_cairo_create_layout(context);

		pango_layout_set_font_description(layout, desc);
	}

	cairo_save(paintContextCairo);
	cairo_rectangle(paintContextCairo, tRect.left, tRect.top, tRect.GetWidth(), tRect.GetHeight() + 1);
	cairo_clip(paintContextCairo);

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

	PangoLayout	*paintLayout = pango_cairo_create_layout(paintContextCairo);

	pango_layout_set_font_description(paintLayout, desc);
	pango_font_description_free(desc);

	/* Draw text line by line.
	 */
	const Array<String>	&lines = string.Explode("\n");

	if (lines.Length() > 1) lineHeight = font.GetScaledTextSizeY() + 3;

	foreach (const String &line, lines)
	{
		Int	 lineLength = line.Length();

		if (lineLength == 0) { rect.top += lineHeight; continue; }

		Rect	 tRect = rightToLeft.TranslateRect(rect);

		tRect.left = rightToLeft.GetRightToLeft() ? tRect.right - font.GetScaledTextSizeX(line) : tRect.left;

		Int	 utf8Length = (line != NIL ? strlen(line.ConvertTo("UTF-8")) : 0);

		PangoAttrList	*attributes    = pango_attr_list_new();
		PangoAttribute	*underline     = pango_attr_underline_new(font.GetStyle() & Font::Underline ? PANGO_UNDERLINE_SINGLE : PANGO_UNDERLINE_NONE);
		PangoAttribute	*strikethrough = pango_attr_strikethrough_new(font.GetStyle() & Font::StrikeOut ? True : False);

		underline->end_index	 = utf8Length;
		strikethrough->end_index = utf8Length;

		pango_attr_list_insert(attributes, underline);
		pango_attr_list_insert(attributes, strikethrough);

		if (!painting)
		{
			pango_layout_set_attributes(layout, attributes);

			pango_layout_set_text(layout, String(line).Append(" ").ConvertTo("UTF-8"), -1);

			cairo_move_to(context, tRect.left, tRect.top);
			pango_cairo_show_layout(context, layout);
		}

		pango_layout_set_attributes(paintLayout, attributes);

		pango_layout_set_text(paintLayout, String(line).Append(" ").ConvertTo("UTF-8"), -1);

		cairo_move_to(paintContextCairo, tRect.left, tRect.top);
		pango_cairo_show_layout(paintContextCairo, paintLayout);

		pango_attr_list_unref(attributes);

		rect.top += lineHeight;
	}

	if (!painting)
	{
		g_object_unref(layout);

		cairo_restore(context);

		DestroyCairoContext();
	}

	g_object_unref(paintLayout);

	cairo_restore(paintContextCairo);

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4e0, %rsp            # imm = 0x4E0
movb %r8b, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x288(%rbp)
cmpq $0x0, 0x50(%rax)
jne 0x12d1da
leaq -0x40(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x5ca80
movq -0x298(%rbp), %rdi
callq 0x59680
movl %eax, -0x28c(%rbp)
jmp 0x12d1a9
movl -0x28c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5a410
jmp 0x12e190
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5a410
jmp 0x12e19c
movq -0x18(%rbp), %rdi
xorl %esi, %esi
callq 0x59320
testb $0x1, %al
jne 0x12d1eb
jmp 0x12d245
leaq -0x60(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x5a9c0
movq -0x2a8(%rbp), %rdi
callq 0x59680
movl %eax, -0x29c(%rbp)
jmp 0x12d214
movl -0x29c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x5b5b0
jmp 0x12e190
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x5b5b0
jmp 0x12e19c
testb $0x1, -0x29(%rbp)
je 0x12d274
movq -0x288(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movb -0x29(%rbp), %al
andb $0x1, %al
movzbl %al, %r8d
callq 0x6eea0
movl %eax, -0x4(%rbp)
jmp 0x12e190
movq -0x28(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0x59da0
movq -0x288(%rbp), %rdi
movq -0x20(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0xb0(%rbp)
movl $0x0, -0xb4(%rbp)
addq $0x28, %rdi
leaq -0xb0(%rbp), %rsi
callq 0x73390
movq %rdx, -0x2b8(%rbp)
movq %rax, -0x2b0(%rbp)
jmp 0x12d2c3
movq -0x2b8(%rbp), %rax
movq -0x2b0(%rbp), %rcx
movq %rcx, -0xc4(%rbp)
movq %rax, -0xbc(%rbp)
movq $0x0, -0xd0(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5cc70
movq %rax, -0x2c0(%rbp)
jmp 0x12d2ff
movq -0x2c0(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x5b6d0
jmp 0x12d314
leaq 0x8ec65(%rip), %rsi     # 0x1bbf80
leaq -0x108(%rbp), %rdi
callq 0x5c1f0
jmp 0x12d329
leaq -0xf0(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x5a710
movq %rax, -0x2c8(%rbp)
jmp 0x12d345
leaq -0xa0(%rbp), %rdi
callq 0x5d370
movw %ax, -0x2ca(%rbp)
jmp 0x12d35a
movw -0x2ca(%rbp), %ax
movq 0xdbbe8(%rip), %rcx     # 0x208f50
movw (%rcx), %cx
andw %cx, %ax
testw %ax, %ax
leaq 0x79a3e(%rip), %rax     # 0x1a6db6
leaq 0x78505(%rip), %rsi     # 0x1a5884
cmovneq %rax, %rsi
leaq -0x120(%rbp), %rdi
callq 0x5c1f0
jmp 0x12d391
movq -0x2c8(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x5a710
movq %rax, -0x2d8(%rbp)
jmp 0x12d3ad
leaq -0xa0(%rbp), %rdi
callq 0x5b120
movw %ax, -0x2da(%rbp)
jmp 0x12d3c2
movw -0x2da(%rbp), %ax
cwtl
movq 0xdb04f(%rip), %rcx     # 0x208420
movswl (%rcx), %ecx
subl %ecx, %eax
leaq 0x799e1(%rip), %rax     # 0x1a6dbe
leaq 0x784a0(%rip), %rsi     # 0x1a5884
cmovgeq %rax, %rsi
leaq -0x138(%rbp), %rdi
callq 0x5c1f0
jmp 0x12d3f6
movq -0x2d8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x5a710
movq %rax, -0x2e8(%rbp)
jmp 0x12d412
leaq -0xa0(%rbp), %rdi
callq 0x5d970
movw %ax, -0x2ea(%rbp)
jmp 0x12d427
movq -0x288(%rbp), %rdi
movw -0x2ea(%rbp), %ax
cwtl
movl %eax, -0x2f4(%rbp)
addq $0x24, %rdi
movl $0x60, %esi
callq 0x72f90
movl %eax, -0x2f0(%rbp)
jmp 0x12d452
movl -0x2f0(%rbp), %ecx
movl -0x2f4(%rbp), %eax
imull %ecx, %eax
cvtsi2sd %eax, %xmm0
movsd 0x5a053(%rip), %xmm1    # 0x1874c0
divsd %xmm1, %xmm0
callq 0x5a970
movq %rax, -0x300(%rbp)
jmp 0x12d47f
movq -0x300(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x5b290
jmp 0x12d494
movq -0x2e8(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x5a710
movq %rax, -0x308(%rbp)
jmp 0x12d4b0
movq -0x308(%rbp), %rdi
callq 0x5d090
movq %rax, -0x310(%rbp)
jmp 0x12d4c5
movq -0x310(%rbp), %rdi
callq 0x594b0
movq %rax, -0x318(%rbp)
jmp 0x12d4da
leaq -0x150(%rbp), %rdi
callq 0x5df00
leaq -0x138(%rbp), %rdi
callq 0x5df00
leaq -0x120(%rbp), %rdi
callq 0x5df00
leaq -0x108(%rbp), %rdi
callq 0x5df00
leaq -0xf0(%rbp), %rdi
callq 0x5df00
movq -0x318(%rbp), %rcx
movq -0x288(%rbp), %rax
movq %rcx, -0xd8(%rbp)
cmpw $0x0, 0xa(%rax)
jne 0x12d7e9
movq -0x288(%rbp), %rdi
callq 0x12b760
jmp 0x12d544
movq -0x288(%rbp), %rax
movq 0xc0(%rax), %rdi
callq 0x5b400
jmp 0x12d559
movq -0x288(%rbp), %rax
movq 0xc0(%rax), %rax
movq %rax, -0x338(%rbp)
cvtsi2sdl -0xc4(%rbp), %xmm0
movsd %xmm0, -0x330(%rbp)
cvtsi2sdl -0xc0(%rbp), %xmm0
movsd %xmm0, -0x328(%rbp)
leaq -0xc4(%rbp), %rdi
callq 0x5a5a0
movl %eax, -0x31c(%rbp)
jmp 0x12d5a2
movl -0x31c(%rbp), %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x348(%rbp)
leaq -0xc4(%rbp), %rdi
callq 0x591a0
movl %eax, -0x33c(%rbp)
jmp 0x12d5c8
movsd -0x348(%rbp), %xmm2
movsd -0x328(%rbp), %xmm1
movsd -0x330(%rbp), %xmm0
movq -0x338(%rbp), %rdi
movl -0x33c(%rbp), %eax
incl %eax
cvtsi2sd %eax, %xmm3
callq 0x5aa10
jmp 0x12d5fa
movq -0x288(%rbp), %rax
movq 0xc0(%rax), %rdi
callq 0x5c3b0
jmp 0x12d60f
movq -0x288(%rbp), %rax
movq 0xc0(%rax), %rax
movq %rax, -0x358(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5bc50
movq %rax, -0x350(%rbp)
jmp 0x12d639
movq -0x350(%rbp), %rdi
callq 0x59f20
movl %eax, -0x35c(%rbp)
jmp 0x12d64d
movl -0x35c(%rbp), %eax
cvtsi2sd %eax, %xmm0
movsd 0x59cf1(%rip), %xmm1    # 0x187350
divsd %xmm1, %xmm0
movsd %xmm0, -0x370(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5bc50
movq %rax, -0x368(%rbp)
jmp 0x12d680
movq -0x368(%rbp), %rdi
callq 0x5d920
movl %eax, -0x374(%rbp)
jmp 0x12d694
movl -0x374(%rbp), %eax
cvtsi2sd %eax, %xmm0
movsd 0x59caa(%rip), %xmm1    # 0x187350
divsd %xmm1, %xmm0
movsd %xmm0, -0x388(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5bc50
movq %rax, -0x380(%rbp)
jmp 0x12d6c7
movq -0x380(%rbp), %rdi
callq 0x5b650
movl %eax, -0x38c(%rbp)
jmp 0x12d6db
movsd -0x388(%rbp), %xmm1
movsd -0x370(%rbp), %xmm0
movq -0x358(%rbp), %rdi
movl -0x38c(%rbp), %eax
cvtsi2sd %eax, %xmm2
movsd 0x59c4c(%rip), %xmm3    # 0x187350
divsd %xmm3, %xmm2
callq 0x5c970
jmp 0x12d70f
movq -0x288(%rbp), %rax
movq 0xc0(%rax), %rdi
callq 0x5d1a0
movq %rax, -0x398(%rbp)
jmp 0x12d72b
movq -0x398(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rdi
movq -0xd8(%rbp), %rsi
callq 0x5a470
jmp 0x12d74e
jmp 0x12d7e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x12e182
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x12d7d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x12d7cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x12d7c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x12d7b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x5df00
leaq -0x138(%rbp), %rdi
callq 0x5df00
leaq -0x120(%rbp), %rdi
callq 0x5df00
leaq -0x108(%rbp), %rdi
callq 0x5df00
leaq -0xf0(%rbp), %rdi
callq 0x5df00
jmp 0x12e182
movq -0x288(%rbp), %rax
movq 0xd0(%rax), %rdi
callq 0x5b400
jmp 0x12d7fe
movq -0x288(%rbp), %rax
movq 0xd0(%rax), %rax
movq %rax, -0x3b8(%rbp)
cvtsi2sdl -0xc4(%rbp), %xmm0
movsd %xmm0, -0x3b0(%rbp)
cvtsi2sdl -0xc0(%rbp), %xmm0
movsd %xmm0, -0x3a8(%rbp)
leaq -0xc4(%rbp), %rdi
callq 0x5a5a0
movl %eax, -0x39c(%rbp)
jmp 0x12d847
movl -0x39c(%rbp), %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x3c8(%rbp)
leaq -0xc4(%rbp), %rdi
callq 0x591a0
movl %eax, -0x3bc(%rbp)
jmp 0x12d86d
movsd -0x3c8(%rbp), %xmm2
movsd -0x3a8(%rbp), %xmm1
movsd -0x3b0(%rbp), %xmm0
movq -0x3b8(%rbp), %rdi
movl -0x3bc(%rbp), %eax
incl %eax
cvtsi2sd %eax, %xmm3
callq 0x5aa10
jmp 0x12d89f
movq -0x288(%rbp), %rax
movq 0xd0(%rax), %rdi
callq 0x5c3b0
jmp 0x12d8b4
movq -0x288(%rbp), %rax
movq 0xd0(%rax), %rax
movq %rax, -0x3d8(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5bc50
movq %rax, -0x3d0(%rbp)
jmp 0x12d8de
movq -0x3d0(%rbp), %rdi
callq 0x59f20
movl %eax, -0x3dc(%rbp)
jmp 0x12d8f2
movl -0x3dc(%rbp), %eax
cvtsi2sd %eax, %xmm0
movsd 0x59a4c(%rip), %xmm1    # 0x187350
divsd %xmm1, %xmm0
movsd %xmm0, -0x3f0(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5bc50
movq %rax, -0x3e8(%rbp)
jmp 0x12d925
movq -0x3e8(%rbp), %rdi
callq 0x5d920
movl %eax, -0x3f4(%rbp)
jmp 0x12d939
movl -0x3f4(%rbp), %eax
cvtsi2sd %eax, %xmm0
movsd 0x59a05(%rip), %xmm1    # 0x187350
divsd %xmm1, %xmm0
movsd %xmm0, -0x408(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5bc50
movq %rax, -0x400(%rbp)
jmp 0x12d96c
movq -0x400(%rbp), %rdi
callq 0x5b650
movl %eax, -0x40c(%rbp)
jmp 0x12d980
movsd -0x408(%rbp), %xmm1
movsd -0x3f0(%rbp), %xmm0
movq -0x3d8(%rbp), %rdi
movl -0x40c(%rbp), %eax
cvtsi2sd %eax, %xmm2
movsd 0x599a7(%rip), %xmm3    # 0x187350
divsd %xmm3, %xmm2
callq 0x5c970
jmp 0x12d9b4
movq -0x288(%rbp), %rax
movq 0xd0(%rax), %rdi
callq 0x5d1a0
movq %rax, -0x418(%rbp)
jmp 0x12d9d0
movq -0x418(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rdi
movq -0xd8(%rbp), %rsi
callq 0x5a470
jmp 0x12d9f3
movq -0xd8(%rbp), %rdi
callq 0x5d130
jmp 0x12da01
movq -0x18(%rbp), %rax
movq %rax, -0x420(%rbp)
leaq 0x77e70(%rip), %rsi     # 0x1a5883
leaq -0x1d0(%rbp), %rdi
callq 0x5c1f0
jmp 0x12da21
movq -0x420(%rbp), %rsi
leaq -0x1b8(%rbp), %rdi
leaq -0x1d0(%rbp), %rdx
callq 0x5c820
jmp 0x12da3d
leaq -0x1d0(%rbp), %rdi
callq 0x5df00
leaq -0x1b8(%rbp), %rax
movq %rax, -0x160(%rbp)
movq -0x160(%rbp), %rdi
callq 0x5c990
movl %eax, -0x424(%rbp)
jmp 0x12da6b
movl -0x424(%rbp), %eax
cmpl $0x1, %eax
jle 0x12dad0
movq 0xdb32b(%rip), %rsi     # 0x208da8
leaq -0xa0(%rbp), %rdi
callq 0x5bde0
movl %eax, -0x428(%rbp)
jmp 0x12da91
movl -0x428(%rbp), %eax
addl $0x3, %eax
movl %eax, -0xb4(%rbp)
jmp 0x12dad0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x5df00
jmp 0x12e182
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x12e176
movl $0x0, -0x1d4(%rbp)
movl $0xffffffff, -0x1d8(%rbp) # imm = 0xFFFFFFFF
xorl %eax, %eax
cmpl $0x0, -0x1d4(%rbp)
movb %al, -0x429(%rbp)
jne 0x12db2f
movl -0x1d8(%rbp), %eax
movl %eax, -0x434(%rbp)
movq -0x160(%rbp), %rdi
callq 0x5c990
movl %eax, -0x430(%rbp)
jmp 0x12db15
movl -0x434(%rbp), %eax
movl -0x430(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
setl %al
movb %al, -0x429(%rbp)
movb -0x429(%rbp), %al
testb $0x1, %al
jne 0x12db3e
jmp 0x12e0a9
movq -0x160(%rbp), %rdi
movl -0x1d8(%rbp), %esi
incl %esi
movl %esi, -0x1d8(%rbp)
callq 0x74720
movq %rax, -0x440(%rbp)
jmp 0x12db61
movq -0x440(%rbp), %rax
movq %rax, -0x1e0(%rbp)
cmpl $0x0, -0x1d4(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x12db84
jmp 0x12e093
movq -0x1e0(%rbp), %rdi
callq 0x5b800
movl %eax, -0x444(%rbp)
jmp 0x12db98
movl -0x444(%rbp), %eax
movl %eax, -0x1e4(%rbp)
cmpl $0x0, -0x1e4(%rbp)
jne 0x12dbc4
movl -0xb4(%rbp), %eax
addl -0xac(%rbp), %eax
movl %eax, -0xac(%rbp)
jmp 0x12e048
movq -0x288(%rbp), %rdi
addq $0x28, %rdi
leaq -0xb0(%rbp), %rsi
callq 0x73390
movq %rdx, -0x458(%rbp)
movq %rax, -0x450(%rbp)
jmp 0x12dbeb
movq -0x288(%rbp), %rdi
movq -0x458(%rbp), %rax
movq -0x450(%rbp), %rcx
movq %rcx, -0x1f4(%rbp)
movq %rax, -0x1ec(%rbp)
addq $0x28, %rdi
callq 0x73480
movb %al, -0x459(%rbp)
jmp 0x12dc1f
movb -0x459(%rbp), %al
testb $0x1, %al
jne 0x12dc2b
jmp 0x12dc68
movl -0x1ec(%rbp), %eax
movl %eax, -0x464(%rbp)
movq -0x1e0(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0x5ac00
movl %eax, -0x460(%rbp)
jmp 0x12dc52
movl -0x460(%rbp), %ecx
movl -0x464(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x468(%rbp)
jmp 0x12dc74
movl -0x1f4(%rbp), %eax
movl %eax, -0x468(%rbp)
movl -0x468(%rbp), %eax
movl %eax, -0x1f4(%rbp)
movq -0x1e0(%rbp), %rdi
xorl %esi, %esi
callq 0x5b110
movb %al, -0x469(%rbp)
jmp 0x12dc96
movb -0x469(%rbp), %al
testb $0x1, %al
jne 0x12dca2
jmp 0x12dcd3
movq -0x1e0(%rbp), %rdi
leaq 0x77f36(%rip), %rsi     # 0x1a5be6
callq 0x5c120
movq %rax, -0x478(%rbp)
jmp 0x12dcbe
movq -0x478(%rbp), %rdi
callq 0x5a790
movq %rax, -0x480(%rbp)
jmp 0x12dcde
xorl %eax, %eax
movq %rax, -0x480(%rbp)
jmp 0x12dcde
movq -0x480(%rbp), %rax
movl %eax, -0x1f8(%rbp)
callq 0x5d3d0
movq %rax, -0x488(%rbp)
jmp 0x12dcf9
movq -0x488(%rbp), %rax
movq %rax, -0x200(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5d370
movw %ax, -0x48a(%rbp)
jmp 0x12dd1c
movw -0x48a(%rbp), %ax
movq 0xdac4e(%rip), %rcx     # 0x208978
movw (%rcx), %cx
andw %cx, %ax
testw %ax, %ax
setne %al
movzbl %al, %edi
callq 0x5a600
movq %rax, -0x498(%rbp)
jmp 0x12dd47
movq -0x498(%rbp), %rax
movq %rax, -0x208(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5d370
movw %ax, -0x49a(%rbp)
jmp 0x12dd6a
movw -0x49a(%rbp), %ax
movq 0xdae88(%rip), %rcx     # 0x208c00
movw (%rcx), %cx
andw %cx, %ax
testw %ax, %ax
setne %al
movzbl %al, %edi
callq 0x5b4c0
movq %rax, -0x4a8(%rbp)
jmp 0x12dd95
movq -0x4a8(%rbp), %rax
movq %rax, -0x210(%rbp)
movl -0x1f8(%rbp), %ecx
movq -0x208(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x1f8(%rbp), %ecx
movq -0x210(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x200(%rbp), %rdi
movq -0x208(%rbp), %rsi
callq 0x5d670
jmp 0x12ddd8
movq -0x200(%rbp), %rdi
movq -0x210(%rbp), %rsi
callq 0x5d670
jmp 0x12dded
movq -0x288(%rbp), %rax
cmpw $0x0, 0xa(%rax)
jne 0x12df30
movq -0xd0(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0x5a590
jmp 0x12de14
movq -0xd0(%rbp), %rax
movq %rax, -0x4b0(%rbp)
movq -0x1e0(%rbp), %rsi
leaq -0x228(%rbp), %rdi
callq 0x5b6d0
jmp 0x12de37
leaq 0x8e142(%rip), %rsi     # 0x1bbf80
leaq -0x240(%rbp), %rdi
callq 0x5c1f0
jmp 0x12de4c
leaq -0x228(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x5a710
movq %rax, -0x4b8(%rbp)
jmp 0x12de68
movq -0x4b8(%rbp), %rdi
leaq 0x77d70(%rip), %rsi     # 0x1a5be6
callq 0x5c120
movq %rax, -0x4c0(%rbp)
jmp 0x12de84
movq -0x4c0(%rbp), %rsi
movq -0x4b0(%rbp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x590d0
jmp 0x12de9e
leaq -0x240(%rbp), %rdi
callq 0x5df00
leaq -0x228(%rbp), %rdi
callq 0x5df00
movq -0x288(%rbp), %rax
movq 0xc0(%rax), %rdi
cvtsi2sdl -0x1f4(%rbp), %xmm0
cvtsi2sdl -0x1f0(%rbp), %xmm1
callq 0x5b970
jmp 0x12dedb
movq -0x288(%rbp), %rax
movq 0xc0(%rax), %rdi
movq -0xd0(%rbp), %rsi
callq 0x5bfd0
jmp 0x12def7
jmp 0x12df30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x12df1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x5df00
leaq -0x228(%rbp), %rdi
callq 0x5df00
jmp 0x12e176
movq -0x158(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0x5a590
jmp 0x12df45
movq -0x158(%rbp), %rax
movq %rax, -0x4c8(%rbp)
movq -0x1e0(%rbp), %rsi
leaq -0x258(%rbp), %rdi
callq 0x5b6d0
jmp 0x12df68
leaq 0x8e011(%rip), %rsi     # 0x1bbf80
leaq -0x270(%rbp), %rdi
callq 0x5c1f0
jmp 0x12df7d
leaq -0x258(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x5a710
movq %rax, -0x4d0(%rbp)
jmp 0x12df99
movq -0x4d0(%rbp), %rdi
leaq 0x77c3f(%rip), %rsi     # 0x1a5be6
callq 0x5c120
movq %rax, -0x4d8(%rbp)
jmp 0x12dfb5
movq -0x4d8(%rbp), %rsi
movq -0x4c8(%rbp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x590d0
jmp 0x12dfcf
leaq -0x270(%rbp), %rdi
callq 0x5df00
leaq -0x258(%rbp), %rdi
callq 0x5df00
movq -0x288(%rbp), %rax
movq 0xd0(%rax), %rdi
cvtsi2sdl -0x1f4(%rbp), %xmm0
cvtsi2sdl -0x1f0(%rbp), %xmm1
callq 0x5b970
jmp 0x12e00c
movq -0x288(%rbp), %rax
movq 0xd0(%rax), %rdi
movq -0x158(%rbp), %rsi
callq 0x5bfd0
jmp 0x12e028
movq -0x200(%rbp), %rdi
callq 0x5cfd0
jmp 0x12e036
movl -0xb4(%rbp), %eax
addl -0xac(%rbp), %eax
movl %eax, -0xac(%rbp)
movl -0x1d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d4(%rbp)
jmp 0x12db6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x12e082
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x5df00
leaq -0x258(%rbp), %rdi
callq 0x5df00
jmp 0x12e176
jmp 0x12e095
movl -0x1d4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1d4(%rbp)
jmp 0x12dae4
movq -0x288(%rbp), %rax
cmpw $0x0, 0xa(%rax)
jne 0x12e0ea
movq -0xd0(%rbp), %rdi
callq 0x5cf40
jmp 0x12e0c5
movq -0x288(%rbp), %rax
movq 0xc0(%rax), %rdi
callq 0x5c300
jmp 0x12e0da
movq -0x288(%rbp), %rdi
callq 0x12b7f0
jmp 0x12e0e8
jmp 0x12e0ea
movq -0x158(%rbp), %rdi
callq 0x5cf40
jmp 0x12e0f8
movq -0x288(%rbp), %rax
movq 0xd0(%rax), %rdi
callq 0x5c300
jmp 0x12e10d
leaq -0x280(%rbp), %rdi
callq 0x5ca80
jmp 0x12e11b
leaq -0x280(%rbp), %rdi
callq 0x59680
movl %eax, -0x4dc(%rbp)
jmp 0x12e12f
movl -0x4dc(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x5a410
leaq -0x1b8(%rbp), %rdi
callq 0x74690
leaq -0xa0(%rbp), %rdi
callq 0x5abf0
jmp 0x12e190
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x5a410
leaq -0x1b8(%rbp), %rdi
callq 0x74690
leaq -0xa0(%rbp), %rdi
callq 0x5abf0
jmp 0x12e19c
movl -0x4(%rbp), %eax
addq $0x4e0, %rsp            # imm = 0x4E0
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x5b6b0
nopw %cs:(%rax,%rax)