// File: /workspace/github_cpp_makefile_star2_O3/mbourand[P]webserv/srcs/Methods/GetMethod.cpp
// Function: GetMethod::process(Request const&, ConfigContext const&, ServerSocket const&)
Response GetMethod::process(const Request& request, const ConfigContext& config, const ServerSocket& socket)
{
	const URL& url = request._url;
	Response response(200, url._path);
	response.setCompression(request._headers);
	int base_depth = 0;
	std::string realPath = config.rootPath(url._path, base_depth);
	try
	{
		realPath = ft::simplify_path(realPath, true, base_depth);
	}
	catch (std::exception& e)
	{
		return Logger::print("Path is not safe", response.setCode(400), ERROR, VERBOSE);
	}

	if (realPath[0] != '/')
		realPath = g_webserv.cwd + "/" + realPath;

	if (ft::is_directory(realPath))
	{
		try
		{
			std::string index = "/" + config.getParam("index").front();
			realPath += index;
			std::string extension = index.substr(index.rfind('.'));
			if (config.getCGIExtensions().find(extension) != config.getCGIExtensions().end() || (realPath.find(config.getParam("cgi_dir").front()) == 0))
				return process_cgi(realPath, url, config, socket, request);
		}
		catch (std::exception& e)
		{
			if (config.hasAutoIndex())
				return directory_listing(request, config, realPath);
			if (!url._is_directory)
			{
				response.addHeader("Location", url._path + "/");
				return response.setCode(301);
			}
		}
	}
	else if (url._is_directory)
		return Logger::print("File not found", response.setCode(404), ERROR, VERBOSE);


	std::list<std::string> splitted = ft::split(realPath, '/');
	std::string current_path;
	current_path.reserve(realPath.size());
	if (realPath[0] == '/')
		current_path.push_back('/');
	for (std::list<std::string>::iterator it = splitted.begin();it != splitted.end(); it++, current_path.push_back('/'))
	{
		current_path += *it;
		if (!ft::is_regular_file(current_path))
			continue;
		std::string file_name;
		if (ft::contains(current_path, '/'))
			file_name = current_path.substr(current_path.rfind('/'));
		else
			file_name = current_path;
		if (file_name.rfind('.') != std::string::npos)
		{
			std::string extension = file_name.substr(file_name.rfind('.'));
			if (config.getCGIExtensions().find(extension) != config.getCGIExtensions().end() || (realPath.find(config.getParam("cgi_dir").front()) == 0))
				return process_cgi(realPath, url, config, socket, request);
		}
	}

	std::fstream file;
	if (!request.getHeaderValue("Accept-Language").empty())
	{
		std::string filename = realPath.substr((realPath.rfind('/') == std::string::npos ? 0 : realPath.rfind('/')));
		std::string folder = (realPath.size() == filename.size() ? "" : realPath.substr(0, realPath.rfind(filename))) + "/.langs/";

		if (ft::is_directory(folder))
		{
			AcceptLanguageHeader* ach;
			for (Request::HeadersVector::const_iterator it = request._headers.begin(); it != request._headers.end(); it++)
				if ((*it)->getType() == AcceptLanguageHeader().getType())
					ach = reinterpret_cast<AcceptLanguageHeader*>(*it);

			std::multimap<float, std::string, std::greater<float> > language_preferences = ach->getPreferences();
			for (std::map<float, std::string, std::greater<float> >::const_iterator it = language_preferences.begin(); it != language_preferences.end(); it++)
			{
				if (g_webserv.languages->GetNode(it->second) == NULL)
					continue;

				file.open((folder + it->second + "/" + filename).c_str());
				if (file.good() && file.is_open())
				{
					response.addHeader("Content-Language", it->second);
					break;
				}
			}
		}
	}

	if (!file.good() || !file.is_open())
	{
		file.open(realPath.c_str());
		if (!file.good() || !file.is_open())
		{
			if (errno == ENOENT || errno == ENOTDIR)
				return Logger::print("File not found", response.setCode(404), ERROR, VERBOSE);
			if (errno == EACCES || errno == EISDIR)
				return Logger::print("Permission denied", response.setCode(403), ERROR, VERBOSE);
			return Logger::print("Unexpected error while trying to open file: " + std::string(strerror(errno)), response.setCode(500), ERROR, VERBOSE);
		}
	}


	std::string content((std::istreambuf_iterator<char>(file)), (std::istreambuf_iterator<char>()));
	std::ostringstream convert;
	struct stat file_stats;

	lstat(realPath.c_str(), &file_stats);
	convert << file_stats.st_size;
	response.addHeader("Content-Length", convert.str());
	convert.str("");


	convert << file_stats.st_mtime;
	struct tm	time;
	strptime(std::string(convert.str()).c_str(), "%s", &time);
	if (time.tm_gmtoff > 0) // convert to GMT
		file_stats.st_mtim.tv_sec -= time.tm_gmtoff;
	if (time.tm_isdst) // substract Daylight saving time
		file_stats.st_mtim.tv_sec -= 3600;
	convert.str("");

	convert << file_stats.st_mtime;
	strptime(std::string(convert.str()).c_str(), "%s", &time);
	char		buffer[1024];
	strftime(buffer, sizeof(buffer), "%a, %d %b %Y %H:%M:%S GMT", &time);
	response.addHeader("Last-Modified", buffer);
	convert.str("");


	response.addDateHeader();
	response.addHeader("Server", "Webserv");
	t_hnode	*hnode = g_webserv.file_formatname->GetNode(realPath.substr(realPath.find_last_of('.') + 1));
	if (hnode != NULL)
		response.addHeader("Content-Type", hnode->value + "; charset=UTF-8");


	response.setBody(content);

	return (response);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe08, %rsp            # imm = 0xE08
movq %r8, 0x108(%rsp)
movq %rcx, %r14
movq %rdx, %r12
movq %rdi, %rbp
leaq 0xb8(%rdx), %r15
leaq 0xa48(%rsp), %rbx
movq %rbx, %rdi
movl $0xc8, %esi
movq %r15, %rdx
callq 0x36f58
leaq 0x140(%r12), %rsi
movq %rbx, %rdi
callq 0x37b0e
leaq 0xfc(%rsp), %rcx
movl $0x0, (%rcx)
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x2b9a8
movl 0xfc(%rsp), %ecx
leaq 0x430(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movl $0x1, %edx
callq 0x1d26b
leaq 0x40(%rsp), %rdi
leaq 0x430(%rsp), %rbx
movq %rbx, %rsi
callq 0x7590
movq (%rbx), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xbc50
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
movq %r14, 0x10(%rsp)
movq 0x40(%rsp), %rsi
cmpb $0x2f, (%rsi)
movq %r12, 0x38(%rsp)
je 0xbd65
leaq 0x848(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x428ed(%rip), %rax     # 0x4e568
movq 0x48(%rax), %rsi
movq 0x50(%rax), %rdx
addq %rsi, %rdx
leaq 0x838(%rsp), %rdi
callq 0x8a92
leaq 0x2edfa(%rip), %rsi     # 0x3aa94
leaq 0x838(%rsp), %rdi
callq 0x78d0
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
leaq 0x838(%rsp), %rdi
callq 0x7190
leaq 0x440(%rsp), %r12
movq %r12, 0x430(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xbcf2
movq %rdx, 0x430(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x440(%rsp)
jmp 0xbcfa
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x430(%rsp), %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x7590
movq (%rbx), %rdi
cmpq %r12, %rdi
je 0xbd3e
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x838(%rsp), %rdi
cmpq %r14, %rdi
movq 0x38(%rsp), %r12
je 0xbd60
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x40(%rsp), %rsi
leaq 0x1e0(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1d0(%rsp), %rdi
callq 0x8a92
leaq 0x1d0(%rsp), %rdi
callq 0x1ccaf
movl %eax, %ebx
movq 0x1d0(%rsp), %rdi
cmpq %r14, %rdi
je 0xbdb2
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x30(%r12), %rax
movq %rax, 0x100(%rsp)
testb %bl, %bl
je 0xbf25
leaq 0x848(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x30f84(%rip), %rsi     # 0x3cd5e
leaq 0x30f82(%rip), %rdx     # 0x3cd63
leaq 0x838(%rsp), %rdi
callq 0x80f4
leaq 0x838(%rsp), %rsi
movq 0x10(%rsp), %rdi
callq 0x2b17e
movq (%rax), %rdx
addq $0x10, %rdx
leaq 0x2ec86(%rip), %rsi     # 0x3aa94
leaq 0x430(%rsp), %rdi
callq 0xe2cb
movq 0x838(%rsp), %rdi
cmpq %r14, %rdi
je 0xbe38
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rsi
movq 0x438(%rsp), %rdx
leaq 0x40(%rsp), %rdi
callq 0x7190
leaq 0x430(%rsp), %rbx
movq %rbx, %rdi
movl $0x2e, %esi
movq $-0x1, %rdx
callq 0x7900
leaq 0x838(%rsp), %rdi
movq %rbx, %rsi
movq %rax, %rdx
movq $-0x1, %rcx
callq 0x74d0
movq 0x10(%rsp), %rdi
callq 0x2b14c
leaq 0x838(%rsp), %rsi
movq %rax, %rdi
callq 0xf300
movq %rax, %rbx
movq 0x10(%rsp), %rdi
callq 0x2b14c
addq $0x8, %rax
cmpq %rax, %rbx
je 0xbfd0
movq %r12, (%rsp)
leaq 0x40(%rsp), %rdx
movq %rbp, %rdi
movq 0x100(%rsp), %rcx
movq 0x10(%rsp), %r8
movq 0x108(%rsp), %r9
callq 0xdc62
movq 0x838(%rsp), %rdi
cmpq %r14, %rdi
je 0xbeff
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xd294
movq 0x440(%rsp), %rsi
jmp 0xbfc3
cmpb $0x1, 0x118(%r12)
jne 0xc091
leaq 0x1c0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x2e7ce(%rip), %rsi     # 0x3a715
leaq 0x2e7d5(%rip), %rdx     # 0x3a723
leaq 0x1b0(%rsp), %rdi
callq 0x80f4
leaq 0xa48(%rsp), %rdi
movl $0x194, %esi            # imm = 0x194
callq 0x37aee
leaq 0xcc8(%rsp), %rdi
movq %rax, %rsi
callq 0x36e1a
leaq 0x1b0(%rsp), %rsi
leaq 0xcc8(%rsp), %rdx
movq %rbp, %rdi
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0xe204
leaq 0xcc8(%rsp), %rdi
callq 0x36d9a
movq 0x1b0(%rsp), %rdi
cmpq %rbx, %rdi
je 0xd294
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xd294
leaq 0x238(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x2e729(%rip), %rsi     # 0x3a70d
leaq 0x2e729(%rip), %rdx     # 0x3a714
leaq 0x228(%rsp), %rdi
callq 0x80f4
leaq 0x228(%rsp), %rsi
movq 0x10(%rsp), %rdi
callq 0x2b17e
movq (%rax), %rax
movq 0x10(%rax), %rsi
movq 0x18(%rax), %rcx
leaq 0x40(%rsp), %rdi
xorl %edx, %edx
callq 0x77f0
movq %rax, %rbx
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0xc041
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x74b0
testq %rbx, %rbx
movq 0x38(%rsp), %r12
je 0xbebc
movq 0x838(%rsp), %rdi
cmpq %r14, %rdi
je 0xc06c
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xc091
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x430(%rsp), %rdx
movb $0x2f, (%rdx)
leaq 0x210(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x1c085
movq %rbp, 0x8(%rsp)
leaq 0xe8(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x48(%rsp), %rsi
leaq 0xd8(%rsp), %rdi
callq 0x7700
movq 0x40(%rsp), %rax
cmpb $0x2f, (%rax)
jne 0xc0f8
leaq 0xd8(%rsp), %rdi
movl $0x2f, %esi
callq 0x7420
movq 0x210(%rsp), %r14
leaq 0x1a0(%rsp), %r15
leaq 0xd8(%rsp), %rbx
leaq 0x190(%rsp), %r12
leaq 0x838(%rsp), %rbp
leaq 0x210(%rsp), %rax
cmpq %rax, %r14
je 0xc3cc
movq 0x10(%r14), %rsi
movq 0x18(%r14), %rdx
movq %rbx, %rdi
callq 0x7190
movq %r15, 0x190(%rsp)
movq 0xd8(%rsp), %rsi
movq 0xe0(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x8a92
movq %r12, %rdi
callq 0x1cf28
movl %eax, %r13d
movq 0x190(%rsp), %rdi
cmpq %r15, %rdi
je 0xc18c
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x74b0
testb %r13b, %r13b
je 0xc3b7
leaq 0x440(%rsp), %rax
movq %rax, 0x430(%rsp)
movq $0x0, 0x438(%rsp)
movb $0x0, 0x440(%rsp)
movb $0x2f, 0x838(%rsp)
movq 0xd8(%rsp), %rdi
movq 0xe0(%rsp), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
callq 0xf389
movq 0xd8(%rsp), %rcx
addq 0xe0(%rsp), %rcx
cmpq %rcx, %rax
je 0xc259
movq %rbx, %rdi
movl $0x2f, %esi
movq $-0x1, %rdx
callq 0x7900
movq %rbp, %rdi
movq %rbx, %rsi
movq %rax, %rdx
movq $-0x1, %rcx
callq 0x74d0
leaq 0x430(%rsp), %rdi
movq %rbp, %rsi
callq 0x7590
movq 0x838(%rsp), %rdi
leaq 0x848(%rsp), %rax
cmpq %rax, %rdi
je 0xc24f
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x430(%rsp), %r13
jmp 0xc26c
leaq 0x430(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x72c0
movq %r13, %rdi
movl $0x2e, %esi
movq $-0x1, %rdx
callq 0x7900
cmpq $-0x1, %rax
je 0xc392
leaq 0x430(%rsp), %r13
movq %r13, %rdi
movl $0x2e, %esi
movq $-0x1, %rdx
callq 0x7900
movq %rbp, %rdi
movq %r13, %rsi
movq %rax, %rdx
movq $-0x1, %rcx
callq 0x74d0
movq 0x10(%rsp), %rdi
callq 0x2b14c
movq %rax, %rdi
movq %rbp, %rsi
callq 0xf300
movq %rax, %r13
movq 0x10(%rsp), %rdi
callq 0x2b14c
addq $0x8, %rax
cmpq %rax, %r13
jne 0xc4ba
leaq 0x238(%rsp), %rax
movq %rax, 0x228(%rsp)
leaq 0x228(%rsp), %r13
movq %r13, %rdi
leaq 0x2e401(%rip), %rsi     # 0x3a70d
leaq 0x2e401(%rip), %rdx     # 0x3a714
callq 0x80f4
movq 0x10(%rsp), %rdi
movq %r13, %rsi
callq 0x2b17e
movq (%rax), %rax
movq 0x10(%rax), %rsi
movq 0x18(%rax), %rcx
leaq 0x40(%rsp), %rdi
xorl %edx, %edx
callq 0x77f0
movq %rax, %r13
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0xc364
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x74b0
testq %r13, %r13
je 0xc4ba
movq 0x838(%rsp), %rdi
leaq 0x848(%rsp), %rax
cmpq %rax, %rdi
je 0xc392
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xc3b7
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
movq (%r14), %r14
movq %rbx, %rdi
movl $0x2f, %esi
callq 0x7420
jmp 0xc120
leaq 0x838(%rsp), %rdi
callq 0x7550
leaq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
movq %rax, (%rdi)
leaq 0x2dc89(%rip), %rsi     # 0x3a07c
leaq 0x2dc91(%rip), %rdx     # 0x3a08b
callq 0x80f4
movq 0x8(%rsp), %rbp
movq 0x38(%rsp), %r15
leaq 0x430(%rsp), %rdi
leaq 0x228(%rsp), %rdx
movq %r15, %rsi
callq 0x35bbe
movq 0x430(%rsp), %rdi
movq 0x438(%rsp), %rbx
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xc44e
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0xc473
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x74b0
testq %rbx, %rbx
je 0xc9bf
leaq 0x40(%rsp), %rdi
movl $0x2f, %esi
movq $-0x1, %rdx
callq 0x7900
cmpq $-0x1, %rax
je 0xc545
leaq 0x40(%rsp), %rdi
movl $0x2f, %esi
movq $-0x1, %rdx
callq 0x7900
movq %rax, %rdx
jmp 0xc547
movq 0x38(%rsp), %rax
movq %rax, (%rsp)
leaq 0x40(%rsp), %rdx
movq 0x8(%rsp), %rbp
movq %rbp, %rdi
movq 0x100(%rsp), %rcx
movq 0x10(%rsp), %r8
movq 0x108(%rsp), %r9
callq 0xdc62
movq 0x838(%rsp), %rdi
leaq 0x848(%rsp), %rax
cmpq %rax, %rdi
leaq 0xe8(%rsp), %rbx
je 0xc517
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xd26a
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xd26a
xorl %edx, %edx
leaq 0x228(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movq $-0x1, %rcx
callq 0x74d0
movq 0x230(%rsp), %rcx
cmpq %rcx, 0x48(%rsp)
jne 0xc593
leaq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
movq %rax, (%rdi)
leaq 0x2e812(%rip), %rdx     # 0x3ad9b
movq %rdx, %rsi
callq 0x80f4
jmp 0xc5c4
movq 0x228(%rsp), %rsi
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq $-0x1, %rdx
callq 0x7600
leaq 0x430(%rsp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x74d0
leaq 0x2e159(%rip), %rsi     # 0x3a724
leaq 0x430(%rsp), %rdi
callq 0x78d0
leaq 0x3b0(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xc608
movq %rdx, 0x3a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x3b0(%rsp)
jmp 0xc60e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x3a8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xc64e
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x180(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x3a0(%rsp), %rsi
movq 0x3a8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x170(%rsp), %rdi
callq 0x8a92
leaq 0x170(%rsp), %rdi
callq 0x1ccaf
movl %eax, %ebx
movq 0x170(%rsp), %rdi
cmpq %r14, %rdi
je 0xc6a6
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x74b0
testb %bl, %bl
je 0xc975
movq 0x140(%r15), %rbp
leaq 0x430(%rsp), %r15
leaq 0x60(%rsp), %r12
movq (%rbp), %rsi
movq (%rsi), %rax
leaq 0x80(%rsp), %rdi
callq *0x10(%rax)
movq %r15, %rdi
callq 0x8244
movq %r12, %rdi
movq %r15, %rsi
callq 0x8292
movq 0x88(%rsp), %rdx
cmpq 0x68(%rsp), %rdx
jne 0xc718
movq 0x60(%rsp), %r13
testq %rdx, %rdx
je 0xc722
movq 0x80(%rsp), %rdi
movq %r13, %rsi
callq 0x74c0
testl %eax, %eax
sete %r14b
jmp 0xc725
movq 0x60(%rsp), %r13
xorl %r14d, %r14d
jmp 0xc725
movb $0x1, %r14b
leaq 0x70(%rsp), %rax
cmpq %rax, %r13
je 0xc73f
movq 0x70(%rsp), %rsi
incq %rsi
movq %r13, %rdi
callq 0x74b0
movq %r15, %rdi
callq 0x8270
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xc76c
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x74b0
testb %r14b, %r14b
je 0xc775
movq (%rbp), %rbx
addq $0x8, %rbp
movq 0x38(%rsp), %rax
cmpq 0x148(%rax), %rbp
jne 0xc6c2
movq (%rbx), %rax
leaq 0x430(%rsp), %rdi
movq %rbx, %rsi
callq *0x28(%rax)
leaq 0x438(%rsp), %r14
movq 0x10(%r14), %rbx
cmpq %r14, %rbx
movq 0x8(%rsp), %rbp
je 0xc968
leaq 0x41dab(%rip), %r13     # 0x4e568
leaq 0x18(%rsp), %r15
movq 0x10(%r13), %rdi
leaq 0x28(%rbx), %r12
movq %r12, %rsi
callq 0x17fd4
testq %rax, %rax
je 0xc954
movq %r15, %rdi
leaq 0x3a0(%rsp), %rsi
movq %r12, %rdx
callq 0xe3a9
movq %r15, %rdi
leaq 0x2e29c(%rip), %rsi     # 0x3aa94
callq 0x78d0
leaq 0x70(%rsp), %rsi
movq %rsi, 0x60(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xc825
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0xc82b
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x228(%rsp), %rsi
movq 0x230(%rsp), %rdx
leaq 0x60(%rsp), %rdi
callq 0x7190
leaq 0x90(%rsp), %rsi
movq %rsi, 0x80(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xc891
movq %rdx, 0x80(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x90(%rsp)
jmp 0xc897
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x88(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x80(%rsp), %rsi
leaq 0x838(%rsp), %rdi
movl $0x18, %edx
callq 0x7450
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xc8f1
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xc90d
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0xc929
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x838(%rsp), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x858(%rsp,%rax)
jne 0xc954
leaq 0x8b8(%rsp), %rdi
callq 0x7130
testb %al, %al
jne 0xd2d1
movq %rbx, %rdi
callq 0x7520
movq %rax, %rbx
cmpq %r14, %rax
jne 0xc7c2
leaq 0x430(%rsp), %rdi
callq 0x96fc
movq 0x3a0(%rsp), %rdi
leaq 0x3b0(%rsp), %rax
cmpq %rax, %rdi
je 0xc99a
movq 0x3b0(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0xc9bf
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x838(%rsp), %rax
movq -0x18(%rax), %rbx
cmpl $0x0, 0x858(%rsp,%rbx)
jne 0xc9e6
leaq 0x8b8(%rsp), %rdi
callq 0x7130
testb %al, %al
jne 0xca2c
movq 0x40(%rsp), %rsi
leaq 0x838(%rsp), %rdi
movl $0x18, %edx
callq 0x7450
movq 0x838(%rsp), %rax
movq -0x18(%rax), %rbx
cmpl $0x0, 0x858(%rsp,%rbx)
jne 0xcfcf
leaq 0x8b8(%rsp), %rdi
callq 0x7130
testb %al, %al
je 0xcfcf
movq 0x920(%rsp,%rbx), %rsi
leaq 0x70(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x60(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0xf420
leaq 0x228(%rsp), %rdi
callq 0x75e0
movq 0x40(%rsp), %rdi
leaq 0x3a0(%rsp), %rbx
movq %rbx, %rsi
callq 0x78e0
movq 0x30(%rbx), %rsi
leaq 0x228(%rsp), %rdi
callq 0x7470
leaq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
movq %rax, (%rdi)
leaq 0x2d663(%rip), %rsi     # 0x3a104
leaq 0x2d66a(%rip), %rdx     # 0x3a112
callq 0x80f4
leaq 0x230(%rsp), %r14
leaq 0x80(%rsp), %rdi
movq %r14, %rsi
callq 0x7710
leaq 0xa48(%rsp), %rdi
leaq 0x430(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x37020
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcb03
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xcb28
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
movq %rax, (%rdi)
leaq 0x2e259(%rip), %rdx     # 0x3ad9b
movq %rdx, %rsi
callq 0x80f4
leaq 0x430(%rsp), %rsi
movq %r14, %rdi
callq 0x7690
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xcb7f
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x3f8(%rsp), %rbx
leaq 0x228(%rsp), %rdi
movq %rbx, %rsi
callq 0x7470
leaq 0x430(%rsp), %rdi
movq %r14, %rsi
callq 0x7710
movq 0x430(%rsp), %rdi
leaq 0x2d7ef(%rip), %rsi     # 0x3a3a5
leaq 0x80(%rsp), %rdx
callq 0x70b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xcbe8
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0xa8(%rsp), %rax
testq %rax, %rax
jle 0xcc00
subq %rax, %rbx
movq %rbx, 0x3f8(%rsp)
cmpl $0x0, 0xa0(%rsp)
je 0xcc19
addq $-0xe10, %rbx           # imm = 0xF1F0
movq %rbx, 0x3f8(%rsp)
leaq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
movq %rax, (%rdi)
leaq 0x2e168(%rip), %rdx     # 0x3ad9b
movq %rdx, %rsi
callq 0x80f4
leaq 0x430(%rsp), %rsi
movq %r14, %rdi
callq 0x7690
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xcc70
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x228(%rsp), %rdi
movq %rbx, %rsi
callq 0x7470
leaq 0x430(%rsp), %rdi
movq %r14, %rsi
callq 0x7710
movq 0x430(%rsp), %rdi
leaq 0x2d706(%rip), %rsi     # 0x3a3a5
leaq 0x80(%rsp), %rdx
callq 0x70b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xccd1
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x2da82(%rip), %rdx     # 0x3a75a
leaq 0x430(%rsp), %rdi
leaq 0x80(%rsp), %rcx
movl $0x400, %esi            # imm = 0x400
callq 0x73f0
leaq 0x28(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x2d513(%rip), %rsi     # 0x3a216
leaq 0x2d519(%rip), %rdx     # 0x3a223
leaq 0x18(%rsp), %rdi
callq 0x80f4
leaq 0xc8(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x430(%rsp), %rbx
movq %rbx, %rdi
callq 0x7220
leaq (%rsp,%rax), %rdx
addq $0x430, %rdx            # imm = 0x430
leaq 0xb8(%rsp), %rdi
movq %rbx, %rsi
callq 0x80f4
leaq 0xa48(%rsp), %rdi
leaq 0x18(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
callq 0x37020
movq 0xb8(%rsp), %rdi
cmpq %r13, %rdi
je 0xcd82
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x18(%rsp), %rdi
cmpq %r12, %rdi
je 0xcd99
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x18(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2dff3(%rip), %rdx     # 0x3ad9b
movq %rdx, %rsi
callq 0x80f4
leaq 0x18(%rsp), %rsi
movq %r14, %rdi
callq 0x7690
movq 0x18(%rsp), %rdi
cmpq %r12, %rdi
je 0xcdd4
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0xa48(%rsp), %rdi
callq 0x373a0
leaq 0x18(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d4a7(%rip), %rsi     # 0x3a297
leaq 0x2d4a6(%rip), %rdx     # 0x3a29d
callq 0x80f4
leaq 0xb8(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2ddce(%rip), %rsi     # 0x3abdc
leaq 0x2ddce(%rip), %rdx     # 0x3abe3
callq 0x80f4
leaq 0xa48(%rsp), %rdi
leaq 0x18(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
callq 0x37020
movq 0xb8(%rsp), %rdi
cmpq %r13, %rdi
je 0xce51
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x18(%rsp), %rdi
cmpq %r12, %rdi
je 0xce68
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x416f9(%rip), %rax     # 0x4e568
movq 0x8(%rax), %rbx
leaq 0x40(%rsp), %r14
movq %r14, %rdi
movl $0x2e, %esi
movq $-0x1, %rdx
callq 0x7900
leaq 0x1(%rax), %rdx
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
movq $-0x1, %rcx
callq 0x74d0
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x17fd4
movq %rax, %rbx
movq 0x18(%rsp), %rdi
cmpq %r12, %rdi
je 0xcecb
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x74b0
testq %rbx, %rbx
je 0xcf6c
leaq 0x18(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d26f(%rip), %rsi     # 0x3a152
leaq 0x2d274(%rip), %rdx     # 0x3a15e
callq 0x80f4
leaq 0xb8(%rsp), %rdi
movq %r13, (%rdi)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
callq 0x8a92
leaq 0x2d7db(%rip), %rsi     # 0x3a6ec
leaq 0xb8(%rsp), %rdi
callq 0x78d0
leaq 0xa48(%rsp), %rdi
leaq 0x18(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
callq 0x37020
movq 0xb8(%rsp), %rdi
cmpq %r13, %rdi
je 0xcf55
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x18(%rsp), %rdi
cmpq %r12, %rdi
je 0xcf6c
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0xa48(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x37b04
leaq 0xa48(%rsp), %rsi
movq %rbp, %rdi
callq 0x36e1a
movq 0x4100b(%rip), %rsi     # 0x4dfa0
leaq 0x228(%rsp), %rdi
callq 0x72b0
leaq 0x298(%rsp), %rdi
callq 0x71c0
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
leaq 0xe8(%rsp), %rbx
je 0xd25d
movq 0x70(%rsp), %rsi
jmp 0xd255
callq 0x7070
movl (%rax), %edi
cmpl $0x13, %edi
jg 0xcfee
cmpl $0x2, %edi
je 0xd000
cmpl $0xd, %edi
je 0xd09c
jmp 0xd138
cmpl $0x15, %edi
je 0xd09c
cmpl $0x14, %edi
jne 0xd138
leaq 0x160(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x2d702(%rip), %rsi     # 0x3a715
leaq 0x2d709(%rip), %rdx     # 0x3a723
leaq 0x150(%rsp), %rdi
callq 0x80f4
leaq 0xa48(%rsp), %rdi
movl $0x194, %esi            # imm = 0x194
callq 0x37aee
leaq 0xc28(%rsp), %rdi
movq %rax, %rsi
callq 0x36e1a
leaq 0x150(%rsp), %rsi
leaq 0xc28(%rsp), %rdx
movq %rbp, %rdi
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0xe204
leaq 0xc28(%rsp), %rdi
callq 0x36d9a
movq 0x150(%rsp), %rdi
cmpq %rbx, %rdi
leaq 0xe8(%rsp), %rbx
je 0xd25d
movq 0x160(%rsp), %rsi
jmp 0xd255
leaq 0x140(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x2d30d(%rip), %rsi     # 0x3a3bc
leaq 0x2d317(%rip), %rdx     # 0x3a3cd
leaq 0x130(%rsp), %rdi
callq 0x80f4
leaq 0xa48(%rsp), %rdi
movl $0x193, %esi            # imm = 0x193
callq 0x37aee
leaq 0xb88(%rsp), %rdi
movq %rax, %rsi
callq 0x36e1a
leaq 0x130(%rsp), %rsi
leaq 0xb88(%rsp), %rdx
movq %rbp, %rdi
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0xe204
leaq 0xb88(%rsp), %rdi
callq 0x36d9a
movq 0x130(%rsp), %rdi
cmpq %rbx, %rdi
leaq 0xe8(%rsp), %rbx
je 0xd25d
movq 0x140(%rsp), %rsi
jmp 0xd255
callq 0x71d0
leaq 0x430(%rsp), %rdi
leaq 0x228(%rsp), %rdx
movq %rax, %rsi
callq 0xde66
leaq 0x2d5d1(%rip), %rcx     # 0x3a72d
leaq 0x430(%rsp), %rdi
movl $0x2c, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x7500
leaq 0x120(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xd1a3
movq %rdx, 0x110(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x120(%rsp)
jmp 0xd1a9
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x118(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xa48(%rsp), %rdi
movl $0x1f4, %esi            # imm = 0x1F4
callq 0x37aee
leaq 0xae8(%rsp), %rdi
movq %rax, %rsi
callq 0x36e1a
leaq 0x110(%rsp), %rsi
leaq 0xae8(%rsp), %rdx
movq %rbp, %rdi
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0xe204
leaq 0xae8(%rsp), %rdi
callq 0x36d9a
movq 0x110(%rsp), %rdi
cmpq %rbx, %rdi
je 0xd230
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
leaq 0xe8(%rsp), %rbx
je 0xd25d
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x838(%rsp), %rdi
callq 0x7110
movq 0xd8(%rsp), %rdi
cmpq %rbx, %rdi
je 0xd287
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x210(%rsp), %rdi
callq 0x96b6
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd2af
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0xa48(%rsp), %rdi
callq 0x36d9a
movq %rbp, %rax
addq $0xe08, %rsp            # imm = 0xE08
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
movq %rax, (%rdi)
leaq 0x2cdf0(%rip), %rsi     # 0x3a0db
leaq 0x2cdf9(%rip), %rdx     # 0x3a0eb
callq 0x80f4
leaq 0xa48(%rsp), %rdi
leaq 0x80(%rsp), %rsi
movq %r12, %rdx
callq 0x37020
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xc968
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xc968
movq %rax, 0x8(%rsp)
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xda89
movq 0x90(%rsp), %rsi
jmp 0xd743
jmp 0xda84
movq %rax, 0x8(%rsp)
leaq 0xae8(%rsp), %rdi
callq 0x36d9a
jmp 0xd3d4
movq %rax, 0x8(%rsp)
jmp 0xd3f1
jmp 0xd632
jmp 0xd442
jmp 0xd442
jmp 0xd466
jmp 0xd5b5
movq %rax, 0x8(%rsp)
leaq 0xb88(%rsp), %rdi
callq 0x36d9a
jmp 0xd516
movq %rax, 0x8(%rsp)
leaq 0xc28(%rsp), %rdi
callq 0x36d9a
jmp 0xd539
movq %rax, 0x8(%rsp)
movq 0x110(%rsp), %rdi
cmpq %rbx, %rdi
je 0xd3f1
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xdb76
movq 0x440(%rsp), %rsi
jmp 0xdb6e
jmp 0xd632
jmp 0xd632
jmp 0xdae7
jmp 0xd466
jmp 0xd5b5
jmp 0xd442
jmp 0xd466
jmp 0xd5b5
jmp 0xd5b5
jmp 0xd466
jmp 0xd5b5
movq %rax, 0x8(%rsp)
movq 0xb8(%rsp), %rdi
cmpq %r13, %rdi
je 0xd46b
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xd46b
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rdi
cmpq %r12, %rdi
je 0xd5ba
movq 0x28(%rsp), %rsi
jmp 0xd4f0
jmp 0xd5b5
jmp 0xd5b5
jmp 0xd5b5
jmp 0xd4ca
jmp 0xd5b5
jmp 0xd5b5
jmp 0xd4ca
jmp 0xd5b5
movq %rax, 0x8(%rsp)
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd4cf
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xd4cf
movq %rax, 0x8(%rsp)
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xd5ba
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xd5ba
jmp 0xd5b5
movq %rax, 0x8(%rsp)
jmp 0xd5db
jmp 0xd632
movq %rax, 0x8(%rsp)
movq 0x130(%rsp), %rdi
cmpq %rbx, %rdi
je 0xdb76
movq 0x140(%rsp), %rsi
jmp 0xdb6e
movq %rax, 0x8(%rsp)
movq 0x150(%rsp), %rdi
cmpq %rbx, %rdi
je 0xdb76
movq 0x160(%rsp), %rsi
jmp 0xdb6e
jmp 0xdb8c
movq %rax, 0x8(%rsp)
movq 0x170(%rsp), %rdi
cmpq %r14, %rdi
je 0xdb2c
movq 0x180(%rsp), %rsi
jmp 0xdb24
jmp 0xdae7
movq %rax, 0x8(%rsp)
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xdb51
movq 0x440(%rsp), %rsi
jmp 0xdb49
jmp 0xd628
jmp 0xd632
jmp 0xd5b5
movq %rax, 0x8(%rsp)
movq 0x409df(%rip), %rsi     # 0x4dfa0
leaq 0x228(%rsp), %rdi
callq 0x72b0
leaq 0x298(%rsp), %rdi
callq 0x71c0
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0xdb76
movq 0x70(%rsp), %rsi
jmp 0xdb6e
jmp 0xd632
movq %rdx, %rbx
movq %rax, 0x8(%rsp)
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0xd75d
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xd75d
jmp 0xd755
movq %rax, 0x8(%rsp)
jmp 0xdb51
movq %rax, 0x8(%rsp)
jmp 0xdb76
jmp 0xdbf9
movq %rax, 0x8(%rsp)
leaq 0xcc8(%rsp), %rdi
callq 0x36d9a
jmp 0xd67d
jmp 0xd965
jmp 0xd965
jmp 0xd755
jmp 0xd755
jmp 0xd66b
movq %rdx, %rbx
movq %rax, 0x8(%rsp)
jmp 0xd77a
movq %rax, 0x8(%rsp)
movq 0x1b0(%rsp), %rdi
cmpq %rbx, %rdi
je 0xdc30
movq 0x1c0(%rsp), %rsi
jmp 0xd958
movq %rdx, %rbx
movq %rax, 0x8(%rsp)
jmp 0xd7be
jmp 0xd6aa
movq %rax, 0x8(%rsp)
movq 0x838(%rsp), %rdi
cmpq %r14, %rdi
je 0xdc30
movq 0x848(%rsp), %rsi
jmp 0xd958
jmp 0xd965
jmp 0xdbf9
movq %rax, 0x8(%rsp)
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xd70f
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xd70f
movq %rax, 0x8(%rsp)
jmp 0xd72b
movq %rax, 0x8(%rsp)
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xd72b
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0xda89
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xda89
jmp 0xda84
movq %rdx, %rbx
movq %rax, 0x8(%rsp)
movq 0x838(%rsp), %rdi
cmpq %r14, %rdi
je 0xd77a
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xd7be
movq 0x440(%rsp), %rsi
jmp 0xd7b6
movq %rdx, %rbx
movq %rax, 0x8(%rsp)
movq 0x838(%rsp), %rdi
cmpq %r14, %rdi
je 0xd7be
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
cmpl $0x1, %ebx
jne 0xdc30
movq 0x8(%rsp), %rdi
callq 0x7210
movq 0x10(%rsp), %rdi
callq 0x2b176
testb %al, %al
je 0xd7f6
leaq 0x40(%rsp), %r8
movq %rbp, %rdi
movq 0x38(%rsp), %rdx
callq 0xa928
jmp 0xd8c3
movb $0x1, %bl
movq 0x38(%rsp), %rax
cmpb $0x0, 0x118(%rax)
jne 0xd8c5
leaq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
movq %rax, (%rdi)
leaq 0x2c90d(%rip), %rsi     # 0x3a131
leaq 0x2c90e(%rip), %rdx     # 0x3a139
callq 0x80f4
leaq 0x2d25d(%rip), %rdx     # 0x3aa94
leaq 0x838(%rsp), %rdi
movq %r15, %rsi
callq 0xe353
leaq 0xa48(%rsp), %rdi
leaq 0x430(%rsp), %rsi
leaq 0x838(%rsp), %rdx
callq 0x37020
movq 0x838(%rsp), %rdi
cmpq %r14, %rdi
je 0xd881
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xd8a6
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0xa48(%rsp), %rdi
movl $0x12d, %esi            # imm = 0x12D
callq 0x37aee
movq %rbp, %rdi
movq %rax, %rsi
callq 0x36e1a
xorl %ebx, %ebx
callq 0x7780
testb %bl, %bl
jne 0xc091
jmp 0xd294
movq %rax, 0x8(%rsp)
movq 0x838(%rsp), %rdi
cmpq %r14, %rdi
je 0xd900
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xd900
movq %rax, 0x8(%rsp)
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xd930
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xd930
jmp 0xd92b
jmp 0xd965
movq %rax, 0x8(%rsp)
callq 0x7780
jmp 0xdc30
movq %rax, 0x8(%rsp)
movq 0x1d0(%rsp), %rdi
cmpq %r14, %rdi
je 0xdc30
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xdc30
movq %rax, 0x8(%rsp)
jmp 0xdc30
movq %rax, 0x8(%rsp)
cmpl $0x1, %edx
jne 0xdc30
movq 0x8(%rsp), %rdi
callq 0x7210
leaq 0x200(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x2cd62(%rip), %rsi     # 0x3a6fc
leaq 0x2cd6b(%rip), %rdx     # 0x3a70c
leaq 0x1f0(%rsp), %rdi
callq 0x80f4
leaq 0xa48(%rsp), %rdi
movl $0x190, %esi            # imm = 0x190
callq 0x37aee
leaq 0xd68(%rsp), %rdi
movq %rax, %rsi
callq 0x36e1a
leaq 0x1f0(%rsp), %rsi
leaq 0xd68(%rsp), %rdx
movq %rbp, %rdi
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0xe204
leaq 0xd68(%rsp), %rdi
callq 0x36d9a
movq 0x1f0(%rsp), %rdi
cmpq %rbx, %rdi
je 0xda1a
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x74b0
callq 0x7780
jmp 0xd294
jmp 0xd965
movq %rax, 0x8(%rsp)
leaq 0xd68(%rsp), %rdi
callq 0x36d9a
jmp 0xda49
movq %rax, 0x8(%rsp)
jmp 0xda66
movq %rax, 0x8(%rsp)
movq 0x1f0(%rsp), %rdi
cmpq %rbx, %rdi
je 0xda66
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x74b0
callq 0x7780
jmp 0xdc30
movq %rax, %rdi
callq 0x96aa
jmp 0xda7a
movq %rax, 0x8(%rsp)
jmp 0xdc4b
movq %rax, 0x8(%rsp)
leaq 0x430(%rsp), %rdi
callq 0x96fc
jmp 0xdb2c
jmp 0xdb85
movq %rax, 0x8(%rsp)
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0xdb91
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xdb91
jmp 0xdb8c
jmp 0xdb8c
jmp 0xdb85
jmp 0xdb85
movq %rax, 0x8(%rsp)
jmp 0xdb2c
movq %rax, 0x8(%rsp)
jmp 0xdb07
movq %rax, 0x8(%rsp)
leaq 0x430(%rsp), %rdi
callq 0x8270
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xdb2c
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x3a0(%rsp), %rdi
leaq 0x3b0(%rsp), %rax
cmpq %rax, %rdi
je 0xdb51
movq 0x3b0(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0xdb76
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x838(%rsp), %rdi
callq 0x7110
jmp 0xdbfe
movq %rax, 0x8(%rsp)
jmp 0xdbb6
movq %rax, 0x8(%rsp)
movq 0x838(%rsp), %rdi
leaq 0x848(%rsp), %rax
cmpq %rax, %rdi
je 0xdbb6
movq 0x848(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0xdbfe
movq 0x440(%rsp), %rsi
jmp 0xdbef
movq %rax, 0x8(%rsp)
movq 0x190(%rsp), %rdi
cmpq %r15, %rdi
je 0xdbfe
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0xdbfe
movq %rax, 0x8(%rsp)
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0xdc23
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x210(%rsp), %rdi
callq 0x96b6
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdc4b
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0xa48(%rsp), %rdi
callq 0x36d9a
movq 0x8(%rsp), %rdi
callq 0x7810