// File: mbourand[P]webserv/srcs/Utils/CGI.cpp
// Function: CGI::add_http_headers(std::vector<Header*, std::allocator<Header*>> const&)
void			CGI::add_http_headers(const Request::HeadersVector& headers)
{
	for (Request::HeadersVector::const_iterator it = headers.begin(); it != headers.end(); it++)
	{
		if ((*it)->getType() == AcceptCharsetsHeader().getType() || (*it)->getType() == AcceptEncodingHeader().getType()
			|| (*it)->getType() == AcceptLanguageHeader().getType() || (*it)->getType() == HostHeader().getType()
			|| (*it)->getType() == RefererHeader().getType() || (*it)->getType() == UserAgentHeader().getType()
			|| (*it)->getType().find("X-") == 0)
		{
			std::string	temp;
			temp = "HTTP_" + (*it)->getType();
			for (std::string::iterator its = temp.begin() + 6; its != temp.end(); its++)
			{
				if (*its == '-')
					*its = '_';
				else
					*its = std::toupper(*its);
			}
			temp += '=' + (*it)->getValue();
			m_env.push_back(temp);
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3e0, %rsp            # imm = 0x3E0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x3c8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x14440
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x144b0
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x14470
testb $0x1, %al
jne 0x1f61e
jmp 0x200ad
leaq -0x18(%rbp), %rdi
callq 0x14570
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x40(%rbp), %rdi
callq *%rax
movb $0x0, -0xb9(%rbp)
movb $0x0, -0x109(%rbp)
movb $0x0, -0x10a(%rbp)
movb $0x0, -0x131(%rbp)
movb $0x0, -0x181(%rbp)
movb $0x0, -0x182(%rbp)
movb $0x0, -0x1a9(%rbp)
movb $0x0, -0x1f9(%rbp)
movb $0x0, -0x1fa(%rbp)
movb $0x0, -0x221(%rbp)
movb $0x0, -0x271(%rbp)
movb $0x0, -0x272(%rbp)
movb $0x0, -0x299(%rbp)
movb $0x0, -0x2e9(%rbp)
movb $0x0, -0x2ea(%rbp)
movb $0x0, -0x311(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xa5c0
jmp 0x1f6b5
leaq -0x60(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0xa6b0
jmp 0x1f6c7
leaq -0x40(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x144e0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x3c9(%rbp)
jne 0x1f998
leaq -0x18(%rbp), %rdi
callq 0x14570
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0xb8(%rbp), %rdi
callq *%rax
jmp 0x1f705
movb $0x1, -0xb9(%rbp)
leaq -0x108(%rbp), %rdi
callq 0xaad0
jmp 0x1f71a
movb $0x1, -0x109(%rbp)
leaq -0xe0(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xabc0
jmp 0x1f736
movb $0x1, -0x10a(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x144e0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x3c9(%rbp)
jne 0x1f998
leaq -0x18(%rbp), %rdi
callq 0x14570
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x130(%rbp), %rdi
callq *%rax
jmp 0x1f781
movb $0x1, -0x131(%rbp)
leaq -0x180(%rbp), %rdi
callq 0xac90
jmp 0x1f796
movb $0x1, -0x181(%rbp)
leaq -0x158(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xad80
jmp 0x1f7b2
movb $0x1, -0x182(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x144e0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x3c9(%rbp)
jne 0x1f998
leaq -0x18(%rbp), %rdi
callq 0x14570
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x1a8(%rbp), %rdi
callq *%rax
jmp 0x1f7fd
movb $0x1, -0x1a9(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0xbf70
jmp 0x1f812
movb $0x1, -0x1f9(%rbp)
leaq -0x1d0(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0xc060
jmp 0x1f82e
movb $0x1, -0x1fa(%rbp)
leaq -0x1a8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x144e0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x3c9(%rbp)
jne 0x1f998
leaq -0x18(%rbp), %rdi
callq 0x14570
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x220(%rbp), %rdi
callq *%rax
jmp 0x1f879
movb $0x1, -0x221(%rbp)
leaq -0x270(%rbp), %rdi
callq 0xdf80
jmp 0x1f88e
movb $0x1, -0x271(%rbp)
leaq -0x248(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0xe070
jmp 0x1f8aa
movb $0x1, -0x272(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x144e0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x3c9(%rbp)
jne 0x1f998
leaq -0x18(%rbp), %rdi
callq 0x14570
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x298(%rbp), %rdi
callq *%rax
jmp 0x1f8f5
movb $0x1, -0x299(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0xe680
jmp 0x1f90a
movb $0x1, -0x2e9(%rbp)
leaq -0x2c0(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0xe770
jmp 0x1f926
movb $0x1, -0x2ea(%rbp)
leaq -0x298(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x144e0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x3c9(%rbp)
jne 0x1f998
leaq -0x18(%rbp), %rdi
callq 0x14570
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x310(%rbp), %rdi
callq *%rax
jmp 0x1f96d
movb $0x1, -0x311(%rbp)
leaq -0x310(%rbp), %rdi
leaq 0x4b24a(%rip), %rsi     # 0x6abcc
xorl %eax, %eax
movl %eax, %edx
callq 0x9c60
cmpq $0x0, %rax
sete %al
movb %al, -0x3c9(%rbp)
movb -0x3c9(%rbp), %al
movb %al, -0x3ca(%rbp)
testb $0x1, -0x311(%rbp)
jne 0x1f9af
jmp 0x1f9bb
leaq -0x310(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x2ea(%rbp)
jne 0x1f9c6
jmp 0x1f9d2
leaq -0x2c0(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x2e9(%rbp)
jne 0x1f9dd
jmp 0x1f9e9
leaq -0x2e8(%rbp), %rdi
callq 0xe700
testb $0x1, -0x299(%rbp)
jne 0x1f9f4
jmp 0x1fa00
leaq -0x298(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x272(%rbp)
jne 0x1fa0b
jmp 0x1fa17
leaq -0x248(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x271(%rbp)
jne 0x1fa22
jmp 0x1fa2e
leaq -0x270(%rbp), %rdi
callq 0xe000
testb $0x1, -0x221(%rbp)
jne 0x1fa39
jmp 0x1fa45
leaq -0x220(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x1fa(%rbp)
jne 0x1fa50
jmp 0x1fa5c
leaq -0x1d0(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x1f9(%rbp)
jne 0x1fa67
jmp 0x1fa73
leaq -0x1f8(%rbp), %rdi
callq 0xbff0
testb $0x1, -0x1a9(%rbp)
jne 0x1fa7e
jmp 0x1fa8a
leaq -0x1a8(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x182(%rbp)
jne 0x1fa95
jmp 0x1faa1
leaq -0x158(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x181(%rbp)
jne 0x1faac
jmp 0x1fab8
leaq -0x180(%rbp), %rdi
callq 0xad10
testb $0x1, -0x131(%rbp)
jne 0x1fac3
jmp 0x1facf
leaq -0x130(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x10a(%rbp)
jne 0x1fada
jmp 0x1fae6
leaq -0xe0(%rbp), %rdi
callq 0x9c98
testb $0x1, -0x109(%rbp)
jne 0x1faf1
jmp 0x1fafd
leaq -0x108(%rbp), %rdi
callq 0xab50
testb $0x1, -0xb9(%rbp)
jne 0x1fb08
jmp 0x1fb14
leaq -0xb8(%rbp), %rdi
callq 0x9c98
leaq -0x60(%rbp), %rdi
callq 0x9c98
leaq -0x88(%rbp), %rdi
callq 0xa640
leaq -0x40(%rbp), %rdi
callq 0x9c98
movb -0x3ca(%rbp), %al
testb $0x1, %al
jne 0x1fb41
jmp 0x20094
leaq -0x338(%rbp), %rdi
callq 0x98c0
leaq -0x18(%rbp), %rdi
callq 0x14570
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x378(%rbp), %rdi
callq *%rax
jmp 0x1fb6b
leaq 0x4b05d(%rip), %rsi     # 0x6abcf
leaq -0x358(%rbp), %rdi
leaq -0x378(%rbp), %rdx
callq 0x14790
jmp 0x1fb87
leaq -0x338(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x97e0
leaq -0x358(%rbp), %rdi
callq 0x9c98
leaq -0x378(%rbp), %rdi
callq 0x9c98
leaq -0x338(%rbp), %rdi
callq 0x95b0
movq %rax, -0x388(%rbp)
leaq -0x388(%rbp), %rdi
movl $0x6, %esi
callq 0x21b40
movq %rax, -0x380(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x9400
movq %rax, -0x390(%rbp)
leaq -0x380(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x21b80
testb $0x1, %al
jne 0x1fc0c
jmp 0x1ffe9
leaq -0x380(%rbp), %rdi
callq 0x21bc0
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x1ff9f
leaq -0x380(%rbp), %rdi
callq 0x21bc0
movb $0x5f, (%rax)
jmp 0x1ffcd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1ff57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1ff4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1ff42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1ff29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1ff10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fef7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fede
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fec5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1feac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fe93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fe7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fe61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fe48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fe2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fe16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fdfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x1fde4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
testb $0x1, -0x2ea(%rbp)
jne 0x1fdd6
jmp 0x1fde2
leaq -0x2c0(%rbp), %rdi
callq 0x9c98
jmp 0x1fde4
testb $0x1, -0x2e9(%rbp)
jne 0x1fdef
jmp 0x1fdfb
leaq -0x2e8(%rbp), %rdi
callq 0xe700
jmp 0x1fdfd
testb $0x1, -0x299(%rbp)
jne 0x1fe08
jmp 0x1fe14
leaq -0x298(%rbp), %rdi
callq 0x9c98
jmp 0x1fe16
testb $0x1, -0x272(%rbp)
jne 0x1fe21
jmp 0x1fe2d
leaq -0x248(%rbp), %rdi
callq 0x9c98
jmp 0x1fe2f
testb $0x1, -0x271(%rbp)
jne 0x1fe3a
jmp 0x1fe46
leaq -0x270(%rbp), %rdi
callq 0xe000
jmp 0x1fe48
testb $0x1, -0x221(%rbp)
jne 0x1fe53
jmp 0x1fe5f
leaq -0x220(%rbp), %rdi
callq 0x9c98
jmp 0x1fe61
testb $0x1, -0x1fa(%rbp)
jne 0x1fe6c
jmp 0x1fe78
leaq -0x1d0(%rbp), %rdi
callq 0x9c98
jmp 0x1fe7a
testb $0x1, -0x1f9(%rbp)
jne 0x1fe85
jmp 0x1fe91
leaq -0x1f8(%rbp), %rdi
callq 0xbff0
jmp 0x1fe93
testb $0x1, -0x1a9(%rbp)
jne 0x1fe9e
jmp 0x1feaa
leaq -0x1a8(%rbp), %rdi
callq 0x9c98
jmp 0x1feac
testb $0x1, -0x182(%rbp)
jne 0x1feb7
jmp 0x1fec3
leaq -0x158(%rbp), %rdi
callq 0x9c98
jmp 0x1fec5
testb $0x1, -0x181(%rbp)
jne 0x1fed0
jmp 0x1fedc
leaq -0x180(%rbp), %rdi
callq 0xad10
jmp 0x1fede
testb $0x1, -0x131(%rbp)
jne 0x1fee9
jmp 0x1fef5
leaq -0x130(%rbp), %rdi
callq 0x9c98
jmp 0x1fef7
testb $0x1, -0x10a(%rbp)
jne 0x1ff02
jmp 0x1ff0e
leaq -0xe0(%rbp), %rdi
callq 0x9c98
jmp 0x1ff10
testb $0x1, -0x109(%rbp)
jne 0x1ff1b
jmp 0x1ff27
leaq -0x108(%rbp), %rdi
callq 0xab50
jmp 0x1ff29
testb $0x1, -0xb9(%rbp)
jne 0x1ff34
jmp 0x1ff40
leaq -0xb8(%rbp), %rdi
callq 0x9c98
jmp 0x1ff42
leaq -0x60(%rbp), %rdi
callq 0x9c98
leaq -0x88(%rbp), %rdi
callq 0xa640
leaq -0x40(%rbp), %rdi
callq 0x9c98
jmp 0x200b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x20086
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x9c98
jmp 0x20086
leaq -0x380(%rbp), %rdi
callq 0x21bc0
movsbl (%rax), %edi
callq 0x9bc0
movb %al, -0x3cb(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x21bc0
movb -0x3cb(%rbp), %cl
movb %cl, (%rax)
jmp 0x1ffcf
leaq -0x380(%rbp), %rdi
xorl %esi, %esi
callq 0x21be0
movq %rax, -0x398(%rbp)
jmp 0x1fbdd
leaq -0x18(%rbp), %rdi
callq 0x14570
movq (%rax), %rdi
callq 0xbf40
movq %rax, -0x3d8(%rbp)
jmp 0x20003
movq -0x3d8(%rbp), %rdx
leaq -0x3b8(%rbp), %rdi
movl $0x3d, %esi
callq 0x21c20
jmp 0x2001d
leaq -0x338(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
callq 0x9830
jmp 0x20032
leaq -0x3b8(%rbp), %rdi
callq 0x9c98
movq -0x3c8(%rbp), %rdi
addq $0xf8, %rdi
leaq -0x338(%rbp), %rsi
callq 0x21a00
jmp 0x2005a
leaq -0x338(%rbp), %rdi
callq 0x9c98
jmp 0x20094
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0x9c98
leaq -0x338(%rbp), %rdi
callq 0x9c98
jmp 0x200b6
jmp 0x20096
leaq -0x18(%rbp), %rdi
xorl %esi, %esi
callq 0x14590
movq %rax, -0x3c0(%rbp)
jmp 0x1f5fb
addq $0x3e0, %rsp            # imm = 0x3E0
popq %rbp
retq
movq -0x90(%rbp), %rdi
callq 0x9af0
nopw %cs:(%rax,%rax)