1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <stdio.h> #include <stdlib.h> static int value; static const inline void inc() { value++; } static const inline void dec() { value--; } static const inline void inc2() { value += 2; } static const inline void dec2() { value -= 2; } static const inline void inv() { value = -value; } static const inline void zer() { value = 0; } int main() { long size; FILE *file = fopen("sample.bin", "rb"); fseek(file, 0, SEEK_END); size = ftell(file); rewind(file); unsigned char *buffer = malloc(size); fread(buffer, size, 1, file); fclose(file); value = 0; const void (* const jt[])() = { inc, dec, inc2, dec2, inv, zer }; long i; for (i = 0; i < size; i++) { jt[buffer[i] % 6](); } free(buffer); printf("%d", value); return 0; } |
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0YXRpYyBpbnQgdmFsdWU7CgpzdGF0aWMgY29uc3QgaW5saW5lIHZvaWQgaW5jKCkgeyB2YWx1ZSsrOyB9CnN0YXRpYyBjb25zdCBpbmxpbmUgdm9pZCBkZWMoKSB7IHZhbHVlLS07IH0Kc3RhdGljIGNvbnN0IGlubGluZSB2b2lkIGluYzIoKSB7IHZhbHVlICs9IDI7IH0Kc3RhdGljIGNvbnN0IGlubGluZSB2b2lkIGRlYzIoKSB7IHZhbHVlIC09IDI7IH0Kc3RhdGljIGNvbnN0IGlubGluZSB2b2lkIGludigpIHsgdmFsdWUgPSAtdmFsdWU7IH0Kc3RhdGljIGNvbnN0IGlubGluZSB2b2lkIHplcigpIHsgdmFsdWUgPSAwOyB9CgppbnQgbWFpbigpCnsKICAgIGxvbmcgc2l6ZTsKICAgIEZJTEUgKmZpbGUgPSBmb3Blbigic2FtcGxlLmJpbiIsICJyYiIpOwogICAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOwogICAgc2l6ZSA9IGZ0ZWxsKGZpbGUpOwogICAgcmV3aW5kKGZpbGUpOwoKICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciA9IG1hbGxvYyhzaXplKTsKICAgIGZyZWFkKGJ1ZmZlciwgc2l6ZSwgMSwgZmlsZSk7CiAgICBmY2xvc2UoZmlsZSk7CiAgIAogICAgdmFsdWUgPSAwOwogICAgY29uc3Qgdm9pZCAoKiBjb25zdCBqdFtdKSgpID0geyBpbmMsIGRlYywgaW5jMiwgZGVjMiwgaW52LCB6ZXIgfTsKICAgIGxvbmcgaTsKICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCiAgICB7CiAgICAgICAganRbYnVmZmVyW2ldICUgNl0oKTsKICAgIH0KCiAgICBmcmVlKGJ1ZmZlcik7CiAgICBwcmludGYoIiVkIiwgdmFsdWUpOwogICAgcmV0dXJuIDA7Cn0=


