#include <stdio.h>

#define GETBITSTATE(state, i) (!!((0x80 >> (i & 7)) & state[i >> 3]))

int getBitState(unsigned char* state, int i) //
{
    return !!((0x80 >> (i & 7)) & state[i >> 3]);
}

void subBytes(unsigned char* state) {
    int i;
    printf("Using function:\n");
    for(i = 0; i<=127; i++) {

        printf("%d",getBitState(state, i));

        if(i%32==31){printf("\n");}
        else if(i%8==7) {printf(",");}
    }
    printf("Using macro:\n");
    for(i = 0; i<=127; i++) {

        printf("%d",GETBITSTATE(state, i));

        if(i%32==31){printf("\n");}
        else if(i%8==7) {printf(",");}
    }
    printf("\n");
}

int main()
{
    unsigned char derp[16] = {50,  67, 246, 168,
                              136, 90, 48,  141,
                              49,  49, 152, 162,
                              224, 55, 7,   52  };
    
    subBytes(derp);
    return 0;
}