// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/window/backends/xlib/windowxlib.cpp
// Function: smooth::GUI::WindowXLib::Open(smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&, int)
S::Int S::GUI::WindowXLib::Open(const String &title, const Point &pos, const Size &size, Int iFlags)
{
	static Atom	 wmDeleteWindowAtom    = XInternAtom(display, "WM_DELETE_WINDOW", False);

	static Atom	 wmPingAtom	       = XInternAtom(display, "_NET_WM_PING", False);
	static Atom	 wmIconAtom	       = XInternAtom(display, "_NET_WM_ICON", False);

	static Atom	 windowStateAtom       = XInternAtom(display, "_NET_WM_STATE", False);
	static Atom	 windowStateAboveAtom  = XInternAtom(display, "_NET_WM_STATE_ABOVE", False);
	static Atom	 windowStateModalAtom  = XInternAtom(display, "_NET_WM_STATE_MODAL", False);

	static Atom	 windowTypeAtom	       = XInternAtom(display, "_NET_WM_WINDOW_TYPE", False);
	static Atom	 windowTypeNormalAtom  = XInternAtom(display, "_NET_WM_WINDOW_TYPE_NORMAL", False);
	static Atom	 windowTypeDialogAtom  = XInternAtom(display, "_NET_WM_WINDOW_TYPE_DIALOG", False);
	static Atom	 windowTypeUtilityAtom = XInternAtom(display, "_NET_WM_WINDOW_TYPE_UTILITY", False);

	flags	     = iFlags;
	restoredRect = Rect(pos, size);

	XSetWindowAttributes	 attributes;

	attributes.background_pixel  = Setup::BackgroundColor;
	attributes.bit_gravity	     = NorthWestGravity;
	attributes.save_under	     = False;
	attributes.override_redirect = False;

	if (flags & WF_NOTITLE	   ) attributes.override_redirect = True;
	if (flags & WF_TOPMOST	    &&
	    flags & WF_NOTASKBUTTON &&
	    flags & WF_THINBORDER  ) attributes.save_under = True;

	wnd = XCreateWindow(display, RootWindow(display, 0), pos.x, pos.y, Math::Round(size.cx * fontSize) + sizeModifier.cx, Math::Round(size.cy * fontSize) + sizeModifier.cy, 0, CopyFromParent, InputOutput, CopyFromParent, CWBackPixel | CWBitGravity | CWSaveUnder | CWOverrideRedirect, &attributes);

	if (wnd != None)
	{
		/* Create input window.
		 */
		if (im != NIL)
		{
			XLockDisplay(display);

			iwnd = XCreateWindow(display, wnd, 0, 0, 1, 1, 0, CopyFromParent, InputOnly, CopyFromParent, 0, NIL);

			XMapWindow(display, iwnd);

			XUnlockDisplay(display);
		}

		/* Select event types we want to receive.
		 */
		XSelectInput(display, wnd, ExposureMask | FocusChangeMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask | EnterWindowMask | LeaveWindowMask | StructureNotifyMask | PropertyChangeMask);

		/* Opt in to the WM_DELETE_WINDOW and _NET_WM_PING protocols.
		 */
		Atom	 protocols[2] = { wmDeleteWindowAtom, wmPingAtom };

		XSetWMProtocols(display, wnd, protocols, 2);

		/* Process the CreateNotify event again, as GetWindowBackend
		 * cannot find the correct backend until wnd is set.
		 */
		XEvent	 e;

		e.type = CreateNotify;

		ProcessSystemMessages(&e);

		/* Create drawing surface.
		 */
		if ((flags & WF_THINBORDER) || (flags & WF_NORESIZE)) drawSurface = new Surface((Void *) wnd, size * fontSize + sizeModifier);
		else						      drawSurface = new Surface((Void *) wnd);

		drawSurface->SetSize(size * fontSize + sizeModifier);

		/* Set application name.
		 */
		for (Int i = 0; i < Object::GetNOfObjects(); i++)
		{
			if (Object::GetNthObject(i)->GetObjectType() != Application::classID) continue;

			Application	*application = (Application *) Object::GetNthObject(i);
			XClassHint	*classHint   = XAllocClassHint();

			classHint->res_name  = application->GetText();
			classHint->res_class = application->GetText();

			XSetClassHint(display, wnd, classHint);
			XFree(classHint);

			break;
		}

		/* Set window title.
		 */
		SetTitle(title);

		/* Set icon.
		 */
		if (sysIcon != NIL)
		{
			XChangeProperty(display, wnd, wmIconAtom, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) sysIcon, sysIconSize);
		}

		/* Set minimum and maximum size.
		 */
		if (flags & WF_NORESIZE)
		{
			minSize = size;
			maxSize = size;
		}

		UpdateWMNormalHints();

		/* Configure window type.
		 */
		if ((flags & WF_TOPMOST) && (flags & WF_NOTASKBUTTON) && (flags & WF_THINBORDER))
		{
			XChangeProperty(display, wnd, windowTypeAtom, XA_ATOM, 32, PropModeReplace, (unsigned char *) &windowTypeUtilityAtom, 1);
		}
		else if (flags & WF_TOPMOST)
		{
			XChangeProperty(display, wnd, windowTypeAtom, XA_ATOM, 32, PropModeReplace, (unsigned char *) &windowTypeDialogAtom, 1);
			XChangeProperty(display, wnd, windowStateAtom, XA_ATOM, 32, PropModeReplace, (unsigned char *) &windowStateAboveAtom, 1);
		}
		else if (flags & WF_MODAL)
		{
			XChangeProperty(display, wnd, windowTypeAtom, XA_ATOM, 32, PropModeReplace, (unsigned char *) &windowTypeDialogAtom, 1);
			XChangeProperty(display, wnd, windowStateAtom, XA_ATOM, 32, PropModeReplace, (unsigned char *) &windowStateModalAtom, 1);
		}
		else
		{
			XChangeProperty(display, wnd, windowTypeAtom, XA_ATOM, 32, PropModeReplace, (unsigned char *) &windowTypeNormalAtom, 1);
		}

		/* Set transient hint.
		 */
		Widget	*container = Window::GetWindow((Void *) wnd)->GetContainer();

		if (container != NIL)
		{
			Window		*parent = container->GetContainerWindow();
			WindowXLib	*leader = FindLeaderWindow();

			if	(parent != NIL) XSetTransientForHint(display, wnd, (X11::Window) parent->GetSystemWindow());
			else if (leader != NIL) XSetTransientForHint(display, wnd, leader->wnd);
		}

		/* Enable dropping files if requested.
		 */
		if (enableDropFiles) EnableDropFiles(True);

		return Success();
	}

	return Error();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x320, %rsp            # imm = 0x320
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movl %r8d, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x210(%rbp)
cmpb $0x0, 0xefbd7(%rip)     # 0x214a08
jne 0x124e83
leaq 0xefbce(%rip), %rdi     # 0x214a08
callq 0x5a4e0
cmpl $0x0, %eax
je 0x124e83
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
leaq 0x81b80(%rip), %rsi     # 0x1a69d9
xorl %edx, %edx
callq 0x5c7a0
movq %rax, -0x218(%rbp)
jmp 0x124e69
movq -0x218(%rbp), %rax
movq %rax, 0xefb89(%rip)     # 0x214a00
leaq 0xefb8a(%rip), %rdi     # 0x214a08
callq 0x5b0c0
cmpb $0x0, 0xefb8e(%rip)     # 0x214a18
jne 0x124edc
leaq 0xefb85(%rip), %rdi     # 0x214a18
callq 0x5a4e0
cmpl $0x0, %eax
je 0x124edc
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
leaq 0x81b38(%rip), %rsi     # 0x1a69ea
xorl %edx, %edx
callq 0x5c7a0
movq %rax, -0x220(%rbp)
jmp 0x124ec2
movq -0x220(%rbp), %rax
movq %rax, 0xefb40(%rip)     # 0x214a10
leaq 0xefb41(%rip), %rdi     # 0x214a18
callq 0x5b0c0
cmpb $0x0, 0xefb45(%rip)     # 0x214a28
jne 0x124f35
leaq 0xefb3c(%rip), %rdi     # 0x214a28
callq 0x5a4e0
cmpl $0x0, %eax
je 0x124f35
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
leaq 0x81b9a(%rip), %rsi     # 0x1a6aa5
xorl %edx, %edx
callq 0x5c7a0
movq %rax, -0x228(%rbp)
jmp 0x124f1b
movq -0x228(%rbp), %rax
movq %rax, 0xefaf7(%rip)     # 0x214a20
leaq 0xefaf8(%rip), %rdi     # 0x214a28
callq 0x5b0c0
cmpb $0x0, 0xefafc(%rip)     # 0x214a38
jne 0x124f8e
leaq 0xefaf3(%rip), %rdi     # 0x214a38
callq 0x5a4e0
cmpl $0x0, %eax
je 0x124f8e
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
leaq 0x81a93(%rip), %rsi     # 0x1a69f7
xorl %edx, %edx
callq 0x5c7a0
movq %rax, -0x230(%rbp)
jmp 0x124f74
movq -0x230(%rbp), %rax
movq %rax, 0xefaae(%rip)     # 0x214a30
leaq 0xefaaf(%rip), %rdi     # 0x214a38
callq 0x5b0c0
cmpb $0x0, 0xefab3(%rip)     # 0x214a48
jne 0x124fe7
leaq 0xefaaa(%rip), %rdi     # 0x214a48
callq 0x5a4e0
cmpl $0x0, %eax
je 0x124fe7
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
leaq 0x81af5(%rip), %rsi     # 0x1a6ab2
xorl %edx, %edx
callq 0x5c7a0
movq %rax, -0x238(%rbp)
jmp 0x124fcd
movq -0x238(%rbp), %rax
movq %rax, 0xefa65(%rip)     # 0x214a40
leaq 0xefa66(%rip), %rdi     # 0x214a48
callq 0x5b0c0
cmpb $0x0, 0xefa6a(%rip)     # 0x214a58
jne 0x125040
leaq 0xefa61(%rip), %rdi     # 0x214a58
callq 0x5a4e0
cmpl $0x0, %eax
je 0x125040
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
leaq 0x81ab0(%rip), %rsi     # 0x1a6ac6
xorl %edx, %edx
callq 0x5c7a0
movq %rax, -0x240(%rbp)
jmp 0x125026
movq -0x240(%rbp), %rax
movq %rax, 0xefa1c(%rip)     # 0x214a50
leaq 0xefa1d(%rip), %rdi     # 0x214a58
callq 0x5b0c0
cmpb $0x0, 0xefa21(%rip)     # 0x214a68
jne 0x125099
leaq 0xefa18(%rip), %rdi     # 0x214a68
callq 0x5a4e0
cmpl $0x0, %eax
je 0x125099
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
leaq 0x81a6b(%rip), %rsi     # 0x1a6ada
xorl %edx, %edx
callq 0x5c7a0
movq %rax, -0x248(%rbp)
jmp 0x12507f
movq -0x248(%rbp), %rax
movq %rax, 0xef9d3(%rip)     # 0x214a60
leaq 0xef9d4(%rip), %rdi     # 0x214a68
callq 0x5b0c0
cmpb $0x0, 0xef9d8(%rip)     # 0x214a78
jne 0x1250f2
leaq 0xef9cf(%rip), %rdi     # 0x214a78
callq 0x5a4e0
cmpl $0x0, %eax
je 0x1250f2
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
leaq 0x81a26(%rip), %rsi     # 0x1a6aee
xorl %edx, %edx
callq 0x5c7a0
movq %rax, -0x250(%rbp)
jmp 0x1250d8
movq -0x250(%rbp), %rax
movq %rax, 0xef98a(%rip)     # 0x214a70
leaq 0xef98b(%rip), %rdi     # 0x214a78
callq 0x5b0c0
cmpb $0x0, 0xef98f(%rip)     # 0x214a88
jne 0x12514b
leaq 0xef986(%rip), %rdi     # 0x214a88
callq 0x5a4e0
cmpl $0x0, %eax
je 0x12514b
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
leaq 0x819e8(%rip), %rsi     # 0x1a6b09
xorl %edx, %edx
callq 0x5c7a0
movq %rax, -0x258(%rbp)
jmp 0x125131
movq -0x258(%rbp), %rax
movq %rax, 0xef941(%rip)     # 0x214a80
leaq 0xef942(%rip), %rdi     # 0x214a88
callq 0x5b0c0
cmpb $0x0, 0xef946(%rip)     # 0x214a98
jne 0x1251a4
leaq 0xef93d(%rip), %rdi     # 0x214a98
callq 0x5a4e0
cmpl $0x0, %eax
je 0x1251a4
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
leaq 0x819aa(%rip), %rsi     # 0x1a6b24
xorl %edx, %edx
callq 0x5c7a0
movq %rax, -0x260(%rbp)
jmp 0x12518a
movq -0x260(%rbp), %rax
movq %rax, 0xef8f8(%rip)     # 0x214a90
leaq 0xef8f9(%rip), %rdi     # 0x214a98
callq 0x5b0c0
movq -0x210(%rbp), %rax
movl -0x2c(%rbp), %ecx
movl %ecx, 0x1b4(%rax)
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
leaq -0x4c(%rbp), %rdi
callq 0x59ff0
movq -0x210(%rbp), %rax
movq -0x4c(%rbp), %rcx
movq %rcx, 0x1a4(%rax)
movq -0x44(%rbp), %rcx
movq %rcx, 0x1ac(%rax)
movq 0xe32bf(%rip), %rdi     # 0x2084a8
callq 0x59210
movq %rax, %rcx
movq -0x210(%rbp), %rax
movq %rcx, -0xb8(%rbp)
movl $0x1, -0xa0(%rbp)
movl $0x0, -0x80(%rbp)
movl $0x0, -0x68(%rbp)
movl 0x1b4(%rax), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
je 0x125359
movl $0x1, -0x68(%rbp)
jmp 0x125359
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq 0xef7be(%rip), %rdi     # 0x214a08
callq 0x5a860
jmp 0x125d53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq 0xef7b1(%rip), %rdi     # 0x214a18
callq 0x5a860
jmp 0x125d53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq 0xef7a4(%rip), %rdi     # 0x214a28
callq 0x5a860
jmp 0x125d53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq 0xef797(%rip), %rdi     # 0x214a38
callq 0x5a860
jmp 0x125d53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq 0xef78a(%rip), %rdi     # 0x214a48
callq 0x5a860
jmp 0x125d53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq 0xef77d(%rip), %rdi     # 0x214a58
callq 0x5a860
jmp 0x125d53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq 0xef770(%rip), %rdi     # 0x214a68
callq 0x5a860
jmp 0x125d53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq 0xef763(%rip), %rdi     # 0x214a78
callq 0x5a860
jmp 0x125d53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq 0xef756(%rip), %rdi     # 0x214a88
callq 0x5a860
jmp 0x125d53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq 0xef749(%rip), %rdi     # 0x214a98
callq 0x5a860
jmp 0x125d53
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x12539f
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x12539f
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x12539f
movl $0x1, -0x80(%rbp)
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rcx
movq %rcx, -0x280(%rbp)
movq 0x120(%rax), %rcx
movq 0xe8(%rcx), %rcx
movq 0x10(%rcx), %rcx
movq %rcx, -0x278(%rbp)
movq -0x20(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, -0x26c(%rbp)
movq -0x20(%rbp), %rcx
movl 0x4(%rcx), %ecx
movl %ecx, -0x268(%rbp)
movq -0x28(%rbp), %rcx
cvtsi2sdl (%rcx), %xmm0
mulsd 0x178(%rax), %xmm0
callq 0x5a970
movq %rax, %rcx
movq -0x210(%rbp), %rax
movslq 0x18(%rax), %rdx
addq %rdx, %rcx
movl %ecx, -0x264(%rbp)
movq -0x28(%rbp), %rcx
cvtsi2sdl 0x4(%rcx), %xmm0
mulsd 0x178(%rax), %xmm0
callq 0x5a970
movq -0x280(%rbp), %rdi
movq -0x278(%rbp), %rsi
movl -0x26c(%rbp), %edx
movl -0x268(%rbp), %ecx
movl -0x264(%rbp), %r8d
movq -0x210(%rbp), %r9
movslq 0x1c(%r9), %r9
addq %r9, %rax
movl %eax, %r9d
xorl %eax, %eax
xorl %eax, %eax
leaq -0xc0(%rbp), %rax
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
movl $0x1, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movq $0x612, 0x20(%rsp)      # imm = 0x612
movq %rax, 0x28(%rsp)
callq 0x59a00
movq %rax, %rcx
movq -0x210(%rbp), %rax
movq %rcx, 0x138(%rax)
cmpq $0x0, 0x138(%rax)
je 0x125cea
movq -0x210(%rbp), %rax
cmpq $0x0, 0x128(%rax)
je 0x125571
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
callq 0x5db70
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
xorl %ecx, %ecx
movl $0x1, %r9d
xorl %eax, %eax
movl %ecx, %edx
movl %r9d, %r8d
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
movl $0x2, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movq $0x0, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
callq 0x59a00
movq %rax, %rcx
movq -0x210(%rbp), %rax
movq %rcx, 0x150(%rax)
movq 0x120(%rax), %rdi
movq 0x150(%rax), %rsi
callq 0x5bc60
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
callq 0x5ac40
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
movl $0x62807f, %edx         # imm = 0x62807F
callq 0x5d0b0
movq -0x210(%rbp), %rax
movq 0xef462(%rip), %rcx     # 0x214a00
movq %rcx, -0xd0(%rbp)
movq 0xef464(%rip), %rcx     # 0x214a10
movq %rcx, -0xc8(%rbp)
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
leaq -0xd0(%rbp), %rdx
movl $0x2, %ecx
callq 0x5cf80
movq -0x210(%rbp), %rdi
movl $0x10, -0x190(%rbp)
leaq -0x190(%rbp), %rsi
callq 0x1223c0
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
jne 0x12561d
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x1256f1
movl $0x8, %edi
callq 0x59820
movq %rax, %rcx
movq -0x210(%rbp), %rax
movq %rcx, -0x298(%rbp)
movq 0x138(%rax), %rcx
movq %rcx, -0x290(%rbp)
movq -0x28(%rbp), %rdi
movsd 0x178(%rax), %xmm0
callq 0x5a7b0
movq %rax, -0x288(%rbp)
jmp 0x125660
movq -0x210(%rbp), %rsi
movq -0x288(%rbp), %rax
movq %rax, -0x1a0(%rbp)
addq $0x18, %rsi
leaq -0x1a0(%rbp), %rdi
callq 0x590b0
movq %rax, -0x2a0(%rbp)
jmp 0x12568e
movq -0x290(%rbp), %rsi
movq -0x298(%rbp), %rdi
movq -0x2a0(%rbp), %rax
movq %rax, -0x198(%rbp)
leaq -0x198(%rbp), %rdx
callq 0x5b7d0
jmp 0x1256b8
movq -0x210(%rbp), %rax
movq -0x298(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x12577a
movq -0x298(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl $0x8, %esi
callq 0x595b0
jmp 0x125d53
movl $0x8, %edi
callq 0x59820
movq %rax, %rcx
movq -0x210(%rbp), %rax
movq %rcx, -0x2b0(%rbp)
movq 0x138(%rax), %rax
movq %rax, -0x2a8(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x59230
jmp 0x125728
movq -0x2a8(%rbp), %rsi
movq -0x2b0(%rbp), %rdi
leaq -0x1a8(%rbp), %rdx
callq 0x5b7d0
jmp 0x125744
movq -0x210(%rbp), %rax
movq -0x2b0(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x12577a
movq -0x2b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl $0x8, %esi
callq 0x595b0
jmp 0x125d53
movq -0x210(%rbp), %rax
movq 0x10(%rax), %rcx
movq %rcx, -0x2b8(%rbp)
movq -0x28(%rbp), %rdi
movsd 0x178(%rax), %xmm0
callq 0x5a7b0
movq -0x210(%rbp), %rsi
movq %rax, -0x1b8(%rbp)
addq $0x18, %rsi
leaq -0x1b8(%rbp), %rdi
callq 0x590b0
movq -0x2b8(%rbp), %rdi
movq %rax, -0x1b0(%rbp)
leaq -0x1b0(%rbp), %rsi
callq 0x5a350
movl $0x0, -0x1bc(%rbp)
movl -0x1bc(%rbp), %eax
movl %eax, -0x2bc(%rbp)
callq 0x5bd10
movl %eax, %ecx
movl -0x2bc(%rbp), %eax
cmpl %ecx, %eax
jge 0x1258dc
movl -0x1bc(%rbp), %edi
callq 0x5d300
movq %rax, %rdi
callq 0x5bb10
movq %rax, %rdi
movq 0xe3563(%rip), %rax     # 0x208d80
movswl (%rax), %esi
callq 0x5da50
testb $0x1, %al
jne 0x12582b
jmp 0x125830
jmp 0x1258c8
movl -0x1bc(%rbp), %edi
callq 0x5d300
movq %rax, -0x1c8(%rbp)
callq 0x5cea0
movq %rax, -0x1d0(%rbp)
movq -0x1c8(%rbp), %rdi
movq (%rdi), %rax
callq *0xa8(%rax)
movq %rax, %rdi
callq 0x5d090
movq %rax, %rcx
movq -0x1d0(%rbp), %rax
movq %rcx, (%rax)
movq -0x1c8(%rbp), %rdi
movq (%rdi), %rax
callq *0xa8(%rax)
movq %rax, %rdi
callq 0x5d090
movq %rax, %rdx
movq -0x210(%rbp), %rax
movq -0x1d0(%rbp), %rcx
movq %rdx, 0x8(%rcx)
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
movq -0x1d0(%rbp), %rdx
callq 0x5ae90
movq -0x1d0(%rbp), %rdi
callq 0x5c780
jmp 0x1258dc
movl -0x1bc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1bc(%rbp)
jmp 0x1257df
movq -0x210(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq (%rdi), %rax
callq *0x38(%rax)
movq -0x210(%rbp), %rax
cmpq $0x0, 0x158(%rax)
je 0x125942
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
movq 0xef106(%rip), %rdx     # 0x214a20
movq 0x158(%rax), %r10
movl 0x160(%rax), %eax
movl $0x6, %ecx
movl $0x20, %r8d
xorl %r9d, %r9d
movq %r10, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x5beb0
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x12597a
movq -0x210(%rbp), %rax
movq -0x28(%rbp), %rcx
movq (%rcx), %rcx
movq %rcx, 0x190(%rax)
movq -0x28(%rbp), %rcx
movq (%rcx), %rcx
movq %rcx, 0x198(%rax)
movq -0x210(%rbp), %rdi
callq 0x121be0
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x125a0c
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x125a0c
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x125a0c
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
movq 0xef07f(%rip), %rdx     # 0x214a60
movl $0x4, %ecx
movl $0x20, %r8d
xorl %r9d, %r9d
leaq 0xef09a(%rip), %rax     # 0x214a90
movq %rax, (%rsp)
movl $0x1, 0x8(%rsp)
callq 0x5beb0
jmp 0x125b93
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x125aae
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
movq 0xef01f(%rip), %rdx     # 0x214a60
movl $0x4, %ecx
movl $0x20, %r8d
xorl %r9d, %r9d
leaq 0xef02a(%rip), %rax     # 0x214a80
movq %rax, (%rsp)
movl $0x1, 0x8(%rsp)
callq 0x5beb0
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
movq 0xeefad(%rip), %rdx     # 0x214a30
movl $0x4, %ecx
movl $0x20, %r8d
xorl %r9d, %r9d
leaq 0xeefa8(%rip), %rax     # 0x214a40
movq %rax, (%rsp)
movl $0x1, 0x8(%rsp)
callq 0x5beb0
jmp 0x125b91
movq -0x210(%rbp), %rax
movl 0x1b4(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x125b4d
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
movq 0xeef7d(%rip), %rdx     # 0x214a60
movl $0x4, %ecx
movl $0x20, %r8d
xorl %r9d, %r9d
leaq 0xeef88(%rip), %rax     # 0x214a80
movq %rax, (%rsp)
movl $0x1, 0x8(%rsp)
callq 0x5beb0
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
movq 0xeef0b(%rip), %rdx     # 0x214a30
movl $0x4, %ecx
movl $0x20, %r8d
xorl %r9d, %r9d
leaq 0xeef16(%rip), %rax     # 0x214a50
movq %rax, (%rsp)
movl $0x1, 0x8(%rsp)
callq 0x5beb0
jmp 0x125b8f
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
movq 0xeeef7(%rip), %rdx     # 0x214a60
movl $0x4, %ecx
movl $0x20, %r8d
xorl %r9d, %r9d
leaq 0xeeef2(%rip), %rax     # 0x214a70
movq %rax, (%rsp)
movl $0x1, 0x8(%rsp)
callq 0x5beb0
jmp 0x125b91
jmp 0x125b93
movq -0x210(%rbp), %rax
movq 0x138(%rax), %rdi
callq 0x5b230
movq %rax, %rdi
callq 0x5c9c0
movq %rax, -0x1d8(%rbp)
cmpq $0x0, -0x1d8(%rbp)
je 0x125c70
movq -0x1d8(%rbp), %rdi
callq 0x59bc0
movq -0x210(%rbp), %rdi
movq %rax, -0x1e0(%rbp)
callq 0x125d60
movq %rax, -0x1e8(%rbp)
cmpq $0x0, -0x1e0(%rbp)
je 0x125c3a
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rcx
movq %rcx, -0x2d0(%rbp)
movq 0x138(%rax), %rax
movq %rax, -0x2c8(%rbp)
movq -0x1e0(%rbp), %rdi
callq 0x59340
movq -0x2d0(%rbp), %rdi
movq -0x2c8(%rbp), %rsi
movq %rax, %rdx
callq 0x5a650
jmp 0x125c6e
cmpq $0x0, -0x1e8(%rbp)
je 0x125c6c
movq -0x210(%rbp), %rax
movq 0x120(%rax), %rdi
movq 0x138(%rax), %rsi
movq -0x1e8(%rbp), %rax
movq 0x138(%rax), %rdx
callq 0x5a650
jmp 0x125c6e
jmp 0x125c70
movq -0x210(%rbp), %rax
testb $0x1, 0x171(%rax)
je 0x125c92
movq -0x210(%rbp), %rdi
movq (%rdi), %rax
movl $0x1, %esi
callq *0x58(%rax)
leaq -0x1f8(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x5ca80
movq -0x2e0(%rbp), %rdi
callq 0x59680
movl %eax, -0x2d4(%rbp)
jmp 0x125cb9
movl -0x2d4(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x5a410
jmp 0x125d47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x5a410
jmp 0x125d53
leaq -0x208(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x5a9c0
movq -0x2f0(%rbp), %rdi
callq 0x59680
movl %eax, -0x2e4(%rbp)
jmp 0x125d16
movl -0x2e4(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x5b5b0
jmp 0x125d47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x5b5b0
jmp 0x125d53
movl -0x4(%rbp), %eax
addq $0x320, %rsp            # imm = 0x320
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)