// File: /workspace/github_c_makefile_star2_O3/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 %r14
pushq %rbx
subq $0x3228, %rsp           # imm = 0x3228
cmpl $0x2, %edi
jne 0x40bf
movq 0x8(%rsi), %rdi
callq 0x130c
xorl %edi, %edi
callq 0x1160
leaq 0x8(%rsp), %rdi
movq %rax, (%rdi)
callq 0x1030
leaq 0x16a9(%rip), %rdx      # 0x5666
leaq 0x10(%rsp), %rbx
movl $0x10, %esi
movq %rbx, %rdi
movq %rax, %rcx
callq 0x1180
movabsq $0x5f6c756d69732f, %rax # imm = 0x5F6C756D69732F
movq %rax, 0x416d(%rip)      # 0x8150
leaq 0x4166(%rip), %r14      # 0x8150
movq %r14, %rdi
movq %rbx, %rsi
callq 0x11a0
movq %r14, %rdi
movl $0x7, %esi
callq 0x318c
testl %eax, %eax
js 0x40cd
movl $0x0, 0x412c(%rip)      # 0x8140
leaq -0x28f(%rip), %rsi      # 0x3d8c
movl $0x11, %edi
callq 0x1140
cmpl $0x63, 0x4114(%rip)     # 0x8140
jg 0x404e
callq 0x11e0
testl %eax, %eax
je 0x411e
movl $0x30d40, %edi          # imm = 0x30D40
callq 0x1200
cmpl $0x64, 0x40f4(%rip)     # 0x8140
jl 0x402e
leaq 0x20(%rsp), %rbx
movl $0x400, %edx            # imm = 0x400
movq %rbx, %rdi
xorl %esi, %esi
callq 0x10d0
leaq 0x163c(%rip), %rdi      # 0x56a5
leaq 0x40e0(%rip), %r14      # 0x8150
movq %r14, %rsi
xorl %eax, %eax
callq 0x10b0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3274
testl %eax, %eax
js 0x40f0
leaq 0x1522(%rip), %rdi      # 0x55b2
movl $0x1b, %esi
xorl %edx, %edx
movl $0x20, %ecx
movl $0x1b, %r8d
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x10b0
leaq 0x1529(%rip), %rdi      # 0x55dc
callq 0x1060
leaq 0x20(%rsp), %rdi
jmp 0x40f7
leaq 0x1623(%rip), %rdi      # 0x56e9
callq 0x1060
jmp 0x40e9
leaq 0x15a0(%rip), %rdi      # 0x5674
leaq 0x4075(%rip), %rsi      # 0x8150
xorl %eax, %eax
callq 0x10b0
xorl %eax, %eax
callq 0x134a
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x4111
leaq 0x1529(%rip), %rdi      # 0x5620
callq 0x1060
leaq 0x15b7(%rip), %rdi      # 0x56ba
callq 0x1060
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x134a
movl %ebx, %eax
addq $0x3228, %rsp           # imm = 0x3228
popq %rbx
popq %r14
retq
callq 0x1080
movl %eax, %edi
callq 0x3da9