// File: 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
movq %rsp, %rbp
subq $0x1710, %rsp           # imm = 0x1710
movq %rdi, -0x14a8(%rbp)
movq %rdi, %rax
movq %rax, -0x14a0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1498(%rbp)
movq -0x18(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdx
addq $0x88, %rdx
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x1490(%rbp)
movl $0xc8, %esi
callq 0x636c0
movq -0x1490(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x140, %rsi            # imm = 0x140
callq 0x64600
jmp 0x10f53
movl $0x0, -0xe0(%rbp)
movq -0x20(%rbp), %rsi
movq -0x30(%rbp), %rdx
addq $0x88, %rdx
leaq -0x100(%rbp), %rdi
leaq -0xe0(%rbp), %rcx
callq 0x4cd00
jmp 0x10f81
movl -0xe0(%rbp), %ecx
leaq -0x120(%rbp), %rdi
leaq -0x100(%rbp), %rsi
movl $0x1, %edx
callq 0x32290
jmp 0x10fa1
leaq -0x100(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x97e0
leaq -0x120(%rbp), %rdi
callq 0x9c98
jmp 0x11151
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1352a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
movl -0xdc(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1351e
movq -0xd8(%rbp), %rdi
callq 0x92a0
movq %rax, -0x128(%rbp)
leaq -0x149(%rbp), %rdi
movq %rdi, -0x14b0(%rbp)
callq 0x9b10
movq -0x14b0(%rbp), %rdx
leaq 0x5968b(%rip), %rsi     # 0x6a6c0
leaq -0x148(%rbp), %rdi
callq 0xa780
jmp 0x11043
leaq -0xd0(%rbp), %rdi
movl $0x190, %esi            # imm = 0x190
callq 0x64560
movq %rax, -0x14b8(%rbp)
jmp 0x1105d
movq -0x14b8(%rbp), %rsi
leaq -0x1f0(%rbp), %rdi
callq 0x63570
jmp 0x11072
movq -0x14a8(%rbp), %rdi
leaq -0x148(%rbp), %rsi
leaq -0x1f0(%rbp), %rdx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x13ef0
jmp 0x11096
leaq -0x1f0(%rbp), %rdi
callq 0x634e0
leaq -0x148(%rbp), %rdi
callq 0x9c98
leaq -0x149(%rbp), %rdi
callq 0x9700
movl $0x1, -0x1f4(%rbp)
callq 0x9a40
jmp 0x11130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1111d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x11111
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x634e0
leaq -0x148(%rbp), %rdi
callq 0x9c98
leaq -0x149(%rbp), %rdi
callq 0x9700
callq 0x9a40
jmp 0x1114c
jmp 0x134f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1351e
jmp 0x1351e
xorl %eax, %eax
movl %eax, %esi
leaq -0x100(%rbp), %rdi
callq 0x9c70
movq %rax, -0x14c0(%rbp)
jmp 0x1116a
movq -0x14c0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2f, %eax
je 0x11209
leaq 0x7e59c(%rip), %rsi     # 0x8f720
addq $0x48, %rsi
leaq 0x598c9(%rip), %rdx     # 0x6aa58
leaq -0x238(%rbp), %rdi
callq 0x14190
jmp 0x1119d
leaq -0x218(%rbp), %rdi
leaq -0x238(%rbp), %rsi
leaq -0x100(%rbp), %rdx
callq 0x14140
jmp 0x111b9
leaq -0x100(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x97e0
leaq -0x218(%rbp), %rdi
callq 0x9c98
leaq -0x238(%rbp), %rdi
callq 0x9c98
jmp 0x11209
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x9c98
jmp 0x1351e
leaq -0x258(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x92c0
jmp 0x1121e
leaq -0x258(%rbp), %rdi
callq 0x31db0
movb %al, -0x14c1(%rbp)
jmp 0x11232
leaq -0x258(%rbp), %rdi
callq 0x9c98
movb -0x14c1(%rbp), %al
testb $0x1, %al
jne 0x1124d
jmp 0x1181f
movq -0x20(%rbp), %rax
movq %rax, -0x14d8(%rbp)
leaq -0x299(%rbp), %rdi
movq %rdi, -0x14d0(%rbp)
callq 0x9b10
movq -0x14d0(%rbp), %rdx
leaq 0x5bea2(%rip), %rsi     # 0x6d11b
leaq -0x298(%rbp), %rdi
callq 0xa780
jmp 0x11287
movq -0x14d8(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x4c710
movq %rax, -0x14e0(%rbp)
jmp 0x112a3
movq -0x14e0(%rbp), %rdi
callq 0x14310
movq %rax, %rdx
leaq 0x5979f(%rip), %rsi     # 0x6aa58
leaq -0x278(%rbp), %rdi
callq 0x14000
jmp 0x112c7
leaq -0x298(%rbp), %rdi
callq 0x9c98
leaq -0x299(%rbp), %rdi
callq 0x9700
leaq -0x100(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x9830
jmp 0x112f4
leaq -0x278(%rbp), %rdi
movq %rdi, -0x14f0(%rbp)
movl $0x2e, %esi
movq $-0x1, %rdx
movq %rdx, -0x14e8(%rbp)
callq 0x9c40
movq -0x14f0(%rbp), %rsi
movq -0x14e8(%rbp), %rcx
movq %rax, %rdx
leaq -0x2c0(%rbp), %rdi
callq 0x96b0
jmp 0x11339
movq -0x20(%rbp), %rdi
movb $0x0, -0x2f2(%rbp)
movb $0x0, -0x2f3(%rbp)
callq 0x4c630
movq %rax, -0x14f8(%rbp)
jmp 0x11359
movq -0x14f8(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x14370
movq %rax, -0x1500(%rbp)
jmp 0x11375
movq -0x1500(%rbp), %rax
movq %rax, -0x2c8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x4c630
movq %rax, -0x1508(%rbp)
jmp 0x11395
movq -0x1508(%rbp), %rdi
callq 0x143a0
movq %rax, -0x2d0(%rbp)
leaq -0x2c8(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x14340
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x1509(%rbp)
jne 0x1145e
movq -0x20(%rbp), %rax
movq %rax, -0x1520(%rbp)
leaq -0x2f1(%rbp), %rdi
movq %rdi, -0x1518(%rbp)
callq 0x9b10
movq -0x1518(%rbp), %rdx
movb $0x1, -0x2f2(%rbp)
leaq 0x592d0(%rip), %rsi     # 0x6a6d1
leaq -0x2f0(%rbp), %rdi
callq 0xa780
jmp 0x1140f
movq -0x1520(%rbp), %rdi
movb $0x1, -0x2f3(%rbp)
leaq -0x2f0(%rbp), %rsi
callq 0x4c710
movq %rax, -0x1528(%rbp)
jmp 0x11432
movq -0x1528(%rbp), %rdi
callq 0x14310
movq %rax, %rsi
leaq -0x100(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
callq 0x9c80
cmpq $0x0, %rax
sete %al
movb %al, -0x1509(%rbp)
movb -0x1509(%rbp), %al
movb %al, -0x1529(%rbp)
testb $0x1, -0x2f3(%rbp)
jne 0x11475
jmp 0x11481
leaq -0x2f0(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x2f2(%rbp)
jne 0x1148c
jmp 0x11498
leaq -0x2f1(%rbp), %rdi
callq 0x9700
movb -0x1529(%rbp), %al
testb $0x1, %al
jne 0x114a7
jmp 0x115d4
movq -0x1498(%rbp), %rsi
movq -0x14a8(%rbp), %rdi
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %r8
movq -0x28(%rbp), %r9
movq -0x18(%rbp), %rdx
movq %rsp, %rax
movq %rdx, (%rax)
leaq -0x100(%rbp), %rdx
callq 0x13550
jmp 0x114d9
movl $0x1, -0x1f4(%rbp)
jmp 0x115de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x9c98
jmp 0x1351e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1153d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x9c98
leaq -0x299(%rbp), %rdi
callq 0x9700
jmp 0x11623
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x11617
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1160b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x115bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
testb $0x1, -0x2f3(%rbp)
jne 0x115ad
jmp 0x115b9
leaq -0x2f0(%rbp), %rdi
callq 0x9c98
jmp 0x115bb
testb $0x1, -0x2f2(%rbp)
jne 0x115c6
jmp 0x115d2
leaq -0x2f1(%rbp), %rdi
callq 0x9700
jmp 0x1160b
movl $0x0, -0x1f4(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x9c98
leaq -0x278(%rbp), %rdi
callq 0x9c98
movl -0x1f4(%rbp), %eax
testl %eax, %eax
jne 0x134f6
jmp 0x11606
jmp 0x1180e
leaq -0x2c0(%rbp), %rdi
callq 0x9c98
leaq -0x278(%rbp), %rdi
callq 0x9c98
movl -0xdc(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1351e
movq -0xd8(%rbp), %rdi
callq 0x92a0
movq %rax, -0x300(%rbp)
movq -0x20(%rbp), %rdi
callq 0x4c6f0
movb %al, -0x152a(%rbp)
jmp 0x1165a
movb -0x152a(%rbp), %al
testb $0x1, %al
jne 0x11666
jmp 0x116b0
movq -0x1498(%rbp), %rsi
movq -0x14a8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
leaq -0x100(%rbp), %r8
callq 0xfec0
jmp 0x1168a
movl $0x1, -0x1f4(%rbp)
jmp 0x117f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x11813
movq -0x30(%rbp), %rax
testb $0x1, 0xe8(%rax)
jne 0x117eb
leaq -0x321(%rbp), %rdi
movq %rdi, -0x1538(%rbp)
callq 0x9b10
movq -0x1538(%rbp), %rdx
leaq 0x58a4f(%rip), %rsi     # 0x6a131
leaq -0x320(%rbp), %rdi
callq 0xa780
jmp 0x116f0
movq -0x30(%rbp), %rsi
addq $0x88, %rsi
leaq 0x59356(%rip), %rdx     # 0x6aa58
leaq -0x348(%rbp), %rdi
callq 0x14190
jmp 0x11710
leaq -0xd0(%rbp), %rdi
leaq -0x320(%rbp), %rsi
leaq -0x348(%rbp), %rdx
callq 0x63770
jmp 0x1172c
leaq -0x348(%rbp), %rdi
callq 0x9c98
leaq -0x320(%rbp), %rdi
callq 0x9c98
leaq -0x321(%rbp), %rdi
callq 0x9700
leaq -0xd0(%rbp), %rdi
movl $0x12d, %esi            # imm = 0x12D
callq 0x64560
movq %rax, -0x1540(%rbp)
jmp 0x1176a
movq -0x1540(%rbp), %rsi
movq -0x14a8(%rbp), %rdi
callq 0x63570
jmp 0x1177f
movl $0x1, -0x1f4(%rbp)
jmp 0x117f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x117dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x117d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x9c98
leaq -0x320(%rbp), %rdi
callq 0x9c98
leaq -0x321(%rbp), %rdi
callq 0x9700
jmp 0x11813
movl $0x0, -0x1f4(%rbp)
callq 0x9a40
jmp 0x117fc
movl -0x1f4(%rbp), %eax
testl %eax, %eax
jne 0x134f6
jmp 0x1180c
jmp 0x1180e
jmp 0x1194a
callq 0x9a40
jmp 0x1181a
jmp 0x1351e
movq -0x30(%rbp), %rax
testb $0x1, 0xe8(%rax)
je 0x11948
leaq -0x369(%rbp), %rdi
movq %rdi, -0x1548(%rbp)
callq 0x9b10
movq -0x1548(%rbp), %rdx
leaq 0x58e88(%rip), %rsi     # 0x6a6d9
leaq -0x368(%rbp), %rdi
callq 0xa780
jmp 0x1185f
leaq -0xd0(%rbp), %rdi
movl $0x194, %esi            # imm = 0x194
callq 0x64560
movq %rax, -0x1550(%rbp)
jmp 0x11879
movq -0x1550(%rbp), %rsi
leaq -0x410(%rbp), %rdi
callq 0x63570
jmp 0x1188e
movq -0x14a8(%rbp), %rdi
leaq -0x368(%rbp), %rsi
leaq -0x410(%rbp), %rdx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x13ef0
jmp 0x118b2
leaq -0x410(%rbp), %rdi
callq 0x634e0
leaq -0x368(%rbp), %rdi
callq 0x9c98
leaq -0x369(%rbp), %rdi
callq 0x9700
movl $0x1, -0x1f4(%rbp)
jmp 0x134f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x11937
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1192b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x410(%rbp), %rdi
callq 0x634e0
leaq -0x368(%rbp), %rdi
callq 0x9c98
leaq -0x369(%rbp), %rdi
callq 0x9700
jmp 0x1351e
jmp 0x1194a
movb $0x2f, -0x429(%rbp)
leaq -0x428(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x429(%rbp), %rdx
callq 0x2fa40
jmp 0x1196d
leaq -0x450(%rbp), %rdi
movq %rdi, -0x1558(%rbp)
callq 0x98c0
leaq -0x100(%rbp), %rdi
callq 0x9480
movq -0x1558(%rbp), %rdi
movq %rax, %rsi
callq 0x99b0
jmp 0x1199d
xorl %eax, %eax
movl %eax, %esi
leaq -0x100(%rbp), %rdi
callq 0x9c70
movq %rax, -0x1560(%rbp)
jmp 0x119b6
movq -0x1560(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2f, %eax
jne 0x119f1
leaq -0x450(%rbp), %rdi
movl $0x2f, %esi
callq 0x95a0
jmp 0x119d8
jmp 0x119f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x134dc
leaq -0x428(%rbp), %rdi
callq 0xcc30
movq %rax, -0x458(%rbp)
leaq -0x428(%rbp), %rdi
callq 0xccb0
movq %rax, -0x460(%rbp)
leaq -0x458(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x14110
testb $0x1, %al
jne 0x11a33
jmp 0x11eac
leaq -0x458(%rbp), %rdi
callq 0xd8f0
movq %rax, %rsi
leaq -0x450(%rbp), %rdi
callq 0x9830
jmp 0x11a50
leaq -0x480(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0x92c0
jmp 0x11a65
leaq -0x480(%rbp), %rdi
callq 0x31ff0
movb %al, -0x1561(%rbp)
jmp 0x11a79
movb -0x1561(%rbp), %al
xorb $-0x1, %al
movb %al, -0x1562(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x9c98
movb -0x1562(%rbp), %al
testb $0x1, %al
jne 0x11a9f
jmp 0x11ac7
jmp 0x11e6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x9c98
jmp 0x134dc
leaq -0x4a0(%rbp), %rdi
callq 0x98c0
movb $0x2f, -0x4a1(%rbp)
leaq -0x450(%rbp), %rdi
leaq -0x4a1(%rbp), %rsi
callq 0x143d0
movb %al, -0x1563(%rbp)
jmp 0x11af5
movb -0x1563(%rbp), %al
testb $0x1, %al
jne 0x11b01
jmp 0x11b7e
leaq -0x450(%rbp), %rdi
movq %rdi, -0x1578(%rbp)
movl $0x2f, %esi
movq $-0x1, %rdx
movq %rdx, -0x1570(%rbp)
callq 0x9c40
movq -0x1578(%rbp), %rsi
movq -0x1570(%rbp), %rcx
movq %rax, %rdx
leaq -0x4c8(%rbp), %rdi
callq 0x96b0
jmp 0x11b46
leaq -0x4a0(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0x97e0
leaq -0x4c8(%rbp), %rdi
callq 0x9c98
jmp 0x11b95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x11e9b
leaq -0x4a0(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0x9070
jmp 0x11b93
jmp 0x11b95
leaq -0x4a0(%rbp), %rdi
movl $0x2e, %esi
movq $-0x1, %rdx
callq 0x9c40
cmpq $-0x1, %rax
je 0x11e46
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0x1588(%rbp)
movl $0x2e, %esi
movq $-0x1, %rdx
movq %rdx, -0x1580(%rbp)
callq 0x9c40
movq -0x1588(%rbp), %rsi
movq -0x1580(%rbp), %rcx
movq %rax, %rdx
leaq -0x4e8(%rbp), %rdi
callq 0x96b0
jmp 0x11bfc
movq -0x20(%rbp), %rdi
movb $0x0, -0x51a(%rbp)
movb $0x0, -0x51b(%rbp)
callq 0x4c630
movq %rax, -0x1590(%rbp)
jmp 0x11c1c
movq -0x1590(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0x14370
movq %rax, -0x1598(%rbp)
jmp 0x11c38
movq -0x1598(%rbp), %rax
movq %rax, -0x4f0(%rbp)
movq -0x20(%rbp), %rdi
callq 0x4c630
movq %rax, -0x15a0(%rbp)
jmp 0x11c58
movq -0x15a0(%rbp), %rdi
callq 0x143a0
movq %rax, -0x4f8(%rbp)
leaq -0x4f0(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
callq 0x14340
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x15a1(%rbp)
jne 0x11d21
movq -0x20(%rbp), %rax
movq %rax, -0x15b8(%rbp)
leaq -0x519(%rbp), %rdi
movq %rdi, -0x15b0(%rbp)
callq 0x9b10
movq -0x15b0(%rbp), %rdx
movb $0x1, -0x51a(%rbp)
leaq 0x58a0d(%rip), %rsi     # 0x6a6d1
leaq -0x518(%rbp), %rdi
callq 0xa780
jmp 0x11cd2
movq -0x15b8(%rbp), %rdi
movb $0x1, -0x51b(%rbp)
leaq -0x518(%rbp), %rsi
callq 0x4c710
movq %rax, -0x15c0(%rbp)
jmp 0x11cf5
movq -0x15c0(%rbp), %rdi
callq 0x14310
movq %rax, %rsi
leaq -0x100(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
callq 0x9c80
cmpq $0x0, %rax
sete %al
movb %al, -0x15a1(%rbp)
movb -0x15a1(%rbp), %al
movb %al, -0x15c1(%rbp)
testb $0x1, -0x51b(%rbp)
jne 0x11d38
jmp 0x11d44
leaq -0x518(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x51a(%rbp)
jne 0x11d4f
jmp 0x11d5b
leaq -0x519(%rbp), %rdi
callq 0x9700
movb -0x15c1(%rbp), %al
testb $0x1, %al
jne 0x11d6a
jmp 0x11e14
movq -0x1498(%rbp), %rsi
movq -0x14a8(%rbp), %rdi
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %r8
movq -0x28(%rbp), %r9
movq -0x18(%rbp), %rdx
movq %rsp, %rax
movq %rdx, (%rax)
leaq -0x100(%rbp), %rdx
callq 0x13550
jmp 0x11d9c
movl $0x1, -0x1f4(%rbp)
jmp 0x11e1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x11e38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x11dfb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
testb $0x1, -0x51b(%rbp)
jne 0x11ded
jmp 0x11df9
leaq -0x518(%rbp), %rdi
callq 0x9c98
jmp 0x11dfb
testb $0x1, -0x51a(%rbp)
jne 0x11e06
jmp 0x11e12
leaq -0x519(%rbp), %rdi
callq 0x9700
jmp 0x11e38
movl $0x0, -0x1f4(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0x9c98
movl -0x1f4(%rbp), %eax
testl %eax, %eax
jne 0x11e50
jmp 0x11e36
jmp 0x11e46
leaq -0x4e8(%rbp), %rdi
callq 0x9c98
jmp 0x11e9b
movl $0x0, -0x1f4(%rbp)
leaq -0x4a0(%rbp), %rdi
callq 0x9c98
movl -0x1f4(%rbp), %eax
testl %eax, %eax
jne 0x134c2
jmp 0x11e6c
jmp 0x11e6e
leaq -0x458(%rbp), %rdi
xorl %esi, %esi
callq 0x142e0
movq %rax, -0x528(%rbp)
leaq -0x450(%rbp), %rdi
movl $0x2f, %esi
callq 0x95a0
jmp 0x11e96
jmp 0x11a04
leaq -0x4a0(%rbp), %rdi
callq 0x9c98
jmp 0x134dc
leaq -0x738(%rbp), %rdi
callq 0x97a0
jmp 0x11eba
movq -0x18(%rbp), %rax
movq %rax, -0x15d8(%rbp)
leaq -0x779(%rbp), %rdi
movq %rdi, -0x15d0(%rbp)
callq 0x9b10
movq -0x15d0(%rbp), %rdx
leaq 0x58196(%rip), %rsi     # 0x6a07c
leaq -0x778(%rbp), %rdi
callq 0xa780
jmp 0x11ef4
movq -0x15d8(%rbp), %rsi
leaq -0x758(%rbp), %rdi
leaq -0x778(%rbp), %rdx
callq 0x60df0
jmp 0x11f10
leaq -0x758(%rbp), %rdi
callq 0x9a50
xorb $-0x1, %al
movb %al, -0x15d9(%rbp)
leaq -0x758(%rbp), %rdi
callq 0x9c98
leaq -0x778(%rbp), %rdi
callq 0x9c98
leaq -0x779(%rbp), %rdi
callq 0x9700
movb -0x15d9(%rbp), %al
testb $0x1, %al
jne 0x11f57
jmp 0x126a9
leaq -0x100(%rbp), %rdi
movl $0x2f, %esi
movq $-0x1, %rdx
callq 0x9c40
cmpq $-0x1, %rax
jne 0x11f80
xorl %eax, %eax
movq %rax, -0x15e8(%rbp)
jmp 0x11f9f
leaq -0x100(%rbp), %rdi
movl $0x2f, %esi
movq $-0x1, %rdx
callq 0x9c40
movq %rax, -0x15e8(%rbp)
movq -0x15e8(%rbp), %rdx
leaq -0x7a0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
movq $-0x1, %rcx
callq 0x96b0
jmp 0x11fc2
leaq -0x100(%rbp), %rdi
callq 0x9480
movq %rax, -0x15f0(%rbp)
leaq -0x7a0(%rbp), %rdi
callq 0x9480
movq %rax, %rcx
movq -0x15f0(%rbp), %rax
movb $0x0, -0x7e2(%rbp)
cmpq %rcx, %rax
jne 0x1202f
leaq -0x7e1(%rbp), %rdi
movq %rdi, -0x15f8(%rbp)
callq 0x9b10
movq -0x15f8(%rbp), %rdx
movb $0x1, -0x7e2(%rbp)
leaq 0x58d51(%rip), %rsi     # 0x6ad70
leaq -0x7e0(%rbp), %rdi
callq 0xa780
jmp 0x1202d
jmp 0x1206e
leaq -0x100(%rbp), %rdi
movq %rdi, -0x1600(%rbp)
leaq -0x7a0(%rbp), %rsi
movq $-0x1, %rdx
callq 0x94f0
movq -0x1600(%rbp), %rsi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x7e0(%rbp), %rdi
callq 0x96b0
jmp 0x1206c
jmp 0x1206e
leaq 0x58673(%rip), %rdx     # 0x6a6e8
leaq -0x7c0(%rbp), %rdi
leaq -0x7e0(%rbp), %rsi
callq 0x13970
jmp 0x1208a
leaq -0x7e0(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x7e2(%rbp)
jne 0x120a1
jmp 0x120ad
leaq -0x7e1(%rbp), %rdi
callq 0x9700
leaq -0x808(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x92c0
jmp 0x120c2
leaq -0x808(%rbp), %rdi
callq 0x31db0
movb %al, -0x1601(%rbp)
jmp 0x120d6
leaq -0x808(%rbp), %rdi
callq 0x9c98
movb -0x1601(%rbp), %al
testb $0x1, %al
jne 0x120f1
jmp 0x12672
movq -0x18(%rbp), %rdi
addq $0x140, %rdi            # imm = 0x140
callq 0x14440
movq %rax, -0x818(%rbp)
movq -0x18(%rbp), %rdi
addq $0x140, %rdi            # imm = 0x140
callq 0x144b0
movq %rax, -0x820(%rbp)
leaq -0x818(%rbp), %rdi
leaq -0x820(%rbp), %rsi
callq 0x14470
testb $0x1, %al
jne 0x1213b
jmp 0x12327
leaq -0x818(%rbp), %rdi
callq 0x14570
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x840(%rbp), %rdi
callq *%rax
jmp 0x1215c
leaq -0x888(%rbp), %rdi
callq 0xac90
jmp 0x1216a
leaq -0x860(%rbp), %rdi
leaq -0x888(%rbp), %rsi
callq 0xad80
jmp 0x1217f
leaq -0x840(%rbp), %rdi
leaq -0x860(%rbp), %rsi
callq 0x144e0
movb %al, -0x1602(%rbp)
leaq -0x860(%rbp), %rdi
callq 0x9c98
leaq -0x888(%rbp), %rdi
callq 0xad10
leaq -0x840(%rbp), %rdi
callq 0x9c98
movb -0x1602(%rbp), %al
testb $0x1, %al
jne 0x121cb
jmp 0x1230b
leaq -0x818(%rbp), %rdi
callq 0x14570
movq (%rax), %rax
movq %rax, -0x810(%rbp)
jmp 0x1230b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x12218
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x778(%rbp), %rdi
callq 0x9c98
leaq -0x779(%rbp), %rdi
callq 0x9700
jmp 0x134b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x134b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x12272
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x7e0(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x7e2(%rbp)
jne 0x1227d
jmp 0x12289
leaq -0x7e1(%rbp), %rdi
callq 0x9700
jmp 0x12698
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1268c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x808(%rbp), %rdi
callq 0x9c98
jmp 0x1268c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x122fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x888(%rbp), %rdi
callq 0xad10
leaq -0x840(%rbp), %rdi
callq 0x9c98
jmp 0x1268c
jmp 0x1230d
leaq -0x818(%rbp), %rdi
xorl %esi, %esi
callq 0x14590
movq %rax, -0x890(%rbp)
jmp 0x12108
movq -0x810(%rbp), %rsi
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x8c0(%rbp), %rdi
callq *%rax
jmp 0x12340
leaq -0x8c0(%rbp), %rdi
callq 0x145d0
movq %rax, -0x8d0(%rbp)
leaq -0x8c8(%rbp), %rdi
leaq -0x8d0(%rbp), %rsi
callq 0x14600
leaq -0x8c0(%rbp), %rdi
callq 0x14650
movq %rax, -0x8e0(%rbp)
leaq -0x8d8(%rbp), %rdi
leaq -0x8e0(%rbp), %rsi
callq 0x14600
leaq -0x8c8(%rbp), %rdi
leaq -0x8d8(%rbp), %rsi
callq 0x14620
testb $0x1, %al
jne 0x123a8
jmp 0x12656
leaq 0x7d371(%rip), %rax     # 0x8f720
movq 0x10(%rax), %rax
movq %rax, -0x1618(%rbp)
leaq -0x8c8(%rbp), %rdi
callq 0x14680
movq -0x1618(%rbp), %rdi
movq %rax, %rsi
addq $0x8, %rsi
callq 0x261d0
movq %rax, -0x1610(%rbp)
jmp 0x123e2
movq -0x1610(%rbp), %rax
cmpq $0x0, %rax
jne 0x1240b
jmp 0x1263c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x12664
leaq -0x8c8(%rbp), %rdi
callq 0x14680
movq %rax, %rdx
addq $0x8, %rdx
leaq -0x940(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x146b0
jmp 0x12433
leaq 0x5861e(%rip), %rdx     # 0x6aa58
leaq -0x920(%rbp), %rdi
leaq -0x940(%rbp), %rsi
callq 0x13970
jmp 0x1244f
leaq -0x900(%rbp), %rdi
leaq -0x920(%rbp), %rsi
leaq -0x7a0(%rbp), %rdx
callq 0x14140
jmp 0x1246b
leaq -0x900(%rbp), %rdi
callq 0x92b0
movq %rax, -0x1628(%rbp)
movl $0x8, %edi
movl $0x10, %esi
callq 0x14730
movl %eax, -0x161c(%rbp)
jmp 0x12495
movl -0x161c(%rbp), %edx
movq -0x1628(%rbp), %rsi
leaq -0x738(%rbp), %rdi
callq 0x9610
jmp 0x124b0
leaq -0x900(%rbp), %rdi
callq 0x9c98
leaq -0x920(%rbp), %rdi
callq 0x9c98
leaq -0x940(%rbp), %rdi
callq 0x9c98
movq -0x738(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x738(%rbp,%rax), %rdi
callq 0x9a80
movb %al, -0x1629(%rbp)
jmp 0x124f4
movb -0x1629(%rbp), %al
testb $0x1, %al
jne 0x12503
jmp 0x1263a
leaq -0x738(%rbp), %rdi
callq 0x9ac0
movb %al, -0x162a(%rbp)
jmp 0x12517
movb -0x162a(%rbp), %al
testb $0x1, %al
jne 0x12526
jmp 0x1263a
leaq -0x961(%rbp), %rdi
movq %rdi, -0x1638(%rbp)
callq 0x9b10
movq -0x1638(%rbp), %rdx
leaq 0x57b94(%rip), %rsi     # 0x6a0db
leaq -0x960(%rbp), %rdi
callq 0xa780
jmp 0x12555
leaq -0x8c8(%rbp), %rdi
callq 0x14680
movq %rax, %rdx
addq $0x8, %rdx
leaq -0xd0(%rbp), %rdi
leaq -0x960(%rbp), %rsi
callq 0x63770
jmp 0x1257d
leaq -0x960(%rbp), %rdi
callq 0x9c98
leaq -0x961(%rbp), %rdi
callq 0x9700
jmp 0x12656
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x125ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x125e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x900(%rbp), %rdi
callq 0x9c98
leaq -0x920(%rbp), %rdi
callq 0x9c98
leaq -0x940(%rbp), %rdi
callq 0x9c98
jmp 0x12664
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1262c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x960(%rbp), %rdi
callq 0x9c98
leaq -0x961(%rbp), %rdi
callq 0x9700
jmp 0x12664
jmp 0x1263c
leaq -0x8c8(%rbp), %rdi
xorl %esi, %esi
callq 0x14750
movq %rax, -0x970(%rbp)
jmp 0x12366
leaq -0x8c0(%rbp), %rdi
callq 0xcf30
jmp 0x12672
leaq -0x8c0(%rbp), %rdi
callq 0xcf30
jmp 0x1268c
leaq -0x7c0(%rbp), %rdi
callq 0x9c98
leaq -0x7a0(%rbp), %rdi
callq 0x9c98
jmp 0x126a9
leaq -0x7c0(%rbp), %rdi
callq 0x9c98
leaq -0x7a0(%rbp), %rdi
callq 0x9c98
jmp 0x134b4
movq -0x738(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x738(%rbp,%rax), %rdi
callq 0x9a80
movb %al, -0x1639(%rbp)
jmp 0x126c9
movb -0x1639(%rbp), %al
testb $0x1, %al
jne 0x126d5
jmp 0x126f9
leaq -0x738(%rbp), %rdi
callq 0x9ac0
movb %al, -0x163a(%rbp)
jmp 0x126e9
movb -0x163a(%rbp), %al
testb $0x1, %al
jne 0x12b63
jmp 0x126f9
leaq -0x100(%rbp), %rdi
callq 0x92b0
movq %rax, -0x1648(%rbp)
movl $0x8, %edi
movl $0x10, %esi
callq 0x14730
movl %eax, -0x1640(%rbp)
jmp 0x12723
movl -0x1640(%rbp), %edx
movq -0x1648(%rbp), %rsi
leaq -0x738(%rbp), %rdi
callq 0x9610
jmp 0x1273e
movq -0x738(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x738(%rbp,%rax), %rdi
callq 0x9a80
movb %al, -0x1649(%rbp)
jmp 0x1275e
movb -0x1649(%rbp), %al
testb $0x1, %al
jne 0x1276a
jmp 0x1278e
leaq -0x738(%rbp), %rdi
callq 0x9ac0
movb %al, -0x164a(%rbp)
jmp 0x1277e
movb -0x164a(%rbp), %al
testb $0x1, %al
jne 0x12b61
jmp 0x1278e
callq 0x9080
cmpl $0x2, (%rax)
je 0x127a6
callq 0x9080
cmpl $0x14, (%rax)
jne 0x128be
leaq -0x991(%rbp), %rdi
movq %rdi, -0x1658(%rbp)
callq 0x9b10
movq -0x1658(%rbp), %rdx
leaq 0x57f12(%rip), %rsi     # 0x6a6d9
leaq -0x990(%rbp), %rdi
callq 0xa780
jmp 0x127d5
leaq -0xd0(%rbp), %rdi
movl $0x194, %esi            # imm = 0x194
callq 0x64560
movq %rax, -0x1660(%rbp)
jmp 0x127ef
movq -0x1660(%rbp), %rsi
leaq -0xa38(%rbp), %rdi
callq 0x63570
jmp 0x12804
movq -0x14a8(%rbp), %rdi
leaq -0x990(%rbp), %rsi
leaq -0xa38(%rbp), %rdx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x13ef0
jmp 0x12828
leaq -0xa38(%rbp), %rdi
callq 0x634e0
leaq -0x990(%rbp), %rdi
callq 0x9c98
leaq -0x991(%rbp), %rdi
callq 0x9700
movl $0x1, -0x1f4(%rbp)
jmp 0x134a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x128ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x128a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xa38(%rbp), %rdi
callq 0x634e0
leaq -0x990(%rbp), %rdi
callq 0x9c98
leaq -0x991(%rbp), %rdi
callq 0x9700
jmp 0x134b4
callq 0x9080
cmpl $0xd, (%rax)
je 0x128d6
callq 0x9080
cmpl $0x15, (%rax)
jne 0x129ee
leaq -0xa59(%rbp), %rdi
movq %rdi, -0x1668(%rbp)
callq 0x9b10
movq -0x1668(%rbp), %rdx
leaq 0x57a89(%rip), %rsi     # 0x6a380
leaq -0xa58(%rbp), %rdi
callq 0xa780
jmp 0x12905
leaq -0xd0(%rbp), %rdi
movl $0x193, %esi            # imm = 0x193
callq 0x64560
movq %rax, -0x1670(%rbp)
jmp 0x1291f
movq -0x1670(%rbp), %rsi
leaq -0xb00(%rbp), %rdi
callq 0x63570
jmp 0x12934
movq -0x14a8(%rbp), %rdi
leaq -0xa58(%rbp), %rsi
leaq -0xb00(%rbp), %rdx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x13ef0
jmp 0x12958
leaq -0xb00(%rbp), %rdi
callq 0x634e0
leaq -0xa58(%rbp), %rdi
callq 0x9c98
leaq -0xa59(%rbp), %rdi
callq 0x9700
movl $0x1, -0x1f4(%rbp)
jmp 0x134a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x129dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x129d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xb00(%rbp), %rdi
callq 0x634e0
leaq -0xa58(%rbp), %rdi
callq 0x9c98
leaq -0xa59(%rbp), %rdi
callq 0x9700
jmp 0x134b4
callq 0x9080
movl (%rax), %edi
callq 0x9230
movq %rax, -0x1680(%rbp)
leaq -0xb41(%rbp), %rdi
movq %rdi, -0x1678(%rbp)
callq 0x9b10
movq -0x1680(%rbp), %rsi
movq -0x1678(%rbp), %rdx
leaq -0xb40(%rbp), %rdi
callq 0xa780
jmp 0x12a30
leaq 0x57cba(%rip), %rsi     # 0x6a6f1
leaq -0xb20(%rbp), %rdi
leaq -0xb40(%rbp), %rdx
callq 0x14790
jmp 0x12a4c
leaq -0xd0(%rbp), %rdi
movl $0x1f4, %esi            # imm = 0x1F4
callq 0x64560
movq %rax, -0x1688(%rbp)
jmp 0x12a66
movq -0x1688(%rbp), %rsi
leaq -0xbe8(%rbp), %rdi
callq 0x63570
jmp 0x12a7b
movq -0x14a8(%rbp), %rdi
leaq -0xb20(%rbp), %rsi
leaq -0xbe8(%rbp), %rdx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x13ef0
jmp 0x12a9f
leaq -0xbe8(%rbp), %rdi
callq 0x634e0
leaq -0xb20(%rbp), %rdi
callq 0x9c98
leaq -0xb40(%rbp), %rdi
callq 0x9c98
leaq -0xb41(%rbp), %rdi
callq 0x9700
movl $0x1, -0x1f4(%rbp)
jmp 0x134a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x12b50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x12b44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x12b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xbe8(%rbp), %rdi
callq 0x634e0
leaq -0xb20(%rbp), %rdi
callq 0x9c98
leaq -0xb40(%rbp), %rdi
callq 0x9c98
leaq -0xb41(%rbp), %rdi
callq 0x9700
jmp 0x134b4
jmp 0x12b63
leaq -0xc18(%rbp), %rdi
leaq -0x738(%rbp), %rsi
callq 0x147e0
leaq -0xc28(%rbp), %rdi
callq 0x14840
leaq -0xc29(%rbp), %rdi
movq %rdi, -0x1690(%rbp)
callq 0x9b10
movq -0x1690(%rbp), %r9
movq -0xc18(%rbp), %rsi
movl -0xc10(%rbp), %edx
movq -0xc28(%rbp), %rcx
movl -0xc20(%rbp), %r8d
leaq -0xc08(%rbp), %rdi
callq 0x14870
jmp 0x12bc5
leaq -0xc29(%rbp), %rdi
callq 0x9700
leaq -0xda8(%rbp), %rdi
callq 0x9890
jmp 0x12bdf
leaq -0x100(%rbp), %rdi
callq 0x92b0
movq %rax, %rdi
leaq -0xe38(%rbp), %rsi
callq 0x9c10
movq -0xe08(%rbp), %rsi
leaq -0xda8(%rbp), %rdi
callq 0x9b70
jmp 0x12c0f
leaq -0xe59(%rbp), %rdi
movq %rdi, -0x1698(%rbp)
callq 0x9b10
movq -0x1698(%rbp), %rdx
leaq 0x574d4(%rip), %rsi     # 0x6a104
leaq -0xe58(%rbp), %rdi
callq 0xa780
jmp 0x12c3e
leaq -0xe80(%rbp), %rdi
leaq -0xda8(%rbp), %rsi
callq 0x96a0
jmp 0x12c53
leaq -0xd0(%rbp), %rdi
leaq -0xe58(%rbp), %rsi
leaq -0xe80(%rbp), %rdx
callq 0x63770
jmp 0x12c6f
leaq -0xe80(%rbp), %rdi
callq 0x9c98
leaq -0xe58(%rbp), %rdi
callq 0x9c98
leaq -0xe59(%rbp), %rdi
callq 0x9700
leaq -0xea1(%rbp), %rdi
movq %rdi, -0x16a0(%rbp)
callq 0x9b10
movq -0x16a0(%rbp), %rdx
leaq 0x580bc(%rip), %rsi     # 0x6ad70
leaq -0xea0(%rbp), %rdi
callq 0xa780
jmp 0x12cc2
leaq -0xda8(%rbp), %rdi
leaq -0xea0(%rbp), %rsi
callq 0x9300
jmp 0x12cd7
leaq -0xea0(%rbp), %rdi
callq 0x9c98
leaq -0xea1(%rbp), %rdi
callq 0x9700
movq -0xde0(%rbp), %rsi
leaq -0xda8(%rbp), %rdi
callq 0x9b70
jmp 0x12d04
leaq -0xf00(%rbp), %rdi
leaq -0xda8(%rbp), %rsi
callq 0x96a0
jmp 0x12d19
leaq -0xf00(%rbp), %rdi
callq 0x92b0
movq %rax, %rdi
leaq 0x5763a(%rip), %rsi     # 0x6a369
leaq -0xee0(%rbp), %rdx
callq 0x90e0
leaq -0xf00(%rbp), %rdi
callq 0x9c98
cmpq $0x0, -0xeb8(%rbp)
jle 0x12e69
movq -0xeb8(%rbp), %rcx
movq -0xde0(%rbp), %rax
subq %rcx, %rax
movq %rax, -0xde0(%rbp)
jmp 0x12e69
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xc29(%rbp), %rdi
callq 0x9700
jmp 0x134b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x13498
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1348c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x12e15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x12e09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xe80(%rbp), %rdi
callq 0x9c98
leaq -0xe58(%rbp), %rdi
callq 0x9c98
leaq -0xe59(%rbp), %rdi
callq 0x9700
jmp 0x1348c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x12e58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xea0(%rbp), %rdi
callq 0x9c98
leaq -0xea1(%rbp), %rdi
callq 0x9700
jmp 0x1348c
cmpl $0x0, -0xec0(%rbp)
je 0x12e86
movq -0xde0(%rbp), %rax
subq $0xe10, %rax            # imm = 0xE10
movq %rax, -0xde0(%rbp)
leaq -0xf21(%rbp), %rdi
movq %rdi, -0x16a8(%rbp)
callq 0x9b10
movq -0x16a8(%rbp), %rdx
leaq 0x57ec9(%rip), %rsi     # 0x6ad70
leaq -0xf20(%rbp), %rdi
callq 0xa780
jmp 0x12eb5
leaq -0xda8(%rbp), %rdi
leaq -0xf20(%rbp), %rsi
callq 0x9300
jmp 0x12eca
leaq -0xf20(%rbp), %rdi
callq 0x9c98
leaq -0xf21(%rbp), %rdi
callq 0x9700
movq -0xde0(%rbp), %rsi
leaq -0xda8(%rbp), %rdi
callq 0x9b70
jmp 0x12ef7
leaq -0xf48(%rbp), %rdi
leaq -0xda8(%rbp), %rsi
callq 0x96a0
jmp 0x12f0c
leaq -0xf48(%rbp), %rdi
movq %rdi, -0x16c0(%rbp)
callq 0x92b0
movq %rax, %rdi
leaq 0x57440(%rip), %rsi     # 0x6a369
leaq -0xee0(%rbp), %rdx
movq %rdx, -0x16b8(%rbp)
callq 0x90e0
movq -0x16c0(%rbp), %rdi
callq 0x9c98
movq -0x16b8(%rbp), %rcx
leaq 0x577c8(%rip), %rdx     # 0x6a71e
leaq -0x1350(%rbp), %rdi
movl $0x400, %esi            # imm = 0x400
callq 0x9550
leaq -0x1371(%rbp), %rdi
movq %rdi, -0x16b0(%rbp)
callq 0x9b10
movq -0x16b0(%rbp), %rdx
leaq 0x57243(%rip), %rsi     # 0x6a1cb
leaq -0x1370(%rbp), %rdi
callq 0xa780
jmp 0x12f96
leaq -0x1399(%rbp), %rdi
movq %rdi, -0x16c8(%rbp)
callq 0x9b10
movq -0x16c8(%rbp), %rdx
leaq -0x1398(%rbp), %rdi
leaq -0x1350(%rbp), %rsi
callq 0xa780
jmp 0x12fc5
leaq -0xd0(%rbp), %rdi
leaq -0x1370(%rbp), %rsi
leaq -0x1398(%rbp), %rdx
callq 0x63770
jmp 0x12fe1
leaq -0x1398(%rbp), %rdi
callq 0x9c98
leaq -0x1399(%rbp), %rdi
callq 0x9700
leaq -0x1370(%rbp), %rdi
callq 0x9c98
leaq -0x1371(%rbp), %rdi
callq 0x9700
leaq -0x13c1(%rbp), %rdi
movq %rdi, -0x16d0(%rbp)
callq 0x9b10
movq -0x16d0(%rbp), %rdx
leaq 0x57d3e(%rip), %rsi     # 0x6ad70
leaq -0x13c0(%rbp), %rdi
callq 0xa780
jmp 0x13040
leaq -0xda8(%rbp), %rdi
leaq -0x13c0(%rbp), %rsi
callq 0x9300
jmp 0x13055
leaq -0x13c0(%rbp), %rdi
callq 0x9c98
leaq -0x13c1(%rbp), %rdi
callq 0x9700
leaq -0xd0(%rbp), %rdi
callq 0x63a60
jmp 0x1307b
leaq -0x13e9(%rbp), %rdi
movq %rdi, -0x16d8(%rbp)
callq 0x9b10
movq -0x16d8(%rbp), %rdx
leaq 0x571b0(%rip), %rsi     # 0x6a24c
leaq -0x13e8(%rbp), %rdi
callq 0xa780
jmp 0x130aa
leaq -0x1411(%rbp), %rdi
movq %rdi, -0x16e0(%rbp)
callq 0x9b10
movq -0x16e0(%rbp), %rdx
leaq 0x57ae6(%rip), %rsi     # 0x6abb1
leaq -0x1410(%rbp), %rdi
callq 0xa780
jmp 0x130d9
leaq -0xd0(%rbp), %rdi
leaq -0x13e8(%rbp), %rsi
leaq -0x1410(%rbp), %rdx
callq 0x63770
jmp 0x130f5
leaq -0x1410(%rbp), %rdi
callq 0x9c98
leaq -0x1411(%rbp), %rdi
callq 0x9700
leaq -0x13e8(%rbp), %rdi
callq 0x9c98
leaq -0x13e9(%rbp), %rdi
callq 0x9700
leaq 0x7c5f4(%rip), %rax     # 0x8f720
movq 0x8(%rax), %rax
movq %rax, -0x16f8(%rbp)
leaq -0x100(%rbp), %rdi
movq %rdi, -0x16f0(%rbp)
movl $0x2e, %esi
movq $-0x1, %rdx
movq %rdx, -0x16e8(%rbp)
callq 0x9c00
movq -0x16f0(%rbp), %rsi
movq -0x16e8(%rbp), %rcx
movq %rax, %rdx
incq %rdx
leaq -0x1440(%rbp), %rdi
callq 0x96b0
jmp 0x1317f
movq -0x16f8(%rbp), %rdi
leaq -0x1440(%rbp), %rsi
callq 0x261d0
movq %rax, -0x1700(%rbp)
jmp 0x1319b
leaq -0x1440(%rbp), %rdi
callq 0x9c98
movq -0x1700(%rbp), %rax
movq %rax, -0x1420(%rbp)
cmpq $0x0, -0x1420(%rbp)
je 0x1343e
leaq -0x1461(%rbp), %rdi
movq %rdi, -0x1708(%rbp)
callq 0x9b10
movq -0x1708(%rbp), %rdx
leaq 0x56f6e(%rip), %rsi     # 0x6a152
leaq -0x1460(%rbp), %rdi
callq 0xa780
jmp 0x131f2
movq -0x1420(%rbp), %rsi
addq $0x20, %rsi
leaq 0x574ac(%rip), %rdx     # 0x6a6b0
leaq -0x1488(%rbp), %rdi
callq 0x14190
jmp 0x13212
leaq -0xd0(%rbp), %rdi
leaq -0x1460(%rbp), %rsi
leaq -0x1488(%rbp), %rdx
callq 0x63770
jmp 0x1322e
leaq -0x1488(%rbp), %rdi
callq 0x9c98
leaq -0x1460(%rbp), %rdi
callq 0x9c98
leaq -0x1461(%rbp), %rdi
callq 0x9700
jmp 0x1343e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x13289
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xf20(%rbp), %rdi
callq 0x9c98
leaq -0xf21(%rbp), %rdi
callq 0x9700
jmp 0x1348c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x132f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x132e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x1398(%rbp), %rdi
callq 0x9c98
leaq -0x1399(%rbp), %rdi
callq 0x9700
leaq -0x1370(%rbp), %rdi
callq 0x9c98
leaq -0x1371(%rbp), %rdi
callq 0x9700
jmp 0x1348c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1333b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x13c0(%rbp), %rdi
callq 0x9c98
leaq -0x13c1(%rbp), %rdi
callq 0x9700
jmp 0x1348c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x133aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x13392
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x1410(%rbp), %rdi
callq 0x9c98
leaq -0x1411(%rbp), %rdi
callq 0x9700
leaq -0x13e8(%rbp), %rdi
callq 0x9c98
leaq -0x13e9(%rbp), %rdi
callq 0x9700
jmp 0x1348c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x1440(%rbp), %rdi
callq 0x9c98
jmp 0x1348c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x13430
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x13424
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x1488(%rbp), %rdi
callq 0x9c98
leaq -0x1460(%rbp), %rdi
callq 0x9c98
leaq -0x1461(%rbp), %rdi
callq 0x9700
jmp 0x1348c
leaq -0xd0(%rbp), %rdi
leaq -0xc08(%rbp), %rsi
callq 0x645d0
jmp 0x13453
movq -0x14a8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x63570
jmp 0x13468
movl $0x1, -0x1f4(%rbp)
leaq -0xda8(%rbp), %rdi
callq 0x91a0
leaq -0xc08(%rbp), %rdi
callq 0x9c98
jmp 0x134a6
leaq -0xda8(%rbp), %rdi
callq 0x91a0
leaq -0xc08(%rbp), %rdi
callq 0x9c98
jmp 0x134b4
leaq -0x738(%rbp), %rdi
callq 0x9170
jmp 0x134c2
leaq -0x738(%rbp), %rdi
callq 0x9170
jmp 0x134dc
leaq -0x450(%rbp), %rdi
callq 0x9c98
leaq -0x428(%rbp), %rdi
callq 0xceb0
jmp 0x134f6
leaq -0x450(%rbp), %rdi
callq 0x9c98
leaq -0x428(%rbp), %rdi
callq 0xceb0
jmp 0x1351e
leaq -0x100(%rbp), %rdi
callq 0x9c98
leaq -0xd0(%rbp), %rdi
callq 0x634e0
movq -0x14a0(%rbp), %rax
addq $0x1710, %rsp           # imm = 0x1710
popq %rbp
retq
leaq -0x100(%rbp), %rdi
callq 0x9c98
leaq -0xd0(%rbp), %rdi
callq 0x634e0
movq -0xd8(%rbp), %rdi
callq 0x9af0
movq %rax, %rdi
callq 0xaa90
nopw (%rax,%rax)