// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/classes/net/protocols/http.cpp
// Function: smooth::Net::Protocols::HTTP::DownloadToFile(smooth::String const&)
S::Int S::Net::Protocols::HTTP::DownloadToFile(const String &fileName)
{
	/* Create a cURL context.
	 */
	Bool	 error = False;
	CURL	*curl  = curl_easy_init();

	if (!curl) return Error();

	/* Set HTTP method.
	 */
	for (Int i = 0; i < requestParameters.Length(); i++)
	{
		if (requestParameters.GetNth(i).isFile) { mode = HTTP_METHOD_POST; break; }
	}

	if (content != NIL) mode = HTTP_METHOD_POST;

	if	(mode == HTTP_METHOD_POST) curl_easy_setopt(curl, CURLOPT_POST, 1L);
	else if (mode == HTTP_METHOD_GET)  curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);

	/* Set parameters.
	 */
	String		 url	 = this->url;
	curl_slist	*headers = NULL;

	if (requestParameters.Length() > 0)
	{
		if	(mode == HTTP_METHOD_GET)  url.Append("?").Append(GetParametersURLEncoded());
		else if (mode == HTTP_METHOD_POST) curl_easy_setopt(curl, CURLOPT_POSTFIELDS, (char *) GetParametersURLEncoded());
	}

	/* Set headers.
	 */
	foreach (const Parameter &field, requestFields) headers = curl_slist_append(headers, String(field.key).Append(": ").Append(field.value));

	/* Check to see if we are to transfer any files.
	 */
	Bool	 haveFiles = False;

	for (Int i = 0; i < requestParameters.Length(); i++)
	{
		if (requestParameters.GetNth(i).isFile) { haveFiles = True; break; }
	}

	/* Set content.
	 */
	Buffer<UnsignedByte>	 postBuffer;

	if (content != NIL)
	{
		headers = curl_slist_append(headers, "Content-Type: text/plain; charset=UTF-8");

		curl_easy_setopt(curl, CURLOPT_POSTFIELDS, (char *) content.ConvertTo("UTF-8"));
	}
	else if (haveFiles)
	{
		String	 separator = "THIS_STRING_SEPARATES";

		headers = curl_slist_append(headers, String("Content-Type: multipart/form-data; boundary=").Append(separator));

		/* Write contents to temporary output file.
		 */
		Math::RandomSeed();

		S::File		 tempFile = S::System::System::GetTempDirectory().Append("httprequest-").Append(Number((Int64) Math::Random() & 0x7FFFFFFF).ToHexString()).Append(".temp");
		IO::OutStream	 out(IO::STREAM_FILE, tempFile, IO::OS_REPLACE);

		out.OutputString(String("--").Append(separator).Append("\r\n"));
		out.OutputString("Content-Disposition: form-data; name=\"MAX_FILE_SIZE\"\r\n\r\n");
		out.OutputString("1000000\r\n");

		foreach (const Parameter &parameter, requestParameters)
		{
			out.OutputString(String("--").Append(separator).Append("\r\n"));

			if (!parameter.isFile)
			{
				out.OutputString(String("Content-Disposition: form-data; name=\"").Append(parameter.key).Append("\"\r\n\r\n"));
				out.OutputString(String(parameter.value).Append("\r\n"));
			}
			else
			{
				out.OutputString(String("Content-Disposition: form-data; name=\"").Append(parameter.key).Append("\"; filename=\"").Append(parameter.value).Append("\"\r\n\r\n"));

				IO::InStream	 in(IO::STREAM_FILE, parameter.value, IO::IS_READ);

				for (Int i = 0; i < in.Size(); i++) out.OutputNumber(in.InputNumber(1), 1);

				out.OutputString("\r\n");
			}
		}

		out.OutputString(String("--").Append(separator).Append("--"));

		out.Close();

		/* Read contents into buffer.
		 */
		IO::InStream	 in(IO::STREAM_FILE, tempFile, IO::IS_READ);

		postBuffer.Resize(in.Size());

		for (Int i = 0; i < in.Size(); i++) postBuffer[i] = in.InputNumber(1);

		in.Close();

		tempFile.Delete();

		curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, postBuffer.Size());
		curl_easy_setopt(curl, CURLOPT_POSTFIELDS, (char *) (UnsignedByte *) postBuffer);
	}

	/* Set URL and basic parameters.
	 */
	curl_easy_setopt(curl, CURLOPT_URL, (char *) url);
	curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
	curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
	curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);

	/* Set proxy information.
	 */
	if (proxyMode != HTTP_PROXY_NONE)
	{
		curl_easy_setopt(curl, CURLOPT_PROXY, (char *) proxy);
		curl_easy_setopt(curl, CURLOPT_PROXYPORT, proxyPort);

		char	*curlProxyUser = proxyUser != NIL ? curl_easy_escape(curl, proxyUser, 0) : NIL;
		char	*curlProxyPass = proxyPass != NIL ? curl_easy_escape(curl, proxyPass, 0) : NIL;

		curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, (char *) String(curlProxyUser).Append(":").Append(curlProxyPass));

		curl_free(curlProxyUser);
		curl_free(curlProxyPass);

		if	(proxyMode == HTTP_PROXY_HTTP)	 curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);

