// File: /workspace/github_c_makefile_star2_O3/carlitosmarin[P]Sistema-Ficheros-SOII/mi_stat.c
// Function: main
int main (int argc, char **argv) {
	if (argc != 3) {
		printf("Número de parametros incorrectos\n");
		return -1;
	}
	//Montamos el disco
	bmount(argv[1]);

	struct STAT stat;
	struct tm *tm;

	if(mi_stat (argv[2],&stat) == 0) {
		printf("------- Informacion de la entrada %s -------\n", argv[2]);
		printf("Tipo: %c. \n", stat.tipo);
		printf("Permisos: %d. \n", stat.permisos);
		printf("Numero de links: %d. \n", stat.cantLinks);
		printf("Tamaño en Bytes Logicos: %d. \n", stat.tamBytesLogicos);
		printf("Bloques Ocupados: %d. \n", stat.cantBloquesOcupados);

		//Fechas (atime,mtime,ctime)
		tm = localtime(&stat.atime); //Ultimo acceso a datos
		printf("Ultimo acceso a los datos: %d-%02d-%02d %02d:%02d:%02d\t \n", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);

		tm = localtime(&stat.mtime); //Ultimo modificacion de los datos
		printf("Ultima modificacion de los datos: %d-%02d-%02d %02d:%02d:%02d\t \n", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);

		tm = localtime(&stat.ctime); //Ultimo modificacion del inodo
		printf("Ultima modificacion del inodo: %d-%02d-%02d %02d:%02d:%02d\t \n", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
	} else printf("Error: No se ha podido llevar a cabo mi_stat");

	bumount();
	return 0;
}

// Assembly:
pushq %rbx
subq $0x40, %rsp
cmpl $0x3, %edi
jne 0x3d37
movq %rsi, %rbx
movq 0x8(%rsi), %rdi
callq 0x127c
movq 0x10(%rbx), %rdi
leaq 0x10(%rsp), %rsi
callq 0x39c1
testl %eax, %eax
je 0x3d4d
leaq 0x94f(%rip), %rdi       # 0x467a
xorl %eax, %eax
callq 0x1090
jmp 0x3e54
leaq 0x969(%rip), %rdi       # 0x46a7
callq 0x1060
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x3e5d
movq 0x10(%rbx), %rsi
leaq 0x7d0(%rip), %rdi       # 0x4528
xorl %eax, %eax
callq 0x1090
leaq 0x18(%rsp), %rbx
movzbl -0x8(%rbx), %esi
leaq 0x7e7(%rip), %rdi       # 0x4556
xorl %eax, %eax
callq 0x1090
movzbl -0x7(%rbx), %esi
leaq 0x7e1(%rip), %rdi       # 0x4562
xorl %eax, %eax
callq 0x1090
movl 0x18(%rbx), %esi
leaq 0x7e0(%rip), %rdi       # 0x4572
xorl %eax, %eax
callq 0x1090
movl 0x1c(%rbx), %esi
leaq 0x7e6(%rip), %rdi       # 0x4589
xorl %eax, %eax
callq 0x1090
movl 0x20(%rbx), %esi
leaq 0x7f5(%rip), %rdi       # 0x45a9
xorl %eax, %eax
callq 0x1090
movq %rbx, %rdi
callq 0x1030
movl $0x76c, %ebx            # imm = 0x76C
movl 0x14(%rax), %esi
addl %ebx, %esi
movl 0x10(%rax), %edx
incl %edx
movl 0xc(%rax), %ecx
movl 0x8(%rax), %r8d
movl (%rax), %edi
movl 0x4(%rax), %r9d
movl %edi, (%rsp)
leaq 0x7d8(%rip), %rdi       # 0x45c1
xorl %eax, %eax
callq 0x1090
leaq 0x20(%rsp), %rdi
callq 0x1030
movl 0x14(%rax), %esi
addl %ebx, %esi
movl 0x10(%rax), %edx
incl %edx
movl 0xc(%rax), %ecx
movl 0x8(%rax), %r8d
movl (%rax), %edi
movl 0x4(%rax), %r9d
movl %edi, (%rsp)
leaq 0x7e0(%rip), %rdi       # 0x45fb
xorl %eax, %eax
callq 0x1090
leaq 0x28(%rsp), %rdi
callq 0x1030
addl 0x14(%rax), %ebx
movl 0x10(%rax), %edx
incl %edx
movl 0xc(%rax), %ecx
movl 0x8(%rax), %r8d
movl (%rax), %esi
movl 0x4(%rax), %r9d
movl %esi, (%rsp)
leaq 0x7f1(%rip), %rdi       # 0x463c
movl %ebx, %esi
xorl %eax, %eax
callq 0x1090
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x12ba
movl %ebx, %eax
addq $0x40, %rsp
popq %rbx
retq