diff --git a/bin/meu_malloc.o b/bin/meu_malloc.o
new file mode 100644
index 0000000000000000000000000000000000000000..ce939d96bafc7a2eb880f48333d4c1b07336ca72
Binary files /dev/null and b/bin/meu_malloc.o differ
diff --git a/lib/libmeu_malloc.a b/lib/libmeu_malloc.a
new file mode 100644
index 0000000000000000000000000000000000000000..a69e3386e51bac527bc95fa6fb801c186eaaf3d8
Binary files /dev/null and b/lib/libmeu_malloc.a differ
diff --git a/pseudoc.c b/pseudoc.c
index 3947440a7077a7540edf778f5700e161e3c1308b..96faee4f9a7b2093bef0c527250fc0c037921b0c 100644
--- a/pseudoc.c
+++ b/pseudoc.c
@@ -7,6 +7,7 @@ short int livre = 1
 short int ocupado = 0
 void* piso_heap = 0
 void* teto_heap = 0;
+//variavel local
 int alocador = 1040
 void* endr;
 
@@ -15,11 +16,11 @@ void iniciaAlocador()
 {	
 	endr = sbrk(0)		//endr na posicao corrente da heap
 	piso_heap = endr;	
-	endr += alocador;	//soma 1024 a posicao de endr
+	endr += alocador;	//soma 1040 a posicao de endr
 	teto_heap = endr;	
 	brk(endr);			//aloca endr.
 	endr = piso_heap;
-	(endr) = 1;
+	*endr = 1;
 	8(endr) = alocador - 16;
 	
 	return;
@@ -42,13 +43,13 @@ void finalizaAlocador()
 
 void aloca_espaco(void tam_alloc)
 {
-	teto_heap += tam_alloc;
+	teto_heap += tam_alloc+16;
 	brk(teto_heap);
 	
 	return;
 }
 
-void* alocaMem(int tam_alloc)
+void* meuMalloc(int tam_alloc)
 {
 	
 	//se a heap n esta inicializada
@@ -62,12 +63,14 @@ void* alocaMem(int tam_alloc)
 		//endereco livre		
 		if((*endr == LIVRE))
 		{
+			//verifica se tem espaco
 			if (8(endr) >= tam_alloc)
 			{			
 				//8(endr) = valor contido dentro desse espaço de memoria				
 				8(endr) -= tam_alloc + 16;
-				endr += 8(endr) + 16;
-				(endr) = 0;
+				tam_atual = 8(endr)
+				endr += 16 + tam_atual;
+				(endr) = OCUPADO;
 				8(endr) = tam_alloc;		
 			}
 			else
@@ -88,7 +91,7 @@ void* alocaMem(int tam_alloc)
 
 void arruma_heap()
 {
-	void *endr_ant, endr; 
+	void *endr_ant, *endr; 
 
 	endr_ant = piso_heap;
 	endr = piso_heap + 8(endr_ant) + 16;
@@ -105,7 +108,7 @@ void arruma_heap()
 	return;
 }
 
-void liberaMem(*void bloco)
+void meuFree(*void bloco)
 {
 	//bloco livre	
 	-16(bloco) = livre;
diff --git a/src/meu_malloc.s b/src/meu_malloc.s
index 51b0ac8e30a2a797cd424165ca161ef86701d341..5009c1ac90db12b361178d55eac19d1d7a902691 100644
--- a/src/meu_malloc.s
+++ b/src/meu_malloc.s
@@ -7,7 +7,12 @@
 	str4: .string "*"
 	str5: .string "INICIANDO O ALOCADOR!\n"
 	str6: .string "ENTRADA INVALIDA!\n"
-	pula_Linha: .string "\n"#
+	pula_Linha: .string "\n"
+
+	####APAGAR ESSA PORRA#######
+	flag: .string  "%d"
+	oi: .string "OIIIIIIIIIIIIIIIIIIIIIII\n\n\n"
+
 
 .section .bss
 	.equ ALOCADOR, 1040
@@ -110,13 +115,17 @@ meuMalloc:
 
 	movq %rbx,-8(%rbp)
 	movq -8(%rbp), %rbx				# endr = -8(rbp)
+	
+	movq %r12, %r11
+	addq $16, %r11
+
 	while_loop_aloca_mem:
 	cmpq teto_heap, %rbx			#rbx = endr
 	jg fim_while_aloca_mem
 		cmpq $LIVRE, (%rbx)
 		jne fim_if_while_aloca_mem
-			cmpq %r12, 8(%rbx)
-			jl else_if_aloca_mem2
+			cmpq %r11, 8(%rbx)
+			jle else_if_aloca_mem2
 				addq $16, %r12		#8(endr) -= tam_alloc + 16
 				subq %r12, 8(%rbx)				
 				movq 8(%rbx), %r13
@@ -127,13 +136,18 @@ meuMalloc:
 				movq %r12, 8(%rbx)				
 			jmp fim_if_aloca_mem2
 			else_if_aloca_mem2:					
-				movq teto_heap,%rbx
+				movq teto_heap, %rbx
 				movq %r12, %r15
 				pushq %r12
 				call aloca_espaco
 				popq %r12
 				movq $OCUPADO,(%rbx)
-				movq %r15, 8(%rbx)										
+				movq %r15, 8(%rbx)
+				
+				movq %rbx, %rcx
+				addq %r12, %rcx
+				addq $16, %rcx
+				movq %rcx, teto_heap
 			jmp fim_if_aloca_mem2
 			fim_if_aloca_mem2:
 			jmp fim_while_aloca_mem	
@@ -214,6 +228,7 @@ imprimeMapa:
 	subq $16, %rsp		#coloca i na pilha
 
 	movq piso_heap, %rbx
+	movq teto_heap, %r11
 	cmpq $0, %rbx
 	jne fim_if_mapa	
 		movq $str1, %rdi
@@ -238,6 +253,10 @@ imprimeMapa:
 			jmp for_cabecalho
 		fim_for_cabecalho:
 			
+			movq $flag, %rdi
+			movq 8(%rbx), %rsi
+			call printf
+		
 		cmpq $LIVRE, (%rbx)
 		jne else_if_while
 			movq $0, -8(%rbp)		#i = 0
diff --git a/src/teste.c b/src/teste.c
index 9e0ce496cea11f07fe927470435708b932cfa734..bc628458953cb02b2022d43726fb62e2aba88dd3 100644
--- a/src/teste.c
+++ b/src/teste.c
@@ -5,10 +5,13 @@ int main () {
 
 	void *a,*b,*c,*d,*e;
 
-	a = meuMalloc(100);
+	//iniciaAlocador();
+	//imprimeMapa();
+
+	a = meuMalloc(1008);
 	imprimeMapa();
 	printf("\n");
-	b = meuMalloc(500);
+	b = meuMalloc(10);
 	imprimeMapa();
 	printf("\n");
 	c = meuMalloc(200);
diff --git a/teste b/teste
new file mode 100755
index 0000000000000000000000000000000000000000..1428d7393e9a7b05afc183155a2bf00d2c6fa685
Binary files /dev/null and b/teste differ