Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/obj/tools/MGtool/prof.h b/obj/tools/MGtool/prof.h
new file mode 100644
index 0000000..05dcebf
--- /dev/null
+++ b/obj/tools/MGtool/prof.h
@@ -0,0 +1,42 @@
+private mixed __tm__=({0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
+private mixed __xtm__=({0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
+private mixed  __ec__=({0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
+private mixed  __xec__=({0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
+private int __level__;
+private mapping __data__ = ([]);
+__query_xprof_data__() { return __data__; }
+#define U2T(ru) (((ru)[0]+(ru)[1])*10)
+#define EC1 40
+#define EC2 22
+#define EC3 150
+#define TM1 0
+#define TM2 0
+#define TM3 0
+#define F(func,name,args) func args { \
+  mixed *__dt__, *__ru__, __re__; \
+  int __t__; \
+  if(!__data__) return :: func args; \
+  __ru__=rusage(); \
+  __tm__[__level__]=(__t__=U2T(__ru__))<0?0:__t__; \
+  __xtm__[__level__]=TM1; __tm__[__level__+1]=0; \
+  __ec__[__level__]=get_eval_cost(); \
+  __xec__[__level__]=EC1; __ec__[__level__+1]=0; \
+  __level__++; __re__ = :: func args; __level__--; \
+  if(!(__dt__=__data__[name])) { \
+    __dt__=__data__[name]=({0,0,0,0,0}); \
+    __xtm__[__level__]+=TM2; __xec__[__level__]+=EC2; \
+  } \
+  __ec__[__level__]-=get_eval_cost()+__xec__[__level__]; \
+  __ru__=rusage(); \
+  __t__=(__t__=U2T(__ru__))<0?0:__t__; \
+  __tm__[__level__]=__t__-__tm__[__level__]-__xtm__[__level__]; \
+  __dt__[0]++; \
+  __dt__[1]+=__ec__[__level__]-__ec__[__level__+1]; \
+  __dt__[2]+=__tm__[__level__]-__tm__[__level__+1]; \
+  __dt__[3]+=__ec__[__level__]; __dt__[4]+=__tm__[__level__]; \
+  if(__level__>0) { \
+    __xec__[__level__-1]+=__xec__[__level__]+EC3; \
+    __xtm__[__level__-1]+=__xtm__[__level__]+TM3; \
+  } \
+  return __re__; \
+}