#pragma once // SHA-256 constants. __device__ __constant__ uint32_t k[64] = { 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2}; // AES S-box. __device__ __constant__ uint8_t sbox[256] = { 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16}; // Round constant word array. __device__ __constant__ uint32_t Rcon[7] = { 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, 0x20000000, 0x40000000}; //--------------------------------------------------------------------------- // Constant tables (ported from kcipher2-tables.h) //--------------------------------------------------------------------------- __device__ __constant__ unsigned char d_s_box[256] = { 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 }; // Note: The following multiplication tables are copied from kcipher2-tables.h. __device__ __constant__ unsigned int d_amul0[256] = { 0x00000000,0xB6086D1A,0xAF10DA34,0x1918B72E, 0x9D207768,0x2B281A72,0x3230AD5C,0x8438C046, 0xF940EED0,0x4F4883CA,0x565034E4,0xE05859FE, 0x646099B8,0xD268F4A2,0xCB70438C,0x7D782E96, 0x31801F63,0x87887279,0x9E90C557,0x2898A84D, 0xACA0680B,0x1AA80511,0x03B0B23F,0xB5B8DF25, 0xC8C0F1B3,0x7EC89CA9,0x67D02B87,0xD1D8469D, 0x55E086DB,0xE3E8EBC1,0xFAF05CEF,0x4CF831F5, 0x62C33EC6,0xD4CB53DC,0xCDD3E4F2,0x7BDB89E8, 0xFFE349AE,0x49EB24B4,0x50F3939A,0xE6FBFE80, 0x9B83D016,0x2D8BBD0C,0x34930A22,0x829B6738, 0x06A3A77E,0xB0ABCA64,0xA9B37D4A,0x1FBB1050, 0x534321A5,0xE54B4CBF,0xFC53FB91,0x4A5B968B, 0xCE6356CD,0x786B3BD7,0x61738CF9,0xD77BE1E3, 0xAA03CF75,0x1C0BA26F,0x05131541,0xB31B785B, 0x3723B81D,0x812BD507,0x98336229,0x2E3B0F33, 0xC4457C4F,0x724D1155,0x6B55A67B,0xDD5DCB61, 0x59650B27,0xEF6D663D,0xF675D113,0x407DBC09, 0x3D05929F,0x8B0DFF85,0x921548AB,0x241D25B1, 0xA025E5F7,0x162D88ED,0x0F353FC3,0xB93D52D9, 0xF5C5632C,0x43CD0E36,0x5AD5B918,0xECDDD402, 0x68E51444,0xDEED795E,0xC7F5CE70,0x71FDA36A, 0x0C858DFC,0xBA8DE0E6,0xA39557C8,0x159D3AD2, 0x91A5FA94,0x27AD978E,0x3EB520A0,0x88BD4DBA, 0xA6864289,0x108E2F93,0x099698BD,0xBF9EF5A7, 0x3BA635E1,0x8DAE58FB,0x94B6EFD5,0x22BE82CF, 0x5FC6AC59,0xE9CEC143,0xF0D6766D,0x46DE1B77, 0xC2E6DB31,0x74EEB62B,0x6DF60105,0xDBFE6C1F, 0x97065DEA,0x210E30F0,0x381687DE,0x8E1EEAC4, 0x0A262A82,0xBC2E4798,0xA536F0B6,0x133E9DAC, 0x6E46B33A,0xD84EDE20,0xC156690E,0x775E0414, 0xF366C452,0x456EA948,0x5C761E66,0xEA7E737C, 0x4B8AF89E,0xFD829584,0xE49A22AA,0x52924FB0, 0xD6AA8FF6,0x60A2E2EC,0x79BA55C2,0xCFB238D8, 0xB2CA164E,0x04C27B54,0x1DDACC7A,0xABD2A160, 0x2FEA6126,0x99E20C3C,0x80FABB12,0x36F2D608, 0x7A0AE7FD,0xCC028AE7,0xD51A3DC9,0x631250D3, 0xE72A9095,0x5122FD8F,0x483A4AA1,0xFE3227BB, 0x834A092D,0x35426437,0x2C5AD319,0x9A52BE03, 0x1E6A7E45,0xA862135F,0xB17AA471,0x0772C96B, 0x2949C658,0x9F41AB42,0x86591C6C,0x30517176, 0xB469B130,0x0261DC2A,0x1B796B04,0xAD71061E, 0xD0092888,0x66014592,0x7F19F2BC,0xC9119FA6, 0x4D295FE0,0xFB2132FA,0xE23985D4,0x5431E8CE, 0x18C9D93B,0xAEC1B421,0xB7D9030F,0x01D16E15, 0x85E9AE53,0x33E1C349,0x2AF97467,0x9CF1197D, 0xE18937EB,0x57815AF1,0x4E99EDDF,0xF89180C5, 0x7CA94083,0xCAA12D99,0xD3B99AB7,0x65B1F7AD, 0x8FCF84D1,0x39C7E9CB,0x20DF5EE5,0x96D733FF, 0x12EFF3B9,0xA4E79EA3,0xBDFF298D,0x0BF74497, 0x768F6A01,0xC087071B,0xD99FB035,0x6F97DD2F, 0xEBAF1D69,0x5DA77073,0x44BFC75D,0xF2B7AA47, 0xBE4F9BB2,0x0847F6A8,0x115F4186,0xA7572C9C, 0x236FECDA,0x956781C0,0x8C7F36EE,0x3A775BF4, 0x470F7562,0xF1071878,0xE81FAF56,0x5E17C24C, 0xDA2F020A,0x6C276F10,0x753FD83E,0xC337B524, 0xED0CBA17,0x5B04D70D,0x421C6023,0xF4140D39, 0x702CCD7F,0xC624A065,0xDF3C174B,0x69347A51, 0x144C54C7,0xA24439DD,0xBB5C8EF3,0x0D54E3E9, 0x896C23AF,0x3F644EB5,0x267CF99B,0x90749481, 0xDC8CA574,0x6A84C86E,0x739C7F40,0xC594125A, 0x41ACD21C,0xF7A4BF06,0xEEBC0828,0x58B46532, 0x25CC4BA4,0x93C426BE,0x8ADC9190,0x3CD4FC8A, 0xB8EC3CCC,0x0EE451D6,0x17FCE6F8,0xA1F48BE2 }; __device__ __constant__ unsigned int d_amul1[256] = { 0x00000000,0xA0F5FC2E,0x6DC7D55C,0xCD322972, 0xDAA387B8,0x7A567B96,0xB76452E4,0x1791AECA, 0x996B235D,0x399EDF73,0xF4ACF601,0x54590A2F, 0x43C8A4E5,0xE33D58CB,0x2E0F71B9,0x8EFA8D97, 0x1FD646BA,0xBF23BA94,0x721193E6,0xD2E46FC8, 0xC575C102,0x65803D2C,0xA8B2145E,0x0847E870, 0x86BD65E7,0x264899C9,0xEB7AB0BB,0x4B8F4C95, 0x5C1EE25F,0xFCEB1E71,0x31D93703,0x912CCB2D, 0x3E818C59,0x9E747077,0x53465905,0xF3B3A52B, 0xE4220BE1,0x44D7F7CF,0x89E5DEBD,0x29102293, 0xA7EAAF04,0x071F532A,0xCA2D7A58,0x6AD88676, 0x7D4928BC,0xDDBCD492,0x108EFDE0,0xB07B01CE, 0x2157CAE3,0x81A236CD,0x4C901FBF,0xEC65E391, 0xFBF44D5B,0x5B01B175,0x96339807,0x36C66429, 0xB83CE9BE,0x18C91590,0xD5FB3CE2,0x750EC0CC, 0x629F6E06,0xC26A9228,0x0F58BB5A,0xAFAD4774, 0x7C2F35B2,0xDCDAC99C,0x11E8E0EE,0xB11D1CC0, 0xA68CB20A,0x06794E24,0xCB4B6756,0x6BBE9B78, 0xE54416EF,0x45B1EAC1,0x8883C3B3,0x28763F9D, 0x3FE79157,0x9F126D79,0x5220440B,0xF2D5B825, 0x63F97308,0xC30C8F26,0x0E3EA654,0xAECB5A7A, 0xB95AF4B0,0x19AF089E,0xD49D21EC,0x7468DDC2, 0xFA925055,0x5A67AC7B,0x97558509,0x37A07927, 0x2031D7ED,0x80C42BC3,0x4DF602B1,0xED03FE9F, 0x42AEB9EB,0xE25B45C5,0x2F696CB7,0x8F9C9099, 0x980D3E53,0x38F8C27D,0xF5CAEB0F,0x553F1721, 0xDBC59AB6,0x7B306698,0xB6024FEA,0x16F7B3C4, 0x01661D0E,0xA193E120,0x6CA1C852,0xCC54347C, 0x5D78FF51,0xFD8D037F,0x30BF2A0D,0x904AD623, 0x87DB78E9,0x272E84C7,0xEA1CADB5,0x4AE9519B, 0xC413DC0C,0x64E62022,0xA9D40950,0x0921F57E, 0x1EB05BB4,0xBE45A79A,0x73778EE8,0xD38272C6, 0xF85E6A49,0x58AB9667,0x9599BF15,0x356C433B, 0x22FDEDF1,0x820811DF,0x4F3A38AD,0xEFCFC483, 0x61354914,0xC1C0B53A,0x0CF29C48,0xAC076066, 0xBB96CEAC,0x1B633282,0xD6511BF0,0x76A4E7DE, 0xE7882CF3,0x477DD0DD,0x8A4FF9AF,0x2ABA0581, 0x3D2BAB4B,0x9DDE5765,0x50EC7E17,0xF0198239, 0x7EE30FAE,0xDE16F380,0x1324DAF2,0xB3D126DC, 0xA4408816,0x04B57438,0xC9875D4A,0x6972A164, 0xC6DFE610,0x662A1A3E,0xAB18334C,0x0BEDCF62, 0x1C7C61A8,0xBC899D86,0x71BBB4F4,0xD14E48DA, 0x5FB4C54D,0xFF413963,0x32731011,0x9286EC3F, 0x851742F5,0x25E2BEDB,0xE8D097A9,0x48256B87, 0xD909A0AA,0x79FC5C84,0xB4CE75F6,0x143B89D8, 0x03AA2712,0xA35FDB3C,0x6E6DF24E,0xCE980E60, 0x406283F7,0xE0977FD9,0x2DA556AB,0x8D50AA85, 0x9AC1044F,0x3A34F861,0xF706D113,0x57F32D3D, 0x84715FFB,0x2484A3D5,0xE9B68AA7,0x49437689, 0x5ED2D843,0xFE27246D,0x33150D1F,0x93E0F131, 0x1D1A7CA6,0xBDEF8088,0x70DDA9FA,0xD02855D4, 0xC7B9FB1E,0x674C0730,0xAA7E2E42,0x0A8BD26C, 0x9BA71941,0x3B52E56F,0xF660CC1D,0x56953033, 0x41049EF9,0xE1F162D7,0x2CC34BA5,0x8C36B78B, 0x02CC3A1C,0xA239C632,0x6F0BEF40,0xCFFE136E, 0xD86FBDA4,0x789A418A,0xB5A868F8,0x155D94D6, 0xBAF0D3A2,0x1A052F8C,0xD73706FE,0x77C2FAD0, 0x6053541A,0xC0A6A834,0x0D948146,0xAD617D68, 0x239BF0FF,0x836E0CD1,0x4E5C25A3,0xEEA9D98D, 0xF9387747,0x59CD8B69,0x94FFA21B,0x340A5E35, 0xA5269518,0x05D36936,0xC8E14044,0x6814BC6A, 0x7F8512A0,0xDF70EE8E,0x1242C7FC,0xB2B73BD2, 0x3C4DB645,0x9CB84A6B,0x518A6319,0xF17F9F37, 0xE6EE31FD,0x461BCDD3,0x8B29E4A1,0x2BDC188F }; __device__ __constant__ unsigned int d_amul2[256] = { 0x00000000,0x5BF87F93,0xB6BDFE6B,0xED4581F8, 0x2137B1D6,0x7ACFCE45,0x978A4FBD,0xCC72302E, 0x426E2FE1,0x19965072,0xF4D3D18A,0xAF2BAE19, 0x63599E37,0x38A1E1A4,0xD5E4605C,0x8E1C1FCF, 0x84DC5E8F,0xDF24211C,0x3261A0E4,0x6999DF77, 0xA5EBEF59,0xFE1390CA,0x13561132,0x48AE6EA1, 0xC6B2716E,0x9D4A0EFD,0x700F8F05,0x2BF7F096, 0xE785C0B8,0xBC7DBF2B,0x51383ED3,0x0AC04140, 0x45F5BC53,0x1E0DC3C0,0xF3484238,0xA8B03DAB, 0x64C20D85,0x3F3A7216,0xD27FF3EE,0x89878C7D, 0x079B93B2,0x5C63EC21,0xB1266DD9,0xEADE124A, 0x26AC2264,0x7D545DF7,0x9011DC0F,0xCBE9A39C, 0xC129E2DC,0x9AD19D4F,0x77941CB7,0x2C6C6324, 0xE01E530A,0xBBE62C99,0x56A3AD61,0x0D5BD2F2, 0x8347CD3D,0xD8BFB2AE,0x35FA3356,0x6E024CC5, 0xA2707CEB,0xF9880378,0x14CD8280,0x4F35FD13, 0x8AA735A6,0xD15F4A35,0x3C1ACBCD,0x67E2B45E, 0xAB908470,0xF068FBE3,0x1D2D7A1B,0x46D50588, 0xC8C91A47,0x933165D4,0x7E74E42C,0x258C9BBF, 0xE9FEAB91,0xB206D402,0x5F4355FA,0x04BB2A69, 0x0E7B6B29,0x558314BA,0xB8C69542,0xE33EEAD1, 0x2F4CDAFF,0x74B4A56C,0x99F12494,0xC2095B07, 0x4C1544C8,0x17ED3B5B,0xFAA8BAA3,0xA150C530, 0x6D22F51E,0x36DA8A8D,0xDB9F0B75,0x806774E6, 0xCF5289F5,0x94AAF666,0x79EF779E,0x2217080D, 0xEE653823,0xB59D47B0,0x58D8C648,0x0320B9DB, 0x8D3CA614,0xD6C4D987,0x3B81587F,0x607927EC, 0xAC0B17C2,0xF7F36851,0x1AB6E9A9,0x414E963A, 0x4B8ED77A,0x1076A8E9,0xFD332911,0xA6CB5682, 0x6AB966AC,0x3141193F,0xDC0498C7,0x87FCE754, 0x09E0F89B,0x52188708,0xBF5D06F0,0xE4A57963, 0x28D7494D,0x732F36DE,0x9E6AB726,0xC592C8B5, 0x59036A01,0x02FB1592,0xEFBE946A,0xB446EBF9, 0x7834DBD7,0x23CCA444,0xCE8925BC,0x95715A2F, 0x1B6D45E0,0x40953A73,0xADD0BB8B,0xF628C418, 0x3A5AF436,0x61A28BA5,0x8CE70A5D,0xD71F75CE, 0xDDDF348E,0x86274B1D,0x6B62CAE5,0x309AB576, 0xFCE88558,0xA710FACB,0x4A557B33,0x11AD04A0, 0x9FB11B6F,0xC44964FC,0x290CE504,0x72F49A97, 0xBE86AAB9,0xE57ED52A,0x083B54D2,0x53C32B41, 0x1CF6D652,0x470EA9C1,0xAA4B2839,0xF1B357AA, 0x3DC16784,0x66391817,0x8B7C99EF,0xD084E67C, 0x5E98F9B3,0x05608620,0xE82507D8,0xB3DD784B, 0x7FAF4865,0x245737F6,0xC912B60E,0x92EAC99D, 0x982A88DD,0xC3D2F74E,0x2E9776B6,0x756F0925, 0xB91D390B,0xE2E54698,0x0FA0C760,0x5458B8F3, 0xDA44A73C,0x81BCD8AF,0x6CF95957,0x370126C4, 0xFB7316EA,0xA08B6979,0x4DCEE881,0x16369712, 0xD3A45FA7,0x885C2034,0x6519A1CC,0x3EE1DE5F, 0xF293EE71,0xA96B91E2,0x442E101A,0x1FD66F89, 0x91CA7046,0xCA320FD5,0x27778E2D,0x7C8FF1BE, 0xB0FDC190,0xEB05BE03,0x06403FFB,0x5DB84068, 0x57780128,0x0C807EBB,0xE1C5FF43,0xBA3D80D0, 0x764FB0FE,0x2DB7CF6D,0xC0F24E95,0x9B0A3106, 0x15162EC9,0x4EEE515A,0xA3ABD0A2,0xF853AF31, 0x34219F1F,0x6FD9E08C,0x829C6174,0xD9641EE7, 0x9651E3F4,0xCDA99C67,0x20EC1D9F,0x7B14620C, 0xB7665222,0xEC9E2DB1,0x01DBAC49,0x5A23D3DA, 0xD43FCC15,0x8FC7B386,0x6282327E,0x397A4DED, 0xF5087DC3,0xAEF00250,0x43B583A8,0x184DFC3B, 0x128DBD7B,0x4975C2E8,0xA4304310,0xFFC83C83, 0x33BA0CAD,0x6842733E,0x8507F2C6,0xDEFF8D55, 0x50E3929A,0x0B1BED09,0xE65E6CF1,0xBDA61362, 0x71D4234C,0x2A2C5CDF,0xC769DD27,0x9C91A2B4 }; __device__ __constant__ unsigned int d_amul3[256] = { 0x00000000,0x4559568B,0x8AB2AC73,0xCFEBFAF8, 0x71013DE6,0x34586B6D,0xFBB39195,0xBEEAC71E, 0xE2027AA9,0xA75B2C22,0x68B0D6DA,0x2DE98051, 0x9303474F,0xD65A11C4,0x19B1EB3C,0x5CE8BDB7, 0xA104F437,0xE45DA2BC,0x2BB65844,0x6EEF0ECF, 0xD005C9D1,0x955C9F5A,0x5AB765A2,0x1FEE3329, 0x43068E9E,0x065FD815,0xC9B422ED,0x8CED7466, 0x3207B378,0x775EE5F3,0xB8B51F0B,0xFDEC4980, 0x27088D6E,0x6251DBE5,0xADBA211D,0xE8E37796, 0x5609B088,0x1350E603,0xDCBB1CFB,0x99E24A70, 0xC50AF7C7,0x8053A14C,0x4FB85BB4,0x0AE10D3F, 0xB40BCA21,0xF1529CAA,0x3EB96652,0x7BE030D9, 0x860C7959,0xC3552FD2,0x0CBED52A,0x49E783A1, 0xF70D44BF,0xB2541234,0x7DBFE8CC,0x38E6BE47, 0x640E03F0,0x2157557B,0xEEBCAF83,0xABE5F908, 0x150F3E16,0x5056689D,0x9FBD9265,0xDAE4C4EE, 0x4E107FDC,0x0B492957,0xC4A2D3AF,0x81FB8524, 0x3F11423A,0x7A4814B1,0xB5A3EE49,0xF0FAB8C2, 0xAC120575,0xE94B53FE,0x26A0A906,0x63F9FF8D, 0xDD133893,0x984A6E18,0x57A194E0,0x12F8C26B, 0xEF148BEB,0xAA4DDD60,0x65A62798,0x20FF7113, 0x9E15B60D,0xDB4CE086,0x14A71A7E,0x51FE4CF5, 0x0D16F142,0x484FA7C9,0x87A45D31,0xC2FD0BBA, 0x7C17CCA4,0x394E9A2F,0xF6A560D7,0xB3FC365C, 0x6918F2B2,0x2C41A439,0xE3AA5EC1,0xA6F3084A, 0x1819CF54,0x5D4099DF,0x92AB6327,0xD7F235AC, 0x8B1A881B,0xCE43DE90,0x01A82468,0x44F172E3, 0xFA1BB5FD,0xBF42E376,0x70A9198E,0x35F04F05, 0xC81C0685,0x8D45500E,0x42AEAAF6,0x07F7FC7D, 0xB91D3B63,0xFC446DE8,0x33AF9710,0x76F6C19B, 0x2A1E7C2C,0x6F472AA7,0xA0ACD05F,0xE5F586D4, 0x5B1F41CA,0x1E461741,0xD1ADEDB9,0x94F4BB32, 0x9C20FEDD,0xD979A856,0x169252AE,0x53CB0425, 0xED21C33B,0xA87895B0,0x67936F48,0x22CA39C3, 0x7E228474,0x3B7BD2FF,0xF4902807,0xB1C97E8C, 0x0F23B992,0x4A7AEF19,0x859115E1,0xC0C8436A, 0x3D240AEA,0x787D5C61,0xB796A699,0xF2CFF012, 0x4C25370C,0x097C6187,0xC6979B7F,0x83CECDF4, 0xDF267043,0x9A7F26C8,0x5594DC30,0x10CD8ABB, 0xAE274DA5,0xEB7E1B2E,0x2495E1D6,0x61CCB75D, 0xBB2873B3,0xFE712538,0x319ADFC0,0x74C3894B, 0xCA294E55,0x8F7018DE,0x409BE226,0x05C2B4AD, 0x592A091A,0x1C735F91,0xD398A569,0x96C1F3E2, 0x282B34FC,0x6D726277,0xA299988F,0xE7C0CE04, 0x1A2C8784,0x5F75D10F,0x909E2BF7,0xD5C77D7C, 0x6B2DBA62,0x2E74ECE9,0xE19F1611,0xA4C6409A, 0xF82EFD2D,0xBD77ABA6,0x729C515E,0x37C507D5, 0x892FC0CB,0xCC769640,0x039D6CB8,0x46C43A33, 0xD2308101,0x9769D78A,0x58822D72,0x1DDB7BF9, 0xA331BCE7,0xE668EA6C,0x29831094,0x6CDA461F, 0x3032FBA8,0x756BAD23,0xBA8057DB,0xFFD90150, 0x4133C64E,0x046A90C5,0xCB816A3D,0x8ED83CB6, 0x73347536,0x366D23BD,0xF986D945,0xBCDF8FCE, 0x023548D0,0x476C1E5B,0x8887E4A3,0xCDDEB228, 0x91360F9F,0xD46F5914,0x1B84A3EC,0x5EDDF567, 0xE0373279,0xA56E64F2,0x6A859E0A,0x2FDCC881, 0xF5380C6F,0xB0615AE4,0x7F8AA01C,0x3AD3F697, 0x84393189,0xC1606702,0x0E8B9DFA,0x4BD2CB71, 0x173A76C6,0x5263204D,0x9D88DAB5,0xD8D18C3E, 0x663B4B20,0x23621DAB,0xEC89E753,0xA9D0B1D8, 0x543CF858,0x1165AED3,0xDE8E542B,0x9BD702A0, 0x253DC5BE,0x60649335,0xAF8F69CD,0xEAD63F46, 0xB63E82F1,0xF367D47A,0x3C8C2E82,0x79D57809, 0xC73FBF17,0x8266E99C,0x4D8D1364,0x08D445EF }; __device__ __constant__ unsigned char gf2_table[256] = { 0xFF,0xFD,0xFB,0xF9,0xF7,0xF5,0xF3,0xF1,0xEF,0xED,0xEB,0xE9,0xE7,0xE5,0xE3,0xE1, 0xDF,0xDD,0xDB,0xD9,0xD7,0xD5,0xD3,0xD1,0xCF,0xCD,0xCB,0xC9,0xC7,0xC5,0xC3,0xC1, 0xBF,0xBD,0xBB,0xB9,0xB7,0xB5,0xB3,0xB1,0xAF,0xAD,0xAB,0xA9,0xA7,0xA5,0xA3,0xA1, 0x9F,0x9D,0x9B,0x99,0x97,0x95,0x93,0x91,0x8F,0x8D,0x8B,0x89,0x87,0x85,0x83,0x81, 0x7F,0x7D,0x7B,0x79,0x77,0x75,0x73,0x71,0x6F,0x6D,0x6B,0x69,0x67,0x65,0x63,0x61, 0x5F,0x5D,0x5B,0x59,0x57,0x55,0x53,0x51,0x4F,0x4D,0x4B,0x49,0x47,0x45,0x43,0x41, 0x3F,0x3D,0x3B,0x39,0x37,0x35,0x33,0x31,0x2F,0x2D,0x2B,0x29,0x27,0x25,0x23,0x21, 0x1F,0x1D,0x1B,0x19,0x17,0x15,0x13,0x11,0x0F,0x0D,0x0B,0x09,0x07,0x05,0x03,0x01, 0xE4,0xE6,0xE0,0xE2,0xEC,0xEE,0xE8,0xEA,0xF4,0xF6,0xF0,0xF2,0xFC,0xFE,0xF8,0xFA, 0xC4,0xC6,0xC0,0xC2,0xCC,0xCE,0xC8,0xCA,0xD4,0xD6,0xD0,0xD2,0xDC,0xDE,0xD8,0xDA, 0xA4,0xA6,0xA0,0xA2,0xAC,0xAE,0xA8,0xAA,0xB4,0xB6,0xB0,0xB2,0xBC,0xBE,0xB8,0xBA, 0x84,0x86,0x80,0x82,0x8C,0x8E,0x88,0x8A,0x94,0x96,0x90,0x92,0x9C,0x9E,0x98,0x9A, 0x64,0x66,0x60,0x62,0x6C,0x6E,0x68,0x6A,0x74,0x76,0x70,0x72,0x7C,0x7E,0x78,0x7A, 0x44,0x46,0x40,0x42,0x4C,0x4E,0x48,0x4A,0x54,0x56,0x50,0x52,0x5C,0x5E,0x58,0x5A, 0x24,0x26,0x20,0x22,0x2C,0x2E,0x28,0x2A,0x34,0x36,0x30,0x32,0x3C,0x3E,0x38,0x3A, 0x04,0x06,0x00,0x02,0x0C,0x0E,0x08,0x0A,0x14,0x16,0x10,0x12,0x1C,0x1E,0x18,0x1A }; __device__ __constant__ unsigned char gf3_table[256] = { 0xFF,0xFC,0xF9,0xFA,0xF3,0xF0,0xF5,0xF6,0xE7,0xE4,0xE1,0xE2,0xEB,0xE8,0xED,0xEE, 0xCF,0xCC,0xC9,0xCA,0xC3,0xC0,0xC5,0xC6,0xD7,0xD4,0xD1,0xD2,0xDB,0xD8,0xDD,0xDE, 0x9F,0x9C,0x99,0x9A,0x93,0x90,0x95,0x96,0x87,0x84,0x81,0x82,0x8B,0x88,0x8D,0x8E, 0xAF,0xAC,0xA9,0xAA,0xA3,0xA0,0xA5,0xA6,0xB7,0xB4,0xB1,0xB2,0xBB,0xB8,0xBD,0xBE, 0x3F,0x3C,0x39,0x3A,0x33,0x30,0x35,0x36,0x27,0x24,0x21,0x22,0x2B,0x28,0x2D,0x2E, 0x0F,0x0C,0x09,0x0A,0x03,0x00,0x05,0x06,0x17,0x14,0x11,0x12,0x1B,0x18,0x1D,0x1E, 0x5F,0x5C,0x59,0x5A,0x53,0x50,0x55,0x56,0x47,0x44,0x41,0x42,0x4B,0x48,0x4D,0x4E, 0x6F,0x6C,0x69,0x6A,0x63,0x60,0x65,0x66,0x77,0x74,0x71,0x72,0x7B,0x78,0x7D,0x7E, 0x64,0x67,0x62,0x61,0x68,0x6B,0x6E,0x6D,0x7C,0x7F,0x7A,0x79,0x70,0x73,0x76,0x75, 0x54,0x57,0x52,0x51,0x58,0x5B,0x5E,0x5D,0x4C,0x4F,0x4A,0x49,0x40,0x43,0x46,0x45, 0x04,0x07,0x02,0x01,0x08,0x0B,0x0E,0x0D,0x1C,0x1F,0x1A,0x19,0x10,0x13,0x16,0x15, 0x34,0x37,0x32,0x31,0x38,0x3B,0x3E,0x3D,0x2C,0x2F,0x2A,0x29,0x20,0x23,0x26,0x25, 0xA4,0xA7,0xA2,0xA1,0xA8,0xAB,0xAE,0xAD,0xBC,0xBF,0xBA,0xB9,0xB0,0xB3,0xB6,0xB5, 0x94,0x97,0x92,0x91,0x98,0x9B,0x9E,0x9D,0x8C,0x8F,0x8A,0x89,0x80,0x83,0x86,0x85, 0xC4,0xC7,0xC2,0xC1,0xC8,0xCB,0xCE,0xCD,0xDC,0xDF,0xDA,0xD9,0xD0,0xD3,0xD6,0xD5, 0xF4,0xF7,0xF2,0xF1,0xF8,0xFB,0xFE,0xFD,0xEC,0xEF,0xEA,0xE9,0xE0,0xE3,0xE6,0xE5 };