#if LIBCURL_VERSION_NUM >= 0x073400
		else if (proxyMode == HTTP_PROXY_HTTPS)	 curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTPS);
#endif

#if LIBCURL_VERSION_NUM >= 0x071200
		else if (proxyMode == HTTP_PROXY_SOCKS4) curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4A);
#else
		else if (proxyMode == HTTP_PROXY_SOCKS4) curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
#endif

#if LIBCURL_VERSION_NUM >= 0x071200
		else if (proxyMode == HTTP_PROXY_SOCKS5) curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
#else
		else if (proxyMode == HTTP_PROXY_SOCKS5) curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
#endif
	}

	/* Set callback functions.
	 */
	curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, &httpHeader);
	curl_easy_setopt(curl, CURLOPT_HEADERDATA, this);

	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &httpWrite);
	curl_easy_setopt(curl, CURLOPT_WRITEDATA, this);

	curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, &httpProgress);
	curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, this);

	/* Setup files and issue request.
	 */
	ulStart	= 0;
	dlStart	= 0;

	file	= fileName;
	out	= new IO::OutStream(IO::STREAM_FILE, fileName, IO::OS_REPLACE);

	if (curl_easy_perform(curl) != CURLE_OK) error = True;

	delete out;

	/* Clean up.
	 */
	curl_slist_free_all(headers);
	curl_easy_cleanup(curl);

	if (!error) return Success();
	else	    return Error();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x318, %rsp            # imm = 0x318
