adding LDPC encoder and decoder (from mwc18 branch)

This commit is contained in:
Florian Kaltenberger
2018-04-09 13:10:17 -07:00
parent 4b0a1c06c7
commit b61e800764
979 changed files with 21685 additions and 1 deletions
@@ -0,0 +1,151 @@
#include "PHY/sse_intrin.h"
// generated code for Zc=384, byte encoding
static inline void ldpc384_byte(uint8_t *c,uint8_t *d) {
__m256i *csimd=(__m256i *)c,*dsimd=(__m256i *)d;
__m256i *c2,*d2;
int i2;
for (i2=0; i2<12; i2++) {
c2=&csimd[i2];
d2=&dsimd[i2];
//row: 0
d2[0]=_mm256_xor_si256(c2[10041],_mm256_xor_si256(c2[6338],_mm256_xor_si256(c2[6870],_mm256_xor_si256(c2[10568],_mm256_xor_si256(c2[10056],_mm256_xor_si256(c2[13759],_mm256_xor_si256(c2[12170],_mm256_xor_si256(c2[9553],_mm256_xor_si256(c2[6386],_mm256_xor_si256(c2[4282],_mm256_xor_si256(c2[9059],_mm256_xor_si256(c2[4826],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[105],_mm256_xor_si256(c2[6442],_mm256_xor_si256(c2[10136],_mm256_xor_si256(c2[11213],_mm256_xor_si256(c2[8572],_mm256_xor_si256(c2[128],_mm256_xor_si256(c2[12822],_mm256_xor_si256(c2[677],_mm256_xor_si256(c2[3846],_mm256_xor_si256(c2[5986],_mm256_xor_si256(c2[5984],_mm256_xor_si256(c2[13372],_mm256_xor_si256(c2[6010],_mm256_xor_si256(c2[197],_mm256_xor_si256(c2[12865],_mm256_xor_si256(c2[15537],_mm256_xor_si256(c2[9725],_mm256_xor_si256(c2[16585],_mm256_xor_si256(c2[249],_mm256_xor_si256(c2[772],_mm256_xor_si256(c2[2356],_mm256_xor_si256(c2[7131],_mm256_xor_si256(c2[3969],_mm256_xor_si256(c2[9249],_mm256_xor_si256(c2[9264],_mm256_xor_si256(c2[11914],_mm256_xor_si256(c2[3991],_mm256_xor_si256(c2[2963],_mm256_xor_si256(c2[4542],_mm256_xor_si256(c2[11410],_mm256_xor_si256(c2[13542],_mm256_xor_si256(c2[13010],_mm256_xor_si256(c2[10902],_mm256_xor_si256(c2[12510],_mm256_xor_si256(c2[1947],_mm256_xor_si256(c2[11449],_mm256_xor_si256(c2[5667],_mm256_xor_si256(c2[1451],_mm256_xor_si256(c2[8841],_mm256_xor_si256(c2[9915],_mm256_xor_si256(c2[1996],_mm256_xor_si256(c2[6753],_mm256_xor_si256(c2[9943],_mm256_xor_si256(c2[8887],_mm256_xor_si256(c2[8360],_mm256_xor_si256(c2[11021],_mm256_xor_si256(c2[6274],_mm256_xor_si256(c2[7326],_mm256_xor_si256(c2[5770],_mm256_xor_si256(c2[7344],_mm256_xor_si256(c2[4177],_mm256_xor_si256(c2[14242],_mm256_xor_si256(c2[8955],c2[3155]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 1
d2[12]=_mm256_xor_si256(c2[10041],_mm256_xor_si256(c2[10569],_mm256_xor_si256(c2[6866],_mm256_xor_si256(c2[7398],_mm256_xor_si256(c2[11096],_mm256_xor_si256(c2[10056],_mm256_xor_si256(c2[10584],_mm256_xor_si256(c2[14287],_mm256_xor_si256(c2[12698],_mm256_xor_si256(c2[9553],_mm256_xor_si256(c2[10081],_mm256_xor_si256(c2[6914],_mm256_xor_si256(c2[4810],_mm256_xor_si256(c2[9059],_mm256_xor_si256(c2[9587],_mm256_xor_si256(c2[5354],_mm256_xor_si256(c2[600],_mm256_xor_si256(c2[633],_mm256_xor_si256(c2[6970],_mm256_xor_si256(c2[10664],_mm256_xor_si256(c2[11213],_mm256_xor_si256(c2[11741],_mm256_xor_si256(c2[9100],_mm256_xor_si256(c2[656],_mm256_xor_si256(c2[12822],_mm256_xor_si256(c2[13350],_mm256_xor_si256(c2[1205],_mm256_xor_si256(c2[4374],_mm256_xor_si256(c2[6514],_mm256_xor_si256(c2[6512],_mm256_xor_si256(c2[13900],_mm256_xor_si256(c2[6538],_mm256_xor_si256(c2[725],_mm256_xor_si256(c2[13393],_mm256_xor_si256(c2[15537],_mm256_xor_si256(c2[16065],_mm256_xor_si256(c2[10253],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[249],_mm256_xor_si256(c2[777],_mm256_xor_si256(c2[1300],_mm256_xor_si256(c2[2884],_mm256_xor_si256(c2[7131],_mm256_xor_si256(c2[7659],_mm256_xor_si256(c2[4497],_mm256_xor_si256(c2[9777],_mm256_xor_si256(c2[9264],_mm256_xor_si256(c2[9792],_mm256_xor_si256(c2[12442],_mm256_xor_si256(c2[4519],_mm256_xor_si256(c2[2963],_mm256_xor_si256(c2[3491],_mm256_xor_si256(c2[5070],_mm256_xor_si256(c2[11938],_mm256_xor_si256(c2[14070],_mm256_xor_si256(c2[13538],_mm256_xor_si256(c2[11430],_mm256_xor_si256(c2[12510],_mm256_xor_si256(c2[13038],_mm256_xor_si256(c2[2475],_mm256_xor_si256(c2[11977],_mm256_xor_si256(c2[5667],_mm256_xor_si256(c2[6195],_mm256_xor_si256(c2[1979],_mm256_xor_si256(c2[9369],_mm256_xor_si256(c2[10443],_mm256_xor_si256(c2[2524],_mm256_xor_si256(c2[7281],_mm256_xor_si256(c2[9943],_mm256_xor_si256(c2[10471],_mm256_xor_si256(c2[9415],_mm256_xor_si256(c2[8888],_mm256_xor_si256(c2[11021],_mm256_xor_si256(c2[11549],_mm256_xor_si256(c2[6802],_mm256_xor_si256(c2[7854],_mm256_xor_si256(c2[5770],_mm256_xor_si256(c2[6298],_mm256_xor_si256(c2[7872],_mm256_xor_si256(c2[4705],_mm256_xor_si256(c2[14242],_mm256_xor_si256(c2[14770],_mm256_xor_si256(c2[9483],c2[3683])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 2
d2[24]=_mm256_xor_si256(c2[10569],_mm256_xor_si256(c2[6866],_mm256_xor_si256(c2[6870],_mm256_xor_si256(c2[7398],_mm256_xor_si256(c2[10568],_mm256_xor_si256(c2[11096],_mm256_xor_si256(c2[10584],_mm256_xor_si256(c2[13759],_mm256_xor_si256(c2[14287],_mm256_xor_si256(c2[12170],_mm256_xor_si256(c2[12698],_mm256_xor_si256(c2[10081],_mm256_xor_si256(c2[6914],_mm256_xor_si256(c2[4282],_mm256_xor_si256(c2[4810],_mm256_xor_si256(c2[9587],_mm256_xor_si256(c2[5354],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[600],_mm256_xor_si256(c2[633],_mm256_xor_si256(c2[6442],_mm256_xor_si256(c2[6970],_mm256_xor_si256(c2[10136],_mm256_xor_si256(c2[10664],_mm256_xor_si256(c2[11741],_mm256_xor_si256(c2[9100],_mm256_xor_si256(c2[128],_mm256_xor_si256(c2[656],_mm256_xor_si256(c2[13350],_mm256_xor_si256(c2[677],_mm256_xor_si256(c2[1205],_mm256_xor_si256(c2[3846],_mm256_xor_si256(c2[4374],_mm256_xor_si256(c2[6514],_mm256_xor_si256(c2[5984],_mm256_xor_si256(c2[6512],_mm256_xor_si256(c2[13372],_mm256_xor_si256(c2[13900],_mm256_xor_si256(c2[6538],_mm256_xor_si256(c2[197],_mm256_xor_si256(c2[725],_mm256_xor_si256(c2[12865],_mm256_xor_si256(c2[13393],_mm256_xor_si256(c2[16065],_mm256_xor_si256(c2[10253],_mm256_xor_si256(c2[16585],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[777],_mm256_xor_si256(c2[772],_mm256_xor_si256(c2[1300],_mm256_xor_si256(c2[2356],_mm256_xor_si256(c2[2884],_mm256_xor_si256(c2[7659],_mm256_xor_si256(c2[4497],_mm256_xor_si256(c2[9249],_mm256_xor_si256(c2[9777],_mm256_xor_si256(c2[9792],_mm256_xor_si256(c2[12442],_mm256_xor_si256(c2[3991],_mm256_xor_si256(c2[4519],_mm256_xor_si256(c2[3491],_mm256_xor_si256(c2[4542],_mm256_xor_si256(c2[5070],_mm256_xor_si256(c2[11410],_mm256_xor_si256(c2[11938],_mm256_xor_si256(c2[14070],_mm256_xor_si256(c2[13010],_mm256_xor_si256(c2[13538],_mm256_xor_si256(c2[10902],_mm256_xor_si256(c2[11430],_mm256_xor_si256(c2[13038],_mm256_xor_si256(c2[2475],_mm256_xor_si256(c2[11449],_mm256_xor_si256(c2[11977],_mm256_xor_si256(c2[6195],_mm256_xor_si256(c2[1979],_mm256_xor_si256(c2[8841],_mm256_xor_si256(c2[9369],_mm256_xor_si256(c2[10443],_mm256_xor_si256(c2[1996],_mm256_xor_si256(c2[2524],_mm256_xor_si256(c2[6753],_mm256_xor_si256(c2[7281],_mm256_xor_si256(c2[10471],_mm256_xor_si256(c2[8887],_mm256_xor_si256(c2[9415],_mm256_xor_si256(c2[8360],_mm256_xor_si256(c2[8888],_mm256_xor_si256(c2[11549],_mm256_xor_si256(c2[6802],_mm256_xor_si256(c2[7326],_mm256_xor_si256(c2[7854],_mm256_xor_si256(c2[6298],_mm256_xor_si256(c2[7344],_mm256_xor_si256(c2[7872],_mm256_xor_si256(c2[4177],_mm256_xor_si256(c2[4705],_mm256_xor_si256(c2[14770],_mm256_xor_si256(c2[9483],_mm256_xor_si256(c2[3155],c2[3683]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 3
d2[36]=_mm256_xor_si256(c2[10569],_mm256_xor_si256(c2[6866],_mm256_xor_si256(c2[7398],_mm256_xor_si256(c2[10568],_mm256_xor_si256(c2[11096],_mm256_xor_si256(c2[10584],_mm256_xor_si256(c2[14287],_mm256_xor_si256(c2[12170],_mm256_xor_si256(c2[12698],_mm256_xor_si256(c2[10081],_mm256_xor_si256(c2[6914],_mm256_xor_si256(c2[4810],_mm256_xor_si256(c2[9587],_mm256_xor_si256(c2[5354],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[600],_mm256_xor_si256(c2[633],_mm256_xor_si256(c2[6970],_mm256_xor_si256(c2[10136],_mm256_xor_si256(c2[10664],_mm256_xor_si256(c2[11741],_mm256_xor_si256(c2[9100],_mm256_xor_si256(c2[656],_mm256_xor_si256(c2[13350],_mm256_xor_si256(c2[1205],_mm256_xor_si256(c2[3846],_mm256_xor_si256(c2[4374],_mm256_xor_si256(c2[6514],_mm256_xor_si256(c2[6512],_mm256_xor_si256(c2[13372],_mm256_xor_si256(c2[13900],_mm256_xor_si256(c2[6538],_mm256_xor_si256(c2[725],_mm256_xor_si256(c2[12865],_mm256_xor_si256(c2[13393],_mm256_xor_si256(c2[16065],_mm256_xor_si256(c2[10253],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[777],_mm256_xor_si256(c2[1300],_mm256_xor_si256(c2[2356],_mm256_xor_si256(c2[2884],_mm256_xor_si256(c2[7659],_mm256_xor_si256(c2[4497],_mm256_xor_si256(c2[9249],_mm256_xor_si256(c2[9777],_mm256_xor_si256(c2[9792],_mm256_xor_si256(c2[12442],_mm256_xor_si256(c2[3991],_mm256_xor_si256(c2[4519],_mm256_xor_si256(c2[3491],_mm256_xor_si256(c2[5070],_mm256_xor_si256(c2[11410],_mm256_xor_si256(c2[11938],_mm256_xor_si256(c2[14070],_mm256_xor_si256(c2[13538],_mm256_xor_si256(c2[10902],_mm256_xor_si256(c2[11430],_mm256_xor_si256(c2[13038],_mm256_xor_si256(c2[2475],_mm256_xor_si256(c2[11977],_mm256_xor_si256(c2[6195],_mm256_xor_si256(c2[1979],_mm256_xor_si256(c2[8841],_mm256_xor_si256(c2[9369],_mm256_xor_si256(c2[10443],_mm256_xor_si256(c2[2524],_mm256_xor_si256(c2[6753],_mm256_xor_si256(c2[7281],_mm256_xor_si256(c2[10471],_mm256_xor_si256(c2[9415],_mm256_xor_si256(c2[8360],_mm256_xor_si256(c2[8888],_mm256_xor_si256(c2[11549],_mm256_xor_si256(c2[6802],_mm256_xor_si256(c2[7854],_mm256_xor_si256(c2[6298],_mm256_xor_si256(c2[7872],_mm256_xor_si256(c2[4177],_mm256_xor_si256(c2[4705],_mm256_xor_si256(c2[14770],_mm256_xor_si256(c2[9483],_mm256_xor_si256(c2[3155],c2[3683])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 4
d2[48]=_mm256_xor_si256(c2[6346],c2[11117]);
//row: 5
d2[60]=_mm256_xor_si256(c2[8450],_mm256_xor_si256(c2[4759],_mm256_xor_si256(c2[5291],_mm256_xor_si256(c2[8977],_mm256_xor_si256(c2[1590],_mm256_xor_si256(c2[8477],_mm256_xor_si256(c2[12168],_mm256_xor_si256(c2[10591],_mm256_xor_si256(c2[7416],_mm256_xor_si256(c2[7974],_mm256_xor_si256(c2[4807],_mm256_xor_si256(c2[2691],_mm256_xor_si256(c2[7468],_mm256_xor_si256(c2[3247],_mm256_xor_si256(c2[15388],_mm256_xor_si256(c2[10107],_mm256_xor_si256(c2[15409],_mm256_xor_si256(c2[4851],_mm256_xor_si256(c2[8545],_mm256_xor_si256(c2[9634],_mm256_xor_si256(c2[6993],_mm256_xor_si256(c2[15432],_mm256_xor_si256(c2[11243],_mm256_xor_si256(c2[15993],_mm256_xor_si256(c2[2267],_mm256_xor_si256(c2[4395],_mm256_xor_si256(c2[4393],_mm256_xor_si256(c2[11793],_mm256_xor_si256(c2[4419],_mm256_xor_si256(c2[15513],_mm256_xor_si256(c2[11286],_mm256_xor_si256(c2[13946],_mm256_xor_si256(c2[8146],_mm256_xor_si256(c2[15006],_mm256_xor_si256(c2[15553],_mm256_xor_si256(c2[16088],_mm256_xor_si256(c2[777],_mm256_xor_si256(c2[5552],_mm256_xor_si256(c2[2378],_mm256_xor_si256(c2[7658],_mm256_xor_si256(c2[7685],_mm256_xor_si256(c2[10323],_mm256_xor_si256(c2[2400],_mm256_xor_si256(c2[3461],_mm256_xor_si256(c2[1372],_mm256_xor_si256(c2[2963],_mm256_xor_si256(c2[9819],_mm256_xor_si256(c2[11963],_mm256_xor_si256(c2[11431],_mm256_xor_si256(c2[9323],_mm256_xor_si256(c2[10931],_mm256_xor_si256(c2[368],_mm256_xor_si256(c2[9870],_mm256_xor_si256(c2[4088],_mm256_xor_si256(c2[16755],_mm256_xor_si256(c2[7250],_mm256_xor_si256(c2[9367],_mm256_xor_si256(c2[8336],_mm256_xor_si256(c2[417],_mm256_xor_si256(c2[5162],_mm256_xor_si256(c2[8352],_mm256_xor_si256(c2[7296],_mm256_xor_si256(c2[6769],_mm256_xor_si256(c2[9442],_mm256_xor_si256(c2[4683],_mm256_xor_si256(c2[5747],_mm256_xor_si256(c2[4179],_mm256_xor_si256(c2[5765],_mm256_xor_si256(c2[2598],_mm256_xor_si256(c2[12651],_mm256_xor_si256(c2[7376],_mm256_xor_si256(c2[1564],c2[10537]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 6
d2[72]=_mm256_xor_si256(c2[11624],_mm256_xor_si256(c2[680],_mm256_xor_si256(c2[768],_mm256_xor_si256(c2[16642],_mm256_xor_si256(c2[15098],_mm256_xor_si256(c2[15727],_mm256_xor_si256(c2[9936],c2[1015])))))));
//row: 7
d2[84]=_mm256_xor_si256(c2[4752],_mm256_xor_si256(c2[15865],_mm256_xor_si256(c2[14889],_mm256_xor_si256(c2[7042],_mm256_xor_si256(c2[1257],c2[9843])))));
//row: 8
d2[96]=_mm256_xor_si256(c2[11627],_mm256_xor_si256(c2[15842],_mm256_xor_si256(c2[7924],_mm256_xor_si256(c2[12151],_mm256_xor_si256(c2[8456],_mm256_xor_si256(c2[12155],_mm256_xor_si256(c2[12683],_mm256_xor_si256(c2[12154],_mm256_xor_si256(c2[15841],_mm256_xor_si256(c2[16369],_mm256_xor_si256(c2[10041],_mm256_xor_si256(c2[11642],_mm256_xor_si256(c2[15869],_mm256_xor_si256(c2[15345],_mm256_xor_si256(c2[2137],_mm256_xor_si256(c2[2665],_mm256_xor_si256(c2[13756],_mm256_xor_si256(c2[560],_mm256_xor_si256(c2[1088],_mm256_xor_si256(c2[10061],_mm256_xor_si256(c2[11139],_mm256_xor_si256(c2[15366],_mm256_xor_si256(c2[7972],_mm256_xor_si256(c2[12199],_mm256_xor_si256(c2[5856],_mm256_xor_si256(c2[9555],_mm256_xor_si256(c2[10083],_mm256_xor_si256(c2[10633],_mm256_xor_si256(c2[14860],_mm256_xor_si256(c2[6412],_mm256_xor_si256(c2[10639],_mm256_xor_si256(c2[1658],_mm256_xor_si256(c2[5357],_mm256_xor_si256(c2[5885],_mm256_xor_si256(c2[2717],_mm256_xor_si256(c2[1691],_mm256_xor_si256(c2[5906],_mm256_xor_si256(c2[8016],_mm256_xor_si256(c2[11715],_mm256_xor_si256(c2[12243],_mm256_xor_si256(c2[11722],_mm256_xor_si256(c2[15409],_mm256_xor_si256(c2[15937],_mm256_xor_si256(c2[12799],_mm256_xor_si256(c2[131],_mm256_xor_si256(c2[10158],_mm256_xor_si256(c2[14385],_mm256_xor_si256(c2[1714],_mm256_xor_si256(c2[5401],_mm256_xor_si256(c2[5929],_mm256_xor_si256(c2[14408],_mm256_xor_si256(c2[1728],_mm256_xor_si256(c2[2263],_mm256_xor_si256(c2[5962],_mm256_xor_si256(c2[6490],_mm256_xor_si256(c2[5432],_mm256_xor_si256(c2[9131],_mm256_xor_si256(c2[9659],_mm256_xor_si256(c2[7560],_mm256_xor_si256(c2[11787],_mm256_xor_si256(c2[7570],_mm256_xor_si256(c2[11257],_mm256_xor_si256(c2[11785],_mm256_xor_si256(c2[14958],_mm256_xor_si256(c2[1762],_mm256_xor_si256(c2[2290],_mm256_xor_si256(c2[7584],_mm256_xor_si256(c2[11811],_mm256_xor_si256(c2[1783],_mm256_xor_si256(c2[5482],_mm256_xor_si256(c2[6010],_mm256_xor_si256(c2[14451],_mm256_xor_si256(c2[1255],_mm256_xor_si256(c2[1783],_mm256_xor_si256(c2[216],_mm256_xor_si256(c2[4443],_mm256_xor_si256(c2[11311],_mm256_xor_si256(c2[15538],_mm256_xor_si256(c2[1276],_mm256_xor_si256(c2[4975],_mm256_xor_si256(c2[5503],_mm256_xor_si256(c2[1835],_mm256_xor_si256(c2[6050],_mm256_xor_si256(c2[2358],_mm256_xor_si256(c2[6057],_mm256_xor_si256(c2[6585],_mm256_xor_si256(c2[3942],_mm256_xor_si256(c2[7641],_mm256_xor_si256(c2[8169],_mm256_xor_si256(c2[8717],_mm256_xor_si256(c2[12944],_mm256_xor_si256(c2[5555],_mm256_xor_si256(c2[9770],_mm256_xor_si256(c2[10835],_mm256_xor_si256(c2[14522],_mm256_xor_si256(c2[15050],_mm256_xor_si256(c2[10850],_mm256_xor_si256(c2[15077],_mm256_xor_si256(c2[13488],_mm256_xor_si256(c2[820],_mm256_xor_si256(c2[5577],_mm256_xor_si256(c2[9264],_mm256_xor_si256(c2[9792],_mm256_xor_si256(c2[9792],_mm256_xor_si256(c2[4537],_mm256_xor_si256(c2[8764],_mm256_xor_si256(c2[6128],_mm256_xor_si256(c2[9827],_mm256_xor_si256(c2[10355],_mm256_xor_si256(c2[12984],_mm256_xor_si256(c2[16683],_mm256_xor_si256(c2[316],_mm256_xor_si256(c2[15128],_mm256_xor_si256(c2[2448],_mm256_xor_si256(c2[14596],_mm256_xor_si256(c2[1400],_mm256_xor_si256(c2[1928],_mm256_xor_si256(c2[12488],_mm256_xor_si256(c2[16187],_mm256_xor_si256(c2[16715],_mm256_xor_si256(c2[14096],_mm256_xor_si256(c2[1416],_mm256_xor_si256(c2[3533],_mm256_xor_si256(c2[7760],_mm256_xor_si256(c2[13035],_mm256_xor_si256(c2[16734],_mm256_xor_si256(c2[367],_mm256_xor_si256(c2[7253],_mm256_xor_si256(c2[11480],_mm256_xor_si256(c2[3025],_mm256_xor_si256(c2[7252],_mm256_xor_si256(c2[10427],_mm256_xor_si256(c2[14114],_mm256_xor_si256(c2[14642],_mm256_xor_si256(c2[4081],_mm256_xor_si256(c2[11501],_mm256_xor_si256(c2[15728],_mm256_xor_si256(c2[3582],_mm256_xor_si256(c2[7281],_mm256_xor_si256(c2[7809],_mm256_xor_si256(c2[8339],_mm256_xor_si256(c2[12026],_mm256_xor_si256(c2[12554],_mm256_xor_si256(c2[11529],_mm256_xor_si256(c2[15744],_mm256_xor_si256(c2[10473],_mm256_xor_si256(c2[14160],_mm256_xor_si256(c2[14688],_mm256_xor_si256(c2[9946],_mm256_xor_si256(c2[13633],_mm256_xor_si256(c2[14161],_mm256_xor_si256(c2[12607],_mm256_xor_si256(c2[16834],_mm256_xor_si256(c2[7848],_mm256_xor_si256(c2[12075],_mm256_xor_si256(c2[8912],_mm256_xor_si256(c2[12611],_mm256_xor_si256(c2[13139],_mm256_xor_si256(c2[463],_mm256_xor_si256(c2[7344],_mm256_xor_si256(c2[11571],_mm256_xor_si256(c2[8930],_mm256_xor_si256(c2[12629],_mm256_xor_si256(c2[13157],_mm256_xor_si256(c2[5763],_mm256_xor_si256(c2[9462],_mm256_xor_si256(c2[9990],_mm256_xor_si256(c2[15816],_mm256_xor_si256(c2[3148],_mm256_xor_si256(c2[10541],_mm256_xor_si256(c2[14768],_mm256_xor_si256(c2[4729],_mm256_xor_si256(c2[8428],_mm256_xor_si256(c2[8956],c2[8963]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 9
d2[108]=_mm256_xor_si256(c2[7403],_mm256_xor_si256(c2[4255],_mm256_xor_si256(c2[778],_mm256_xor_si256(c2[2908],_mm256_xor_si256(c2[13513],_mm256_xor_si256(c2[8337],_mm256_xor_si256(c2[16801],c2[9986])))))));
//row: 10
d2[120]=_mm256_xor_si256(c2[2667],_mm256_xor_si256(c2[10090],_mm256_xor_si256(c2[9608],_mm256_xor_si256(c2[8091],_mm256_xor_si256(c2[16571],c2[1403])))));
//row: 11
d2[132]=_mm256_xor_si256(c2[536],_mm256_xor_si256(c2[3169],_mm256_xor_si256(c2[3697],_mm256_xor_si256(c2[13728],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[14260],_mm256_xor_si256(c2[538],_mm256_xor_si256(c2[1063],_mm256_xor_si256(c2[4224],_mm256_xor_si256(c2[8449],_mm256_xor_si256(c2[563],_mm256_xor_si256(c2[3196],_mm256_xor_si256(c2[3724],_mm256_xor_si256(c2[4254],_mm256_xor_si256(c2[7427],_mm256_xor_si256(c2[2665],_mm256_xor_si256(c2[5838],_mm256_xor_si256(c2[3195],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[2693],_mm256_xor_si256(c2[3221],_mm256_xor_si256(c2[13776],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[11672],_mm256_xor_si256(c2[14833],_mm256_xor_si256(c2[16449],_mm256_xor_si256(c2[2187],_mm256_xor_si256(c2[2715],_mm256_xor_si256(c2[12216],_mm256_xor_si256(c2[15389],_mm256_xor_si256(c2[7474],_mm256_xor_si256(c2[10635],_mm256_xor_si256(c2[7495],_mm256_xor_si256(c2[10656],_mm256_xor_si256(c2[13832],_mm256_xor_si256(c2[98],_mm256_xor_si256(c2[631],_mm256_xor_si256(c2[3792],_mm256_xor_si256(c2[1708],_mm256_xor_si256(c2[4353],_mm256_xor_si256(c2[4881],_mm256_xor_si256(c2[15962],_mm256_xor_si256(c2[2240],_mm256_xor_si256(c2[7518],_mm256_xor_si256(c2[10691],_mm256_xor_si256(c2[3317],_mm256_xor_si256(c2[5962],_mm256_xor_si256(c2[6490],_mm256_xor_si256(c2[8067],_mm256_xor_si256(c2[11240],_mm256_xor_si256(c2[11236],_mm256_xor_si256(c2[14409],_mm256_xor_si256(c2[13376],_mm256_xor_si256(c2[16537],_mm256_xor_si256(c2[13374],_mm256_xor_si256(c2[16547],_mm256_xor_si256(c2[3867],_mm256_xor_si256(c2[7040],_mm256_xor_si256(c2[13400],_mm256_xor_si256(c2[16561],_mm256_xor_si256(c2[7587],_mm256_xor_si256(c2[10760],_mm256_xor_si256(c2[3360],_mm256_xor_si256(c2[6533],_mm256_xor_si256(c2[6032],_mm256_xor_si256(c2[8665],_mm256_xor_si256(c2[9193],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[3393],_mm256_xor_si256(c2[7080],_mm256_xor_si256(c2[10253],_mm256_xor_si256(c2[7639],_mm256_xor_si256(c2[10272],_mm256_xor_si256(c2[10800],_mm256_xor_si256(c2[8162],_mm256_xor_si256(c2[11335],_mm256_xor_si256(c2[9746],_mm256_xor_si256(c2[12919],_mm256_xor_si256(c2[14521],_mm256_xor_si256(c2[271],_mm256_xor_si256(c2[799],_mm256_xor_si256(c2[11359],_mm256_xor_si256(c2[14520],_mm256_xor_si256(c2[16639],_mm256_xor_si256(c2[2905],_mm256_xor_si256(c2[16666],_mm256_xor_si256(c2[2404],_mm256_xor_si256(c2[2932],_mm256_xor_si256(c2[2409],_mm256_xor_si256(c2[5570],_mm256_xor_si256(c2[11381],_mm256_xor_si256(c2[14554],_mm256_xor_si256(c2[4512],_mm256_xor_si256(c2[10353],_mm256_xor_si256(c2[12986],_mm256_xor_si256(c2[13514],_mm256_xor_si256(c2[11932],_mm256_xor_si256(c2[15105],_mm256_xor_si256(c2[1905],_mm256_xor_si256(c2[5066],_mm256_xor_si256(c2[4037],_mm256_xor_si256(c2[7210],_mm256_xor_si256(c2[3505],_mm256_xor_si256(c2[6678],_mm256_xor_si256(c2[1397],_mm256_xor_si256(c2[4570],_mm256_xor_si256(c2[3005],_mm256_xor_si256(c2[5650],_mm256_xor_si256(c2[6178],_mm256_xor_si256(c2[9337],_mm256_xor_si256(c2[12510],_mm256_xor_si256(c2[1944],_mm256_xor_si256(c2[5117],_mm256_xor_si256(c2[13057],_mm256_xor_si256(c2[15702],_mm256_xor_si256(c2[16230],_mm256_xor_si256(c2[8841],_mm256_xor_si256(c2[12002],_mm256_xor_si256(c2[16231],_mm256_xor_si256(c2[2497],_mm256_xor_si256(c2[8305],_mm256_xor_si256(c2[410],_mm256_xor_si256(c2[3583],_mm256_xor_si256(c2[9386],_mm256_xor_si256(c2[12559],_mm256_xor_si256(c2[14143],_mm256_xor_si256(c2[409],_mm256_xor_si256(c2[438],_mm256_xor_si256(c2[3083],_mm256_xor_si256(c2[3611],_mm256_xor_si256(c2[16277],_mm256_xor_si256(c2[2555],_mm256_xor_si256(c2[15750],_mm256_xor_si256(c2[2016],_mm256_xor_si256(c2[1516],_mm256_xor_si256(c2[4161],_mm256_xor_si256(c2[4689],_mm256_xor_si256(c2[13664],_mm256_xor_si256(c2[16825],_mm256_xor_si256(c2[14716],_mm256_xor_si256(c2[994],_mm256_xor_si256(c2[13160],_mm256_xor_si256(c2[15793],_mm256_xor_si256(c2[16321],_mm256_xor_si256(c2[14746],_mm256_xor_si256(c2[1012],_mm256_xor_si256(c2[11579],_mm256_xor_si256(c2[14740],_mm256_xor_si256(c2[4737],_mm256_xor_si256(c2[7370],_mm256_xor_si256(c2[7898],_mm256_xor_si256(c2[16345],_mm256_xor_si256(c2[2623],_mm256_xor_si256(c2[10545],_mm256_xor_si256(c2[13706],c2[15293])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 12
d2[144]=_mm256_xor_si256(c2[6866],_mm256_xor_si256(c2[13757],_mm256_xor_si256(c2[7637],_mm256_xor_si256(c2[4495],_mm256_xor_si256(c2[9817],c2[5714])))));
//row: 13
d2[156]=_mm256_xor_si256(c2[2649],_mm256_xor_si256(c2[3177],_mm256_xor_si256(c2[16369],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[3704],_mm256_xor_si256(c2[13209],_mm256_xor_si256(c2[2664],_mm256_xor_si256(c2[3192],_mm256_xor_si256(c2[6895],_mm256_xor_si256(c2[5306],_mm256_xor_si256(c2[2161],_mm256_xor_si256(c2[2689],_mm256_xor_si256(c2[16417],_mm256_xor_si256(c2[14313],_mm256_xor_si256(c2[1667],_mm256_xor_si256(c2[2195],_mm256_xor_si256(c2[14857],_mm256_xor_si256(c2[10115],_mm256_xor_si256(c2[9053],_mm256_xor_si256(c2[10136],_mm256_xor_si256(c2[16473],_mm256_xor_si256(c2[3272],_mm256_xor_si256(c2[3821],_mm256_xor_si256(c2[4349],_mm256_xor_si256(c2[1708],_mm256_xor_si256(c2[10159],_mm256_xor_si256(c2[5430],_mm256_xor_si256(c2[5958],_mm256_xor_si256(c2[10708],_mm256_xor_si256(c2[13877],_mm256_xor_si256(c2[16017],_mm256_xor_si256(c2[16015],_mm256_xor_si256(c2[6508],_mm256_xor_si256(c2[5456],_mm256_xor_si256(c2[16041],_mm256_xor_si256(c2[10228],_mm256_xor_si256(c2[6001],_mm256_xor_si256(c2[8145],_mm256_xor_si256(c2[8673],_mm256_xor_si256(c2[2861],_mm256_xor_si256(c2[9721],_mm256_xor_si256(c2[9752],_mm256_xor_si256(c2[10280],_mm256_xor_si256(c2[10803],_mm256_xor_si256(c2[12387],_mm256_xor_si256(c2[16634],_mm256_xor_si256(c2[267],_mm256_xor_si256(c2[14000],_mm256_xor_si256(c2[2385],_mm256_xor_si256(c2[1872],_mm256_xor_si256(c2[2400],_mm256_xor_si256(c2[5050],_mm256_xor_si256(c2[14022],_mm256_xor_si256(c2[12466],_mm256_xor_si256(c2[12994],_mm256_xor_si256(c2[14573],_mm256_xor_si256(c2[4546],_mm256_xor_si256(c2[6678],_mm256_xor_si256(c2[6146],_mm256_xor_si256(c2[4038],_mm256_xor_si256(c2[5118],_mm256_xor_si256(c2[5646],_mm256_xor_si256(c2[11978],_mm256_xor_si256(c2[4585],_mm256_xor_si256(c2[15170],_mm256_xor_si256(c2[15698],_mm256_xor_si256(c2[11482],_mm256_xor_si256(c2[1977],_mm256_xor_si256(c2[3051],_mm256_xor_si256(c2[12027],_mm256_xor_si256(c2[16784],_mm256_xor_si256(c2[2551],_mm256_xor_si256(c2[3079],_mm256_xor_si256(c2[2023],_mm256_xor_si256(c2[1496],_mm256_xor_si256(c2[3629],_mm256_xor_si256(c2[4157],_mm256_xor_si256(c2[16305],_mm256_xor_si256(c2[462],_mm256_xor_si256(c2[15273],_mm256_xor_si256(c2[15801],_mm256_xor_si256(c2[480],_mm256_xor_si256(c2[14208],_mm256_xor_si256(c2[10515],_mm256_xor_si256(c2[6850],_mm256_xor_si256(c2[7378],_mm256_xor_si256(c2[2091],c2[13186])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 14
d2[168]=_mm256_xor_si256(c2[7396],_mm256_xor_si256(c2[12967],_mm256_xor_si256(c2[5116],_mm256_xor_si256(c2[13586],_mm256_xor_si256(c2[14674],c2[6840])))));
//row: 15
d2[180]=_mm256_xor_si256(c2[534],_mm256_xor_si256(c2[13738],_mm256_xor_si256(c2[14258],_mm256_xor_si256(c2[533],_mm256_xor_si256(c2[1061],_mm256_xor_si256(c2[8983],_mm256_xor_si256(c2[561],_mm256_xor_si256(c2[4252],_mm256_xor_si256(c2[2147],_mm256_xor_si256(c2[2675],_mm256_xor_si256(c2[1080],_mm256_xor_si256(c2[58],_mm256_xor_si256(c2[13786],_mm256_xor_si256(c2[11670],_mm256_xor_si256(c2[16447],_mm256_xor_si256(c2[12226],_mm256_xor_si256(c2[6944],_mm256_xor_si256(c2[7472],_mm256_xor_si256(c2[7493],_mm256_xor_si256(c2[13830],_mm256_xor_si256(c2[101],_mm256_xor_si256(c2[629],_mm256_xor_si256(c2[1706],_mm256_xor_si256(c2[15960],_mm256_xor_si256(c2[7516],_mm256_xor_si256(c2[3315],_mm256_xor_si256(c2[8065],_mm256_xor_si256(c2[10706],_mm256_xor_si256(c2[11234],_mm256_xor_si256(c2[13374],_mm256_xor_si256(c2[13372],_mm256_xor_si256(c2[3337],_mm256_xor_si256(c2[3865],_mm256_xor_si256(c2[13398],_mm256_xor_si256(c2[7585],_mm256_xor_si256(c2[2842],_mm256_xor_si256(c2[3370],_mm256_xor_si256(c2[6030],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[7090],_mm256_xor_si256(c2[7637],_mm256_xor_si256(c2[8160],_mm256_xor_si256(c2[9216],_mm256_xor_si256(c2[9744],_mm256_xor_si256(c2[9750],_mm256_xor_si256(c2[14531],_mm256_xor_si256(c2[11357],_mm256_xor_si256(c2[16109],_mm256_xor_si256(c2[16637],_mm256_xor_si256(c2[16664],_mm256_xor_si256(c2[2407],_mm256_xor_si256(c2[10851],_mm256_xor_si256(c2[11379],_mm256_xor_si256(c2[10351],_mm256_xor_si256(c2[11930],_mm256_xor_si256(c2[1375],_mm256_xor_si256(c2[1903],_mm256_xor_si256(c2[16161],_mm256_xor_si256(c2[4035],_mm256_xor_si256(c2[3515],_mm256_xor_si256(c2[867],_mm256_xor_si256(c2[1395],_mm256_xor_si256(c2[3003],_mm256_xor_si256(c2[9347],_mm256_xor_si256(c2[1954],_mm256_xor_si256(c2[13067],_mm256_xor_si256(c2[8839],_mm256_xor_si256(c2[15701],_mm256_xor_si256(c2[16229],_mm256_xor_si256(c2[408],_mm256_xor_si256(c2[9384],_mm256_xor_si256(c2[13613],_mm256_xor_si256(c2[14141],_mm256_xor_si256(c2[436],_mm256_xor_si256(c2[16275],_mm256_xor_si256(c2[15220],_mm256_xor_si256(c2[15748],_mm256_xor_si256(c2[12577],_mm256_xor_si256(c2[1514],_mm256_xor_si256(c2[13662],_mm256_xor_si256(c2[14714],_mm256_xor_si256(c2[13158],_mm256_xor_si256(c2[14744],_mm256_xor_si256(c2[11049],_mm256_xor_si256(c2[11577],_mm256_xor_si256(c2[4735],_mm256_xor_si256(c2[16355],_mm256_xor_si256(c2[10015],c2[10543]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 16
d2[192]=_mm256_xor_si256(c2[6347],_mm256_xor_si256(c2[2644],_mm256_xor_si256(c2[3176],_mm256_xor_si256(c2[6874],_mm256_xor_si256(c2[6362],_mm256_xor_si256(c2[10065],_mm256_xor_si256(c2[8476],_mm256_xor_si256(c2[6888],_mm256_xor_si256(c2[5859],_mm256_xor_si256(c2[2692],_mm256_xor_si256(c2[576],_mm256_xor_si256(c2[5353],_mm256_xor_si256(c2[1132],_mm256_xor_si256(c2[13273],_mm256_xor_si256(c2[9586],_mm256_xor_si256(c2[13306],_mm256_xor_si256(c2[2736],_mm256_xor_si256(c2[6442],_mm256_xor_si256(c2[7519],_mm256_xor_si256(c2[4878],_mm256_xor_si256(c2[13329],_mm256_xor_si256(c2[9128],_mm256_xor_si256(c2[13878],_mm256_xor_si256(c2[152],_mm256_xor_si256(c2[2280],_mm256_xor_si256(c2[2290],_mm256_xor_si256(c2[9678],_mm256_xor_si256(c2[2304],_mm256_xor_si256(c2[13398],_mm256_xor_si256(c2[9171],_mm256_xor_si256(c2[11843],_mm256_xor_si256(c2[6031],_mm256_xor_si256(c2[12891],_mm256_xor_si256(c2[13450],_mm256_xor_si256(c2[13973],_mm256_xor_si256(c2[15557],_mm256_xor_si256(c2[3437],_mm256_xor_si256(c2[275],_mm256_xor_si256(c2[5555],_mm256_xor_si256(c2[13465],_mm256_xor_si256(c2[5570],_mm256_xor_si256(c2[8208],_mm256_xor_si256(c2[297],_mm256_xor_si256(c2[16152],_mm256_xor_si256(c2[848],_mm256_xor_si256(c2[7704],_mm256_xor_si256(c2[9848],_mm256_xor_si256(c2[9316],_mm256_xor_si256(c2[7208],_mm256_xor_si256(c2[8816],_mm256_xor_si256(c2[15148],_mm256_xor_si256(c2[7755],_mm256_xor_si256(c2[1973],_mm256_xor_si256(c2[14640],_mm256_xor_si256(c2[5147],_mm256_xor_si256(c2[6221],_mm256_xor_si256(c2[15197],_mm256_xor_si256(c2[3059],_mm256_xor_si256(c2[6249],_mm256_xor_si256(c2[5193],_mm256_xor_si256(c2[4666],_mm256_xor_si256(c2[7327],_mm256_xor_si256(c2[2568],_mm256_xor_si256(c2[3632],_mm256_xor_si256(c2[2064],_mm256_xor_si256(c2[3650],_mm256_xor_si256(c2[483],_mm256_xor_si256(c2[1017],_mm256_xor_si256(c2[10536],_mm256_xor_si256(c2[5261],c2[16344]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 17
d2[204]=_mm256_xor_si256(c2[2120],_mm256_xor_si256(c2[8265],_mm256_xor_si256(c2[9362],_mm256_xor_si256(c2[3587],c2[12659]))));
//row: 18
d2[216]=_mm256_xor_si256(c2[1084],_mm256_xor_si256(c2[1877],_mm256_xor_si256(c2[12992],_mm256_xor_si256(c2[2548],c2[2568]))));
//row: 19
d2[228]=_mm256_xor_si256(c2[8980],_mm256_xor_si256(c2[11118],_mm256_xor_si256(c2[12850],_mm256_xor_si256(c2[9703],c2[2886]))));
//row: 20
d2[240]=_mm256_xor_si256(c2[7403],_mm256_xor_si256(c2[3700],_mm256_xor_si256(c2[4232],_mm256_xor_si256(c2[7930],_mm256_xor_si256(c2[14261],_mm256_xor_si256(c2[7418],_mm256_xor_si256(c2[11121],_mm256_xor_si256(c2[9532],_mm256_xor_si256(c2[6915],_mm256_xor_si256(c2[3748],_mm256_xor_si256(c2[1632],_mm256_xor_si256(c2[6409],_mm256_xor_si256(c2[2188],_mm256_xor_si256(c2[14329],_mm256_xor_si256(c2[7470],_mm256_xor_si256(c2[14362],_mm256_xor_si256(c2[3792],_mm256_xor_si256(c2[7498],_mm256_xor_si256(c2[8575],_mm256_xor_si256(c2[5934],_mm256_xor_si256(c2[14385],_mm256_xor_si256(c2[10184],_mm256_xor_si256(c2[14934],_mm256_xor_si256(c2[1208],_mm256_xor_si256(c2[3336],_mm256_xor_si256(c2[3346],_mm256_xor_si256(c2[10734],_mm256_xor_si256(c2[3360],_mm256_xor_si256(c2[14454],_mm256_xor_si256(c2[10227],_mm256_xor_si256(c2[12899],_mm256_xor_si256(c2[7087],_mm256_xor_si256(c2[13947],_mm256_xor_si256(c2[4448],_mm256_xor_si256(c2[14506],_mm256_xor_si256(c2[15029],_mm256_xor_si256(c2[16613],_mm256_xor_si256(c2[4493],_mm256_xor_si256(c2[1331],_mm256_xor_si256(c2[6611],_mm256_xor_si256(c2[11362],_mm256_xor_si256(c2[6626],_mm256_xor_si256(c2[9264],_mm256_xor_si256(c2[1353],_mm256_xor_si256(c2[313],_mm256_xor_si256(c2[1904],_mm256_xor_si256(c2[8760],_mm256_xor_si256(c2[10904],_mm256_xor_si256(c2[10372],_mm256_xor_si256(c2[8264],_mm256_xor_si256(c2[9872],_mm256_xor_si256(c2[16204],_mm256_xor_si256(c2[8811],_mm256_xor_si256(c2[3029],_mm256_xor_si256(c2[15696],_mm256_xor_si256(c2[6203],_mm256_xor_si256(c2[7277],_mm256_xor_si256(c2[16253],_mm256_xor_si256(c2[4115],_mm256_xor_si256(c2[7305],_mm256_xor_si256(c2[6249],_mm256_xor_si256(c2[5722],_mm256_xor_si256(c2[8383],_mm256_xor_si256(c2[3624],_mm256_xor_si256(c2[4688],_mm256_xor_si256(c2[3120],_mm256_xor_si256(c2[4706],_mm256_xor_si256(c2[1539],_mm256_xor_si256(c2[11592],_mm256_xor_si256(c2[6317],c2[505]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 21
d2[252]=_mm256_xor_si256(c2[6894],_mm256_xor_si256(c2[3291],_mm256_xor_si256(c2[4618],_mm256_xor_si256(c2[11574],c2[1035]))));
//row: 22
d2[264]=_mm256_xor_si256(c2[15840],_mm256_xor_si256(c2[6096],_mm256_xor_si256(c2[5071],c2[12024])));
//row: 23
d2[276]=_mm256_xor_si256(c2[12696],_mm256_xor_si256(c2[13250],_mm256_xor_si256(c2[15553],c2[14688])));
//row: 24
d2[288]=_mm256_xor_si256(c2[15316],_mm256_xor_si256(c2[11625],_mm256_xor_si256(c2[12145],_mm256_xor_si256(c2[15843],_mm256_xor_si256(c2[5289],_mm256_xor_si256(c2[15343],_mm256_xor_si256(c2[2139],_mm256_xor_si256(c2[562],_mm256_xor_si256(c2[14840],_mm256_xor_si256(c2[11673],_mm256_xor_si256(c2[9557],_mm256_xor_si256(c2[14334],_mm256_xor_si256(c2[10113],_mm256_xor_si256(c2[5359],_mm256_xor_si256(c2[15916],_mm256_xor_si256(c2[5380],_mm256_xor_si256(c2[11717],_mm256_xor_si256(c2[15411],_mm256_xor_si256(c2[5911],_mm256_xor_si256(c2[16488],_mm256_xor_si256(c2[13859],_mm256_xor_si256(c2[5403],_mm256_xor_si256(c2[1202],_mm256_xor_si256(c2[5952],_mm256_xor_si256(c2[9121],_mm256_xor_si256(c2[11261],_mm256_xor_si256(c2[11259],_mm256_xor_si256(c2[1752],_mm256_xor_si256(c2[11285],_mm256_xor_si256(c2[5472],_mm256_xor_si256(c2[1257],_mm256_xor_si256(c2[3917],_mm256_xor_si256(c2[15000],_mm256_xor_si256(c2[4977],_mm256_xor_si256(c2[5524],_mm256_xor_si256(c2[6059],_mm256_xor_si256(c2[7643],_mm256_xor_si256(c2[12418],_mm256_xor_si256(c2[9244],_mm256_xor_si256(c2[14524],_mm256_xor_si256(c2[10306],_mm256_xor_si256(c2[14551],_mm256_xor_si256(c2[294],_mm256_xor_si256(c2[9266],_mm256_xor_si256(c2[8238],_mm256_xor_si256(c2[9817],_mm256_xor_si256(c2[16685],_mm256_xor_si256(c2[1922],_mm256_xor_si256(c2[1402],_mm256_xor_si256(c2[16177],_mm256_xor_si256(c2[890],_mm256_xor_si256(c2[7234],_mm256_xor_si256(c2[16736],_mm256_xor_si256(c2[10954],_mm256_xor_si256(c2[6726],_mm256_xor_si256(c2[14116],_mm256_xor_si256(c2[15202],_mm256_xor_si256(c2[7283],_mm256_xor_si256(c2[12028],_mm256_xor_si256(c2[15218],_mm256_xor_si256(c2[14162],_mm256_xor_si256(c2[13635],_mm256_xor_si256(c2[16296],_mm256_xor_si256(c2[11549],_mm256_xor_si256(c2[12601],_mm256_xor_si256(c2[11045],_mm256_xor_si256(c2[12631],_mm256_xor_si256(c2[9464],_mm256_xor_si256(c2[2622],_mm256_xor_si256(c2[14242],c2[8430]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 25
d2[300]=_mm256_xor_si256(c2[4250],_mm256_xor_si256(c2[9120],_mm256_xor_si256(c2[16547],c2[13017])));
//row: 26
d2[312]=_mm256_xor_si256(c2[3698],_mm256_xor_si256(c2[9026],_mm256_xor_si256(c2[6434],c2[4588])));
//row: 27
d2[324]=_mm256_xor_si256(c2[1086],_mm256_xor_si256(c2[1206],c2[2835]));
//row: 28
d2[336]=_mm256_xor_si256(c2[15846],_mm256_xor_si256(c2[10128],_mm256_xor_si256(c2[11023],c2[10016])));
//row: 29
d2[348]=_mm256_xor_si256(c2[1056],_mm256_xor_si256(c2[14260],_mm256_xor_si256(c2[14792],_mm256_xor_si256(c2[1067],_mm256_xor_si256(c2[1595],_mm256_xor_si256(c2[1083],_mm256_xor_si256(c2[4786],_mm256_xor_si256(c2[2669],_mm256_xor_si256(c2[3197],_mm256_xor_si256(c2[14815],_mm256_xor_si256(c2[580],_mm256_xor_si256(c2[14308],_mm256_xor_si256(c2[12192],_mm256_xor_si256(c2[74],_mm256_xor_si256(c2[12748],_mm256_xor_si256(c2[7466],_mm256_xor_si256(c2[7994],_mm256_xor_si256(c2[8027],_mm256_xor_si256(c2[14352],_mm256_xor_si256(c2[635],_mm256_xor_si256(c2[1163],_mm256_xor_si256(c2[2240],_mm256_xor_si256(c2[16494],_mm256_xor_si256(c2[8050],_mm256_xor_si256(c2[3849],_mm256_xor_si256(c2[8599],_mm256_xor_si256(c2[11240],_mm256_xor_si256(c2[11768],_mm256_xor_si256(c2[13896],_mm256_xor_si256(c2[13906],_mm256_xor_si256(c2[3871],_mm256_xor_si256(c2[4399],_mm256_xor_si256(c2[13920],_mm256_xor_si256(c2[8119],_mm256_xor_si256(c2[3364],_mm256_xor_si256(c2[3892],_mm256_xor_si256(c2[6552],_mm256_xor_si256(c2[752],_mm256_xor_si256(c2[7612],_mm256_xor_si256(c2[8171],_mm256_xor_si256(c2[8694],_mm256_xor_si256(c2[9750],_mm256_xor_si256(c2[10278],_mm256_xor_si256(c2[15053],_mm256_xor_si256(c2[11891],_mm256_xor_si256(c2[16643],_mm256_xor_si256(c2[264],_mm256_xor_si256(c2[291],_mm256_xor_si256(c2[2929],_mm256_xor_si256(c2[11385],_mm256_xor_si256(c2[11913],_mm256_xor_si256(c2[10873],_mm256_xor_si256(c2[12464],_mm256_xor_si256(c2[1897],_mm256_xor_si256(c2[2425],_mm256_xor_si256(c2[4569],_mm256_xor_si256(c2[4037],_mm256_xor_si256(c2[1401],_mm256_xor_si256(c2[1929],_mm256_xor_si256(c2[2976],_mm256_xor_si256(c2[3537],_mm256_xor_si256(c2[9869],_mm256_xor_si256(c2[2476],_mm256_xor_si256(c2[13589],_mm256_xor_si256(c2[9361],_mm256_xor_si256(c2[16235],_mm256_xor_si256(c2[16763],_mm256_xor_si256(c2[942],_mm256_xor_si256(c2[9918],_mm256_xor_si256(c2[14147],_mm256_xor_si256(c2[14675],_mm256_xor_si256(c2[970],_mm256_xor_si256(c2[16809],_mm256_xor_si256(c2[15754],_mm256_xor_si256(c2[16282],_mm256_xor_si256(c2[10468],_mm256_xor_si256(c2[2048],_mm256_xor_si256(c2[14184],_mm256_xor_si256(c2[15248],_mm256_xor_si256(c2[13680],_mm256_xor_si256(c2[15266],_mm256_xor_si256(c2[11571],_mm256_xor_si256(c2[12099],_mm256_xor_si256(c2[5257],_mm256_xor_si256(c2[16877],_mm256_xor_si256(c2[10537],c2[11065]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 30
d2[360]=_mm256_xor_si256(c2[7392],_mm256_xor_si256(c2[3701],_mm256_xor_si256(c2[3705],_mm256_xor_si256(c2[4233],_mm256_xor_si256(c2[7403],_mm256_xor_si256(c2[7931],_mm256_xor_si256(c2[16372],_mm256_xor_si256(c2[7419],_mm256_xor_si256(c2[10594],_mm256_xor_si256(c2[11122],_mm256_xor_si256(c2[9005],_mm256_xor_si256(c2[9533],_mm256_xor_si256(c2[6916],_mm256_xor_si256(c2[3749],_mm256_xor_si256(c2[1105],_mm256_xor_si256(c2[1633],_mm256_xor_si256(c2[6410],_mm256_xor_si256(c2[2189],_mm256_xor_si256(c2[13802],_mm256_xor_si256(c2[14330],_mm256_xor_si256(c2[14363],_mm256_xor_si256(c2[3265],_mm256_xor_si256(c2[3793],_mm256_xor_si256(c2[6971],_mm256_xor_si256(c2[7499],_mm256_xor_si256(c2[8576],_mm256_xor_si256(c2[5935],_mm256_xor_si256(c2[13858],_mm256_xor_si256(c2[14386],_mm256_xor_si256(c2[10185],_mm256_xor_si256(c2[14407],_mm256_xor_si256(c2[14935],_mm256_xor_si256(c2[681],_mm256_xor_si256(c2[1209],_mm256_xor_si256(c2[3337],_mm256_xor_si256(c2[2819],_mm256_xor_si256(c2[3347],_mm256_xor_si256(c2[10207],_mm256_xor_si256(c2[10735],_mm256_xor_si256(c2[3361],_mm256_xor_si256(c2[13927],_mm256_xor_si256(c2[14455],_mm256_xor_si256(c2[9700],_mm256_xor_si256(c2[10228],_mm256_xor_si256(c2[12888],_mm256_xor_si256(c2[7088],_mm256_xor_si256(c2[13420],_mm256_xor_si256(c2[13948],_mm256_xor_si256(c2[14507],_mm256_xor_si256(c2[14502],_mm256_xor_si256(c2[15030],_mm256_xor_si256(c2[16086],_mm256_xor_si256(c2[16614],_mm256_xor_si256(c2[2887],_mm256_xor_si256(c2[4494],_mm256_xor_si256(c2[1320],_mm256_xor_si256(c2[6072],_mm256_xor_si256(c2[6600],_mm256_xor_si256(c2[6627],_mm256_xor_si256(c2[9265],_mm256_xor_si256(c2[826],_mm256_xor_si256(c2[1354],_mm256_xor_si256(c2[314],_mm256_xor_si256(c2[1377],_mm256_xor_si256(c2[1905],_mm256_xor_si256(c2[8233],_mm256_xor_si256(c2[8761],_mm256_xor_si256(c2[2432],_mm256_xor_si256(c2[10905],_mm256_xor_si256(c2[9845],_mm256_xor_si256(c2[10373],_mm256_xor_si256(c2[7737],_mm256_xor_si256(c2[8265],_mm256_xor_si256(c2[9873],_mm256_xor_si256(c2[16205],_mm256_xor_si256(c2[8284],_mm256_xor_si256(c2[8812],_mm256_xor_si256(c2[3030],_mm256_xor_si256(c2[15697],_mm256_xor_si256(c2[5664],_mm256_xor_si256(c2[6192],_mm256_xor_si256(c2[7278],_mm256_xor_si256(c2[15726],_mm256_xor_si256(c2[16254],_mm256_xor_si256(c2[3576],_mm256_xor_si256(c2[4104],_mm256_xor_si256(c2[7306],_mm256_xor_si256(c2[5722],_mm256_xor_si256(c2[6250],_mm256_xor_si256(c2[5195],_mm256_xor_si256(c2[5723],_mm256_xor_si256(c2[8384],_mm256_xor_si256(c2[3625],_mm256_xor_si256(c2[4161],_mm256_xor_si256(c2[4689],_mm256_xor_si256(c2[3121],_mm256_xor_si256(c2[4179],_mm256_xor_si256(c2[4707],_mm256_xor_si256(c2[1012],_mm256_xor_si256(c2[1540],_mm256_xor_si256(c2[11593],_mm256_xor_si256(c2[6318],_mm256_xor_si256(c2[16873],c2[506])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 31
d2[372]=_mm256_xor_si256(c2[11093],_mm256_xor_si256(c2[10565],_mm256_xor_si256(c2[7402],_mm256_xor_si256(c2[6874],_mm256_xor_si256(c2[7922],_mm256_xor_si256(c2[7394],_mm256_xor_si256(c2[11620],_mm256_xor_si256(c2[10564],_mm256_xor_si256(c2[11092],_mm256_xor_si256(c2[11120],_mm256_xor_si256(c2[10592],_mm256_xor_si256(c2[14811],_mm256_xor_si256(c2[14283],_mm256_xor_si256(c2[13234],_mm256_xor_si256(c2[12178],_mm256_xor_si256(c2[12706],_mm256_xor_si256(c2[2139],_mm256_xor_si256(c2[10617],_mm256_xor_si256(c2[10089],_mm256_xor_si256(c2[7450],_mm256_xor_si256(c2[6922],_mm256_xor_si256(c2[5334],_mm256_xor_si256(c2[4806],_mm256_xor_si256(c2[10111],_mm256_xor_si256(c2[9583],_mm256_xor_si256(c2[5890],_mm256_xor_si256(c2[5362],_mm256_xor_si256(c2[1136],_mm256_xor_si256(c2[80],_mm256_xor_si256(c2[608],_mm256_xor_si256(c2[1157],_mm256_xor_si256(c2[629],_mm256_xor_si256(c2[7494],_mm256_xor_si256(c2[6966],_mm256_xor_si256(c2[11188],_mm256_xor_si256(c2[10132],_mm256_xor_si256(c2[10660],_mm256_xor_si256(c2[12265],_mm256_xor_si256(c2[11737],_mm256_xor_si256(c2[9624],_mm256_xor_si256(c2[9096],_mm256_xor_si256(c2[1180],_mm256_xor_si256(c2[652],_mm256_xor_si256(c2[13874],_mm256_xor_si256(c2[13346],_mm256_xor_si256(c2[1729],_mm256_xor_si256(c2[1201],_mm256_xor_si256(c2[4898],_mm256_xor_si256(c2[3842],_mm256_xor_si256(c2[4370],_mm256_xor_si256(c2[7038],_mm256_xor_si256(c2[6510],_mm256_xor_si256(c2[7036],_mm256_xor_si256(c2[6508],_mm256_xor_si256(c2[14424],_mm256_xor_si256(c2[13368],_mm256_xor_si256(c2[13896],_mm256_xor_si256(c2[12318],_mm256_xor_si256(c2[7062],_mm256_xor_si256(c2[6534],_mm256_xor_si256(c2[1249],_mm256_xor_si256(c2[721],_mm256_xor_si256(c2[13929],_mm256_xor_si256(c2[12873],_mm256_xor_si256(c2[13401],_mm256_xor_si256(c2[16589],_mm256_xor_si256(c2[16061],_mm256_xor_si256(c2[10777],_mm256_xor_si256(c2[10249],_mm256_xor_si256(c2[754],_mm256_xor_si256(c2[226],_mm256_xor_si256(c2[1301],_mm256_xor_si256(c2[773],_mm256_xor_si256(c2[1824],_mm256_xor_si256(c2[1296],_mm256_xor_si256(c2[3408],_mm256_xor_si256(c2[2352],_mm256_xor_si256(c2[2880],_mm256_xor_si256(c2[8195],_mm256_xor_si256(c2[7667],_mm256_xor_si256(c2[5021],_mm256_xor_si256(c2[4493],_mm256_xor_si256(c2[10301],_mm256_xor_si256(c2[9245],_mm256_xor_si256(c2[9773],_mm256_xor_si256(c2[10328],_mm256_xor_si256(c2[9800],_mm256_xor_si256(c2[12966],_mm256_xor_si256(c2[12438],_mm256_xor_si256(c2[5043],_mm256_xor_si256(c2[3987],_mm256_xor_si256(c2[4515],_mm256_xor_si256(c2[4015],_mm256_xor_si256(c2[3487],_mm256_xor_si256(c2[5594],_mm256_xor_si256(c2[5066],_mm256_xor_si256(c2[12462],_mm256_xor_si256(c2[11406],_mm256_xor_si256(c2[11934],_mm256_xor_si256(c2[14594],_mm256_xor_si256(c2[14066],_mm256_xor_si256(c2[14074],_mm256_xor_si256(c2[13546],_mm256_xor_si256(c2[11954],_mm256_xor_si256(c2[10898],_mm256_xor_si256(c2[11426],_mm256_xor_si256(c2[13562],_mm256_xor_si256(c2[13034],_mm256_xor_si256(c2[3011],_mm256_xor_si256(c2[2483],_mm256_xor_si256(c2[12513],_mm256_xor_si256(c2[11985],_mm256_xor_si256(c2[6731],_mm256_xor_si256(c2[6203],_mm256_xor_si256(c2[2503],_mm256_xor_si256(c2[1975],_mm256_xor_si256(c2[9893],_mm256_xor_si256(c2[8837],_mm256_xor_si256(c2[9365],_mm256_xor_si256(c2[10979],_mm256_xor_si256(c2[10451],_mm256_xor_si256(c2[3048],_mm256_xor_si256(c2[2520],_mm256_xor_si256(c2[7805],_mm256_xor_si256(c2[6749],_mm256_xor_si256(c2[7277],_mm256_xor_si256(c2[10995],_mm256_xor_si256(c2[10467],_mm256_xor_si256(c2[9939],_mm256_xor_si256(c2[9411],_mm256_xor_si256(c2[9412],_mm256_xor_si256(c2[8356],_mm256_xor_si256(c2[8884],_mm256_xor_si256(c2[12073],_mm256_xor_si256(c2[11545],_mm256_xor_si256(c2[7326],_mm256_xor_si256(c2[6798],_mm256_xor_si256(c2[8378],_mm256_xor_si256(c2[7850],_mm256_xor_si256(c2[6822],_mm256_xor_si256(c2[6294],_mm256_xor_si256(c2[8408],_mm256_xor_si256(c2[7880],_mm256_xor_si256(c2[5241],_mm256_xor_si256(c2[4185],_mm256_xor_si256(c2[4713],_mm256_xor_si256(c2[15294],_mm256_xor_si256(c2[14766],_mm256_xor_si256(c2[10019],_mm256_xor_si256(c2[9491],_mm256_xor_si256(c2[4207],_mm256_xor_si256(c2[3151],c2[3679]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 32
d2[384]=_mm256_xor_si256(c2[10038],_mm256_xor_si256(c2[6347],_mm256_xor_si256(c2[6339],_mm256_xor_si256(c2[6867],_mm256_xor_si256(c2[10037],_mm256_xor_si256(c2[10565],_mm256_xor_si256(c2[3171],_mm256_xor_si256(c2[10065],_mm256_xor_si256(c2[13228],_mm256_xor_si256(c2[13756],_mm256_xor_si256(c2[11651],_mm256_xor_si256(c2[12179],_mm256_xor_si256(c2[9562],_mm256_xor_si256(c2[6395],_mm256_xor_si256(c2[3751],_mm256_xor_si256(c2[4279],_mm256_xor_si256(c2[9056],_mm256_xor_si256(c2[4835],_mm256_xor_si256(c2[16448],_mm256_xor_si256(c2[81],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[5911],_mm256_xor_si256(c2[6439],_mm256_xor_si256(c2[9605],_mm256_xor_si256(c2[10133],_mm256_xor_si256(c2[11210],_mm256_xor_si256(c2[8569],_mm256_xor_si256(c2[16492],_mm256_xor_si256(c2[125],_mm256_xor_si256(c2[12819],_mm256_xor_si256(c2[146],_mm256_xor_si256(c2[674],_mm256_xor_si256(c2[3315],_mm256_xor_si256(c2[3843],_mm256_xor_si256(c2[5983],_mm256_xor_si256(c2[5453],_mm256_xor_si256(c2[5981],_mm256_xor_si256(c2[12841],_mm256_xor_si256(c2[13369],_mm256_xor_si256(c2[6007],_mm256_xor_si256(c2[16561],_mm256_xor_si256(c2[194],_mm256_xor_si256(c2[12346],_mm256_xor_si256(c2[12874],_mm256_xor_si256(c2[15534],_mm256_xor_si256(c2[9722],_mm256_xor_si256(c2[16066],_mm256_xor_si256(c2[16594],_mm256_xor_si256(c2[246],_mm256_xor_si256(c2[241],_mm256_xor_si256(c2[769],_mm256_xor_si256(c2[1825],_mm256_xor_si256(c2[2353],_mm256_xor_si256(c2[7128],_mm256_xor_si256(c2[3966],_mm256_xor_si256(c2[8718],_mm256_xor_si256(c2[9246],_mm256_xor_si256(c2[9273],_mm256_xor_si256(c2[11911],_mm256_xor_si256(c2[3460],_mm256_xor_si256(c2[3988],_mm256_xor_si256(c2[5046],_mm256_xor_si256(c2[2960],_mm256_xor_si256(c2[4011],_mm256_xor_si256(c2[4539],_mm256_xor_si256(c2[10879],_mm256_xor_si256(c2[11407],_mm256_xor_si256(c2[13539],_mm256_xor_si256(c2[12491],_mm256_xor_si256(c2[13019],_mm256_xor_si256(c2[10371],_mm256_xor_si256(c2[10899],_mm256_xor_si256(c2[8261],_mm256_xor_si256(c2[12507],_mm256_xor_si256(c2[1944],_mm256_xor_si256(c2[10930],_mm256_xor_si256(c2[11458],_mm256_xor_si256(c2[5664],_mm256_xor_si256(c2[1448],_mm256_xor_si256(c2[8310],_mm256_xor_si256(c2[8838],_mm256_xor_si256(c2[9912],_mm256_xor_si256(c2[1465],_mm256_xor_si256(c2[1993],_mm256_xor_si256(c2[6222],_mm256_xor_si256(c2[6750],_mm256_xor_si256(c2[9940],_mm256_xor_si256(c2[8356],_mm256_xor_si256(c2[8884],_mm256_xor_si256(c2[7829],_mm256_xor_si256(c2[8357],_mm256_xor_si256(c2[11018],_mm256_xor_si256(c2[6271],_mm256_xor_si256(c2[6795],_mm256_xor_si256(c2[7323],_mm256_xor_si256(c2[5767],_mm256_xor_si256(c2[6825],_mm256_xor_si256(c2[7353],_mm256_xor_si256(c2[3658],_mm256_xor_si256(c2[4186],_mm256_xor_si256(c2[14239],_mm256_xor_si256(c2[8952],_mm256_xor_si256(c2[2624],c2[3152])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 33
d2[396]=_mm256_xor_si256(c2[1618],_mm256_xor_si256(c2[4272],_mm256_xor_si256(c2[5027],c2[5259])));
//row: 34
d2[408]=_mm256_xor_si256(c2[3175],_mm256_xor_si256(c2[10732],_mm256_xor_si256(c2[5646],c2[13089])));
//row: 35
d2[420]=_mm256_xor_si256(c2[15317],_mm256_xor_si256(c2[11626],_mm256_xor_si256(c2[12146],_mm256_xor_si256(c2[15844],_mm256_xor_si256(c2[15344],_mm256_xor_si256(c2[2140],_mm256_xor_si256(c2[563],_mm256_xor_si256(c2[34],_mm256_xor_si256(c2[14841],_mm256_xor_si256(c2[11674],_mm256_xor_si256(c2[9558],_mm256_xor_si256(c2[14335],_mm256_xor_si256(c2[10114],_mm256_xor_si256(c2[5360],_mm256_xor_si256(c2[5381],_mm256_xor_si256(c2[11718],_mm256_xor_si256(c2[15412],_mm256_xor_si256(c2[16489],_mm256_xor_si256(c2[13848],_mm256_xor_si256(c2[5404],_mm256_xor_si256(c2[1203],_mm256_xor_si256(c2[5953],_mm256_xor_si256(c2[9122],_mm256_xor_si256(c2[8074],_mm256_xor_si256(c2[11262],_mm256_xor_si256(c2[11260],_mm256_xor_si256(c2[1753],_mm256_xor_si256(c2[11286],_mm256_xor_si256(c2[5473],_mm256_xor_si256(c2[1258],_mm256_xor_si256(c2[3918],_mm256_xor_si256(c2[15001],_mm256_xor_si256(c2[4978],_mm256_xor_si256(c2[5525],_mm256_xor_si256(c2[6048],_mm256_xor_si256(c2[7632],_mm256_xor_si256(c2[12419],_mm256_xor_si256(c2[9245],_mm256_xor_si256(c2[14525],_mm256_xor_si256(c2[14552],_mm256_xor_si256(c2[295],_mm256_xor_si256(c2[9267],_mm256_xor_si256(c2[1344],_mm256_xor_si256(c2[8239],_mm256_xor_si256(c2[9818],_mm256_xor_si256(c2[16686],_mm256_xor_si256(c2[1923],_mm256_xor_si256(c2[1403],_mm256_xor_si256(c2[16178],_mm256_xor_si256(c2[891],_mm256_xor_si256(c2[7235],_mm256_xor_si256(c2[16737],_mm256_xor_si256(c2[10955],_mm256_xor_si256(c2[6727],_mm256_xor_si256(c2[14117],_mm256_xor_si256(c2[15203],_mm256_xor_si256(c2[7272],_mm256_xor_si256(c2[12029],_mm256_xor_si256(c2[15219],_mm256_xor_si256(c2[14163],_mm256_xor_si256(c2[13636],_mm256_xor_si256(c2[16297],_mm256_xor_si256(c2[11550],_mm256_xor_si256(c2[12602],_mm256_xor_si256(c2[11046],_mm256_xor_si256(c2[12632],_mm256_xor_si256(c2[9465],_mm256_xor_si256(c2[2623],_mm256_xor_si256(c2[14243],c2[8431])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 36
d2[432]=_mm256_xor_si256(c2[9510],_mm256_xor_si256(c2[13545],_mm256_xor_si256(c2[5121],c2[11520])));
//row: 37
d2[444]=_mm256_xor_si256(c2[3169],_mm256_xor_si256(c2[3697],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[538],_mm256_xor_si256(c2[4224],_mm256_xor_si256(c2[3196],_mm256_xor_si256(c2[3724],_mm256_xor_si256(c2[7427],_mm256_xor_si256(c2[5838],_mm256_xor_si256(c2[6896],_mm256_xor_si256(c2[2693],_mm256_xor_si256(c2[3221],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[14833],_mm256_xor_si256(c2[2187],_mm256_xor_si256(c2[2715],_mm256_xor_si256(c2[15389],_mm256_xor_si256(c2[10635],_mm256_xor_si256(c2[10656],_mm256_xor_si256(c2[98],_mm256_xor_si256(c2[3792],_mm256_xor_si256(c2[4353],_mm256_xor_si256(c2[4881],_mm256_xor_si256(c2[2240],_mm256_xor_si256(c2[10691],_mm256_xor_si256(c2[5962],_mm256_xor_si256(c2[6490],_mm256_xor_si256(c2[11240],_mm256_xor_si256(c2[14409],_mm256_xor_si256(c2[16537],_mm256_xor_si256(c2[16547],_mm256_xor_si256(c2[7040],_mm256_xor_si256(c2[16561],_mm256_xor_si256(c2[10760],_mm256_xor_si256(c2[6533],_mm256_xor_si256(c2[8665],_mm256_xor_si256(c2[9193],_mm256_xor_si256(c2[3393],_mm256_xor_si256(c2[10253],_mm256_xor_si256(c2[10272],_mm256_xor_si256(c2[10800],_mm256_xor_si256(c2[11335],_mm256_xor_si256(c2[12919],_mm256_xor_si256(c2[271],_mm256_xor_si256(c2[799],_mm256_xor_si256(c2[14520],_mm256_xor_si256(c2[2905],_mm256_xor_si256(c2[2404],_mm256_xor_si256(c2[2932],_mm256_xor_si256(c2[5570],_mm256_xor_si256(c2[14554],_mm256_xor_si256(c2[12986],_mm256_xor_si256(c2[13514],_mm256_xor_si256(c2[15105],_mm256_xor_si256(c2[5066],_mm256_xor_si256(c2[9818],_mm256_xor_si256(c2[7210],_mm256_xor_si256(c2[6678],_mm256_xor_si256(c2[4570],_mm256_xor_si256(c2[5650],_mm256_xor_si256(c2[6178],_mm256_xor_si256(c2[12510],_mm256_xor_si256(c2[5117],_mm256_xor_si256(c2[15702],_mm256_xor_si256(c2[16230],_mm256_xor_si256(c2[12002],_mm256_xor_si256(c2[2497],_mm256_xor_si256(c2[3583],_mm256_xor_si256(c2[12559],_mm256_xor_si256(c2[409],_mm256_xor_si256(c2[3083],_mm256_xor_si256(c2[3611],_mm256_xor_si256(c2[2555],_mm256_xor_si256(c2[2016],_mm256_xor_si256(c2[4161],_mm256_xor_si256(c2[4689],_mm256_xor_si256(c2[16825],_mm256_xor_si256(c2[994],_mm256_xor_si256(c2[15793],_mm256_xor_si256(c2[16321],_mm256_xor_si256(c2[1012],_mm256_xor_si256(c2[14740],_mm256_xor_si256(c2[7370],_mm256_xor_si256(c2[7898],_mm256_xor_si256(c2[2623],c2[13706])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 38
d2[456]=_mm256_xor_si256(c2[13205],_mm256_xor_si256(c2[9197],_mm256_xor_si256(c2[777],c2[11910])));
//row: 39
d2[468]=_mm256_xor_si256(c2[1088],_mm256_xor_si256(c2[15386],_mm256_xor_si256(c2[13906],c2[5217])));
//row: 40
d2[480]=_mm256_xor_si256(c2[7925],_mm256_xor_si256(c2[2833],c2[13089]));
//row: 41
d2[492]=_mm256_xor_si256(c2[10585],_mm256_xor_si256(c2[13809],_mm256_xor_si256(c2[6028],c2[441])));
//row: 42
d2[504]=_mm256_xor_si256(c2[7396],_mm256_xor_si256(c2[3705],_mm256_xor_si256(c2[3697],_mm256_xor_si256(c2[4225],_mm256_xor_si256(c2[7395],_mm256_xor_si256(c2[7923],_mm256_xor_si256(c2[8979],_mm256_xor_si256(c2[7423],_mm256_xor_si256(c2[10586],_mm256_xor_si256(c2[11114],_mm256_xor_si256(c2[9009],_mm256_xor_si256(c2[9537],_mm256_xor_si256(c2[6920],_mm256_xor_si256(c2[3753],_mm256_xor_si256(c2[1109],_mm256_xor_si256(c2[1637],_mm256_xor_si256(c2[6414],_mm256_xor_si256(c2[2193],_mm256_xor_si256(c2[13806],_mm256_xor_si256(c2[14334],_mm256_xor_si256(c2[14355],_mm256_xor_si256(c2[3269],_mm256_xor_si256(c2[3797],_mm256_xor_si256(c2[6963],_mm256_xor_si256(c2[7491],_mm256_xor_si256(c2[7488],_mm256_xor_si256(c2[8568],_mm256_xor_si256(c2[5939],_mm256_xor_si256(c2[13850],_mm256_xor_si256(c2[14378],_mm256_xor_si256(c2[10177],_mm256_xor_si256(c2[14411],_mm256_xor_si256(c2[14939],_mm256_xor_si256(c2[673],_mm256_xor_si256(c2[1201],_mm256_xor_si256(c2[3341],_mm256_xor_si256(c2[2811],_mm256_xor_si256(c2[3339],_mm256_xor_si256(c2[10211],_mm256_xor_si256(c2[10739],_mm256_xor_si256(c2[3365],_mm256_xor_si256(c2[13931],_mm256_xor_si256(c2[14459],_mm256_xor_si256(c2[9704],_mm256_xor_si256(c2[10232],_mm256_xor_si256(c2[12892],_mm256_xor_si256(c2[7080],_mm256_xor_si256(c2[13424],_mm256_xor_si256(c2[13952],_mm256_xor_si256(c2[14499],_mm256_xor_si256(c2[14506],_mm256_xor_si256(c2[15034],_mm256_xor_si256(c2[16090],_mm256_xor_si256(c2[16618],_mm256_xor_si256(c2[4498],_mm256_xor_si256(c2[1324],_mm256_xor_si256(c2[6076],_mm256_xor_si256(c2[6604],_mm256_xor_si256(c2[6631],_mm256_xor_si256(c2[9269],_mm256_xor_si256(c2[818],_mm256_xor_si256(c2[1346],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[1369],_mm256_xor_si256(c2[1897],_mm256_xor_si256(c2[8237],_mm256_xor_si256(c2[8765],_mm256_xor_si256(c2[10897],_mm256_xor_si256(c2[9849],_mm256_xor_si256(c2[10377],_mm256_xor_si256(c2[7729],_mm256_xor_si256(c2[8257],_mm256_xor_si256(c2[9865],_mm256_xor_si256(c2[16209],_mm256_xor_si256(c2[8288],_mm256_xor_si256(c2[8816],_mm256_xor_si256(c2[3034],_mm256_xor_si256(c2[15701],_mm256_xor_si256(c2[5668],_mm256_xor_si256(c2[6196],_mm256_xor_si256(c2[7282],_mm256_xor_si256(c2[15730],_mm256_xor_si256(c2[16258],_mm256_xor_si256(c2[3580],_mm256_xor_si256(c2[4108],_mm256_xor_si256(c2[7298],_mm256_xor_si256(c2[5714],_mm256_xor_si256(c2[6242],_mm256_xor_si256(c2[5187],_mm256_xor_si256(c2[5715],_mm256_xor_si256(c2[8376],_mm256_xor_si256(c2[3629],_mm256_xor_si256(c2[4153],_mm256_xor_si256(c2[4681],_mm256_xor_si256(c2[3125],_mm256_xor_si256(c2[4183],_mm256_xor_si256(c2[4711],_mm256_xor_si256(c2[1016],_mm256_xor_si256(c2[1544],_mm256_xor_si256(c2[11597],_mm256_xor_si256(c2[6322],_mm256_xor_si256(c2[16877],c2[510]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 43
d2[516]=_mm256_xor_si256(c2[14786],_mm256_xor_si256(c2[11095],_mm256_xor_si256(c2[11627],_mm256_xor_si256(c2[14785],_mm256_xor_si256(c2[15313],_mm256_xor_si256(c2[14813],_mm256_xor_si256(c2[1609],_mm256_xor_si256(c2[16399],_mm256_xor_si256(c2[32],_mm256_xor_si256(c2[9003],_mm256_xor_si256(c2[14310],_mm256_xor_si256(c2[11143],_mm256_xor_si256(c2[9027],_mm256_xor_si256(c2[13804],_mm256_xor_si256(c2[9583],_mm256_xor_si256(c2[4301],_mm256_xor_si256(c2[4829],_mm256_xor_si256(c2[4850],_mm256_xor_si256(c2[11187],_mm256_xor_si256(c2[14353],_mm256_xor_si256(c2[14881],_mm256_xor_si256(c2[15970],_mm256_xor_si256(c2[13329],_mm256_xor_si256(c2[4873],_mm256_xor_si256(c2[672],_mm256_xor_si256(c2[5434],_mm256_xor_si256(c2[8075],_mm256_xor_si256(c2[8603],_mm256_xor_si256(c2[10731],_mm256_xor_si256(c2[10729],_mm256_xor_si256(c2[706],_mm256_xor_si256(c2[1234],_mm256_xor_si256(c2[10755],_mm256_xor_si256(c2[4954],_mm256_xor_si256(c2[199],_mm256_xor_si256(c2[727],_mm256_xor_si256(c2[3387],_mm256_xor_si256(c2[14482],_mm256_xor_si256(c2[4447],_mm256_xor_si256(c2[4994],_mm256_xor_si256(c2[5529],_mm256_xor_si256(c2[6585],_mm256_xor_si256(c2[7113],_mm256_xor_si256(c2[11888],_mm256_xor_si256(c2[8714],_mm256_xor_si256(c2[13466],_mm256_xor_si256(c2[13994],_mm256_xor_si256(c2[14021],_mm256_xor_si256(c2[16659],_mm256_xor_si256(c2[8208],_mm256_xor_si256(c2[8736],_mm256_xor_si256(c2[7708],_mm256_xor_si256(c2[9299],_mm256_xor_si256(c2[15627],_mm256_xor_si256(c2[16155],_mm256_xor_si256(c2[1392],_mm256_xor_si256(c2[872],_mm256_xor_si256(c2[15131],_mm256_xor_si256(c2[15659],_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[6704],_mm256_xor_si256(c2[16206],_mm256_xor_si256(c2[10424],_mm256_xor_si256(c2[6196],_mm256_xor_si256(c2[13058],_mm256_xor_si256(c2[13586],_mm256_xor_si256(c2[2500],_mm256_xor_si256(c2[14672],_mm256_xor_si256(c2[6753],_mm256_xor_si256(c2[10970],_mm256_xor_si256(c2[11498],_mm256_xor_si256(c2[14688],_mm256_xor_si256(c2[13632],_mm256_xor_si256(c2[12577],_mm256_xor_si256(c2[13105],_mm256_xor_si256(c2[9939],_mm256_xor_si256(c2[15778],_mm256_xor_si256(c2[11019],_mm256_xor_si256(c2[12083],_mm256_xor_si256(c2[10515],_mm256_xor_si256(c2[12101],_mm256_xor_si256(c2[8406],_mm256_xor_si256(c2[8934],_mm256_xor_si256(c2[2092],_mm256_xor_si256(c2[13712],_mm256_xor_si256(c2[7372],c2[7900]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 44
d2[528]=_mm256_xor_si256(c2[2646],_mm256_xor_si256(c2[15850],_mm256_xor_si256(c2[16370],_mm256_xor_si256(c2[3173],_mm256_xor_si256(c2[8450],_mm256_xor_si256(c2[2673],_mm256_xor_si256(c2[6364],_mm256_xor_si256(c2[4787],_mm256_xor_si256(c2[2170],_mm256_xor_si256(c2[15898],_mm256_xor_si256(c2[13782],_mm256_xor_si256(c2[1664],_mm256_xor_si256(c2[14338],_mm256_xor_si256(c2[9584],_mm256_xor_si256(c2[9605],_mm256_xor_si256(c2[15942],_mm256_xor_si256(c2[2741],_mm256_xor_si256(c2[3818],_mm256_xor_si256(c2[1177],_mm256_xor_si256(c2[9628],_mm256_xor_si256(c2[5427],_mm256_xor_si256(c2[10177],_mm256_xor_si256(c2[13346],_mm256_xor_si256(c2[15486],_mm256_xor_si256(c2[15484],_mm256_xor_si256(c2[5977],_mm256_xor_si256(c2[7562],_mm256_xor_si256(c2[15510],_mm256_xor_si256(c2[9697],_mm256_xor_si256(c2[5482],_mm256_xor_si256(c2[8142],_mm256_xor_si256(c2[2330],_mm256_xor_si256(c2[9202],_mm256_xor_si256(c2[1805],_mm256_xor_si256(c2[9749],_mm256_xor_si256(c2[10272],_mm256_xor_si256(c2[11856],_mm256_xor_si256(c2[16643],_mm256_xor_si256(c2[13469],_mm256_xor_si256(c2[1854],_mm256_xor_si256(c2[1881],_mm256_xor_si256(c2[4519],_mm256_xor_si256(c2[13491],_mm256_xor_si256(c2[12463],_mm256_xor_si256(c2[14042],_mm256_xor_si256(c2[4015],_mm256_xor_si256(c2[6147],_mm256_xor_si256(c2[5627],_mm256_xor_si256(c2[3507],_mm256_xor_si256(c2[5115],_mm256_xor_si256(c2[11459],_mm256_xor_si256(c2[4066],_mm256_xor_si256(c2[15179],_mm256_xor_si256(c2[10951],_mm256_xor_si256(c2[1446],_mm256_xor_si256(c2[2520],_mm256_xor_si256(c2[11496],_mm256_xor_si256(c2[16253],_mm256_xor_si256(c2[2548],_mm256_xor_si256(c2[1492],_mm256_xor_si256(c2[965],_mm256_xor_si256(c2[3626],_mm256_xor_si256(c2[15774],_mm256_xor_si256(c2[16826],_mm256_xor_si256(c2[15270],_mm256_xor_si256(c2[16856],_mm256_xor_si256(c2[13689],_mm256_xor_si256(c2[6847],_mm256_xor_si256(c2[1560],c2[12655])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
//row: 45
d2[540]=_mm256_xor_si256(c2[3724],_mm256_xor_si256(c2[11236],c2[8160]));
}
}