ldpc_BG2_Zc32_byte.c 37.8 KB
#include "PHY/sse_intrin.h"
// generated code for Zc=32, byte encoding
static inline void ldpc_BG2_Zc32_byte(uint8_t *c,uint8_t *d) {
  __m256i *csimd=(__m256i *)c,*dsimd=(__m256i *)d;

  __m256i *c2,*d2;

  int i2;
  for (i2=0; i2<1; i2++) {
     c2=&csimd[i2];
     d2=&dsimd[i2];

//row: 0
     d2[0]=_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[304],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[344],_mm256_xor_si256(c2[236],_mm256_xor_si256(c2[356],_mm256_xor_si256(c2[346],_mm256_xor_si256(c2[94],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[24],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[266],_mm256_xor_si256(c2[388],_mm256_xor_si256(c2[196],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[342],c2[390]))))))))))))))))))))))))));

//row: 1
     d2[1]=_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[254],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[148],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[304],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[344],_mm256_xor_si256(c2[236],_mm256_xor_si256(c2[356],_mm256_xor_si256(c2[346],_mm256_xor_si256(c2[94],_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[24],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[266],_mm256_xor_si256(c2[388],_mm256_xor_si256(c2[196],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[342],c2[390]))))))))))))))))))))))))))))))));

//row: 2
     d2[2]=_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[84],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[254],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[148],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[304],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[78],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[356],_mm256_xor_si256(c2[344],_mm256_xor_si256(c2[236],_mm256_xor_si256(c2[356],_mm256_xor_si256(c2[358],_mm256_xor_si256(c2[346],_mm256_xor_si256(c2[94],_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[24],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[350],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[266],_mm256_xor_si256(c2[16],_mm256_xor_si256(c2[388],_mm256_xor_si256(c2[196],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[342],c2[390]))))))))))))))))))))))))))))))))))))))));

//row: 3
     d2[3]=_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[98],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[316],_mm256_xor_si256(c2[304],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[344],_mm256_xor_si256(c2[236],_mm256_xor_si256(c2[368],_mm256_xor_si256(c2[356],_mm256_xor_si256(c2[346],_mm256_xor_si256(c2[106],_mm256_xor_si256(c2[94],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[24],_mm256_xor_si256(c2[216],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[278],_mm256_xor_si256(c2[266],_mm256_xor_si256(c2[388],_mm256_xor_si256(c2[196],_mm256_xor_si256(c2[232],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[342],_mm256_xor_si256(c2[18],c2[390]))))))))))))))))))))))))))))))))));

//row: 4
     d2[4]=_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[156],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[326],_mm256_xor_si256(c2[290],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[266],_mm256_xor_si256(c2[232],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[4],_mm256_xor_si256(c2[18],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[150],_mm256_xor_si256(c2[222],_mm256_xor_si256(c2[44],_mm256_xor_si256(c2[320],_mm256_xor_si256(c2[56],_mm256_xor_si256(c2[46],_mm256_xor_si256(c2[178],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[38],_mm256_xor_si256(c2[350],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[280],_mm256_xor_si256(c2[304],_mm256_xor_si256(c2[258],_mm256_xor_si256(c2[246],_mm256_xor_si256(c2[42],c2[90]))))))))))))))))))))))))))))))))));

//row: 5
     d2[5]=_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[156],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[84],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[326],_mm256_xor_si256(c2[290],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[110],_mm256_xor_si256(c2[232],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[4],_mm256_xor_si256(c2[18],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[150],_mm256_xor_si256(c2[222],_mm256_xor_si256(c2[44],_mm256_xor_si256(c2[320],_mm256_xor_si256(c2[56],_mm256_xor_si256(c2[46],_mm256_xor_si256(c2[178],_mm256_xor_si256(c2[34],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[38],_mm256_xor_si256(c2[350],_mm256_xor_si256(c2[386],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[280],_mm256_xor_si256(c2[304],_mm256_xor_si256(c2[258],_mm256_xor_si256(c2[246],_mm256_xor_si256(c2[42],c2[90]))))))))))))))))))))))))))))))))))));

