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

  __m256i *c2,*d2;

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

//row: 0
     d2[0]=_mm256_xor_si256(c2[1280],_mm256_xor_si256(c2[965],_mm256_xor_si256(c2[2562],_mm256_xor_si256(c2[3219],_mm256_xor_si256(c2[2739],_mm256_xor_si256(c2[1136],_mm256_xor_si256(c2[1798],_mm256_xor_si256(c2[4033],_mm256_xor_si256(c2[4048],_mm256_xor_si256(c2[853],_mm256_xor_si256(c2[1809],_mm256_xor_si256(c2[4551],_mm256_xor_si256(c2[3105],_mm256_xor_si256(c2[4708],_mm256_xor_si256(c2[4563],_mm256_xor_si256(c2[1203],_mm256_xor_si256(c2[4581],_mm256_xor_si256(c2[263],_mm256_xor_si256(c2[2662],_mm256_xor_si256(c2[4436],_mm256_xor_si256(c2[3473],_mm256_xor_si256(c2[5094],_mm256_xor_si256(c2[2535],_mm256_xor_si256(c2[2848],_mm256_xor_si256(c2[2070],_mm256_xor_si256(c2[4471],c2[5107]))))))))))))))))))))))))));

//row: 1
     d2[8]=_mm256_xor_si256(c2[1440],_mm256_xor_si256(c2[1280],_mm256_xor_si256(c2[965],_mm256_xor_si256(c2[2562],_mm256_xor_si256(c2[3379],_mm256_xor_si256(c2[3219],_mm256_xor_si256(c2[2739],_mm256_xor_si256(c2[1136],_mm256_xor_si256(c2[1958],_mm256_xor_si256(c2[1798],_mm256_xor_si256(c2[4033],_mm256_xor_si256(c2[4208],_mm256_xor_si256(c2[4048],_mm256_xor_si256(c2[853],_mm256_xor_si256(c2[1809],_mm256_xor_si256(c2[4551],_mm256_xor_si256(c2[3105],_mm256_xor_si256(c2[4708],_mm256_xor_si256(c2[4563],_mm256_xor_si256(c2[1203],_mm256_xor_si256(c2[4741],_mm256_xor_si256(c2[4581],_mm256_xor_si256(c2[263],_mm256_xor_si256(c2[2662],_mm256_xor_si256(c2[4436],_mm256_xor_si256(c2[3473],_mm256_xor_si256(c2[5094],_mm256_xor_si256(c2[2535],_mm256_xor_si256(c2[2848],_mm256_xor_si256(c2[2230],_mm256_xor_si256(c2[2070],_mm256_xor_si256(c2[4471],c2[5107]))))))))))))))))))))))))))))))));

//row: 2
     d2[16]=_mm256_xor_si256(c2[1440],_mm256_xor_si256(c2[1280],_mm256_xor_si256(c2[1125],_mm256_xor_si256(c2[965],_mm256_xor_si256(c2[2562],_mm256_xor_si256(c2[3379],_mm256_xor_si256(c2[3219],_mm256_xor_si256(c2[2739],_mm256_xor_si256(c2[1136],_mm256_xor_si256(c2[1958],_mm256_xor_si256(c2[1798],_mm256_xor_si256(c2[4033],_mm256_xor_si256(c2[4208],_mm256_xor_si256(c2[4048],_mm256_xor_si256(c2[1013],_mm256_xor_si256(c2[853],_mm256_xor_si256(c2[1809],_mm256_xor_si256(c2[4711],_mm256_xor_si256(c2[4551],_mm256_xor_si256(c2[3105],_mm256_xor_si256(c2[4708],_mm256_xor_si256(c2[4723],_mm256_xor_si256(c2[4563],_mm256_xor_si256(c2[1203],_mm256_xor_si256(c2[4741],_mm256_xor_si256(c2[4581],_mm256_xor_si256(c2[423],_mm256_xor_si256(c2[263],_mm256_xor_si256(c2[2662],_mm256_xor_si256(c2[4596],_mm256_xor_si256(c2[4436],_mm256_xor_si256(c2[3473],_mm256_xor_si256(c2[135],_mm256_xor_si256(c2[5094],_mm256_xor_si256(c2[2535],_mm256_xor_si256(c2[2848],_mm256_xor_si256(c2[2230],_mm256_xor_si256(c2[2070],_mm256_xor_si256(c2[4631],_mm256_xor_si256(c2[4471],c2[5107]))))))))))))))))))))))))))))))))))))))));

//row: 3
     d2[24]=_mm256_xor_si256(c2[1280],_mm256_xor_si256(c2[965],_mm256_xor_si256(c2[2562],_mm256_xor_si256(c2[3219],_mm256_xor_si256(c2[2739],_mm256_xor_si256(c2[1296],_mm256_xor_si256(c2[1136],_mm256_xor_si256(c2[1798],_mm256_xor_si256(c2[4193],_mm256_xor_si256(c2[4033],_mm256_xor_si256(c2[4048],_mm256_xor_si256(c2[853],_mm256_xor_si256(c2[1809],_mm256_xor_si256(c2[4551],_mm256_xor_si256(c2[3105],_mm256_xor_si256(c2[4868],_mm256_xor_si256(c2[4708],_mm256_xor_si256(c2[4563],_mm256_xor_si256(c2[1363],_mm256_xor_si256(c2[1203],_mm256_xor_si256(c2[4581],_mm256_xor_si256(c2[263],_mm256_xor_si256(c2[2822],_mm256_xor_si256(c2[2662],_mm256_xor_si256(c2[4436],_mm256_xor_si256(c2[3633],_mm256_xor_si256(c2[3473],_mm256_xor_si256(c2[5094],_mm256_xor_si256(c2[2535],_mm256_xor_si256(c2[3008],_mm256_xor_si256(c2[2848],_mm256_xor_si256(c2[2070],_mm256_xor_si256(c2[4471],_mm256_xor_si256(c2[148],c2[5107]))))))))))))))))))))))))))))))))));

//row: 4
     d2[32]=_mm256_xor_si256(c2[2562],_mm256_xor_si256(c2[2402],_mm256_xor_si256(c2[2087],_mm256_xor_si256(c2[3684],_mm256_xor_si256(c2[3045],_mm256_xor_si256(c2[4501],_mm256_xor_si256(c2[4341],_mm256_xor_si256(c2[3861],_mm256_xor_si256(c2[2258],_mm256_xor_si256(c2[3542],_mm256_xor_si256(c2[3072],_mm256_xor_si256(c2[2912],_mm256_xor_si256(c2[36],_mm256_xor_si256(c2[211],_mm256_xor_si256(c2[51],_mm256_xor_si256(c2[1975],_mm256_xor_si256(c2[2931],_mm256_xor_si256(c2[546],_mm256_xor_si256(c2[4227],_mm256_xor_si256(c2[711],_mm256_xor_si256(c2[566],_mm256_xor_si256(c2[2325],_mm256_xor_si256(c2[736],_mm256_xor_si256(c2[576],_mm256_xor_si256(c2[1377],_mm256_xor_si256(c2[3776],_mm256_xor_si256(c2[439],_mm256_xor_si256(c2[4595],_mm256_xor_si256(c2[1089],_mm256_xor_si256(c2[3649],_mm256_xor_si256(c2[3970],_mm256_xor_si256(c2[3344],_mm256_xor_si256(c2[3184],_mm256_xor_si256(c2[466],c2[1110]))))))))))))))))))))))))))))))))));

