// File: /workspace/github_c_makefile_star2_O0/carlitosmarin[P]Sistema-Ficheros-SOII/simulacion.c
// Function: main
int main (int argc, char **argv) {
	if (argc != 2) {
		printf("Número de parametros incorrectos\n");
		return -1;
	}
	bmount(argv[1]);

	char fech[16];
	char f[8] = "/simul_";

	struct tm *ts;
	time_t t = time(NULL);
	ts = localtime(&t);
	strftime(fech, sizeof(fech), "%Y%m%d%H%M%S/", ts);
	strcpy(directorio, f);
	strcat(directorio, fech);

	if(mi_creat(directorio, 7) < 0){ //Creamos el directorio
		printf("ERROR: El directorio (%s) no se ha podido crear\n", directorio);
		bumount(); //Desmontamos el sistema de ficheros
		return -1;
	}

	acabados = 0;
	signal(SIGCHLD, reaper);
	while(acabados < PROCESOS) {
		if(fork() == 0) proceso(getpid()); //Creamos un nuevo proceso
		usleep(200000); //Provocamos la espera de creacion de procesos (0.2 s)
	}

	if(acabados < PROCESOS) pause(); //Esperamos a que todos los procesos acaben

	char buffer[64*200];
	memset(buffer,0,tamBloque);
	printf("Directorio raiz %s:\n", directorio);

	if(mi_dir (directorio,(char *)buffer) >= 0) {
		printf("%c[%d;%dmTipo\tPerm.\tmTime\t\t\tNombre%c[%dm\n",27,0,32,27,0);
		puts("-------------------------------------------------------------------");
		printf("%s\n", buffer);
	} else puts("Error: No se ha podido llevar a cabo mi_ls\n");

	puts("\n-----------------FINIQUITAO------------------");
	bumount(); //Desmontamos el sistema de ficheros
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3240, %rsp           # imm = 0x3240
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x2, -0x8(%rbp)
je 0x61a9
leaq 0x14fd(%rip), %rdi      # 0x7693
movb $0x0, %al
callq 0x10b0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x634a
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1320
movq 0x14f9(%rip), %rax      # 0x76b6
movq %rax, -0x28(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x1170
movq %rax, -0x38(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x1030
movq %rax, -0x30(%rbp)
leaq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rcx
movl $0x10, %esi
leaq 0x14cf(%rip), %rdx      # 0x76be
callq 0x1190
leaq -0x28(%rbp), %rsi
leaq 0x3f51(%rip), %rdi      # 0xa150
callq 0x1040
leaq -0x20(%rbp), %rsi
leaq 0x3f41(%rip), %rdi      # 0xa150
callq 0x11b0
leaq 0x3f35(%rip), %rdi      # 0xa150
movl $0x7, %esi
callq 0x4c20
cmpl $0x0, %eax
jge 0x6252
leaq 0x149b(%rip), %rdi      # 0x76cc
leaq 0x3f18(%rip), %rsi      # 0xa150
movb $0x0, %al
callq 0x10b0
movb $0x0, %al
callq 0x1380
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x634a
movl $0x0, 0x3ee4(%rip)      # 0xa140
movl $0x11, %edi
leaq -0x378(%rip), %rsi      # 0x5ef0
callq 0x1150
cmpl $0x64, 0x3ecc(%rip)     # 0xa140
jge 0x6298
callq 0x11f0
cmpl $0x0, %eax
jne 0x628c
callq 0x1080
movl %eax, %edi
callq 0x5f20
movl $0x30d40, %edi          # imm = 0x30D40
callq 0x1210
jmp 0x626d
cmpl $0x64, 0x3ea1(%rip)     # 0xa140
jge 0x62a6
callq 0x1180
leaq -0x3240(%rbp), %rdi
xorl %esi, %esi
movl $0x400, %edx            # imm = 0x400
callq 0x10d0
leaq 0x143d(%rip), %rdi      # 0x76fd
leaq 0x3e89(%rip), %rsi      # 0xa150
movb $0x0, %al
callq 0x10b0
leaq -0x3240(%rbp), %rsi
leaq 0x3e74(%rip), %rdi      # 0xa150
callq 0x4d90
cmpl $0x0, %eax
jl 0x632b
leaq 0x12f2(%rip), %rdi      # 0x75df
movl $0x1b, %r8d
xorl %r9d, %r9d
movl $0x20, %ecx
movl %r8d, %esi
movl %r9d, %edx
movb $0x0, %al
callq 0x10b0
leaq 0x12fa(%rip), %rdi      # 0x7609
callq 0x1060
leaq -0x3240(%rbp), %rsi
leaq 0x136d(%rip), %rdi      # 0x768f
movb $0x0, %al
callq 0x10b0
jmp 0x6337
leaq 0x131b(%rip), %rdi      # 0x764d
callq 0x1060
leaq 0x13d4(%rip), %rdi      # 0x7712
callq 0x1060
movb $0x0, %al
callq 0x1380
movl -0x4(%rbp), %eax
addq $0x3240, %rsp           # imm = 0x3240
popq %rbp
retq