//row: 6
     d2[6]=_mm256_xor_si256(c2[84],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[168],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[230],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[182],_mm256_xor_si256(c2[62],_mm256_xor_si256(c2[124],_mm256_xor_si256(c2[112],_mm256_xor_si256(c2[280],_mm256_xor_si256(c2[294],_mm256_xor_si256(c2[282],_mm256_xor_si256(c2[42],_mm256_xor_si256(c2[114],_mm256_xor_si256(c2[320],_mm256_xor_si256(c2[212],_mm256_xor_si256(c2[332],_mm256_xor_si256(c2[322],_mm256_xor_si256(c2[70],_mm256_xor_si256(c2[58],_mm256_xor_si256(c2[336],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[384],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[314],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[364],_mm256_xor_si256(c2[172],_mm256_xor_si256(c2[196],_mm256_xor_si256(c2[150],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[366],c2[354]))))))))))))))))))))))))))))))))))));

//row: 7
     d2[7]=_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[132],_mm256_xor_si256(c2[336],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[312],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[290],_mm256_xor_si256(c2[278],_mm256_xor_si256(c2[98],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[62],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[122],_mm256_xor_si256(c2[326],_mm256_xor_si256(c2[14],_mm256_xor_si256(c2[184],_mm256_xor_si256(c2[172],_mm256_xor_si256(c2[376],_mm256_xor_si256(c2[172],_mm256_xor_si256(c2[340],_mm256_xor_si256(c2[160],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[342],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[380],_mm256_xor_si256(c2[200],_mm256_xor_si256(c2[272],_mm256_xor_si256(c2[92],_mm256_xor_si256(c2[224],_mm256_xor_si256(c2[8],_mm256_xor_si256(c2[212],_mm256_xor_si256(c2[382],_mm256_xor_si256(c2[202],_mm256_xor_si256(c2[346],_mm256_xor_si256(c2[130],_mm256_xor_si256(c2[334],_mm256_xor_si256(c2[238],_mm256_xor_si256(c2[12],_mm256_xor_si256(c2[384],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[264],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[240],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[194],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[122],_mm256_xor_si256(c2[158],_mm256_xor_si256(c2[40],_mm256_xor_si256(c2[244],_mm256_xor_si256(c2[232],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[256],_mm256_xor_si256(c2[76],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[198],_mm256_xor_si256(c2[18],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[198],_mm256_xor_si256(c2[258],_mm256_xor_si256(c2[42],c2[246]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 8
     d2[8]=_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[168],_mm256_xor_si256(c2[156],_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[264],_mm256_xor_si256(c2[168],_mm256_xor_si256(c2[326],_mm256_xor_si256(c2[314],_mm256_xor_si256(c2[278],_mm256_xor_si256(c2[158],_mm256_xor_si256(c2[362],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[208],_mm256_xor_si256(c2[376],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[150],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[44],_mm256_xor_si256(c2[32],_mm256_xor_si256(c2[308],_mm256_xor_si256(c2[44],_mm256_xor_si256(c2[46],_mm256_xor_si256(c2[34],_mm256_xor_si256(c2[166],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[38],_mm256_xor_si256(c2[26],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[76],_mm256_xor_si256(c2[268],_mm256_xor_si256(c2[292],_mm256_xor_si256(c2[246],_mm256_xor_si256(c2[234],_mm256_xor_si256(c2[42],_mm256_xor_si256(c2[30],c2[78]))))))))))))))))))))))))))))))))))))))))));

//row: 9
     d2[9]=_mm256_xor_si256(c2[0],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[372],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[156],_mm256_xor_si256(c2[84],_mm256_xor_si256(c2[146],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[98],_mm256_xor_si256(c2[50],_mm256_xor_si256(c2[362],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[40],_mm256_xor_si256(c2[100],_mm256_xor_si256(c2[28],_mm256_xor_si256(c2[268],_mm256_xor_si256(c2[196],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[270],_mm256_xor_si256(c2[198],_mm256_xor_si256(c2[30],_mm256_xor_si256(c2[342],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[30],_mm256_xor_si256(c2[308],_mm256_xor_si256(c2[236],_mm256_xor_si256(c2[200],_mm256_xor_si256(c2[128],_mm256_xor_si256(c2[320],_mm256_xor_si256(c2[248],_mm256_xor_si256(c2[310],_mm256_xor_si256(c2[238],_mm256_xor_si256(c2[58],_mm256_xor_si256(c2[370],_mm256_xor_si256(c2[252],_mm256_xor_si256(c2[312],_mm256_xor_si256(c2[240],_mm256_xor_si256(c2[372],_mm256_xor_si256(c2[300],_mm256_xor_si256(c2[168],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[230],_mm256_xor_si256(c2[230],_mm256_xor_si256(c2[158],_mm256_xor_si256(c2[352],_mm256_xor_si256(c2[280],_mm256_xor_si256(c2[160],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[184],_mm256_xor_si256(c2[112],_mm256_xor_si256(c2[172],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[126],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[234],_mm256_xor_si256(c2[354],c2[282])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 10
     d2[10]=_mm256_xor_si256(c2[132],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[12],c2[266])));

//row: 11
     d2[11]=_mm256_xor_si256(c2[0],_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[132],_mm256_xor_si256(c2[146],_mm256_xor_si256(c2[110],_mm256_xor_si256(c2[2],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[40],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[208],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[42],_mm256_xor_si256(c2[248],_mm256_xor_si256(c2[140],_mm256_xor_si256(c2[272],_mm256_xor_si256(c2[260],_mm256_xor_si256(c2[250],_mm256_xor_si256(c2[10],_mm256_xor_si256(c2[382],_mm256_xor_si256(c2[252],_mm256_xor_si256(c2[312],_mm256_xor_si256(c2[120],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[182],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[158],_mm256_xor_si256(c2[292],_mm256_xor_si256(c2[100],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[124],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[246],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[294],c2[234])))))))))))))))))))))))))))))))))))));

//row: 12
     d2[12]=_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[264],_mm256_xor_si256(c2[240],_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[38],_mm256_xor_si256(c2[26],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[254],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[316],_mm256_xor_si256(c2[304],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[90],_mm256_xor_si256(c2[234],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[186],_mm256_xor_si256(c2[128],_mm256_xor_si256(c2[20],_mm256_xor_si256(c2[140],_mm256_xor_si256(c2[130],_mm256_xor_si256(c2[262],_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[132],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[372],_mm256_xor_si256(c2[122],_mm256_xor_si256(c2[50],_mm256_xor_si256(c2[172],_mm256_xor_si256(c2[364],_mm256_xor_si256(c2[388],_mm256_xor_si256(c2[342],_mm256_xor_si256(c2[330],_mm256_xor_si256(c2[126],c2[174]))))))))))))))))))))))))))))))))));

//row: 13
     d2[13]=_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[168],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[182],_mm256_xor_si256(c2[74],_mm256_xor_si256(c2[62],_mm256_xor_si256(c2[26],_mm256_xor_si256(c2[112],_mm256_xor_si256(c2[292],_mm256_xor_si256(c2[280],_mm256_xor_si256(c2[282],_mm256_xor_si256(c2[42],_mm256_xor_si256(c2[114],_mm256_xor_si256(c2[320],_mm256_xor_si256(c2[212],_mm256_xor_si256(c2[344],_mm256_xor_si256(c2[332],_mm256_xor_si256(c2[322],_mm256_xor_si256(c2[82],_mm256_xor_si256(c2[70],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[384],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[314],_mm256_xor_si256(c2[254],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[364],_mm256_xor_si256(c2[172],_mm256_xor_si256(c2[208],_mm256_xor_si256(c2[196],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[378],c2[366])))))))))))))))))))))))))))))))))))));

