// File: DimitriDaSilva[P]42_ft_containers/containers/vector.hpp
// Function: ft::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>::erase(ft::random_access_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>)
iterator
		erase(iterator position)
		{
			// Destroy the element at position
			_allocator.destroy(&*position);

			// Offset all the elements by one to fill the gap
			for (iterator it = position; it + 1 != end(); it++)
			{
				_allocator.construct(&*it, *(it + 1));
				_allocator.destroy(&*(it + 1));
			}

			_size--;

			return position;
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdx, -0x60(%rbp)
movq %rdi, %rax
movq -0x60(%rbp), %rdi
movq %rax, -0x80(%rbp)
movq %rax, %rcx
movq %rcx, -0x78(%rbp)
movq %rax, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
addq $0x10, %rax
movq %rax, -0x68(%rbp)
callq 0x566c0
movq -0x68(%rbp), %rdi
movq %rax, %rsi
callq 0x20ab0
movq -0x60(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x56ac0
leaq -0x28(%rbp), %rdi
leaq -0x20(%rbp), %rsi
movl $0x1, %edx
callq 0x56ae0
jmp 0x677ff
movq -0x70(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x565c0
jmp 0x6780e
leaq -0x28(%rbp), %rdi
leaq -0x40(%rbp), %rsi
movq %rsi, -0x90(%rbp)
callq 0x56590
movq -0x90(%rbp), %rdi
movb %al, -0x81(%rbp)
callq 0x564d0
jmp 0x67836
leaq -0x28(%rbp), %rdi
callq 0x564d0
jmp 0x67841
movb -0x81(%rbp), %al
testb $0x1, %al
jne 0x67888
jmp 0x6784d
leaq -0x20(%rbp), %rdi
callq 0x564d0
jmp 0x6799b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x6798e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x564d0
jmp 0x67883
jmp 0x6798e
movq -0x70(%rbp), %rax
addq $0x10, %rax
movq %rax, -0xa8(%rbp)
leaq -0x20(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x566c0
movq -0xa0(%rbp), %rsi
movq %rax, -0x98(%rbp)
leaq -0x48(%rbp), %rdi
movl $0x1, %edx
callq 0x56ae0
jmp 0x678c5
leaq -0x48(%rbp), %rdi
callq 0x566c0
movq -0xa8(%rbp), %rdi
movq -0x98(%rbp), %rsi
movq %rax, %rdx
callq 0x53e60
jmp 0x678e6
leaq -0x48(%rbp), %rdi
callq 0x564d0
jmp 0x678f1
movq -0x70(%rbp), %rax
addq $0x10, %rax
movq %rax, -0xb0(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x20(%rbp), %rsi
movl $0x1, %edx
callq 0x56ae0
jmp 0x67914
leaq -0x50(%rbp), %rdi
callq 0x566c0
movq -0xb0(%rbp), %rdi
movq %rax, %rsi
callq 0x20ab0
jmp 0x6792e
leaq -0x50(%rbp), %rdi
callq 0x564d0
jmp 0x67939
jmp 0x6793b
leaq -0x58(%rbp), %rdi
leaq -0x20(%rbp), %rsi
xorl %edx, %edx
callq 0x56660
jmp 0x6794c
leaq -0x58(%rbp), %rdi
callq 0x564d0
jmp 0x67957
jmp 0x677eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x564d0
jmp 0x67973
jmp 0x6798e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x564d0
jmp 0x6798c
jmp 0x6798e
leaq -0x20(%rbp), %rdi
callq 0x564d0
jmp 0x67999
jmp 0x679c5
movq -0x60(%rbp), %rsi
movq -0x80(%rbp), %rdi
movq -0x70(%rbp), %rax
movq 0x18(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x18(%rax)
callq 0x56ac0
movq -0x78(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x6310
movq %rax, %rdi
callq 0x7110
nopw %cs:(%rax,%rax)