467 lines
8.8 KiB
C
467 lines
8.8 KiB
C
// #include <stdio.h>
|
|
int d, z, C, h, P, K, ac, q, G, v, Q, R, D, L, W, M;
|
|
|
|
void E(int e) {
|
|
*(char*) D++ = e;
|
|
}
|
|
|
|
void o() {
|
|
if (L) {
|
|
h = *(char*) L++;
|
|
if (h == 2) {
|
|
L = 0;
|
|
h = W;
|
|
}
|
|
} else
|
|
h = fgetc(Q);
|
|
}
|
|
|
|
int X() {
|
|
return isalnum(h) | h == 95;
|
|
}
|
|
|
|
void Y() {
|
|
if (h == 92) {
|
|
o();
|
|
if (h == 110)
|
|
h = 10;
|
|
}
|
|
}
|
|
|
|
void 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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void ae(int g) {
|
|
while( g&&g!=-1) {
|
|
*(char*) q++=g;
|
|
g=g>>8;
|
|
}
|
|
}
|
|
|
|
void A(int e) {
|
|
int g;
|
|
while( e) {
|
|
g=*(int*) e;
|
|
*(int*) e=q-e-4;
|
|
e=g;
|
|
}
|
|
}
|
|
|
|
int s(int g, int e) {
|
|
ae(g);
|
|
*(int*) q = e;
|
|
e = q;
|
|
q = q + 4;
|
|
return e;
|
|
}
|
|
|
|
void H(int e) {
|
|
s(184,e);
|
|
}
|
|
|
|
int B(int e) {
|
|
return s(233,e);
|
|
}
|
|
|
|
int S(int j, int e) {
|
|
ae(1032325);
|
|
return s(132 + j, e);
|
|
}
|
|
|
|
void Z(int e) {
|
|
ae( 49465);
|
|
H(0);
|
|
ae( 15);
|
|
ae( e+144);
|
|
ae( 192);
|
|
}
|
|
|
|
void N(int j, int e) {
|
|
ae(j + 131);
|
|
s((e > -512 && e < 512) << 7 | 5, e);
|
|
}
|
|
|
|
void T (int 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);
|
|
}
|
|
}
|
|
|
|
void O (int 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);
|
|
}
|
|
}
|
|
}
|
|
|
|
void w() {
|
|
O(11);
|
|
}
|
|
|
|
int U() {
|
|
w();
|
|
return S(0, 0);
|
|
}
|
|
|
|
void I (int 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();
|
|
}
|
|
}
|
|
|
|
void ab (int 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;
|
|
}
|
|
}
|
|
}
|
|
|
|
int run(int g, int e) {
|
|
return (*(int(*)()) *(int*) (P + 592))(g, e);
|
|
}
|
|
|
|
int main(int g, int e) {
|
|
int result;
|
|
Q = stdin;
|
|
if (g-- > 1) {
|
|
e = e + 4;
|
|
Q = fopen(*(int*) e, "r");
|
|
if (!Q) {
|
|
fprintf(stderr, "otcc-ansi.c: could not open file %s\n", *(int*) e);
|
|
return -2;
|
|
}
|
|
}
|
|
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);
|
|
if (mprotect(ac & (~ 4095), (99999 + 4095) & (~ 4095), 7)) {
|
|
printf("Mprotect failed. %d\n", errno);
|
|
return -1;
|
|
}
|
|
fprintf(stderr, "otcc-ansi.c: About to execute compiled code:\n");
|
|
result = run(g, e);
|
|
fprintf(stderr, "atcc-ansi.c: result: %d\n", result);
|
|
return result;
|
|
}
|
|
|