// File: /workspace/github_cpp_makefile_star2_O3/mbourand[P]webserv/srcs/Utils/Webserv.cpp
// Function: s_webserv::init_config(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void s_webserv::init_config(const std::string& filename)
{
	std::ifstream file(filename.c_str(), std::ifstream::in);
	if (!file.good() || !file.is_open())
		throw std::invalid_argument("Couldn't open configuration file");

	std::string raw((std::istreambuf_iterator<char>(file)), (std::istreambuf_iterator<char>()));


	if (std::count(raw.begin(), raw.end(), '{') != std::count(raw.begin(), raw.end(), '}'))
		throw std::invalid_argument("Bad braces in config.");


	for (size_t i = 0; i < raw.size();)
	{
		while (raw[i] == ' ' || raw[i] == '\t')
			i++;
		if (raw[i] == '\n' || raw[i] == '#')
		{
			if (raw.find('\n', i) == std::string::npos)
				break;
			i = raw.find('\n', i) + 1;
			continue;
		}
		std::string directive_name = raw.substr(i, raw.find_first_of(" \t", i) - i);
		if (directive_name == "workers")
		{
			i += directive_name.size();
			while (raw[i] == ' ' || raw[i] == '\t')
				i++;

			std::string directive_value = raw.substr(i, raw.find('\n', i) - i);
			if (directive_value.empty())
				throw std::invalid_argument("Empty directive value in config");

			std::list<std::string> words = ft::split(directive_value, " \t\n");
			std::string amount_str = words.front();
			if (!ft::is_integer<int>(amount_str))
				throw std::invalid_argument("Bad integer value in config");

			workers_amount = ft::toInt(amount_str);
			i += directive_value.size();
		}
		else if (directive_name == "gzip")
		{
			i += directive_name.size();
			while (raw[i] == ' ' || raw[i] == '\t')
				i++;
			std::string directive_value = raw.substr(i, raw.find('\n', i) - i);
			if (directive_value.empty())
				throw std::invalid_argument("Empty directive value in config");
			else if (directive_value == "on")
				compression_gzip = true;
			else if (directive_value == "off")
				compression_gzip = false;
			else
				throw std::invalid_argument("Bad string value in config");
			i += directive_value.size();
		}
		else if (directive_name == "deflate")
		{
			i += directive_name.size();
			while (raw[i] == ' ' || raw[i] == '\t')
				i++;
			std::string directive_value = raw.substr(i, raw.find('\n', i) - i);
			if (directive_value.empty())
				throw std::invalid_argument("Empty directive value in config");
			else if (directive_value == "on")
				compression_deflate = true;
			else if (directive_value == "off")
				compression_deflate = false;
			else
				throw std::invalid_argument("Bad string value in config");
			i += directive_value.size();
		}
		else if (directive_name == "max_connections")
		{
			i += directive_name.size();
			while (raw[i] == ' ' || raw[i] == '\t')
				i++;

			std::string directive_value = raw.substr(i, raw.find('\n', i) - i);
			if (directive_value.empty())
				throw std::invalid_argument("Empty directive value in config");

			std::list<std::string> words = ft::split(directive_value, " \t\n");
			std::string amount_str = words.front();
			if (!ft::is_integer<int>(amount_str))
				throw std::invalid_argument("Bad integer value in config");

			max_connections = ft::toInt(amount_str);
			i += directive_value.size();
		}
		else if (directive_name == "compression_level")
		{
			i += directive_name.size();
			while (raw[i] == ' ' || raw[i] == '\t')
				i++;

			std::string directive_value = raw.substr(i, raw.find('\n', i) - i);
			if (directive_value.empty())
				throw std::invalid_argument("Empty directive value in config");

			std::list<std::string> words = ft::split(directive_value, " \t\n");
			std::string amount_str = words.front();
			if (!ft::is_integer<int>(amount_str))
				throw std::invalid_argument("Bad integer value in config");

			compression_level = ft::toInt(amount_str);
			if (!compression_level || compression_level > 9)
				throw std::invalid_argument("Bad integer value in config");
			i += directive_value.size();
		}
		else if (directive_name == "server")
		{
			i += 6;
			while (raw[i] == ' ' || raw[i] == '\t')
				i++;
			if (raw[i] == '{' && raw[i + 1] == '\n')
				i += 2;
			else
				throw std::invalid_argument("Expected newline after { in config");

			size_t nesting = 1;
			size_t start_i = i;
			while (i < raw.size())
			{
				if (raw[i] == '{')
					nesting++;
				else if (raw[i] == '}')
					nesting--;
				if (nesting == 0)
					break;
				i++;
			}
			if (nesting != 0)
				throw std::invalid_argument("Bad braces in config file");
			if (raw[i + 1] != '\n')
				throw std::invalid_argument("Expected newline after } in config");
			vhosts.push_back(VirtualHost(ConfigContext(raw.substr(start_i, i - start_i))));
		}
		else
			throw std::invalid_argument("Bad directive name in config");
		if (raw.find('\n', i) == std::string::npos)
			break;
		i = raw.find('\n', i) + 1;
	}
	Logger::print("Config was parsed successfully", NULL, SUCCESS, SILENT);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x508, %rsp            # imm = 0x508
movq %rdi, (%rsp)
movq (%rsi), %rsi
leaq 0x300(%rsp), %r14
movq %r14, %rdi
movl $0x8, %edx
callq 0x7870
movq (%r14), %rax
movq -0x18(%rax), %r14
cmpl $0x0, 0x320(%rsp,%r14)
jne 0x271de
leaq 0x378(%rsp), %rdi
callq 0x7130
testb %al, %al
je 0x271de
movq 0x3e8(%rsp,%r14), %rsi
leaq 0x38(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x28(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0xf420
movq 0x30(%rsp), %rax
testq %rax, %rax
je 0x270e2
movq 0x28(%rsp), %rcx
xorl %esi, %esi
xorl %edx, %edx
xorl %edi, %edi
cmpb $0x7b, (%rcx,%rsi)
sete %dil
addq %rdi, %rdx
incq %rsi
cmpq %rsi, %rax
jne 0x26923
xorl %esi, %esi
xorl %edi, %edi
xorl %r8d, %r8d
cmpb $0x7d, (%rcx,%rsi)
sete %r8b
addq %r8, %rdi
incq %rsi
cmpq %rsi, %rax
jne 0x2693c
cmpq %rdi, %rdx
jne 0x27283
testq %rax, %rax
je 0x270e2
movq (%rsp), %rax
addq $0xa8, %rax
movq %rax, 0x88(%rsp)
xorl %r14d, %r14d
leaq 0x28(%rsp), %r15
leaq 0x48(%rsp), %r13
leaq 0x1e8(%rsp), %r12
movq 0x28(%rsp), %rax
leaq 0x8(%r14), %rbp
movzbl (%rax,%r14), %ecx
cmpl $0x1f, %ecx
jg 0x269a5
cmpl $0x9, %ecx
je 0x269ae
jmp 0x269b6
cmpl $0x20, %ecx
jne 0x26a91
incq %r14
incq %rbp
jmp 0x26994
cmpl $0xa, %ecx
je 0x26a9a
movl $0x2, %ecx
movq %r15, %rdi
leaq 0x14e92(%rip), %rsi     # 0x3b860
movq %r14, %rdx
callq 0x76c0
subq %r14, %rax
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
callq 0x74d0
movq %r13, %rdi
leaq 0x14e6f(%rip), %rsi     # 0x3b863
callq 0x7180
testl %eax, %eax
je 0x26acf
movq %r13, %rdi
leaq 0x16f21(%rip), %rsi     # 0x3d92c
callq 0x7180
testl %eax, %eax
je 0x26bf3
movq %r13, %rdi
leaq 0x14ea8(%rip), %rsi     # 0x3b8ca
callq 0x7180
testl %eax, %eax
je 0x26c86
movq %r13, %rdi
leaq 0x14e99(%rip), %rsi     # 0x3b8d2
callq 0x7180
testl %eax, %eax
je 0x26e46
movq %r13, %rdi
leaq 0x14e92(%rip), %rsi     # 0x3b8e2
callq 0x7180
testl %eax, %eax
je 0x26f4c
movq %r13, %rdi
leaq 0x14e8d(%rip), %rsi     # 0x3b8f4
callq 0x7180
testl %eax, %eax
jne 0x2734c
movq 0x28(%rsp), %rax
movzbl -0x2(%rax,%rbp), %ecx
cmpl $0x9, %ecx
je 0x26a8c
cmpl $0x20, %ecx
jne 0x26d19
incq %rbp
jmp 0x26a79
cmpl $0x23, %ecx
jne 0x269bf
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
cmpq $-0x1, %rax
je 0x270e2
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
movq %rax, %r14
incq %r14
jmp 0x270d7
addq 0x50(%rsp), %r14
movq 0x28(%rsp), %rax
leaq 0x1f8(%rsp), %rbp
movzbl (%rax,%r14), %ecx
cmpl $0x20, %ecx
je 0x26af0
cmpl $0x9, %ecx
jne 0x26af5
incq %r14
jmp 0x26ae1
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
subq %r14, %rax
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
callq 0x74d0
cmpq $0x0, 0xb8(%rsp)
je 0x2724c
movq %rbp, 0x1e8(%rsp)
movq %r12, %rdi
leaq 0x14d4c(%rip), %rsi     # 0x3b88b
leaq 0x14d48(%rip), %rdx     # 0x3b88e
callq 0x80f4
leaq 0x8(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
movq %r12, %rdx
callq 0x1bf30
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x26b7d
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x8(%rsp), %rax
movq %rbp, 0x1e8(%rsp)
movq 0x10(%rax), %rsi
movq 0x18(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x8a92
movq %r12, %rdi
callq 0x2778c
testb %al, %al
je 0x27215
movq %r12, %rdi
callq 0x1bab0
movq (%rsp), %rcx
movl %eax, 0xc0(%rcx)
addq 0xb8(%rsp), %r14
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x26be4
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x8(%rsp), %rdi
callq 0x96b6
jmp 0x27061
addq 0x50(%rsp), %r14
movq 0x28(%rsp), %rax
movzbl (%rax,%r14), %ecx
cmpl $0x20, %ecx
je 0x26c0c
cmpl $0x9, %ecx
jne 0x26c11
incq %r14
jmp 0x26bfd
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
subq %r14, %rax
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
callq 0x74d0
cmpq $0x0, 0xb8(%rsp)
je 0x272ba
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x134dc(%rip), %rsi     # 0x3a137
callq 0x7180
testl %eax, %eax
je 0x26f3b
movq %rbx, %rdi
leaq 0x14c39(%rip), %rsi     # 0x3b8ab
callq 0x7180
testl %eax, %eax
jne 0x272f9
xorl %eax, %eax
jmp 0x26f3d
addq 0x50(%rsp), %r14
movq 0x28(%rsp), %rax
movzbl (%rax,%r14), %ecx
cmpl $0x20, %ecx
je 0x26c9f
cmpl $0x9, %ecx
jne 0x26ca4
incq %r14
jmp 0x26c90
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
subq %r14, %rax
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
callq 0x74d0
cmpq $0x0, 0xb8(%rsp)
je 0x272d8
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x13449(%rip), %rsi     # 0x3a137
callq 0x7180
testl %eax, %eax
je 0x2704d
movq %rbx, %rdi
leaq 0x14ba6(%rip), %rsi     # 0x3b8ab
callq 0x7180
testl %eax, %eax
jne 0x273db
xorl %eax, %eax
jmp 0x2704f
cmpl $0x7b, %ecx
jne 0x271ac
cmpb $0xa, -0x1(%rax,%rbp)
jne 0x271ac
movq 0x30(%rsp), %rdx
cmpq %rdx, %rbp
jae 0x2717a
movl $0x1, %esi
xorl %ecx, %ecx
movq %rbp, %r14
movb (%rax,%r14), %dil
cmpb $0x7b, %dil
jne 0x26d54
incq %rsi
jmp 0x26d5d
cmpb $0x7d, %dil
jne 0x26d62
decq %rsi
testq %rsi, %rsi
je 0x26d72
incq %r14
incq %rcx
cmpq %rdx, %r14
jb 0x26d45
jmp 0x2717a
cmpb $0xa, 0x1(%rax,%r14)
jne 0x2732b
leaq 0x8(%rsp), %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x74d0
leaq 0x78(%rsp), %rax
movq %rax, 0x68(%rsp)
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
leaq 0x13ff4(%rip), %rdx     # 0x3ad9b
movq %rdx, %rsi
callq 0x80f4
movq %r12, %rdi
leaq 0x8(%rsp), %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x27cd4
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x38e86
movq 0x88(%rsp), %rbp
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x278ae
movq %rax, %rdi
movq %rbp, %rsi
callq 0x7090
movq (%rsp), %rax
incq 0xb8(%rax)
movq %rbx, %rdi
callq 0x39078
movq %r12, %rdi
callq 0x279dc
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x26e29
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x27086
movq 0x18(%rsp), %rsi
jmp 0x2707e
addq 0x50(%rsp), %r14
movq 0x28(%rsp), %rax
leaq 0x1f8(%rsp), %rbp
movzbl (%rax,%r14), %ecx
cmpl $0x20, %ecx
je 0x26e67
cmpl $0x9, %ecx
jne 0x26e6c
incq %r14
jmp 0x26e58
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
subq %r14, %rax
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
callq 0x74d0
cmpq $0x0, 0xb8(%rsp)
je 0x273a4
movq %rbp, 0x1e8(%rsp)
movq %r12, %rdi
leaq 0x149d5(%rip), %rsi     # 0x3b88b
leaq 0x149d1(%rip), %rdx     # 0x3b88e
callq 0x80f4
leaq 0x8(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
movq %r12, %rdx
callq 0x1bf30
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x26ef4
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x8(%rsp), %rax
movq %rbp, 0x1e8(%rsp)
movq 0x10(%rax), %rsi
movq 0x18(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x8a92
movq %r12, %rdi
callq 0x2778c
testb %al, %al
je 0x2736d
movq %r12, %rdi
callq 0x1bab0
movq (%rsp), %rcx
movl %eax, 0xc4(%rcx)
jmp 0x26bbf
movb $0x1, %al
movq (%rsp), %rcx
movb %al, 0xc9(%rcx)
jmp 0x27059
addq 0x50(%rsp), %r14
movq 0x28(%rsp), %rax
leaq 0x1f8(%rsp), %rbp
movzbl (%rax,%r14), %ecx
cmpl $0x20, %ecx
je 0x26f6d
cmpl $0x9, %ecx
jne 0x26f72
incq %r14
jmp 0x26f5e
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
subq %r14, %rax
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
callq 0x74d0
cmpq $0x0, 0xb8(%rsp)
je 0x2745d
movq %rbp, 0x1e8(%rsp)
movq %r12, %rdi
leaq 0x148cf(%rip), %rsi     # 0x3b88b
leaq 0x148cb(%rip), %rdx     # 0x3b88e
callq 0x80f4
leaq 0x8(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
movq %r12, %rdx
callq 0x1bf30
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x26ffa
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x8(%rsp), %rax
movq %rbp, 0x1e8(%rsp)
movq 0x10(%rax), %rsi
movq 0x18(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x8a92
movq %r12, %rdi
callq 0x2778c
testb %al, %al
je 0x2740d
movq %r12, %rdi
callq 0x1bab0
movq (%rsp), %rcx
movl %eax, 0xcc(%rcx)
addl $-0xa, %eax
cmpl $-0xa, %eax
ja 0x26bbf
jmp 0x2742b
movb $0x1, %al
movq (%rsp), %rcx
movb %al, 0xc8(%rcx)
addq 0xb8(%rsp), %r14
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x27086
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x74b0
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
movq %rax, %rbp
cmpq $-0x1, %rax
je 0x270b5
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
movq %rax, %r14
incq %r14
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x270d1
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x74b0
cmpq $-0x1, %rbp
je 0x270e2
cmpq 0x30(%rsp), %r14
jb 0x2698b
leaq 0xa0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x14883(%rip), %rsi     # 0x3b978
leaq 0x1489a(%rip), %rdx     # 0x3b996
leaq 0x90(%rsp), %rdi
callq 0x80f4
leaq 0x90(%rsp), %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x2, %ecx
callq 0xdea4
movq 0x90(%rsp), %rdi
cmpq %r14, %rdi
je 0x2713f
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x2715b
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x300(%rsp), %rdi
callq 0x7150
addq $0x508, %rsp            # imm = 0x508
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x14790(%rip), %rsi     # 0x3b91e
movq %rax, %rdi
callq 0x78c0
movq 0x26e2b(%rip), %rsi     # 0x4dfc8
movq 0x26e0c(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x1473b(%rip), %rsi     # 0x3b8fb
movq %rax, %rdi
callq 0x78c0
movq 0x26df9(%rip), %rsi     # 0x4dfc8
movq 0x26dda(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x14637(%rip), %rsi     # 0x3b829
movq %rax, %rdi
callq 0x78c0
movq 0x26dc7(%rip), %rsi     # 0x4dfc8
movq 0x26da8(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x2748f
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x14666(%rip), %rsi     # 0x3b88f
movq %rax, %rdi
callq 0x78c0
movq 0x26d90(%rip), %rsi     # 0x4dfc8
movq 0x26d71(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x2748f
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x1460b(%rip), %rsi     # 0x3b86b
movq %rax, %rdi
callq 0x78c0
movq 0x26d59(%rip), %rsi     # 0x4dfc8
movq 0x26d3a(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x2748f
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x145b3(%rip), %rsi     # 0x3b84a
movq %rax, %rdi
callq 0x78c0
movq 0x26d22(%rip), %rsi     # 0x4dfc8
movq 0x26d03(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x2748f
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x1459d(%rip), %rsi     # 0x3b86b
movq %rax, %rdi
callq 0x78c0
jmp 0x27315
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x1457f(%rip), %rsi     # 0x3b86b
movq %rax, %rdi
callq 0x78c0
jmp 0x273f7
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x145a2(%rip), %rsi     # 0x3b8af
movq %rax, %rdi
callq 0x78c0
movq 0x26cac(%rip), %rsi     # 0x4dfc8
movq 0x26c8d(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x145f9(%rip), %rsi     # 0x3b938
movq %rax, %rdi
callq 0x78c0
jmp 0x27196
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x145fb(%rip), %rsi     # 0x3b95b
movq %rax, %rdi
callq 0x78c0
jmp 0x271c8
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x1450e(%rip), %rsi     # 0x3b88f
movq %rax, %rdi
callq 0x78c0
movq 0x26c38(%rip), %rsi     # 0x4dfc8
movq 0x26c19(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x2748f
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x144b3(%rip), %rsi     # 0x3b86b
movq %rax, %rdi
callq 0x78c0
movq 0x26c01(%rip), %rsi     # 0x4dfc8
movq 0x26be2(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x2748f
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x144c0(%rip), %rsi     # 0x3b8af
movq %rax, %rdi
callq 0x78c0
movq 0x26bca(%rip), %rsi     # 0x4dfc8
movq 0x26bab(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x1446e(%rip), %rsi     # 0x3b88f
movq %rax, %rdi
callq 0x78c0
jmp 0x27447
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x14450(%rip), %rsi     # 0x3b88f
movq %rax, %rdi
callq 0x78c0
movq 0x26b7a(%rip), %rsi     # 0x4dfc8
movq 0x26b5b(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x143fa(%rip), %rsi     # 0x3b86b
movq %rax, %rdi
callq 0x78c0
movq 0x26b48(%rip), %rsi     # 0x4dfc8
movq 0x26b29(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x27612
jmp 0x27594
jmp 0x275a3
jmp 0x275a3
jmp 0x27594
jmp 0x27612
jmp 0x27594
jmp 0x275b7
jmp 0x275a3
jmp 0x27677
jmp 0x27677
jmp 0x275b7
jmp 0x275b7
jmp 0x275e1
jmp 0x275f0
jmp 0x27612
jmp 0x27684
jmp 0x27594
jmp 0x27594
jmp 0x275b7
jmp 0x275e1
jmp 0x275f0
jmp 0x27612
jmp 0x27684
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x39078
jmp 0x2751c
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
callq 0x279dc
jmp 0x2752e
movq %rax, %rbx
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x2754f
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0x2754f
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x27687
movq 0x18(%rsp), %rsi
jmp 0x27632
jmp 0x27684
jmp 0x27594
jmp 0x27612
jmp 0x27684
jmp 0x2766e
movq %rax, %rbx
movq %r14, %rdi
callq 0x7390
jmp 0x276a3
jmp 0x27612
movq %rax, %rbx
movq %r14, %rdi
callq 0x7390
jmp 0x27615
jmp 0x275b7
movq %rax, %rbx
movq %r14, %rdi
callq 0x7390
jmp 0x275ba
jmp 0x27612
jmp 0x27684
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
cmpq %rax, %rdi
je 0x275e4
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0x275e4
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x96b6
jmp 0x27615
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x27615
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0x27615
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x27687
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0x27687
jmp 0x27684
movq %rax, %rbx
movq 0x90(%rsp), %rdi
cmpq %r14, %rdi
je 0x276a3
movq 0xa0(%rsp), %rsi
jmp 0x2769b
jmp 0x2766e
jmp 0x2765c
movq %rax, %rbx
jmp 0x276bf
movq %rax, %rbx
movq %r14, %rdi
callq 0x7390
jmp 0x276bf
movq %rax, %rbx
jmp 0x276a3
jmp 0x27677
jmp 0x27684
movq %rax, %rbx
movq %r14, %rdi
callq 0x7390
jmp 0x27687
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x276a3
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x276bf
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x300(%rsp), %rdi
callq 0x7150
movq %rbx, %rdi
callq 0x7810