//row: 5
     d2[40]=_mm256_xor_si256(c2[2563],_mm256_xor_si256(c2[2403],_mm256_xor_si256(c2[2080],_mm256_xor_si256(c2[3685],_mm256_xor_si256(c2[1127],_mm256_xor_si256(c2[4502],_mm256_xor_si256(c2[4342],_mm256_xor_si256(c2[3862],_mm256_xor_si256(c2[2259],_mm256_xor_si256(c2[1457],_mm256_xor_si256(c2[3073],_mm256_xor_si256(c2[2913],_mm256_xor_si256(c2[37],_mm256_xor_si256(c2[212],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[1968],_mm256_xor_si256(c2[2932],_mm256_xor_si256(c2[547],_mm256_xor_si256(c2[4228],_mm256_xor_si256(c2[704],_mm256_xor_si256(c2[567],_mm256_xor_si256(c2[2326],_mm256_xor_si256(c2[406],_mm256_xor_si256(c2[737],_mm256_xor_si256(c2[577],_mm256_xor_si256(c2[1378],_mm256_xor_si256(c2[3777],_mm256_xor_si256(c2[432],_mm256_xor_si256(c2[4596],_mm256_xor_si256(c2[5076],_mm256_xor_si256(c2[1090],_mm256_xor_si256(c2[3650],_mm256_xor_si256(c2[3971],_mm256_xor_si256(c2[3345],_mm256_xor_si256(c2[3185],_mm256_xor_si256(c2[467],c2[1111]))))))))))))))))))))))))))))))))))));

//row: 6
     d2[48]=_mm256_xor_si256(c2[1125],_mm256_xor_si256(c2[965],_mm256_xor_si256(c2[642],_mm256_xor_si256(c2[2247],_mm256_xor_si256(c2[4324],_mm256_xor_si256(c2[3056],_mm256_xor_si256(c2[2896],_mm256_xor_si256(c2[2416],_mm256_xor_si256(c2[821],_mm256_xor_si256(c2[1635],_mm256_xor_si256(c2[1475],_mm256_xor_si256(c2[3718],_mm256_xor_si256(c2[3893],_mm256_xor_si256(c2[3733],_mm256_xor_si256(c2[530],_mm256_xor_si256(c2[1494],_mm256_xor_si256(c2[4228],_mm256_xor_si256(c2[2790],_mm256_xor_si256(c2[4385],_mm256_xor_si256(c2[4240],_mm256_xor_si256(c2[880],_mm256_xor_si256(c2[727],_mm256_xor_si256(c2[4418],_mm256_xor_si256(c2[4258],_mm256_xor_si256(c2[5059],_mm256_xor_si256(c2[2339],_mm256_xor_si256(c2[4113],_mm256_xor_si256(c2[3158],_mm256_xor_si256(c2[2193],_mm256_xor_si256(c2[4771],_mm256_xor_si256(c2[2212],_mm256_xor_si256(c2[2533],_mm256_xor_si256(c2[1907],_mm256_xor_si256(c2[1747],_mm256_xor_si256(c2[4148],_mm256_xor_si256(c2[4784],c2[4624]))))))))))))))))))))))))))))))))))));

