language: C (gcc-4.7.2)
date: 371 days 8 hours ago
link:
visibility: private
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;
}