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

	unsigned int cantidad_bloques = atoi(argv[2]); //argv[2] = cantidad_bloques

	if(cantidad_bloques <= 0) {
		puts("ERROR: El número de bloques debe ser mayor a 0\n");
		return -1;
	}

	//Montamos el dispositivo
	printf("Montando el dispositivo..");
	bmount (argv[1]); //argv[1] = nombre_fichero
	puts(" OK");

	unsigned char buf[tamBloque];
	memset(buf,0,tamBloque);
	printf("Reiniciando memoria del dispistivo..");
	unsigned int bucle;
	for (bucle = 0; bucle < cantidad_bloques; bucle++) bwrite (bucle, buf); //Llenamos bloques con 0
	puts(" OK");

	int inodos = cantidad_bloques/4; //Calcularemos los inodos

	printf("Iniciando el SuperBloque..");
	if(initSB(cantidad_bloques,inodos) < 0) {
		puts("Error al iniciar el SuperBloque");
		bumount (); //Desmontamos el dispositivo
		return -1;
	}
	puts(" OK");

	printf("Iniciando el Mapa de Bits..");
	if(initMB(cantidad_bloques) < 0) {
		puts("Error al iniciar el Mapa de Bits");
		bumount (); //Desmontamos el dispositivo
		return -1;
	}
	puts(" OK");

	printf("Iniciando el Array de inodos..");
	if(initAI(inodos) < 0) {
		puts("Error al iniciar el Array de inodos");
		bumount (); //Desmontamos el dispositivo
		return -1;
	}
	puts(" OK");

	printf("Reservando el Inodo Raiz..");
	reservar_inodo ('d',7);
	puts(" OK");


	//Desmontamos el dispositivo
	bumount ();

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x430, %rsp            # imm = 0x430
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x3, -0x8(%rbp)
je 0x5e97
leaq 0x16d3(%rip), %rdi      # 0x7559
callq 0x1060
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x606c
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x1150
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
ja 0x5ec5
leaq 0x16c8(%rip), %rdi      # 0x757c
callq 0x1060
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x606c
leaq 0x16e1(%rip), %rdi      # 0x75ad
movb $0x0, %al
callq 0x1090
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1290
leaq 0x16e0(%rip), %rdi      # 0x75c7
callq 0x1060
leaq -0x420(%rbp), %rdi
xorl %esi, %esi
movl $0x400, %edx            # imm = 0x400
callq 0x10b0
leaq 0x16c5(%rip), %rdi      # 0x75cb
movb $0x0, %al
callq 0x1090
movl $0x0, -0x424(%rbp)
movl -0x424(%rbp), %eax
cmpl -0x14(%rbp), %eax
jae 0x5f45
movl -0x424(%rbp), %edi
leaq -0x420(%rbp), %rsi
callq 0x1330
movl -0x424(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x424(%rbp)
jmp 0x5f17
leaq 0x167b(%rip), %rdi      # 0x75c7
callq 0x1060
movl -0x14(%rbp), %eax
shrl $0x2, %eax
movl %eax, -0x428(%rbp)
leaq 0x168c(%rip), %rdi      # 0x75f0
movb $0x0, %al
callq 0x1090
movl -0x14(%rbp), %edi
movl -0x428(%rbp), %esi
callq 0x14b0
cmpl $0x0, %eax
jge 0x5f9d
leaq 0x1686(%rip), %rdi      # 0x760b
callq 0x1060
movb $0x0, %al
callq 0x12f0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x606c
leaq 0x1623(%rip), %rdi      # 0x75c7
callq 0x1060
leaq 0x167b(%rip), %rdi      # 0x762b
movb $0x0, %al
callq 0x1090
movl -0x14(%rbp), %edi
callq 0x15b0
cmpl $0x0, %eax
jge 0x5fe3
leaq 0x167c(%rip), %rdi      # 0x7647
callq 0x1060
movb $0x0, %al
callq 0x12f0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x606c
leaq 0x15dd(%rip), %rdi      # 0x75c7
callq 0x1060
leaq 0x1672(%rip), %rdi      # 0x7668
movb $0x0, %al
callq 0x1090
movl -0x428(%rbp), %edi
callq 0x1810
cmpl $0x0, %eax
jge 0x6029
leaq 0x1673(%rip), %rdi      # 0x7687
callq 0x1060
movb $0x0, %al
callq 0x12f0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x606c
leaq 0x1597(%rip), %rdi      # 0x75c7
callq 0x1060
leaq 0x166f(%rip), %rdi      # 0x76ab
movb $0x0, %al
callq 0x1090
movl $0x64, %edi
movl $0x7, %esi
callq 0x1fc0
leaq 0x156e(%rip), %rdi      # 0x75c7
callq 0x1060
movb $0x0, %al
callq 0x12f0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x430, %rsp            # imm = 0x430
popq %rbp
retq