// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movss %xmm1, -0x30(%rbp)
movss %xmm0, -0x2c(%rbp)
movq %rdx, %r12
movq %rsi, %r13
movq %rdi, %r14
movq (%rdi), %rax
callq *0x20(%rax)
testb %al, %al
jne 0x3d8e
movq (%r14), %rax
movq %r14, %rdi
callq *0x18(%rax)
movl %eax, %r15d
movq (%r14), %rax
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq *0x20(%rax)
movl %eax, %ebx
testb %al, %al
jne 0x3d77
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0x70(%rbp), %rdi
callq 0x4674
leaq -0x40(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
leaq -0x50(%rbp), %rdi
callq 0x4674
leaq -0xc0(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x50(%rbp), %rdx
movss -0x2c(%rbp), %xmm0
movss -0x30(%rbp), %xmm1
callq 0x37fa
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x3cfd
callq 0x2130
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x3d0f
callq 0x2130
leaq 0x30(%r14), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3204
movq (%r14), %rax
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq *0x20(%rax)
testb %al, %al
je 0x3dad
movq (%r14), %rax
movq %r14, %rdi
callq *0x18(%rax)
decl %eax
cmpl %eax, %r15d
jne 0x3dad
leaq 0x7f17(%rip), %rax      # 0xbc60
leaq -0x88(%rbp), %rcx
movq %rax, -0x38(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x3d62
callq 0x2130
leaq -0xa8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3d77
callq 0x2130
xorb $0x1, %bl
movl %ebx, %eax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4cee(%rip), %rdi      # 0x8a83
leaq 0x4b32(%rip), %rsi      # 0x88ce
leaq 0x4d04(%rip), %rcx      # 0x8aa7
movl $0x3a, %edx
callq 0x20e0
leaq 0x4d5b(%rip), %rdi      # 0x8b0f
leaq 0x4b13(%rip), %rsi      # 0x88ce
leaq 0x4ce5(%rip), %rcx      # 0x8aa7
movl $0x4a, %edx
callq 0x20e0
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x3de6
callq 0x2130
jmp 0x3de6
movq %rax, %rbx
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x3e09
callq 0x2130
jmp 0x3e09
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x3654
movq %rbx, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x3694
nop