//row: 14
     d2[14]=_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[132],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[168],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[290],_mm256_xor_si256(c2[278],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[194],_mm256_xor_si256(c2[122],_mm256_xor_si256(c2[182],_mm256_xor_si256(c2[230],_mm256_xor_si256(c2[184],_mm256_xor_si256(c2[172],_mm256_xor_si256(c2[232],_mm256_xor_si256(c2[28],_mm256_xor_si256(c2[340],_mm256_xor_si256(c2[16],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[342],_mm256_xor_si256(c2[18],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[234],_mm256_xor_si256(c2[380],_mm256_xor_si256(c2[56],_mm256_xor_si256(c2[272],_mm256_xor_si256(c2[332],_mm256_xor_si256(c2[80],_mm256_xor_si256(c2[8],_mm256_xor_si256(c2[68],_mm256_xor_si256(c2[382],_mm256_xor_si256(c2[58],_mm256_xor_si256(c2[202],_mm256_xor_si256(c2[130],_mm256_xor_si256(c2[190],_mm256_xor_si256(c2[12],_mm256_xor_si256(c2[384],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[120],_mm256_xor_si256(c2[312],_mm256_xor_si256(c2[240],_mm256_xor_si256(c2[300],_mm256_xor_si256(c2[216],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[50],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[362],_mm256_xor_si256(c2[40],_mm256_xor_si256(c2[100],_mm256_xor_si256(c2[232],_mm256_xor_si256(c2[292],_mm256_xor_si256(c2[328],_mm256_xor_si256(c2[256],_mm256_xor_si256(c2[316],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[198],_mm256_xor_si256(c2[258],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[114],_mm256_xor_si256(c2[42],c2[102])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 15
     d2[15]=_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[252],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[372],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[122],_mm256_xor_si256(c2[38],_mm256_xor_si256(c2[110],_mm256_xor_si256(c2[2],_mm256_xor_si256(c2[74],_mm256_xor_si256(c2[266],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[16],_mm256_xor_si256(c2[316],_mm256_xor_si256(c2[4],_mm256_xor_si256(c2[100],_mm256_xor_si256(c2[172],_mm256_xor_si256(c2[186],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[246],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[140],_mm256_xor_si256(c2[212],_mm256_xor_si256(c2[32],_mm256_xor_si256(c2[104],_mm256_xor_si256(c2[152],_mm256_xor_si256(c2[224],_mm256_xor_si256(c2[142],_mm256_xor_si256(c2[214],_mm256_xor_si256(c2[274],_mm256_xor_si256(c2[346],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[216],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[384],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[62],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[184],_mm256_xor_si256(c2[256],_mm256_xor_si256(c2[376],_mm256_xor_si256(c2[64],_mm256_xor_si256(c2[16],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[42],_mm256_xor_si256(c2[342],_mm256_xor_si256(c2[30],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[186],c2[258]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 16
     d2[16]=_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[312],_mm256_xor_si256(c2[300],_mm256_xor_si256(c2[168],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[24],_mm256_xor_si256(c2[350],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[74],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[38],_mm256_xor_si256(c2[182],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[244],_mm256_xor_si256(c2[364],_mm256_xor_si256(c2[232],_mm256_xor_si256(c2[352],_mm256_xor_si256(c2[16],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[30],_mm256_xor_si256(c2[150],_mm256_xor_si256(c2[18],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[294],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[282],_mm256_xor_si256(c2[234],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[188],_mm256_xor_si256(c2[56],_mm256_xor_si256(c2[176],_mm256_xor_si256(c2[332],_mm256_xor_si256(c2[68],_mm256_xor_si256(c2[68],_mm256_xor_si256(c2[188],_mm256_xor_si256(c2[190],_mm256_xor_si256(c2[58],_mm256_xor_si256(c2[178],_mm256_xor_si256(c2[190],_mm256_xor_si256(c2[310],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[252],_mm256_xor_si256(c2[120],_mm256_xor_si256(c2[240],_mm256_xor_si256(c2[300],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[182],_mm256_xor_si256(c2[50],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[362],_mm256_xor_si256(c2[98],_mm256_xor_si256(c2[232],_mm256_xor_si256(c2[100],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[292],_mm256_xor_si256(c2[28],_mm256_xor_si256(c2[316],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[270],_mm256_xor_si256(c2[390],_mm256_xor_si256(c2[258],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[186],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[222],c2[186])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 17
     d2[17]=_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[312],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[84],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[24],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[254],_mm256_xor_si256(c2[74],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[38],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[362],_mm256_xor_si256(c2[364],_mm256_xor_si256(c2[148],_mm256_xor_si256(c2[352],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[304],_mm256_xor_si256(c2[150],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[78],_mm256_xor_si256(c2[282],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[356],_mm256_xor_si256(c2[176],_mm256_xor_si256(c2[344],_mm256_xor_si256(c2[68],_mm256_xor_si256(c2[236],_mm256_xor_si256(c2[188],_mm256_xor_si256(c2[356],_mm256_xor_si256(c2[358],_mm256_xor_si256(c2[178],_mm256_xor_si256(c2[346],_mm256_xor_si256(c2[310],_mm256_xor_si256(c2[94],_mm256_xor_si256(c2[346],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[240],_mm256_xor_si256(c2[24],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[350],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[98],_mm256_xor_si256(c2[266],_mm256_xor_si256(c2[16],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[388],_mm256_xor_si256(c2[28],_mm256_xor_si256(c2[196],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[390],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[342],_mm256_xor_si256(c2[222],c2[390])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 18
     d2[18]=_mm256_xor_si256(c2[336],_mm256_xor_si256(c2[36],c2[230]));

//row: 19
     d2[19]=_mm256_xor_si256(c2[12],_mm256_xor_si256(c2[372],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[158],_mm256_xor_si256(c2[122],_mm256_xor_si256(c2[2],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[222],_mm256_xor_si256(c2[366],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[260],_mm256_xor_si256(c2[152],_mm256_xor_si256(c2[272],_mm256_xor_si256(c2[262],_mm256_xor_si256(c2[10],_mm256_xor_si256(c2[264],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[120],_mm256_xor_si256(c2[254],_mm256_xor_si256(c2[182],_mm256_xor_si256(c2[304],_mm256_xor_si256(c2[112],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[78],_mm256_xor_si256(c2[258],c2[306]))))))))))))))))))))))))))));

//row: 20
     d2[20]=_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[156],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[50],_mm256_xor_si256(c2[314],_mm256_xor_si256(c2[112],_mm256_xor_si256(c2[100],_mm256_xor_si256(c2[268],_mm256_xor_si256(c2[282],_mm256_xor_si256(c2[270],_mm256_xor_si256(c2[30],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[308],_mm256_xor_si256(c2[200],_mm256_xor_si256(c2[320],_mm256_xor_si256(c2[116],_mm256_xor_si256(c2[310],_mm256_xor_si256(c2[58],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[312],_mm256_xor_si256(c2[372],_mm256_xor_si256(c2[168],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[230],_mm256_xor_si256(c2[352],_mm256_xor_si256(c2[160],_mm256_xor_si256(c2[184],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[126],_mm256_xor_si256(c2[306],c2[354]))))))))))))))))))))))))))))))))));

//row: 21
     d2[21]=_mm256_xor_si256(c2[312],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[24],_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[74],_mm256_xor_si256(c2[38],_mm256_xor_si256(c2[314],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[352],_mm256_xor_si256(c2[148],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[282],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[176],_mm256_xor_si256(c2[68],_mm256_xor_si256(c2[200],_mm256_xor_si256(c2[188],_mm256_xor_si256(c2[178],_mm256_xor_si256(c2[322],_mm256_xor_si256(c2[310],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[240],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[110],_mm256_xor_si256(c2[98],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[28],_mm256_xor_si256(c2[64],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[234],c2[222]))))))))))))))))))))))))))))))))))));

//row: 22
     d2[22]=_mm256_xor_si256(c2[362],c2[376]);

//row: 23
     d2[23]=_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[138],c2[178]));

//row: 24
     d2[24]=_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[136],c2[114]));

//row: 25
     d2[25]=_mm256_xor_si256(c2[48],c2[346]);

//row: 26
     d2[26]=_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[24],_mm256_xor_si256(c2[84],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[0],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[120],_mm256_xor_si256(c2[254],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[26],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[14],_mm256_xor_si256(c2[148],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[64],_mm256_xor_si256(c2[244],_mm256_xor_si256(c2[304],_mm256_xor_si256(c2[232],_mm256_xor_si256(c2[352],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[234],_mm256_xor_si256(c2[78],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[356],_mm256_xor_si256(c2[344],_mm256_xor_si256(c2[272],_mm256_xor_si256(c2[236],_mm256_xor_si256(c2[164],_mm256_xor_si256(c2[296],_mm256_xor_si256(c2[356],_mm256_xor_si256(c2[284],_mm256_xor_si256(c2[358],_mm256_xor_si256(c2[346],_mm256_xor_si256(c2[274],_mm256_xor_si256(c2[34],_mm256_xor_si256(c2[94],_mm256_xor_si256(c2[22],_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[24],_mm256_xor_si256(c2[336],_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[132],_mm256_xor_si256(c2[350],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[266],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[266],_mm256_xor_si256(c2[194],_mm256_xor_si256(c2[194],_mm256_xor_si256(c2[16],_mm256_xor_si256(c2[388],_mm256_xor_si256(c2[316],_mm256_xor_si256(c2[196],_mm256_xor_si256(c2[124],_mm256_xor_si256(c2[160],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[148],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[90],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[342],_mm256_xor_si256(c2[270],_mm256_xor_si256(c2[330],_mm256_xor_si256(c2[390],c2[318])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 27
     d2[27]=_mm256_xor_si256(c2[96],c2[288]);

//row: 28
     d2[28]=_mm256_xor_si256(c2[26],_mm256_xor_si256(c2[64],c2[94]));

//row: 29
     d2[29]=_mm256_xor_si256(c2[216],c2[344]);

//row: 30
     d2[30]=_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[202],_mm256_xor_si256(c2[122],c2[258])));

//row: 31
     d2[31]=_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[84],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[254],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[110],_mm256_xor_si256(c2[98],_mm256_xor_si256(c2[122],_mm256_xor_si256(c2[148],_mm256_xor_si256(c2[328],_mm256_xor_si256(c2[316],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[78],_mm256_xor_si256(c2[150],_mm256_xor_si256(c2[356],_mm256_xor_si256(c2[248],_mm256_xor_si256(c2[380],_mm256_xor_si256(c2[368],_mm256_xor_si256(c2[358],_mm256_xor_si256(c2[118],_mm256_xor_si256(c2[106],_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[216],_mm256_xor_si256(c2[350],_mm256_xor_si256(c2[290],_mm256_xor_si256(c2[278],_mm256_xor_si256(c2[16],_mm256_xor_si256(c2[208],_mm256_xor_si256(c2[244],_mm256_xor_si256(c2[232],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[30],c2[18])))))))))))))))))))))))))))))))))));

//row: 32
     d2[32]=_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[168],_mm256_xor_si256(c2[156],_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[264],_mm256_xor_si256(c2[216],_mm256_xor_si256(c2[326],_mm256_xor_si256(c2[314],_mm256_xor_si256(c2[278],_mm256_xor_si256(c2[158],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[208],_mm256_xor_si256(c2[376],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[150],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[44],_mm256_xor_si256(c2[32],_mm256_xor_si256(c2[308],_mm256_xor_si256(c2[44],_mm256_xor_si256(c2[46],_mm256_xor_si256(c2[34],_mm256_xor_si256(c2[166],_mm256_xor_si256(c2[154],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[38],_mm256_xor_si256(c2[26],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[76],_mm256_xor_si256(c2[268],_mm256_xor_si256(c2[292],_mm256_xor_si256(c2[246],_mm256_xor_si256(c2[234],_mm256_xor_si256(c2[42],_mm256_xor_si256(c2[30],c2[78]))))))))))))))))))))))))))))))))))))))))));

//row: 33
     d2[33]=_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[268],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[198],_mm256_xor_si256(c2[270],_mm256_xor_si256(c2[92],_mm256_xor_si256(c2[368],_mm256_xor_si256(c2[104],_mm256_xor_si256(c2[94],_mm256_xor_si256(c2[226],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[156],_mm256_xor_si256(c2[336],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[14],_mm256_xor_si256(c2[62],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[328],_mm256_xor_si256(c2[352],_mm256_xor_si256(c2[294],_mm256_xor_si256(c2[90],c2[138]))))))))))))))))))))))))))));

//row: 34
     d2[34]=_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[336],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[120],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[240],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[122],_mm256_xor_si256(c2[110],_mm256_xor_si256(c2[290],_mm256_xor_si256(c2[74],_mm256_xor_si256(c2[254],_mm256_xor_si256(c2[146],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[16],_mm256_xor_si256(c2[4],_mm256_xor_si256(c2[184],_mm256_xor_si256(c2[364],_mm256_xor_si256(c2[172],_mm256_xor_si256(c2[352],_mm256_xor_si256(c2[186],_mm256_xor_si256(c2[174],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[330],_mm256_xor_si256(c2[318],_mm256_xor_si256(c2[114],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[186],_mm256_xor_si256(c2[224],_mm256_xor_si256(c2[212],_mm256_xor_si256(c2[8],_mm256_xor_si256(c2[104],_mm256_xor_si256(c2[284],_mm256_xor_si256(c2[32],_mm256_xor_si256(c2[224],_mm256_xor_si256(c2[20],_mm256_xor_si256(c2[226],_mm256_xor_si256(c2[214],_mm256_xor_si256(c2[10],_mm256_xor_si256(c2[154],_mm256_xor_si256(c2[346],_mm256_xor_si256(c2[142],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[216],_mm256_xor_si256(c2[12],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[264],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[252],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[386],_mm256_xor_si256(c2[326],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[314],_mm256_xor_si256(c2[268],_mm256_xor_si256(c2[256],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[64],_mm256_xor_si256(c2[244],_mm256_xor_si256(c2[280],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[268],_mm256_xor_si256(c2[42],_mm256_xor_si256(c2[30],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[222],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[390],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[258],c2[54]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 35
     d2[35]=_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[84],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[230],_mm256_xor_si256(c2[194],_mm256_xor_si256(c2[74],_mm256_xor_si256(c2[302],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[124],_mm256_xor_si256(c2[292],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[294],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[126],_mm256_xor_si256(c2[332],_mm256_xor_si256(c2[224],_mm256_xor_si256(c2[344],_mm256_xor_si256(c2[334],_mm256_xor_si256(c2[82],_mm256_xor_si256(c2[106],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[336],_mm256_xor_si256(c2[12],_mm256_xor_si256(c2[192],_mm256_xor_si256(c2[326],_mm256_xor_si256(c2[254],_mm256_xor_si256(c2[376],_mm256_xor_si256(c2[184],_mm256_xor_si256(c2[208],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[150],_mm256_xor_si256(c2[330],c2[378]))))))))))))))))))))))))))))))))));

//row: 36
     d2[36]=_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[76],c2[326]));

//row: 37
     d2[37]=_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[372],_mm256_xor_si256(c2[12],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[132],_mm256_xor_si256(c2[84],_mm256_xor_si256(c2[182],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[146],_mm256_xor_si256(c2[98],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[26],_mm256_xor_si256(c2[362],_mm256_xor_si256(c2[76],_mm256_xor_si256(c2[28],_mm256_xor_si256(c2[208],_mm256_xor_si256(c2[244],_mm256_xor_si256(c2[196],_mm256_xor_si256(c2[246],_mm256_xor_si256(c2[198],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[342],_mm256_xor_si256(c2[78],_mm256_xor_si256(c2[30],_mm256_xor_si256(c2[284],_mm256_xor_si256(c2[236],_mm256_xor_si256(c2[176],_mm256_xor_si256(c2[128],_mm256_xor_si256(c2[260],_mm256_xor_si256(c2[296],_mm256_xor_si256(c2[248],_mm256_xor_si256(c2[286],_mm256_xor_si256(c2[238],_mm256_xor_si256(c2[382],_mm256_xor_si256(c2[34],_mm256_xor_si256(c2[370],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[240],_mm256_xor_si256(c2[348],_mm256_xor_si256(c2[300],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[278],_mm256_xor_si256(c2[230],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[206],_mm256_xor_si256(c2[158],_mm256_xor_si256(c2[328],_mm256_xor_si256(c2[280],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[88],_mm256_xor_si256(c2[124],_mm256_xor_si256(c2[160],_mm256_xor_si256(c2[112],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[282],_mm256_xor_si256(c2[234],_mm256_xor_si256(c2[294],_mm256_xor_si256(c2[330],c2[282])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 38
     d2[38]=_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[168],_mm256_xor_si256(c2[144],_mm256_xor_si256(c2[264],_mm256_xor_si256(c2[326],_mm256_xor_si256(c2[314],_mm256_xor_si256(c2[278],_mm256_xor_si256(c2[158],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[208],_mm256_xor_si256(c2[376],_mm256_xor_si256(c2[6],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[138],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[32],_mm256_xor_si256(c2[308],_mm256_xor_si256(c2[44],_mm256_xor_si256(c2[34],_mm256_xor_si256(c2[166],_mm256_xor_si256(c2[34],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[26],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[76],_mm256_xor_si256(c2[268],_mm256_xor_si256(c2[292],_mm256_xor_si256(c2[246],_mm256_xor_si256(c2[234],_mm256_xor_si256(c2[30],c2[78]))))))))))))))))))))))))))))))))));

//row: 39
     d2[39]=_mm256_xor_si256(c2[132],_mm256_xor_si256(c2[120],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[216],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[278],_mm256_xor_si256(c2[266],_mm256_xor_si256(c2[230],_mm256_xor_si256(c2[110],_mm256_xor_si256(c2[172],_mm256_xor_si256(c2[160],_mm256_xor_si256(c2[328],_mm256_xor_si256(c2[342],_mm256_xor_si256(c2[330],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[90],_mm256_xor_si256(c2[162],_mm256_xor_si256(c2[380],_mm256_xor_si256(c2[368],_mm256_xor_si256(c2[260],_mm256_xor_si256(c2[380],_mm256_xor_si256(c2[382],_mm256_xor_si256(c2[370],_mm256_xor_si256(c2[118],_mm256_xor_si256(c2[384],_mm256_xor_si256(c2[372],_mm256_xor_si256(c2[60],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[362],_mm256_xor_si256(c2[290],_mm256_xor_si256(c2[158],_mm256_xor_si256(c2[40],_mm256_xor_si256(c2[28],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[244],_mm256_xor_si256(c2[198],_mm256_xor_si256(c2[186],_mm256_xor_si256(c2[378],_mm256_xor_si256(c2[366],c2[30]))))))))))))))))))))))))))))))))))))))))));

//row: 40
     d2[40]=_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[0],_mm256_xor_si256(c2[204],_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[146],_mm256_xor_si256(c2[338],_mm256_xor_si256(c2[110],_mm256_xor_si256(c2[2],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[268],_mm256_xor_si256(c2[40],_mm256_xor_si256(c2[220],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[208],_mm256_xor_si256(c2[4],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[210],_mm256_xor_si256(c2[198],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[270],_mm256_xor_si256(c2[42],_mm256_xor_si256(c2[92],_mm256_xor_si256(c2[248],_mm256_xor_si256(c2[368],_mm256_xor_si256(c2[140],_mm256_xor_si256(c2[272],_mm256_xor_si256(c2[104],_mm256_xor_si256(c2[260],_mm256_xor_si256(c2[94],_mm256_xor_si256(c2[250],_mm256_xor_si256(c2[10],_mm256_xor_si256(c2[226],_mm256_xor_si256(c2[382],_mm256_xor_si256(c2[96],_mm256_xor_si256(c2[252],_mm256_xor_si256(c2[156],_mm256_xor_si256(c2[312],_mm256_xor_si256(c2[120],_mm256_xor_si256(c2[336],_mm256_xor_si256(c2[108],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[242],_mm256_xor_si256(c2[182],_mm256_xor_si256(c2[14],_mm256_xor_si256(c2[170],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[292],_mm256_xor_si256(c2[328],_mm256_xor_si256(c2[100],_mm256_xor_si256(c2[136],_mm256_xor_si256(c2[352],_mm256_xor_si256(c2[124],_mm256_xor_si256(c2[294],_mm256_xor_si256(c2[66],_mm256_xor_si256(c2[90],_mm256_xor_si256(c2[246],_mm256_xor_si256(c2[306],_mm256_xor_si256(c2[138],c2[294]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 41
     d2[41]=_mm256_xor_si256(c2[372],_mm256_xor_si256(c2[360],_mm256_xor_si256(c2[336],_mm256_xor_si256(c2[72],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[122],_mm256_xor_si256(c2[86],_mm256_xor_si256(c2[350],_mm256_xor_si256(c2[14],_mm256_xor_si256(c2[28],_mm256_xor_si256(c2[16],_mm256_xor_si256(c2[184],_mm256_xor_si256(c2[198],_mm256_xor_si256(c2[186],_mm256_xor_si256(c2[330],_mm256_xor_si256(c2[18],_mm256_xor_si256(c2[224],_mm256_xor_si256(c2[116],_mm256_xor_si256(c2[236],_mm256_xor_si256(c2[226],_mm256_xor_si256(c2[358],_mm256_xor_si256(c2[70],_mm256_xor_si256(c2[240],_mm256_xor_si256(c2[228],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[84],_mm256_xor_si256(c2[218],_mm256_xor_si256(c2[146],_mm256_xor_si256(c2[268],_mm256_xor_si256(c2[76],_mm256_xor_si256(c2[100],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[42],_mm256_xor_si256(c2[222],c2[270]))))))))))))))))))))))))))))))))));
  }
}