#include "core.h" #include #include static uc mt[3*256]; uc Mt(uc j, uc k){return mt[(j&(256-16))|(k>>4)] ^ mt[256|(j&(256-16))|(k&15)] ^ mt[256|((j&15)<<4)|(k>>4)] ^ mt[512|((j&15)<<4)|(k&15)];} void it(void){for(int j=0; j<16; ++j) for(int k=0; k<16; ++k) { mt[(j<<4)|k] = fmul(j<<4, k<<4); mt[256+((j<<4)|k)] = fmul(j<<4, k); mt[512+((j<<4)|k)] = fmul(j, k);} if(1) for(int j=0; j<16; ++j) for(int k=0; k<16; ++k) if (fmul(j, k<<4) ^ mt[256+((j<<4)|k)]) exit(printf("failA %d %d\n", j, k)); if(1) for(int j=0; j<256; ++j) for(int k=0; k<256; ++k) if(fmul(j, k) ^ Mt(j, k)) exit(printf("FailC %d %d\n", j, k));}