// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Utils/CGI.cpp
// Function: CGI::CGI(Request const&, ConfigContext const&, ServerSocket const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
CGI::CGI(const Request& request, const ConfigContext& config, const ServerSocket& socket, const std::string& realPath)
	: m_realPath(realPath)
{
	std::ostringstream	convert;
	int					code;
	Header				*auth_type = NULL;
	Header				*content_type = NULL;
	std::string			extension;

	if ((code = ParseURI(request, config)) != 0)
		throw CGI::CGIException("ParseURI failed.", code);
	for (Request::HeadersVector::const_iterator it = request._headers.begin(); it != request._headers.end(); it++)
	{
		if ((*it)->getType() == AuthorizationHeader().getType())
			auth_type = *it;
		else if ((*it)->getType() == ContentTypeHeader().getType())
			content_type = *it;
	}
	std::string document_root = ft::simplify_path(config.getParam("root").front(), false, 0);
	if (ft::contains(m_env_Script_Name, '.'))
		extension = m_env_Script_Name.substr(m_env_Script_Name.find('.'));
	if (!extension.empty() && config.getCGIExtensions().find(extension) != config.getCGIExtensions().end())
	{
		m_args.push_back(config.getCGIExtensions().find(extension)->second); // c'est le chemin vers l'exécutable cgi
		m_args.push_back(document_root + m_env_Script_Name);
		if (extension == ".php")
			m_env.push_back("REDIRECT_STATUS=200");
	}
	else
	{
		m_args.push_back(document_root + m_env_Script_Name);
		if (!m_env_Path_Info.empty())
			m_args.push_back(document_root + m_env_Path_Info);
	}
	if (auth_type)
	{
		m_env.push_back("AUTH_TYPE="+auth_type->getValue().substr(0, auth_type->getValue().find(' ')));
		m_env.push_back("REMOTE_IDENT="+auth_type->getValue().substr(auth_type->getValue().find(' ')+1));
		m_env.push_back("REMOTE_USER="+auth_type->getValue().substr(auth_type->getValue().find(' ')+1));
	}
	if (request._method->requestHasBody() && !request._body.empty())
	{
		convert << request._body.size();
		m_env.push_back("CONTENT_LENGTH="+convert.str());
		if (content_type)
			m_env.push_back("CONTENT_TYPE="+content_type->getValue());
		else
			m_env.push_back("CONTENT_TYPE=US-ASCII");
	}
	m_env.push_back("GATEWAY_INTERFACE=CGI/1.1");
	if (m_args[0].find("ubuntu_cgi_tester") != std::string::npos)
		m_env.push_back("PATH_INFO="+request._url._path);
	else if (!m_env_Path_Info.empty())
		m_env.push_back("PATH_INFO="+m_env_Path_Info);
	if (document_root.find("..") != std::string::npos)
	{
		chdir(document_root.substr(0, document_root.find_last_of('/')).c_str());
		document_root = ft::get_cwd();
		chdir(g_webserv.cwd.c_str());
	}
	m_env.push_back("PATH_TRANSLATED=" + document_root + m_env_Script_Name);
	if (!request._url._query.empty())
		m_env.push_back("QUERY_STRING="+request._url._query);
	m_env.push_back("REMOTE_ADDR="+socket.getIPAddress());
	m_env.push_back("REQUEST_METHOD="+request._method->getType());
	m_env.push_back("REQUEST_URI="+request._url._path);
	m_env.push_back("SCRIPT_NAME="+m_env_Script_Name);
	m_env.push_back("SERVER_NAME="+config.getNames().front());
	m_env.push_back("SERVER_PORT="+socket.getServerPort_Str());
	m_env.push_back("SERVER_PROTOCOL=HTTP/1.1");
	m_env.push_back("SERVER_SOFTWARE=Webserv");
	add_http_headers(request._headers);
	convert.str("");
	convert << socket.GetSocket();
	m_tmpfilename = "/tmp/webserv_" + convert.str() + "-";
	convert.str("");
	struct timeval	tv;
	gettimeofday(&tv, NULL);
	convert << tv.tv_usec;
	m_tmpfilename += convert.str() + ".tmp";
	this->execute(request._body);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x288, %rsp            # imm = 0x288
movq %rdi, %r15
leaq 0x10(%rdi), %rax
movq %rax, (%rdi)
andq $0x0, 0x8(%rdi)
xorl %eax, %eax
movb %al, 0x10(%rdi)
addq $0x30, %rdi
movq %rdi, 0x20(%r15)
andq $0x0, 0x28(%r15)
movb %al, 0x30(%r15)
leaq 0x50(%r15), %rdi
movq %rdi, 0x40(%r15)
andq $0x0, 0x48(%r15)
movb %al, 0x50(%r15)
leaq 0x70(%r15), %rdi
movq %rdi, 0x60(%r15)
andq $0x0, 0x68(%r15)
movq %rcx, 0x90(%rsp)
movq %rdx, 0x78(%rsp)
movb %al, 0x70(%r15)
leaq 0x90(%r15), %rcx
movq %rcx, 0x80(%r15)
andq $0x0, 0x88(%r15)
movq %rsi, 0x28(%rsp)
leaq 0x20(%r15), %r12
movb %al, 0x90(%r15)
leaq 0xb0(%r15), %rcx
movq %rcx, 0xa0(%r15)
andq $0x0, 0xa8(%r15)
leaq 0x40(%r15), %r13
leaq 0x60(%r15), %rcx
movq %rcx, 0x88(%rsp)
movb %al, 0xb0(%r15)
leaq 0xc0(%r15), %rbx
movq %rbx, %rdi
movq %r8, %rsi
callq 0x7690
leaq 0xe0(%r15), %rax
movq %rax, 0x70(%rsp)
leaq 0xf8(%r15), %rax
movq %rax, 0x80(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x100(%r15)
movups %xmm0, 0xf0(%r15)
movups %xmm0, 0xe0(%r15)
leaq 0x110(%rsp), %rdi
callq 0x7670
movq %rbx, 0x68(%rsp)
movq %r13, 0x50(%rsp)
movq %r12, 0x58(%rsp)
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq %r15, 0x60(%rsp)
movq %r15, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movq 0x78(%rsp), %rdx
callq 0x10b5c
leaq 0x140(%rbx), %rax
movq %rax, 0xc8(%rsp)
movq 0x140(%rbx), %r13
xorl %r14d, %r14d
leaq 0x8(%rsp), %rbp
leaq 0xa0(%rsp), %r12
leaq 0x30(%rsp), %r15
movq $0x0, 0x98(%rsp)
cmpq 0x148(%rbx), %r13
je 0xffcc
movq (%r13), %rsi
movq (%rsi), %rax
movq %rbp, %rdi
callq *0x10(%rax)
movq %r12, %rdi
callq 0x830c
movq %r15, %rdi
movq %r12, %rsi
callq 0x8364
movq %rbp, %rdi
movq %r15, %rsi
callq 0xc2ad
movl %eax, %ebx
movq %r15, %rdi
callq 0x79b8
movq %r12, %rdi
callq 0x8344
movq %rbp, %rdi
callq 0x79b8
testb %bl, %bl
je 0xff69
movq (%r13), %r14
jmp 0xffbe
movq (%r13), %rsi
movq (%rsi), %rax
movq %rbp, %rdi
callq *0x10(%rax)
movq %r12, %rdi
callq 0x858c
movq %r15, %rdi
movq %r12, %rsi
callq 0x85e4
movq %rbp, %rdi
movq %r15, %rsi
callq 0xc2ad
movl %eax, %ebx
movq %r15, %rdi
callq 0x79b8
movq %r12, %rdi
callq 0x85c4
movq %rbp, %rdi
callq 0x79b8
testb %bl, %bl
je 0xffbe
movq (%r13), %rax
movq %rax, 0x98(%rsp)
movq 0x28(%rsp), %rbx
addq $0x8, %r13
jmp 0xff0d
leaq 0x1c855(%rip), %rsi     # 0x2c828
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq 0x78(%rsp), %rdi
movq 0x60(%rsp), %r12
movq 0x58(%rsp), %r13
movq 0x50(%rsp), %rbp
callq 0x2167a
movq (%rax), %rsi
addq $0x10, %rsi
leaq 0xa0(%rsp), %rdi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x17b31
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x79b8
movb $0x2e, (%rbx)
leaq 0x8(%rsp), %rsi
movq %rbp, %rdi
callq 0xc288
testb %al, %al
movq 0x80(%rsp), %rbx
je 0x10086
pushq $0x2e
popq %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x7650
leaq 0x8(%rsp), %rdi
pushq $-0x1
popq %rcx
movq %rbp, %rsi
movq %rax, %rdx
callq 0x7540
leaq 0xd0(%rsp), %rdi
leaq 0x8(%rsp), %rbx
movq %rbx, %rsi
callq 0x75f0
movq %rbx, %rdi
callq 0x79b8
movq 0x80(%rsp), %rbx
cmpq $0x0, 0xd8(%rsp)
je 0x10163
movq 0x78(%rsp), %rdi
callq 0x21648
leaq 0xd0(%rsp), %rsi
movq %rax, %rdi
callq 0xcdc8
movq %rax, %r15
movq 0x78(%rsp), %rdi
callq 0x21648
addq $0x8, %rax
cmpq %rax, %r15
je 0x10163
movq 0x78(%rsp), %rdi
callq 0x21648
leaq 0xd0(%rsp), %rsi
movq %rax, %rdi
callq 0xcdc8
addq $0x40, %rax
movq 0x70(%rsp), %rdi
movq %rax, %rsi
callq 0x11f5a
leaq 0x8(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
movq %rbp, %rdx
callq 0xc2d6
leaq 0x8(%rsp), %rsi
movq 0x70(%rsp), %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x1c924(%rip), %rsi     # 0x2ca4d
leaq 0xd0(%rsp), %rdi
callq 0x91b7
testb %al, %al
je 0x101cc
leaq 0x1c90d(%rip), %rsi     # 0x2ca52
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
jmp 0x101c2
leaq 0x8(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
movq %rbp, %rdx
callq 0xc2d6
leaq 0x8(%rsp), %rsi
movq 0x70(%rsp), %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
cmpq $0x0, 0x68(%r12)
je 0x101cc
leaq 0x8(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
movq 0x88(%rsp), %rdx
callq 0xc2d6
leaq 0x8(%rsp), %rsi
movq 0x70(%rsp), %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
testq %r14, %r14
je 0x10314
movq %r14, %rdi
callq 0x8964
movq %rax, %r15
movq %r14, %rdi
callq 0x8964
pushq $0x20
popq %rsi
movq %rax, %rdi
xorl %edx, %edx
callq 0x7650
leaq 0x30(%rsp), %rdi
movq %r15, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x7540
leaq 0x1c858(%rip), %rsi     # 0x2ca66
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xc30e
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
movq %r14, %rdi
callq 0x8964
movq %rax, %r15
movq %r14, %rdi
callq 0x8964
pushq $0x20
popq %rsi
movq %rax, %rdi
xorl %edx, %edx
callq 0x7650
leaq 0x1(%rax), %rdx
leaq 0x30(%rsp), %rdi
pushq $-0x1
popq %rcx
movq %r15, %rsi
callq 0x7540
leaq 0x1c7f8(%rip), %rsi     # 0x2ca71
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xc30e
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
movq %r14, %rdi
callq 0x8964
movq %rax, %r15
movq %r14, %rdi
callq 0x8964
pushq $0x20
popq %rsi
movq %rax, %rdi
xorl %edx, %edx
callq 0x7650
leaq 0x1(%rax), %rdx
leaq 0x30(%rsp), %rdi
pushq $-0x1
popq %rcx
movq %r15, %rsi
callq 0x7540
leaq 0x1c79b(%rip), %rsi     # 0x2ca7f
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xc30e
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
movq 0x28(%rsp), %rax
movq 0x28(%rax), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
testb %al, %al
je 0x103f8
movq 0x28(%rsp), %rax
movq 0x160(%rax), %rsi
testq %rsi, %rsi
je 0x103f8
leaq 0x110(%rsp), %rdi
callq 0x7370
leaq 0x118(%rsp), %rsi
leaq 0x30(%rsp), %rdi
callq 0x7780
leaq 0x1c726(%rip), %rsi     # 0x2ca8c
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xc30e
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
je 0x103cb
callq 0x8964
leaq 0x1c6ed(%rip), %rsi     # 0x2ca9c
leaq 0x8(%rsp), %rdi
movq %rax, %rdx
callq 0xc154
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
jmp 0x103ee
leaq 0x1c6d8(%rip), %rsi     # 0x2caaa
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x1c6c1(%rip), %rsi     # 0x2cac0
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
movq 0x70(%rsp), %rax
movq (%rax), %rdi
leaq 0x1c6a6(%rip), %rsi     # 0x2cada
xorl %edx, %edx
callq 0x7980
cmpq $-0x1, %rax
je 0x1046d
movq 0x28(%rsp), %rax
leaq 0xb8(%rax), %rdx
leaq 0x1c698(%rip), %rsi     # 0x2caec
leaq 0x8(%rsp), %rdi
callq 0xc154
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
jmp 0x1049b
cmpq $0x0, 0x68(%r12)
je 0x104a5
leaq 0x1c670(%rip), %rsi     # 0x2caec
leaq 0x8(%rsp), %rdi
movq 0x88(%rsp), %rdx
callq 0xc154
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x1ee64(%rip), %rsi     # 0x2f310
leaq 0xa0(%rsp), %rdi
xorl %edx, %edx
callq 0x7980
cmpq $-0x1, %rax
je 0x1053d
leaq 0xa0(%rsp), %rbx
pushq $0x2f
popq %rsi
pushq $-0x1
popq %rdx
movq %rbx, %rdi
callq 0x7970
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x7540
leaq 0x8(%rsp), %rbx
movq (%rbx), %rdi
callq 0x76f0
movq %rbx, %rdi
callq 0x79b8
leaq 0x8(%rsp), %rdi
callq 0x178dd
leaq 0xa0(%rsp), %rdi
leaq 0x8(%rsp), %rbx
movq %rbx, %rsi
callq 0x75f0
movq %rbx, %rdi
callq 0x79b8
leaq 0x33084(%rip), %rax     # 0x435b0
movq 0x48(%rax), %rdi
callq 0x76f0
movq 0x80(%rsp), %rbx
leaq 0x1c5b3(%rip), %rsi     # 0x2caf7
leaq 0x30(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0xc154
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %rbp, %rdx
callq 0xc1ca
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
movq 0x28(%rsp), %rax
cmpq $0x0, 0xe0(%rax)
je 0x105cc
movq 0x28(%rsp), %rax
leaq 0xd8(%rax), %rdx
leaq 0x1c55d(%rip), %rsi     # 0x2cb08
leaq 0x8(%rsp), %rdi
callq 0xc154
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0xf1b0
leaq 0x1c531(%rip), %rsi     # 0x2cb16
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xc30e
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
movq 0x28(%rsp), %rax
movq 0x28(%rax), %rsi
movq (%rsi), %rax
leaq 0x30(%rsp), %rdi
callq *0x10(%rax)
leaq 0x1c4f3(%rip), %rsi     # 0x2cb23
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xc30e
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
movq 0x28(%rsp), %rax
leaq 0xb8(%rax), %rdx
leaq 0x1c4c0(%rip), %rsi     # 0x2cb33
leaq 0x8(%rsp), %rdi
callq 0xc154
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x1c4a5(%rip), %rsi     # 0x2cb40
leaq 0x8(%rsp), %rdi
movq %rbp, %rdx
callq 0xc154
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
movq 0x78(%rsp), %rdi
callq 0x2165c
movq (%rax), %rdx
addq $0x10, %rdx
leaq 0x1c476(%rip), %rsi     # 0x2cb4d
leaq 0x8(%rsp), %rdi
callq 0xc154
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0xf19e
leaq 0x1c449(%rip), %rsi     # 0x2cb5a
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xc30e
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
leaq 0x1c41f(%rip), %rsi     # 0x2cb67
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x1c40b(%rip), %rsi     # 0x2cb80
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1227c
leaq 0x8(%rsp), %rdi
callq 0x79b8
movq %r12, %rdi
movq 0xc8(%rsp), %rsi
callq 0x10cac
leaq 0x1c59d(%rip), %rsi     # 0x2cd4f
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x118(%rsp), %r14
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x7720
leaq 0x8(%rsp), %rdi
callq 0x79b8
movq 0x90(%rsp), %rdi
callq 0xf7fe
leaq 0x110(%rsp), %rdi
movl %eax, %esi
callq 0x7840
leaq 0xf0(%rsp), %rdi
movq %r14, %rsi
callq 0x7780
leaq 0x1c385(%rip), %rsi     # 0x2cb98
leaq 0x30(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
callq 0xc30e
leaq 0x1c380(%rip), %rdx     # 0x2cbac
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xbe83
leaq 0x8(%rsp), %rbx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x75f0
movq %rbx, %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
leaq 0xf0(%rsp), %rdi
callq 0x79b8
leaq 0x1c4de(%rip), %rsi     # 0x2cd4f
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x7720
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0xf0(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x77c0
movq 0x8(%rbx), %rsi
leaq 0x110(%rsp), %rdi
callq 0x74f0
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0x7780
movq 0x28(%rsp), %rbx
leaq 0x1c2d3(%rip), %rdx     # 0x2cba6
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xbe83
leaq 0x8(%rsp), %rsi
movq %r13, %rdi
callq 0x7950
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
addq $0x158, %rbx            # imm = 0x158
movq %r12, %rdi
movq %rbx, %rsi
callq 0x11232
leaq 0xa0(%rsp), %rdi
callq 0x79b8
leaq 0xd0(%rsp), %rdi
callq 0x79b8
leaq 0x110(%rsp), %rdi
callq 0x7140
addq $0x288, %rsp            # imm = 0x288
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a2d
jmp 0x10a3c
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a2d
jmp 0x10a3c
jmp 0x10a2d
jmp 0x10a3c
jmp 0x10a2d
jmp 0x10a3c
jmp 0x10a7f
jmp 0x10a2d
jmp 0x10a3c
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0x79b8
jmp 0x109f9
movq %rax, %r14
leaq 0xf0(%rsp), %rdi
jmp 0x10a50
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a2d
jmp 0x10a3c
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a48
jmp 0x10a7f
jmp 0x10a2d
jmp 0x10a3c
jmp 0x10a7f
jmp 0x10a2d
jmp 0x10a3c
jmp 0x10a7f
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x10a3f
movq %rax, %r14
leaq 0x30(%rsp), %rdi
jmp 0x10a50
jmp 0x10a7f
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x10a82
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10ac3
jmp 0x10ac3
movq %rax, %r14
jmp 0x10af4
movq %rax, %r14
jmp 0x10b13
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10a7f
jmp 0x10aa2
movq %rax, %r14
leaq 0xa0(%rsp), %rdi
jmp 0x10abc
jmp 0x10aa2
jmp 0x10ac3
movq %rax, %r14
leaq 0xa0(%rsp), %rdi
callq 0x85c4
jmp 0x10ab7
movq %rax, %r14
jmp 0x10ab7
movq %rax, %r14
leaq 0xa0(%rsp), %rdi
callq 0x8344
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x10ac6
movq %rax, %r14
movq 0x60(%rsp), %r15
movq 0x58(%rsp), %r12
movq 0x50(%rsp), %r13
movq 0x68(%rsp), %rbx
leaq 0xd0(%rsp), %rdi
callq 0x79b8
leaq 0x110(%rsp), %rdi
callq 0x7140
movq 0x80(%rsp), %rdi
callq 0x11f86
movq 0x70(%rsp), %rdi
callq 0x11f86
movq %rbx, %rdi
callq 0x79b8
leaq 0x80(%r15), %rbx
leaq 0xa0(%r15), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x79b8
movq 0x88(%rsp), %rdi
callq 0x79b8
movq %r13, %rdi
callq 0x79b8
movq %r12, %rdi
callq 0x79b8
movq %r15, %rdi
callq 0x79b8
movq %r14, %rdi
callq 0x7860
nop