// File: DaCasBe[P]Gestion-de-asignaturas-mediante-listas-doblemente-enlazadas-ordenadas/asignatura.cpp
// Function: ed::Asignatura::insertarEstudiante(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, float, float)
bool ed::Asignatura::insertarEstudiante(std::string const &nombre, std::string const &apellidos,float teoria, float practica){
	#ifndef NDEBUG
		//Se comprueba la precondicion
		assert(!existeEstudiante(nombre,apellidos));
	#endif //NDEBUG

	int old=getNumeroEstudiantes();

	if(existeEstudiante(nombre,apellidos)){ //Ya existe el estudiante a insertar
		return false;
	}

	else{ //No existe el estudiante a insertar
		Estudiante estudiante(nombre,apellidos,teoria,practica);

		this->_lista.insert(estudiante);

		#ifndef NDEBUG
			//Se comprueba la postcondicion
			assert(existeEstudiante(nombre,apellidos) and old==getNumeroEstudiantes()-1);
		#endif //NDEBUG

		return true;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movss %xmm0, -0x24(%rbp)
movss %xmm1, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq (%rdi), %rax
callq *0x20(%rax)
xorb $-0x1, %al
testb $0x1, %al
jne 0x5912
jmp 0x5914
jmp 0x5933
leaq 0x627a(%rip), %rdi      # 0xbb95
leaq 0x60be(%rip), %rsi      # 0xb9e0
movl $0x3a, %edx
leaq 0x628b(%rip), %rcx      # 0xbbb9
callq 0x3140
movq -0xd8(%rbp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq -0xd8(%rbp), %rdi
movl %eax, -0x2c(%rbp)
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq (%rdi), %rax
callq *0x20(%rax)
testb $0x1, %al
jne 0x595e
jmp 0x5967
movb $0x0, -0x1(%rbp)
jmp 0x5af0
movq -0x18(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0x30e0
movq -0x20(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
callq 0x30e0
jmp 0x5989
movss -0x24(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
callq 0x53c0
jmp 0x59ac
leaq -0xc0(%rbp), %rdi
callq 0x3120
jmp 0x59ba
leaq -0xa0(%rbp), %rdi
callq 0x3120
movq -0xd8(%rbp), %rdi
addq $0x30, %rdi
leaq -0x80(%rbp), %rsi
callq 0x45f0
jmp 0x59dc
movq -0xd8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
movb %al, -0xd9(%rbp)
jmp 0x59fc
movb -0xd9(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xda(%rbp)
jne 0x5a11
jmp 0x5a4c
movq -0xd8(%rbp), %rdi
movl -0x2c(%rbp), %eax
movl %eax, -0xe4(%rbp)
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xe0(%rbp)
jmp 0x5a32
movl -0xe4(%rbp), %eax
movl -0xe0(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
sete %al
movb %al, -0xda(%rbp)
movb -0xda(%rbp), %al
testb $0x1, %al
jne 0x5a58
jmp 0x5a5d
jmp 0x5adf
leaq 0x61bd(%rip), %rdi      # 0xbc21
leaq 0x5f75(%rip), %rsi      # 0xb9e0
movl $0x4a, %edx
leaq 0x6142(%rip), %rcx      # 0xbbb9
callq 0x3140
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
jmp 0x5ab2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x3120
jmp 0x5ab0
jmp 0x5ab2
leaq -0xa0(%rbp), %rdi
callq 0x3120
jmp 0x5ac0
jmp 0x5afe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc8(%rbp)
movl %eax, -0xcc(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x4fd0
jmp 0x5aee
movb $0x1, -0x1(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x4fd0
jmp 0x5af0
jmp 0x5afe
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xf0, %rsp
popq %rbp
retq
movq -0xc8(%rbp), %rdi
callq 0x32b0
movq %rax, %rdi
callq 0x5040
nopw %cs:(%rax,%rax)