// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/tcp-server.cpp
// Function: main
int	main(int argc, char **argv)
{
	std::cout << "\e[34m" << " __      __      ___.                              \n/  \\    /  \\ ____\\_ |__   ______ ______________  __\n\\   \\/\\/   // __ \\| __ \\ /  ___// __ \\_  __ \\  \\/ /\n \\        /\\  ___/| \\_\\ \\\\___ \\\\  ___/|  | \\/\\   / \n  \\__/\\  /  \\___  >___  /____  >\\___  >__|    \\_/  \n       \\/       \\/    \\/     \\/     \\/         V1.0.0\e[39m" << std::endl;
	std::cout << "\e[34m" << "Available commands are: help|stop|gzip|deflate|info|workers|uptime|logger|types|debug" << "\e[39m" << std::endl;
	Logger::setMode(SILENT);
	Logger::print("Webserv is starting...", NULL, INFO, SILENT);
	if (argc > 2)
	{
		std::cerr << "Format: ./webserv <path_to_config_file>" << std::endl;
		return 1;
	}

	try { g_webserv.init_config(std::string(argc == 1 ? "./config/default.conf" : argv[1])); }
	catch (std::exception& e) { return Logger::print(std::string("Invalid config file: ") + e.what(), 1, ERROR, SILENT); }

	g_webserv.creds = new Credentials();
	Threadpool* workers = new Threadpool(g_webserv.workers_amount);
	sighandler();

	try
	{
		fd_set							read_sockets, read_sockets_z, write_sockets, write_sockets_z, error_sockets, error_sockets_z;
		std::list<Client>				clients;
		std::list<Client>::iterator		it;
		int								highestFd = 0;
		int								serverFd = 0;
		int								readyfd = 0;
		struct timeval 					start_time;

		gettimeofday(&start_time, NULL);
		Logger::print("Webserv is ready, waiting for connection...", NULL, SUCCESS, SILENT);
		FD_ZERO(&read_sockets_z);
		FD_ZERO(&write_sockets_z);
		FD_ZERO(&error_sockets_z);
		for (std::map<int, ServerSocket*>::iterator its = g_webserv.sockets.begin(); its != g_webserv.sockets.end(); its++)
		{
			if (its->second->GetSocket() > serverFd)
				serverFd = its->second->GetSocket();
			FD_SET(its->second->GetSocket(), &read_sockets_z);
		}
		FD_SET(STDIN_FILENO, &read_sockets_z);
		highestFd = serverFd;
		while (g_webserv.run)
		{
			it = clients.begin();
			read_sockets = read_sockets_z;
			write_sockets = write_sockets_z;
			error_sockets = error_sockets_z;
			struct timeval timeout = {30, 0};
			readyfd = select(highestFd + 1, &read_sockets, &write_sockets, &error_sockets, &timeout);
			switch (readyfd)
			{
			case -1:
				if (g_webserv.run)
					Logger::print("Error select(): "+std::string(strerror(errno)), NULL, ERROR, SILENT);
				break;
			case 0:
				Logger::print(std::string("Idle.. Active Connections: ")+ft::toString(clients.size()), NULL, INFO, NORMAL);
				break;//webserv was idling for the past 30s
			default:
				if (FD_ISSET(STDIN_FILENO, &read_sockets))
				{
					std::string line;
					std::getline(std::cin, line);
					handle_terminal_input(line, clients, &start_time, workers);
					readyfd--;
				}
				for (std::map<int, ServerSocket*>::iterator its = g_webserv.sockets.begin(); its != g_webserv.sockets.end(); its++)
				{
					if (FD_ISSET(its->second->GetSocket(), &read_sockets))
					{
						int fd = 0;
						if ((fd = handle_new_connection(*its->second, clients)))
						{
							FD_SET(fd, &read_sockets_z);
							FD_SET(fd, &write_sockets_z);
							FD_SET(fd, &error_sockets_z);
							if (fd > highestFd)
								highestFd = fd;
						}
						readyfd--;
					}
				}
				it = clients.begin();
				while (readyfd && it != clients.end())
				{
					bool	error = false;
					if (FD_ISSET(it->sckt->GetSocket(), &error_sockets))
					{
						error = true;
						Logger::print("FD Error flagged by Select", NULL, WARNING, SILENT);
					}
					if (!error && FD_ISSET(it->sckt->GetSocket(), &read_sockets))
					{
						error = handle_client_request((*it));
						readyfd--;
					}
					if (!error && FD_ISSET(it->sckt->GetSocket(), &write_sockets))
					{
						if (it->req->isfinished())
							error = workers->AddJob((*it));
						readyfd--;
					}
					if (error)
					{
						bool busy = false;
						workers->Lock();
						if (!workers->getJobs().empty())
							for (std::deque<Client*>::const_iterator jobs_it = workers->getJobs().begin(); jobs_it != workers->getJobs().end(); jobs_it++)
								if (it->sckt == (*jobs_it)->sckt)
									busy = true;
						if (!workers->getCurrentJobs().empty())
							for (std::list<Client*>::const_iterator jobs_it = workers->getCurrentJobs().begin(); jobs_it != workers->getCurrentJobs().end(); jobs_it++)
								if (it->sckt == (*jobs_it)->sckt)
									busy = true;
						workers->Unlock();
						if (busy)
							continue;
						Logger::print("Client Disconnected", NULL, SUCCESS, NORMAL);
						FD_CLR(it->sckt->GetSocket(), &read_sockets_z);
						FD_CLR(it->sckt->GetSocket(), &write_sockets_z);
						FD_CLR(it->sckt->GetSocket(), &error_sockets_z);
						if (highestFd == it->sckt->GetSocket())
							highestFd = 0;
						delete it->sckt;
						delete it->req;
						it = clients.erase(it);
					}
					else
					{
						++it;
					}
				}
				if (!highestFd)
				{
					highestFd = serverFd;
					for (std::list<Client>::iterator its = clients.begin(); its != clients.end(); ++its)
					{
						if (its->sckt->GetSocket() > highestFd)
							highestFd = its->sckt->GetSocket();
					}
				}
				break;
			}
		}
		Logger::print("Webserv is shutting down...", NULL, INFO, SILENT);
		delete workers;
		it = clients.begin();
		while (it != clients.end())
		{
			Logger::print("Socket closed", NULL, SUCCESS, SILENT);
			delete it->sckt;
			delete it->req;
			it = clients.erase(it);
		}
	}
	catch(ServerSocket::ServerSocketException& e)
	{
		g_webserv.run = false;
		Logger::print(e.what(), NULL, ERROR, SILENT);
	}

	for (std::map<int, ServerSocket*>::iterator its = g_webserv.sockets.begin(); its != g_webserv.sockets.end(); its++)
		delete its->second;
	delete g_webserv.file_formatname;
	delete g_webserv.languages;
	delete g_webserv.creds;
	Logger::print("Webserv Shutdown complete", NULL, SUCCESS, SILENT);
	std::cout << std::flush;
	return (0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x658, %rsp            # imm = 0x658
movq %rsi, %rbx
movl %edi, %ebp
movq 0x1e000(%rip), %r14     # 0x42fa8
leaq 0xa1b2(%rip), %r15      # 0x2f161
movq %r14, %rdi
movq %r15, %rsi
callq 0x7510
leaq 0xa1a6(%rip), %rsi      # 0x2f167
movq %rax, %rdi
callq 0x7510
movq %rax, %rdi
callq 0x7280
movq %r14, %rdi
movq %r15, %rsi
callq 0x7510
leaq 0xa2c3(%rip), %rsi      # 0x2f2a6
movq %rax, %rdi
callq 0x7510
leaq 0xa2ae(%rip), %rsi      # 0x2f2a0
movq %rax, %rdi
callq 0x7510
movq %rax, %rdi
callq 0x7280
leaq 0x258(%rsp), %rdi
movl $0x2, (%rdi)
callq 0x26e22
leaq 0xa2e0(%rip), %rsi      # 0x2f2fc
leaq 0x2f8(%rsp), %rdi
leaq 0x258(%rsp), %rdx
callq 0x8032
leaq 0x2f8(%rsp), %rdi
pushq $0x2
popq %rcx
xorl %esi, %esi
xorl %edx, %edx
callq 0xbe10
leaq 0x2f8(%rsp), %rdi
callq 0x79b8
cmpl $0x3, %ebp
jl 0x2507a
movq 0x1df8a(%rip), %rdi     # 0x42fe8
leaq 0xa2ae(%rip), %rsi      # 0x2f313
callq 0x7510
movq %rax, %rdi
callq 0x7280
pushq $0x1
popq %rbx
jmp 0x2669c
cmpl $0x1, %ebp
jne 0x25088
leaq 0xa2b5(%rip), %rsi      # 0x2f33b
jmp 0x2508c
movq 0x8(%rbx), %rsi
leaq 0x258(%rsp), %rdi
leaq 0x3d8(%rsp), %rdx
callq 0x8032
leaq 0x1e508(%rip), %rdi     # 0x435b0
leaq 0x258(%rsp), %rsi
callq 0x1df3a
leaq 0x258(%rsp), %rdi
callq 0x79b8
pushq $0x18
popq %rdi
callq 0x7520
movq %rax, %r14
movq %rax, %rdi
callq 0x1261c
movq %r14, 0x1e5a4(%rip)     # 0x43680
movl $0xb8, %edi
callq 0x7520
movq %rax, %r14
movl 0x1e581(%rip), %esi     # 0x43670
movq %rax, %rdi
callq 0x1367c
callq 0x135d4
leaq 0xa8(%rsp), %rax
movq %rax, 0x8(%rax)
movq %rax, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x248(%rsp), %rdi
xorl %esi, %esi
callq 0x77c0
leaq 0xa241(%rip), %rsi      # 0x2f367
leaq 0x228(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0x8032
leaq 0x228(%rsp), %rdi
pushq $0x1
popq %rdx
pushq $0x2
popq %rcx
xorl %esi, %esi
callq 0xbe10
leaq 0x228(%rsp), %rdi
callq 0x79b8
xorl %eax, %eax
cmpq $0x10, %rax
je 0x25173
andq $0x0, 0x3d8(%rsp,%rax,8)
incq %rax
jmp 0x2515f
xorl %eax, %eax
cmpq $0x10, %rax
je 0x25189
andq $0x0, 0x4d8(%rsp,%rax,8)
incq %rax
jmp 0x25175
xorl %eax, %eax
cmpq $0x10, %rax
je 0x2519f
andq $0x0, 0x458(%rsp,%rax,8)
incq %rax
jmp 0x2518b
xorl %r12d, %r12d
movq 0x1e437(%rip), %rbx     # 0x435e0
pushq $0x40
popq %r15
leaq 0x1e41c(%rip), %rax     # 0x435d0
cmpq %rax, %rbx
je 0x25214
movq 0x28(%rbx), %rdi
callq 0xf7fe
cmpl %r12d, %eax
jle 0x251d3
movq 0x28(%rbx), %rdi
callq 0xf7fe
movl %eax, %r12d
movq 0x28(%rbx), %rdi
callq 0xf7fe
movl %eax, %ebp
movq 0x28(%rbx), %rdi
callq 0xf7fe
movl %eax, %esi
movl %ebp, %eax
cltd
idivl %r15d
movl %edx, %ecx
pushq $0x1
popq %rdi
shlq %cl, %rdi
movl %esi, %eax
cltd
idivl %r15d
cltq
orq %rdi, 0x3d8(%rsp,%rax,8)
movq %rbx, %rdi
callq 0x7390
movq %rax, %rbx
jmp 0x251ad
leaq 0x3d8(%rsp), %rax
orb $0x1, (%rax)
movl %r12d, %eax
leaq 0x80(%rsp), %r12
leaq 0x60(%rsp), %rbx
movl %eax, 0xe4(%rsp)
movq %rax, 0x10(%rsp)
cmpb $0x1, 0x1e36e(%rip)     # 0x435b0
jne 0x264e7
pushq $0x10
popq %rax
movq %rax, %rcx
leaq 0x258(%rsp), %rdx
movq %rdx, %rdi
leaq 0x3d8(%rsp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq %rax, %rcx
leaq 0x5d8(%rsp), %r8
movq %r8, %rdi
leaq 0x4d8(%rsp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq %rax, %rcx
leaq 0x558(%rsp), %rax
movq %rax, %rdi
leaq 0x458(%rsp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movups 0xa33b(%rip), %xmm0     # 0x2f5d8
movaps %xmm0, 0x1b0(%rsp)
movq 0x10(%rsp), %rcx
leal 0x1(%rcx), %edi
movq %rdx, %rsi
movq %r8, %rdx
movq %rax, %rcx
leaq 0x1b0(%rsp), %r8
callq 0x7500
cmpl $-0x1, %eax
je 0x25329
movl %eax, 0xc(%rsp)
testl %eax, %eax
jne 0x2538f
movq %r12, %rdi
leaq 0xa0c6(%rip), %rsi      # 0x2f3a4
leaq 0x20(%rsp), %rdx
callq 0x8032
movl 0xb8(%rsp), %esi
movq %rbx, %rdi
callq 0x16dd9
leaq 0x398(%rsp), %r15
movq %r15, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0xc221
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
pushq $0x1
popq %rcx
callq 0xbe10
movq %r15, %rdi
callq 0x79b8
movq %rbx, %rdi
jmp 0x2537d
cmpb $0x1, 0x1e280(%rip)     # 0x435b0
jne 0x2523b
callq 0x7060
movl (%rax), %edi
callq 0x71d0
movq %r12, %rdi
movq %rax, %rsi
movq %rbx, %rdx
callq 0x8032
leaq 0x3b8(%rsp), %r15
movq %r15, %rdi
leaq 0xa031(%rip), %rsi      # 0x2f393
movq %r12, %rdx
callq 0xc30e
movq %r15, %rdi
xorl %esi, %esi
pushq $0x3
popq %rdx
pushq $0x2
popq %rcx
callq 0xbe10
movq %r15, %rdi
callq 0x79b8
movq %r12, %rdi
callq 0x79b8
jmp 0x2523b
testb $0x1, 0x258(%rsp)
je 0x2551d
leaq 0x118(%rsp), %rax
movq %rax, 0x108(%rsp)
andq $0x0, 0x110(%rsp)
movb $0x0, 0x118(%rsp)
movq 0x1dc0b(%rip), %rdi     # 0x42fd0
leaq 0x108(%rsp), %rsi
callq 0x70e0
leaq 0x108(%rsp), %r15
movq %r15, %rdi
leaq 0xa04f(%rip), %rsi      # 0x2f433
callq 0x91b7
testb %al, %al
je 0x253f9
movb $0x0, 0x1e1bc(%rip)     # 0x435b0
jmp 0x2550c
movq %r15, %rdi
leaq 0xa035(%rip), %rsi      # 0x2f438
callq 0x91b7
testb %al, %al
je 0x2544a
movq 0x1db95(%rip), %rdi     # 0x42fa8
leaq 0x9d47(%rip), %rsi      # 0x2f161
callq 0x7510
leaq 0x9e80(%rip), %rsi      # 0x2f2a6
movq %rax, %rdi
callq 0x7510
movq %rax, %rdi
leaq 0x9e68(%rip), %rsi      # 0x2f2a0
callq 0x7510
movq %rax, %rdi
callq 0x7280
jmp 0x2550c
movq %r15, %rdi
leaq 0x8383(%rip), %rsi      # 0x2d7d7
callq 0x91b7
testb %al, %al
je 0x2546e
movq 0x1e154(%rip), %rdi     # 0x435b8
callq 0x133fa
jmp 0x2550c
movq %r15, %rdi
leaq 0x9e7e(%rip), %rsi      # 0x2f2f6
callq 0x91b7
testb %al, %al
je 0x25952
xorb $0x1, 0x1e125(%rip)     # 0x435b1
movq 0x1db15(%rip), %rdi     # 0x42fa8
leaq 0x9cc7(%rip), %rsi      # 0x2f161
callq 0x7510
movq %rax, %r15
cmpb $0x0, 0x1e108(%rip)     # 0x435b1
leaq 0x9fa9(%rip), %rsi      # 0x2f459
leaq 0x9f9a(%rip), %rax      # 0x2f451
cmovneq %rax, %rsi
movq %rbx, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8032
movq %r12, %rdi
leaq 0x9f6b(%rip), %rsi      # 0x2f43d
movq %rbx, %rdx
callq 0xc30e
movq %r15, %rdi
movq %r12, %rsi
callq 0x74a0
movq %rax, %rdi
leaq 0x9db1(%rip), %rsi      # 0x2f2a0
callq 0x7510
movq %rax, %rdi
callq 0x7280
movq %r12, %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x79b8
decl 0xc(%rsp)
leaq 0x108(%rsp), %rdi
callq 0x79b8
movq 0x1e0bc(%rip), %r15     # 0x435e0
leaq 0x1e0a5(%rip), %rax     # 0x435d0
cmpq %rax, %r15
je 0x255c9
movq 0x28(%r15), %rdi
callq 0xf7fe
pushq $0x40
popq %rbp
cltd
idivl %ebp
cltq
movq 0x258(%rsp,%rax,8), %r13
movq 0x28(%r15), %rdi
callq 0xf7fe
cltd
idivl %ebp
btq %rdx, %r13
jae 0x255b9
movq 0x28(%r15), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x241d9
movl %eax, %esi
testl %eax, %eax
je 0x255b5
movl %esi, %eax
cltd
pushq $0x40
popq %rcx
idivl %ecx
movslq %eax, %rdx
shll $0x6, %eax
movl %esi, %ecx
subl %eax, %ecx
pushq $0x1
popq %rax
shlq %cl, %rax
orq %rax, 0x3d8(%rsp,%rdx,8)
orq %rax, 0x4d8(%rsp,%rdx,8)
orq %rax, 0x458(%rsp,%rdx,8)
movq 0x10(%rsp), %rax
cmpl %eax, %esi
cmovgl %esi, %eax
movq %rax, 0x10(%rsp)
decl 0xc(%rsp)
movq %r15, %rdi
callq 0x7390
movq %rax, %r15
jmp 0x25524
movq 0xa8(%rsp), %rax
movq %rax, (%rsp)
movq (%rsp), %rax
leaq 0x10(%rax), %r13
leaq 0xa8(%rsp), %rax
cmpq %rax, (%rsp)
setne %al
cmpl $0x0, 0xc(%rsp)
je 0x25900
testb %al, %al
je 0x25900
movq (%r13), %rdi
callq 0xf7fe
cltd
pushq $0x40
popq %rcx
idivl %ecx
cltq
movq 0x558(%rsp,%rax,8), %r15
movq (%r13), %rdi
callq 0xf7fe
cltd
pushq $0x40
popq %rcx
idivl %ecx
btq %rdx, %r15
jae 0x25663
leaq 0x378(%rsp), %r15
movq %r15, %rdi
leaq 0x9d81(%rip), %rsi      # 0x2f3c0
movq %r12, %rdx
callq 0x8032
movq %r15, %rdi
xorl %esi, %esi
pushq $0x2
popq %rcx
movl %ecx, %edx
callq 0xbe10
movq %r15, %rdi
callq 0x79b8
jmp 0x256ff
movq (%r13), %rdi
callq 0xf7fe
cltd
pushq $0x40
popq %rcx
idivl %ecx
cltq
movq 0x258(%rsp,%rax,8), %r15
movq (%r13), %rdi
callq 0xf7fe
cltd
pushq $0x40
popq %rcx
idivl %ecx
btq %rdx, %r15
jae 0x256a1
movq %r13, %rdi
callq 0x244b6
decl 0xc(%rsp)
testb %al, %al
jne 0x256ff
movq (%r13), %rdi
callq 0xf7fe
cltd
pushq $0x40
popq %rcx
idivl %ecx
cltq
movq 0x5d8(%rsp,%rax,8), %r15
movq (%r13), %rdi
callq 0xf7fe
cltd
pushq $0x40
popq %rcx
idivl %ecx
btq %rdx, %r15
jae 0x258f4
movq (%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x2929c
testb %al, %al
je 0x258f0
movq %r14, %rdi
movq %r13, %rsi
callq 0x13952
decl 0xc(%rsp)
testb %al, %al
je 0x258f4
movq %r14, %rdi
callq 0x13926
movq %r14, %rdi
callq 0x13b18
movq 0x30(%rax), %rcx
cmpq 0x10(%rax), %rcx
je 0x25771
movq %r14, %rdi
callq 0x13b18
movups 0x10(%rax), %xmm0
movaps %xmm0, 0x80(%rsp)
movups 0x20(%rax), %xmm0
movaps %xmm0, 0x90(%rsp)
xorl %r15d, %r15d
movq %r14, %rdi
callq 0x13b18
movq 0x80(%rsp), %rcx
cmpq 0x30(%rax), %rcx
je 0x25774
movq (%r13), %rax
movq (%rcx), %rcx
cmpq (%rcx), %rax
sete %al
orb %al, %r15b
movq %rbx, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x26e32
jmp 0x2573c
xorl %r15d, %r15d
movq %r14, %rdi
callq 0x13b1e
cmpq %rax, (%rax)
je 0x257b0
movq %r14, %rdi
callq 0x13b1e
movq %rax, %rbp
movq (%rbp), %rbp
movq %r14, %rdi
callq 0x13b1e
cmpq %rax, %rbp
je 0x257b0
movq (%r13), %rax
movq 0x10(%rbp), %rcx
cmpq (%rcx), %rax
sete %al
orb %al, %r15b
jmp 0x2578c
movq %r14, %rdi
callq 0x1393c
testb $0x1, %r15b
jne 0x255dd
leaq 0x358(%rsp), %r15
movq %r15, %rdi
leaq 0x9c07(%rip), %rsi      # 0x2f3db
movq %r12, %rdx
callq 0x8032
movq %r15, %rdi
xorl %esi, %esi
pushq $0x1
popq %rcx
movl %ecx, %edx
callq 0xbe10
movq %r15, %rdi
callq 0x79b8
movq (%r13), %rdi
callq 0xf7fe
movl %eax, %ebp
movq (%r13), %rdi
callq 0xf7fe
movl %eax, %esi
movl %ebp, %eax
cltd
pushq $0x40
popq %r8
idivl %r8d
movl %edx, %ecx
pushq $-0x2
popq %rdi
rolq %cl, %rdi
movl %esi, %eax
cltd
idivl %r8d
cltq
andq %rdi, 0x3d8(%rsp,%rax,8)
movq (%r13), %rdi
callq 0xf7fe
movl %eax, %ebp
movq (%r13), %rdi
callq 0xf7fe
movl %eax, %esi
movl %ebp, %eax
cltd
pushq $0x40
popq %r8
idivl %r8d
movl %edx, %ecx
pushq $-0x2
popq %rdi
rolq %cl, %rdi
movl %esi, %eax
cltd
idivl %r8d
cltq
andq %rdi, 0x4d8(%rsp,%rax,8)
movq (%r13), %rdi
callq 0xf7fe
movl %eax, %ebp
movq (%r13), %rdi
callq 0xf7fe
movl %eax, %esi
movl %ebp, %eax
cltd
pushq $0x40
popq %r8
idivl %r8d
movl %edx, %ecx
pushq $-0x2
popq %rdi
rolq %cl, %rdi
movl %esi, %eax
cltd
idivl %r8d
cltq
andq %rdi, 0x458(%rsp,%rax,8)
movq (%r13), %rdi
callq 0xf7fe
movq 0x10(%rsp), %rcx
cmpl %eax, %ecx
movl $0x0, %eax
cmovel %eax, %ecx
movq %rcx, 0x10(%rsp)
movq (%r13), %rdi
testq %rdi, %rdi
je 0x258c7
movq (%rdi), %rax
callq *0x8(%rax)
movq (%rsp), %rax
movq 0x18(%rax), %rdi
testq %rdi, %rdi
je 0x258da
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0xa8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x26e52
jmp 0x255d1
decl 0xc(%rsp)
movq (%rsp), %rax
movq (%rax), %rax
jmp 0x255d1
cmpl $0x0, 0x10(%rsp)
jne 0x2523b
leaq 0xa8(%rsp), %r15
movl 0xe4(%rsp), %eax
movq %rax, 0x10(%rsp)
movq (%r15), %r15
leaq 0xa8(%rsp), %rax
cmpq %rax, %r15
je 0x2523b
movq 0x10(%r15), %rdi
callq 0xf7fe
cmpl 0x10(%rsp), %eax
jle 0x2591f
movq 0x10(%r15), %rdi
callq 0xf7fe
movq %rax, 0x10(%rsp)
jmp 0x2591f
movq %r15, %rdi
leaq 0x9b06(%rip), %rsi      # 0x2f462
callq 0x91b7
testb %al, %al
je 0x259af
callq 0x26e60
movl (%rax), %eax
cmpl $0x1, %eax
je 0x25ad1
testl %eax, %eax
jne 0x25b03
movl $0x1, 0x80(%rsp)
movq %r12, %rdi
callq 0x26e22
movq 0x1d611(%rip), %rdi     # 0x42fa8
leaq 0x97c3(%rip), %rsi      # 0x2f161
callq 0x7510
leaq 0x9abf(%rip), %rsi      # 0x2f469
jmp 0x25426
movq %r15, %rdi
leaq 0x9f03(%rip), %rsi      # 0x2f8bc
callq 0x91b7
testb %al, %al
je 0x25a3e
xorb $0x1, 0x1dcb0(%rip)     # 0x43679
movq 0x1d5d8(%rip), %rdi     # 0x42fa8
leaq 0x978a(%rip), %rsi      # 0x2f161
callq 0x7510
movq %rax, %r15
cmpb $0x0, 0x1dc93(%rip)     # 0x43679
leaq 0x9a6c(%rip), %rsi      # 0x2f459
leaq 0x9a5d(%rip), %rax      # 0x2f451
cmovneq %rax, %rsi
movq %rbx, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8032
movq %r12, %rdi
leaq 0x9aa9(%rip), %rsi      # 0x2f4b8
movq %rbx, %rdx
callq 0xc30e
movq %r15, %rdi
movq %r12, %rsi
callq 0x74a0
movq %rax, %rdi
leaq 0x9874(%rip), %rsi      # 0x2f2a0
callq 0x7510
movq %rax, %rdi
callq 0x7280
jmp 0x254fc
movq %r15, %rdi
leaq 0x7e36(%rip), %rsi      # 0x2d87e
callq 0x91b7
testb %al, %al
je 0x25b32
xorb $0x1, 0x1dc1c(%rip)     # 0x43678
movq 0x1d545(%rip), %rdi     # 0x42fa8
leaq 0x96f7(%rip), %rsi      # 0x2f161
callq 0x7510
movq %rax, %r15
cmpb $0x0, 0x1dbff(%rip)     # 0x43678
leaq 0x99d9(%rip), %rsi      # 0x2f459
leaq 0x99ca(%rip), %rax      # 0x2f451
cmovneq %rax, %rsi
movq %rbx, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8032
movq %r12, %rdi
leaq 0x9a2a(%rip), %rsi      # 0x2f4cc
movq %rbx, %rdx
callq 0xc30e
movq %r15, %rdi
movq %r12, %rsi
callq 0x74a0
movq %rax, %rdi
leaq 0x97e1(%rip), %rsi      # 0x2f2a0
callq 0x7510
movq %rax, %rdi
callq 0x7280
jmp 0x254fc
movl $0x2, 0x80(%rsp)
movq %r12, %rdi
callq 0x26e22
movq 0x1d4bd(%rip), %rdi     # 0x42fa8
leaq 0x966f(%rip), %rsi      # 0x2f161
callq 0x7510
leaq 0x9985(%rip), %rsi      # 0x2f483
jmp 0x25426
andl $0x0, 0x80(%rsp)
movq %r12, %rdi
callq 0x26e22
movq 0x1d48e(%rip), %rdi     # 0x42fa8
leaq 0x9640(%rip), %rsi      # 0x2f161
callq 0x7510
leaq 0x9970(%rip), %rsi      # 0x2f49d
jmp 0x25426
movq %r15, %rdi
leaq 0x7cdb(%rip), %rsi      # 0x2d817
callq 0x91b7
testb %al, %al
je 0x25cff
movq %r12, %rdi
leaq 0x9990(%rip), %rsi      # 0x2f4e3
movq %rbx, %rdx
callq 0x8032
movq %r14, %rdi
callq 0x13b18
movq 0x30(%rax), %rcx
cmpq 0x10(%rax), %rcx
je 0x263e2
movq %r14, %rdi
callq 0x13926
movq %r14, %rdi
callq 0x13b18
movups 0x10(%rax), %xmm0
movaps %xmm0, 0x60(%rsp)
movups 0x20(%rax), %xmm0
movaps %xmm0, 0x70(%rsp)
movq %r14, %rdi
callq 0x13b18
movq 0x60(%rsp), %rcx
cmpq 0x30(%rax), %rcx
je 0x26201
movq (%rcx), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rsi
movq (%rsi), %rax
leaq 0x150(%rsp), %r15
movq %r15, %rdi
callq *0x10(%rax)
leaq 0x170(%rsp), %r13
movq %r13, %rdi
leaq 0x7127(%rip), %rsi      # 0x2ccff
movq %r15, %rdx
callq 0xc30e
leaq 0x128(%rsp), %r15
movq %r15, %rdi
movq %r13, %rsi
leaq 0x99af(%rip), %rdx      # 0x2f5a4
callq 0xbe83
movq 0x60(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rdx
movl $0xb8, %eax
addq %rax, %rdx
leaq 0xe8(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
callq 0xc1ca
leaq 0xc0(%rsp), %rdi
movq %r13, %rsi
leaq 0x98c4(%rip), %rdx      # 0x2f4f7
callq 0xbe83
movq 0x60(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rsi
leaq 0x190(%rsp), %r15
movq %r15, %rdi
callq 0xf1b0
leaq 0x40(%rsp), %r13
movq %r13, %rdi
leaq 0xc0(%rsp), %rsi
movq %r15, %rdx
callq 0xc221
leaq 0x20(%rsp), %r15
movq %r15, %rdi
movq %r13, %rsi
leaq 0x7bc4(%rip), %rdx      # 0x2d841
callq 0xbe83
movq %r12, %rdi
movq %r15, %rsi
callq 0x7950
movq %r15, %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
leaq 0x190(%rsp), %rdi
callq 0x79b8
leaq 0xc0(%rsp), %rdi
callq 0x79b8
leaq 0xe8(%rsp), %rdi
callq 0x79b8
leaq 0x128(%rsp), %rdi
callq 0x79b8
leaq 0x170(%rsp), %rdi
callq 0x79b8
leaq 0x150(%rsp), %rdi
callq 0x79b8
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x26e32
jmp 0x25b93
movq %r15, %rdi
leaq 0x97f9(%rip), %rsi      # 0x2f502
callq 0x91b7
testb %al, %al
je 0x2620e
movq 0x1d28b(%rip), %rdi     # 0x42fa8
leaq 0x943d(%rip), %rsi      # 0x2f161
callq 0x7510
movq %rax, %r15
movl 0xb8(%rsp), %esi
leaq 0xc0(%rsp), %rdi
callq 0x16dd9
leaq 0x40(%rsp), %r13
movq %r13, %rdi
leaq 0x97b8(%rip), %rsi      # 0x2f507
leaq 0xc0(%rsp), %rdx
callq 0xc30e
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
leaq 0x97b0(%rip), %rdx      # 0x2f51b
callq 0xbe83
movl 0x1d8fe(%rip), %esi     # 0x43674
leaq 0xe8(%rsp), %r13
movq %r13, %rdi
callq 0x16dd9
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
movq %r13, %rdx
callq 0xc221
movq %r12, %rdi
movq %rbx, %rsi
leaq 0x706d(%rip), %rdx      # 0x2ce10
callq 0xbe83
movq %r15, %rdi
movq %r12, %rsi
callq 0x74a0
movq %rax, %rdi
leaq 0x94e3(%rip), %rsi      # 0x2f2a0
callq 0x7510
movq %rax, %rdi
callq 0x7280
movq %r12, %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x79b8
leaq 0xe8(%rsp), %rdi
callq 0x79b8
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
leaq 0xc0(%rsp), %rdi
callq 0x79b8
leaq 0xa8(%rsp), %r13
movq %r13, (%rsp)
movq (%rsp), %rcx
movq (%rcx), %rcx
leaq 0xa8(%rsp), %rax
movq %rcx, (%rsp)
cmpq %rax, %rcx
je 0x2550c
movq %r12, %rdi
leaq 0x96f1(%rip), %rsi      # 0x2f52b
movq %rbx, %rdx
callq 0x8032
movq (%rsp), %rax
movq 0x10(%rax), %rsi
leaq 0x40(%rsp), %r13
movq %r13, %rdi
callq 0xf1b0
leaq 0x20(%rsp), %r15
movq %r15, %rdi
leaq 0x96da(%rip), %rsi      # 0x2f540
movq %r13, %rdx
callq 0xc30e
movq %rbx, %rdi
movq %r15, %rsi
leaq 0x79c6(%rip), %rdx      # 0x2d841
callq 0xbe83
movq %r12, %rdi
movq %rbx, %rsi
callq 0x7950
movq %rbx, %rdi
callq 0x79b8
leaq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0x79b8
leaq 0x40(%rsp), %r13
movq %r13, %rdi
callq 0x79b8
movq (%rsp), %rax
movq 0x10(%rax), %rsi
movq %r13, %rdi
callq 0xf19e
movq %r15, %rdi
leaq 0x967f(%rip), %rsi      # 0x2f546
movq %r13, %rdx
callq 0xc30e
movq %rbx, %rdi
movq %r15, %rsi
leaq 0x7965(%rip), %rdx      # 0x2d841
callq 0xbe83
movq %r12, %rdi
movq %rbx, %rsi
callq 0x7950
movq %rbx, %rdi
callq 0x79b8
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %r13
movq %r13, %rdi
callq 0x79b8
movq (%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xf7fe
movq %r13, %rdi
movl %eax, %esi
callq 0x16dd9
leaq 0x20(%rsp), %r15
movq %r15, %rdi
leaq 0x9623(%rip), %rsi      # 0x2f554
movq %r13, %rdx
callq 0xc30e
movq %rbx, %rdi
movq %r15, %rsi
leaq 0x78fb(%rip), %rdx      # 0x2d841
callq 0xbe83
movq %r12, %rdi
movq %rbx, %rsi
callq 0x7950
movq %rbx, %rdi
callq 0x79b8
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
movq %r14, %rdi
callq 0x13926
movq %r14, %rdi
callq 0x13b18
movq 0x30(%rax), %rcx
cmpq 0x10(%rax), %rcx
je 0x260b5
movq %r14, %rdi
callq 0x13b18
movups 0x10(%rax), %xmm0
movaps %xmm0, 0x60(%rsp)
movups 0x20(%rax), %xmm0
movaps %xmm0, 0x70(%rsp)
movq %r14, %rdi
callq 0x13b18
movq 0x60(%rsp), %rcx
cmpq 0x30(%rax), %rcx
je 0x260b5
movq (%rsp), %rax
movq 0x10(%rax), %rdx
movq (%rcx), %rax
cmpq (%rax), %rdx
jne 0x260a1
movq 0x8(%rax), %rax
movq 0x28(%rax), %rsi
movq (%rsi), %rax
leaq 0x128(%rsp), %r15
movq %r15, %rdi
callq *0x10(%rax)
leaq 0xe8(%rsp), %rbp
movq %rbp, %rdi
leaq 0x9561(%rip), %rsi      # 0x2f561
movq %r15, %rdx
callq 0xc30e
leaq 0xc0(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
leaq 0x9587(%rip), %rdx      # 0x2f5a4
callq 0xbe83
movq 0x60(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rdx
movl $0xb8, %eax
addq %rax, %rdx
leaq 0x40(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
callq 0xc1ca
leaq 0x20(%rsp), %r15
movq %r15, %rdi
movq %r13, %rsi
leaq 0x77e9(%rip), %rdx      # 0x2d841
callq 0xbe83
movq %r12, %rdi
movq %r15, %rsi
callq 0x7950
movq %r15, %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
leaq 0xc0(%rsp), %rdi
callq 0x79b8
leaq 0xe8(%rsp), %rdi
callq 0x79b8
leaq 0x128(%rsp), %rdi
callq 0x79b8
leaq 0x20(%rsp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x26e32
jmp 0x25faa
movq %r14, %rdi
callq 0x13b1e
cmpq %rax, (%rax)
je 0x261b7
movq %r14, %rdi
callq 0x13b1e
movq %rax, %r15
movq (%r15), %r15
movq %r14, %rdi
callq 0x13b1e
cmpq %rax, %r15
je 0x261b7
movq (%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x10(%r15), %rax
cmpq (%rax), %rcx
jne 0x260d1
movq 0x8(%rax), %rax
movq 0x28(%rax), %rsi
movq (%rsi), %rax
leaq 0xe8(%rsp), %rbp
movq %rbp, %rdi
callq *0x10(%rax)
leaq 0xc0(%rsp), %r13
movq %r13, %rdi
leaq 0x944e(%rip), %rsi      # 0x2f56f
movq %rbp, %rdx
callq 0xc30e
leaq 0x40(%rsp), %rdi
movq %r13, %rsi
leaq 0x946c(%rip), %rdx      # 0x2f5a4
callq 0xbe83
movq 0x10(%r15), %rax
movq 0x8(%rax), %rdx
movl $0xb8, %eax
addq %rax, %rdx
leaq 0x20(%rsp), %rbp
movq %rbp, %rdi
leaq 0x40(%rsp), %rsi
callq 0xc1ca
movq %rbx, %rdi
movq %rbp, %rsi
leaq 0x76d5(%rip), %rdx      # 0x2d841
callq 0xbe83
movq %r12, %rdi
movq %rbx, %rsi
callq 0x7950
movq %rbx, %rdi
callq 0x79b8
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
leaq 0xc0(%rsp), %rdi
callq 0x79b8
leaq 0xe8(%rsp), %rdi
callq 0x79b8
jmp 0x260d1
movq %r14, %rdi
callq 0x1393c
movq 0x1cde2(%rip), %rdi     # 0x42fa8
leaq 0x8f94(%rip), %rsi      # 0x2f161
callq 0x7510
movq %rax, %rdi
movq %r12, %rsi
callq 0x74a0
movq %rax, %rdi
leaq 0x90b9(%rip), %rsi      # 0x2f2a0
callq 0x7510
movq %rax, %rdi
callq 0x7280
movq %r12, %rdi
callq 0x79b8
jmp 0x25e14
movq %r14, %rdi
callq 0x1393c
jmp 0x263f1
movq %r15, %rdi
leaq 0x936a(%rip), %rsi      # 0x2f582
callq 0x91b7
testb %al, %al
je 0x2642e
leaq 0x190(%rsp), %rdi
xorl %esi, %esi
callq 0x77c0
movl 0x190(%rsp), %eax
movl 0x248(%rsp), %ecx
movl %eax, %r13d
subl %ecx, %r13d
cmpl $0x3b, %r13d
pushq $0x3b
popq %rdx
cmovll %r13d, %edx
addl %ecx, %edx
negl %edx
leal (%rax,%rdx), %ebp
addl $0x3b, %ebp
movl %ebp, %eax
xorl %edx, %edx
pushq $0x3c
popq %rcx
divl %ecx
movl %eax, (%rsp)
xorl %edx, %edx
divl %ecx
movl %edx, %r15d
movq 0x1cd31(%rip), %rdi     # 0x42fa8
leaq 0x8ee3(%rip), %rsi      # 0x2f161
callq 0x7510
movq %rax, 0x148(%rsp)
movl %ebp, %eax
xorl %edx, %edx
movl $0xe10, %ecx            # imm = 0xE10
divl %ecx
leaq 0x128(%rsp), %rdi
movl %eax, %esi
callq 0x16dd9
leaq 0xe8(%rsp), %rbp
movq %rbp, %rdi
leaq 0x92d2(%rip), %rsi      # 0x2f589
leaq 0x128(%rsp), %rdx
callq 0xc30e
leaq 0xc0(%rsp), %rdi
movq %rbp, %rsi
leaq 0x92c6(%rip), %rdx      # 0x2f59c
callq 0xbe83
leaq 0x170(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
callq 0x16dd9
leaq 0x40(%rsp), %r15
movq %r15, %rdi
leaq 0xc0(%rsp), %rsi
movq %rbp, %rdx
callq 0xc221
leaq 0x20(%rsp), %rdi
movq %r15, %rsi
leaq 0x9291(%rip), %rdx      # 0x2f5a6
callq 0xbe83
imull $-0x3c, (%rsp), %eax
addl %eax, %r13d
leaq 0x150(%rsp), %r15
movq %r15, %rdi
movl %r13d, %esi
callq 0x16dd9
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
movq %r15, %rdx
callq 0xc221
movq %r12, %rdi
movq %rbx, %rsi
leaq 0x9265(%rip), %rdx      # 0x2f5b6
callq 0xbe83
movq 0x148(%rsp), %rdi
movq %r12, %rsi
callq 0x74a0
movq %rax, %rdi
leaq 0x8f30(%rip), %rsi      # 0x2f2a0
callq 0x7510
movq %rax, %rdi
callq 0x7280
movq %r12, %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x79b8
leaq 0x150(%rsp), %rdi
callq 0x79b8
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
leaq 0x170(%rsp), %rdi
callq 0x79b8
leaq 0xc0(%rsp), %rdi
callq 0x79b8
leaq 0xe8(%rsp), %rdi
callq 0x79b8
leaq 0x128(%rsp), %rdi
jmp 0x25507
movq %r12, %rdi
leaq 0x9110(%rip), %rsi      # 0x2f4fc
callq 0x7920
movq 0x1cbb0(%rip), %rdi     # 0x42fa8
leaq 0x8d62(%rip), %rsi      # 0x2f161
callq 0x7510
movq %rax, %rdi
movq %r12, %rsi
callq 0x74a0
movq %rax, %rdi
leaq 0x8e87(%rip), %rsi      # 0x2f2a0
callq 0x7510
movq %rax, %rdi
callq 0x7280
movq %r12, %rdi
jmp 0x25507
movq 0x1cb73(%rip), %rdi     # 0x42fa8
leaq 0x8d25(%rip), %rsi      # 0x2f161
callq 0x7510
movq %rax, %rdi
leaq 0x9177(%rip), %rsi      # 0x2f5c2
callq 0x7510
movq %rax, %r15
movq 0x110(%rsp), %r13
testq %r13, %r13
je 0x26493
leaq 0x318(%rsp), %rbp
movq %rbp, %rdi
leaq 0x9160(%rip), %rsi      # 0x2f5d2
leaq 0x108(%rsp), %rdx
callq 0xc154
movq %r12, %rdi
movq %rbp, %rsi
leaq 0x93e6(%rip), %rdx      # 0x2f872
callq 0xbe83
jmp 0x264a7
movq %r12, %rdi
leaq 0x9123(%rip), %rsi      # 0x2f5c0
leaq 0x1f(%rsp), %rdx
callq 0x8032
movq %r15, %rdi
movq %r12, %rsi
callq 0x74a0
movq %rax, %rdi
leaq 0x8de4(%rip), %rsi      # 0x2f2a0
callq 0x7510
movq %rax, %rdi
callq 0x7280
movq %r12, %rdi
callq 0x79b8
testq %r13, %r13
je 0x2550c
leaq 0x318(%rsp), %rdi
jmp 0x25507
leaq 0x8f01(%rip), %rsi      # 0x2f3ef
leaq 0x208(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0x8032
leaq 0x208(%rsp), %rdi
pushq $0x2
popq %rcx
xorl %esi, %esi
xorl %edx, %edx
callq 0xbe10
leaq 0x208(%rsp), %rdi
callq 0x79b8
movq %r14, %rdi
callq 0x137c2
movl $0xb8, %esi
movq %r14, %rdi
callq 0x7530
leaq 0xa8(%rsp), %rbx
movq (%rbx), %r13
leaq 0x338(%rsp), %r15
leaq 0x80(%rsp), %r12
pushq $0x1
popq %rbp
pushq $0x2
popq %r14
cmpq %rbx, %r13
je 0x265b7
movq %r15, %rdi
leaq 0x8ea1(%rip), %rsi      # 0x2f40b
movq %r12, %rdx
callq 0x8032
movq %r15, %rdi
xorl %esi, %esi
movl %ebp, %edx
movl %r14d, %ecx
callq 0xbe10
movq %r15, %rdi
callq 0x79b8
movq 0x10(%r13), %rdi
testq %rdi, %rdi
je 0x26598
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x18(%r13), %rdi
testq %rdi, %rdi
je 0x265a7
movq (%rdi), %rax
callq *0x8(%rax)
movq %rbx, %rdi
movq %r13, %rsi
callq 0x26e52
movq %rax, %r13
jmp 0x2655b
leaq 0xa8(%rsp), %rdi
callq 0x26e6c
movq 0x1d015(%rip), %rbx     # 0x435e0
leaq 0x1cffe(%rip), %r14     # 0x435d0
cmpq %r14, %rbx
je 0x265f3
movq 0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x265e6
movq (%rdi), %rax
callq *0x8(%rax)
movq %rbx, %rdi
callq 0x7390
movq %rax, %rbx
jmp 0x265d2
movq 0x1cfbe(%rip), %rbx     # 0x435b8
testq %rbx, %rbx
je 0x26607
movq %rbx, %rdi
callq 0x131c4
pushq $0x10
popq %rsi
movq %rbx, %rdi
callq 0x7530
movq 0x1cfa7(%rip), %rbx     # 0x435c0
testq %rbx, %rbx
je 0x26626
movq %rbx, %rdi
callq 0x131c4
pushq $0x10
popq %rsi
movq %rbx, %rdi
callq 0x7530
movq 0x1d048(%rip), %rbx     # 0x43680
testq %rbx, %rbx
je 0x26645
movq %rbx, %rdi
callq 0x12958
pushq $0x18
popq %rsi
movq %rbx, %rdi
callq 0x7530
leaq 0x8dc2(%rip), %rsi      # 0x2f419
leaq 0x1c8(%rsp), %rdi
leaq 0x258(%rsp), %rdx
callq 0x8032
xorl %ebx, %ebx
leaq 0x1c8(%rsp), %rdi
pushq $0x1
popq %rdx
pushq $0x2
popq %rcx
xorl %esi, %esi
callq 0xbe10
leaq 0x1c8(%rsp), %rdi
callq 0x79b8
movq 0x1c911(%rip), %rdi     # 0x42fa8
callq 0x7380
movl %ebx, %eax
addq $0x658, %rsp            # imm = 0x658
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x26c40
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26775
jmp 0x26c40
movq %rdx, %r14
movq %rax, %rbx
jmp 0x267c0
movq %rdx, %r14
movq %rax, %rbx
jmp 0x267cd
movq %rdx, %r14
movq %rax, %rbx
jmp 0x267da
movq %rdx, %r14
movq %rax, %rbx
jmp 0x267e7
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26795
movq %rdx, %r14
movq %rax, %rbx
jmp 0x2679f
movq %rdx, %r14
movq %rax, %rbx
jmp 0x267ac
movq %rdx, %r14
movq %rax, %rbx
jmp 0x267b6
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26823
movq %rdx, %r14
movq %rax, %rbx
jmp 0x2682d
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26837
movq %rdx, %r14
movq %rax, %rbx
jmp 0x2680c
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26816
jmp 0x26bdd
movq %rdx, %r14
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x79b8
testq %r13, %r13
je 0x26c46
leaq 0x318(%rsp), %rdi
jmp 0x26beb
movq %rdx, %r14
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x79b8
leaq 0x60(%rsp), %rdi
callq 0x79b8
leaq 0x150(%rsp), %rdi
callq 0x79b8
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
leaq 0x170(%rsp), %rdi
callq 0x79b8
leaq 0xc0(%rsp), %rdi
callq 0x79b8
leaq 0xe8(%rsp), %rdi
callq 0x79b8
leaq 0x128(%rsp), %rdi
jmp 0x26beb
jmp 0x26c40
movq %rdx, %r14
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x79b8
leaq 0x60(%rsp), %rdi
callq 0x79b8
leaq 0xe8(%rsp), %rdi
callq 0x79b8
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
leaq 0xc0(%rsp), %rdi
jmp 0x26beb
jmp 0x268ba
jmp 0x26c40
jmp 0x26c40
jmp 0x268ba
jmp 0x2697f
jmp 0x26bdd
jmp 0x26bdd
jmp 0x26bdd
jmp 0x2697f
jmp 0x26bdd
jmp 0x26884
jmp 0x2688c
jmp 0x26c40
jmp 0x268a0
jmp 0x2688c
jmp 0x26bdd
jmp 0x26884
movq %rdx, %r14
movq %rax, %rbx
jmp 0x268b0
movq %rdx, %r14
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x79b8
jmp 0x268a6
jmp 0x268a0
movq %rdx, %r14
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
jmp 0x26bb6
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26992
jmp 0x26c40
movq %rdx, %r14
movq %rax, %rbx
jmp 0x2695b
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26934
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26968
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26941
jmp 0x26bdd
movq %rdx, %r14
movq %rax, %rbx
jmp 0x2694e
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26915
movq %rdx, %r14
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
jmp 0x26927
movq %rdx, %r14
movq %rax, %rbx
leaq 0x190(%rsp), %rdi
callq 0x79b8
leaq 0xc0(%rsp), %rdi
callq 0x79b8
leaq 0xe8(%rsp), %rdi
callq 0x79b8
leaq 0x128(%rsp), %rdi
callq 0x79b8
leaq 0x170(%rsp), %rdi
callq 0x79b8
leaq 0x150(%rsp), %rdi
jmp 0x26bb6
jmp 0x26bdd
jmp 0x26bdd
movq %rdx, %r14
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x79b8
leaq 0x60(%rsp), %rdi
jmp 0x26beb
movq %rdx, %r14
movq %rax, %rbx
leaq 0x208(%rsp), %rdi
jmp 0x26c7c
jmp 0x26c8f
movq %rax, %rbx
leaq 0x1c8(%rsp), %rdi
jmp 0x26ae0
movq %rdx, %r14
movq %rax, %rbx
leaq 0x228(%rsp), %rdi
jmp 0x26c7c
jmp 0x26ae7
jmp 0x26c8f
movq %rax, %rbx
movl $0xb8, %esi
jmp 0x269f1
movq %rax, %rbx
pushq $0x18
popq %rsi
movq %r14, %rdi
callq 0x7530
jmp 0x26aea
movq %rdx, %r14
movq %rax, %rbx
leaq 0x258(%rsp), %rdi
callq 0x79b8
jmp 0x26a19
movq %rdx, %r14
movq %rax, %rbx
cmpl $0x1, %r14d
jne 0x26aea
movq %rbx, %rdi
callq 0x7220
movq %rax, %rbx
leaq 0x891c(%rip), %rsi      # 0x2f351
leaq 0x258(%rsp), %rdi
leaq 0x3d8(%rsp), %rdx
callq 0x8032
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
leaq 0x2d8(%rsp), %rdi
leaq 0x258(%rsp), %rsi
movq %rax, %rdx
callq 0xbe83
leaq 0x2d8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x3
popq %rdx
pushq $0x2
popq %rcx
callq 0xf802
movl %eax, %ebx
leaq 0x2d8(%rsp), %rdi
callq 0x79b8
leaq 0x258(%rsp), %rdi
callq 0x79b8
callq 0x77f0
jmp 0x2669c
movq %rax, %rbx
leaq 0x2d8(%rsp), %rdi
callq 0x79b8
jmp 0x26abc
movq %rax, %rbx
leaq 0x258(%rsp), %rdi
callq 0x79b8
jmp 0x26ace
movq %rax, %rbx
callq 0x77f0
jmp 0x26aea
movq %rax, %rbx
leaq 0x2f8(%rsp), %rdi
callq 0x79b8
jmp 0x26aea
movq %rax, %rbx
movq %rbx, %rdi
callq 0x7860
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26b73
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26bae
jmp 0x26bdd
jmp 0x26bdd
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26b59
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26b97
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26b66
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26ba1
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26b4f
movq %rdx, %r14
movq %rax, %rbx
jmp 0x26b8d
movq %rdx, %r14
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
leaq 0xc0(%rsp), %rdi
callq 0x79b8
leaq 0xe8(%rsp), %rdi
callq 0x79b8
leaq 0x128(%rsp), %rdi
jmp 0x26bb6
movq %rdx, %r14
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x79b8
leaq 0x20(%rsp), %rdi
callq 0x79b8
leaq 0x40(%rsp), %rdi
callq 0x79b8
leaq 0xc0(%rsp), %rdi
callq 0x79b8
leaq 0xe8(%rsp), %rdi
callq 0x79b8
jmp 0x26be3
jmp 0x26bdd
jmp 0x26c8f
jmp 0x26c2e
movq %rdx, %r14
movq %rax, %rbx
leaq 0x3b8(%rsp), %rdi
jmp 0x26c27
jmp 0x26c8f
jmp 0x26bdd
movq %rdx, %r14
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x79b8
jmp 0x26c46
movq %rdx, %r14
movq %rax, %rbx
leaq 0x358(%rsp), %rdi
jmp 0x26c7c
jmp 0x26c8f
movq %rdx, %r14
movq %rax, %rbx
leaq 0x398(%rsp), %rdi
callq 0x79b8
jmp 0x26c22
movq %rdx, %r14
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x79b8
jmp 0x26c34
movq %rdx, %r14
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
jmp 0x26c7c
jmp 0x26c8f
movq %rdx, %r14
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
jmp 0x26c7c
jmp 0x26c8f
movq %rdx, %r14
movq %rax, %rbx
leaq 0x338(%rsp), %rdi
jmp 0x26c7c
jmp 0x26c8f
jmp 0x26c8f
jmp 0x26c8f
jmp 0x26c8f
jmp 0x26c8f
jmp 0x26c8f
movq %rdx, %r14
movq %rax, %rbx
leaq 0x378(%rsp), %rdi
callq 0x79b8
jmp 0x26c95
jmp 0x26c8f
jmp 0x26c8f
jmp 0x26c8f
jmp 0x26c8f
jmp 0x26c8f
jmp 0x26c8f
movq %rdx, %r14
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x26e6c
cmpl $0x2, %r14d
jne 0x26aea
movq %rbx, %rdi
callq 0x7220
movb $0x0, 0x1c8f5(%rip)     # 0x435b0
movq (%rax), %rcx
movq %rax, %rdi
callq *0x10(%rcx)
leaq 0x1e8(%rsp), %rdi
leaq 0x258(%rsp), %rdx
movq %rax, %rsi
callq 0x8032
leaq 0x1e8(%rsp), %rdi
pushq $0x3
popq %rdx
pushq $0x2
popq %rcx
xorl %esi, %esi
callq 0xbe10
leaq 0x1e8(%rsp), %rdi
callq 0x79b8
callq 0x77f0
jmp 0x265c4
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
callq 0x79b8
jmp 0x26d1d
movq %rax, %rbx
callq 0x77f0
jmp 0x26aea
movq %rax, %rdi
callq 0x8f59
nop