Start work on preprocessor
diff --git a/as/main.c b/as/main.c
index cf966f8..8c2b577 100644
--- a/as/main.c
+++ b/as/main.c
@@ -1,10 +1,12 @@
 #include "as.h"
+#include "map.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <bits/getopt_core.h>
 #include <unistd.h>
 
+// TODO: handle all the possible IO errors
 int main(int argc, char **argv)
 {
 	char c;
@@ -38,7 +40,22 @@
 	fread(text, len, 1, in);
 	text[len] = 0;
 
-	uint32_t built = assemble(text, out);
+	FILE *temp = tmpfile();
+
+	map_t *macros = new_map();
+	uint32_t processed = preproc(text, temp, macros, 0);
+	free_map_items(macros);
+
+	fseek(temp, 0, SEEK_END);
+	ssize_t temp_len = ftell(in);
+	fseek(temp, 0, SEEK_SET);
+
+	char *processed_text = malloc(len + 1);
+	fread(processed_text, len, 1, in);
+	text[temp_len] = 0;
+	
+	uint32_t built = assemble(processed_text, out);
 
 	free(text);
+	free(processed_text);
 }