// File: /workspace/github_c_makefile_star2_O2/carlitosmarin[P]Sistema-Ficheros-SOII/simulacion.c
// Function: proceso
void proceso(int pid){
	char pidDirectorio[30];
	sprintf(pidDirectorio,"proceso_%d/",pid);

	char camino[200];
	strcpy(camino,directorio);
	strcat(camino, pidDirectorio);

	if(mi_creat(camino, 7) != 0){ //Creamos el directorio del proceso
		printf("ERROR: El directorio (%s) no se ha podido crear \n", camino);
		exit(1);
	}

	char trayecto[200];
	strcpy(trayecto, camino);
	sprintf(camino, "%sprueba.dat", camino); //El nombre del fichero
	if(mi_creat(camino, 7) != 0){ //Creamos pureba.dat
		printf("ERROR: El fichero (%s) no se ha podido crear \n", camino);
		exit(1);
	}

	char buffer[64*200];
	memset(buffer,0,tamBloque);

	printf("Directorio %s:\n", camino);
	if(mi_dir (trayecto,(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");

	struct registro registro;
	registro.nEscritura = 0;
	srand(pid);
	
	//Antes de escriibr, solo los creamos
	int i;
	for(i = 0; i < 50; i++){//Escribimos los 50 registros
	 	registro.fecha=time(NULL); registro.pid=getpid(); registro.nEscritura=i+1; registro.posicion=rand()%posMax;
		srand(registro.posicion); //Actualizamos la semilla
		if(mi_write(camino,&registro,registro.posicion*sizeof(struct registro),sizeof(struct registro)) < 0){
			printf("ERROR: Al escribir en %s\n", camino);
			exit(1);
		}
	}
	exit(0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x33d0, %rsp           # imm = 0x33D0
movl %edi, %ebx
leaq 0x8a7(%rip), %rsi       # 0x4528
leaq 0xe0(%rsp), %r14
movq %r14, %rdi
movl %ebx, %edx
xorl %eax, %eax
callq 0x11b0
leaq 0x34b4(%rip), %rsi      # 0x7150
leaq 0x10(%rsp), %r15
movq %r15, %rdi
callq 0x1040
movq %r15, %rdi
movq %r14, %rsi
callq 0x11a0
pushq $0x7
popq %rsi
movq %r15, %rdi
callq 0x309d
testl %eax, %eax
jne 0x3d6f
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %r14
movq %r14, %rsi
callq 0x1040
leaq 0x883(%rip), %rsi       # 0x4566
movq %r14, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x11b0
pushq $0x7
popq %rsi
movq %r14, %rdi
callq 0x309d
testl %eax, %eax
jne 0x3d7b
leaq 0x1d0(%rsp), %r14
movl $0x400, %edx            # imm = 0x400
movq %r14, %rdi
xorl %esi, %esi
callq 0x10d0
leaq 0x885(%rip), %rdi       # 0x45a2
leaq 0x10(%rsp), %rsi
xorl %eax, %eax
callq 0x10b0
leaq 0x100(%rsp), %rdi
movq %r14, %rsi
callq 0x317e
testl %eax, %eax
js 0x3d87
leaq 0x86e(%rip), %rdi       # 0x45b2
pushq $0x20
popq %rcx
pushq $0x1b
popq %rsi
xorl %edx, %edx
movl %esi, %r8d
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x10b0
leaq 0x87c(%rip), %rdi       # 0x45dc
callq 0x1060
leaq 0x1d0(%rsp), %rdi
jmp 0x3d8e
leaq 0x7be(%rip), %rdi       # 0x4534
jmp 0x3e08
leaq 0x7f1(%rip), %rdi       # 0x4573
jmp 0x3e08
leaq 0x892(%rip), %rdi       # 0x4620
callq 0x1060
movq %rsp, %r14
andl $0x0, 0x8(%r14)
movl %ebx, %edi
callq 0x1110
pushq $0x1
popq %r15
movl $0x7a120, %r12d         # imm = 0x7A120
leaq 0x10(%rsp), %rbx
pushq $0x10
popq %rbp
cmpl $0x33, %r15d
je 0x3e1c
xorl %edi, %edi
callq 0x1160
movl %eax, (%rsp)
callq 0x1080
movl %eax, 0x4(%rsp)
movl %r15d, 0x8(%rsp)
callq 0x11f0
cltd
idivl %r12d
movl %edx, %edi
movl %edx, 0xc(%rsp)
callq 0x1110
movl 0xc(%rsp), %edx
shll $0x4, %edx
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %ecx
callq 0x3ad5
incl %r15d
testl %eax, %eax
jns 0x3db4
leaq 0x844(%rip), %rdi       # 0x464c
leaq 0x10(%rsp), %rsi
xorl %eax, %eax
callq 0x10b0
pushq $0x1
popq %rdi
callq 0x11c0
xorl %edi, %edi
callq 0x11c0