LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Utils/Utils.cpp
// Function: ft::split(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, char const&)
std::list<std::string> ft::split(const std::string& str, const char &needle)
{
	std::list<std::string> ret;

	size_t i = str.find_first_not_of(needle, 0);
	while (i < str.size())
	{
		size_t word_start = i;
		i = str.find_first_of(needle, i);
		size_t word_end = i;
		i = str.find_first_not_of(needle, i);
		ret.push_back(str.substr(word_start, word_end - word_start));
	}
	return ret;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, 0x8(%rdi)
movq %rdi, (%rdi)
movq %rdi, (%rsp)
andq $0x0, 0x10(%rdi)
movsbl (%rdx), %esi
movq %r15, %rdi
xorl %edx, %edx
callq 0x74c0
movq %rax, %r13
leaq 0x8(%rsp), %r12
cmpq 0x8(%r15), %r13
jae 0x17064
movsbl (%r14), %esi
movq %r15, %rdi
movq %r13, %rdx
callq 0x7650
movq %rax, %rbx
movsbl (%r14), %esi
movq %r15, %rdi
movq %rax, %rdx
callq 0x74c0
movq %rax, %rbp
subq %r13, %rbx
movq %r12, %rdi
movq %r15, %rsi
movq %r13, %rdx
movq %rbx, %rcx
callq 0x7540
movq (%rsp), %rdi
movq %r12, %rsi
callq 0xbe78
movq %r12, %rdi
callq 0x79b8
movq %rbp, %r13
jmp 0x1700d
movq (%rsp), %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x17089
movq %rax, %r14
movq (%rsp), %rdi
callq 0x8f64
movq %r14, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Utils/Utils.cpp
// Function: ft::is_directory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool ft::is_directory(std::string realPath)
{
	struct stat st;
	if (realPath[0] != '/')
		realPath = ft::get_cwd() + "/" + realPath;
	if (lstat(realPath.c_str(), &st) < 0)
		return false;
	return S_ISDIR(st.st_mode);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xf8, %rsp
movq %rdi, %rbx
movq (%rdi), %rdi
cmpb $0x2f, (%rdi)
je 0x1788a
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x178dd
leaq 0x1520c(%rip), %rdx     # 0x2ca48
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0xbe83
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %rbx, %rdx
callq 0xc1ca
leaq 0x48(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x75f0
movq %r14, %rdi
callq 0x79b8
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x28(%rsp), %rdi
callq 0x79b8
movq (%rbx), %rdi
leaq 0x68(%rsp), %rbx
movq %rbx, %rsi
callq 0x7940
testl %eax, %eax
setns %cl
movl 0x18(%rbx), %eax
andl $0xf000, %eax           # imm = 0xF000
cmpl $0x4000, %eax           # imm = 0x4000
sete %al
andb %cl, %al
addq $0xf8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x178cb
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Utils/Utils.cpp
// Function: ft::get_cwd[abi:cxx11]()
std::string ft::get_cwd()
{
	std::string cwd;
	char *buf = getcwd(NULL, 0);
	if (buf == NULL)
		return "";
	cwd += buf;
	free(buf);
	return cwd;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq %rdi, %rbx
leaq 0x20(%rsp), %r15
movq %r15, -0x10(%r15)
andq $0x0, -0x8(%r15)
movb $0x0, (%r15)
xorl %edi, %edi
xorl %esi, %esi
callq 0x72d0
testq %rax, %rax
je 0x17940
movq %rax, %r14
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x7920
movq %r14, %rdi
callq 0x75d0
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq 0x10(%rsp), %rcx
cmpq %r15, %rcx
je 0x17956
movq %rcx, (%rbx)
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x1795d
leaq 0x15408(%rip), %rsi     # 0x2cd4f
leaq 0xf(%rsp), %rdx
movq %rbx, %rdi
callq 0x8032
jmp 0x17976
movups (%r15), %xmm0
movups %xmm0, (%rax)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rbx)
movq %r15, 0x10(%rsp)
andq $0x0, 0x18(%rsp)
movb $0x0, 0x20(%rsp)
leaq 0x10(%rsp), %rdi
callq 0x79b8
movq %rbx, %rax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x1798f
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Utils/Utils.cpp
// Function: ft::is_regular_file(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool ft::is_regular_file(std::string realPath)
{
	struct stat st;
	if (realPath[0] != '/')
		realPath = ft::get_cwd() + "/" + realPath;
	if (lstat(realPath.c_str(), &st) < 0)
		return false;
	return S_ISREG(st.st_mode);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xf8, %rsp
movq %rdi, %rbx
movq (%rdi), %rdi
cmpb $0x2f, (%rdi)
je 0x17a1b
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x178dd
leaq 0x1507b(%rip), %rdx     # 0x2ca48
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0xbe83
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %rbx, %rdx
callq 0xc1ca
leaq 0x48(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x75f0
movq %r14, %rdi
callq 0x79b8
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x28(%rsp), %rdi
callq 0x79b8
movq (%rbx), %rdi
leaq 0x68(%rsp), %rbx
movq %rbx, %rsi
callq 0x7940
testl %eax, %eax
setns %cl
movl 0x18(%rbx), %eax
andl $0xf000, %eax           # imm = 0xF000
cmpl $0x8000, %eax           # imm = 0x8000
sete %al
andb %cl, %al
addq $0xf8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x17a5c
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Utils/Utils.cpp
// Function: ft::is_executable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool ft::is_executable(std::string realPath)
{
	struct stat st;
	if (realPath[0] != '/')
		realPath = ft::get_cwd() + "/" + realPath;
	if (lstat(realPath.c_str(), &st) < 0)
		return false;
	return st.st_mode & S_IXUSR;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xf8, %rsp
movq %rdi, %rbx
movq (%rdi), %rdi
cmpb $0x2f, (%rdi)
je 0x17ae5
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x178dd
leaq 0x14fb1(%rip), %rdx     # 0x2ca48
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0xbe83
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %rbx, %rdx
callq 0xc1ca
leaq 0x48(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x75f0
movq %r14, %rdi
callq 0x79b8
leaq 0x8(%rsp), %rdi
callq 0x79b8
leaq 0x28(%rsp), %rdi
callq 0x79b8
movq (%rbx), %rdi
leaq 0x68(%rsp), %rbx
movq %rbx, %rsi
callq 0x7940
testl %eax, %eax
setns %cl
movl 0x18(%rbx), %eax
andl $0x40, %eax
shrl $0x6, %eax
andb %cl, %al
addq $0xf8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x17b1f
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Utils/Utils.cpp
// Function: ft::strncpy(char*, char const*, unsigned long)
char	*ft::strncpy(char *dest, const char *src, size_t n)
{
	size_t i;

	for (i = 0; i < n && src[i] != '\0'; i++)
		dest[i] = src[i];
	for ( ; i < n; i++)
		dest[i] = '\0';
	return (dest);
}

// Assembly:
movq %rdi, %rax
xorl %ecx, %ecx
cmpq %rcx, %rdx
je 0x17dd4
movb (%rsi,%rcx), %dil
testb %dil, %dil
je 0x17de0
movb %dil, (%rax,%rcx)
incq %rcx
jmp 0x17dbd
movq %rdx, %rcx
jmp 0x17de0
movb $0x0, (%rax,%rcx)
incq %rcx
cmpq %rdx, %rcx
jb 0x17dd9
retq
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Utils/Utils.cpp
// Function: ft::get_extension(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
std::string ft::get_extension(std::string path)
{
	if (path[path.size() - 1] == '/')
		path.erase(--path.end());

	if (!ft::contains(path, '.'))
		return "";

	if (!ft::contains(path, '/'))
	{
		if (path.rfind('.') == 0)
			return "";
		return path.substr(path.rfind('.'));
	}

	if (!ft::contains(path.substr(path.rfind('/') + 1), '.'))
		return "";

	if (path.substr(path.rfind('/') + 1).rfind('.') == 0)
		return "";

	return path.substr(path.rfind('/') + 1 + (path.rfind('.') - path.rfind('/') - 1));
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %rax
movq 0x8(%rsi), %rcx
cmpb $0x2f, -0x1(%rax,%rcx)
jne 0x17e3c
leaq (%rax,%rcx), %rsi
decq %rsi
movq %r14, %rdi
callq 0x7600
leaq 0x8(%rsp), %rsi
movb $0x2e, (%rsi)
movq %r14, %rdi
callq 0xc288
testb %al, %al
je 0x17f7f
leaq 0x8(%rsp), %rsi
movb $0x2f, (%rsi)
movq %r14, %rdi
callq 0xc288
testb %al, %al
je 0x17f47
pushq $0x2f
popq %rsi
pushq $-0x1
popq %r15
movq %r14, %rdi
movq %r15, %rdx
callq 0x7970
leaq 0x1(%rax), %rdx
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rcx
callq 0x7540
leaq 0x7(%rsp), %rsi
movb $0x2e, (%rsi)
movq %r12, %rdi
callq 0xc288
movl %eax, %ebp
leaq 0x8(%rsp), %rdi
callq 0x79b8
testb %bpl, %bpl
je 0x17f7f
pushq $0x2f
popq %rsi
pushq $-0x1
popq %r15
movq %r14, %rdi
movq %r15, %rdx
callq 0x7970
leaq 0x1(%rax), %rdx
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rcx
callq 0x7540
pushq $0x2e
popq %rsi
movq %r12, %rdi
movq %r15, %rdx
callq 0x7970
movq %rax, %r15
movq %r12, %rdi
callq 0x79b8
testq %r15, %r15
je 0x17f7f
pushq $0x2f
popq %rbp
pushq $-0x1
popq %r15
movq %r14, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x7970
movq %rax, %r12
pushq $0x2e
popq %rsi
movq %r14, %rdi
movq %r15, %rdx
callq 0x7970
movq %rax, %r13
movq %r14, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x7970
addq %r12, %r13
subq %rax, %r13
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
jmp 0x17f75
pushq $0x2e
popq %rsi
pushq $-0x1
popq %rdx
movq %r14, %rdi
callq 0x7970
testq %rax, %rax
je 0x17f7f
pushq $0x2e
popq %rsi
pushq $-0x1
popq %r15
movq %r14, %rdi
movq %r15, %rdx
callq 0x7970
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
movq %r15, %rcx
callq 0x7540
jmp 0x17f93
leaq 0x14dc9(%rip), %rsi     # 0x2cd4f
leaq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x8032
movq %rbx, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Utils/Webserv.cpp
// Function: s_webserv::s_webserv()
s_webserv::s_webserv()
	: run(true), debug(DEBUG), file_formatname(new HashTable(256)), languages(new HashTable(256)), cwd(ft::get_cwd()), workers_amount(0), max_connections(100), compression_deflate(false), compression_gzip(false), compression_level(6)
{
	init_factories();
	parse_types_file(file_formatname, (cwd+"/config/mime.types").c_str());
	parse_types_file(file_formatname, "/etc/mime.types");
	init_languages();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movw $0x1, (%rdi)
pushq $0x10
popq %rdi
callq 0x7520
movq %rax, %r14
movq %rax, %rdi
movl $0x100, %esi            # imm = 0x100
callq 0x13120
movq %r14, 0x8(%rbx)
pushq $0x10
popq %rdi
callq 0x7520
movq %rax, %r14
movq %rax, %rdi
movl $0x100, %esi            # imm = 0x100
callq 0x13120
movq %r14, 0x10(%rbx)
andl $0x0, 0x20(%rbx)
andq $0x0, 0x28(%rbx)
leaq 0x20(%rbx), %rax
movq %rax, 0x30(%rbx)
movq %rax, 0x38(%rbx)
andq $0x0, 0x40(%rbx)
leaq 0x48(%rbx), %r14
movq %r14, %rdi
callq 0x178dd
leaq 0x2ac05(%rip), %rax     # 0x42c58
movq %rax, 0x68(%rbx)
leaq 0x70(%rbx), %rax
movq %rax, 0x78(%rbx)
movq %rax, 0x70(%rbx)
andq $0x0, 0x80(%rbx)
leaq 0x2ac16(%rip), %rax     # 0x42c88
movq %rax, 0x88(%rbx)
leaq 0x90(%rbx), %rax
movq %rax, 0x98(%rbx)
movq %rax, 0x90(%rbx)
andq $0x0, 0xa0(%rbx)
leaq 0xa8(%rbx), %r15
movq %r15, 0xb0(%rbx)
movq %r15, 0xa8(%rbx)
andq $0x0, 0xb8(%rbx)
movabsq $0x6400000000, %rax     # imm = 0x6400000000
movq %rax, 0xc0(%rbx)
xorl %eax, %eax
movb %al, 0xc8(%rbx)
movb %al, 0xc9(%rbx)
movl $0x6, 0xcc(%rbx)
movq %rbx, %rdi
callq 0x181a4
movq 0x8(%rbx), %r12
leaq 0x156cb(%rip), %rdx     # 0x2d7ba
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0xc1e9
movq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x15fbc
leaq 0x8(%rsp), %rdi
callq 0x79b8
movq 0x8(%rbx), %rdi
leaq 0x156af(%rip), %rsi     # 0x2d7cd
callq 0x15fbc
movq %rbx, %rdi
callq 0x1853e
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r12
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x18165
jmp 0x18162
movq %rax, %r12
jmp 0x18190
jmp 0x18152
movq %rax, %r12
pushq $0x10
popq %rsi
movq %r14, %rdi
callq 0x7530
jmp 0x1819c
movq %rax, %r12
leaq 0x68(%rbx), %r13
leaq 0x88(%rbx), %rbp
movq %r15, %rdi
callq 0x1ec7e
movq %rbp, %rdi
callq 0x1eb54
movq %r13, %rdi
callq 0x1eb9a
movq %r14, %rdi
callq 0x79b8
addq $0x18, %rbx
movq %rbx, %rdi
callq 0x1ecb4
movq %r12, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/incs/Utils/Factory.hpp
// Function: Factory<Header*>::~Factory()
virtual ~Factory()
		{
			if (_elements.empty())
				return;
			for (typename std::list<value_type>::iterator it = _elements.begin(); it != _elements.end(); it++)
				delete *it;
		}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x24126(%rip), %rax     # 0x42c88
movq %rax, (%rdi)
movq 0x8(%rdi), %r14
addq $0x8, %rbx
cmpq %rbx, %r14
je 0x1eb8b
cmpq %rbx, %r14
je 0x1eb8b
movq 0x10(%r14), %rdi
testq %rdi, %rdi
je 0x1eb86
movq (%rdi), %rax
callq *0x8(%rax)
movq (%r14), %r14
jmp 0x1eb72
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x1ed62
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::operator=(ConfigContext const&)
ConfigContext& ConfigContext::operator=(const ConfigContext& other)
{
	_params = other._params;
	_error_pages = other._error_pages;
	_autoIndex = other._autoIndex;
	_directive_names = other._directive_names;
	_childs = other._childs;
	_names = other._names;
	_acceptedMethods = other._acceptedMethods;
	_cgi_exts = other._cgi_exts;
	_uploads_exts = other._uploads_exts;
	return *this;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
addq $0x20, %rsi
addq $0x20, %rdi
callq 0x2215c
leaq 0x68(%r14), %rsi
leaq 0x68(%rbx), %rdi
callq 0x225f0
movb 0x110(%r14), %al
movb %al, 0x110(%rbx)
leaq 0x8(%r14), %rsi
leaq 0x8(%rbx), %rdi
callq 0x21da0
leaq 0x50(%r14), %rsi
leaq 0x50(%rbx), %rdi
callq 0x21dbc
movl $0x98, %edi
leaq (%r14,%rdi), %rsi
addq %rbx, %rdi
callq 0x21da0
movl $0xb0, %edi
leaq (%r14,%rdi), %rsi
addq %rbx, %rdi
callq 0x21dd8
movl $0xc8, %edi
leaq (%r14,%rdi), %rsi
addq %rbx, %rdi
callq 0x2293e
movl $0xf8, %edi
addq %rdi, %r14
addq %rbx, %rdi
movq %r14, %rsi
callq 0x21da0
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::handle_parent_and_directives(ConfigContext const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void ConfigContext::handle_parent_and_directives(const ConfigContext* parent, const std::string& name)
{
	if (parent != NULL)
	{
		_params = parent->_params;
		_error_pages = parent->_error_pages;
		_autoIndex = parent->_autoIndex;
		_acceptedMethods = parent->_acceptedMethods;
		_cgi_exts = parent->_cgi_exts;
		_uploads_exts = parent->_uploads_exts;
		_names.push_back(name);
	}
	else
	{
		// Directives réservées aux contexts server{}
		add_server_directives();
		for (std::list<IMethod*>::const_iterator it = g_webserv.methods.getRegistered().begin(); it != g_webserv.methods.getRegistered().end(); it++)
			_acceptedMethods.push_back(*it);
	}
	add_location_directives();
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
testq %rsi, %rsi
je 0x1fd48
movq %rdx, %r14
movq %rsi, %r15
addq $0x20, %rsi
leaq 0x20(%rbx), %rdi
callq 0x2215c
leaq 0x68(%r15), %rsi
leaq 0x68(%rbx), %rdi
callq 0x225f0
movb 0x110(%r15), %al
movb %al, 0x110(%rbx)
movl $0xb0, %edi
leaq (%r15,%rdi), %rsi
addq %rbx, %rdi
callq 0x21dd8
movl $0xc8, %edi
leaq (%r15,%rdi), %rsi
addq %rbx, %rdi
callq 0x2293e
movl $0xf8, %edi
addq %rdi, %r15
addq %rbx, %rdi
movq %r15, %rsi
callq 0x21da0
leaq 0x98(%rbx), %rdi
movq %r14, %rsi
callq 0x21eb0
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x213d4
movq %rbx, %rdi
callq 0x21318
leaq 0x23859(%rip), %r15     # 0x435b0
addq $0x70, %r15
leaq 0xb0(%rbx), %r14
movq %r15, %r12
movq (%r12), %r12
cmpq %r15, %r12
je 0x1fd35
leaq 0x10(%r12), %rsi
movq %r14, %rdi
callq 0x21ebc
jmp 0x1fd65
nop
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::find_closing_bracket(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned long) const
size_t ConfigContext::find_closing_bracket(const std::string& str, size_t start) const
{
	size_t nesting = 1;

	for (size_t i = start; i < str.size(); i++)
	{
		if (str[i] == '{')
			nesting++;
		if (str[i] == '}')
			nesting--;
		if (nesting == 0)
			return i;
	}
	return size_t(-1);
}

// Assembly:
movq (%rsi), %rcx
movq 0x8(%rsi), %rsi
pushq $0x1
popq %rdi
pushq $-0x1
popq %rax
cmpq %rsi, %rdx
jae 0x1fdba
movb (%rcx,%rdx), %r8b
xorl %r9d, %r9d
cmpb $0x7b, %r8b
sete %r9b
addq %r9, %rdi
xorl %r9d, %r9d
cmpb $0x7d, %r8b
sete %r9b
subq %r9, %rdi
je 0x1fdb7
incq %rdx
jmp 0x1fd8b
movq %rdx, %rax
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::parse_server_name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void ConfigContext::parse_server_name(const std::string& directive_value)
{
	for (size_t j = 0; j < directive_value.size();)
	{
		std::string name = directive_value.substr(j, directive_value.find_first_of(" \t\n", j) - j);
		j = directive_value.find_first_of(" \t\n", j);
		_names.push_back(name);

		// Si on est arrivé au dernier mot de la directive, on arrête
		if (j >= directive_value.size() || directive_value[j] == '\n')
			break;
		j = directive_value.find_first_not_of(" \t\n", j);
		if (j >= directive_value.size())
			break;
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %rbx
movq %rdi, %r14
addq $0x98, %r14
xorl %r13d, %r13d
leaq 0xda5e(%rip), %r15      # 0x2d83f
leaq 0x8(%rsp), %r12
cmpq 0x8(%rbx), %r13
jae 0x1fe64
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x72b0
subq %r13, %rax
movq %r12, %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq %rax, %rcx
callq 0x7540
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x72b0
movq %rax, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x21eb0
cmpq 0x8(%rbx), %r13
jae 0x1fe3a
movq (%rbx), %rax
cmpb $0xa, (%rax,%r13)
jne 0x1fe3e
xorl %ebp, %ebp
jmp 0x1fe57
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x7330
movq %rax, %r13
cmpq 0x8(%rbx), %rax
setb %bpl
movq %r12, %rdi
callq 0x79b8
testb %bpl, %bpl
jne 0x1fde6
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::parse_error_page(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void ConfigContext::parse_error_page(const std::string& directive_value)
{
	std::list<std::string> words = ft::split(directive_value, " \t\n");
	std::string page = words.back();

	for (std::list<std::string>::const_iterator it = words.begin(); it != --words.end(); it++)
	{
		if (!ft::is_integer<int>(*it))
			throw std::invalid_argument("Bad integer for error_page in config");
		int nb = ft::toInt(*it);

		if (page == "none")
		{
			if (_error_pages.find(nb) != _error_pages.end())
				_error_pages.erase(_error_pages.find(nb));
		}
		else
			_error_pages.insert(std::make_pair(ft::toInt(*it), page));
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rsi, %rbx
movq %rdi, %r15
leaq 0xd99c(%rip), %rsi      # 0x2d83f
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x8032
leaq 0x30(%rsp), %r14
leaq 0x8(%rsp), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x16f10
leaq 0x8(%rsp), %rdi
callq 0x79b8
movq 0x38(%rsp), %rsi
addq $0x10, %rsi
leaq 0x48(%rsp), %rdi
callq 0x7690
leaq 0x68(%r15), %r12
addq $0x70, %r15
leaq 0xee72(%rip), %r13      # 0x2ed65
leaq 0x48(%rsp), %rbp
movq (%r14), %r14
cmpq 0x38(%rsp), %r14
je 0x1ff96
leaq 0x10(%r14), %rbx
movq %rbx, %rdi
callq 0x1ebe0
testb %al, %al
je 0x1ffb9
movq %rbx, %rdi
callq 0x16b90
movl %eax, 0x4(%rsp)
movq %rbp, %rdi
movq %r13, %rsi
callq 0x91b7
testb %al, %al
je 0x1ff61
movq %r12, %rdi
leaq 0x4(%rsp), %rsi
callq 0x23df6
cmpq %r15, %rax
je 0x1fef8
movq %r12, %rdi
leaq 0x4(%rsp), %rsi
callq 0x23df6
movq %r12, %rdi
movq %rax, %rsi
callq 0x23e48
jmp 0x1fef8
movq %rbx, %rdi
callq 0x16b90
movl %eax, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
movq %rbp, %rsi
callq 0x7690
movq %r12, %rdi
leaq 0x8(%rsp), %rsi
callq 0x23e96
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x1fef8
leaq 0x48(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x8f64
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xef69(%rip), %rsi      # 0x2ef34
movq %rax, %rdi
callq 0x7910
movq 0x22fee(%rip), %rsi     # 0x42fc8
movq 0x22fcf(%rip), %rdx     # 0x42fb0
movq %r14, %rdi
callq 0x7830
movq %rax, %rbx
jmp 0x20031
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x2003b
movq %rax, %rbx
jmp 0x2003b
jmp 0x20024
movq %rax, %rbx
movq %r14, %rdi
callq 0x73d0
jmp 0x20027
jmp 0x20024
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x20027
jmp 0x20024
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x8f64
movq %rbx, %rdi
callq 0x7860
nop
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::parse_autoindex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void ConfigContext::parse_autoindex(const std::string& directive_value)
{
	std::list<std::string> words = ft::split(directive_value, " \t\n");
	std::string val = words.front();

	if (val != "on" && val != "off")
		throw std::invalid_argument("Bad value for autoindex in config");
	_autoIndex = (val == "on" ? true : false);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0xd7e7(%rip), %rsi      # 0x2d83f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x8032
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
movq %r14, %rsi
callq 0x16f10
leaq 0x10(%rsp), %rdi
callq 0x79b8
movq 0x30(%rsp), %rsi
addq $0x10, %rsi
leaq 0x10(%rsp), %rdi
callq 0x7690
leaq 0xc09a(%rip), %rsi      # 0x2c137
leaq 0x10(%rsp), %rdi
callq 0x8f4f
testb %al, %al
je 0x200c0
leaq 0xd7ad(%rip), %rsi      # 0x2d85f
leaq 0x10(%rsp), %rdi
callq 0x8f4f
testb %al, %al
jne 0x200f4
leaq 0xc070(%rip), %rsi      # 0x2c137
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x91b7
movb %al, 0x110(%rbx)
movq %r14, %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x8f64
addq $0x48, %rsp
popq %rbx
popq %r14
retq
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xee0c(%rip), %rsi      # 0x2ef12
movq %rax, %rdi
callq 0x7910
movq 0x22eb3(%rip), %rsi     # 0x42fc8
movq 0x22e94(%rip), %rdx     # 0x42fb0
movq %r14, %rdi
callq 0x7830
movq %rax, %rbx
jmp 0x20134
movq %rax, %rbx
movq %r14, %rdi
callq 0x73d0
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x20143
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x8f64
jmp 0x20161
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x20161
movq %rax, %rbx
movq %rbx, %rdi
callq 0x7860
nop
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::parse_methods(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void ConfigContext::parse_methods(const std::string& directive_value)
{
	std::list<std::string> words = ft::split(directive_value, " \t\n");
	_acceptedMethods.assign(g_webserv.methods.getRegistered().begin(), g_webserv.methods.getRegistered().end());
	if (words.front() == "none")
		return;
	for (std::list<std::string>::const_iterator it = words.begin(); it != words.end(); it++)
	{
		if (g_webserv.methods.getByType(*it) == NULL)
			throw std::invalid_argument("Bad method name in method field in config.");
		_acceptedMethods.remove(g_webserv.methods.getByType(*it));
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0xd6ba(%rip), %rsi      # 0x2d83f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x8032
leaq 0x30(%rsp), %r14
leaq 0x10(%rsp), %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0x16f10
leaq 0x10(%rsp), %rdi
callq 0x79b8
addq $0xb0, %rbx
leaq 0x233ef(%rip), %r15     # 0x435b0
movq 0x70(%r15), %rsi
leaq 0x70(%r15), %rdx
movq %rbx, %rdi
callq 0x23c42
movq 0x30(%rsp), %rdi
addq $0x10, %rdi
leaq 0xeb84(%rip), %rsi      # 0x2ed65
callq 0x91b7
testb %al, %al
je 0x20203
leaq 0x30(%rsp), %rdi
callq 0x8f64
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
addq $0x68, %r15
leaq 0x10(%rsp), %r12
movq %r14, %rbp
movq (%rbp), %rbp
cmpq %r14, %rbp
je 0x201ea
leaq 0x10(%rbp), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0x21ede
testq %rax, %rax
je 0x20249
movq %r15, %rdi
movq %r13, %rsi
callq 0x21ede
movq %rax, 0x10(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x21f46
jmp 0x2020f
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xec8c(%rip), %rsi      # 0x2eee7
movq %rax, %rdi
callq 0x7910
movq 0x22d5e(%rip), %rsi     # 0x42fc8
movq 0x22d3f(%rip), %rdx     # 0x42fb0
movq %r14, %rdi
callq 0x7830
jmp 0x202a0
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x202ad
movq %rax, %rbx
jmp 0x202ad
jmp 0x202a0
movq %rax, %rbx
movq %r14, %rdi
callq 0x73d0
jmp 0x202a3
jmp 0x202a0
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x8f64
movq %rbx, %rdi
callq 0x7860
nop
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::parse_uploads_exts(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void ConfigContext::parse_uploads_exts(const std::string& directive_value)
{
	std::list<std::string> words = ft::split(directive_value, " \t\n");
	for (std::list<std::string>::iterator it = words.begin(); it != words.end(); it++)
	{
		if ((*it)[0] != '.')
		{
			if (*it == "all")
			{
				_uploads_exts.clear();
				_uploads_exts.push_back("all");
			}
			else if (*it == "none")
				_uploads_exts.clear();
			else
				throw std::invalid_argument("Extension doesn't start with '.' for uploads_exts in config");
			return;
		}
		_uploads_exts.push_back(*it);
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0xd2fb(%rip), %rsi      # 0x2d83f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x8032
leaq 0x30(%rsp), %r14
leaq 0x10(%rsp), %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0x16f10
leaq 0x10(%rsp), %rdi
callq 0x79b8
addq $0xf8, %rbx
movq %r14, %r12
movq (%r12), %r12
cmpq %r14, %r12
je 0x2060a
leaq 0x10(%r12), %r15
movq 0x10(%r12), %rax
cmpb $0x2e, (%rax)
jne 0x205a5
movq %rbx, %rdi
movq %r15, %rsi
callq 0x21eb0
jmp 0x2057c
leaq 0xe7b5(%rip), %rsi      # 0x2ed61
movq %r15, %rdi
callq 0x91b7
testb %al, %al
je 0x205ef
movq %rbx, %rdi
callq 0xca02
leaq 0xe79a(%rip), %rsi      # 0x2ed61
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x8032
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0xbe78
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x2060a
leaq 0xe76f(%rip), %rsi      # 0x2ed65
movq %r15, %rdi
callq 0x91b7
testb %al, %al
je 0x20620
movq %rbx, %rdi
callq 0xca02
leaq 0x30(%rsp), %rdi
callq 0x8f64
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xe738(%rip), %rsi      # 0x2ed6a
movq %rax, %rdi
callq 0x7910
movq 0x22987(%rip), %rsi     # 0x42fc8
movq 0x22968(%rip), %rdx     # 0x42fb0
movq %r14, %rdi
callq 0x7830
jmp 0x20684
movq %rax, %rbx
movq %r14, %rdi
callq 0x73d0
jmp 0x20687
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x20687
jmp 0x20684
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x20691
movq %rax, %rbx
jmp 0x20691
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x8f64
movq %rbx, %rdi
callq 0x7860
nop
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::parse_auth_basic(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void ConfigContext::parse_auth_basic(const std::string& directive_value)
{
	std::list<std::string> words = ft::split(directive_value, " \t\n");
	if (words.size() == 1 && words.front() == "off")
	{
		_params["auth_basic"].assign(1, "");
		return;
	}
	_params["auth_basic"].assign(1, directive_value);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x68, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0xd191(%rip), %rsi      # 0x2d83f
leaq 0x10(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x8032
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
movq %r14, %rsi
callq 0x16f10
leaq 0x10(%rsp), %rdi
callq 0x79b8
cmpq $0x1, 0x40(%rsp)
jne 0x20756
movq 0x30(%rsp), %rdi
addq $0x10, %rdi
leaq 0xd16e(%rip), %rsi      # 0x2d85f
callq 0x91b7
testb %al, %al
je 0x20756
leaq 0xe61d(%rip), %rsi      # 0x2ed1e
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x8032
addq $0x20, %rbx
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq %rax, %rbx
leaq 0xc624(%rip), %rsi      # 0x2cd4f
leaq 0x48(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x8032
pushq $0x1
popq %rsi
leaq 0x48(%rsp), %rdx
movq %rbx, %rdi
callq 0x23966
leaq 0x48(%rsp), %rdi
callq 0x79b8
jmp 0x2078b
leaq 0xe5c1(%rip), %rsi      # 0x2ed1e
leaq 0x10(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x8032
addq $0x20, %rbx
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
pushq $0x1
popq %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x23966
leaq 0x10(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x8f64
addq $0x68, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x79b8
jmp 0x207d8
jmp 0x207d5
jmp 0x207d5
jmp 0x207bc
movq %rax, %rbx
jmp 0x207e2
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x207ec
movq %rax, %rbx
jmp 0x207ec
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x8f64
movq %rbx, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::set_uploads_default()
void ConfigContext::set_uploads_default()
{
	if (_params.find("uploads") == _params.end())
		_params["uploads"].push_back("./");
	else
	{
		_params["uploads"].front() = ft::simplify_path(_params["uploads"].front());
		if (!ft::is_directory(_params["uploads"].front().c_str()))
			throw std::invalid_argument("Uploads parameter is not a folder in config");
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x90, %rsp
movq %rdi, %r14
leaq 0xe54f(%rip), %rsi      # 0x2ed59
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x20(%r14), %rbx
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x233e6
movq %rax, %r15
addq $0x28, %r14
leaq 0x10(%rsp), %rdi
callq 0x79b8
cmpq %r14, %r15
je 0x20960
leaq 0xe50e(%rip), %rsi      # 0x2ed59
leaq 0x30(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x8032
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rsi
addq $0x10, %rsi
leaq 0x10(%rsp), %rdi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x17b31
leaq 0xe4d6(%rip), %rsi      # 0x2ed59
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x8032
leaq 0x50(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rdi
addq $0x10, %rdi
leaq 0x10(%rsp), %r14
movq %r14, %rsi
callq 0x75f0
leaq 0x50(%rsp), %rdi
callq 0x79b8
movq %r14, %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
leaq 0xe483(%rip), %rsi      # 0x2ed59
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rax
movq 0x10(%rax), %rsi
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x8032
leaq 0x70(%rsp), %rdi
callq 0x17813
movl %eax, %ebx
leaq 0x70(%rsp), %rdi
callq 0x79b8
leaq 0x10(%rsp), %rdi
callq 0x79b8
testb %bl, %bl
jne 0x209bd
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xe617(%rip), %rsi      # 0x2ef59
movq %rax, %rdi
callq 0x7910
movq 0x22677(%rip), %rsi     # 0x42fc8
movq 0x22658(%rip), %rdx     # 0x42fb0
movq %r14, %rdi
callq 0x7830
leaq 0xe3f2(%rip), %rsi      # 0x2ed59
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x8032
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq %rax, %rbx
leaq 0xb9a4(%rip), %rsi      # 0x2c331
leaq 0x30(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x8032
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0xbe78
leaq 0x30(%rsp), %rdi
callq 0x79b8
leaq 0x10(%rsp), %rdi
callq 0x79b8
addq $0x90, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %r14, %rdi
callq 0x73d0
jmp 0x20a38
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x209ef
jmp 0x20a1c
jmp 0x20a1c
jmp 0x20a26
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x79b8
jmp 0x20a1f
jmp 0x20a1c
jmp 0x20a1c
jmp 0x20a26
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x79b8
jmp 0x20a0e
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x20a2e
jmp 0x20a26
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0x20a33
movq %rax, %rbx
jmp 0x20a38
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::set_root_default(ConfigContext const*)
void ConfigContext::set_root_default(const ConfigContext* parent)
{
	if (_params.find("root") == _params.end())
	{
		if (parent)
			throw std::invalid_argument("No root in location");
	}
	else
	{
		_params["root"].front() = ft::simplify_path(_params["root"].front());
		if (!ft::is_directory(_params["root"].front().c_str()))
			throw std::invalid_argument("Root parameter is not a folder in config");
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rsi, %r14
movq %rdi, %r15
leaq 0xbdcd(%rip), %rsi      # 0x2c828
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x8032
leaq 0x20(%r15), %rbx
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x233e6
movq %rax, %r12
addq $0x28, %r15
leaq 0x8(%rsp), %rdi
callq 0x79b8
cmpq %r15, %r12
je 0x20b99
leaq 0xbd8c(%rip), %rsi      # 0x2c828
leaq 0x28(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x8032
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rsi
addq $0x10, %rsi
leaq 0x8(%rsp), %rdi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x17b31
leaq 0xbd54(%rip), %rsi      # 0x2c828
leaq 0x48(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x8032
leaq 0x48(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rdi
addq $0x10, %rdi
leaq 0x8(%rsp), %r14
movq %r14, %rsi
callq 0x75f0
leaq 0x48(%rsp), %rdi
callq 0x79b8
movq %r14, %rdi
callq 0x79b8
leaq 0x28(%rsp), %rdi
callq 0x79b8
leaq 0xbd01(%rip), %rsi      # 0x2c828
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rax
movq 0x10(%rax), %rsi
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x8032
leaq 0x68(%rsp), %rdi
callq 0x17813
movl %eax, %ebx
leaq 0x68(%rsp), %rdi
callq 0x79b8
leaq 0x8(%rsp), %rdi
callq 0x79b8
testb %bl, %bl
jne 0x20b9e
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xe2f9(%rip), %rsi      # 0x2ee88
movq %rax, %rdi
callq 0x7910
jmp 0x20bc7
testq %r14, %r14
jne 0x20bad
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xe2b5(%rip), %rsi      # 0x2ee74
movq %rax, %rdi
callq 0x7910
movq 0x223fa(%rip), %rsi     # 0x42fc8
movq 0x223db(%rip), %rdx     # 0x42fb0
movq %r14, %rdi
callq 0x7830
jmp 0x20bdf
movq %rax, %rbx
movq %r14, %rdi
callq 0x73d0
jmp 0x20c3d
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x79b8
jmp 0x20c24
jmp 0x20c21
jmp 0x20c21
jmp 0x20c2b
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x79b8
jmp 0x20c13
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x20c33
jmp 0x20c2b
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
jmp 0x20c38
movq %rax, %rbx
jmp 0x20c3d
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x7860
nop
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::set_max_body_size_default()
void ConfigContext::set_max_body_size_default()
{
	if (_params.find("max_client_body_size") == _params.end())
		_params["max_client_body_size"].push_back("8000");
	else
	{
		if (!ft::is_integer<int>(_params["max_client_body_size"].front()))
			throw std::invalid_argument("max_client_body_size is not an integer in config.");
		if (_params["max_client_body_size"].front()[0] == '-')
			throw std::invalid_argument("Negative max_client_body_size in config.");
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rdi, %r14
leaq 0xe0ea(%rip), %rsi      # 0x2ed44
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x8032
leaq 0x20(%r14), %rbx
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x233e6
movq %rax, %r15
addq $0x28, %r14
leaq 0x8(%rsp), %rdi
callq 0x79b8
cmpq %r14, %r15
je 0x20d32
leaq 0xe0a9(%rip), %rsi      # 0x2ed44
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rdi
addq $0x10, %rdi
callq 0x1ebe0
movl %eax, %ebp
leaq 0x8(%rsp), %rdi
callq 0x79b8
testb %bpl, %bpl
je 0x20d9a
leaq 0xe065(%rip), %rsi      # 0x2ed44
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rax
movq 0x10(%rax), %rax
movb (%rax), %bl
leaq 0x8(%rsp), %rdi
callq 0x79b8
cmpb $0x2d, %bl
jne 0x20d8f
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xe297(%rip), %rsi      # 0x2efbc
movq %rax, %rdi
callq 0x7910
jmp 0x20db4
leaq 0xe00b(%rip), %rsi      # 0x2ed44
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x8032
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq %rax, %rbx
leaq 0xe226(%rip), %rsi      # 0x2ef85
leaq 0x28(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x8032
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0xbe78
leaq 0x28(%rsp), %rdi
callq 0x79b8
leaq 0x8(%rsp), %rdi
callq 0x79b8
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xe1de(%rip), %rsi      # 0x2ef8a
movq %rax, %rdi
callq 0x7910
movq 0x2220d(%rip), %rsi     # 0x42fc8
movq 0x221ee(%rip), %rdx     # 0x42fb0
movq %r14, %rdi
callq 0x7830
jmp 0x20dcc
movq %rax, %rbx
movq %r14, %rdi
callq 0x73d0
jmp 0x20e08
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x79b8
jmp 0x20df9
jmp 0x20df6
jmp 0x20df6
jmp 0x20e05
jmp 0x20df6
jmp 0x20e05
jmp 0x20df6
jmp 0x20e05
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x79b8
jmp 0x20e08
movq %rax, %rbx
movq %rbx, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::set_cgi_dir_default()
void ConfigContext::set_cgi_dir_default()
{
	if (_params.find("cgi_dir") == _params.end())
		_params["cgi_dir"].push_back("/cgi-bin/");
	else
	{
		_params["cgi_dir"].front() = ft::simplify_path(_params["cgi_dir"].front());
		if (!ft::is_directory(_params["cgi_dir"].front().c_str()))
			throw std::invalid_argument("cgi_dir parameter is not a folder in config");
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x90, %rsp
movq %rdi, %r14
leaq 0xb89b(%rip), %rsi      # 0x2c6c1
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x20(%r14), %rbx
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x233e6
movq %rax, %r15
addq $0x28, %r14
leaq 0x10(%rsp), %rdi
callq 0x79b8
cmpq %r14, %r15
je 0x20f7c
leaq 0xb85a(%rip), %rsi      # 0x2c6c1
leaq 0x30(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x8032
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rsi
addq $0x10, %rsi
leaq 0x10(%rsp), %rdi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x17b31
leaq 0xb822(%rip), %rsi      # 0x2c6c1
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x8032
leaq 0x50(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rdi
addq $0x10, %rdi
leaq 0x10(%rsp), %r14
movq %r14, %rsi
callq 0x75f0
leaq 0x50(%rsp), %rdi
callq 0x79b8
movq %r14, %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
leaq 0xb7cf(%rip), %rsi      # 0x2c6c1
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rax
movq 0x10(%rax), %rsi
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x8032
leaq 0x70(%rsp), %rdi
callq 0x17813
movl %eax, %ebx
leaq 0x70(%rsp), %rdi
callq 0x79b8
leaq 0x10(%rsp), %rdi
callq 0x79b8
testb %bl, %bl
jne 0x20fd9
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xdf5d(%rip), %rsi      # 0x2eebb
movq %rax, %rdi
callq 0x7910
movq 0x2205b(%rip), %rsi     # 0x42fc8
movq 0x2203c(%rip), %rdx     # 0x42fb0
movq %r14, %rdi
callq 0x7830
leaq 0xb73e(%rip), %rsi      # 0x2c6c1
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x8032
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq %rax, %rbx
leaq 0xdf08(%rip), %rsi      # 0x2eeb1
leaq 0x30(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x8032
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0xbe78
leaq 0x30(%rsp), %rdi
callq 0x79b8
leaq 0x10(%rsp), %rdi
callq 0x79b8
addq $0x90, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %r14, %rdi
callq 0x73d0
jmp 0x21054
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x2100b
jmp 0x21038
jmp 0x21038
jmp 0x21042
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x79b8
jmp 0x2103b
jmp 0x21038
jmp 0x21038
jmp 0x21042
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x79b8
jmp 0x2102a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x2104a
jmp 0x21042
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0x2104f
movq %rax, %rbx
jmp 0x21054
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x7860
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::set_auth_basic_user_file_default()
void ConfigContext::set_auth_basic_user_file_default()
{
	if (_params.find("auth_basic_user_file") == _params.end())
		return;

	_params["auth_basic_user_file"].front() = ft::simplify_path(_params["auth_basic_user_file"].front());
	if (!ft::is_regular_file(_params["auth_basic_user_file"].front().c_str()))
		throw std::invalid_argument("Auth Basic User File parameter is not a regular file");
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x90, %rsp
movq %rdi, %r14
leaq 0xbb96(%rip), %rsi      # 0x2cce8
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x20(%r14), %rbx
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x233e6
movq %rax, %r15
addq $0x28, %r14
leaq 0x10(%rsp), %rdi
callq 0x79b8
cmpq %r14, %r15
je 0x21274
leaq 0xbb55(%rip), %rsi      # 0x2cce8
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x8032
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rsi
addq $0x10, %rsi
leaq 0x10(%rsp), %rdi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x17b31
leaq 0xbb1d(%rip), %rsi      # 0x2cce8
leaq 0x50(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x8032
leaq 0x50(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rdi
addq $0x10, %rdi
leaq 0x10(%rsp), %r14
movq %r14, %rsi
callq 0x75f0
leaq 0x50(%rsp), %rdi
callq 0x79b8
movq %r14, %rdi
callq 0x79b8
leaq 0x30(%rsp), %rdi
callq 0x79b8
leaq 0xbaca(%rip), %rsi      # 0x2cce8
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x8032
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e4a
movq (%rax), %rax
movq 0x10(%rax), %rsi
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x8032
leaq 0x70(%rsp), %rdi
callq 0x179a4
movl %eax, %ebx
leaq 0x70(%rsp), %rdi
callq 0x79b8
leaq 0x10(%rsp), %rdi
callq 0x79b8
testb %bl, %bl
je 0x21281
addq $0x90, %rsp
popq %rbx
popq %r14
popq %r15
retq
pushq $0x10
popq %rdi
callq 0x7290
movq %rax, %r14
leaq 0xdbac(%rip), %rsi      # 0x2ee3f
movq %rax, %rdi
callq 0x7910
movq 0x21d26(%rip), %rsi     # 0x42fc8
movq 0x21d07(%rip), %rdx     # 0x42fb0
movq %r14, %rdi
callq 0x7830
movq %rax, %rbx
movq %r14, %rdi
callq 0x73d0
jmp 0x2130f
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x79b8
jmp 0x212f6
jmp 0x212f3
jmp 0x212f3
jmp 0x212fd
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x79b8
jmp 0x212e5
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x79b8
jmp 0x21305
jmp 0x212fd
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0x2130a
movq %rax, %rbx
jmp 0x2130f
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x79b8
movq %rbx, %rdi
callq 0x7860
nop
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::getConfigPath(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) const
const ConfigContext& ConfigContext::getConfigPath(const std::string& path) const
{
	for (std::list<ConfigContext>::const_iterator it = _childs.begin(); it != _childs.end(); it++)
	{
		if (it->getNames().front() == path.substr(0, std::min(path.size(), it->getNames().front().size())))
			return *it;
	}
	return *this;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %r14
movq %rdi, (%rsp)
leaq 0x50(%rdi), %rbx
leaq 0x8(%rsp), %r15
movq %rbx, %r13
movq (%r13), %r13
cmpq %rbx, %r13
je 0x21d3b
movq 0xa8(%r13), %r12
movq 0x8(%r14), %rcx
movq 0x18(%r12), %rax
addq $0x10, %r12
cmpq %rcx, %rax
cmovbq %rax, %rcx
movq %r15, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x7540
movq %r12, %rdi
movq %r15, %rsi
callq 0xc2ad
movl %eax, %ebp
movq %r15, %rdi
callq 0x79b8
testb %bpl, %bpl
je 0x21ce7
addq $0x10, %r13
movq %r13, %rax
jmp 0x21d3f
movq (%rsp), %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/srcs/Config/ConfigContext.cpp
// Function: ConfigContext::can_be_uploaded(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) const
bool	ConfigContext::can_be_uploaded(const std::string& extension) const
{
	if (_uploads_exts.empty())
		return false;
	if (_uploads_exts.front() == "all")
		return true;
	if (ft::contains(_uploads_exts, extension))
		return true;
	return false;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
movq 0xf8(%rdi), %rdi
addq $0xf8, %r14
cmpq %r14, %rdi
je 0x21d95
movq %rsi, %rbx
addq $0x10, %rdi
leaq 0xcfeb(%rip), %rsi      # 0x2ed61
callq 0x91b7
movl %eax, %ecx
movb $0x1, %al
testb %cl, %cl
jne 0x21d97
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x21df4
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/mbourand[P]webserv/incs/Utils/Factory.hpp
// Function: Factory<IMethod*>::getByType(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) const
value_type getByType(const std::string& type) const
		{
			for (typename std::list<value_type>::const_iterator it = _elements.begin(); it != _elements.end(); it++)
				if ((*it)->getType() == type)
					return *it;
			return NULL;
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %r14
movq %rdi, %r15
addq $0x8, %r15
xorl %ebx, %ebx
leaq 0x8(%rsp), %r12
movq %r15, %r13
movq (%r13), %r13
cmpq %r15, %r13
je 0x21f34
movq 0x10(%r13), %rsi
movq (%rsi), %rax
movq %r12, %rdi
callq *0x10(%rax)
movq %r12, %rdi
movq %r14, %rsi
callq 0xc2ad
movl %eax, %ebp
movq %r12, %rdi
callq 0x79b8
testb %bpl, %bpl
je 0x21f00
movq 0x10(%r13), %rbx
movq %rbx, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq