// File: /workspace/github_cpp_makefile_star2_O2/DaCasBe[P]Gestion-de-asignaturas-mediante-listas-doblemente-enlazadas-ordenadas/principalAsignatura.cpp
// Function: main
int main(){

	ed::Asignatura asignatura;

	int opcion;

	do{

		// Se elige la opción del menún
		opcion = ed::menu();		

		std::cout << CLEAR_SCREEN;
		LUGAR(5,1);

		// Se ejecuta la opción del menú elegida
		switch(opcion)
		{
			case 0: 
				std::cout << INVERSE;
				std::cout << "Fin del programa" << std::endl;
				std::cout << RESET;
			break;

			case 1: 
					std::cout << "[1] Comprobar si la asignatura está vacía" << std::endl;
					ed::comprobarAsignaturaVacia(asignatura);
					break;

			case 2: 
				  std::cout << "[2] Cargar la asignatura de un fichero" << std::endl;
					ed::cargarAsignatura(asignatura);
				break;

			case 3: 
				  std::cout << "[3] Grabar la asignatura en un fichero" << std::endl;
					ed::grabarAsignatura(asignatura);
					break;

			case 4: 
			  	std::cout << "[4] Consultar datos de la asignatura: " << std::endl; 
					ed::consultarAsignatura(asignatura);
					break;

			case 5: 
					std::cout << "[5] Modificar datos de la asignatura: código o nombre" << std::endl;
				  ed::modificarAsignatura(asignatura);
					break;

			case 6: 
					std::cout << "[6] Borrar una asignatura" << std::endl;
				  ed::borrarAsignatura(asignatura);
					break;


			case 7: 
					std::cout << "[7] Consultar un estudiante" << std::endl;
			    consultarEstudianteDeAsignatura(asignatura);
					break;

			case 8: 
					std::cout << "[8] Insertar un estudiante" << std::endl;
				  insertarEstudianteEnAsignatura(asignatura);
					break;

			case 9: 
					std::cout << "[9] Modificar un estudiante" << std::endl;
				  modificarEstudianteDeAsignatura(asignatura);
					break;

			case 10: 
					std::cout << "[10] Borrar un estudiante" << std::endl;
					borrarEstudianteDeAsignatura(asignatura);
					break;

			default:
			    LUGAR(25,25);
					std::cout << INVERSE;
					std::cout << "Opción incorrecta ";
					std::cout << RESET;
			  	std::cout << RED;
					std::cout << " --> " << opcion << std::endl;
					std::cout << RESET;
     }
  
    if (opcion !=0)
    {
		 LUGAR(30,25);
		 std::cout << "pulse ";
		 std::cout << UNDERLINE;
		 std::cout << IYELLOW;
		 std::cout << "ENTER";
		 std::cout << RESET;
		 std::cout << " para ";
		 std::cout << INVERSE;
		 std::cout << "continuar"; 
		 std::cout << RESET;
		 getchar();
		 std::cout << CLEAR_SCREEN;
    }
	  }while(opcion!=0);

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
leaq 0x12dd(%rip), %rsi      # 0x6d01
leaq -0x98(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x20a0
leaq -0x78(%rbp), %rdi
leaq -0x98(%rbp), %rdx
xorl %esi, %esi
callq 0x5dc4
leaq -0x98(%rbp), %rdi
callq 0x2190
movq 0x4577(%rip), %rbx      # 0x9fd0
leaq 0x1260(%rip), %r14      # 0x6cc0
leaq 0x125e(%rip), %r15      # 0x6cc5
leaq 0x5b8(%rip), %r13       # 0x6026
callq 0x3f38
movl %eax, %r12d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2160
movq %r15, %rdi
pushq $0x5
popq %rsi
pushq $0x1
popq %rdx
xorl %eax, %eax
callq 0x2040
cmpl $0xa, %r12d
ja 0x5c1d
movl %r12d, %eax
leaq 0x1963(%rip), %rcx      # 0x7408
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
leaq 0x124a(%rip), %rsi      # 0x6d02
callq 0x2160
movq %rax, %rdi
callq 0x20d0
leaq -0x78(%rbp), %rdi
callq 0x4173
jmp 0x5c91
movq %rbx, %rdi
leaq 0x138f(%rip), %rsi      # 0x6e6c
callq 0x2160
movq %rax, %rdi
callq 0x20d0
leaq -0x78(%rbp), %rdi
callq 0x56fa
jmp 0x5c91
movq %rbx, %rdi
leaq 0x1253(%rip), %rsi      # 0x6d55
callq 0x2160
movq %rax, %rdi
callq 0x20d0
leaq -0x78(%rbp), %rdi
callq 0x4440
jmp 0x5c91
movq %rbx, %rdi
leaq 0x1923(%rip), %rsi      # 0x744a
callq 0x2160
movq %rax, %rdi
callq 0x20d0
leaq -0x78(%rbp), %rdi
callq 0x4575
jmp 0x5c91
movq %rbx, %rdi
leaq 0x12e9(%rip), %rsi      # 0x6e35
callq 0x2160
movq %rax, %rdi
callq 0x20d0
leaq -0x78(%rbp), %rdi
callq 0x4e8d
jmp 0x5c91
movq %rbx, %rdi
leaq 0x128e(%rip), %rsi      # 0x6dff
callq 0x2160
movq %rax, %rdi
callq 0x20d0
leaq -0x78(%rbp), %rdi
callq 0x4350
jmp 0x5c91
movq %rbx, %rdi
leaq 0x1198(%rip), %rsi      # 0x6d2e
callq 0x2160
movq %rax, %rdi
callq 0x20d0
leaq -0x78(%rbp), %rdi
callq 0x423a
jmp 0x5c91
movq %rbx, %rdi
leaq 0x125e(%rip), %rsi      # 0x6e19
callq 0x2160
movq %rax, %rdi
callq 0x20d0
leaq -0x78(%rbp), %rdi
callq 0x4aab
jmp 0x5c91
movq %rbx, %rdi
leaq 0x1270(%rip), %rsi      # 0x6e50
callq 0x2160
movq %rax, %rdi
callq 0x20d0
leaq -0x78(%rbp), %rdi
callq 0x5021
jmp 0x5c91
movq %rbx, %rdi
leaq 0x11c3(%rip), %rsi      # 0x6dc8
callq 0x2160
movq %rax, %rdi
callq 0x20d0
leaq -0x78(%rbp), %rdi
callq 0x47b9
jmp 0x5c91
movq %r15, %rdi
pushq $0x19
popq %rdx
movl %edx, %esi
xorl %eax, %eax
callq 0x2040
movq %rbx, %rdi
leaq 0x17fe(%rip), %rsi      # 0x7434
callq 0x2160
movq %rbx, %rdi
leaq 0x182c(%rip), %rsi      # 0x7471
callq 0x2160
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2160
movq %rbx, %rdi
leaq 0x145d(%rip), %rsi      # 0x70bc
callq 0x2160
movq %rbx, %rdi
leaq 0x1817(%rip), %rsi      # 0x7485
callq 0x2160
movq %rax, %rdi
movl %r12d, %esi
callq 0x2220
movq %rax, %rdi
callq 0x20d0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2160
movq %r15, %rdi
pushq $0x1e
popq %rsi
pushq $0x19
popq %rdx
xorl %eax, %eax
callq 0x2040
movq %rbx, %rdi
leaq 0x17e0(%rip), %rsi      # 0x748b
callq 0x2160
movq %rbx, %rdi
leaq 0x17d8(%rip), %rsi      # 0x7492
callq 0x2160
movq %rbx, %rdi
leaq 0x3bc(%rip), %rsi       # 0x6085
callq 0x2160
movq %rbx, %rdi
leaq 0x17bf(%rip), %rsi      # 0x7497
callq 0x2160
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2160
movq %rbx, %rdi
leaq 0x17ab(%rip), %rsi      # 0x749d
callq 0x2160
movq %rbx, %rdi
leaq 0x1733(%rip), %rsi      # 0x7434
callq 0x2160
movq %rbx, %rdi
leaq 0x1794(%rip), %rsi      # 0x74a4
callq 0x2160
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2160
callq 0x21c0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2160
jmp 0x5a6e
movq 0x4294(%rip), %rdi      # 0x9fd0
leaq 0x16f1(%rip), %rsi      # 0x7434
callq 0x2160
movq 0x4281(%rip), %rdi      # 0x9fd0
leaq 0x16e3(%rip), %rsi      # 0x7439
callq 0x2160
movq %rax, %rdi
callq 0x20d0
movq 0x4266(%rip), %rdi      # 0x9fd0
leaq 0x2b5(%rip), %rsi       # 0x6026
callq 0x2160
leaq -0x78(%rbp), %rdi
callq 0x5e50
xorl %eax, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x98(%rbp), %rdi
callq 0x2190
jmp 0x5db4
movq %rax, %rbx
jmp 0x5db4
jmp 0x5da8
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
callq 0x5e50
movq %rbx, %rdi
callq 0x2230
movq %rax, %rdi
callq 0x336e