diff --git a/libacc/acc.c b/libacc/acc.c
new file mode 100644
index 0000000..66596f2
--- /dev/null
+++ b/libacc/acc.c
@@ -0,0 +1,430 @@
+#include <stdio.h>
+
+int d,z,C,h,P,K,ac,q,G,v,Q,R,D,L,W,M;
+E(e){
+*(char*) D++=e;
+}
+o (){
+if( L){
+h=*(char*) L++;
+if( h == 2){
+L=0;
+h=W;
+}
+}
+else h=fgetc(Q);
+}
+X (){
+return isalnum(h)|h == 95;
+}
+Y (){
+if( h == 92){
+o ();
+if( h == 110)h=10;
+}
+}
+ad(){
+int e,j,m;
+while( isspace(h)|h == 35){
+if( h == 35){
+o ();
+ad();
+if( d == 536){
+ad();
+E(32);
+*(int*) d=1;
+*(int*)(d +4)=D;
+}
+while( h!=10){
+E(h);
+o ();
+}
+E(h);
+E(2);
+}
+o ();
+}
+C=0;
+d=h;
+if( X ()){
+E(32);
+M=D;
+while( X ()){
+E(h);
+o ();
+}
+if( isdigit(d)){
+z=strtol(M,0,0);
+d=2;
+}
+else{
+*(char*) D=32;
+d=strstr(R,M-1)-R;
+*(char*) D=0;
+d=d*8+256;
+if( d>536){
+d=P+d;
+if( *(int*) d == 1){
+L=*(int*)(d +4);
+W=h;
+o ();
+ad();
+}
+}
+}
+}
+else{
+o ();
+if( d == 39){
+d=2;
+Y ();
+z=h;
+o ();
+o ();
+}
+else if( d == 47&h == 42){
+o ();
+while( h){
+while( h!=42)o ();
+o ();
+if( h == 47)h=0;
+}
+o ();
+ad();
+}
+else{
+e="++#m--%am*@R<^1c/@%[_[H3c%@%[_[H3c+@.B#d-@%:_^BKd<<Z/03e>>`/03e<=0f>=/f<@.f>@1f==&g!='g&&k||#l&@.BCh^@.BSi|@.B+j~@/%Yd!@&d*@b";
+while( j=*(char*) e++){
+m= *(char*) e++;
+z=0;
+while((C=*(char*) e++-98)<0)z=z*64+C+64;
+if( j == d&(m == h|m == 64)){
+if( m == h){
+o ();
+d=1;
+}
+break;
+}
+}
+}
+}
+}
+ae( g){
+while( g&&g!=-1){
+*(char*) q++=g;
+g=g>>8;
+}
+}
+A(e){
+int g;
+while( e){
+g=*(int*) e;
+*(int*) e=q-e-4;
+e=g;
+}
+}
+s(g,e){
+ae( g);
+*(int*) q=e;
+e=q;
+q=q +4;
+return e;
+}
+H(e){
+s(184,e);
+}
+B(e){
+return s(233,e);
+}
+S(j,e){
+ae( 1032325);
+return s(132+j,e);
+}
+Z(e){
+ae( 49465);
+H(0);
+ae( 15);
+ae( e+144);
+ae( 192);
+}
+N(j,e){
+ae( j+131);
+s((e<512)<<7|5,e);
+}
+T (j){
+int g,e,m,aa;
+g=1;
+if( d == 34){
+H(v);
+while( h!=34){
+Y ();
+*(char*) v++=h;
+o ();
+}
+*(char*) v=0;
+v=v +4&-4;
+o ();
+ad();
+}
+else{
+aa=C;
+m= z;
+e=d;
+ad();
+if( e == 2){
+H(m);
+}
+else if( aa == 2){
+T(0);
+s(185,0);
+if( e == 33)Z(m);
+else ae( m);
+}
+else if( e == 40){
+w ();
+ad();
+}
+else if( e == 42){
+ad();
+e=d;
+ad();
+ad();
+if( d == 42){
+ad();
+ad();
+ad();
+ad();
+e=0;
+}
+ad();
+T(0);
+if( d == 61){
+ad();
+ae( 80);
+w ();
+ae( 89);
+ae( 392+(e == 256));
+}
+else if( e){
+if( e == 256)ae( 139);
+else ae( 48655);
+q++;
+}
+}
+else if( e == 38){
+N(10,*(int*) d);
+ad();
+}
+else{
+g=*(int*) e;
+if(!g)g=dlsym(0,M);
+if( d == 61&j){
+ad();
+w ();
+N(6,g);
+}
+else if( d!= 40){
+N(8,g);
+if( C == 11){
+N(0,g);
+ae( z);
+ad();
+}
+}
+}
+}
+if( d == 40){
+if( g == 1)ae( 80);
+m= s(60545,0);
+ad();
+j=0;
+while( d!= 41){
+w ();
+s(2393225,j);
+if( d == 44)ad();
+j=j +4;
+}
+*(int*) m= j;
+ad();
+if(!g){
+e=e +4;
+*(int*) e=s(232,*(int*) e);
+}
+else if( g == 1){
+s(2397439,j);
+j=j +4;
+}
+else{
+s(232,g-q-5);
+}
+if( j)s(50305,j);
+}
+}
+O (j){
+int e,g,m;
+if( j--== 1)T(1);
+else{
+O (j);
+m= 0;
+while( j == C){
+g=d;
+e=z;
+ad();
+if( j>8){
+m= S(e,m);
+O (j);
+}
+else{
+ae( 80);
+O (j);
+ae( 89);
+if( j == 4|j == 5){
+Z(e);
+}
+else{
+ae( e);
+if( g == 37)ae( 146);
+}
+}
+}
+if( m&&j>8){
+m= S(e,m);
+H(e^1);
+B(5);
+A(m);
+H(e);
+}
+}
+}
+w (){
+O(11);
+}
+U (){
+w ();
+return S(0,0);
+}
+I (j){
+int m,g,e;
+if( d == 288){
+ad();
+ad();
+m= U ();
+ad();
+I (j);
+if( d == 312){
+ad();
+g=B(0);
+A(m);
+I (j);
+A(g);
+}
+else{
+A(m);
+}
+}
+else if( d == 352|d == 504){
+e=d;
+ad();
+ad();
+if( e == 352){
+g=q;
+m= U ();
+}
+else{
+if( d!= 59)w ();
+ad();
+g=q;
+m= 0;
+if( d!= 59)m= U ();
+ad();
+if( d!= 41){
+e=B(0);
+w ();
+B(g-q-5);
+A(e);
+g=e +4;
+}
+}
+ad();
+I(&m);
+B(g-q-5);
+A(m);
+}
+else if( d == 123){
+ad();
+ab(1);
+while( d!= 125)I (j);
+ad();
+}
+else{
+if( d == 448){
+ad();
+if( d!= 59)w ();
+K=B(K);
+}
+else if( d == 400){
+ad();
+*(int*) j=B(*(int*) j);
+}
+else if( d!= 59)w ();
+ad();
+}
+}
+ab (j){
+int m;
+while( d == 256|d!=-1&!j){
+if( d == 256){
+ad();
+while( d!= 59){
+if( j){
+G=G +4;
+*(int*) d=-G;
+}
+else{
+*(int*) d=v;
+v=v +4;
+}
+ad();
+if( d == 44)ad();
+}
+ad();
+}
+else{
+A(*(int*)(d +4));
+*(int*) d=q;
+ad();
+ad();
+m= 8;
+while( d!= 41){
+*(int*) d=m;
+m= m +4;
+ad();
+if( d == 44)ad();
+}
+ad();
+K=G=0;
+ae( 15042901);
+m= s(60545,0);
+I(0);
+A(K);
+ae( 50121);
+*(int*) m= G;
+}
+}
+}
+main(g,e){
+Q=__stdinp;
+if( g-->1){
+e=e +4;
+Q=fopen(*(int*) e,"r");
+}
+D=strcpy(R =calloc(1,99999)," int if else while break return for define main ")+48;
+v =calloc(1,99999);
+q=ac =calloc(1,99999);
+P =calloc(1,99999);
+o ();
+ad();
+ab(0);
+return(*(int(*)())*(int*)(P+592))(g,e);
+}
+
diff --git a/libacc/otcc.c b/libacc/otcc.c
deleted file mode 100644
index 577fcf3..0000000
--- a/libacc/otcc.c
+++ /dev/null
@@ -1,446 +0,0 @@
-#include <stdio.h>
-#define k *(int*)
-#define a if(
-#define c ad()
-#define i else
-#define p while(
-#define x *(char*)
-#define b ==
-#define V =calloc(1,99999)
-#define f ()
-#define J return
-#define l ae(
-#define n e)
-#define u d!=
-#define F int 
-#define y (j)
-#define r m=
-#define t +4
-F d,z,C,h,P,K,ac,q,G,v,Q,R,D,L,W,M;
-E(n{
-x D++=e;
-}
-o f{
-a L){
-h=x L++;
-a h b 2){
-L=0;
-h=W;
-}
-}
-i h=fgetc(Q);
-}
-X f{
-J isalnum(h)|h b 95;
-}
-Y f{
-a h b 92){
-o f;
-a h b 110)h=10;
-}
-}
-c{
-F e,j,m;
-p isspace(h)|h b 35){
-a h b 35){
-o f;
-c;
-a d b 536){
-c;
-E(32);
-k d=1;
-k(d t)=D;
-}
-p h!=10){
-E(h);
-o f;
-}
-E(h);
-E(2);
-}
-o f;
-}
-C=0;
-d=h;
-a X f){
-E(32);
-M=D;
-p X f){
-E(h);
-o f;
-}
-a isdigit(d)){
-z=strtol(M,0,0);
-d=2;
-}
-i{
-x D=32;
-d=strstr(R,M-1)-R;
-x D=0;
-d=d*8+256;
-a d>536){
-d=P+d;
-a k d b 1){
-L=k(d t);
-W=h;
-o f;
-c;
-}
-}
-}
-}
-i{
-o f;
-a d b 39){
-d=2;
-Y f;
-z=h;
-o f;
-o f;
-}
-i a d b 47&h b 42){
-o f;
-p h){
-p h!=42)o f;
-o f;
-a h b 47)h=0;
-}
-o f;
-c;
-}
-i{
-e="++#m--%am*@R<^1c/@%[_[H3c%@%[_[H3c+@.B#d-@%:_^BKd<<Z/03e>>`/03e<=0f>=/f<@.f>@1f==&g!='g&&k||#l&@.BCh^@.BSi|@.B+j~@/%Yd!@&d*@b";
-p j=x e++){
-r x e++;
-z=0;
-p(C=x e++-98)<0)z=z*64+C+64;
-a j b d&(m b h|m b 64)){
-a m b h){
-o f;
-d=1;
-}
-break;
-}
-}
-}
-}
-}
-l g){
-p g&&g!=-1){
-x q++=g;
-g=g>>8;
-}
-}
-A(n{
-F g;
-p n{
-g=k e;
-k e=q-e-4;
-e=g;
-}
-}
-s(g,n{
-l g);
-k q=e;
-e=q;
-q=q t;
-J e;
-}
-H(n{
-s(184,n;
-}
-B(n{
-J s(233,n;
-}
-S(j,n{
-l 1032325);
-J s(132+j,n;
-}
-Z(n{
-l 49465);
-H(0);
-l 15);
-l e+144);
-l 192);
-}
-N(j,n{
-l j+131);
-s((e<512)<<7|5,n;
-}
-T y{
-F g,e,m,aa;
-g=1;
-a d b 34){
-H(v);
-p h!=34){
-Y f;
-x v++=h;
-o f;
-}
-x v=0;
-v=v t&-4;
-o f;
-c;
-}
-i{
-aa=C;
-r z;
-e=d;
-c;
-a e b 2){
-H(m);
-}
-i a aa b 2){
-T(0);
-s(185,0);
-a e b 33)Z(m);
-i l m);
-}
-i a e b 40){
-w f;
-c;
-}
-i a e b 42){
-c;
-e=d;
-c;
-c;
-a d b 42){
-c;
-c;
-c;
-c;
-e=0;
-}
-c;
-T(0);
-a d b 61){
-c;
-l 80);
-w f;
-l 89);
-l 392+(e b 256));
-}
-i a n{
-a e b 256)l 139);
-i l 48655);
-q++;
-}
-}
-i a e b 38){
-N(10,k d);
-c;
-}
-i{
-g=k e;
-a!g)g=dlsym(0,M);
-a d b 61&j){
-c;
-w f;
-N(6,g);
-}
-i a u 40){
-N(8,g);
-a C b 11){
-N(0,g);
-l z);
-c;
-}
-}
-}
-}
-a d b 40){
-a g b 1)l 80);
-r s(60545,0);
-c;
-j=0;
-p u 41){
-w f;
-s(2393225,j);
-a d b 44)c;
-j=j t;
-}
-k r j;
-c;
-a!g){
-e=e t;
-k e=s(232,k n;
-}
-i a g b 1){
-s(2397439,j);
-j=j t;
-}
-i{
-s(232,g-q-5);
-}
-a j)s(50305,j);
-}
-}
-O y{
-F e,g,m;
-a j--b 1)T(1);
-i{
-O y;
-r 0;
-p j b C){
-g=d;
-e=z;
-c;
-a j>8){
-r S(e,m);
-O y;
-}
-i{
-l 80);
-O y;
-l 89);
-a j b 4|j b 5){
-Z(n;
-}
-i{
-l n;
-a g b 37)l 146);
-}
-}
-}
-a m&&j>8){
-r S(e,m);
-H(e^1);
-B(5);
-A(m);
-H(n;
-}
-}
-}
-w f{
-O(11);
-}
-U f{
-w f;
-J S(0,0);
-}
-I y{
-F m,g,e;
-a d b 288){
-c;
-c;
-r U f;
-c;
-I y;
-a d b 312){
-c;
-g=B(0);
-A(m);
-I y;
-A(g);
-}
-i{
-A(m);
-}
-}
-i a d b 352|d b 504){
-e=d;
-c;
-c;
-a e b 352){
-g=q;
-r U f;
-}
-i{
-a u 59)w f;
-c;
-g=q;
-r 0;
-a u 59)r U f;
-c;
-a u 41){
-e=B(0);
-w f;
-B(g-q-5);
-A(n;
-g=e t;
-}
-}
-c;
-I(&m);
-B(g-q-5);
-A(m);
-}
-i a d b 123){
-c;
-ab(1);
-p u 125)I y;
-c;
-}
-i{
-a d b 448){
-c;
-a u 59)w f;
-K=B(K);
-}
-i a d b 400){
-c;
-k j=B(k j);
-}
-i a u 59)w f;
-c;
-}
-}
-ab y{
-F m;
-p d b 256|u-1&!j){
-a d b 256){
-c;
-p u 59){
-a j){
-G=G t;
-k d=-G;
-}
-i{
-k d=v;
-v=v t;
-}
-c;
-a d b 44)c;
-}
-c;
-}
-i{
-A(k(d t));
-k d=q;
-c;
-c;
-r 8;
-p u 41){
-k d=m;
-r m t;
-c;
-a d b 44)c;
-}
-c;
-K=G=0;
-l 15042901);
-r s(60545,0);
-I(0);
-A(K);
-l 50121);
-k r G;
-}
-}
-}
-main(g,n{
-Q=stdin;
-a g-->1){
-e=e t;
-Q=fopen(k e,"r");
-}
-D=strcpy(R V," int if else while break return for define main ")+48;
-v V;
-q=ac V;
-P V;
-o f;
-c;
-ab(0);
-J(*(int(*)f)k(P+592))(g,n;
-}
-
