// File: /workspace/github_c_makefile_star2_O0/carlitosmarin[P]Sistema-Ficheros-SOII/leer_sf.c
// Function: main
int main (int argc, char **argv) {
	if (argc != 2) {
		printf("Numero de parametros incorrectos");
		return -1;
	}
	//Montamos el disco
	if(bmount(argv[1]) < 0){
		printf("No se ha podido abrir el fichero: %s", argv[1]);
		return -1;
	}

	int tamMB, tamAI;

	struct superbloque sb;
	if(bread(posSB,&sb) < 0) {
		printf("Error en la lectura del superbloque");
		bumount();
		return -1;
	}

	leerSB(); //Mostrar todos los campos del superbloque

	tamMB = sb.posUltimoBloqueMB - sb.posPrimerBloqueMB;
	tamAI = sb.posUltimoBloqueAI - sb.posPrimerBloqueAI;
	printf("Tamanyo MB: %d \nTamanyo AI: %d \n", tamMB, tamAI);

	printf("Tamanyo de la estructura inodo: %lu\n", sizeof(struct inodo));

	unsigned int i = 0,y = 1;

	printf("\nPulsa ENTER para mostrar la lista de inodos no libres."); getchar();
	struct tm *ts;
	char atime[80];
	char mtime[80];
	char ctime[80];
	unsigned int x = 0;
	struct inodo in;

	for(i = 0; i < sb.totInodos && x < (sb.totInodos - sb.cantInodosLibres); i++){ // Muestra todos lo ins
		in = leer_inodo(i);
		if(in.tipo != 'l'){
			x++;
			printf("----> Numero inodo: %d\n",i);
			printf("\tTipo de inodo: %c\n",in.tipo);
			printf("\tPermisos: %d\n",in.permisos);
			printf("\tNumero de links: %d\n",in.cantLinks);
			printf("\tTamanyo en bytes logicos: %d\n",in.tamBytesLogicos);
			printf("\tNumero de bloques que ocupa: %d\n",in.cantBloquesOcupados);
			ts = localtime(&in.atime);
			strftime(atime, sizeof(atime), "%a %Y-%m-%d %H:%M:%S", ts);
			ts = localtime(&in.mtime);
			strftime(mtime, sizeof(mtime), "%a %Y-%m-%d %H:%M:%S", ts);
			ts = localtime(&in.ctime);
			strftime(ctime, sizeof(ctime), "%a %Y-%m-%d %H:%M:%S", ts);
			printf("\tATIME: %s\n\tMTIME: %s\n\tCTIME: %s\n",atime,mtime,ctime);
		}
	}

	printf("\nBLOQUES OCUPADOS (%d bloques ocupados)\n", sb.totBloques-sb.cantBloquesLibres);

	bumount();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x630, %rsp            # imm = 0x630
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x2, -0x8(%rbp)
je 0x5ea9
leaq 0x16c3(%rip), %rdi      # 0x7559
movb $0x0, %al
callq 0x1090
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x6199
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12a0
cmpl $0x0, %eax
jge 0x5edd
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x16b0(%rip), %rdi      # 0x757a
movb $0x0, %al
callq 0x1090
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x6199
xorl %edi, %edi
leaq -0x418(%rbp), %rsi
callq 0x13a0
cmpl $0x0, %eax
jge 0x5f11
leaq 0x16a8(%rip), %rdi      # 0x759f
movb $0x0, %al
callq 0x1090
movb $0x0, %al
callq 0x1300
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x6199
movb $0x0, %al
callq 0x1970
movl -0x414(%rbp), %eax
subl -0x418(%rbp), %eax
movl %eax, -0x14(%rbp)
movl -0x40c(%rbp), %eax
subl -0x410(%rbp), %eax
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x1680(%rip), %rdi      # 0x75c3
movb $0x0, %al
callq 0x1090
leaq 0x1693(%rip), %rdi      # 0x75e4
movl $0x80, %esi
movb $0x0, %al
callq 0x1090
movl $0x0, -0x41c(%rbp)
movl $0x1, -0x420(%rbp)
leaq 0x1691(%rip), %rdi      # 0x7609
movb $0x0, %al
callq 0x1090
callq 0x1120
movl $0x0, -0x524(%rbp)
movl $0x0, -0x41c(%rbp)
movl -0x41c(%rbp), %ecx
xorl %eax, %eax
cmpl -0x3ec(%rbp), %ecx
movb %al, -0x629(%rbp)
jae 0x5fcb
movl -0x524(%rbp), %eax
movl -0x3ec(%rbp), %ecx
subl -0x3f4(%rbp), %ecx
cmpl %ecx, %eax
setb %al
movb %al, -0x629(%rbp)
movb -0x629(%rbp), %al
testb $0x1, %al
jne 0x5fda
jmp 0x6178
movl -0x41c(%rbp), %esi
leaq -0x628(%rbp), %rdi
callq 0x1f40
leaq -0x5a8(%rbp), %rdi
leaq -0x628(%rbp), %rsi
movl $0x80, %edx
callq 0x1130
movzbl -0x5a8(%rbp), %eax
cmpl $0x6c, %eax
je 0x6162
movl -0x524(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x524(%rbp)
movl -0x41c(%rbp), %esi
leaq 0x1611(%rip), %rdi      # 0x7641
movb $0x0, %al
callq 0x1090
movzbl -0x5a8(%rbp), %esi
leaq 0x1614(%rip), %rdi      # 0x7659
movb $0x0, %al
callq 0x1090
movzbl -0x5a7(%rbp), %esi
leaq 0x1613(%rip), %rdi      # 0x766d
movb $0x0, %al
callq 0x1090
movl -0x588(%rbp), %esi
leaq 0x160e(%rip), %rdi      # 0x767c
movb $0x0, %al
callq 0x1090
movl -0x584(%rbp), %esi
leaq 0x1610(%rip), %rdi      # 0x7692
movb $0x0, %al
callq 0x1090
movl -0x580(%rbp), %esi
leaq 0x161b(%rip), %rdi      # 0x76b1
movb $0x0, %al
callq 0x1090
leaq -0x5a8(%rbp), %rdi
addq $0x8, %rdi
callq 0x1030
movq %rax, -0x428(%rbp)
leaq -0x480(%rbp), %rdi
movq -0x428(%rbp), %rcx
movl $0x50, %esi
leaq 0x1605(%rip), %rdx      # 0x76d3
callq 0x1150
leaq -0x5a8(%rbp), %rdi
addq $0x10, %rdi
callq 0x1030
movq %rax, -0x428(%rbp)
leaq -0x4d0(%rbp), %rdi
movq -0x428(%rbp), %rcx
movl $0x50, %esi
leaq 0x15cf(%rip), %rdx      # 0x76d3
callq 0x1150
leaq -0x5a8(%rbp), %rdi
addq $0x18, %rdi
callq 0x1030
movq %rax, -0x428(%rbp)
leaq -0x520(%rbp), %rdi
movq -0x428(%rbp), %rcx
movl $0x50, %esi
leaq 0x1599(%rip), %rdx      # 0x76d3
callq 0x1150
leaq -0x480(%rbp), %rsi
leaq -0x4d0(%rbp), %rdx
leaq -0x520(%rbp), %rcx
leaq 0x158d(%rip), %rdi      # 0x76e8
movb $0x0, %al
callq 0x1090
jmp 0x6164
movl -0x41c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x41c(%rbp)
jmp 0x5f98
movl -0x3f0(%rbp), %esi
subl -0x3f8(%rbp), %esi
leaq 0x157f(%rip), %rdi      # 0x770a
movb $0x0, %al
callq 0x1090
movb $0x0, %al
callq 0x1300
movl -0x4(%rbp), %eax
addq $0x630, %rsp            # imm = 0x630
popq %rbp
retq