// File: /workspace/github_cpp_makefile_star2_O1/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), %rbx
movq -0x18(%rbx), %rax
cmpl $0x0, 0x320(%rsp,%rax)
jne 0x2751e
leaq 0x378(%rsp), %rdi
callq 0x7130
testb %al, %al
je 0x2751e
movq -0x18(%rbx), %rax
movq 0x3e8(%rsp,%rax), %rsi
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x8(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0xf46a
movq 0x8(%rsp), %rax
movq 0x10(%rsp), %rcx
testq %rcx, %rcx
je 0x26c4d
xorl %esi, %esi
xorl %edx, %edx
xorl %edi, %edi
cmpb $0x7b, (%rax,%rsi)
sete %dil
addq %rdi, %rdx
incq %rsi
cmpq %rsi, %rcx
jne 0x26c36
jmp 0x26c4f
xorl %edx, %edx
testq %rcx, %rcx
je 0x26c70
xorl %edi, %edi
xorl %esi, %esi
xorl %r8d, %r8d
cmpb $0x7d, (%rax,%rdi)
sete %r8b
addq %r8, %rsi
incq %rdi
cmpq %rdi, %rcx
jne 0x26c58
jmp 0x26c72
xorl %esi, %esi
cmpq %rsi, %rdx
jne 0x275c3
cmpq $0x0, 0x10(%rsp)
je 0x27422
movq (%rsp), %rax
addq $0xa8, %rax
movq %rax, 0x88(%rsp)
xorl %r14d, %r14d
leaq 0x8(%rsp), %r15
leaq 0x48(%rsp), %r13
leaq 0x1e8(%rsp), %r12
movl $0x1, %ebx
movq 0x8(%rsp), %rax
leaq 0x8(%r14), %rbp
movzbl (%rax,%r14), %ecx
cmpl $0x1f, %ecx
jg 0x26ccd
cmpl $0x9, %ecx
je 0x26cd2
jmp 0x26cda
cmpl $0x20, %ecx
jne 0x26d14
incq %r14
incq %rbp
jmp 0x26cbc
cmpl $0xa, %ecx
jne 0x26d19
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
cmpq $-0x1, %rax
je 0x27422
movq %r15, %rdi
movl $0xa, %esi
movq %r14, %rdx
callq 0x75c0
movq %rax, %r14
incq %r14
jmp 0x27417
cmpl $0x23, %ecx
je 0x26cdf
movl $0x2, %ecx
movq %r15, %rdi
leaq 0x14b38(%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 0x14b15(%rip), %rsi     # 0x3b863
callq 0x7180
testl %eax, %eax
je 0x26deb
movq %r13, %rdi
leaq 0x16bc7(%rip), %rsi     # 0x3d92c
callq 0x7180
testl %eax, %eax
je 0x26f0f
movq %r13, %rdi
leaq 0x14b4e(%rip), %rsi     # 0x3b8ca
callq 0x7180
testl %eax, %eax
je 0x26fab
movq %r13, %rdi
leaq 0x14b3f(%rip), %rsi     # 0x3b8d2
callq 0x7180
testl %eax, %eax
je 0x27180
movq %r13, %rdi
leaq 0x14b38(%rip), %rsi     # 0x3b8e2
callq 0x7180
testl %eax, %eax
je 0x27285
movq %r13, %rdi
leaq 0x14b33(%rip), %rsi     # 0x3b8f4
callq 0x7180
testl %eax, %eax
jne 0x2768c
movq 0x8(%rsp), %rax
movzbl -0x2(%rax,%rbp), %ecx
cmpl $0x9, %ecx
je 0x26de6
cmpl $0x20, %ecx
jne 0x27047
incq %rbp
jmp 0x26dd3
addq 0x50(%rsp), %r14
movq 0x8(%rsp), %rax
leaq 0x1f8(%rsp), %rbp
movzbl (%rax,%r14), %ecx
cmpl $0x20, %ecx
je 0x26e0c
cmpl $0x9, %ecx
jne 0x26e11
incq %r14
jmp 0x26dfd
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 0x2758c
movq %rbp, 0x1e8(%rsp)
movq %r12, %rdi
leaq 0x14a30(%rip), %rsi     # 0x3b88b
leaq 0x14a2c(%rip), %rdx     # 0x3b88e
callq 0x80f4
leaq 0x28(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
movq %r12, %rdx
callq 0x1c232
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x26e99
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x28(%rsp), %rax
movq %rbp, 0x1e8(%rsp)
movq 0x10(%rax), %rsi
movq 0x18(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x8a8a
movq %r12, %rdi
callq 0x27add
testb %al, %al
je 0x27555
movq %r12, %rdi
callq 0x1bda4
movq (%rsp), %rcx
movl %eax, 0xc0(%rcx)
addq 0xb8(%rsp), %r14
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x26f00
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x28(%rsp), %rdi
callq 0x96d8
jmp 0x273a1
addq 0x50(%rsp), %r14
movq 0x8(%rsp), %rax
movzbl (%rax,%r14), %ecx
cmpl $0x20, %ecx
je 0x26f28
cmpl $0x9, %ecx
jne 0x26f2d
incq %r14
jmp 0x26f19
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 0x275fa
leaq 0xb0(%rsp), %r12
movq %r12, %rdi
leaq 0x131c0(%rip), %rsi     # 0x3a137
callq 0x7180
testl %eax, %eax
je 0x27275
movq %r12, %rdi
leaq 0x1491d(%rip), %rsi     # 0x3b8ab
callq 0x7180
testl %eax, %eax
jne 0x27639
movq (%rsp), %rax
movb $0x0, 0xc9(%rax)
jmp 0x27391
addq 0x50(%rsp), %r14
movq 0x8(%rsp), %rax
movzbl (%rax,%r14), %ecx
cmpl $0x20, %ecx
je 0x26fc4
cmpl $0x9, %ecx
jne 0x26fc9
incq %r14
jmp 0x26fb5
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 0x27618
leaq 0xb0(%rsp), %r12
movq %r12, %rdi
leaq 0x13124(%rip), %rsi     # 0x3a137
callq 0x7180
testl %eax, %eax
je 0x27386
movq %r12, %rdi
leaq 0x14881(%rip), %rsi     # 0x3b8ab
callq 0x7180
testl %eax, %eax
jne 0x2771b
movq (%rsp), %rax
movb $0x0, 0xc8(%rax)
jmp 0x27391
cmpl $0x7b, %ecx
jne 0x274ba
cmpb $0xa, -0x1(%rax,%rbp)
jne 0x274ba
movq 0x10(%rsp), %rdx
cmpq %rdx, %rbp
jae 0x274ec
movl $0x1, %esi
xorl %ecx, %ecx
movq %rbp, %r14
movq %rsi, %rdi
movb (%rax,%r14), %r8b
xorl %esi, %esi
cmpb $0x7d, %r8b
sete %sil
negq %rsi
cmpb $0x7b, %r8b
cmoveq %rbx, %rsi
addq %rdi, %rsi
je 0x270a4
incq %r14
incq %rcx
cmpq %rdx, %r14
jb 0x27073
jmp 0x274ec
cmpb $0xa, 0x1(%rax,%r14)
jne 0x2766b
leaq 0x28(%rsp), %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x74d0
leaq 0x78(%rsp), %rax
movq %rax, 0x68(%rsp)
leaq 0x68(%rsp), %rbp
movq %rbp, %rdi
leaq 0x13cc2(%rip), %rdx     # 0x3ad9b
movq %rdx, %rsi
callq 0x80f4
movq %r12, %rdi
leaq 0x28(%rsp), %rsi
movq %rbp, %rdx
xorl %ecx, %ecx
callq 0x2802a
movq %r12, %rsi
leaq 0xb0(%rsp), %r12
movq %r12, %rdi
callq 0x392ba
movq 0x88(%rsp), %rbp
movq %rbp, %rdi
movq %r12, %rsi
callq 0x27bfa
movq %rax, %rdi
movq %rbp, %rsi
callq 0x7090
movq (%rsp), %rax
incq 0xb8(%rax)
movq %r12, %rdi
callq 0x394b4
leaq 0x1e8(%rsp), %r12
movq %r12, %rdi
callq 0x27d28
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x27163
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x273c6
movq 0x38(%rsp), %rsi
jmp 0x273be
addq 0x50(%rsp), %r14
movq 0x8(%rsp), %rax
leaq 0x1f8(%rsp), %rbp
movzbl (%rax,%r14), %ecx
cmpl $0x20, %ecx
je 0x271a1
cmpl $0x9, %ecx
jne 0x271a6
incq %r14
jmp 0x27192
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 0x276e4
movq %rbp, 0x1e8(%rsp)
movq %r12, %rdi
leaq 0x1469b(%rip), %rsi     # 0x3b88b
leaq 0x14697(%rip), %rdx     # 0x3b88e
callq 0x80f4
leaq 0x28(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
movq %r12, %rdx
callq 0x1c232
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2722e
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x28(%rsp), %rax
movq %rbp, 0x1e8(%rsp)
movq 0x10(%rax), %rsi
movq 0x18(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x8a8a
movq %r12, %rdi
callq 0x27add
testb %al, %al
je 0x276ad
movq %r12, %rdi
callq 0x1bda4
movq (%rsp), %rcx
movl %eax, 0xc4(%rcx)
jmp 0x26edb
movq (%rsp), %rax
movb $0x1, 0xc9(%rax)
jmp 0x27391
addq 0x50(%rsp), %r14
movq 0x8(%rsp), %rax
leaq 0x1f8(%rsp), %rbp
movzbl (%rax,%r14), %ecx
cmpl $0x20, %ecx
je 0x272a6
cmpl $0x9, %ecx
jne 0x272ab
incq %r14
jmp 0x27297
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 0x2779d
movq %rbp, 0x1e8(%rsp)
movq %r12, %rdi
leaq 0x14596(%rip), %rsi     # 0x3b88b
leaq 0x14592(%rip), %rdx     # 0x3b88e
callq 0x80f4
leaq 0x28(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
movq %r12, %rdx
callq 0x1c232
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x27333
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x28(%rsp), %rax
movq %rbp, 0x1e8(%rsp)
movq 0x10(%rax), %rsi
movq 0x18(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x8a8a
movq %r12, %rdi
callq 0x27add
testb %al, %al
je 0x2774d
movq %r12, %rdi
callq 0x1bda4
movq (%rsp), %rcx
movl %eax, 0xcc(%rcx)
addl $-0xa, %eax
cmpl $-0xa, %eax
ja 0x26edb
jmp 0x2776b
movq (%rsp), %rax
movb $0x1, 0xc8(%rax)
leaq 0x1e8(%rsp), %r12
addq 0xb8(%rsp), %r14
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x273c6
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 0x273f5
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 0x27411
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x74b0
cmpq $-0x1, %rbp
je 0x27422
cmpq 0x10(%rsp), %r14
jb 0x26cb3
leaq 0xa0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x14543(%rip), %rsi     # 0x3b978
leaq 0x1455a(%rip), %rdx     # 0x3b996
leaq 0x90(%rsp), %rdi
callq 0x80f4
leaq 0x90(%rsp), %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x2, %ecx
callq 0xded8
movq 0x90(%rsp), %rdi
cmpq %r14, %rdi
je 0x2747f
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x2749b
movq 0x18(%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 0x1442d(%rip), %rsi     # 0x3b8fb
movq %rax, %rdi
callq 0x78c0
movq 0x26aeb(%rip), %rsi     # 0x4dfc8
movq 0x26acc(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x1441e(%rip), %rsi     # 0x3b91e
movq %rax, %rdi
callq 0x78c0
movq 0x26ab9(%rip), %rsi     # 0x4dfc8
movq 0x26a9a(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x142f7(%rip), %rsi     # 0x3b829
movq %rax, %rdi
callq 0x78c0
movq 0x26a87(%rip), %rsi     # 0x4dfc8
movq 0x26a68(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x277cf
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x14326(%rip), %rsi     # 0x3b88f
movq %rax, %rdi
callq 0x78c0
movq 0x26a50(%rip), %rsi     # 0x4dfc8
movq 0x26a31(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x277cf
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x142cb(%rip), %rsi     # 0x3b86b
movq %rax, %rdi
callq 0x78c0
movq 0x26a19(%rip), %rsi     # 0x4dfc8
movq 0x269fa(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x277cf
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x14273(%rip), %rsi     # 0x3b84a
movq %rax, %rdi
callq 0x78c0
movq 0x269e2(%rip), %rsi     # 0x4dfc8
movq 0x269c3(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x277cf
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x1425d(%rip), %rsi     # 0x3b86b
movq %rax, %rdi
callq 0x78c0
jmp 0x27655
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x1423f(%rip), %rsi     # 0x3b86b
movq %rax, %rdi
callq 0x78c0
jmp 0x27737
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x14262(%rip), %rsi     # 0x3b8af
movq %rax, %rdi
callq 0x78c0
movq 0x2696c(%rip), %rsi     # 0x4dfc8
movq 0x2694d(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x142b9(%rip), %rsi     # 0x3b938
movq %rax, %rdi
callq 0x78c0
jmp 0x27508
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x142bb(%rip), %rsi     # 0x3b95b
movq %rax, %rdi
callq 0x78c0
jmp 0x274d6
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x141ce(%rip), %rsi     # 0x3b88f
movq %rax, %rdi
callq 0x78c0
movq 0x268f8(%rip), %rsi     # 0x4dfc8
movq 0x268d9(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x277cf
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x14173(%rip), %rsi     # 0x3b86b
movq %rax, %rdi
callq 0x78c0
movq 0x268c1(%rip), %rsi     # 0x4dfc8
movq 0x268a2(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x277cf
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x14180(%rip), %rsi     # 0x3b8af
movq %rax, %rdi
callq 0x78c0
movq 0x2688a(%rip), %rsi     # 0x4dfc8
movq 0x2686b(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x1412e(%rip), %rsi     # 0x3b88f
movq %rax, %rdi
callq 0x78c0
jmp 0x27787
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x14110(%rip), %rsi     # 0x3b88f
movq %rax, %rdi
callq 0x78c0
movq 0x2683a(%rip), %rsi     # 0x4dfc8
movq 0x2681b(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
movl $0x10, %edi
callq 0x7260
movq %rax, %r14
leaq 0x140ba(%rip), %rsi     # 0x3b86b
movq %rax, %rdi
callq 0x78c0
movq 0x26808(%rip), %rsi     # 0x4dfc8
movq 0x267e9(%rip), %rdx     # 0x4dfb0
movq %r14, %rdi
callq 0x77d0
jmp 0x2799b
jmp 0x278d7
jmp 0x278e9
jmp 0x278e9
jmp 0x278d7
jmp 0x2799b
jmp 0x278d7
jmp 0x27940
jmp 0x278e9
jmp 0x279ce
jmp 0x279ce
jmp 0x27940
jmp 0x27940
jmp 0x2796a
jmp 0x27979
jmp 0x2799b
jmp 0x279dd
jmp 0x278d7
jmp 0x278d7
jmp 0x27940
jmp 0x2796a
jmp 0x27979
jmp 0x2799b
jmp 0x279dd
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x394b4
jmp 0x2785c
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
callq 0x27d28
jmp 0x2786e
movq %rax, %rbx
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x2788f
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0x2788f
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x279e0
movq 0x38(%rsp), %rsi
jmp 0x279bb
jmp 0x279dd
jmp 0x278d7
jmp 0x2799b
jmp 0x279dd
jmp 0x279c7
movq %rax, %rbx
movq %r14, %rdi
callq 0x7390
jmp 0x279fc
jmp 0x2799b
movq %rax, %rbx
movq %r14, %rdi
callq 0x7390
jmp 0x2799e
jmp 0x27940
movq %rax, %rbx
movq %r14, %rdi
callq 0x7390
jmp 0x27943
jmp 0x2799b
jmp 0x279dd
movq %rax, %rbx
movq 0x90(%rsp), %rdi
cmpq %r14, %rdi
je 0x279fc
movq 0xa0(%rsp), %rsi
jmp 0x279f4
jmp 0x279c7
jmp 0x27928
movq %rax, %rbx
jmp 0x27a18
movq %rax, %rbx
movq %r14, %rdi
callq 0x7390
jmp 0x27a18
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
cmpq %rax, %rdi
je 0x2796d
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0x2796d
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x96d8
jmp 0x2799e
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2799e
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0x2799e
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x279e0
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x74b0
jmp 0x279e0
jmp 0x279dd
movq %rax, %rbx
jmp 0x279fc
jmp 0x279ce
movq %rax, %rbx
movq %r14, %rdi
callq 0x7390
jmp 0x279e0
jmp 0x279dd
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x279fc
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x74b0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x27a18
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x74b0
leaq 0x300(%rsp), %rdi
callq 0x7150
movq %rbx, %rdi
callq 0x7810
nop