movq %rsi, 0x48(%rsp)
movq %rdi, %r15
callq 0x583c0
testq %rax, %rax
je 0xae22f
movq %rax, %r14
leaq 0x178(%r15), %rax
movq %rax, 0x30(%rsp)
cmpl $0x0, 0x180(%r15)
jle 0xae243
xorl %ebx, %ebx
movq 0x30(%rsp), %rdi
movl %ebx, %esi
callq 0xafe6e
cmpb $0x1, 0x30(%rax)
je 0xae239
incl %ebx
cmpl 0x180(%r15), %ebx
jl 0xae210
jmp 0xae243
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
jmp 0xaeeb4
movw $0x1, 0xc8(%r15)
leaq 0x270(%r15), %rdi
movq %rdi, 0x38(%rsp)
xorl %esi, %esi
callq 0x56bd0
testb %al, %al
je 0xae264
movw $0x1, 0xc8(%r15)
movzwl 0xc8(%r15), %eax
cmpl $0x1, %eax
je 0xae27c
testl %eax, %eax
jne 0xae290
movl $0x50, %esi
jmp 0xae281
movl $0x2f, %esi
movl $0x1, %edx
movq %r14, %rdi
xorl %eax, %eax
callq 0x57df0
leaq 0x8(%r15), %rsi
leaq 0xd8(%rsp), %rdi
callq 0x570b0
cmpl $0x0, 0x180(%r15)
jle 0xae35b
movzwl 0xc8(%r15), %eax
cmpl $0x1, %eax
je 0xae31f
testl %eax, %eax
jne 0xae35b
leaq 0x45f87(%rip), %rsi     # 0xf4252
leaq 0x210(%rsp), %rdi
callq 0x579f0
leaq 0xd8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0x562f0
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
movq %r15, %rsi
callq 0x58c90
leaq 0xf0(%rsp), %rsi
movq %rbx, %rdi
callq 0x562f0
leaq 0xf0(%rsp), %rdi
callq 0x59200
jmp 0xae34e
leaq 0x210(%rsp), %rdi
movq %r15, %rsi
callq 0x58c90
leaq 0x210(%rsp), %rdi
callq 0x585e0
movq %r14, %rdi
movl $0x271f, %esi           # imm = 0x271F
movq %rax, %rdx
xorl %eax, %eax
callq 0x57df0
leaq 0x210(%rsp), %rdi
callq 0x59200
movq %r14, 0x40(%rsp)
cmpl $0x0, 0x128(%r15)
movq %r15, 0x8(%rsp)
jle 0xae41b
leaq 0x120(%r15), %r14
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movq $0x0, 0x10(%rsp)
leaq 0x210(%rsp), %r15
leaq 0x6f3c6(%rip), %r13     # 0x11d75d
leaq 0xf0(%rsp), %rbx
incl %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0xafeca
movq %rax, %r12
movq %r15, %rdi
movq %rax, %rsi
callq 0x570b0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x579f0
movq %r15, %rdi
movq %rbx, %rsi
callq 0x562f0
addq $0x18, %r12
movq %rax, %rdi
movq %r12, %rsi
callq 0x562f0
movq %rax, %rdi
callq 0x585e0
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x570a0
movq %rax, 0x10(%rsp)
movq %rbx, %rdi
callq 0x59200
movq %r15, %rdi
callq 0x59200
movq 0x8(%rsp), %rax
movl 0x128(%rax), %eax
decl %eax
cmpl %eax, %ebp
jl 0xae39f
jmp 0xae424
movq $0x0, 0x10(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x0, 0x180(%rax)
setg %bpl
movq 0x40(%rsp), %r13
jle 0xae469
xorl %ebx, %ebx
movq 0x38(%rsp), %r14
movq 0x30(%rsp), %rdi
movl %ebx, %esi
callq 0xafe6e
cmpb $0x1, 0x30(%rax)
je 0xae46e
incl %ebx
movq 0x8(%rsp), %rax
cmpl 0x180(%rax), %ebx
setl %bpl
jl 0xae442
jmp 0xae46e
movq 0x38(%rsp), %r14
leaq 0xb2abb(%rip), %r12     # 0x160f30
movq %r12, 0x50(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x58(%rsp)
movq %r14, %rdi
xorl %esi, %esi
callq 0x56bd0
testb %al, %al
je 0xae4cc
leaq 0x64c6d(%rip), %rsi     # 0x113104
movq 0x10(%rsp), %rdi
callq 0x570a0
movq %rax, 0x10(%rsp)
leaq 0x64c79(%rip), %rsi     # 0x113126
movq %r14, %rdi
callq 0x57940
movq %r13, %rdi
movl $0x271f, %esi           # imm = 0x271F
movq %rax, %rdx
xorl %eax, %eax
callq 0x57df0
jmp 0xaebb1
testb $0x1, %bpl
je 0xaebb1
leaq 0x64c4f(%rip), %rsi     # 0x11312c
leaq 0x80(%rsp), %rdi
callq 0x579f0
leaq 0x64c51(%rip), %rsi     # 0x113142
leaq 0x210(%rsp), %rdi
callq 0x579f0
leaq 0x210(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x562f0
movq 0x8(%rsp), %r14
movq %rax, %rdi
callq 0x585e0
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x570a0
movq %rax, 0x10(%rsp)
leaq 0x210(%rsp), %rdi
callq 0x59200
callq 0x55890
leaq 0x210(%rsp), %rdi
callq 0x57ed0
leaq 0x64c17(%rip), %rsi     # 0x11316f
leaq 0xf0(%rsp), %rdi
callq 0x579f0
leaq 0x210(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x562f0
movq %rax, %rbx
callq 0x55fc0
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
leaq 0x98(%rsp), %rdi
movq %rax, %rsi
callq 0x59050
leaq 0x18(%rsp), %rdi
leaq 0x98(%rsp), %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x57780
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x562f0
movq %rax, %rbx
leaq 0x64bb7(%rip), %rsi     # 0x11317c
leaq 0x68(%rsp), %rdi
callq 0x579f0
leaq 0x68(%rsp), %rsi
movq %rbx, %rdi
callq 0x562f0
movq %rax, %rbx
leaq 0x1f8(%rsp), %rdi
xorl %esi, %esi
callq 0x58e20
leaq 0xa8(%rsp), %rdi
leaq 0x1f8(%rsp), %rdx
movq %rbx, %rsi
callq 0x56800
leaq 0x1f8(%rsp), %rdi
callq 0x59200
leaq 0x68(%rsp), %rdi
callq 0x59200
leaq 0x18(%rsp), %rdi
callq 0x59200
leaq 0x98(%rsp), %rdi
callq 0x58d60
leaq 0xf0(%rsp), %rdi
callq 0x59200
leaq 0x210(%rsp), %rdi
callq 0x59200
leaq 0xf0(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x58fa0
leaq 0x210(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
movl $0x3, %esi
movl $0x1, %ecx
callq 0x582f0
leaq 0xf0(%rsp), %rdi
callq 0x59200
leaq 0x66aec(%rip), %rsi     # 0x115182
leaq 0xf0(%rsp), %rdi
callq 0x579f0
leaq 0xf0(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x562f0
movq %rax, %rbx
leaq 0x64af6(%rip), %rsi     # 0x1131b8
leaq 0x18(%rsp), %rdi
callq 0x579f0
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x562f0
leaq 0x210(%rsp), %rdi
movq %rax, %rsi
callq 0x55ab0
leaq 0x18(%rsp), %rdi
callq 0x59200
leaq 0xf0(%rsp), %rdi
callq 0x59200
leaq 0x64a7b(%rip), %rsi     # 0x113182
leaq 0xf0(%rsp), %rdi
callq 0x579f0
leaq 0x210(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x55ab0
leaq 0xf0(%rsp), %rdi
callq 0x59200
leaq 0x64a7e(%rip), %rsi     # 0x1131bb
leaq 0xf0(%rsp), %rdi
callq 0x579f0
leaq 0x210(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x55ab0
leaq 0xf0(%rsp), %rdi
callq 0x59200
cmpl $0x0, 0x180(%r14)
jle 0xae9ed
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
leaq 0xf0(%rsp), %r15
leaq 0x210(%rsp), %r13
incl %ebp
movq 0x30(%rsp), %rdi
movl %ebp, %esi
callq 0xafeca
movq %rax, %r14
movq %r15, %rdi
leaq 0x669d8(%rip), %rsi     # 0x115182
callq 0x579f0
movq %r15, %rdi
leaq 0x80(%rsp), %rsi
callq 0x562f0
movq %rax, %r12
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x649e7(%rip), %rsi     # 0x1131b8
callq 0x579f0
movq %r12, %rdi
movq %rbx, %rsi
callq 0x562f0
movq %r13, %rdi
movq %rax, %rsi
callq 0x55ab0
movq %r14, %r12
addq $0x18, %r12
leaq 0x18(%rsp), %rdi
callq 0x59200
movq %r15, %rdi
callq 0x59200
cmpb $0x0, 0x30(%r14)
je 0xae909
movq %r15, %rdi
leaq 0x649ab(%rip), %rsi     # 0x1131c5
callq 0x579f0
movq %r15, %rdi
movq %r14, %rsi
callq 0x562f0
movq %rax, %r14
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x649b0(%rip), %rsi     # 0x1131ec
callq 0x579f0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x562f0
movq %rax, %rdi
movq %r12, %rsi
callq 0x562f0
movq %rax, %r14
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
leaq 0x6494c(%rip), %rsi     # 0x1131b5
callq 0x579f0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x562f0
movq %r13, %rdi
movq %rax, %rsi
callq 0x55ab0
leaq 0x68(%rsp), %rdi
callq 0x59200
leaq 0x18(%rsp), %rdi
callq 0x59200
movq %r15, %rdi
callq 0x59200
movq %r15, %rdi
movl $0x3, %esi
movq %r12, %rdx
movl $0x2, %ecx
callq 0x58730
xorl %r14d, %r14d
cmpw $0x0, 0xf8(%rsp)
je 0xae8cd
movq 0x100(%rsp), %rax
jmp 0xae8de
movw $0x5, 0x1e8(%rsp)
movq $-0x1, %rax
cmpq %r14, %rax
jle 0xae9a9
movq %r15, %rdi
movl $0x1, %esi
callq 0x55e90
movq %r13, %rdi
movq %rax, %rsi
movl $0x1, %edx
callq 0x55750
incq %r14
jmp 0xae8b8
movq %r15, %rdi
leaq 0x648b2(%rip), %rsi     # 0x1131c5
callq 0x579f0
movq %r15, %rdi
movq %r14, %rsi
callq 0x562f0
movq %rax, %r14
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x64880(%rip), %rsi     # 0x1131b5
callq 0x579f0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x562f0
movq %r13, %rdi
movq %rax, %rsi
callq 0x55ab0
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x59200
movq %r15, %rdi
callq 0x59200
movq %r15, %rdi
movq %r12, %rsi
callq 0x570b0
movq %rbx, %rdi
leaq 0x6483e(%rip), %rsi     # 0x1131b8
callq 0x579f0
movq %r15, %rdi
movq %rbx, %rsi
callq 0x562f0
movq %r13, %rdi
movq %rax, %rsi
callq 0x55ab0
leaq 0x18(%rsp), %rdi
callq 0x59200
movq %r15, %rdi
callq 0x59200
jmp 0xae9d8
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x64800(%rip), %rsi     # 0x1131b8
callq 0x579f0
movq %r13, %rdi
movq %rbx, %rsi
callq 0x55ab0
movq %rbx, %rdi
callq 0x59200
movq %r15, %rdi
callq 0x555b0
movq 0x8(%rsp), %rax
movl 0x180(%rax), %eax
decl %eax
cmpl %eax, %ebp
jl 0xae78f
leaq 0x6678e(%rip), %rsi     # 0x115182
leaq 0xf0(%rsp), %rdi
callq 0x579f0
leaq 0xf0(%rsp), %rdi
leaq 0x80(%rsp), %rsi
leaq 0xb2518(%rip), %r12     # 0x160f30
callq 0x562f0
movq 0x40(%rsp), %r13
movq %rax, %rbx
leaq 0x66756(%rip), %rsi     # 0x115182
leaq 0x18(%rsp), %rdi
callq 0x579f0
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x562f0
leaq 0x210(%rsp), %rdi
movq %rax, %rsi
callq 0x55ab0
leaq 0x18(%rsp), %rdi
callq 0x59200
leaq 0xf0(%rsp), %rdi
callq 0x59200
leaq 0x210(%rsp), %rdi
callq 0x56940
leaq 0x18(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x58fa0
leaq 0xf0(%rsp), %rdi
leaq 0x18(%rsp), %rdx
movl $0x3, %esi
movl $0x2, %ecx
callq 0x58730
leaq 0x18(%rsp), %rdi
callq 0x59200
cmpw $0x0, 0xf8(%rsp)
je 0xaeac3
movl 0x100(%rsp), %esi
jmp 0xaead2
movw $0x5, 0x1e8(%rsp)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
leaq 0x50(%rsp), %rdi
callq 0x62eaa
xorl %r14d, %r14d
leaq 0xf0(%rsp), %rbx
cmpw $0x0, 0xf8(%rsp)
je 0xaeafc
movq 0x100(%rsp), %rax
jmp 0xaeb0d
movw $0x5, 0x1e8(%rsp)
movq $-0x1, %rax
cmpq %r14, %rax
jle 0xaeb30
movq %rbx, %rdi
movl $0x1, %esi
callq 0x55e90
movq 0x58(%rsp), %rcx
movq (%rcx), %rcx
movb %al, (%rcx,%r14)
incq %r14
jmp 0xaeae7
leaq 0xf0(%rsp), %rdi
callq 0x55310
leaq 0xa8(%rsp), %rdi
callq 0x57e60
movl 0x60(%rsp), %edx
movq %r13, %rdi
movl $0x3c, %esi
xorl %eax, %eax
callq 0x57df0
movq 0x58(%rsp), %rax
testq %rax, %rax
je 0xaeb6c
movq (%rax), %rdx
jmp 0xaeb6e
xorl %edx, %edx
movq %r13, %rdi
movl $0x271f, %esi           # imm = 0x271F
xorl %eax, %eax
callq 0x57df0
leaq 0xf0(%rsp), %rdi
callq 0x555b0
leaq 0x210(%rsp), %rdi
callq 0x56500
leaq 0xa8(%rsp), %rdi
callq 0x59178
leaq 0x80(%rsp), %rdi
callq 0x59200
leaq 0xd8(%rsp), %rdi
callq 0x585e0
movq %r13, %rdi
movl $0x2712, %esi           # imm = 0x2712
movq %rax, %rdx
xorl %eax, %eax
callq 0x57df0
movq %r13, %rdi
movl $0x2727, %esi           # imm = 0x2727
movq 0x10(%rsp), %rdx
xorl %eax, %eax
callq 0x57df0
movl $0x1, %edx
movq %r13, %rdi
movl $0x34, %esi
xorl %eax, %eax
callq 0x57df0
movq %r13, %rdi
movl $0x2b, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x57df0
movq 0x8(%rsp), %rax
cmpw $0x0, 0xec(%rax)
je 0xaed93
leaq 0xd0(%rax), %rdi
callq 0x585e0
movq %r13, %rdi
movl $0x2714, %esi           # imm = 0x2714
movq %rax, %rdx
xorl %eax, %eax
callq 0x57df0
movq 0x8(%rsp), %rax
movl 0xe8(%rax), %edx
movq %r13, %rdi
movl $0x3b, %esi
xorl %eax, %eax
callq 0x57df0
movq 0x8(%rsp), %rbp
leaq 0xf0(%rbp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x56bd0
testb %al, %al
je 0xaec88
movq %rbx, %rdi
callq 0x585e0
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x575d0
movq %rax, %rbx
jmp 0xaec8a
xorl %ebx, %ebx
leaq 0x108(%rbp), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x56bd0
testb %al, %al
je 0xaecb9
movq %r14, %rdi
callq 0x585e0
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x575d0
movq %rax, %r14
jmp 0xaecbc
xorl %r14d, %r14d
leaq 0x210(%rsp), %rdi
movq %rbx, %rsi
callq 0x579f0
leaq 0x45414(%rip), %rsi     # 0xf40e7
leaq 0xf0(%rsp), %rdi
callq 0x579f0
leaq 0x210(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x562f0
movq %rax, %r15
leaq 0xa8(%rsp), %rdi
movq %r14, %rsi
callq 0x579f0
leaq 0xa8(%rsp), %rsi
movq %r15, %rdi
callq 0x562f0
movq %rax, %rdi
callq 0x585e0
movq %r13, %rdi
movl $0x2716, %esi           # imm = 0x2716
movq %rax, %rdx
xorl %eax, %eax
callq 0x57df0
leaq 0xa8(%rsp), %rdi
callq 0x59200
leaq 0xf0(%rsp), %rdi
callq 0x59200
leaq 0x210(%rsp), %rdi
callq 0x59200
movq %rbx, %rdi
callq 0x550d0
movq %r14, %rdi
callq 0x550d0
movl 0xec(%rbp), %eax
decl %eax
cmpw $0x4, %ax
jae 0xaed93
movzwl %ax, %eax
leaq 0x6432f(%rip), %rcx     # 0x1130b0
movl (%rcx,%rax,4), %edx
movq %r13, %rdi
movl $0x65, %esi
xorl %eax, %eax
callq 0x57df0
leaq 0x4a4(%rip), %rdx       # 0xaf23e
movq %r13, %rdi
movl $0x4e6f, %esi           # imm = 0x4E6F
xorl %eax, %eax
callq 0x57df0
movq %r13, %rdi
movl $0x272d, %esi           # imm = 0x272D
movq 0x8(%rsp), %rdx
xorl %eax, %eax
callq 0x57df0
leaq 0x79b(%rip), %rdx       # 0xaf55f
movq %r13, %rdi
movl $0x4e2b, %esi           # imm = 0x4E2B
xorl %eax, %eax
callq 0x57df0
movq %r13, %rdi
movl $0x2711, %esi           # imm = 0x2711
movq 0x8(%rsp), %rdx
xorl %eax, %eax
callq 0x57df0
leaq 0x7be(%rip), %rdx       # 0xaf5ac
movq %r13, %rdi
movl $0x4e58, %esi           # imm = 0x4E58
xorl %eax, %eax
callq 0x57df0
movq %r13, %rdi
movl $0x2749, %esi           # imm = 0x2749
movq 0x8(%rsp), %rdx
xorl %eax, %eax
callq 0x57df0
movq 0x8(%rsp), %rax
leaq 0x240(%rax), %rdi
xorps %xmm0, %xmm0
movups %xmm0, 0x260(%rax)
movq 0x48(%rsp), %rsi
callq 0x555f0
movl $0x108, %edi            # imm = 0x108
callq 0x556b0
movq %rax, %r14
movq %rax, %rdi
movl $0x3, %esi
movq 0x48(%rsp), %rdx
movl $0x1, %ecx
callq 0x582f0
movq 0x8(%rsp), %rax
movq %r14, 0x258(%rax)
movq %r13, %rdi
callq 0x571f0
movl %eax, %ebx
movq 0x8(%rsp), %rax
movq 0x258(%rax), %rdi
testq %rdi, %rdi
je 0xaee82
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x10(%rsp), %rdi
callq 0x58000
movq %r13, %rdi
callq 0x55510
xorl %ebp, %ebp
negl %ebx
sbbl %ebp, %ebp
leaq 0x50(%rsp), %rdi
movq %r12, (%rdi)
callq 0x6207e
leaq 0xd8(%rsp), %rdi
callq 0x59200
movl %ebp, %eax
addq $0x318, %rsp            # imm = 0x318
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xaf0c7
jmp 0xaf0bd
jmp 0xaf0bd
jmp 0xaf0b8
jmp 0xaf0b8
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
jmp 0xaf0ad
jmp 0xaf075
jmp 0xaef1c
jmp 0xaf07c
jmp 0xaf07c
jmp 0xaf075
jmp 0xaf07c
jmp 0xaf075
jmp 0xaef14
jmp 0xaef1c
jmp 0xaef14
movq %rax, %rbx
jmp 0xaefb3
movq %rax, %rbx
jmp 0xaf0fd
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x59200
jmp 0xaf10a
movq %rax, %rbx
jmp 0xaf10a
movq %rax, %rbx
leaq 0x1f8(%rsp), %rdi
callq 0x59200
jmp 0xaef58
jmp 0xaef55
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x59200
jmp 0xaef69
jmp 0xaef66
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x59200
leaq 0x98(%rsp), %rdi
callq 0x58d60
jmp 0xaefc8
movq %rax, %rbx
jmp 0xaef73
jmp 0xaefc5
jmp 0xaefe8
jmp 0xaef8f
jmp 0xaef8f
movq %rax, %rbx
jmp 0xaf117
jmp 0xaf0c2
jmp 0xaf0bd
jmp 0xaf098
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x59200
leaq 0xf0(%rsp), %rdi
callq 0x59200
jmp 0xaf0fd
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x59200
jmp 0xaefeb
jmp 0xaefd9
movq %rax, %rbx
jmp 0xaf02c
movq %rax, %rbx
jmp 0xaf039
jmp 0xaf0c2
movq %rax, %rbx
leaq 0x210(%rsp), %rdi
callq 0x59200
jmp 0xaf117
movq %rax, %rbx
movl $0x108, %esi            # imm = 0x108
movq %r14, %rdi
callq 0x55480
jmp 0xaf124
jmp 0xaf0e6
jmp 0xaf0c2
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x59200
leaq 0xf0(%rsp), %rdi
callq 0x59200
leaq 0x210(%rsp), %rdi
jmp 0xaf11f
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x59200
jmp 0xaf0e9
jmp 0xaf0e6
jmp 0xaf07c
jmp 0xaf075
jmp 0xaf075
jmp 0xaf07c
jmp 0xaf075
jmp 0xaf075
jmp 0xaf07c
jmp 0xaf07c
jmp 0xaf07c
jmp 0xaf098
jmp 0xaf0c2
jmp 0xaf075
movq %rax, %rbx
jmp 0xaf0f6
jmp 0xaf07c
movq %rax, %rbx
jmp 0xaf0a5
jmp 0xaf098
jmp 0xaf098
jmp 0xaf098
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x59200
jmp 0xaf09b
jmp 0xaf0e6
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x59200
leaq 0xf0(%rsp), %rdi
callq 0x59200
jmp 0xaf0f6
jmp 0xaf0b8
jmp 0xaf0b8
movq %rax, %rbx
jmp 0xaf131
movq %rax, %rbx
jmp 0xaf0d7
movq %rax, %rbx
jmp 0xaf124
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x59200
leaq 0x210(%rsp), %rdi
callq 0x59200
jmp 0xaf131
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x555b0
leaq 0xb1e33(%rip), %r12     # 0x160f30
leaq 0x210(%rsp), %rdi
callq 0x56500
leaq 0xa8(%rsp), %rdi
callq 0x59178
leaq 0x80(%rsp), %rdi
callq 0x59200
leaq 0x50(%rsp), %rdi
movq %r12, (%rdi)
callq 0x6207e
leaq 0xd8(%rsp), %rdi
callq 0x59200
movq %rbx, %rdi
callq 0x57090