/* The generator matrix of the linear code used in Hamsi-256 is given below. Note that the construction method of the code is given in the specification of Hamsi. Here we give the matrix that can be used to generate expanded message words by matrix multiplication which is suitable for bitsliced implementations. */ static const uint32_t gen[32][8] = { {0x74951000, 0x5a2b467e, 0x88fd1d2b, 0x1ee68292, 0xcba90000, 0x90273769, 0xbbdcf407, 0xd0f4af61}, {0xcba90000, 0x90273769, 0xbbdcf407, 0xd0f4af61, 0xbf3c1000, 0xca0c7117, 0x3321e92c, 0xce122df3}, {0xe92a2000, 0xb4578cfc, 0x11fa3a57, 0x3dc90524, 0x97530000, 0x204f6ed3, 0x77b9e80f, 0xa1ec5ec1}, {0x97530000, 0x204f6ed3, 0x77b9e80f, 0xa1ec5ec1, 0x7e792000, 0x9418e22f, 0x6643d258, 0x9c255be5}, {0x121b4000, 0x5b17d9e8, 0x8dfacfab, 0xce36cc72, 0xe6570000, 0x4bb33a25, 0x848598ba, 0x1041003e}, {0xe6570000, 0x4bb33a25, 0x848598ba, 0x1041003e, 0xf44c4000, 0x10a4e3cd, 0x97f5711, 0xde77cc4c}, {0xe4788000, 0x859673c1, 0xb5fb2452, 0x29cc5edf, 0x45f0000, 0x9c4a93c9, 0x62fc79d0, 0x731ebdc2}, {0x45f0000, 0x9c4a93c9, 0x62fc79d0, 0x731ebdc2, 0xe0278000, 0x19dce008, 0xd7075d82, 0x5ad2e31d}, {0xb7a40100, 0x8a1f31d8, 0x8589d8ab, 0xe6c46464, 0x734c0000, 0x956fa7d6, 0xa29d1297, 0x6ee56854}, {0x734c0000, 0x956fa7d6, 0xa29d1297, 0x6ee56854, 0xc4e80100, 0x1f70960e, 0x2714ca3c, 0x88210c30}, {0xa7b80200, 0x1f128433, 0x60e5f9f2, 0x9e147576, 0xee260000, 0x124b683e, 0x80c2d68f, 0x3bf3ab2c}, {0xee260000, 0x124b683e, 0x80c2d68f, 0x3bf3ab2c, 0x499e0200, 0xd59ec0d, 0xe0272f7d, 0xa5e7de5a}, {0x8f3e0400, 0xd9dc877, 0x6fc548e1, 0x898d2cd6, 0x14bd0000, 0x2fba37ff, 0x6a72e5bb, 0x247febe6}, {0x14bd0000, 0x2fba37ff, 0x6a72e5bb, 0x247febe6, 0x9b830400, 0x2227ff88, 0x5b7ad5a, 0xadf2c730}, {0xde320800, 0x288350fe, 0x71852ac7, 0xa6bf9f96, 0xe18b0000, 0x5459887d, 0xbf1283d3, 0x1b666a73}, {0xe18b0000, 0x5459887d, 0xbf1283d3, 0x1b666a73, 0x3fb90800, 0x7cdad883, 0xce97a914, 0xbdd9f5e5}, {0x515c0010, 0x40f372fb, 0xfce72602, 0x71575061, 0x2e390000, 0x64dd6689, 0x3cd406fc, 0xb1f490bc}, {0x2e390000, 0x64dd6689, 0x3cd406fc, 0xb1f490bc, 0x7f650010, 0x242e1472, 0xc03320fe, 0xc0a3c0dd}, {0xa2b80020, 0x81e7e5f6, 0xf9ce4c04, 0xe2afa0c0, 0x5c720000, 0xc9bacd12, 0x79a90df9, 0x63e92178}, {0x5c720000, 0xc9bacd12, 0x79a90df9, 0x63e92178, 0xfeca0020, 0x485d28e4, 0x806741fd, 0x814681b8}, {0x4dce0040, 0x3b5bec7e, 0x36656ba8, 0x23633a05, 0x78ab0000, 0xa0cd5a34, 0x5d5ca0f7, 0x727784cb}, {0x78ab0000, 0xa0cd5a34, 0x5d5ca0f7, 0x727784cb, 0x35650040, 0x9b96b64a, 0x6b39cb5f, 0x5114bece}, {0x5bd20080, 0x450f18ec, 0xc2c46c55, 0xf362b233, 0x39a60000, 0x4ab753eb, 0xd14e094b, 0xb772b42b}, {0x39a60000, 0x4ab753eb, 0xd14e094b, 0xb772b42b, 0x62740080, 0xfb84b07, 0x138a651e, 0x44100618}, {0xc04e0001, 0x33b9c010, 0xae0ebb05, 0xb5a4c63b, 0xc8f10000, 0xb2de782, 0x6bf648a4, 0x539cbdbf}, {0xc8f10000, 0xb2de782, 0x6bf648a4, 0x539cbdbf, 0x8bf0001, 0x38942792, 0xc5f8f3a1, 0xe6387b84}, {0x88230002, 0x5fe7a7b3, 0x99e585aa, 0x8d75f7f1, 0x51ac0000, 0x25e30f14, 0x79e22a4c, 0x1298bd46}, {0x51ac0000, 0x25e30f14, 0x79e22a4c, 0x1298bd46, 0xd98f0002, 0x7a04a8a7, 0xe007afe6, 0x9fed4ab7}, {0xd0080004, 0x8c768f77, 0x9dc5b050, 0xaf4a29da, 0x6ba90000, 0x40ebf9aa, 0x98321c3d, 0x76acc733}, {0x6ba90000, 0x40ebf9aa, 0x98321c3d, 0x76acc733, 0xbba10004, 0xcc9d76dd, 0x5f7ac6d, 0xd9e6eee9}, {0xa8ae0008, 0x2079397d, 0xfe739301, 0xb8a92831, 0x171c0000, 0xb26e3344, 0x9e6a837e, 0x58f8485f}, {0x171c0000, 0xb26e3344, 0x9e6a837e, 0x58f8485f, 0xbfb20008, 0x92170a39, 0x6019107f, 0xe051606e} };