//row: 7
     d2[56]=_mm256_xor_si256(c2[1920],_mm256_xor_si256(c2[1760],_mm256_xor_si256(c2[4483],_mm256_xor_si256(c2[1445],_mm256_xor_si256(c2[4160],_mm256_xor_si256(c2[3042],_mm256_xor_si256(c2[646],_mm256_xor_si256(c2[3859],_mm256_xor_si256(c2[3699],_mm256_xor_si256(c2[1303],_mm256_xor_si256(c2[3219],_mm256_xor_si256(c2[823],_mm256_xor_si256(c2[4499],_mm256_xor_si256(c2[1616],_mm256_xor_si256(c2[4339],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[2438],_mm256_xor_si256(c2[2278],_mm256_xor_si256(c2[4993],_mm256_xor_si256(c2[2277],_mm256_xor_si256(c2[4513],_mm256_xor_si256(c2[2117],_mm256_xor_si256(c2[4688],_mm256_xor_si256(c2[4528],_mm256_xor_si256(c2[2132],_mm256_xor_si256(c2[1333],_mm256_xor_si256(c2[4048],_mm256_xor_si256(c2[2289],_mm256_xor_si256(c2[5012],_mm256_xor_si256(c2[5031],_mm256_xor_si256(c2[2627],_mm256_xor_si256(c2[3585],_mm256_xor_si256(c2[1189],_mm256_xor_si256(c2[2944],_mm256_xor_si256(c2[69],_mm256_xor_si256(c2[2784],_mm256_xor_si256(c2[5043],_mm256_xor_si256(c2[2647],_mm256_xor_si256(c2[4566],_mm256_xor_si256(c2[1683],_mm256_xor_si256(c2[4406],_mm256_xor_si256(c2[3124],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[5061],_mm256_xor_si256(c2[2657],_mm256_xor_si256(c2[743],_mm256_xor_si256(c2[3458],_mm256_xor_si256(c2[898],_mm256_xor_si256(c2[3142],_mm256_xor_si256(c2[738],_mm256_xor_si256(c2[4916],_mm256_xor_si256(c2[2512],_mm256_xor_si256(c2[1717],_mm256_xor_si256(c2[3953],_mm256_xor_si256(c2[1557],_mm256_xor_si256(c2[2036],_mm256_xor_si256(c2[455],_mm256_xor_si256(c2[3170],_mm256_xor_si256(c2[3015],_mm256_xor_si256(c2[611],_mm256_xor_si256(c2[1092],_mm256_xor_si256(c2[3328],_mm256_xor_si256(c2[932],_mm256_xor_si256(c2[2710],_mm256_xor_si256(c2[2550],_mm256_xor_si256(c2[146],_mm256_xor_si256(c2[4951],_mm256_xor_si256(c2[2547],_mm256_xor_si256(c2[3351],_mm256_xor_si256(c2[468],c2[3191]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 8
     d2[64]=_mm256_xor_si256(c2[2407],_mm256_xor_si256(c2[2247],_mm256_xor_si256(c2[2084],_mm256_xor_si256(c2[1924],_mm256_xor_si256(c2[3521],_mm256_xor_si256(c2[2244],_mm256_xor_si256(c2[4338],_mm256_xor_si256(c2[4178],_mm256_xor_si256(c2[3698],_mm256_xor_si256(c2[2103],_mm256_xor_si256(c2[4818],_mm256_xor_si256(c2[2917],_mm256_xor_si256(c2[2757],_mm256_xor_si256(c2[4992],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[5015],_mm256_xor_si256(c2[1972],_mm256_xor_si256(c2[1812],_mm256_xor_si256(c2[2768],_mm256_xor_si256(c2[551],_mm256_xor_si256(c2[391],_mm256_xor_si256(c2[4064],_mm256_xor_si256(c2[548],_mm256_xor_si256(c2[563],_mm256_xor_si256(c2[403],_mm256_xor_si256(c2[2162],_mm256_xor_si256(c2[581],_mm256_xor_si256(c2[421],_mm256_xor_si256(c2[1382],_mm256_xor_si256(c2[1222],_mm256_xor_si256(c2[3621],_mm256_xor_si256(c2[436],_mm256_xor_si256(c2[276],_mm256_xor_si256(c2[4432],_mm256_xor_si256(c2[1094],_mm256_xor_si256(c2[934],_mm256_xor_si256(c2[3494],_mm256_xor_si256(c2[3815],_mm256_xor_si256(c2[3189],_mm256_xor_si256(c2[3029],_mm256_xor_si256(c2[471],_mm256_xor_si256(c2[311],c2[947]))))))))))))))))))))))))))))))))))))))))));

//row: 9
     d2[72]=_mm256_xor_si256(c2[0],_mm256_xor_si256(c2[802],_mm256_xor_si256(c2[4967],_mm256_xor_si256(c2[487],_mm256_xor_si256(c2[4644],_mm256_xor_si256(c2[2084],_mm256_xor_si256(c2[1122],_mm256_xor_si256(c2[1939],_mm256_xor_si256(c2[2741],_mm256_xor_si256(c2[1779],_mm256_xor_si256(c2[2261],_mm256_xor_si256(c2[1299],_mm256_xor_si256(c2[658],_mm256_xor_si256(c2[4823],_mm256_xor_si256(c2[1782],_mm256_xor_si256(c2[518],_mm256_xor_si256(c2[1312],_mm256_xor_si256(c2[358],_mm256_xor_si256(c2[3555],_mm256_xor_si256(c2[2593],_mm256_xor_si256(c2[2768],_mm256_xor_si256(c2[3570],_mm256_xor_si256(c2[2608],_mm256_xor_si256(c2[375],_mm256_xor_si256(c2[4532],_mm256_xor_si256(c2[1331],_mm256_xor_si256(c2[369],_mm256_xor_si256(c2[4065],_mm256_xor_si256(c2[3111],_mm256_xor_si256(c2[2627],_mm256_xor_si256(c2[1665],_mm256_xor_si256(c2[4230],_mm256_xor_si256(c2[3268],_mm256_xor_si256(c2[4085],_mm256_xor_si256(c2[3123],_mm256_xor_si256(c2[725],_mm256_xor_si256(c2[4882],_mm256_xor_si256(c2[3301],_mm256_xor_si256(c2[4103],_mm256_xor_si256(c2[3141],_mm256_xor_si256(c2[4896],_mm256_xor_si256(c2[3942],_mm256_xor_si256(c2[2176],_mm256_xor_si256(c2[1222],_mm256_xor_si256(c2[3958],_mm256_xor_si256(c2[2996],_mm256_xor_si256(c2[2995],_mm256_xor_si256(c2[2033],_mm256_xor_si256(c2[4608],_mm256_xor_si256(c2[3654],_mm256_xor_si256(c2[2049],_mm256_xor_si256(c2[1095],_mm256_xor_si256(c2[2370],_mm256_xor_si256(c2[1408],_mm256_xor_si256(c2[2214],_mm256_xor_si256(c2[790],_mm256_xor_si256(c2[1584],_mm256_xor_si256(c2[630],_mm256_xor_si256(c2[3985],_mm256_xor_si256(c2[3031],_mm256_xor_si256(c2[4629],c2[3667])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 10
     d2[80]=_mm256_xor_si256(c2[1760],_mm256_xor_si256(c2[4021],_mm256_xor_si256(c2[96],c2[3475])));

//row: 11
     d2[88]=_mm256_xor_si256(c2[2],_mm256_xor_si256(c2[4806],_mm256_xor_si256(c2[1284],_mm256_xor_si256(c2[1760],_mm256_xor_si256(c2[1941],_mm256_xor_si256(c2[1461],_mm256_xor_si256(c2[18],_mm256_xor_si256(c2[4977],_mm256_xor_si256(c2[512],_mm256_xor_si256(c2[2915],_mm256_xor_si256(c2[2755],_mm256_xor_si256(c2[2770],_mm256_xor_si256(c2[4694],_mm256_xor_si256(c2[531],_mm256_xor_si256(c2[3265],_mm256_xor_si256(c2[1827],_mm256_xor_si256(c2[3590],_mm256_xor_si256(c2[3430],_mm256_xor_si256(c2[3285],_mm256_xor_si256(c2[85],_mm256_xor_si256(c2[5044],_mm256_xor_si256(c2[3303],_mm256_xor_si256(c2[4096],_mm256_xor_si256(c2[1536],_mm256_xor_si256(c2[1376],_mm256_xor_si256(c2[3158],_mm256_xor_si256(c2[2355],_mm256_xor_si256(c2[2195],_mm256_xor_si256(c2[2039],_mm256_xor_si256(c2[3808],_mm256_xor_si256(c2[1249],_mm256_xor_si256(c2[1730],_mm256_xor_si256(c2[1570],_mm256_xor_si256(c2[784],_mm256_xor_si256(c2[3185],_mm256_xor_si256(c2[3989],_mm256_xor_si256(c2[3829],c2[3030])))))))))))))))))))))))))))))))))))));

//row: 12
     d2[96]=_mm256_xor_si256(c2[3680],_mm256_xor_si256(c2[3520],_mm256_xor_si256(c2[3205],_mm256_xor_si256(c2[4802],_mm256_xor_si256(c2[500],_mm256_xor_si256(c2[340],_mm256_xor_si256(c2[4979],_mm256_xor_si256(c2[3376],_mm256_xor_si256(c2[4977],_mm256_xor_si256(c2[4198],_mm256_xor_si256(c2[4038],_mm256_xor_si256(c2[1154],_mm256_xor_si256(c2[1329],_mm256_xor_si256(c2[1169],_mm256_xor_si256(c2[3093],_mm256_xor_si256(c2[4049],_mm256_xor_si256(c2[2451],_mm256_xor_si256(c2[1664],_mm256_xor_si256(c2[226],_mm256_xor_si256(c2[1829],_mm256_xor_si256(c2[1684],_mm256_xor_si256(c2[3443],_mm256_xor_si256(c2[1862],_mm256_xor_si256(c2[1702],_mm256_xor_si256(c2[2503],_mm256_xor_si256(c2[4902],_mm256_xor_si256(c2[1557],_mm256_xor_si256(c2[594],_mm256_xor_si256(c2[2215],_mm256_xor_si256(c2[4775],_mm256_xor_si256(c2[5088],_mm256_xor_si256(c2[4470],_mm256_xor_si256(c2[4310],_mm256_xor_si256(c2[1584],c2[2228]))))))))))))))))))))))))))))))))));

//row: 13
     d2[104]=_mm256_xor_si256(c2[967],_mm256_xor_si256(c2[644],_mm256_xor_si256(c2[2241],_mm256_xor_si256(c2[3042],_mm256_xor_si256(c2[2898],_mm256_xor_si256(c2[2418],_mm256_xor_si256(c2[983],_mm256_xor_si256(c2[823],_mm256_xor_si256(c2[336],_mm256_xor_si256(c2[1477],_mm256_xor_si256(c2[3872],_mm256_xor_si256(c2[3712],_mm256_xor_si256(c2[3735],_mm256_xor_si256(c2[532],_mm256_xor_si256(c2[1488],_mm256_xor_si256(c2[4230],_mm256_xor_si256(c2[2784],_mm256_xor_si256(c2[4547],_mm256_xor_si256(c2[4387],_mm256_xor_si256(c2[4242],_mm256_xor_si256(c2[1042],_mm256_xor_si256(c2[882],_mm256_xor_si256(c2[4260],_mm256_xor_si256(c2[5061],_mm256_xor_si256(c2[2501],_mm256_xor_si256(c2[2341],_mm256_xor_si256(c2[4115],_mm256_xor_si256(c2[3312],_mm256_xor_si256(c2[3152],_mm256_xor_si256(c2[4773],_mm256_xor_si256(c2[2214],_mm256_xor_si256(c2[2695],_mm256_xor_si256(c2[2535],_mm256_xor_si256(c2[1089],_mm256_xor_si256(c2[1749],_mm256_xor_si256(c2[4150],_mm256_xor_si256(c2[4946],c2[4786])))))))))))))))))))))))))))))))))))));

//row: 14
     d2[112]=_mm256_xor_si256(c2[1920],_mm256_xor_si256(c2[1760],_mm256_xor_si256(c2[2567],_mm256_xor_si256(c2[1445],_mm256_xor_si256(c2[2244],_mm256_xor_si256(c2[3042],_mm256_xor_si256(c2[3841],_mm256_xor_si256(c2[3859],_mm256_xor_si256(c2[3699],_mm256_xor_si256(c2[4498],_mm256_xor_si256(c2[3219],_mm256_xor_si256(c2[4018],_mm256_xor_si256(c2[2583],_mm256_xor_si256(c2[1616],_mm256_xor_si256(c2[2423],_mm256_xor_si256(c2[3059],_mm256_xor_si256(c2[2438],_mm256_xor_si256(c2[2278],_mm256_xor_si256(c2[3077],_mm256_xor_si256(c2[353],_mm256_xor_si256(c2[4513],_mm256_xor_si256(c2[193],_mm256_xor_si256(c2[4688],_mm256_xor_si256(c2[4528],_mm256_xor_si256(c2[208],_mm256_xor_si256(c2[1333],_mm256_xor_si256(c2[2132],_mm256_xor_si256(c2[2289],_mm256_xor_si256(c2[3088],_mm256_xor_si256(c2[5031],_mm256_xor_si256(c2[711],_mm256_xor_si256(c2[3585],_mm256_xor_si256(c2[4384],_mm256_xor_si256(c2[1028],_mm256_xor_si256(c2[69],_mm256_xor_si256(c2[868],_mm256_xor_si256(c2[5043],_mm256_xor_si256(c2[723],_mm256_xor_si256(c2[2642],_mm256_xor_si256(c2[1683],_mm256_xor_si256(c2[2482],_mm256_xor_si256(c2[102],_mm256_xor_si256(c2[5061],_mm256_xor_si256(c2[741],_mm256_xor_si256(c2[743],_mm256_xor_si256(c2[1542],_mm256_xor_si256(c2[4101],_mm256_xor_si256(c2[3142],_mm256_xor_si256(c2[3941],_mm256_xor_si256(c2[2820],_mm256_xor_si256(c2[4916],_mm256_xor_si256(c2[596],_mm256_xor_si256(c2[4912],_mm256_xor_si256(c2[3953],_mm256_xor_si256(c2[4752],_mm256_xor_si256(c2[455],_mm256_xor_si256(c2[1254],_mm256_xor_si256(c2[3015],_mm256_xor_si256(c2[3814],_mm256_xor_si256(c2[4295],_mm256_xor_si256(c2[3328],_mm256_xor_si256(c2[4135],_mm256_xor_si256(c2[2710],_mm256_xor_si256(c2[2550],_mm256_xor_si256(c2[3349],_mm256_xor_si256(c2[4951],_mm256_xor_si256(c2[631],_mm256_xor_si256(c2[1427],_mm256_xor_si256(c2[468],c2[1267])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 15
     d2[120]=_mm256_xor_si256(c2[4806],_mm256_xor_si256(c2[3685],_mm256_xor_si256(c2[4646],_mm256_xor_si256(c2[3362],_mm256_xor_si256(c2[4323],_mm256_xor_si256(c2[4967],_mm256_xor_si256(c2[801],_mm256_xor_si256(c2[3041],_mm256_xor_si256(c2[1618],_mm256_xor_si256(c2[497],_mm256_xor_si256(c2[1458],_mm256_xor_si256(c2[17],_mm256_xor_si256(c2[978],_mm256_xor_si256(c2[3541],_mm256_xor_si256(c2[4502],_mm256_xor_si256(c2[197],_mm256_xor_si256(c2[4195],_mm256_xor_si256(c2[37],_mm256_xor_si256(c2[1319],_mm256_xor_si256(c2[2272],_mm256_xor_si256(c2[2455],_mm256_xor_si256(c2[1334],_mm256_xor_si256(c2[2295],_mm256_xor_si256(c2[3250],_mm256_xor_si256(c2[4211],_mm256_xor_si256(c2[4214],_mm256_xor_si256(c2[48],_mm256_xor_si256(c2[1829],_mm256_xor_si256(c2[2790],_mm256_xor_si256(c2[391],_mm256_xor_si256(c2[1344],_mm256_xor_si256(c2[1986],_mm256_xor_si256(c2[2947],_mm256_xor_si256(c2[1841],_mm256_xor_si256(c2[2802],_mm256_xor_si256(c2[3600],_mm256_xor_si256(c2[4561],_mm256_xor_si256(c2[2980],_mm256_xor_si256(c2[1859],_mm256_xor_si256(c2[2820],_mm256_xor_si256(c2[2660],_mm256_xor_si256(c2[3621],_mm256_xor_si256(c2[5059],_mm256_xor_si256(c2[901],_mm256_xor_si256(c2[1714],_mm256_xor_si256(c2[2675],_mm256_xor_si256(c2[759],_mm256_xor_si256(c2[1712],_mm256_xor_si256(c2[2372],_mm256_xor_si256(c2[3333],_mm256_xor_si256(c2[4932],_mm256_xor_si256(c2[774],_mm256_xor_si256(c2[134],_mm256_xor_si256(c2[1095],_mm256_xor_si256(c2[469],_mm256_xor_si256(c2[4467],_mm256_xor_si256(c2[309],_mm256_xor_si256(c2[1749],_mm256_xor_si256(c2[2710],_mm256_xor_si256(c2[2385],c2[3346]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 16
     d2[128]=_mm256_xor_si256(c2[2720],_mm256_xor_si256(c2[4327],_mm256_xor_si256(c2[2560],_mm256_xor_si256(c2[4167],_mm256_xor_si256(c2[4004],_mm256_xor_si256(c2[2245],_mm256_xor_si256(c2[3844],_mm256_xor_si256(c2[3842],_mm256_xor_si256(c2[322],_mm256_xor_si256(c2[4659],_mm256_xor_si256(c2[1139],_mm256_xor_si256(c2[4499],_mm256_xor_si256(c2[979],_mm256_xor_si256(c2[4019],_mm256_xor_si256(c2[499],_mm256_xor_si256(c2[2416],_mm256_xor_si256(c2[4023],_mm256_xor_si256(c2[1782],_mm256_xor_si256(c2[3238],_mm256_xor_si256(c2[4837],_mm256_xor_si256(c2[3078],_mm256_xor_si256(c2[4677],_mm256_xor_si256(c2[194],_mm256_xor_si256(c2[1793],_mm256_xor_si256(c2[369],_mm256_xor_si256(c2[1968],_mm256_xor_si256(c2[209],_mm256_xor_si256(c2[1808],_mm256_xor_si256(c2[3892],_mm256_xor_si256(c2[2133],_mm256_xor_si256(c2[3732],_mm256_xor_si256(c2[3089],_mm256_xor_si256(c2[4688],_mm256_xor_si256(c2[2471],_mm256_xor_si256(c2[704],_mm256_xor_si256(c2[2311],_mm256_xor_si256(c2[4385],_mm256_xor_si256(c2[865],_mm256_xor_si256(c2[869],_mm256_xor_si256(c2[2468],_mm256_xor_si256(c2[2483],_mm256_xor_si256(c2[724],_mm256_xor_si256(c2[2323],_mm256_xor_si256(c2[2483],_mm256_xor_si256(c2[4082],_mm256_xor_si256(c2[902],_mm256_xor_si256(c2[2501],_mm256_xor_si256(c2[742],_mm256_xor_si256(c2[2341],_mm256_xor_si256(c2[3302],_mm256_xor_si256(c2[1543],_mm256_xor_si256(c2[3142],_mm256_xor_si256(c2[3942],_mm256_xor_si256(c2[422],_mm256_xor_si256(c2[2356],_mm256_xor_si256(c2[597],_mm256_xor_si256(c2[2196],_mm256_xor_si256(c2[4753],_mm256_xor_si256(c2[1233],_mm256_xor_si256(c2[3014],_mm256_xor_si256(c2[1255],_mm256_xor_si256(c2[2854],_mm256_xor_si256(c2[3815],_mm256_xor_si256(c2[295],_mm256_xor_si256(c2[4128],_mm256_xor_si256(c2[608],_mm256_xor_si256(c2[3510],_mm256_xor_si256(c2[5109],_mm256_xor_si256(c2[3350],_mm256_xor_si256(c2[4949],_mm256_xor_si256(c2[2391],_mm256_xor_si256(c2[624],_mm256_xor_si256(c2[2231],_mm256_xor_si256(c2[1268],_mm256_xor_si256(c2[2867],c2[2388])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 17
     d2[136]=_mm256_xor_si256(c2[4323],_mm256_xor_si256(c2[1442],_mm256_xor_si256(c2[4163],_mm256_xor_si256(c2[1282],_mm256_xor_si256(c2[1127],_mm256_xor_si256(c2[3840],_mm256_xor_si256(c2[967],_mm256_xor_si256(c2[326],_mm256_xor_si256(c2[2564],_mm256_xor_si256(c2[1143],_mm256_xor_si256(c2[3381],_mm256_xor_si256(c2[983],_mm256_xor_si256(c2[3221],_mm256_xor_si256(c2[503],_mm256_xor_si256(c2[2741],_mm256_xor_si256(c2[4019],_mm256_xor_si256(c2[1138],_mm256_xor_si256(c2[4823],_mm256_xor_si256(c2[4833],_mm256_xor_si256(c2[1952],_mm256_xor_si256(c2[4673],_mm256_xor_si256(c2[1792],_mm256_xor_si256(c2[1797],_mm256_xor_si256(c2[4035],_mm256_xor_si256(c2[1972],_mm256_xor_si256(c2[4210],_mm256_xor_si256(c2[1812],_mm256_xor_si256(c2[4050],_mm256_xor_si256(c2[1015],_mm256_xor_si256(c2[3728],_mm256_xor_si256(c2[855],_mm256_xor_si256(c2[4692],_mm256_xor_si256(c2[1811],_mm256_xor_si256(c2[4705],_mm256_xor_si256(c2[2307],_mm256_xor_si256(c2[4545],_mm256_xor_si256(c2[869],_mm256_xor_si256(c2[3107],_mm256_xor_si256(c2[2464],_mm256_xor_si256(c2[4710],_mm256_xor_si256(c2[4725],_mm256_xor_si256(c2[2327],_mm256_xor_si256(c2[4565],_mm256_xor_si256(c2[4086],_mm256_xor_si256(c2[1205],_mm256_xor_si256(c2[4563],_mm256_xor_si256(c2[2497],_mm256_xor_si256(c2[4743],_mm256_xor_si256(c2[2337],_mm256_xor_si256(c2[4583],_mm256_xor_si256(c2[417],_mm256_xor_si256(c2[3138],_mm256_xor_si256(c2[257],_mm256_xor_si256(c2[418],_mm256_xor_si256(c2[2656],_mm256_xor_si256(c2[4598],_mm256_xor_si256(c2[2192],_mm256_xor_si256(c2[4438],_mm256_xor_si256(c2[1237],_mm256_xor_si256(c2[3475],_mm256_xor_si256(c2[129],_mm256_xor_si256(c2[2850],_mm256_xor_si256(c2[5088],_mm256_xor_si256(c2[291],_mm256_xor_si256(c2[2529],_mm256_xor_si256(c2[612],_mm256_xor_si256(c2[2850],_mm256_xor_si256(c2[5105],_mm256_xor_si256(c2[2224],_mm256_xor_si256(c2[4945],_mm256_xor_si256(c2[2064],_mm256_xor_si256(c2[4625],_mm256_xor_si256(c2[2227],_mm256_xor_si256(c2[4465],_mm256_xor_si256(c2[2871],c2[5109])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 18
     d2[144]=_mm256_xor_si256(c2[4486],_mm256_xor_si256(c2[422],c2[2993]));

//row: 19
     d2[152]=_mm256_xor_si256(c2[166],_mm256_xor_si256(c2[4962],_mm256_xor_si256(c2[1440],_mm256_xor_si256(c2[3682],_mm256_xor_si256(c2[2097],_mm256_xor_si256(c2[1617],_mm256_xor_si256(c2[22],_mm256_xor_si256(c2[3216],_mm256_xor_si256(c2[676],_mm256_xor_si256(c2[2919],_mm256_xor_si256(c2[2934],_mm256_xor_si256(c2[4850],_mm256_xor_si256(c2[695],_mm256_xor_si256(c2[3429],_mm256_xor_si256(c2[1991],_mm256_xor_si256(c2[3586],_mm256_xor_si256(c2[3441],_mm256_xor_si256(c2[81],_mm256_xor_si256(c2[3459],_mm256_xor_si256(c2[4260],_mm256_xor_si256(c2[1540],_mm256_xor_si256(c2[3314],_mm256_xor_si256(c2[2359],_mm256_xor_si256(c2[3972],_mm256_xor_si256(c2[1413],_mm256_xor_si256(c2[1734],_mm256_xor_si256(c2[948],_mm256_xor_si256(c2[3349],c2[3985]))))))))))))))))))))))))))));

//row: 20
     d2[160]=_mm256_xor_si256(c2[961],_mm256_xor_si256(c2[801],_mm256_xor_si256(c2[486],_mm256_xor_si256(c2[2083],_mm256_xor_si256(c2[2900],_mm256_xor_si256(c2[2740],_mm256_xor_si256(c2[2260],_mm256_xor_si256(c2[657],_mm256_xor_si256(c2[4176],_mm256_xor_si256(c2[1479],_mm256_xor_si256(c2[1319],_mm256_xor_si256(c2[3554],_mm256_xor_si256(c2[3729],_mm256_xor_si256(c2[3569],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[1330],_mm256_xor_si256(c2[4064],_mm256_xor_si256(c2[2626],_mm256_xor_si256(c2[4229],_mm256_xor_si256(c2[1507],_mm256_xor_si256(c2[4084],_mm256_xor_si256(c2[724],_mm256_xor_si256(c2[4262],_mm256_xor_si256(c2[4102],_mm256_xor_si256(c2[4903],_mm256_xor_si256(c2[2183],_mm256_xor_si256(c2[3957],_mm256_xor_si256(c2[2994],_mm256_xor_si256(c2[4615],_mm256_xor_si256(c2[2048],_mm256_xor_si256(c2[2369],_mm256_xor_si256(c2[1751],_mm256_xor_si256(c2[1591],_mm256_xor_si256(c2[3984],c2[4628]))))))))))))))))))))))))))))))))));

//row: 21
     d2[168]=_mm256_xor_si256(c2[4166],_mm256_xor_si256(c2[3843],_mm256_xor_si256(c2[321],_mm256_xor_si256(c2[1922],_mm256_xor_si256(c2[978],_mm256_xor_si256(c2[498],_mm256_xor_si256(c2[4182],_mm256_xor_si256(c2[4022],_mm256_xor_si256(c2[4676],_mm256_xor_si256(c2[1952],_mm256_xor_si256(c2[1792],_mm256_xor_si256(c2[1815],_mm256_xor_si256(c2[3731],_mm256_xor_si256(c2[4695],_mm256_xor_si256(c2[2310],_mm256_xor_si256(c2[864],_mm256_xor_si256(c2[2627],_mm256_xor_si256(c2[2467],_mm256_xor_si256(c2[2322],_mm256_xor_si256(c2[4241],_mm256_xor_si256(c2[4081],_mm256_xor_si256(c2[2340],_mm256_xor_si256(c2[3141],_mm256_xor_si256(c2[581],_mm256_xor_si256(c2[421],_mm256_xor_si256(c2[2195],_mm256_xor_si256(c2[1392],_mm256_xor_si256(c2[1232],_mm256_xor_si256(c2[2853],_mm256_xor_si256(c2[294],_mm256_xor_si256(c2[775],_mm256_xor_si256(c2[615],_mm256_xor_si256(c2[1729],_mm256_xor_si256(c2[4948],_mm256_xor_si256(c2[2230],_mm256_xor_si256(c2[3026],c2[2866]))))))))))))))))))))))))))))))))))));

//row: 22
     d2[176]=_mm256_xor_si256(c2[4822],c2[4993]);

//row: 23
     d2[184]=_mm256_xor_si256(c2[3680],_mm256_xor_si256(c2[1815],c2[2327]));

//row: 24
     d2[192]=_mm256_xor_si256(c2[2257],_mm256_xor_si256(c2[1796],c2[1424]));

//row: 25
     d2[200]=_mm256_xor_si256(c2[647],c2[4564]);

//row: 26
     d2[208]=_mm256_xor_si256(c2[1445],_mm256_xor_si256(c2[1285],_mm256_xor_si256(c2[324],_mm256_xor_si256(c2[1122],_mm256_xor_si256(c2[962],_mm256_xor_si256(c2[1],_mm256_xor_si256(c2[2567],_mm256_xor_si256(c2[1606],_mm256_xor_si256(c2[3376],_mm256_xor_si256(c2[3216],_mm256_xor_si256(c2[2263],_mm256_xor_si256(c2[2736],_mm256_xor_si256(c2[1783],_mm256_xor_si256(c2[340],_mm256_xor_si256(c2[1141],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[1955],_mm256_xor_si256(c2[1795],_mm256_xor_si256(c2[834],_mm256_xor_si256(c2[3237],_mm256_xor_si256(c2[4038],_mm256_xor_si256(c2[3077],_mm256_xor_si256(c2[4672],_mm256_xor_si256(c2[4213],_mm256_xor_si256(c2[4053],_mm256_xor_si256(c2[3092],_mm256_xor_si256(c2[1010],_mm256_xor_si256(c2[850],_mm256_xor_si256(c2[5008],_mm256_xor_si256(c2[1814],_mm256_xor_si256(c2[853],_mm256_xor_si256(c2[4708],_mm256_xor_si256(c2[4548],_mm256_xor_si256(c2[3587],_mm256_xor_si256(c2[3110],_mm256_xor_si256(c2[2149],_mm256_xor_si256(c2[3904],_mm256_xor_si256(c2[4705],_mm256_xor_si256(c2[3744],_mm256_xor_si256(c2[4720],_mm256_xor_si256(c2[4560],_mm256_xor_si256(c2[3607],_mm256_xor_si256(c2[407],_mm256_xor_si256(c2[1200],_mm256_xor_si256(c2[247],_mm256_xor_si256(c2[4738],_mm256_xor_si256(c2[4578],_mm256_xor_si256(c2[3617],_mm256_xor_si256(c2[420],_mm256_xor_si256(c2[260],_mm256_xor_si256(c2[4418],_mm256_xor_si256(c2[1858],_mm256_xor_si256(c2[2659],_mm256_xor_si256(c2[1698],_mm256_xor_si256(c2[4593],_mm256_xor_si256(c2[4433],_mm256_xor_si256(c2[3472],_mm256_xor_si256(c2[2677],_mm256_xor_si256(c2[3478],_mm256_xor_si256(c2[2517],_mm256_xor_si256(c2[2516],_mm256_xor_si256(c2[132],_mm256_xor_si256(c2[5091],_mm256_xor_si256(c2[4130],_mm256_xor_si256(c2[2532],_mm256_xor_si256(c2[1571],_mm256_xor_si256(c2[2052],_mm256_xor_si256(c2[2853],_mm256_xor_si256(c2[1892],_mm256_xor_si256(c2[2227],_mm256_xor_si256(c2[2067],_mm256_xor_si256(c2[1106],_mm256_xor_si256(c2[4628],_mm256_xor_si256(c2[4468],_mm256_xor_si256(c2[3507],_mm256_xor_si256(c2[4311],_mm256_xor_si256(c2[5104],c2[4151])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 27
     d2[216]=_mm256_xor_si256(c2[1280],c2[3780]);

//row: 28
     d2[224]=_mm256_xor_si256(c2[339],_mm256_xor_si256(c2[835],c2[1204]));

//row: 29
     d2[232]=_mm256_xor_si256(c2[2880],c2[4544]);

//row: 30
     d2[240]=_mm256_xor_si256(c2[1154],_mm256_xor_si256(c2[2647],_mm256_xor_si256(c2[1552],c2[3346])));

//row: 31
     d2[248]=_mm256_xor_si256(c2[1440],_mm256_xor_si256(c2[1125],_mm256_xor_si256(c2[2722],_mm256_xor_si256(c2[3379],_mm256_xor_si256(c2[2899],_mm256_xor_si256(c2[1456],_mm256_xor_si256(c2[1296],_mm256_xor_si256(c2[1619],_mm256_xor_si256(c2[1958],_mm256_xor_si256(c2[4353],_mm256_xor_si256(c2[4193],_mm256_xor_si256(c2[4208],_mm256_xor_si256(c2[1013],_mm256_xor_si256(c2[1969],_mm256_xor_si256(c2[4711],_mm256_xor_si256(c2[3265],_mm256_xor_si256(c2[5028],_mm256_xor_si256(c2[4868],_mm256_xor_si256(c2[4723],_mm256_xor_si256(c2[1523],_mm256_xor_si256(c2[1363],_mm256_xor_si256(c2[4741],_mm256_xor_si256(c2[423],_mm256_xor_si256(c2[2982],_mm256_xor_si256(c2[2822],_mm256_xor_si256(c2[4596],_mm256_xor_si256(c2[3793],_mm256_xor_si256(c2[3633],_mm256_xor_si256(c2[135],_mm256_xor_si256(c2[2695],_mm256_xor_si256(c2[3168],_mm256_xor_si256(c2[3008],_mm256_xor_si256(c2[2230],_mm256_xor_si256(c2[4631],_mm256_xor_si256(c2[308],c2[148])))))))))))))))))))))))))))))))))));

//row: 32
     d2[256]=_mm256_xor_si256(c2[2405],_mm256_xor_si256(c2[2245],_mm256_xor_si256(c2[2082],_mm256_xor_si256(c2[1922],_mm256_xor_si256(c2[3527],_mm256_xor_si256(c2[2887],_mm256_xor_si256(c2[4336],_mm256_xor_si256(c2[4176],_mm256_xor_si256(c2[3696],_mm256_xor_si256(c2[2101],_mm256_xor_si256(c2[2915],_mm256_xor_si256(c2[2755],_mm256_xor_si256(c2[4998],_mm256_xor_si256(c2[54],_mm256_xor_si256(c2[5013],_mm256_xor_si256(c2[1970],_mm256_xor_si256(c2[1810],_mm256_xor_si256(c2[2774],_mm256_xor_si256(c2[549],_mm256_xor_si256(c2[389],_mm256_xor_si256(c2[4070],_mm256_xor_si256(c2[546],_mm256_xor_si256(c2[561],_mm256_xor_si256(c2[401],_mm256_xor_si256(c2[2160],_mm256_xor_si256(c2[2001],_mm256_xor_si256(c2[579],_mm256_xor_si256(c2[419],_mm256_xor_si256(c2[1380],_mm256_xor_si256(c2[1220],_mm256_xor_si256(c2[3619],_mm256_xor_si256(c2[434],_mm256_xor_si256(c2[274],_mm256_xor_si256(c2[4438],_mm256_xor_si256(c2[1092],_mm256_xor_si256(c2[932],_mm256_xor_si256(c2[3492],_mm256_xor_si256(c2[3813],_mm256_xor_si256(c2[3187],_mm256_xor_si256(c2[3027],_mm256_xor_si256(c2[469],_mm256_xor_si256(c2[309],c2[945]))))))))))))))))))))))))))))))))))))))))));

//row: 33
     d2[264]=_mm256_xor_si256(c2[3047],_mm256_xor_si256(c2[2724],_mm256_xor_si256(c2[4321],_mm256_xor_si256(c2[4978],_mm256_xor_si256(c2[4498],_mm256_xor_si256(c2[2903],_mm256_xor_si256(c2[3557],_mm256_xor_si256(c2[673],_mm256_xor_si256(c2[676],_mm256_xor_si256(c2[688],_mm256_xor_si256(c2[2612],_mm256_xor_si256(c2[3568],_mm256_xor_si256(c2[1191],_mm256_xor_si256(c2[4864],_mm256_xor_si256(c2[1348],_mm256_xor_si256(c2[1203],_mm256_xor_si256(c2[2962],_mm256_xor_si256(c2[1221],_mm256_xor_si256(c2[2022],_mm256_xor_si256(c2[4421],_mm256_xor_si256(c2[1076],_mm256_xor_si256(c2[113],_mm256_xor_si256(c2[757],_mm256_xor_si256(c2[1734],_mm256_xor_si256(c2[4294],_mm256_xor_si256(c2[4615],_mm256_xor_si256(c2[3829],_mm256_xor_si256(c2[1111],c2[1747]))))))))))))))))))))))))))));

//row: 34
     d2[272]=_mm256_xor_si256(c2[4802],_mm256_xor_si256(c2[4642],_mm256_xor_si256(c2[1921],_mm256_xor_si256(c2[4487],_mm256_xor_si256(c2[4327],_mm256_xor_si256(c2[1606],_mm256_xor_si256(c2[805],_mm256_xor_si256(c2[3203],_mm256_xor_si256(c2[3044],_mm256_xor_si256(c2[1622],_mm256_xor_si256(c2[1462],_mm256_xor_si256(c2[3860],_mm256_xor_si256(c2[982],_mm256_xor_si256(c2[3380],_mm256_xor_si256(c2[1937],_mm256_xor_si256(c2[4498],_mm256_xor_si256(c2[1777],_mm256_xor_si256(c2[193],_mm256_xor_si256(c2[33],_mm256_xor_si256(c2[2439],_mm256_xor_si256(c2[4834],_mm256_xor_si256(c2[2276],_mm256_xor_si256(c2[4674],_mm256_xor_si256(c2[2451],_mm256_xor_si256(c2[2291],_mm256_xor_si256(c2[4689],_mm256_xor_si256(c2[4375],_mm256_xor_si256(c2[4215],_mm256_xor_si256(c2[1494],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[2450],_mm256_xor_si256(c2[2946],_mm256_xor_si256(c2[2786],_mm256_xor_si256(c2[65],_mm256_xor_si256(c2[1348],_mm256_xor_si256(c2[3746],_mm256_xor_si256(c2[390],_mm256_xor_si256(c2[2951],_mm256_xor_si256(c2[230],_mm256_xor_si256(c2[2966],_mm256_xor_si256(c2[2806],_mm256_xor_si256(c2[85],_mm256_xor_si256(c2[2004],_mm256_xor_si256(c2[4565],_mm256_xor_si256(c2[1844],_mm256_xor_si256(c2[2976],_mm256_xor_si256(c2[2816],_mm256_xor_si256(c2[103],_mm256_xor_si256(c2[3777],_mm256_xor_si256(c2[3617],_mm256_xor_si256(c2[896],_mm256_xor_si256(c2[3463],_mm256_xor_si256(c2[897],_mm256_xor_si256(c2[3303],_mm256_xor_si256(c2[2839],_mm256_xor_si256(c2[2679],_mm256_xor_si256(c2[5077],_mm256_xor_si256(c2[4274],_mm256_xor_si256(c2[1716],_mm256_xor_si256(c2[4114],_mm256_xor_si256(c2[3489],_mm256_xor_si256(c2[3329],_mm256_xor_si256(c2[608],_mm256_xor_si256(c2[770],_mm256_xor_si256(c2[3168],_mm256_xor_si256(c2[3649],_mm256_xor_si256(c2[1091],_mm256_xor_si256(c2[3489],_mm256_xor_si256(c2[465],_mm256_xor_si256(c2[305],_mm256_xor_si256(c2[2711],_mm256_xor_si256(c2[2866],_mm256_xor_si256(c2[2706],_mm256_xor_si256(c2[5104],_mm256_xor_si256(c2[789],_mm256_xor_si256(c2[3350],c2[629]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 35
     d2[280]=_mm256_xor_si256(c2[1282],_mm256_xor_si256(c2[1122],_mm256_xor_si256(c2[807],_mm256_xor_si256(c2[2404],_mm256_xor_si256(c2[3221],_mm256_xor_si256(c2[3061],_mm256_xor_si256(c2[2581],_mm256_xor_si256(c2[978],_mm256_xor_si256(c2[4017],_mm256_xor_si256(c2[1792],_mm256_xor_si256(c2[1632],_mm256_xor_si256(c2[3875],_mm256_xor_si256(c2[4050],_mm256_xor_si256(c2[3890],_mm256_xor_si256(c2[695],_mm256_xor_si256(c2[1651],_mm256_xor_si256(c2[4385],_mm256_xor_si256(c2[2947],_mm256_xor_si256(c2[4550],_mm256_xor_si256(c2[4405],_mm256_xor_si256(c2[1045],_mm256_xor_si256(c2[1361],_mm256_xor_si256(c2[4583],_mm256_xor_si256(c2[4423],_mm256_xor_si256(c2[97],_mm256_xor_si256(c2[2496],_mm256_xor_si256(c2[4278],_mm256_xor_si256(c2[3315],_mm256_xor_si256(c2[4928],_mm256_xor_si256(c2[2369],_mm256_xor_si256(c2[2690],_mm256_xor_si256(c2[2064],_mm256_xor_si256(c2[1904],_mm256_xor_si256(c2[4305],c2[4949]))))))))))))))))))))))))))))))))));

//row: 36
     d2[288]=_mm256_xor_si256(c2[1924],_mm256_xor_si256(c2[993],c2[4276]));

//row: 37
     d2[296]=_mm256_xor_si256(c2[487],_mm256_xor_si256(c2[4964],_mm256_xor_si256(c2[164],_mm256_xor_si256(c2[4641],_mm256_xor_si256(c2[1761],_mm256_xor_si256(c2[1127],_mm256_xor_si256(c2[2418],_mm256_xor_si256(c2[1776],_mm256_xor_si256(c2[1938],_mm256_xor_si256(c2[1296],_mm256_xor_si256(c2[4980],_mm256_xor_si256(c2[343],_mm256_xor_si256(c2[4820],_mm256_xor_si256(c2[997],_mm256_xor_si256(c2[355],_mm256_xor_si256(c2[2758],_mm256_xor_si256(c2[3232],_mm256_xor_si256(c2[2598],_mm256_xor_si256(c2[3255],_mm256_xor_si256(c2[2613],_mm256_xor_si256(c2[52],_mm256_xor_si256(c2[4529],_mm256_xor_si256(c2[1008],_mm256_xor_si256(c2[374],_mm256_xor_si256(c2[3750],_mm256_xor_si256(c2[3108],_mm256_xor_si256(c2[2304],_mm256_xor_si256(c2[1670],_mm256_xor_si256(c2[3425],_mm256_xor_si256(c2[3907],_mm256_xor_si256(c2[3265],_mm256_xor_si256(c2[3762],_mm256_xor_si256(c2[3120],_mm256_xor_si256(c2[5047],_mm256_xor_si256(c2[402],_mm256_xor_si256(c2[4887],_mm256_xor_si256(c2[3780],_mm256_xor_si256(c2[3138],_mm256_xor_si256(c2[4581],_mm256_xor_si256(c2[3939],_mm256_xor_si256(c2[1379],_mm256_xor_si256(c2[1861],_mm256_xor_si256(c2[1219],_mm256_xor_si256(c2[3635],_mm256_xor_si256(c2[2993],_mm256_xor_si256(c2[2198],_mm256_xor_si256(c2[2672],_mm256_xor_si256(c2[2038],_mm256_xor_si256(c2[4293],_mm256_xor_si256(c2[3651],_mm256_xor_si256(c2[1734],_mm256_xor_si256(c2[1092],_mm256_xor_si256(c2[1573],_mm256_xor_si256(c2[2055],_mm256_xor_si256(c2[1413],_mm256_xor_si256(c2[1269],_mm256_xor_si256(c2[627],_mm256_xor_si256(c2[3670],_mm256_xor_si256(c2[3028],_mm256_xor_si256(c2[3824],_mm256_xor_si256(c2[4306],c2[3664])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 38
     d2[304]=_mm256_xor_si256(c2[2401],_mm256_xor_si256(c2[2241],_mm256_xor_si256(c2[1926],_mm256_xor_si256(c2[3523],_mm256_xor_si256(c2[4340],_mm256_xor_si256(c2[4180],_mm256_xor_si256(c2[3700],_mm256_xor_si256(c2[2097],_mm256_xor_si256(c2[4976],_mm256_xor_si256(c2[2919],_mm256_xor_si256(c2[2759],_mm256_xor_si256(c2[4994],_mm256_xor_si256(c2[50],_mm256_xor_si256(c2[5009],_mm256_xor_si256(c2[1814],_mm256_xor_si256(c2[2770],_mm256_xor_si256(c2[385],_mm256_xor_si256(c2[4066],_mm256_xor_si256(c2[550],_mm256_xor_si256(c2[405],_mm256_xor_si256(c2[2164],_mm256_xor_si256(c2[402],_mm256_xor_si256(c2[583],_mm256_xor_si256(c2[423],_mm256_xor_si256(c2[1216],_mm256_xor_si256(c2[3623],_mm256_xor_si256(c2[278],_mm256_xor_si256(c2[4434],_mm256_xor_si256(c2[928],_mm256_xor_si256(c2[3488],_mm256_xor_si256(c2[3809],_mm256_xor_si256(c2[3191],_mm256_xor_si256(c2[3031],_mm256_xor_si256(c2[305],c2[949]))))))))))))))))))))))))))))))))));

//row: 39
     d2[312]=_mm256_xor_si256(c2[1761],_mm256_xor_si256(c2[1601],_mm256_xor_si256(c2[1446],_mm256_xor_si256(c2[1286],_mm256_xor_si256(c2[2883],_mm256_xor_si256(c2[2407],_mm256_xor_si256(c2[3700],_mm256_xor_si256(c2[3540],_mm256_xor_si256(c2[3060],_mm256_xor_si256(c2[1457],_mm256_xor_si256(c2[2279],_mm256_xor_si256(c2[2119],_mm256_xor_si256(c2[4354],_mm256_xor_si256(c2[4529],_mm256_xor_si256(c2[4369],_mm256_xor_si256(c2[1334],_mm256_xor_si256(c2[1174],_mm256_xor_si256(c2[2130],_mm256_xor_si256(c2[5024],_mm256_xor_si256(c2[4864],_mm256_xor_si256(c2[3426],_mm256_xor_si256(c2[5029],_mm256_xor_si256(c2[5044],_mm256_xor_si256(c2[4884],_mm256_xor_si256(c2[1524],_mm256_xor_si256(c2[5062],_mm256_xor_si256(c2[4902],_mm256_xor_si256(c2[736],_mm256_xor_si256(c2[576],_mm256_xor_si256(c2[2983],_mm256_xor_si256(c2[4917],_mm256_xor_si256(c2[4757],_mm256_xor_si256(c2[3794],_mm256_xor_si256(c2[2037],_mm256_xor_si256(c2[448],_mm256_xor_si256(c2[288],_mm256_xor_si256(c2[2848],_mm256_xor_si256(c2[3169],_mm256_xor_si256(c2[2551],_mm256_xor_si256(c2[2391],_mm256_xor_si256(c2[4944],_mm256_xor_si256(c2[4784],c2[309]))))))))))))))))))))))))))))))))))))))))));

//row: 40
     d2[320]=_mm256_xor_si256(c2[3042],_mm256_xor_si256(c2[4],_mm256_xor_si256(c2[2727],_mm256_xor_si256(c2[4800],_mm256_xor_si256(c2[4324],_mm256_xor_si256(c2[1286],_mm256_xor_si256(c2[4981],_mm256_xor_si256(c2[1943],_mm256_xor_si256(c2[4501],_mm256_xor_si256(c2[1463],_mm256_xor_si256(c2[20],_mm256_xor_si256(c2[2898],_mm256_xor_si256(c2[4979],_mm256_xor_si256(c2[3552],_mm256_xor_si256(c2[514],_mm256_xor_si256(c2[2917],_mm256_xor_si256(c2[676],_mm256_xor_si256(c2[2757],_mm256_xor_si256(c2[32],_mm256_xor_si256(c2[691],_mm256_xor_si256(c2[2772],_mm256_xor_si256(c2[2615],_mm256_xor_si256(c2[4688],_mm256_xor_si256(c2[3571],_mm256_xor_si256(c2[533],_mm256_xor_si256(c2[1186],_mm256_xor_si256(c2[3267],_mm256_xor_si256(c2[4867],_mm256_xor_si256(c2[1829],_mm256_xor_si256(c2[3584],_mm256_xor_si256(c2[1351],_mm256_xor_si256(c2[3424],_mm256_xor_si256(c2[1206],_mm256_xor_si256(c2[3287],_mm256_xor_si256(c2[87],_mm256_xor_si256(c2[2965],_mm256_xor_si256(c2[5046],_mm256_xor_si256(c2[1216],_mm256_xor_si256(c2[3297],_mm256_xor_si256(c2[2017],_mm256_xor_si256(c2[4098],_mm256_xor_si256(c2[1538],_mm256_xor_si256(c2[4416],_mm256_xor_si256(c2[1378],_mm256_xor_si256(c2[1079],_mm256_xor_si256(c2[3152],_mm256_xor_si256(c2[2357],_mm256_xor_si256(c2[116],_mm256_xor_si256(c2[2197],_mm256_xor_si256(c2[1729],_mm256_xor_si256(c2[3810],_mm256_xor_si256(c2[4289],_mm256_xor_si256(c2[1251],_mm256_xor_si256(c2[1732],_mm256_xor_si256(c2[4610],_mm256_xor_si256(c2[1572],_mm256_xor_si256(c2[3824],_mm256_xor_si256(c2[786],_mm256_xor_si256(c2[1106],_mm256_xor_si256(c2[3187],_mm256_xor_si256(c2[3991],_mm256_xor_si256(c2[1750],c2[3831]))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

//row: 41
     d2[328]=_mm256_xor_si256(c2[4963],_mm256_xor_si256(c2[4803],_mm256_xor_si256(c2[4480],_mm256_xor_si256(c2[966],_mm256_xor_si256(c2[1783],_mm256_xor_si256(c2[1623],_mm256_xor_si256(c2[1143],_mm256_xor_si256(c2[4659],_mm256_xor_si256(c2[180],_mm256_xor_si256(c2[354],_mm256_xor_si256(c2[194],_mm256_xor_si256(c2[2437],_mm256_xor_si256(c2[2612],_mm256_xor_si256(c2[2452],_mm256_xor_si256(c2[4368],_mm256_xor_si256(c2[213],_mm256_xor_si256(c2[2947],_mm256_xor_si256(c2[1509],_mm256_xor_si256(c2[3104],_mm256_xor_si256(c2[2967],_mm256_xor_si256(c2[4726],_mm256_xor_si256(c2[887],_mm256_xor_si256(c2[3137],_mm256_xor_si256(c2[2977],_mm256_xor_si256(c2[3778],_mm256_xor_si256(c2[1058],_mm256_xor_si256(c2[2832],_mm256_xor_si256(c2[1877],_mm256_xor_si256(c2[3490],_mm256_xor_si256(c2[931],_mm256_xor_si256(c2[1252],_mm256_xor_si256(c2[626],_mm256_xor_si256(c2[466],_mm256_xor_si256(c2[2867],c2[3511]))))))))))))))))))))))))))))))))));
  }
}