├── Implementations ├── ACISP_SarSye17_8x8_4.txt ├── AES.txt ├── Anubis.txt ├── C_BeiKraLea16_4x4_4.txt ├── C_BeiKraLea16_4x4_8.txt ├── Clefia_M0.txt ├── Clefia_M1.txt ├── FSE_LiWang16_4x4_4.txt ├── FSE_LiWang16_4x4_8.txt ├── FSE_LiWang16_i_4x4_4.txt ├── FSE_LiWang16_i_4x4_8.txt ├── FSE_LimSim16_4x4_4.txt ├── FSE_LiuSim16_4x4_8.txt ├── FSE_SKOP15_4x4_4.txt ├── FSE_SKOP15_4x4_8.txt ├── FSE_SKOP15_888_i.txt ├── FSE_SKOP15_8x8_4.txt ├── FSE_SKOP15_i_4x4_4.txt ├── FSE_SKOP15_i_4x4_8.txt ├── FSE_SKOP15_i_8x8_4.txt ├── Fox_Mu4.txt ├── Joltik.txt ├── Khazad.txt ├── MIDORI.txt ├── PRIDE_L_0.txt ├── PRIDE_L_1.txt ├── PRIDE_L_2.txt ├── PRIDE_L_3.txt ├── PRINCE_M_0.txt ├── PRINCE_M_1.txt ├── QARMA128.txt ├── QARMA64.txt ├── SKINNY.txt ├── SmallScale_AES.txt ├── ToSC_SarSye16_448.txt ├── ToSC_SarSye16_4x4_4.txt ├── ToSC_SarSye16_i_4x4_4.txt ├── ToSC_SarSye16_i_4x4_8.txt ├── Twofish.txt ├── Whirlwind_M0.txt ├── Whirlwind_M1.txt ├── ePrint_JeaPeySim_4x4_4.txt ├── ePrint_JeaPeySim_4x4_8.txt ├── ePrint_JeaPeySim_i_4x4_4.txt └── ePrint_JeaPeySim_i_4x4_8.txt ├── README.md ├── main.cpp ├── makefile ├── matrix.cpp ├── matrix.h ├── reduce.cpp ├── reduce.h ├── strategy.cpp └── strategy.h /Implementations/ACISP_SarSye17_8x8_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 00011000100110000011110011011010 3 | 10010100110101001010001010110111 4 | 01000010011000101101000101011011 5 | 00100001001100010110100010100101 6 | 01000001100010011000001111001101 7 | 01101001010011010100101000101011 8 | 00110100001001100010110100010101 9 | 10010010000100110001011010001010 10 | 01100100000110001001100000111100 11 | 01010110100101001101010010100010 12 | 10100011010000100110001011010001 13 | 11011001001000010011000101101000 14 | 11000110010000011000100110000011 15 | 00100101011010010100110101001010 16 | 00011010001101000010011000101101 17 | 10001101100100100001001100010110 18 | 11001100011001000001100010011000 19 | 00100010010101101001010011010100 20 | 00010001101000110100001001100010 21 | 10001000110110010010000100110001 22 | 10101100110001100100000110001001 23 | 01110010001001010110100101001101 24 | 10110001000110100011010000100110 25 | 01011000100011011001001000010011 26 | 01101010110011000110010000011000 27 | 01010111001000100101011010010100 28 | 10101011000100011010001101000010 29 | 11010101100010001101100100100001 30 | 01000110101011001100011001000001 31 | 01100101011100100010010101101001 32 | 00111010101100010001101000110100 33 | 10011101010110001000110110010010 34 | 35 | 36 | Reduced Matrix: 37 | 01000000000000000000000000000000 38 | 00000000000000010000000000000000 39 | 00000000000000000000000001000000 40 | 00000000000000000000010000000000 41 | 00000000000000000000000000001000 42 | 00000000000000000000000100000000 43 | 00000000000000000000000000000010 44 | 00000000000000000000000000100000 45 | 00000100000000000000000000000000 46 | 00000000000010000000000000000000 47 | 00000010000000000000000000000000 48 | 00100000000000000000000000000000 49 | 00000001000000000000000000000000 50 | 00000000000000001000000000000000 51 | 00000000000000000010000000000000 52 | 10000000000000000000000000000000 53 | 00000000001000000000000000000000 54 | 00000000000000000100000000000000 55 | 00000000000000100000000000000000 56 | 00000000000000000000000000010000 57 | 00000000000001000000000000000000 58 | 00010000000000000000000000000000 59 | 00000000010000000000000000000000 60 | 00000000000000000000000000000001 61 | 00000000000000000001000000000000 62 | 00000000000100000000000000000000 63 | 00000000000000000000000010000000 64 | 00000000000000000000100000000000 65 | 00001000000000000000000000000000 66 | 00000000000000000000000000000100 67 | 00000000100000000000000000000000 68 | 00000000000000000000001000000000 69 | 70 | 71 | Xor Count = 183 72 | x[23] = x[23] ^ x[11] 73 | x[11] = x[11] ^ x[29] 74 | x[19] = x[19] ^ x[27] 75 | x[3] = x[3] ^ x[19] 76 | x[6] = x[6] ^ x[21] 77 | x[27] = x[27] ^ x[0] 78 | x[26] = x[26] ^ x[27] 79 | x[25] = x[25] ^ x[10] 80 | x[10] = x[10] ^ x[24] 81 | x[24] = x[24] ^ x[6] 82 | x[25] = x[25] ^ x[14] 83 | x[6] = x[6] ^ x[17] 84 | x[17] = x[17] ^ x[13] 85 | x[13] = x[13] ^ x[10] 86 | x[0] = x[0] ^ x[29] 87 | x[9] = x[9] ^ x[31] 88 | x[17] = x[17] ^ x[16] 89 | x[4] = x[4] ^ x[15] 90 | x[15] = x[15] ^ x[11] 91 | x[0] = x[0] ^ x[22] 92 | x[16] = x[16] ^ x[10] 93 | x[4] = x[4] ^ x[3] 94 | x[20] = x[20] ^ x[21] 95 | x[10] = x[10] ^ x[2] 96 | x[2] = x[2] ^ x[29] 97 | x[23] = x[23] ^ x[5] 98 | x[16] = x[16] ^ x[1] 99 | x[1] = x[1] ^ x[18] 100 | x[31] = x[31] ^ x[13] 101 | x[24] = x[24] ^ x[26] 102 | x[2] = x[2] ^ x[21] 103 | x[22] = x[22] ^ x[24] 104 | x[20] = x[20] ^ x[10] 105 | x[31] = x[31] ^ x[30] 106 | x[29] = x[29] ^ x[3] 107 | x[18] = x[18] ^ x[28] 108 | x[11] = x[11] ^ x[30] 109 | x[18] = x[18] ^ x[23] 110 | x[13] = x[13] ^ x[7] 111 | x[13] = x[13] ^ x[6] 112 | x[13] = x[13] ^ x[19] 113 | x[19] = x[19] ^ x[15] 114 | x[30] = x[30] ^ x[14] 115 | x[23] = x[23] ^ x[19] 116 | x[6] = x[6] ^ x[25] 117 | x[25] = x[25] ^ x[1] 118 | x[1] = x[1] ^ x[31] 119 | x[20] = x[20] ^ x[30] 120 | x[1] = x[1] ^ x[7] 121 | x[24] = x[24] ^ x[16] 122 | x[16] = x[16] ^ x[15] 123 | x[21] = x[21] ^ x[14] 124 | x[21] = x[21] ^ x[16] 125 | x[21] = x[21] ^ x[26] 126 | x[26] = x[26] ^ x[28] 127 | x[26] = x[26] ^ x[25] 128 | x[17] = x[17] ^ x[1] 129 | x[1] = x[1] ^ x[28] 130 | x[31] = x[31] ^ x[8] 131 | x[15] = x[15] ^ x[29] 132 | x[8] = x[8] ^ x[14] 133 | x[14] = x[14] ^ x[3] 134 | x[1] = x[1] ^ x[20] 135 | x[29] = x[29] ^ x[19] 136 | x[29] = x[29] ^ x[2] 137 | x[2] = x[2] ^ x[6] 138 | x[6] = x[6] ^ x[5] 139 | x[3] = x[3] ^ x[23] 140 | x[19] = x[19] ^ x[28] 141 | x[14] = x[14] ^ x[25] 142 | x[28] = x[28] ^ x[23] 143 | x[25] = x[25] ^ x[27] 144 | x[3] = x[3] ^ x[7] 145 | x[7] = x[7] ^ x[0] 146 | x[29] = x[29] ^ x[0] 147 | x[0] = x[0] ^ x[22] 148 | x[26] = x[26] ^ x[22] 149 | x[23] = x[23] ^ x[27] 150 | x[22] = x[22] ^ x[4] 151 | x[16] = x[16] ^ x[9] 152 | x[20] = x[20] ^ x[27] 153 | x[9] = x[9] ^ x[27] 154 | x[27] = x[27] ^ x[5] 155 | x[5] = x[5] ^ x[11] 156 | x[8] = x[8] ^ x[22] 157 | x[22] = x[22] ^ x[12] 158 | x[29] = x[29] ^ x[9] 159 | x[9] = x[9] ^ x[11] 160 | x[4] = x[4] ^ x[30] 161 | x[18] = x[18] ^ x[31] 162 | x[22] = x[22] ^ x[24] 163 | x[10] = x[10] ^ x[25] 164 | x[15] = x[15] ^ x[25] 165 | x[0] = x[0] ^ x[3] 166 | x[16] = x[16] ^ x[10] 167 | x[10] = x[10] ^ x[22] 168 | x[25] = x[25] ^ x[28] 169 | x[27] = x[27] ^ x[29] 170 | x[25] = x[25] ^ x[5] 171 | x[5] = x[5] ^ x[17] 172 | x[5] = x[5] ^ x[19] 173 | x[4] = x[4] ^ x[6] 174 | x[28] = x[28] ^ x[13] 175 | x[5] = x[5] ^ x[12] 176 | x[12] = x[12] ^ x[0] 177 | x[13] = x[13] ^ x[10] 178 | x[12] = x[12] ^ x[18] 179 | x[18] = x[18] ^ x[30] 180 | x[18] = x[18] ^ x[23] 181 | x[18] = x[18] ^ x[8] y[14] 182 | x[23] = x[23] ^ x[16] 183 | x[23] = x[23] ^ x[17] 184 | x[8] = x[8] ^ x[11] 185 | x[11] = x[11] ^ x[14] 186 | x[14] = x[14] ^ x[31] 187 | x[16] = x[16] ^ x[2] 188 | x[31] = x[31] ^ x[22] y[23] 189 | x[30] = x[30] ^ x[15] 190 | x[22] = x[22] ^ x[9] 191 | x[15] = x[15] ^ x[2] 192 | x[2] = x[2] ^ x[9] 193 | x[13] = x[13] ^ x[22] 194 | x[9] = x[9] ^ x[29] 195 | x[3] = x[3] ^ x[1] 196 | x[25] = x[25] ^ x[16] y[2] 197 | x[16] = x[16] ^ x[31] 198 | x[19] = x[19] ^ x[9] 199 | x[9] = x[9] ^ x[26] 200 | x[9] = x[9] ^ x[12] 201 | x[9] = x[9] ^ x[14] y[22] 202 | x[10] = x[10] ^ x[21] 203 | x[2] = x[2] ^ x[4] 204 | x[15] = x[15] ^ x[29] 205 | x[29] = x[29] ^ x[0] 206 | x[23] = x[23] ^ x[10] 207 | x[10] = x[10] ^ x[9] 208 | x[10] = x[10] ^ x[30] 209 | x[22] = x[22] ^ x[15] 210 | x[7] = x[7] ^ x[29] 211 | x[0] = x[0] ^ x[8] y[15] 212 | x[14] = x[14] ^ x[21] 213 | x[21] = x[21] ^ x[20] 214 | x[29] = x[29] ^ x[26] y[29] 215 | x[11] = x[11] ^ x[10] 216 | x[22] = x[22] ^ x[17] 217 | x[23] = x[23] ^ x[3] y[5] 218 | x[24] = x[24] ^ x[19] 219 | x[7] = x[7] ^ x[21] y[12] 220 | x[8] = x[8] ^ x[20] y[30] 221 | x[21] = x[21] ^ x[17] y[3] 222 | x[3] = x[3] ^ x[6] y[21] 223 | x[6] = x[6] ^ x[10] 224 | x[10] = x[10] ^ x[27] 225 | x[20] = x[20] ^ x[17] 226 | x[17] = x[17] ^ x[13] y[17] 227 | x[6] = x[6] ^ x[2] y[10] 228 | x[19] = x[19] ^ x[16] y[24] 229 | x[27] = x[27] ^ x[9] 230 | x[13] = x[13] ^ x[26] 231 | x[10] = x[10] ^ x[1] y[16] 232 | x[1] = x[1] ^ x[16] 233 | x[16] = x[16] ^ x[4] 234 | x[11] = x[11] ^ x[4] y[25] 235 | x[12] = x[12] ^ x[5] y[9] 236 | x[4] = x[4] ^ x[31] y[28] 237 | x[26] = x[26] ^ x[30] y[7] 238 | x[20] = x[20] ^ x[2] 239 | x[27] = x[27] ^ x[0] y[19] 240 | x[15] = x[15] ^ x[12] y[1] 241 | x[28] = x[28] ^ x[4] y[4] 242 | x[14] = x[14] ^ x[17] 243 | x[30] = x[30] ^ x[17] 244 | x[13] = x[13] ^ x[0] y[20] 245 | x[16] = x[16] ^ x[23] 246 | x[22] = x[22] ^ x[7] y[31] 247 | x[2] = x[2] ^ x[29] y[11] 248 | x[5] = x[5] ^ x[21] y[8] 249 | x[20] = x[20] ^ x[27] y[27] 250 | x[14] = x[14] ^ x[6] y[18] 251 | x[16] = x[16] ^ x[27] y[13] 252 | x[30] = x[30] ^ x[7] y[6] 253 | x[24] = x[24] ^ x[2] y[26] 254 | x[1] = x[1] ^ x[6] y[0] 255 | -------------------------------------------------------------------------------- /Implementations/AES.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 00000001100000011000000010000000 3 | 10000001110000010100000001000000 4 | 01000000011000000010000000100000 5 | 00100001001100010001000000010000 6 | 00010001000110010000100000001000 7 | 00001000000011000000010000000100 8 | 00000100000001100000001000000010 9 | 00000010000000110000000100000001 10 | 10000000000000011000000110000000 11 | 01000000100000011100000101000000 12 | 00100000010000000110000000100000 13 | 00010000001000010011000100010000 14 | 00001000000100010001100100001000 15 | 00000100000010000000110000000100 16 | 00000010000001000000011000000010 17 | 00000001000000100000001100000001 18 | 10000000100000000000000110000001 19 | 01000000010000001000000111000001 20 | 00100000001000000100000001100000 21 | 00010000000100000010000100110001 22 | 00001000000010000001000100011001 23 | 00000100000001000000100000001100 24 | 00000010000000100000010000000110 25 | 00000001000000010000001000000011 26 | 10000001100000001000000000000001 27 | 11000001010000000100000010000001 28 | 01100000001000000010000001000000 29 | 00110001000100000001000000100001 30 | 00011001000010000000100000010001 31 | 00001100000001000000010000001000 32 | 00000110000000100000001000000100 33 | 00000011000000010000000100000010 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000000010000000 38 | 00000000000000000100000000000000 39 | 00000000001000000000000000000000 40 | 00000000000100000000000000000000 41 | 00001000000000000000000000000000 42 | 00000000000001000000000000000000 43 | 00000000000000100000000000000000 44 | 00000000000000010000000000000000 45 | 00000000000000001000000000000000 46 | 00000000010000000000000000000000 47 | 00000000000000000010000000000000 48 | 00000000000000000001000000000000 49 | 00000000000000000000100000000000 50 | 00000000000000000000000000000100 51 | 00000000000000000000000000000010 52 | 00000001000000000000000000000000 53 | 00000000100000000000000000000000 54 | 00000000000000000000000001000000 55 | 00100000000000000000000000000000 56 | 00010000000000000000000000000000 57 | 00000000000000000000000000001000 58 | 00000000000000000000010000000000 59 | 00000010000000000000000000000000 60 | 00000000000000000000000000000001 61 | 10000000000000000000000000000000 62 | 01000000000000000000000000000000 63 | 00000000000000000000000000100000 64 | 00000000000000000000000000010000 65 | 00000000000010000000000000000000 66 | 00000100000000000000000000000000 67 | 00000000000000000000001000000000 68 | 00000000000000000000000100000000 69 | 70 | 71 | Xor Count = 92 72 | x[23] = x[23] ^ x[31] 73 | x[31] = x[31] ^ x[15] 74 | x[12] = x[12] ^ x[ 4] 75 | x[13] = x[13] ^ x[21] 76 | x[17] = x[17] ^ x[ 9] 77 | x[11] = x[11] ^ x[27] 78 | x[ 4] = x[ 4] ^ x[28] 79 | x[21] = x[21] ^ x[ 5] 80 | x[ 0] = x[ 0] ^ x[24] 81 | x[15] = x[15] ^ x[ 7] 82 | x[ 9] = x[ 9] ^ x[ 1] 83 | x[14] = x[14] ^ x[ 6] 84 | x[24] = x[24] ^ x[16] 85 | x[ 6] = x[ 6] ^ x[22] 86 | x[16] = x[16] ^ x[31] 87 | x[24] = x[24] ^ x[ 8] 88 | x[18] = x[18] ^ x[26] 89 | x[22] = x[22] ^ x[30] 90 | x[26] = x[26] ^ x[10] 91 | x[ 8] = x[ 8] ^ x[23] 92 | x[30] = x[30] ^ x[13] 93 | x[13] = x[13] ^ x[29] 94 | x[ 5] = x[ 5] ^ x[13] 95 | x[29] = x[29] ^ x[ 4] 96 | x[ 4] = x[ 4] ^ x[11] 97 | x[11] = x[11] ^ x[19] 98 | x[13] = x[13] ^ x[12] y[ 5] 99 | x[19] = x[19] ^ x[23] 100 | x[ 4] = x[ 4] ^ x[31] 101 | x[12] = x[12] ^ x[20] 102 | x[28] = x[28] ^ x[12] 103 | x[20] = x[20] ^ x[27] 104 | x[20] = x[20] ^ x[19] 105 | x[27] = x[27] ^ x[31] 106 | x[12] = x[12] ^ x[15] 107 | x[27] = x[27] ^ x[ 3] 108 | x[ 3] = x[ 3] ^ x[11] 109 | x[11] = x[11] ^ x[ 2] 110 | x[19] = x[19] ^ x[18] 111 | x[11] = x[11] ^ x[10] 112 | x[10] = x[10] ^ x[18] 113 | x[18] = x[18] ^ x[ 2] 114 | x[10] = x[10] ^ x[ 9] y[ 2] 115 | x[ 2] = x[ 2] ^ x[ 9] 116 | x[18] = x[18] ^ x[17] y[10] 117 | x[17] = x[17] ^ x[25] 118 | x[ 1] = x[ 1] ^ x[17] 119 | x[25] = x[25] ^ x[24] 120 | x[ 9] = x[ 9] ^ x[ 8] 121 | x[24] = x[24] ^ x[15] y[ 0] 122 | x[11] = x[11] ^ x[15] y[ 3] 123 | x[ 8] = x[ 8] ^ x[ 0] y[16] 124 | x[15] = x[15] ^ x[23] 125 | x[17] = x[17] ^ x[16] 126 | x[16] = x[16] ^ x[ 0] 127 | x[ 0] = x[ 0] ^ x[31] 128 | x[16] = x[16] ^ x[23] y[ 8] 129 | x[23] = x[23] ^ x[ 6] 130 | x[31] = x[31] ^ x[ 7] 131 | x[31] = x[31] ^ x[22] y[23] 132 | x[30] = x[30] ^ x[ 6] y[14] 133 | x[ 7] = x[ 7] ^ x[14] 134 | x[14] = x[14] ^ x[21] 135 | x[ 6] = x[ 6] ^ x[ 5] 136 | x[22] = x[22] ^ x[21] 137 | x[ 5] = x[ 5] ^ x[29] y[29] 138 | x[21] = x[21] ^ x[28] 139 | x[29] = x[29] ^ x[21] y[13] 140 | x[21] = x[21] ^ x[13] y[21] 141 | x[12] = x[12] ^ x[27] y[28] 142 | x[27] = x[27] ^ x[26] 143 | x[28] = x[28] ^ x[20] y[20] 144 | x[20] = x[20] ^ x[ 4] y[12] 145 | x[26] = x[26] ^ x[ 1] 146 | x[14] = x[14] ^ x[30] y[ 6] 147 | x[ 4] = x[ 4] ^ x[12] y[ 4] 148 | x[ 3] = x[ 3] ^ x[19] y[19] 149 | x[19] = x[19] ^ x[27] y[11] 150 | x[ 1] = x[ 1] ^ x[25] 151 | x[ 0] = x[ 0] ^ x[24] y[24] 152 | x[ 1] = x[ 1] ^ x[ 0] y[25] 153 | x[ 2] = x[ 2] ^ x[26] y[18] 154 | x[25] = x[25] ^ x[ 9] y[17] 155 | x[15] = x[15] ^ x[ 7] y[ 7] 156 | x[ 7] = x[ 7] ^ x[23] y[15] 157 | x[ 6] = x[ 6] ^ x[14] y[22] 158 | x[ 9] = x[ 9] ^ x[17] y[ 9] 159 | x[23] = x[23] ^ x[31] y[31] 160 | x[26] = x[26] ^ x[18] y[26] 161 | x[22] = x[22] ^ x[ 6] y[30] 162 | x[17] = x[17] ^ x[ 0] y[ 1] 163 | x[27] = x[27] ^ x[11] y[27] 164 | -------------------------------------------------------------------------------- /Implementations/Anubis.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000000000010000001000000011 3 | 01000000100000010000001110000010 4 | 00100000010000001000000111000001 5 | 00010000001000010100001001100011 6 | 00001000000100010010001100110010 7 | 00000100000010000001000100011001 8 | 00000010000001000000100000001100 9 | 00000001000000100000010000000110 10 | 00000001100000000000001100000010 11 | 10000001010000001000001000000011 12 | 01000000001000001100000110000001 13 | 00100001000100000110001101000010 14 | 00010001000010000011001000100011 15 | 00001000000001000001100100010001 16 | 00000100000000100000110000001000 17 | 00000010000000010000011000000100 18 | 00000010000000111000000000000001 19 | 00000011100000100100000010000001 20 | 10000001110000010010000001000000 21 | 01000010011000110001000000100001 22 | 00100011001100100000100000010001 23 | 00010001000110010000010000001000 24 | 00001000000011000000001000000100 25 | 00000100000001100000000100000010 26 | 00000011000000100000000110000000 27 | 10000010000000111000000101000000 28 | 11000001100000010100000000100000 29 | 01100011010000100010000100010000 30 | 00110010001000110001000100001000 31 | 00011001000100010000100000000100 32 | 00001100000010000000010000000010 33 | 00000110000001000000001000000001 34 | 35 | 36 | Reduced Matrix: 37 | 10000000000000000000000000000000 38 | 01000000000000000000000000000000 39 | 00100000000000000000000000000000 40 | 00010000000000000000000000000000 41 | 00000000000100000000000000000000 42 | 00000100000000000000000000000000 43 | 00000010000000000000000000000000 44 | 00000000100000000000000000000000 45 | 00000001000000000000000000000000 46 | 00000000010000000000000000000000 47 | 00000000001000000000000000000000 48 | 00000000000000000000000000100000 49 | 00000000000010000000000000000000 50 | 00000000000001000000000000000000 51 | 00000000000000100000000000000000 52 | 00000000000000000000000000000001 53 | 00000000000000001000000000000000 54 | 00000000000000000100000000000000 55 | 00000000000000000010000000000000 56 | 00000000000000000001000000000000 57 | 00000000000000000000100000000000 58 | 00000000000000000000010000000000 59 | 00000000000000000000001000000000 60 | 00000000000000000000000100000000 61 | 00000000000000000000000010000000 62 | 00000000000000000000000001000000 63 | 00000000000000000000000000010000 64 | 00001000000000000000000000000000 65 | 00000000000000000000000000001000 66 | 00000000000000000000000000000100 67 | 00000000000000000000000000000010 68 | 00000000000000010000000000000000 69 | 70 | 71 | Xor Count = 99 72 | x[14] = x[14] ^ x[ 6] 73 | x[ 7] = x[ 7] ^ x[15] 74 | x[23] = x[23] ^ x[31] 75 | x[15] = x[15] ^ x[31] 76 | x[14] = x[14] ^ x[15] 77 | x[27] = x[27] ^ x[ 4] 78 | x[27] = x[27] ^ x[23] 79 | x[15] = x[15] ^ x[22] 80 | x[11] = x[11] ^ x[ 7] 81 | x[10] = x[10] ^ x[ 1] 82 | x[12] = x[12] ^ x[ 4] 83 | x[25] = x[25] ^ x[23] 84 | x[ 4] = x[ 4] ^ x[ 3] 85 | x[ 5] = x[ 5] ^ x[12] 86 | x[12] = x[12] ^ x[13] 87 | x[30] = x[30] ^ x[15] 88 | x[15] = x[15] ^ x[21] 89 | x[ 3] = x[ 3] ^ x[ 2] 90 | x[13] = x[13] ^ x[20] 91 | x[20] = x[20] ^ x[11] 92 | x[ 2] = x[ 2] ^ x[25] 93 | x[19] = x[19] ^ x[27] 94 | x[28] = x[28] ^ x[19] 95 | x[13] = x[13] ^ x[19] y[13] 96 | x[27] = x[27] ^ x[14] 97 | x[26] = x[26] ^ x[27] 98 | x[ 6] = x[ 6] ^ x[29] 99 | x[19] = x[19] ^ x[10] 100 | x[19] = x[19] ^ x[26] 101 | x[11] = x[11] ^ x[26] 102 | x[20] = x[20] ^ x[ 4] 103 | x[11] = x[11] ^ x[18] 104 | x[19] = x[19] ^ x[ 9] y[19] 105 | x[27] = x[27] ^ x[ 1] 106 | x[26] = x[26] ^ x[17] 107 | x[17] = x[17] ^ x[24] 108 | x[ 9] = x[ 9] ^ x[ 7] 109 | x[24] = x[24] ^ x[ 7] 110 | x[ 7] = x[ 7] ^ x[ 8] 111 | x[18] = x[18] ^ x[ 9] 112 | x[ 3] = x[ 3] ^ x[27] 113 | x[27] = x[27] ^ x[ 7] 114 | x[31] = x[31] ^ x[15] 115 | x[ 4] = x[ 4] ^ x[18] 116 | x[18] = x[18] ^ x[23] 117 | x[22] = x[22] ^ x[12] 118 | x[10] = x[10] ^ x[23] 119 | x[15] = x[15] ^ x[ 5] 120 | x[27] = x[27] ^ x[ 0] 121 | x[ 7] = x[ 7] ^ x[14] 122 | x[23] = x[23] ^ x[14] 123 | x[ 9] = x[ 9] ^ x[16] 124 | x[25] = x[25] ^ x[ 0] 125 | x[ 0] = x[ 0] ^ x[30] y[ 0] 126 | x[ 4] = x[ 4] ^ x[ 3] y[27] 127 | x[31] = x[31] ^ x[ 6] y[15] 128 | x[12] = x[12] ^ x[20] 129 | x[ 3] = x[ 3] ^ x[10] 130 | x[27] = x[27] ^ x[26] y[26] 131 | x[10] = x[10] ^ x[16] 132 | x[26] = x[26] ^ x[ 2] 133 | x[ 6] = x[ 6] ^ x[13] 134 | x[22] = x[22] ^ x[29] y[22] 135 | x[16] = x[16] ^ x[14] y[16] 136 | x[ 5] = x[ 5] ^ x[28] y[ 5] 137 | x[ 2] = x[ 2] ^ x[24] 138 | x[ 6] = x[ 6] ^ x[28] y[ 6] 139 | x[18] = x[18] ^ x[ 8] 140 | x[14] = x[14] ^ x[ 6] 141 | x[ 1] = x[ 1] ^ x[24] 142 | x[29] = x[29] ^ x[20] y[29] 143 | x[26] = x[26] ^ x[30] 144 | x[ 8] = x[ 8] ^ x[30] 145 | x[24] = x[24] ^ x[23] y[24] 146 | x[23] = x[23] ^ x[30] 147 | x[30] = x[30] ^ x[15] y[30] 148 | x[ 8] = x[ 8] ^ x[ 7] 149 | x[12] = x[12] ^ x[13] 150 | x[21] = x[21] ^ x[28] 151 | x[18] = x[18] ^ x[25] y[18] 152 | x[25] = x[25] ^ x[16] y[25] 153 | x[ 2] = x[ 2] ^ x[ 9] y[ 2] 154 | x[28] = x[28] ^ x[ 3] y[28] 155 | x[20] = x[20] ^ x[ 3] y[20] 156 | x[ 3] = x[ 3] ^ x[26] y[ 3] 157 | x[26] = x[26] ^ x[11] y[11] 158 | x[11] = x[11] ^ x[ 8] y[ 4] 159 | x[15] = x[15] ^ x[22] 160 | x[21] = x[21] ^ x[12] y[21] 161 | x[10] = x[10] ^ x[17] y[10] 162 | x[17] = x[17] ^ x[ 7] y[17] 163 | x[ 7] = x[ 7] ^ x[23] y[ 8] 164 | x[ 9] = x[ 9] ^ x[ 0] y[ 9] 165 | x[ 1] = x[ 1] ^ x[ 7] y[ 1] 166 | x[14] = x[14] ^ x[15] y[14] 167 | x[15] = x[15] ^ x[31] y[31] 168 | x[23] = x[23] ^ x[15] y[23] 169 | x[12] = x[12] ^ x[11] y[12] 170 | x[ 8] = x[ 8] ^ x[31] y[ 7] 171 | -------------------------------------------------------------------------------- /Implementations/C_BeiKraLea16_4x4_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000100000011110 3 | 0100010010010001 4 | 0010001001001000 5 | 0001000100101100 6 | 1110100010000001 7 | 0001010001001001 8 | 1000001000100100 9 | 1100000100010010 10 | 0001111010001000 11 | 1001000101000100 12 | 0100100000100010 13 | 0010110000010001 14 | 1000000111101000 15 | 0100100100010100 16 | 0010010010000010 17 | 0001001011000001 18 | 19 | 20 | Reduced Matrix: 21 | 0000000000001000 22 | 0000010000000000 23 | 0010000000000000 24 | 0000000000100000 25 | 0000000000000100 26 | 0001000000000000 27 | 0000001000000000 28 | 0000000000000010 29 | 0000100000000000 30 | 0000000100000000 31 | 0100000000000000 32 | 0000000000010000 33 | 0000000010000000 34 | 0000000001000000 35 | 1000000000000000 36 | 0000000000000001 37 | 38 | 39 | Xor Count = 41 40 | x[ 0] = x[ 0] ^ x[13] 41 | x[ 5] = x[ 5] ^ x[15] 42 | x[ 3] = x[ 3] ^ x[ 9] 43 | x[10] = x[10] ^ x[ 0] 44 | x[ 9] = x[ 9] ^ x[12] 45 | x[14] = x[14] ^ x[ 4] 46 | x[ 4] = x[ 4] ^ x[ 5] 47 | x[ 2] = x[ 2] ^ x[ 4] 48 | x[15] = x[15] ^ x[ 3] 49 | x[14] = x[14] ^ x[ 0] 50 | x[ 0] = x[ 0] ^ x[ 3] 51 | x[ 3] = x[ 3] ^ x[12] 52 | x[ 3] = x[ 3] ^ x[ 5] y[ 5] 53 | x[ 5] = x[ 5] ^ x[ 1] 54 | x[15] = x[15] ^ x[ 8] 55 | x[ 1] = x[ 1] ^ x[10] 56 | x[12] = x[12] ^ x[11] 57 | x[ 4] = x[ 4] ^ x[ 9] 58 | x[ 9] = x[ 9] ^ x[ 7] 59 | x[ 9] = x[ 9] ^ x[13] 60 | x[ 7] = x[ 7] ^ x[ 0] y[ 9] 61 | x[12] = x[12] ^ x[14] y[ 0] 62 | x[13] = x[13] ^ x[ 5] 63 | x[ 5] = x[ 5] ^ x[11] 64 | x[ 1] = x[ 1] ^ x[14] y[10] 65 | x[11] = x[11] ^ x[ 2] y[11] 66 | x[ 2] = x[ 2] ^ x[15] 67 | x[15] = x[15] ^ x[ 6] y[15] 68 | x[ 6] = x[ 6] ^ x[10] y[ 6] 69 | x[10] = x[10] ^ x[ 9] 70 | x[ 9] = x[ 9] ^ x[ 4] 71 | x[ 9] = x[ 9] ^ x[ 5] y[13] 72 | x[ 5] = x[ 5] ^ x[ 8] y[ 1] 73 | x[ 8] = x[ 8] ^ x[10] y[12] 74 | x[10] = x[10] ^ x[ 0] y[ 3] 75 | x[ 0] = x[ 0] ^ x[ 2] 76 | x[ 4] = x[ 4] ^ x[15] y[ 8] 77 | x[ 2] = x[ 2] ^ x[ 4] y[ 2] 78 | x[13] = x[13] ^ x[ 0] y[ 4] 79 | x[ 0] = x[ 0] ^ x[14] y[14] 80 | x[14] = x[14] ^ x[ 9] y[ 7] 81 | -------------------------------------------------------------------------------- /Implementations/C_BeiKraLea16_4x4_8.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000100000000000000111100000 3 | 01000000010000001000000100010000 4 | 00100000001000000100000000001000 5 | 00010000000100000010000010000100 6 | 00001000000010000001000001000010 7 | 00000100000001000000100111000001 8 | 00000010000000100000010110000000 9 | 00000001000000010000001011000000 10 | 11100000100000001000000000000001 11 | 00010000010000000100000010000001 12 | 00001000001000000010000001000000 13 | 10000100000100000001000000100000 14 | 01000010000010000000100000010000 15 | 11000001000001000000010000001001 16 | 10000000000000100000001000000101 17 | 11000000000000010000000100000010 18 | 00000001111000001000000010000000 19 | 10000001000100000100000001000000 20 | 01000000000010000010000000100000 21 | 00100000100001000001000000010000 22 | 00010000010000100000100000001000 23 | 00001001110000010000010000000100 24 | 00000101100000000000001000000010 25 | 00000010110000000000000100000001 26 | 10000000000000011110000010000000 27 | 01000000100000010001000001000000 28 | 00100000010000000000100000100000 29 | 00010000001000001000010000010000 30 | 00001000000100000100001000001000 31 | 00000100000010011100000100000100 32 | 00000010000001011000000000000010 33 | 00000001000000101100000000000001 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000000001000000 38 | 00000000000000000000000000000001 39 | 00100000000000000000000000000000 40 | 00010000000000000000000000000000 41 | 00000000000000000000000010000000 42 | 00000000000001000000000000000000 43 | 00001000000000000000000000000000 44 | 00000000000000000000001000000000 45 | 00000000100000000000000000000000 46 | 00000000010000000000000000000000 47 | 00000000001000000000000000000000 48 | 00000000000000000001000000000000 49 | 00000010000000000000000000000000 50 | 00000001000000000000000000000000 51 | 10000000000000000000000000000000 52 | 00000000000000000000000000000010 53 | 00000000000000000000010000000000 54 | 00000000000000000000000000000100 55 | 00000000000010000000000000000000 56 | 00000000000000000000000100000000 57 | 00000000000000100000000000000000 58 | 00000000000000000000000000001000 59 | 00000100000000000000000000000000 60 | 00000000000000000000100000000000 61 | 00000000000000000010000000000000 62 | 00000000000000010000000000000000 63 | 00000000000000000000000000100000 64 | 00000000000000000000000000010000 65 | 00000000000100000000000000000000 66 | 01000000000000000000000000000000 67 | 00000000000000001000000000000000 68 | 00000000000000000100000000000000 69 | 70 | 71 | Xor Count = 114 72 | x[21] = x[21] ^ x[17] 73 | x[17] = x[17] ^ x[16] 74 | x[30] = x[30] ^ x[15] 75 | x[29] = x[29] ^ x[15] 76 | x[29] = x[29] ^ x[17] 77 | x[28] = x[28] ^ x[17] 78 | x[ 8] = x[ 8] ^ x[30] 79 | x[12] = x[12] ^ x[ 1] 80 | x[ 1] = x[ 1] ^ x[23] 81 | x[15] = x[15] ^ x[24] 82 | x[23] = x[23] ^ x[31] 83 | x[14] = x[14] ^ x[31] 84 | x[31] = x[31] ^ x[24] 85 | x[ 9] = x[ 9] ^ x[16] 86 | x[21] = x[21] ^ x[28] 87 | x[ 2] = x[ 2] ^ x[16] 88 | x[10] = x[10] ^ x[28] 89 | x[28] = x[28] ^ x[24] 90 | x[11] = x[11] ^ x[ 0] 91 | x[22] = x[22] ^ x[15] 92 | x[15] = x[15] ^ x[ 0] 93 | x[ 5] = x[ 5] ^ x[24] 94 | x[24] = x[24] ^ x[29] 95 | x[22] = x[22] ^ x[ 7] 96 | x[ 4] = x[ 4] ^ x[24] 97 | x[ 3] = x[ 3] ^ x[17] 98 | x[29] = x[29] ^ x[18] 99 | x[11] = x[11] ^ x[29] 100 | x[29] = x[29] ^ x[16] 101 | x[28] = x[28] ^ x[16] 102 | x[16] = x[16] ^ x[30] 103 | x[30] = x[30] ^ x[ 0] 104 | x[16] = x[16] ^ x[13] 105 | x[30] = x[30] ^ x[ 1] y[15] 106 | x[13] = x[13] ^ x[20] 107 | x[ 0] = x[ 0] ^ x[24] 108 | x[24] = x[24] ^ x[12] 109 | x[24] = x[24] ^ x[ 5] 110 | x[ 5] = x[ 5] ^ x[ 8] 111 | x[ 8] = x[ 8] ^ x[23] 112 | x[23] = x[23] ^ x[16] 113 | x[16] = x[16] ^ x[ 6] y[30] 114 | x[ 6] = x[ 6] ^ x[27] 115 | x[ 6] = x[ 6] ^ x[12] 116 | x[12] = x[12] ^ x[26] 117 | x[12] = x[12] ^ x[18] y[18] 118 | x[ 6] = x[ 6] ^ x[20] y[12] 119 | x[18] = x[18] ^ x[17] 120 | x[17] = x[17] ^ x[ 7] 121 | x[18] = x[18] ^ x[15] y[24] 122 | x[ 7] = x[ 7] ^ x[21] 123 | x[15] = x[15] ^ x[11] 124 | x[21] = x[21] ^ x[10] 125 | x[ 7] = x[ 7] ^ x[23] 126 | x[23] = x[23] ^ x[19] 127 | x[23] = x[23] ^ x[27] 128 | x[27] = x[27] ^ x[ 3] 129 | x[19] = x[19] ^ x[11] 130 | x[11] = x[11] ^ x[17] 131 | x[17] = x[17] ^ x[14] y[31] 132 | x[14] = x[14] ^ x[20] 133 | x[20] = x[20] ^ x[ 9] 134 | x[ 9] = x[ 9] ^ x[ 3] 135 | x[ 9] = x[ 9] ^ x[31] y[ 9] 136 | x[13] = x[13] ^ x[ 8] 137 | x[31] = x[31] ^ x[ 1] 138 | x[ 8] = x[ 8] ^ x[ 2] 139 | x[29] = x[29] ^ x[25] 140 | x[ 3] = x[ 3] ^ x[15] y[ 3] 141 | x[15] = x[15] ^ x[19] 142 | x[ 0] = x[ 0] ^ x[22] 143 | x[15] = x[15] ^ x[ 1] 144 | x[15] = x[15] ^ x[26] 145 | x[26] = x[26] ^ x[ 2] 146 | x[ 1] = x[ 1] ^ x[24] y[29] 147 | x[19] = x[19] ^ x[24] 148 | x[ 2] = x[ 2] ^ x[10] y[ 2] 149 | x[10] = x[10] ^ x[29] 150 | x[29] = x[29] ^ x[11] y[17] 151 | x[24] = x[24] ^ x[ 5] 152 | x[11] = x[11] ^ x[22] 153 | x[ 5] = x[ 5] ^ x[22] y[22] 154 | x[22] = x[22] ^ x[25] y[ 7] 155 | x[25] = x[25] ^ x[26] 156 | x[26] = x[26] ^ x[20] y[26] 157 | x[20] = x[20] ^ x[13] 158 | x[13] = x[13] ^ x[22] 159 | x[13] = x[13] ^ x[ 5] y[ 5] 160 | x[25] = x[25] ^ x[31] 161 | x[31] = x[31] ^ x[27] 162 | x[14] = x[14] ^ x[28] 163 | x[27] = x[27] ^ x[21] y[27] 164 | x[28] = x[28] ^ x[ 4] 165 | x[10] = x[10] ^ x[28] y[10] 166 | x[11] = x[11] ^ x[28] 167 | x[28] = x[28] ^ x[ 7] 168 | x[ 0] = x[ 0] ^ x[17] y[14] 169 | x[ 7] = x[ 7] ^ x[30] y[13] 170 | x[14] = x[14] ^ x[ 9] y[20] 171 | x[23] = x[23] ^ x[ 8] y[19] 172 | x[ 8] = x[ 8] ^ x[30] y[ 8] 173 | x[24] = x[24] ^ x[ 4] 174 | x[28] = x[28] ^ x[20] y[21] 175 | x[31] = x[31] ^ x[ 9] y[ 1] 176 | x[ 4] = x[ 4] ^ x[28] 177 | x[21] = x[21] ^ x[ 4] y[16] 178 | x[20] = x[20] ^ x[16] y[23] 179 | x[ 4] = x[ 4] ^ x[20] 180 | x[19] = x[19] ^ x[12] y[11] 181 | x[ 4] = x[ 4] ^ x[17] y[ 6] 182 | x[11] = x[11] ^ x[18] y[28] 183 | x[25] = x[25] ^ x[ 8] y[ 0] 184 | x[15] = x[15] ^ x[25] y[25] 185 | x[24] = x[24] ^ x[15] y[ 4] 186 | -------------------------------------------------------------------------------- /Implementations/Clefia_M0.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000000000010000001000000011 3 | 01000000100000000000000110000001 4 | 00100000010000011000001011000011 5 | 00010000001000010100001101100010 6 | 00001000000100010010001100110010 7 | 00000100000010000001000100011001 8 | 00000010000001000000100000001100 9 | 00000001000000100000010000000110 10 | 00000001100000000000001100000010 11 | 10000000010000001000000100000001 12 | 01000001001000001100001110000010 13 | 00100001000100000110001001000011 14 | 00010001000010000011001000100011 15 | 00001000000001000001100100010001 16 | 00000100000000100000110000001000 17 | 00000010000000010000011000000100 18 | 00000010000000111000000000000001 19 | 00000001100000010100000010000000 20 | 10000010110000110010000001000001 21 | 01000011011000100001000000100001 22 | 00100011001100100000100000010001 23 | 00010001000110010000010000001000 24 | 00001000000011000000001000000100 25 | 00000100000001100000000100000010 26 | 00000011000000100000000110000000 27 | 10000001000000011000000001000000 28 | 11000011100000100100000100100000 29 | 01100010010000110010000100010000 30 | 00110010001000110001000100001000 31 | 00011001000100010000100000000100 32 | 00001100000010000000010000000010 33 | 00000110000001000000001000000001 34 | 35 | 36 | Reduced Matrix: 37 | 10000000000000000000000000000000 38 | 01000000000000000000000000000000 39 | 00100000000000000000000000000000 40 | 00000000000010000000000000000000 41 | 00001000000000000000000000000000 42 | 00000100000000000000000000000000 43 | 00000010000000000000000000000000 44 | 00000001000000000000000000000000 45 | 00000000100000000000000000000000 46 | 00000000010000000000000000000000 47 | 00000000001000000000000000000000 48 | 00000000000100000000000000000000 49 | 00010000000000000000000000000000 50 | 00000000000001000000000000000000 51 | 00000000000000100000000000000000 52 | 00000000000000010000000000000000 53 | 00000000000000001000000000000000 54 | 00000000000000000100000000000000 55 | 00000000000000000010000000000000 56 | 00000000000000000001000000000000 57 | 00000000000000000000100000000000 58 | 00000000000000000000010000000000 59 | 00000000000000000000001000000000 60 | 00000000000000000000000100000000 61 | 00000000000000000000000010000000 62 | 00000000000000000000000001000000 63 | 00000000000000000000000000100000 64 | 00000000000000000000000000010000 65 | 00000000000000000000000000001000 66 | 00000000000000000000000000000100 67 | 00000000000000000000000000000010 68 | 00000000000000000000000000000001 69 | 70 | 71 | Xor Count = 98 72 | x[ 6] = x[ 6] ^ x[14] 73 | x[ 4] = x[ 4] ^ x[12] 74 | x[12] = x[12] ^ x[19] 75 | x[ 6] = x[ 6] ^ x[23] 76 | x[31] = x[31] ^ x[23] 77 | x[15] = x[15] ^ x[ 6] 78 | x[27] = x[27] ^ x[12] 79 | x[ 6] = x[ 6] ^ x[ 7] 80 | x[27] = x[27] ^ x[31] 81 | x[17] = x[17] ^ x[ 8] 82 | x[ 7] = x[ 7] ^ x[30] 83 | x[26] = x[26] ^ x[ 6] 84 | x[11] = x[11] ^ x[ 2] 85 | x[20] = x[20] ^ x[27] 86 | x[ 2] = x[ 2] ^ x[15] 87 | x[30] = x[30] ^ x[ 5] 88 | x[ 8] = x[ 8] ^ x[31] 89 | x[28] = x[28] ^ x[27] 90 | x[27] = x[27] ^ x[ 3] 91 | x[ 3] = x[ 3] ^ x[12] 92 | x[ 3] = x[ 3] ^ x[18] 93 | x[19] = x[19] ^ x[10] 94 | x[14] = x[14] ^ x[21] 95 | x[30] = x[30] ^ x[21] 96 | x[18] = x[18] ^ x[ 8] 97 | x[12] = x[12] ^ x[10] 98 | x[10] = x[10] ^ x[17] 99 | x[19] = x[19] ^ x[ 2] 100 | x[ 2] = x[ 2] ^ x[ 9] 101 | x[ 3] = x[ 3] ^ x[26] 102 | x[18] = x[18] ^ x[25] 103 | x[19] = x[19] ^ x[27] 104 | x[26] = x[26] ^ x[ 1] 105 | x[ 1] = x[ 1] ^ x[ 8] 106 | x[27] = x[27] ^ x[31] 107 | x[12] = x[12] ^ x[11] 108 | x[27] = x[27] ^ x[26] 109 | x[26] = x[26] ^ x[17] 110 | x[17] = x[17] ^ x[15] 111 | x[26] = x[26] ^ x[ 0] y[26] 112 | x[ 0] = x[ 0] ^ x[15] 113 | x[ 7] = x[ 7] ^ x[22] 114 | x[23] = x[23] ^ x[ 7] 115 | x[31] = x[31] ^ x[23] 116 | x[16] = x[16] ^ x[31] 117 | x[15] = x[15] ^ x[23] 118 | x[12] = x[12] ^ x[ 6] 119 | x[22] = x[22] ^ x[29] 120 | x[23] = x[23] ^ x[30] 121 | x[23] = x[23] ^ x[13] 122 | x[13] = x[13] ^ x[ 4] 123 | x[ 7] = x[ 7] ^ x[14] 124 | x[27] = x[27] ^ x[ 2] 125 | x[ 1] = x[ 1] ^ x[24] y[ 1] 126 | x[24] = x[24] ^ x[ 6] y[24] 127 | x[ 8] = x[ 8] ^ x[31] y[ 8] 128 | x[31] = x[31] ^ x[ 6] 129 | x[ 6] = x[ 6] ^ x[22] 130 | x[ 5] = x[ 5] ^ x[28] y[ 5] 131 | x[ 6] = x[ 6] ^ x[23] 132 | x[23] = x[23] ^ x[ 7] y[23] 133 | x[28] = x[28] ^ x[19] y[28] 134 | x[ 7] = x[ 7] ^ x[22] y[ 7] 135 | x[22] = x[22] ^ x[13] y[22] 136 | x[25] = x[25] ^ x[16] 137 | x[13] = x[13] ^ x[20] y[13] 138 | x[30] = x[30] ^ x[ 4] y[30] 139 | x[14] = x[14] ^ x[20] 140 | x[21] = x[21] ^ x[12] 141 | x[ 4] = x[ 4] ^ x[19] 142 | x[20] = x[20] ^ x[12] y[20] 143 | x[19] = x[19] ^ x[27] y[19] 144 | x[10] = x[10] ^ x[16] 145 | x[29] = x[29] ^ x[ 4] 146 | x[ 9] = x[ 9] ^ x[ 0] 147 | x[27] = x[27] ^ x[ 3] y[27] 148 | x[ 3] = x[ 3] ^ x[31] y[12] 149 | x[11] = x[11] ^ x[18] 150 | x[11] = x[11] ^ x[17] 151 | x[ 0] = x[ 0] ^ x[31] y[ 0] 152 | x[16] = x[16] ^ x[15] y[16] 153 | x[21] = x[21] ^ x[28] y[21] 154 | x[12] = x[12] ^ x[ 3] 155 | x[ 4] = x[ 4] ^ x[12] y[ 4] 156 | x[14] = x[14] ^ x[ 5] y[14] 157 | x[17] = x[17] ^ x[24] y[17] 158 | x[18] = x[18] ^ x[ 9] y[18] 159 | x[10] = x[10] ^ x[ 1] y[10] 160 | x[ 2] = x[ 2] ^ x[25] 161 | x[12] = x[12] ^ x[11] y[ 3] 162 | x[11] = x[11] ^ x[15] y[11] 163 | x[ 9] = x[ 9] ^ x[16] y[ 9] 164 | x[25] = x[25] ^ x[ 0] y[25] 165 | x[29] = x[29] ^ x[20] y[29] 166 | x[ 2] = x[ 2] ^ x[24] y[ 2] 167 | x[15] = x[15] ^ x[ 7] y[15] 168 | x[ 6] = x[ 6] ^ x[14] y[ 6] 169 | x[31] = x[31] ^ x[23] y[31] 170 | -------------------------------------------------------------------------------- /Implementations/Clefia_M1.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000000001000000000100000101 3 | 01000000000000101000000010000010 4 | 00100000000001010100000101000100 5 | 00010000100001100010000110100111 6 | 00001000010001110001000101010110 7 | 00000100001000110000100000101011 8 | 00000010000100010000010000010101 9 | 00000001000010000000001000001010 10 | 00000100100000000000010100000001 11 | 00000010010000001000001010000000 12 | 00000101001000000100010001000001 13 | 10000110000100001010011100100001 14 | 01000111000010000101011000010001 15 | 00100011000001000010101100001000 16 | 00010001000000100001010100000100 17 | 00001000000000010000101000000010 18 | 00000001000001011000000000000100 19 | 10000000100000100100000000000010 20 | 01000001010001000010000000000101 21 | 00100001101001110001000010000110 22 | 00010001010101100000100001000111 23 | 00001000001010110000010000100011 24 | 00000100000101010000001000010001 25 | 00000010000010100000000100001000 26 | 00000101000000010000010010000000 27 | 10000010100000000000001001000000 28 | 01000100010000010000010100100000 29 | 10100111001000011000011000010000 30 | 01010110000100010100011100001000 31 | 00101011000010000010001100000100 32 | 00010101000001000001000100000010 33 | 00001010000000100000100000000001 34 | 35 | 36 | Reduced Matrix: 37 | 10000000000000000000000000000000 38 | 01000000000000000000000000000000 39 | 00100000000000000000000000000000 40 | 00010000000000000000000000000000 41 | 00001000000000000000000000000000 42 | 00000100000000000000000000000000 43 | 00000010000000000000000000000000 44 | 00000001000000000000000000000000 45 | 00000000100000000000000000000000 46 | 00000000010000000000000000000000 47 | 00000000001000000000000000000000 48 | 00000000000100000000000000000000 49 | 00000000000010000000000000000000 50 | 00000000000001000000000000000000 51 | 00000000000000100000000000000000 52 | 00000000000000000000000000000001 53 | 00000000000000001000000000000000 54 | 00000000000000000100000000000000 55 | 00000000000000000010000000000000 56 | 00000000000000000001000000000000 57 | 00000000000000000000100000000000 58 | 00000000000000000000010000000000 59 | 00000000000000000000001000000000 60 | 00000000000000000000000100000000 61 | 00000000000000000000000010000000 62 | 00000000000000000000000001000000 63 | 00000000000000000000000000100000 64 | 00000000000000000000000000010000 65 | 00000000000000000000000000001000 66 | 00000000000000000000000000000100 67 | 00000000000000000000000000000010 68 | 00000000000000010000000000000000 69 | 70 | 71 | Xor Count = 103 72 | x[29] = x[29] ^ x[13] 73 | x[ 6] = x[ 6] ^ x[22] 74 | x[15] = x[15] ^ x[31] 75 | x[14] = x[14] ^ x[30] 76 | x[31] = x[31] ^ x[29] 77 | x[13] = x[13] ^ x[ 5] 78 | x[21] = x[21] ^ x[29] 79 | x[21] = x[21] ^ x[ 5] 80 | x[24] = x[24] ^ x[16] 81 | x[ 8] = x[ 8] ^ x[ 0] 82 | x[13] = x[13] ^ x[15] 83 | x[23] = x[23] ^ x[31] 84 | x[12] = x[12] ^ x[28] 85 | x[ 4] = x[ 4] ^ x[20] 86 | x[20] = x[20] ^ x[10] 87 | x[ 2] = x[ 2] ^ x[10] 88 | x[10] = x[10] ^ x[25] 89 | x[28] = x[28] ^ x[26] 90 | x[26] = x[26] ^ x[18] 91 | x[31] = x[31] ^ x[ 7] 92 | x[18] = x[18] ^ x[ 1] 93 | x[10] = x[10] ^ x[31] 94 | x[25] = x[25] ^ x[ 6] 95 | x[ 1] = x[ 1] ^ x[24] 96 | x[18] = x[18] ^ x[31] 97 | x[31] = x[31] ^ x[15] 98 | x[27] = x[27] ^ x[13] 99 | x[18] = x[18] ^ x[ 9] y[18] 100 | x[15] = x[15] ^ x[ 6] 101 | x[20] = x[20] ^ x[ 9] 102 | x[ 9] = x[ 9] ^ x[ 6] 103 | x[ 1] = x[ 1] ^ x[14] y[ 1] 104 | x[ 6] = x[ 6] ^ x[21] 105 | x[ 5] = x[ 5] ^ x[20] 106 | x[20] = x[20] ^ x[10] 107 | x[10] = x[10] ^ x[17] 108 | x[19] = x[19] ^ x[13] 109 | x[19] = x[19] ^ x[ 3] 110 | x[ 3] = x[ 3] ^ x[11] 111 | x[17] = x[17] ^ x[ 3] 112 | x[15] = x[15] ^ x[14] 113 | x[ 3] = x[ 3] ^ x[14] 114 | x[14] = x[14] ^ x[21] 115 | x[28] = x[28] ^ x[ 9] 116 | x[ 4] = x[ 4] ^ x[12] 117 | x[ 0] = x[ 0] ^ x[23] y[ 0] 118 | x[23] = x[23] ^ x[31] 119 | x[ 2] = x[ 2] ^ x[23] 120 | x[27] = x[27] ^ x[11] 121 | x[11] = x[11] ^ x[26] 122 | x[13] = x[13] ^ x[26] 123 | x[26] = x[26] ^ x[21] 124 | x[ 5] = x[ 5] ^ x[28] 125 | x[ 9] = x[ 9] ^ x[24] y[ 9] 126 | x[11] = x[11] ^ x[16] 127 | x[20] = x[20] ^ x[ 3] y[20] 128 | x[25] = x[25] ^ x[ 8] y[25] 129 | x[28] = x[28] ^ x[17] 130 | x[ 3] = x[ 3] ^ x[ 8] 131 | x[12] = x[12] ^ x[30] 132 | x[ 8] = x[ 8] ^ x[ 0] 133 | x[30] = x[30] ^ x[19] 134 | x[ 8] = x[ 8] ^ x[21] y[ 8] 135 | x[13] = x[13] ^ x[ 2] 136 | x[30] = x[30] ^ x[23] y[30] 137 | x[17] = x[17] ^ x[ 3] y[17] 138 | x[ 3] = x[ 3] ^ x[24] 139 | x[29] = x[29] ^ x[ 4] 140 | x[16] = x[16] ^ x[31] y[16] 141 | x[ 7] = x[ 7] ^ x[22] 142 | x[26] = x[26] ^ x[23] 143 | x[26] = x[26] ^ x[18] y[26] 144 | x[24] = x[24] ^ x[21] 145 | x[11] = x[11] ^ x[ 0] 146 | x[ 2] = x[ 2] ^ x[10] y[ 2] 147 | x[10] = x[10] ^ x[21] y[10] 148 | x[ 7] = x[ 7] ^ x[12] y[ 7] 149 | x[12] = x[12] ^ x[30] 150 | x[12] = x[12] ^ x[27] 151 | x[31] = x[31] ^ x[29] 152 | x[23] = x[23] ^ x[31] 153 | x[ 3] = x[ 3] ^ x[11] y[ 3] 154 | x[11] = x[11] ^ x[ 6] y[11] 155 | x[19] = x[19] ^ x[13] 156 | x[21] = x[21] ^ x[29] 157 | x[22] = x[22] ^ x[27] y[22] 158 | x[28] = x[28] ^ x[26] y[28] 159 | x[19] = x[19] ^ x[ 3] y[19] 160 | x[24] = x[24] ^ x[16] y[24] 161 | x[27] = x[27] ^ x[13] 162 | x[31] = x[31] ^ x[ 7] y[15] 163 | x[27] = x[27] ^ x[11] y[27] 164 | x[13] = x[13] ^ x[ 5] y[13] 165 | x[ 5] = x[ 5] ^ x[15] y[ 5] 166 | x[15] = x[15] ^ x[31] y[31] 167 | x[ 4] = x[ 4] ^ x[12] 168 | x[12] = x[12] ^ x[28] y[12] 169 | x[23] = x[23] ^ x[15] y[23] 170 | x[ 4] = x[ 4] ^ x[20] y[ 4] 171 | x[14] = x[14] ^ x[30] y[14] 172 | x[21] = x[21] ^ x[ 5] y[21] 173 | x[29] = x[29] ^ x[13] y[29] 174 | x[ 6] = x[ 6] ^ x[22] y[ 6] 175 | -------------------------------------------------------------------------------- /Implementations/FSE_LiWang16_4x4_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000100001000110 3 | 0100010000100011 4 | 0010001000011000 5 | 0001000110010100 6 | 0110100010000100 7 | 0011010001000010 8 | 1000001000100001 9 | 0100000100011001 10 | 0100011010001000 11 | 0010001101000100 12 | 0001100000100010 13 | 1001010000010001 14 | 1000010001101000 15 | 0100001000110100 16 | 0010000110000010 17 | 0001100101000001 18 | 19 | 20 | Reduced Matrix: 21 | 0000100000000000 22 | 0000000000100000 23 | 0000001000000000 24 | 0000000000010000 25 | 0000000100000000 26 | 0010000000000000 27 | 0000000000000001 28 | 0000010000000000 29 | 0000000010000000 30 | 0000000001000000 31 | 0001000000000000 32 | 1000000000000000 33 | 0000000000001000 34 | 0000000000000100 35 | 0000000000000010 36 | 0100000000000000 37 | 38 | 39 | Xor Count = 44 40 | x[ 2] = x[ 2] ^ x[ 7] 41 | x[ 7] = x[ 7] ^ x[11] 42 | x[ 0] = x[ 0] ^ x[10] 43 | x[11] = x[11] ^ x[10] 44 | x[12] = x[12] ^ x[ 5] 45 | x[ 5] = x[ 5] ^ x[15] 46 | x[10] = x[10] ^ x[14] 47 | x[ 4] = x[ 4] ^ x[10] 48 | x[14] = x[14] ^ x[ 2] 49 | x[ 2] = x[ 2] ^ x[15] 50 | x[15] = x[15] ^ x[ 6] 51 | x[ 9] = x[ 9] ^ x[ 0] 52 | x[15] = x[15] ^ x[ 0] y[ 6] 53 | x[ 6] = x[ 6] ^ x[ 1] 54 | x[ 0] = x[ 0] ^ x[ 5] 55 | x[ 5] = x[ 5] ^ x[ 1] 56 | x[10] = x[10] ^ x[ 5] y[ 1] 57 | x[ 1] = x[ 1] ^ x[14] 58 | x[14] = x[14] ^ x[ 8] y[14] 59 | x[ 1] = x[ 1] ^ x[ 4] 60 | x[ 5] = x[ 5] ^ x[12] 61 | x[ 5] = x[ 5] ^ x[ 7] y[ 7] 62 | x[ 7] = x[ 7] ^ x[ 8] 63 | x[ 8] = x[ 8] ^ x[12] 64 | x[12] = x[12] ^ x[ 9] y[12] 65 | x[ 9] = x[ 9] ^ x[13] 66 | x[13] = x[13] ^ x[11] 67 | x[11] = x[11] ^ x[ 3] 68 | x[ 3] = x[ 3] ^ x[ 4] y[10] 69 | x[ 4] = x[ 4] ^ x[ 9] y[ 0] 70 | x[ 9] = x[ 9] ^ x[15] 71 | x[ 8] = x[ 8] ^ x[ 6] y[ 8] 72 | x[ 0] = x[ 0] ^ x[11] y[11] 73 | x[ 7] = x[ 7] ^ x[13] 74 | x[11] = x[11] ^ x[ 7] y[ 3] 75 | x[ 9] = x[ 9] ^ x[ 2] y[ 9] 76 | x[13] = x[13] ^ x[ 6] y[13] 77 | x[ 2] = x[ 2] ^ x[ 5] 78 | x[ 6] = x[ 6] ^ x[ 2] y[ 2] 79 | x[ 2] = x[ 2] ^ x[ 0] 80 | x[ 2] = x[ 2] ^ x[12] 81 | x[ 7] = x[ 7] ^ x[ 1] y[ 4] 82 | x[ 1] = x[ 1] ^ x[ 2] y[15] 83 | x[ 2] = x[ 2] ^ x[10] y[ 5] 84 | -------------------------------------------------------------------------------- /Implementations/FSE_LiWang16_4x4_8.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000100000000100000010000010 3 | 01000000010000000010000001000001 4 | 00100000001000000001000010000000 5 | 00010000000100000000100001000000 6 | 00001000000010000000010000100000 7 | 00000100000001000000001000010000 8 | 00000010000000100000000100001000 9 | 00000001000000011010000000000100 10 | 10000010100000001000000001000000 11 | 01000001010000000100000000100000 12 | 10000000001000000010000000010000 13 | 01000000000100000001000000001000 14 | 00100000000010000000100000000100 15 | 00010000000001000000010000000010 16 | 00001000000000100000001000000001 17 | 00000100000000010000000110100000 18 | 01000000100000101000000010000000 19 | 00100000010000010100000001000000 20 | 00010000100000000010000000100000 21 | 00001000010000000001000000010000 22 | 00000100001000000000100000001000 23 | 00000010000100000000010000000100 24 | 00000001000010000000001000000010 25 | 10100000000001000000000100000001 26 | 10000000010000001000001010000000 27 | 01000000001000000100000101000000 28 | 00100000000100001000000000100000 29 | 00010000000010000100000000010000 30 | 00001000000001000010000000001000 31 | 00000100000000100001000000000100 32 | 00000010000000010000100000000010 33 | 00000001101000000000010000000001 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000000000000010 38 | 00000000000000000000000000000001 39 | 00000000000000000000000010000000 40 | 00000000000000000000100000000000 41 | 00000000000000000000000000100000 42 | 00000000000001000000000000000000 43 | 00000000000000000000000000001000 44 | 00000000010000000000000000000000 45 | 00000010000000000000000000000000 46 | 00000000000000000010000000000000 47 | 10000000000000000000000000000000 48 | 01000000000000000000000000000000 49 | 00000000000000000000010000000000 50 | 00000000000000000000000000000100 51 | 00000000000000000000001000000000 52 | 00000100000000000000000000000000 53 | 00000000000000100000000000000000 54 | 00000000000000010000000000000000 55 | 00010000000000000000000000000000 56 | 00000000000000000000000000010000 57 | 00000000001000000000000000000000 58 | 00000000000000000000000001000000 59 | 00000000000010000000000000000000 60 | 00000000000000000100000000000000 61 | 00000001000000000000000000000000 62 | 00000000000000000000000100000000 63 | 00000000000100000000000000000000 64 | 00100000000000000000000000000000 65 | 00000000000000000001000000000000 66 | 00001000000000000000000000000000 67 | 00000000100000000000000000000000 68 | 00000000000000001000000000000000 69 | 70 | 71 | Xor Count = 110 72 | x[ 1] = x[ 1] ^ x[18] 73 | x[ 8] = x[ 8] ^ x[26] 74 | x[12] = x[12] ^ x[30] 75 | x[28] = x[28] ^ x[23] 76 | x[23] = x[23] ^ x[ 0] 77 | x[ 8] = x[ 8] ^ x[18] 78 | x[ 0] = x[ 0] ^ x[18] 79 | x[18] = x[18] ^ x[16] 80 | x[16] = x[16] ^ x[26] 81 | x[26] = x[26] ^ x[30] 82 | x[30] = x[30] ^ x[20] 83 | x[20] = x[20] ^ x[ 3] 84 | x[ 3] = x[ 3] ^ x[ 8] y[18] 85 | x[ 8] = x[ 8] ^ x[ 0] 86 | x[18] = x[18] ^ x[ 7] 87 | x[ 7] = x[ 7] ^ x[22] 88 | x[ 5] = x[ 5] ^ x[22] 89 | x[20] = x[20] ^ x[11] 90 | x[11] = x[11] ^ x[ 2] 91 | x[22] = x[22] ^ x[ 9] 92 | x[19] = x[19] ^ x[ 2] 93 | x[ 2] = x[ 2] ^ x[ 9] 94 | x[30] = x[30] ^ x[15] 95 | x[ 0] = x[ 0] ^ x[24] 96 | x[13] = x[13] ^ x[27] 97 | x[18] = x[18] ^ x[ 9] 98 | x[31] = x[31] ^ x[ 9] 99 | x[ 9] = x[ 9] ^ x[15] 100 | x[20] = x[20] ^ x[25] y[ 3] 101 | x[15] = x[15] ^ x[25] 102 | x[25] = x[25] ^ x[ 1] 103 | x[ 1] = x[ 1] ^ x[16] 104 | x[ 8] = x[ 8] ^ x[ 1] 105 | x[11] = x[11] ^ x[16] y[26] 106 | x[22] = x[22] ^ x[14] 107 | x[14] = x[14] ^ x[ 8] 108 | x[16] = x[16] ^ x[23] 109 | x[23] = x[23] ^ x[17] 110 | x[ 6] = x[ 6] ^ x[ 8] 111 | x[ 8] = x[ 8] ^ x[30] 112 | x[22] = x[22] ^ x[ 4] 113 | x[ 4] = x[ 4] ^ x[ 2] 114 | x[ 1] = x[ 1] ^ x[17] 115 | x[17] = x[17] ^ x[ 2] 116 | x[ 2] = x[ 2] ^ x[21] 117 | x[21] = x[21] ^ x[30] 118 | x[30] = x[30] ^ x[26] 119 | x[30] = x[30] ^ x[24] 120 | x[24] = x[24] ^ x[10] 121 | x[10] = x[10] ^ x[28] 122 | x[15] = x[15] ^ x[17] y[17] 123 | x[17] = x[17] ^ x[13] 124 | x[13] = x[13] ^ x[ 5] y[ 5] 125 | x[28] = x[28] ^ x[14] 126 | x[14] = x[14] ^ x[ 0] y[16] 127 | x[ 2] = x[ 2] ^ x[12] 128 | x[ 5] = x[ 5] ^ x[29] 129 | x[ 9] = x[ 9] ^ x[29] 130 | x[29] = x[29] ^ x[27] 131 | x[26] = x[26] ^ x[ 4] 132 | x[ 4] = x[ 4] ^ x[19] 133 | x[12] = x[12] ^ x[ 7] y[22] 134 | x[ 7] = x[ 7] ^ x[ 0] 135 | x[ 0] = x[ 0] ^ x[24] 136 | x[24] = x[24] ^ x[19] y[ 2] 137 | x[19] = x[19] ^ x[10] 138 | x[29] = x[29] ^ x[20] 139 | x[ 7] = x[ 7] ^ x[18] y[24] 140 | x[23] = x[23] ^ x[ 0] 141 | x[ 0] = x[ 0] ^ x[27] y[10] 142 | x[27] = x[27] ^ x[ 4] y[19] 143 | x[ 4] = x[ 4] ^ x[ 5] 144 | x[ 5] = x[ 5] ^ x[16] 145 | x[ 5] = x[ 5] ^ x[ 9] 146 | x[16] = x[16] ^ x[21] 147 | x[21] = x[21] ^ x[ 9] 148 | x[ 9] = x[ 9] ^ x[18] y[ 7] 149 | x[19] = x[19] ^ x[23] 150 | x[ 5] = x[ 5] ^ x[ 7] y[15] 151 | x[18] = x[18] ^ x[ 1] y[ 9] 152 | x[ 4] = x[ 4] ^ x[22] y[29] 153 | x[22] = x[22] ^ x[31] y[14] 154 | x[26] = x[26] ^ x[ 2] y[ 4] 155 | x[31] = x[31] ^ x[23] 156 | x[23] = x[23] ^ x[25] y[25] 157 | x[16] = x[16] ^ x[31] 158 | x[10] = x[10] ^ x[ 5] 159 | x[10] = x[10] ^ x[30] y[20] 160 | x[16] = x[16] ^ x[ 8] 161 | x[30] = x[30] ^ x[ 1] 162 | x[16] = x[16] ^ x[18] y[31] 163 | x[30] = x[30] ^ x[ 8] y[ 0] 164 | x[28] = x[28] ^ x[ 6] y[ 6] 165 | x[ 8] = x[ 8] ^ x[ 6] y[30] 166 | x[ 1] = x[ 1] ^ x[11] 167 | x[ 6] = x[ 6] ^ x[25] y[ 8] 168 | x[25] = x[25] ^ x[ 1] 169 | x[25] = x[25] ^ x[21] 170 | x[29] = x[29] ^ x[25] 171 | x[25] = x[25] ^ x[15] 172 | x[21] = x[21] ^ x[ 2] y[12] 173 | x[ 1] = x[ 1] ^ x[19] y[11] 174 | x[ 2] = x[ 2] ^ x[29] y[27] 175 | x[29] = x[29] ^ x[17] y[13] 176 | x[19] = x[19] ^ x[17] 177 | x[17] = x[17] ^ x[ 0] 178 | x[17] = x[17] ^ x[31] y[23] 179 | x[31] = x[31] ^ x[23] y[ 1] 180 | x[19] = x[19] ^ x[27] y[28] 181 | x[25] = x[25] ^ x[ 8] y[21] 182 | -------------------------------------------------------------------------------- /Implementations/FSE_LiWang16_i_4x4_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000010011011001 3 | 0100101010000010 4 | 0010000110011000 5 | 0001011000100100 6 | 0100100010011101 7 | 1010010000101000 8 | 0001001010001001 9 | 0110000101000010 10 | 1101100110000100 11 | 1000001001001010 12 | 1001100000100001 13 | 0010010000010110 14 | 1001110101001000 15 | 0010100010100100 16 | 1000100100010010 17 | 0100001001100001 18 | 19 | 20 | Reduced Matrix: 21 | 0000000010000000 22 | 0100000000000000 23 | 0010000000000000 24 | 0001000000000000 25 | 0000000000001000 26 | 0000010000000000 27 | 0000001000000000 28 | 0000000100000000 29 | 1000000000000000 30 | 0000000001000000 31 | 0000000000100000 32 | 0000000000010000 33 | 0000100000000000 34 | 0000000000000100 35 | 0000000000000010 36 | 0000000000000001 37 | 38 | 39 | Xor Count = 44 40 | x[ 4] = x[ 4] ^ x[ 8] 41 | x[ 0] = x[ 0] ^ x[12] 42 | x[ 8] = x[ 8] ^ x[ 7] 43 | x[ 7] = x[ 7] ^ x[15] 44 | x[15] = x[15] ^ x[ 1] 45 | x[12] = x[12] ^ x[11] 46 | x[11] = x[11] ^ x[ 7] 47 | x[ 7] = x[ 7] ^ x[14] 48 | x[14] = x[14] ^ x[ 6] 49 | x[ 7] = x[ 7] ^ x[ 2] 50 | x[ 6] = x[ 6] ^ x[10] 51 | x[10] = x[10] ^ x[ 2] 52 | x[ 2] = x[ 2] ^ x[12] 53 | x[ 2] = x[ 2] ^ x[ 8] y[ 2] 54 | x[12] = x[12] ^ x[15] 55 | x[15] = x[15] ^ x[ 9] 56 | x[ 9] = x[ 9] ^ x[ 0] 57 | x[ 3] = x[ 3] ^ x[11] 58 | x[11] = x[11] ^ x[ 5] 59 | x[ 8] = x[ 8] ^ x[11] 60 | x[11] = x[11] ^ x[13] 61 | x[13] = x[13] ^ x[ 4] 62 | x[12] = x[12] ^ x[13] y[ 4] 63 | x[13] = x[13] ^ x[10] y[13] 64 | x[10] = x[10] ^ x[ 0] 65 | x[ 8] = x[ 8] ^ x[ 9] y[ 0] 66 | x[ 9] = x[ 9] ^ x[14] y[ 9] 67 | x[ 0] = x[ 0] ^ x[ 3] 68 | x[14] = x[14] ^ x[ 4] 69 | x[ 4] = x[ 4] ^ x[ 3] 70 | x[ 5] = x[ 5] ^ x[10] y[ 5] 71 | x[10] = x[10] ^ x[ 2] 72 | x[ 3] = x[ 3] ^ x[ 6] 73 | x[ 3] = x[ 3] ^ x[11] y[ 3] 74 | x[11] = x[11] ^ x[ 7] y[11] 75 | x[ 7] = x[ 7] ^ x[15] y[ 7] 76 | x[15] = x[15] ^ x[ 6] y[15] 77 | x[ 6] = x[ 6] ^ x[10] 78 | x[ 1] = x[ 1] ^ x[14] y[ 1] 79 | x[14] = x[14] ^ x[ 6] y[14] 80 | x[ 6] = x[ 6] ^ x[ 0] y[ 6] 81 | x[ 0] = x[ 0] ^ x[12] y[ 8] 82 | x[10] = x[10] ^ x[ 4] y[10] 83 | x[ 4] = x[ 4] ^ x[ 8] y[12] 84 | -------------------------------------------------------------------------------- /Implementations/FSE_LiWang16_i_4x4_8.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000010000000100000100000001 3 | 01000000001000001000000010100000 4 | 00100000000100000100000001010000 5 | 00010000000010000010000000101000 6 | 00001000000001000001000000010100 7 | 00000100000000100000100000001010 8 | 00000010000000010000010000000101 9 | 00000001101000000000001010100010 10 | 01000000100000000000000101000001 11 | 00100000010000001010000010000000 12 | 00010000001000000101000001000000 13 | 00001000000100000010100000100000 14 | 00000100000010000001010000010000 15 | 00000010000001000000101000001000 16 | 00000001000000100000010100000100 17 | 10100000000000011010001000000010 18 | 01000001000000011000000001000000 19 | 10000000101000000100000000100000 20 | 01000000010100000010000000010000 21 | 00100000001010000001000000001000 22 | 00010000000101000000100000000100 23 | 00001000000010100000010000000010 24 | 00000100000001010000001000000001 25 | 00000010101000100000000110100000 26 | 00000001010000010100000010000000 27 | 10100000100000000010000001000000 28 | 01010000010000000001000000100000 29 | 00101000001000000000100000010000 30 | 00010100000100000000010000001000 31 | 00001010000010000000001000000100 32 | 00000101000001000000000100000010 33 | 10100010000000101010000000000001 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000100000000000000 38 | 00000000000000000000000000100000 39 | 00000000000000000000000001000000 40 | 00000000000100000000000000000000 41 | 00000000000000000000000000000100 42 | 00000000000000000000000000000010 43 | 00000000000000000000000000000001 44 | 00000000000000000000001000000000 45 | 00000000000000000000000100000000 46 | 00000000000000000000000010000000 47 | 00000000000000000001000000000000 48 | 00000000000000000000100000000000 49 | 00001000000000000000000000000000 50 | 00000100000000000000000000000000 51 | 00000000000000100000000000000000 52 | 00000000000000001000000000000000 53 | 00000000000000010000000000000000 54 | 10000000000000000000000000000000 55 | 01000000000000000000000000000000 56 | 00000000000000000000000000010000 57 | 00000000000000000000000000001000 58 | 00000000000010000000000000000000 59 | 00000000000001000000000000000000 60 | 00000000100000000000000000000000 61 | 00000000010000000000000000000000 62 | 00100000000000000000000000000000 63 | 00000000000000000010000000000000 64 | 00000000001000000000000000000000 65 | 00010000000000000000000000000000 66 | 00000000000000000000010000000000 67 | 00000001000000000000000000000000 68 | 00000010000000000000000000000000 69 | 70 | 71 | Xor Count = 87 72 | x[22] = x[22] ^ x[15] 73 | x[ 6] = x[ 6] ^ x[14] 74 | x[14] = x[14] ^ x[21] 75 | x[21] = x[21] ^ x[ 5] 76 | x[ 7] = x[ 7] ^ x[23] 77 | x[28] = x[28] ^ x[21] 78 | x[23] = x[23] ^ x[ 6] 79 | x[12] = x[12] ^ x[ 4] 80 | x[ 4] = x[ 4] ^ x[27] 81 | x[ 5] = x[ 5] ^ x[22] 82 | x[15] = x[15] ^ x[ 6] 83 | x[27] = x[27] ^ x[11] 84 | x[24] = x[24] ^ x[17] 85 | x[24] = x[24] ^ x[23] 86 | x[22] = x[22] ^ x[30] 87 | x[17] = x[17] ^ x[10] 88 | x[11] = x[11] ^ x[28] 89 | x[10] = x[10] ^ x[ 2] 90 | x[21] = x[21] ^ x[12] 91 | x[ 2] = x[ 2] ^ x[ 0] 92 | x[ 2] = x[ 2] ^ x[18] 93 | x[18] = x[18] ^ x[27] 94 | x[28] = x[28] ^ x[20] 95 | x[20] = x[20] ^ x[ 4] 96 | x[ 4] = x[ 4] ^ x[19] 97 | x[30] = x[30] ^ x[14] 98 | x[14] = x[14] ^ x[29] 99 | x[29] = x[29] ^ x[13] 100 | x[13] = x[13] ^ x[ 5] 101 | x[23] = x[23] ^ x[16] 102 | x[14] = x[14] ^ x[15] 103 | x[15] = x[15] ^ x[ 7] 104 | x[19] = x[19] ^ x[ 3] 105 | x[ 6] = x[ 6] ^ x[31] 106 | x[16] = x[16] ^ x[ 2] 107 | x[27] = x[27] ^ x[10] 108 | x[23] = x[23] ^ x[ 1] 109 | x[ 1] = x[ 1] ^ x[ 9] 110 | x[ 3] = x[ 3] ^ x[11] y[28] 111 | x[ 5] = x[ 5] ^ x[14] 112 | x[ 6] = x[ 6] ^ x[16] y[31] 113 | x[ 9] = x[ 9] ^ x[24] 114 | x[ 7] = x[ 7] ^ x[13] 115 | x[ 1] = x[ 1] ^ x[18] y[18] 116 | x[18] = x[18] ^ x[26] 117 | x[12] = x[12] ^ x[30] y[21] 118 | x[13] = x[13] ^ x[31] y[22] 119 | x[ 2] = x[ 2] ^ x[ 8] 120 | x[16] = x[16] ^ x[22] y[15] 121 | x[26] = x[26] ^ x[17] 122 | x[ 9] = x[ 9] ^ x[15] y[24] 123 | x[ 8] = x[ 8] ^ x[26] 124 | x[ 0] = x[ 0] ^ x[ 8] y[17] 125 | x[ 7] = x[ 7] ^ x[22] y[30] 126 | x[10] = x[10] ^ x[20] y[27] 127 | x[31] = x[31] ^ x[14] y[ 6] 128 | x[30] = x[30] ^ x[28] y[ 5] 129 | x[ 8] = x[ 8] ^ x[24] y[23] 130 | x[22] = x[22] ^ x[15] 131 | x[28] = x[28] ^ x[29] 132 | x[20] = x[20] ^ x[18] y[11] 133 | x[24] = x[24] ^ x[23] 134 | x[14] = x[14] ^ x[15] y[14] 135 | x[ 2] = x[ 2] ^ x[25] y[25] 136 | x[15] = x[15] ^ x[25] 137 | x[29] = x[29] ^ x[ 4] y[ 4] 138 | x[15] = x[15] ^ x[23] y[16] 139 | x[23] = x[23] ^ x[ 6] 140 | x[ 4] = x[ 4] ^ x[21] y[12] 141 | x[11] = x[11] ^ x[ 4] 142 | x[21] = x[21] ^ x[ 5] y[29] 143 | x[ 5] = x[ 5] ^ x[28] y[13] 144 | x[28] = x[28] ^ x[ 3] y[20] 145 | x[18] = x[18] ^ x[19] 146 | x[17] = x[17] ^ x[27] 147 | x[19] = x[19] ^ x[27] 148 | x[27] = x[27] ^ x[11] y[19] 149 | x[11] = x[11] ^ x[18] y[ 3] 150 | x[18] = x[18] ^ x[ 1] y[26] 151 | x[25] = x[25] ^ x[17] y[ 2] 152 | x[19] = x[19] ^ x[25] y[10] 153 | x[17] = x[17] ^ x[ 1] 154 | x[22] = x[22] ^ x[ 8] y[ 7] 155 | x[26] = x[26] ^ x[24] y[ 1] 156 | x[24] = x[24] ^ x[17] y[ 9] 157 | x[17] = x[17] ^ x[23] y[ 0] 158 | x[23] = x[23] ^ x[ 2] y[ 8] 159 | -------------------------------------------------------------------------------- /Implementations/FSE_LimSim16_4x4_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000100011000010 3 | 0100010000100011 4 | 0010001000011001 5 | 0001000110000100 6 | 0010100010001100 7 | 0011010001000010 8 | 1001001000100001 9 | 0100000100011000 10 | 1100001010001000 11 | 0010001101000100 12 | 0001100100100010 13 | 1000010000010001 14 | 1000110000101000 15 | 0100001000110100 16 | 0010000110010010 17 | 0001100001000001 18 | 19 | 20 | Reduced Matrix: 21 | 0000001000000000 22 | 0000000000100000 23 | 0010000000000000 24 | 0001000000000000 25 | 0000000000001000 26 | 0000000001000000 27 | 0000000000000001 28 | 0000000000010000 29 | 0100000000000000 30 | 0000000010000000 31 | 1000000000000000 32 | 0000000100000000 33 | 0000000000000010 34 | 0000000000000100 35 | 0000010000000000 36 | 0000100000000000 37 | 38 | 39 | Xor Count = 44 40 | x[ 5] = x[ 5] ^ x[15] 41 | x[ 7] = x[ 7] ^ x[ 8] 42 | x[10] = x[10] ^ x[ 1] 43 | x[ 1] = x[ 1] ^ x[ 0] 44 | x[ 8] = x[ 8] ^ x[12] 45 | x[12] = x[12] ^ x[15] 46 | x[15] = x[15] ^ x[ 3] 47 | x[ 9] = x[ 9] ^ x[15] 48 | x[ 0] = x[ 0] ^ x[ 7] 49 | x[ 3] = x[ 3] ^ x[ 7] 50 | x[ 7] = x[ 7] ^ x[11] 51 | x[ 7] = x[ 7] ^ x[ 5] 52 | x[ 5] = x[ 5] ^ x[14] 53 | x[11] = x[11] ^ x[ 6] 54 | x[14] = x[14] ^ x[ 1] 55 | x[ 1] = x[ 1] ^ x[ 6] 56 | x[ 6] = x[ 6] ^ x[ 3] 57 | x[ 3] = x[ 3] ^ x[13] y[ 3] 58 | x[ 6] = x[ 6] ^ x[ 9] 59 | x[15] = x[15] ^ x[ 1] 60 | x[ 1] = x[ 1] ^ x[ 8] y[ 8] 61 | x[15] = x[15] ^ x[10] y[ 6] 62 | x[ 8] = x[ 8] ^ x[13] 63 | x[13] = x[13] ^ x[10] 64 | x[10] = x[10] ^ x[ 5] y[ 1] 65 | x[ 5] = x[ 5] ^ x[ 2] 66 | x[ 2] = x[ 2] ^ x[12] 67 | x[13] = x[13] ^ x[11] y[13] 68 | x[12] = x[12] ^ x[ 4] 69 | x[ 8] = x[ 8] ^ x[ 2] 70 | x[ 4] = x[ 4] ^ x[ 9] y[15] 71 | x[ 2] = x[ 2] ^ x[11] y[ 2] 72 | x[ 9] = x[ 9] ^ x[ 5] y[ 5] 73 | x[ 5] = x[ 5] ^ x[ 7] y[14] 74 | x[ 7] = x[ 7] ^ x[ 0] y[11] 75 | x[14] = x[14] ^ x[12] 76 | x[12] = x[12] ^ x[ 8] y[ 4] 77 | x[ 0] = x[ 0] ^ x[ 1] 78 | x[11] = x[11] ^ x[ 0] y[ 7] 79 | x[ 0] = x[ 0] ^ x[14] 80 | x[ 8] = x[ 8] ^ x[ 6] y[ 9] 81 | x[ 6] = x[ 6] ^ x[ 0] y[ 0] 82 | x[14] = x[14] ^ x[10] y[12] 83 | x[ 0] = x[ 0] ^ x[15] y[10] 84 | -------------------------------------------------------------------------------- /Implementations/FSE_LiuSim16_4x4_8.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000100000000000000111100000 3 | 01000000010000001000000100010000 4 | 00100000001000000100000000001000 5 | 00010000000100000010000000000100 6 | 00001000000010000001000010000010 7 | 00000100000001000000100001000001 8 | 00000010000000100000010101000000 9 | 00000001000000010000001111000000 10 | 11100000100000001000000000000001 11 | 00010000010000000100000010000001 12 | 00001000001000000010000001000000 13 | 00000100000100000001000000100000 14 | 10000010000010000000100000010000 15 | 01000001000001000000010000001000 16 | 01000000000000100000001000000101 17 | 11000000000000010000000100000011 18 | 00000001111000001000000010000000 19 | 10000001000100000100000001000000 20 | 01000000000010000010000000100000 21 | 00100000000001000001000000010000 22 | 00010000100000100000100000001000 23 | 00001000010000010000010000000100 24 | 00000101010000000000001000000010 25 | 00000011110000000000000100000001 26 | 10000000000000011110000010000000 27 | 01000000100000010001000001000000 28 | 00100000010000000000100000100000 29 | 00010000001000000000010000010000 30 | 00001000000100001000001000001000 31 | 00000100000010000100000100000100 32 | 00000010000001010100000000000010 33 | 00000001000000111100000000000001 34 | 35 | 36 | Reduced Matrix: 37 | 00000001000000000000000000000000 38 | 01000000000000000000000000000000 39 | 00100000000000000000000000000000 40 | 00000000000000000000010000000000 41 | 00000000000000000000000000000001 42 | 00000000000001000000000000000000 43 | 10000000000000000000000000000000 44 | 00000000000000000000001000000000 45 | 00000000000000000000000010000000 46 | 00010000000000000000000000000000 47 | 00000000000000000000000001000000 48 | 00000100000000000000000000000000 49 | 00000000000000000000100000000000 50 | 00000000001000000000000000000000 51 | 00000000000000000000000000000100 52 | 00000000000000000000000000000010 53 | 00000000100000000000000000000000 54 | 00000000000100000000000000000000 55 | 00000000000010000000000000000000 56 | 00000000010000000000000000000000 57 | 00000000000000000000000000001000 58 | 00000000000000001000000000000000 59 | 00000000000000010000000000000000 60 | 00000000000000000000000100000000 61 | 00001000000000000000000000000000 62 | 00000000000000000001000000000000 63 | 00000000000000000000000000100000 64 | 00000000000000000000000000010000 65 | 00000010000000000000000000000000 66 | 00000000000000000010000000000000 67 | 00000000000000000100000000000000 68 | 00000000000000100000000000000000 69 | 70 | 71 | Xor Count = 121 72 | x[24] = x[24] ^ x[ 9] 73 | x[ 0] = x[ 0] ^ x[24] 74 | x[19] = x[19] ^ x[26] 75 | x[21] = x[21] ^ x[16] 76 | x[ 7] = x[ 7] ^ x[24] 77 | x[24] = x[24] ^ x[31] 78 | x[13] = x[13] ^ x[20] 79 | x[30] = x[30] ^ x[13] 80 | x[ 5] = x[ 5] ^ x[19] 81 | x[13] = x[13] ^ x[19] 82 | x[19] = x[19] ^ x[14] 83 | x[14] = x[14] ^ x[ 1] 84 | x[23] = x[23] ^ x[ 9] 85 | x[ 1] = x[ 1] ^ x[16] 86 | x[28] = x[28] ^ x[10] 87 | x[ 8] = x[ 8] ^ x[ 7] 88 | x[ 7] = x[ 7] ^ x[25] 89 | x[30] = x[30] ^ x[24] 90 | x[ 6] = x[ 6] ^ x[24] 91 | x[10] = x[10] ^ x[16] 92 | x[16] = x[16] ^ x[18] 93 | x[16] = x[16] ^ x[ 4] 94 | x[18] = x[18] ^ x[29] 95 | x[18] = x[18] ^ x[21] 96 | x[20] = x[20] ^ x[15] 97 | x[ 4] = x[ 4] ^ x[26] 98 | x[12] = x[12] ^ x[ 4] 99 | x[ 4] = x[ 4] ^ x[ 0] 100 | x[26] = x[26] ^ x[17] 101 | x[29] = x[29] ^ x[22] 102 | x[ 2] = x[ 2] ^ x[17] 103 | x[22] = x[22] ^ x[ 7] 104 | x[ 7] = x[ 7] ^ x[17] 105 | x[29] = x[29] ^ x[14] 106 | x[ 7] = x[ 7] ^ x[ 0] 107 | x[29] = x[29] ^ x[31] y[14] 108 | x[14] = x[14] ^ x[15] 109 | x[22] = x[22] ^ x[15] 110 | x[14] = x[14] ^ x[ 0] 111 | x[ 0] = x[ 0] ^ x[23] 112 | x[ 0] = x[ 0] ^ x[21] 113 | x[21] = x[21] ^ x[ 3] 114 | x[ 3] = x[ 3] ^ x[24] 115 | x[24] = x[24] ^ x[25] 116 | x[24] = x[24] ^ x[ 1] 117 | x[24] = x[24] ^ x[ 7] 118 | x[19] = x[19] ^ x[14] 119 | x[14] = x[14] ^ x[24] y[31] 120 | x[24] = x[24] ^ x[ 8] 121 | x[24] = x[24] ^ x[ 2] y[ 8] 122 | x[ 2] = x[ 2] ^ x[28] y[ 2] 123 | x[28] = x[28] ^ x[20] 124 | x[20] = x[20] ^ x[30] 125 | x[ 3] = x[ 3] ^ x[17] y[ 9] 126 | x[20] = x[20] ^ x[ 6] 127 | x[17] = x[17] ^ x[20] y[30] 128 | x[20] = x[20] ^ x[15] 129 | x[15] = x[15] ^ x[ 9] 130 | x[ 9] = x[ 9] ^ x[13] 131 | x[13] = x[13] ^ x[25] 132 | x[13] = x[13] ^ x[31] 133 | x[31] = x[31] ^ x[12] 134 | x[12] = x[12] ^ x[ 1] 135 | x[25] = x[25] ^ x[16] 136 | x[ 1] = x[ 1] ^ x[27] 137 | x[13] = x[13] ^ x[ 5] y[ 5] 138 | x[12] = x[12] ^ x[16] y[18] 139 | x[20] = x[20] ^ x[ 4] 140 | x[ 4] = x[ 4] ^ x[16] 141 | x[16] = x[16] ^ x[15] 142 | x[16] = x[16] ^ x[18] y[21] 143 | x[ 5] = x[ 5] ^ x[11] y[11] 144 | x[18] = x[18] ^ x[11] 145 | x[11] = x[11] ^ x[ 7] y[17] 146 | x[ 7] = x[ 7] ^ x[26] 147 | x[26] = x[26] ^ x[15] 148 | x[ 0] = x[ 0] ^ x[26] 149 | x[15] = x[15] ^ x[30] 150 | x[30] = x[30] ^ x[ 9] 151 | x[ 9] = x[ 9] ^ x[27] 152 | x[27] = x[27] ^ x[21] 153 | x[21] = x[21] ^ x[18] y[ 3] 154 | x[18] = x[18] ^ x[ 5] 155 | x[18] = x[18] ^ x[19] 156 | x[19] = x[19] ^ x[23] 157 | x[15] = x[15] ^ x[22] 158 | x[ 1] = x[ 1] ^ x[23] y[ 1] 159 | x[22] = x[22] ^ x[23] y[ 7] 160 | x[23] = x[23] ^ x[ 6] 161 | x[ 7] = x[ 7] ^ x[ 6] 162 | x[23] = x[23] ^ x[ 8] y[23] 163 | x[25] = x[25] ^ x[10] y[10] 164 | x[27] = x[27] ^ x[10] y[27] 165 | x[ 8] = x[ 8] ^ x[10] y[16] 166 | x[10] = x[10] ^ x[11] 167 | x[ 6] = x[ 6] ^ x[10] 168 | x[10] = x[10] ^ x[21] 169 | x[ 4] = x[ 4] ^ x[26] y[24] 170 | x[26] = x[26] ^ x[28] 171 | x[28] = x[28] ^ x[ 3] 172 | x[ 6] = x[ 6] ^ x[26] 173 | x[26] = x[26] ^ x[ 2] y[26] 174 | x[10] = x[10] ^ x[28] 175 | x[28] = x[28] ^ x[14] 176 | x[10] = x[10] ^ x[18] 177 | x[18] = x[18] ^ x[ 0] 178 | x[ 0] = x[ 0] ^ x[ 7] 179 | x[ 0] = x[ 0] ^ x[14] y[ 6] 180 | x[ 7] = x[ 7] ^ x[23] y[ 0] 181 | x[ 6] = x[ 6] ^ x[15] 182 | x[ 6] = x[ 6] ^ x[20] y[28] 183 | x[20] = x[20] ^ x[ 9] 184 | x[31] = x[31] ^ x[30] y[ 4] 185 | x[30] = x[30] ^ x[19] y[15] 186 | x[19] = x[19] ^ x[ 7] y[25] 187 | x[28] = x[28] ^ x[ 8] y[20] 188 | x[20] = x[20] ^ x[31] y[12] 189 | x[ 9] = x[ 9] ^ x[26] y[19] 190 | x[15] = x[15] ^ x[13] y[22] 191 | x[18] = x[18] ^ x[12] y[29] 192 | x[10] = x[10] ^ x[13] y[13] 193 | -------------------------------------------------------------------------------- /Implementations/FSE_SKOP15_4x4_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000000101001100 3 | 0100100101100010 4 | 0010010000110001 5 | 0001001010011000 6 | 0001100011000100 7 | 1001010000100110 8 | 0100001000010011 9 | 0010000110001001 10 | 0100110010000001 11 | 0110001001001001 12 | 0011000100100100 13 | 1001100000010010 14 | 1100010000011000 15 | 0010011010010100 16 | 0001001101000010 17 | 1000100100100001 18 | 19 | 20 | Reduced Matrix: 21 | 0000000000010000 22 | 0000000000000010 23 | 0000010000000000 24 | 0000001000000000 25 | 0001000000000000 26 | 1000000000000000 27 | 0100000000000000 28 | 0010000000000000 29 | 0000000010000000 30 | 0000000000001000 31 | 0000000000000100 32 | 0000000000100000 33 | 0000000100000000 34 | 0000100000000000 35 | 0000000001000000 36 | 0000000000000001 37 | 38 | 39 | Xor Count = 44 40 | x[12] = x[12] ^ x[11] 41 | x[11] = x[11] ^ x[15] 42 | x[15] = x[15] ^ x[ 4] 43 | x[ 7] = x[ 7] ^ x[10] 44 | x[ 0] = x[ 0] ^ x[ 7] 45 | x[ 3] = x[ 3] ^ x[ 7] 46 | x[ 7] = x[ 7] ^ x[12] 47 | x[12] = x[12] ^ x[ 9] 48 | x[ 4] = x[ 4] ^ x[12] 49 | x[ 8] = x[ 8] ^ x[ 7] 50 | x[ 7] = x[ 7] ^ x[ 1] 51 | x[ 1] = x[ 1] ^ x[11] 52 | x[15] = x[15] ^ x[ 0] y[15] 53 | x[ 0] = x[ 0] ^ x[ 5] 54 | x[ 1] = x[ 1] ^ x[ 6] 55 | x[11] = x[11] ^ x[10] 56 | x[12] = x[12] ^ x[ 1] 57 | x[ 1] = x[ 1] ^ x[14] y[ 6] 58 | x[10] = x[10] ^ x[14] 59 | x[14] = x[14] ^ x[ 7] 60 | x[ 7] = x[ 7] ^ x[ 0] y[12] 61 | x[ 0] = x[ 0] ^ x[13] 62 | x[14] = x[14] ^ x[ 4] y[ 1] 63 | x[12] = x[12] ^ x[ 2] y[ 9] 64 | x[ 4] = x[ 4] ^ x[13] 65 | x[13] = x[13] ^ x[ 2] 66 | x[ 2] = x[ 2] ^ x[11] 67 | x[13] = x[13] ^ x[ 3] y[10] 68 | x[10] = x[10] ^ x[ 3] 69 | x[ 3] = x[ 3] ^ x[ 8] 70 | x[11] = x[11] ^ x[15] 71 | x[ 5] = x[ 5] ^ x[ 2] y[ 2] 72 | x[ 2] = x[ 2] ^ x[ 8] y[ 7] 73 | x[ 9] = x[ 9] ^ x[ 6] 74 | x[ 8] = x[ 8] ^ x[15] 75 | x[ 0] = x[ 0] ^ x[10] y[ 5] 76 | x[ 9] = x[ 9] ^ x[10] y[14] 77 | x[10] = x[10] ^ x[11] y[11] 78 | x[ 8] = x[ 8] ^ x[ 7] y[ 8] 79 | x[ 6] = x[ 6] ^ x[ 3] y[ 3] 80 | x[11] = x[11] ^ x[ 4] y[ 0] 81 | x[ 3] = x[ 3] ^ x[ 4] y[ 4] 82 | x[ 4] = x[ 4] ^ x[ 8] 83 | x[ 4] = x[ 4] ^ x[12] y[13] 84 | -------------------------------------------------------------------------------- /Implementations/FSE_SKOP15_4x4_8.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000000100000100000011000000 3 | 01000000100100000110000000100000 4 | 00100000010000000011000000010000 5 | 00010000001000001001000010000000 6 | 00001000000000010000010000001100 7 | 00000100000010010000011000000010 8 | 00000010000001000000001100000001 9 | 00000001000000100000100100001000 10 | 00010000100000001100000001000000 11 | 10010000010000000010000001100000 12 | 01000000001000000001000000110000 13 | 00100000000100001000000010010000 14 | 00000001000010000000110000000100 15 | 00001001000001000000001000000110 16 | 00000100000000100000000100000011 17 | 00000010000000010000100000001001 18 | 01000000110000001000000000010000 19 | 01100000001000000100000010010000 20 | 00110000000100000010000001000000 21 | 10010000100000000001000000100000 22 | 00000100000011000000100000000001 23 | 00000110000000100000010000001001 24 | 00000011000000010000001000000100 25 | 00001001000010000000000100000010 26 | 11000000010000000001000010000000 27 | 00100000011000001001000001000000 28 | 00010000001100000100000000100000 29 | 10000000100100000010000000010000 30 | 00001100000001000000000100001000 31 | 00000010000001100000100100000100 32 | 00000001000000110000010000000010 33 | 00001000000010010000001000000001 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000000001000000 38 | 10000000000000000000000000000000 39 | 00100000000000000000000000000000 40 | 00000000000000001000000000000000 41 | 00000000000000000000000000000100 42 | 00000000000000000000000000000010 43 | 00000000000000000000001000000000 44 | 00000000000000000000000000001000 45 | 00000000000000000100000000000000 46 | 00000000000000000000000000100000 47 | 00000000000000000001000000000000 48 | 00000000000000000000000010000000 49 | 00000000000000100000000000000000 50 | 00000000000000000000100000000000 51 | 00000000000000000000000000000001 52 | 00000000000000000000010000000000 53 | 01000000000000000000000000000000 54 | 00000000001000000000000000000000 55 | 00000000000100000000000000000000 56 | 00000000100000000000000000000000 57 | 00000000000010000000000000000000 58 | 00000100000000000000000000000000 59 | 00000000000000010000000000000000 60 | 00000000000000000000000100000000 61 | 00000000000000000010000000000000 62 | 00000000010000000000000000000000 63 | 00010000000000000000000000000000 64 | 00000000000000000000000000010000 65 | 00000000000001000000000000000000 66 | 00000010000000000000000000000000 67 | 00000001000000000000000000000000 68 | 00001000000000000000000000000000 69 | 70 | 71 | Xor Count = 90 72 | x[ 1] = x[ 1] ^ x[27] 73 | x[21] = x[21] ^ x[15] 74 | x[ 3] = x[ 3] ^ x[25] 75 | x[26] = x[26] ^ x[ 1] 76 | x[25] = x[25] ^ x[24] 77 | x[24] = x[24] ^ x[ 2] 78 | x[ 2] = x[ 2] ^ x[18] 79 | x[15] = x[15] ^ x[22] 80 | x[18] = x[18] ^ x[ 0] 81 | x[ 0] = x[ 0] ^ x[17] 82 | x[22] = x[22] ^ x[ 6] 83 | x[16] = x[16] ^ x[ 8] 84 | x[ 1] = x[ 1] ^ x[24] 85 | x[ 5] = x[ 5] ^ x[20] 86 | x[20] = x[20] ^ x[23] 87 | x[23] = x[23] ^ x[12] 88 | x[12] = x[12] ^ x[31] 89 | x[20] = x[20] ^ x[14] 90 | x[14] = x[14] ^ x[21] 91 | x[21] = x[21] ^ x[28] 92 | x[22] = x[22] ^ x[23] 93 | x[28] = x[28] ^ x[ 7] 94 | x[24] = x[24] ^ x[16] 95 | x[16] = x[16] ^ x[ 3] 96 | x[ 3] = x[ 3] ^ x[ 2] 97 | x[31] = x[31] ^ x[20] 98 | x[21] = x[21] ^ x[ 4] 99 | x[ 2] = x[ 2] ^ x[19] 100 | x[ 2] = x[ 2] ^ x[ 9] 101 | x[ 2] = x[ 2] ^ x[27] y[ 2] 102 | x[27] = x[27] ^ x[11] 103 | x[23] = x[23] ^ x[ 4] 104 | x[ 4] = x[ 4] ^ x[12] 105 | x[12] = x[12] ^ x[13] 106 | x[27] = x[27] ^ x[ 8] 107 | x[ 8] = x[ 8] ^ x[25] 108 | x[ 9] = x[ 9] ^ x[24] 109 | x[25] = x[25] ^ x[11] 110 | x[13] = x[13] ^ x[20] 111 | x[24] = x[24] ^ x[27] y[11] 112 | x[11] = x[11] ^ x[ 3] y[18] 113 | x[28] = x[28] ^ x[20] y[ 7] 114 | x[20] = x[20] ^ x[22] 115 | x[27] = x[27] ^ x[18] y[27] 116 | x[ 4] = x[ 4] ^ x[15] y[31] 117 | x[15] = x[15] ^ x[ 7] 118 | x[ 7] = x[ 7] ^ x[30] 119 | x[18] = x[18] ^ x[ 1] 120 | x[19] = x[19] ^ x[10] 121 | x[ 3] = x[ 3] ^ x[10] 122 | x[30] = x[30] ^ x[ 5] 123 | x[10] = x[10] ^ x[17] 124 | x[31] = x[31] ^ x[30] y[14] 125 | x[22] = x[22] ^ x[12] y[ 6] 126 | x[12] = x[12] ^ x[ 5] y[20] 127 | x[ 5] = x[ 5] ^ x[14] 128 | x[17] = x[17] ^ x[16] y[ 8] 129 | x[23] = x[23] ^ x[ 7] y[23] 130 | x[ 7] = x[ 7] ^ x[14] y[30] 131 | x[30] = x[30] ^ x[ 6] 132 | x[25] = x[25] ^ x[ 0] y[ 0] 133 | x[10] = x[10] ^ x[ 1] y[17] 134 | x[ 0] = x[ 0] ^ x[26] 135 | x[ 6] = x[ 6] ^ x[29] 136 | x[ 1] = x[ 1] ^ x[ 9] y[16] 137 | x[ 9] = x[ 9] ^ x[16] 138 | x[ 8] = x[ 8] ^ x[19] 139 | x[19] = x[19] ^ x[26] y[10] 140 | x[29] = x[29] ^ x[21] y[ 4] 141 | x[15] = x[15] ^ x[ 6] y[22] 142 | x[ 6] = x[ 6] ^ x[13] y[29] 143 | x[13] = x[13] ^ x[21] 144 | x[21] = x[21] ^ x[ 4] 145 | x[13] = x[13] ^ x[ 5] y[28] 146 | x[14] = x[14] ^ x[20] 147 | x[20] = x[20] ^ x[ 6] 148 | x[26] = x[26] ^ x[18] 149 | x[21] = x[21] ^ x[14] y[15] 150 | x[ 3] = x[ 3] ^ x[26] 151 | x[26] = x[26] ^ x[ 9] y[ 9] 152 | x[30] = x[30] ^ x[14] y[ 5] 153 | x[16] = x[16] ^ x[ 8] y[ 3] 154 | x[ 8] = x[ 8] ^ x[ 3] y[19] 155 | x[20] = x[20] ^ x[23] y[13] 156 | x[ 3] = x[ 3] ^ x[25] y[26] 157 | x[14] = x[14] ^ x[15] y[12] 158 | x[ 0] = x[ 0] ^ x[27] y[ 1] 159 | x[ 5] = x[ 5] ^ x[21] y[21] 160 | x[18] = x[18] ^ x[ 2] y[24] 161 | x[ 9] = x[ 9] ^ x[16] y[25] 162 | -------------------------------------------------------------------------------- /Implementations/FSE_SKOP15_8x8_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000001001101001100011011100101 3 | 01001001101001100010010100011111 4 | 00100100110100110001101010000111 5 | 00010010011010011000110111001011 6 | 00011000010000110110110001011110 7 | 10010100011010100101001011110001 8 | 01000010001111011010000101111000 9 | 00100001100101101101100010111100 10 | 00110100100000011110010111000110 11 | 10100110010010010001111100100101 12 | 11010011001001001000011100011010 13 | 01101001000100101100101110001101 14 | 01000011000110000101111001101100 15 | 01101010100101001111000101010010 16 | 00111101010000100111100010100001 17 | 10010110001000011011110011011000 18 | 11000110111001011000000100110100 19 | 00100101000111110100100110100110 20 | 00011010100001110010010011010011 21 | 10001101110010110001001001101001 22 | 01101100010111100001100001000011 23 | 01010010111100011001010001101010 24 | 10100001011110000100001000111101 25 | 11011000101111000010000110010110 26 | 11100101110001100011010010000001 27 | 00011111001001011010011001001001 28 | 10000111000110101101001100100100 29 | 11001011100011010110100100010010 30 | 01011110011011000100001100011000 31 | 11110001010100100110101010010100 32 | 01111000101000010011110101000010 33 | 10111100110110001001011000100001 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000000000100000 38 | 01000000000000000000000000000000 39 | 00000000000000000000000000010000 40 | 00000000000001000000000000000000 41 | 00000000010000000000000000000000 42 | 00000000000000000000000001000000 43 | 00000000000000000100000000000000 44 | 00001000000000000000000000000000 45 | 10000000000000000000000000000000 46 | 00000000000000000000000000000100 47 | 00000100000000000000000000000000 48 | 00000000000000000001000000000000 49 | 00000000000000000000000100000000 50 | 00000000001000000000000000000000 51 | 00000000000000000000001000000000 52 | 00010000000000000000000000000000 53 | 00000000000000000000000000000001 54 | 00000000000010000000000000000000 55 | 00000000000000100000000000000000 56 | 00000000000000000000000000001000 57 | 00000000000000000000100000000000 58 | 00000000000100000000000000000000 59 | 00100000000000000000000000000000 60 | 00000010000000000000000000000000 61 | 00000000000000010000000000000000 62 | 00000000000000000000010000000000 63 | 00000000100000000000000000000000 64 | 00000001000000000000000000000000 65 | 00000000000000000010000000000000 66 | 00000000000000000000000000000010 67 | 00000000000000000000000010000000 68 | 00000000000000001000000000000000 69 | 70 | 71 | Xor Count = 170 72 | x[26] = x[26] ^ x[22] 73 | x[13] = x[13] ^ x[ 1] 74 | x[31] = x[31] ^ x[19] 75 | x[12] = x[12] ^ x[26] 76 | x[ 5] = x[ 5] ^ x[ 9] 77 | x[ 0] = x[ 0] ^ x[12] 78 | x[ 0] = x[ 0] ^ x[ 5] 79 | x[24] = x[24] ^ x[31] 80 | x[19] = x[19] ^ x[29] 81 | x[ 2] = x[ 2] ^ x[14] 82 | x[14] = x[14] ^ x[ 0] 83 | x[29] = x[29] ^ x[ 0] 84 | x[30] = x[30] ^ x[ 0] 85 | x[ 1] = x[ 1] ^ x[23] 86 | x[27] = x[27] ^ x[23] 87 | x[23] = x[23] ^ x[19] 88 | x[19] = x[19] ^ x[15] 89 | x[15] = x[15] ^ x[ 3] 90 | x[10] = x[10] ^ x[ 6] 91 | x[23] = x[23] ^ x[ 6] 92 | x[ 9] = x[ 9] ^ x[17] 93 | x[ 3] = x[ 3] ^ x[31] 94 | x[24] = x[24] ^ x[20] 95 | x[22] = x[22] ^ x[24] 96 | x[22] = x[22] ^ x[12] 97 | x[12] = x[12] ^ x[ 7] 98 | x[ 6] = x[ 6] ^ x[11] 99 | x[ 7] = x[ 7] ^ x[11] 100 | x[19] = x[19] ^ x[11] 101 | x[21] = x[21] ^ x[25] 102 | x[27] = x[27] ^ x[13] 103 | x[29] = x[29] ^ x[17] 104 | x[17] = x[17] ^ x[20] 105 | x[ 4] = x[ 4] ^ x[ 8] 106 | x[20] = x[20] ^ x[12] 107 | x[20] = x[20] ^ x[ 8] 108 | x[ 3] = x[ 3] ^ x[17] 109 | x[ 8] = x[ 8] ^ x[ 1] 110 | x[17] = x[17] ^ x[11] 111 | x[20] = x[20] ^ x[18] 112 | x[12] = x[12] ^ x[28] 113 | x[28] = x[28] ^ x[13] 114 | x[ 9] = x[ 9] ^ x[28] 115 | x[13] = x[13] ^ x[15] 116 | x[ 9] = x[ 9] ^ x[ 8] 117 | x[19] = x[19] ^ x[ 1] 118 | x[29] = x[29] ^ x[26] 119 | x[11] = x[11] ^ x[22] 120 | x[22] = x[22] ^ x[26] 121 | x[26] = x[26] ^ x[31] 122 | x[ 6] = x[ 6] ^ x[ 3] 123 | x[22] = x[22] ^ x[ 3] 124 | x[22] = x[22] ^ x[20] 125 | x[20] = x[20] ^ x[25] 126 | x[25] = x[25] ^ x[17] 127 | x[11] = x[11] ^ x[ 8] 128 | x[ 3] = x[ 3] ^ x[14] 129 | x[ 8] = x[ 8] ^ x[14] 130 | x[14] = x[14] ^ x[19] 131 | x[30] = x[30] ^ x[18] 132 | x[19] = x[19] ^ x[18] 133 | x[18] = x[18] ^ x[12] 134 | x[17] = x[17] ^ x[12] 135 | x[12] = x[12] ^ x[31] 136 | x[12] = x[12] ^ x[ 9] 137 | x[ 9] = x[ 9] ^ x[23] 138 | x[23] = x[23] ^ x[ 1] 139 | x[25] = x[25] ^ x[13] 140 | x[ 0] = x[ 0] ^ x[24] 141 | x[30] = x[30] ^ x[27] 142 | x[16] = x[16] ^ x[28] 143 | x[31] = x[31] ^ x[ 5] 144 | x[ 5] = x[ 5] ^ x[21] 145 | x[28] = x[28] ^ x[25] 146 | x[25] = x[25] ^ x[ 2] 147 | x[28] = x[28] ^ x[ 4] 148 | x[ 6] = x[ 6] ^ x[21] 149 | x[ 8] = x[ 8] ^ x[ 7] 150 | x[25] = x[25] ^ x[23] 151 | x[25] = x[25] ^ x[14] 152 | x[14] = x[14] ^ x[10] 153 | x[ 8] = x[ 8] ^ x[ 9] 154 | x[ 1] = x[ 1] ^ x[ 3] 155 | x[28] = x[28] ^ x[ 3] 156 | x[ 3] = x[ 3] ^ x[ 8] 157 | x[ 3] = x[ 3] ^ x[22] 158 | x[ 3] = x[ 3] ^ x[ 6] 159 | x[ 6] = x[ 6] ^ x[30] 160 | x[18] = x[18] ^ x[25] 161 | x[ 8] = x[ 8] ^ x[31] 162 | x[22] = x[22] ^ x[ 2] 163 | x[22] = x[22] ^ x[29] 164 | x[22] = x[22] ^ x[31] 165 | x[23] = x[23] ^ x[17] 166 | x[17] = x[17] ^ x[20] 167 | x[17] = x[17] ^ x[29] 168 | x[23] = x[23] ^ x[21] y[12] 169 | x[21] = x[21] ^ x[13] 170 | x[13] = x[13] ^ x[26] 171 | x[20] = x[20] ^ x[ 2] 172 | x[29] = x[29] ^ x[ 4] 173 | x[30] = x[30] ^ x[15] 174 | x[31] = x[31] ^ x[16] 175 | x[16] = x[16] ^ x[ 2] 176 | x[ 2] = x[ 2] ^ x[10] 177 | x[ 2] = x[ 2] ^ x[27] 178 | x[ 4] = x[ 4] ^ x[26] 179 | x[10] = x[10] ^ x[ 0] 180 | x[10] = x[10] ^ x[29] 181 | x[ 9] = x[ 9] ^ x[ 2] 182 | x[26] = x[26] ^ x[10] 183 | x[14] = x[14] ^ x[ 6] 184 | x[ 1] = x[ 1] ^ x[14] 185 | x[ 6] = x[ 6] ^ x[ 5] 186 | x[15] = x[15] ^ x[ 4] 187 | x[ 0] = x[ 0] ^ x[ 4] 188 | x[16] = x[16] ^ x[21] 189 | x[21] = x[21] ^ x[ 0] 190 | x[ 4] = x[ 4] ^ x[27] 191 | x[27] = x[27] ^ x[ 7] 192 | x[27] = x[27] ^ x[30] 193 | x[16] = x[16] ^ x[28] y[31] 194 | x[19] = x[19] ^ x[22] 195 | x[28] = x[28] ^ x[ 7] y[19] 196 | x[ 7] = x[ 7] ^ x[ 6] 197 | x[ 5] = x[ 5] ^ x[27] 198 | x[ 7] = x[ 7] ^ x[15] y[27] 199 | x[27] = x[27] ^ x[22] y[ 2] 200 | x[22] = x[22] ^ x[29] y[14] 201 | x[ 6] = x[ 6] ^ x[10] y[23] 202 | x[10] = x[10] ^ x[15] 203 | x[15] = x[15] ^ x[20] 204 | x[10] = x[10] ^ x[24] 205 | x[10] = x[10] ^ x[ 1] 206 | x[15] = x[15] ^ x[21] y[24] 207 | x[21] = x[21] ^ x[24] 208 | x[24] = x[24] ^ x[ 2] 209 | x[ 2] = x[ 2] ^ x[ 8] y[22] 210 | x[ 8] = x[ 8] ^ x[31] y[26] 211 | x[31] = x[31] ^ x[29] 212 | x[29] = x[29] ^ x[25] 213 | x[ 0] = x[ 0] ^ x[31] 214 | x[ 0] = x[ 0] ^ x[14] 215 | x[14] = x[14] ^ x[26] y[18] 216 | x[26] = x[26] ^ x[31] 217 | x[31] = x[31] ^ x[13] 218 | x[26] = x[26] ^ x[23] y[ 0] 219 | x[13] = x[13] ^ x[30] 220 | x[ 0] = x[ 0] ^ x[ 9] y[ 8] 221 | x[19] = x[19] ^ x[31] y[11] 222 | x[29] = x[29] ^ x[21] y[ 9] 223 | x[12] = x[12] ^ x[27] y[17] 224 | x[ 1] = x[ 1] ^ x[28] y[ 1] 225 | x[25] = x[25] ^ x[24] y[ 5] 226 | x[18] = x[18] ^ x[22] 227 | x[10] = x[10] ^ x[16] y[13] 228 | x[24] = x[24] ^ x[14] y[30] 229 | x[21] = x[21] ^ x[ 5] 230 | x[30] = x[30] ^ x[12] y[29] 231 | x[18] = x[18] ^ x[25] y[28] 232 | x[ 4] = x[ 4] ^ x[19] y[ 7] 233 | x[ 9] = x[ 9] ^ x[24] y[ 4] 234 | x[31] = x[31] ^ x[18] y[16] 235 | x[20] = x[20] ^ x[21] y[20] 236 | x[ 3] = x[ 3] ^ x[31] y[15] 237 | x[13] = x[13] ^ x[ 3] y[ 3] 238 | x[17] = x[17] ^ x[31] y[ 6] 239 | x[11] = x[11] ^ x[13] y[21] 240 | x[ 5] = x[ 5] ^ x[17] y[10] 241 | x[21] = x[21] ^ x[11] y[25] 242 | -------------------------------------------------------------------------------- /Implementations/FSE_SKOP15_i_4x4_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000001011001110 3 | 0100001100100001 4 | 0010100100011000 5 | 0001010010001100 6 | 0010100011101100 7 | 0011010000010010 8 | 1001001010000001 9 | 0100000111001000 10 | 1100111010000010 11 | 0010000101000011 12 | 0001100000101001 13 | 1000110000010100 14 | 1110110000101000 15 | 0001001000110100 16 | 1000000110010010 17 | 1100100001000001 18 | 19 | 20 | Reduced Matrix: 21 | 0000000010000000 22 | 0100000000000000 23 | 0010000000000000 24 | 0001000000000000 25 | 0000000000001000 26 | 0000010000000000 27 | 0000001000000000 28 | 0000000100000000 29 | 0000100000000000 30 | 1000000000000000 31 | 0000000000100000 32 | 0000000000010000 33 | 0000000001000000 34 | 0000000000000100 35 | 0000000000000010 36 | 0000000000000001 37 | 38 | 39 | Xor Count = 44 40 | x[ 0] = x[ 0] ^ x[ 8] 41 | x[ 2] = x[ 2] ^ x[11] 42 | x[ 8] = x[ 8] ^ x[ 4] 43 | x[ 4] = x[ 4] ^ x[12] 44 | x[ 9] = x[ 9] ^ x[ 8] 45 | x[ 8] = x[ 8] ^ x[13] 46 | x[11] = x[11] ^ x[ 0] 47 | x[10] = x[10] ^ x[15] 48 | x[15] = x[15] ^ x[ 0] 49 | x[13] = x[13] ^ x[10] 50 | x[13] = x[13] ^ x[11] 51 | x[ 9] = x[ 9] ^ x[ 1] 52 | x[ 1] = x[ 1] ^ x[ 6] 53 | x[12] = x[12] ^ x[ 1] 54 | x[ 8] = x[ 8] ^ x[ 5] 55 | x[ 5] = x[ 5] ^ x[14] 56 | x[12] = x[12] ^ x[ 5] 57 | x[ 5] = x[ 5] ^ x[ 3] 58 | x[ 1] = x[ 1] ^ x[ 7] 59 | x[14] = x[14] ^ x[ 7] 60 | x[ 7] = x[ 7] ^ x[ 4] 61 | x[ 5] = x[ 5] ^ x[ 2] y[ 5] 62 | x[ 6] = x[ 6] ^ x[ 3] 63 | x[ 6] = x[ 6] ^ x[15] y[ 6] 64 | x[13] = x[13] ^ x[ 6] y[13] 65 | x[ 3] = x[ 3] ^ x[ 4] 66 | x[ 1] = x[ 1] ^ x[10] y[ 1] 67 | x[14] = x[14] ^ x[11] y[14] 68 | x[ 0] = x[ 0] ^ x[12] 69 | x[ 4] = x[ 4] ^ x[ 0] y[ 8] 70 | x[ 0] = x[ 0] ^ x[ 9] 71 | x[11] = x[11] ^ x[ 8] y[11] 72 | x[15] = x[15] ^ x[ 9] y[15] 73 | x[ 2] = x[ 2] ^ x[ 7] y[ 2] 74 | x[ 7] = x[ 7] ^ x[ 9] y[ 7] 75 | x[ 9] = x[ 9] ^ x[13] 76 | x[10] = x[10] ^ x[ 3] y[10] 77 | x[ 3] = x[ 3] ^ x[ 8] y[ 3] 78 | x[ 9] = x[ 9] ^ x[ 5] 79 | x[12] = x[12] ^ x[ 9] y[ 4] 80 | x[ 8] = x[ 8] ^ x[ 0] y[ 0] 81 | x[ 0] = x[ 0] ^ x[ 1] 82 | x[ 9] = x[ 9] ^ x[ 8] y[12] 83 | x[ 0] = x[ 0] ^ x[ 9] y[ 9] 84 | -------------------------------------------------------------------------------- /Implementations/FSE_SKOP15_i_4x4_8.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000001000001100000011100000 3 | 01000000001100000010000000010000 4 | 00100000100100000001000010000000 5 | 00010000010000001000000011000000 6 | 00001000000000100000110000001110 7 | 00000100000000110000001000000001 8 | 00000010000010010000000100001000 9 | 00000001000001000000100000001100 10 | 00100000100000001110000011000000 11 | 00110000010000000001000000100000 12 | 10010000001000001000000000010000 13 | 01000000000100001100000010000000 14 | 00000010000010000000111000001100 15 | 00000011000001000000000100000010 16 | 00001001000000100000100000000001 17 | 00000100000000010000110000001000 18 | 11000000111000001000000000100000 19 | 00100000000100000100000000110000 20 | 00010000100000000010000010010000 21 | 10000000110000000001000001000000 22 | 00001100000011100000100000000010 23 | 00000010000000010000010000000011 24 | 00000001000010000000001000001001 25 | 00001000000011000000000100000100 26 | 11100000110000000010000010000000 27 | 00010000001000000011000001000000 28 | 10000000000100001001000000100000 29 | 11000000100000000100000000010000 30 | 00001110000011000000001000001000 31 | 00000001000000100000001100000100 32 | 00001000000000010000100100000010 33 | 00001100000010000000010000000001 34 | 35 | 36 | Reduced Matrix: 37 | 10000000000000000000000000000000 38 | 00000000000000000000000010000000 39 | 00100000000000000000000000000000 40 | 00010000000000000000000000000000 41 | 00001000000000000000000000000000 42 | 00000100000000000000000000000000 43 | 00000010000000000000000000000000 44 | 00000001000000000000000000000000 45 | 01000000000000000000000000000000 46 | 00000000010000000000000000000000 47 | 00000000001000000000000000000000 48 | 00000000000100000000000000000000 49 | 00000000000000000000100000000000 50 | 00000000000001000000000000000000 51 | 00000000000000100000000000000000 52 | 00000000000000010000000000000000 53 | 00000000000000001000000000000000 54 | 00000000000000000100000000000000 55 | 00000000100000000000000000000000 56 | 00000000000000000001000000000000 57 | 00000000000010000000000000000000 58 | 00000000000000000000010000000000 59 | 00000000000000000000001000000000 60 | 00000000000000000000000100000000 61 | 00000000000000000010000000000000 62 | 00000000000000000000000001000000 63 | 00000000000000000000000000100000 64 | 00000000000000000000000000010000 65 | 00000000000000000000000000001000 66 | 00000000000000000000000000000100 67 | 00000000000000000000000000000010 68 | 00000000000000000000000000000001 69 | 70 | 71 | Xor Count = 91 72 | x[ 8] = x[ 8] ^ x[ 0] 73 | x[ 1] = x[ 1] ^ x[ 8] 74 | x[22] = x[22] ^ x[14] 75 | x[ 1] = x[ 1] ^ x[17] 76 | x[17] = x[17] ^ x[26] 77 | x[24] = x[24] ^ x[16] 78 | x[16] = x[16] ^ x[ 0] 79 | x[31] = x[31] ^ x[15] 80 | x[ 6] = x[ 6] ^ x[30] 81 | x[15] = x[15] ^ x[20] 82 | x[20] = x[20] ^ x[28] 83 | x[28] = x[28] ^ x[ 5] 84 | x[18] = x[18] ^ x[10] 85 | x[ 0] = x[ 0] ^ x[10] 86 | x[18] = x[18] ^ x[24] 87 | x[23] = x[23] ^ x[ 7] 88 | x[ 0] = x[ 0] ^ x[17] 89 | x[25] = x[25] ^ x[24] 90 | x[24] = x[24] ^ x[ 8] 91 | x[ 9] = x[ 9] ^ x[25] 92 | x[ 0] = x[ 0] ^ x[25] y[ 0] 93 | x[26] = x[26] ^ x[ 2] 94 | x[ 2] = x[ 2] ^ x[11] 95 | x[10] = x[10] ^ x[16] 96 | x[ 8] = x[ 8] ^ x[18] 97 | x[ 7] = x[ 7] ^ x[ 4] 98 | x[ 4] = x[ 4] ^ x[20] 99 | x[18] = x[18] ^ x[26] 100 | x[26] = x[26] ^ x[19] 101 | x[12] = x[12] ^ x[ 4] 102 | x[19] = x[19] ^ x[24] 103 | x[25] = x[25] ^ x[ 3] 104 | x[25] = x[25] ^ x[26] 105 | x[17] = x[17] ^ x[ 2] 106 | x[ 5] = x[ 5] ^ x[22] 107 | x[17] = x[17] ^ x[27] y[17] 108 | x[ 4] = x[ 4] ^ x[29] 109 | x[24] = x[24] ^ x[ 1] 110 | x[ 2] = x[ 2] ^ x[16] 111 | x[26] = x[26] ^ x[ 2] y[26] 112 | x[30] = x[30] ^ x[14] 113 | x[14] = x[14] ^ x[15] 114 | x[14] = x[14] ^ x[ 7] 115 | x[29] = x[29] ^ x[22] 116 | x[ 7] = x[ 7] ^ x[ 4] 117 | x[ 4] = x[ 4] ^ x[21] 118 | x[15] = x[15] ^ x[28] 119 | x[15] = x[15] ^ x[21] y[15] 120 | x[20] = x[20] ^ x[22] 121 | x[21] = x[21] ^ x[ 6] 122 | x[ 2] = x[ 2] ^ x[19] y[ 2] 123 | x[22] = x[22] ^ x[12] 124 | x[10] = x[10] ^ x[ 3] 125 | x[19] = x[19] ^ x[ 9] y[19] 126 | x[ 4] = x[ 4] ^ x[30] y[ 4] 127 | x[ 7] = x[ 7] ^ x[13] y[ 7] 128 | x[ 5] = x[ 5] ^ x[31] y[ 5] 129 | x[ 3] = x[ 3] ^ x[ 9] y[ 3] 130 | x[10] = x[10] ^ x[27] y[10] 131 | x[27] = x[27] ^ x[ 1] y[27] 132 | x[21] = x[21] ^ x[31] y[21] 133 | x[16] = x[16] ^ x[ 9] 134 | x[28] = x[28] ^ x[13] 135 | x[13] = x[13] ^ x[ 6] 136 | x[29] = x[29] ^ x[23] y[29] 137 | x[11] = x[11] ^ x[24] y[11] 138 | x[28] = x[28] ^ x[30] 139 | x[ 6] = x[ 6] ^ x[12] 140 | x[30] = x[30] ^ x[14] 141 | x[14] = x[14] ^ x[31] y[14] 142 | x[ 1] = x[ 1] ^ x[ 0] 143 | x[ 9] = x[ 9] ^ x[25] y[ 9] 144 | x[31] = x[31] ^ x[12] 145 | x[25] = x[25] ^ x[18] y[25] 146 | x[24] = x[24] ^ x[18] 147 | x[13] = x[13] ^ x[23] y[13] 148 | x[30] = x[30] ^ x[23] y[30] 149 | x[23] = x[23] ^ x[12] 150 | x[16] = x[16] ^ x[ 1] y[16] 151 | x[ 1] = x[ 1] ^ x[24] y[ 8] 152 | x[20] = x[20] ^ x[ 6] 153 | x[23] = x[23] ^ x[ 7] y[23] 154 | x[24] = x[24] ^ x[17] y[ 1] 155 | x[31] = x[31] ^ x[15] y[31] 156 | x[ 8] = x[ 8] ^ x[10] y[18] 157 | x[18] = x[18] ^ x[16] y[24] 158 | x[22] = x[22] ^ x[14] y[22] 159 | x[12] = x[12] ^ x[28] y[20] 160 | x[ 6] = x[ 6] ^ x[30] y[ 6] 161 | x[28] = x[28] ^ x[20] y[28] 162 | x[20] = x[20] ^ x[ 4] y[12] 163 | -------------------------------------------------------------------------------- /Implementations/FSE_SKOP15_i_8x8_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 00011001001001101010010101001111 3 | 10011101001101010111111101101000 4 | 01000110100110101011011100111100 5 | 00100011010011010101101110011110 6 | 10010001011000100101101011110100 7 | 11011001010100111111011110000110 8 | 01100100101010010111101111000011 9 | 00110010110101001011010111101001 10 | 00100110000110010100111110100101 11 | 00110101100111010110100001111111 12 | 10011010010001100011110010110111 13 | 01001101001000111001111001011011 14 | 01100010100100011111010001011010 15 | 01010011110110011000011011110111 16 | 10101001011001001100001101111011 17 | 11010100001100101110100110110101 18 | 10100101010011110001100100100110 19 | 01111111011010001001110100110101 20 | 10110111001111000100011010011010 21 | 01011011100111100010001101001101 22 | 01011010111101001001000101100010 23 | 11110111100001101101100101010011 24 | 01111011110000110110010010101001 25 | 10110101111010010011001011010100 26 | 01001111101001010010011000011001 27 | 01101000011111110011010110011101 28 | 00111100101101111001101001000110 29 | 10011110010110110100110100100011 30 | 11110100010110100110001010010001 31 | 10000110111101110101001111011001 32 | 11000011011110111010100101100100 33 | 11101001101101011101010000110010 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000010000000000 38 | 00000000000100000000000000000000 39 | 00000000000000000000000000010000 40 | 00000000000000000000000000000010 41 | 00010000000000000000000000000000 42 | 00000000000000100000000000000000 43 | 01000000000000000000000000000000 44 | 00000000000000000000000000000001 45 | 00001000000000000000000000000000 46 | 00000000000000000000000100000000 47 | 00000010000000000000000000000000 48 | 00000000010000000000000000000000 49 | 00000000000000000000000001000000 50 | 00000001000000000000000000000000 51 | 00000000000000001000000000000000 52 | 00000000001000000000000000000000 53 | 00000000000000000000100000000000 54 | 00000000000000000000000000001000 55 | 00000000000001000000000000000000 56 | 00000000000010000000000000000000 57 | 00000000100000000000000000000000 58 | 00100000000000000000000000000000 59 | 00000000000000000000000000100000 60 | 10000000000000000000000000000000 61 | 00000100000000000000000000000000 62 | 00000000000000010000000000000000 63 | 00000000000000000000001000000000 64 | 00000000000000000010000000000000 65 | 00000000000000000000000000000100 66 | 00000000000000000000000010000000 67 | 00000000000000000100000000000000 68 | 00000000000000000001000000000000 69 | 70 | 71 | Xor Count = 185 72 | x[26] = x[26] ^ x[14] 73 | x[20] = x[20] ^ x[26] 74 | x[29] = x[29] ^ x[23] 75 | x[ 5] = x[ 5] ^ x[20] 76 | x[27] = x[27] ^ x[30] 77 | x[10] = x[10] ^ x[30] 78 | x[ 9] = x[ 9] ^ x[18] 79 | x[29] = x[29] ^ x[18] 80 | x[16] = x[16] ^ x[ 1] 81 | x[ 7] = x[ 7] ^ x[ 9] 82 | x[ 0] = x[ 0] ^ x[17] 83 | x[ 8] = x[ 8] ^ x[ 6] 84 | x[ 4] = x[ 4] ^ x[10] 85 | x[30] = x[30] ^ x[21] 86 | x[21] = x[21] ^ x[11] 87 | x[11] = x[11] ^ x[ 2] 88 | x[31] = x[31] ^ x[11] 89 | x[ 6] = x[ 6] ^ x[ 5] 90 | x[15] = x[15] ^ x[ 2] 91 | x[ 2] = x[ 2] ^ x[ 3] 92 | x[20] = x[20] ^ x[24] 93 | x[20] = x[20] ^ x[11] 94 | x[20] = x[20] ^ x[ 7] 95 | x[20] = x[20] ^ x[27] 96 | x[20] = x[20] ^ x[ 0] 97 | x[30] = x[30] ^ x[ 3] 98 | x[19] = x[19] ^ x[23] 99 | x[23] = x[23] ^ x[16] 100 | x[17] = x[17] ^ x[15] 101 | x[17] = x[17] ^ x[ 2] 102 | x[23] = x[23] ^ x[27] 103 | x[ 5] = x[ 5] ^ x[29] 104 | x[27] = x[27] ^ x[ 5] 105 | x[15] = x[15] ^ x[29] 106 | x[14] = x[14] ^ x[ 4] 107 | x[13] = x[13] ^ x[ 9] 108 | x[11] = x[11] ^ x[22] 109 | x[ 9] = x[ 9] ^ x[ 1] 110 | x[ 5] = x[ 5] ^ x[15] 111 | x[27] = x[27] ^ x[31] 112 | x[ 4] = x[ 4] ^ x[26] 113 | x[ 3] = x[ 3] ^ x[31] 114 | x[ 3] = x[ 3] ^ x[29] 115 | x[ 1] = x[ 1] ^ x[26] 116 | x[26] = x[26] ^ x[ 2] 117 | x[ 2] = x[ 2] ^ x[18] 118 | x[18] = x[18] ^ x[31] 119 | x[ 2] = x[ 2] ^ x[ 0] 120 | x[ 0] = x[ 0] ^ x[ 8] 121 | x[30] = x[30] ^ x[20] 122 | x[ 6] = x[ 6] ^ x[12] 123 | x[19] = x[19] ^ x[21] 124 | x[ 8] = x[ 8] ^ x[30] 125 | x[31] = x[31] ^ x[24] 126 | x[19] = x[19] ^ x[31] 127 | x[30] = x[30] ^ x[22] 128 | x[26] = x[26] ^ x[ 7] 129 | x[17] = x[17] ^ x[ 6] 130 | x[31] = x[31] ^ x[23] 131 | x[16] = x[16] ^ x[30] 132 | x[15] = x[15] ^ x[12] 133 | x[23] = x[23] ^ x[25] 134 | x[25] = x[25] ^ x[19] 135 | x[23] = x[23] ^ x[ 0] 136 | x[22] = x[22] ^ x[15] 137 | x[19] = x[19] ^ x[14] 138 | x[22] = x[22] ^ x[ 9] 139 | x[15] = x[15] ^ x[ 2] 140 | x[15] = x[15] ^ x[ 4] 141 | x[12] = x[12] ^ x[21] 142 | x[ 9] = x[ 9] ^ x[31] 143 | x[ 9] = x[ 9] ^ x[ 2] 144 | x[30] = x[30] ^ x[28] 145 | x[ 5] = x[ 5] ^ x[11] 146 | x[ 1] = x[ 1] ^ x[24] 147 | x[24] = x[24] ^ x[21] 148 | x[21] = x[21] ^ x[31] 149 | x[21] = x[21] ^ x[ 4] 150 | x[24] = x[24] ^ x[11] 151 | x[ 4] = x[ 4] ^ x[29] 152 | x[31] = x[31] ^ x[28] 153 | x[ 4] = x[ 4] ^ x[17] 154 | x[ 2] = x[ 2] ^ x[17] 155 | x[17] = x[17] ^ x[18] 156 | x[11] = x[11] ^ x[28] 157 | x[28] = x[28] ^ x[ 7] 158 | x[21] = x[21] ^ x[18] 159 | x[ 7] = x[ 7] ^ x[18] 160 | x[18] = x[18] ^ x[ 8] 161 | x[29] = x[29] ^ x[11] 162 | x[ 8] = x[ 8] ^ x[25] 163 | x[11] = x[11] ^ x[ 8] 164 | x[ 5] = x[ 5] ^ x[ 0] 165 | x[ 7] = x[ 7] ^ x[14] 166 | x[14] = x[14] ^ x[27] 167 | x[ 5] = x[ 5] ^ x[20] 168 | x[10] = x[10] ^ x[25] 169 | x[ 7] = x[ 7] ^ x[24] 170 | x[ 5] = x[ 5] ^ x[13] 171 | x[21] = x[21] ^ x[ 1] 172 | x[15] = x[15] ^ x[23] 173 | x[24] = x[24] ^ x[10] 174 | x[25] = x[25] ^ x[ 6] 175 | x[ 8] = x[ 8] ^ x[16] 176 | x[ 8] = x[ 8] ^ x[26] 177 | x[ 4] = x[ 4] ^ x[26] 178 | x[17] = x[17] ^ x[14] 179 | x[17] = x[17] ^ x[16] 180 | x[ 0] = x[ 0] ^ x[ 2] 181 | x[29] = x[29] ^ x[ 5] 182 | x[16] = x[16] ^ x[ 9] 183 | x[26] = x[26] ^ x[10] 184 | x[12] = x[12] ^ x[26] 185 | x[11] = x[11] ^ x[ 7] 186 | x[11] = x[11] ^ x[ 5] y[ 1] 187 | x[22] = x[22] ^ x[ 6] 188 | x[ 9] = x[ 9] ^ x[13] 189 | x[26] = x[26] ^ x[21] 190 | x[28] = x[28] ^ x[ 3] 191 | x[ 9] = x[ 9] ^ x[ 1] 192 | x[ 3] = x[ 3] ^ x[20] 193 | x[ 2] = x[ 2] ^ x[27] 194 | x[27] = x[27] ^ x[25] 195 | x[27] = x[27] ^ x[23] 196 | x[23] = x[23] ^ x[17] 197 | x[17] = x[17] ^ x[24] 198 | x[17] = x[17] ^ x[19] y[30] 199 | x[19] = x[19] ^ x[31] 200 | x[23] = x[23] ^ x[13] 201 | x[23] = x[23] ^ x[30] 202 | x[28] = x[28] ^ x[ 6] 203 | x[ 6] = x[ 6] ^ x[12] 204 | x[12] = x[12] ^ x[ 8] 205 | x[ 8] = x[ 8] ^ x[13] 206 | x[ 8] = x[ 8] ^ x[ 7] y[20] 207 | x[28] = x[28] ^ x[19] y[17] 208 | x[30] = x[30] ^ x[10] 209 | x[10] = x[10] ^ x[13] 210 | x[10] = x[10] ^ x[19] 211 | x[13] = x[13] ^ x[25] 212 | x[19] = x[19] ^ x[ 5] 213 | x[25] = x[25] ^ x[ 0] 214 | x[ 2] = x[ 2] ^ x[ 4] 215 | x[ 4] = x[ 4] ^ x[ 7] y[ 8] 216 | x[ 7] = x[ 7] ^ x[15] y[13] 217 | x[25] = x[25] ^ x[31] y[12] 218 | x[31] = x[31] ^ x[21] 219 | x[ 1] = x[ 1] ^ x[ 3] 220 | x[ 3] = x[ 3] ^ x[24] y[ 4] 221 | x[24] = x[24] ^ x[29] 222 | x[29] = x[29] ^ x[15] 223 | x[24] = x[24] ^ x[14] 224 | x[13] = x[13] ^ x[30] y[18] 225 | x[30] = x[30] ^ x[ 6] 226 | x[14] = x[14] ^ x[11] 227 | x[ 6] = x[ 6] ^ x[ 9] 228 | x[16] = x[16] ^ x[ 1] 229 | x[14] = x[14] ^ x[10] y[ 5] 230 | x[24] = x[24] ^ x[ 2] y[29] 231 | x[18] = x[18] ^ x[13] 232 | x[10] = x[10] ^ x[ 0] 233 | x[21] = x[21] ^ x[ 0] 234 | x[10] = x[10] ^ x[23] y[15] 235 | x[23] = x[23] ^ x[ 2] y[ 9] 236 | x[ 5] = x[ 5] ^ x[31] y[24] 237 | x[ 2] = x[ 2] ^ x[ 8] y[21] 238 | x[27] = x[27] ^ x[30] y[ 2] 239 | x[26] = x[26] ^ x[25] y[22] 240 | x[18] = x[18] ^ x[ 2] 241 | x[ 6] = x[ 6] ^ x[17] 242 | x[31] = x[31] ^ x[ 8] y[ 7] 243 | x[ 9] = x[ 9] ^ x[11] y[11] 244 | x[18] = x[18] ^ x[ 9] y[27] 245 | x[21] = x[21] ^ x[23] y[ 0] 246 | x[12] = x[12] ^ x[21] y[19] 247 | x[16] = x[16] ^ x[21] y[14] 248 | x[29] = x[29] ^ x[16] y[28] 249 | x[20] = x[20] ^ x[ 6] y[16] 250 | x[19] = x[19] ^ x[30] y[31] 251 | x[30] = x[30] ^ x[20] y[ 3] 252 | x[15] = x[15] ^ x[31] y[25] 253 | x[22] = x[22] ^ x[ 8] y[26] 254 | x[ 6] = x[ 6] ^ x[18] y[10] 255 | x[ 0] = x[ 0] ^ x[ 3] y[23] 256 | x[ 1] = x[ 1] ^ x[ 0] y[ 6] 257 | -------------------------------------------------------------------------------- /Implementations/Fox_Mu4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000100000001000000000000001 3 | 01000000010000000100000010000001 4 | 00100000001000000010000001000000 5 | 00010000000100000001000000100001 6 | 00001000000010000000100000010001 7 | 00000100000001000000010000001000 8 | 00000010000000100000001000000100 9 | 00000001000000010000000100000010 10 | 10000000011110110000000110000000 11 | 01000000110001101000000101000000 12 | 00100000111000110100000000100000 13 | 00010000100010100010000100010000 14 | 00001000101111100001000100001000 15 | 00000100110111110000100000000100 16 | 00000010111011110000010000000010 17 | 00000001111101110000001000000001 18 | 01111011000000011000000010000000 19 | 11000110100000010100000001000000 20 | 11100011010000000010000000100000 21 | 10001010001000010001000000010000 22 | 10111110000100010000100000001000 23 | 11011111000010000000010000000100 24 | 11101111000001000000001000000010 25 | 11110111000000100000000100000001 26 | 00000001100000000111101110000000 27 | 10000001010000001100011001000000 28 | 01000000001000001110001100100000 29 | 00100001000100001000101000010000 30 | 00010001000010001011111000001000 31 | 00001000000001001101111100000100 32 | 00000100000000101110111100000010 33 | 00000010000000011111011100000001 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000000000000001 38 | 00000000000000000000000010000000 39 | 00000000000000000000000001000000 40 | 00000000000000000000000000100000 41 | 00000000000000000000000000010000 42 | 00000000100000000000000000000000 43 | 00000000000000000000000000000100 44 | 00000000000000000000000000000010 45 | 00000000000000000000001000000000 46 | 00010000000000000000000000000000 47 | 00000000000000010000000000000000 48 | 00000000000000000010000000000000 49 | 00000000000000000000000000001000 50 | 00000000000000000000000100000000 51 | 00000000000010000000000000000000 52 | 00000000000000100000000000000000 53 | 00000000000000001000000000000000 54 | 00000100000000000000000000000000 55 | 00000000010000000000000000000000 56 | 10000000000000000000000000000000 57 | 00000000000100000000000000000000 58 | 00001000000000000000000000000000 59 | 00000001000000000000000000000000 60 | 00000000000000000100000000000000 61 | 00000010000000000000000000000000 62 | 00000000000000000000010000000000 63 | 00000000001000000000000000000000 64 | 00000000000001000000000000000000 65 | 00100000000000000000000000000000 66 | 01000000000000000000000000000000 67 | 00000000000000000001000000000000 68 | 00000000000000000000100000000000 69 | 70 | 71 | Xor Count = 136 72 | x[14] = x[14] ^ x[ 8] 73 | x[ 3] = x[ 3] ^ x[31] 74 | x[30] = x[30] ^ x[15] 75 | x[24] = x[24] ^ x[31] 76 | x[16] = x[16] ^ x[22] 77 | x[ 2] = x[ 2] ^ x[23] 78 | x[11] = x[11] ^ x[19] 79 | x[13] = x[13] ^ x[ 5] 80 | x[18] = x[18] ^ x[23] 81 | x[16] = x[16] ^ x[ 0] 82 | x[19] = x[19] ^ x[31] 83 | x[23] = x[23] ^ x[ 7] 84 | x[19] = x[19] ^ x[20] 85 | x[ 1] = x[ 1] ^ x[17] 86 | x[ 0] = x[ 0] ^ x[ 6] 87 | x[ 0] = x[ 0] ^ x[15] 88 | x[17] = x[17] ^ x[ 2] 89 | x[17] = x[17] ^ x[ 7] 90 | x[22] = x[22] ^ x[ 5] 91 | x[ 5] = x[ 5] ^ x[ 8] 92 | x[30] = x[30] ^ x[14] 93 | x[23] = x[23] ^ x[14] 94 | x[27] = x[27] ^ x[12] 95 | x[12] = x[12] ^ x[10] 96 | x[ 7] = x[ 7] ^ x[22] 97 | x[28] = x[28] ^ x[ 8] 98 | x[ 8] = x[ 8] ^ x[21] 99 | x[20] = x[20] ^ x[ 4] 100 | x[ 4] = x[ 4] ^ x[12] 101 | x[ 7] = x[ 7] ^ x[ 4] 102 | x[ 4] = x[ 4] ^ x[ 8] 103 | x[12] = x[12] ^ x[19] 104 | x[19] = x[19] ^ x[ 6] 105 | x[27] = x[27] ^ x[31] 106 | x[19] = x[19] ^ x[30] 107 | x[31] = x[31] ^ x[29] 108 | x[29] = x[29] ^ x[ 3] 109 | x[29] = x[29] ^ x[ 6] 110 | x[ 6] = x[ 6] ^ x[16] 111 | x[16] = x[16] ^ x[ 2] 112 | x[ 8] = x[ 8] ^ x[13] 113 | x[13] = x[13] ^ x[11] 114 | x[21] = x[21] ^ x[16] 115 | x[16] = x[16] ^ x[30] 116 | x[16] = x[16] ^ x[24] 117 | x[24] = x[24] ^ x[ 1] 118 | x[ 1] = x[ 1] ^ x[ 0] 119 | x[24] = x[24] ^ x[ 9] y[ 1] 120 | x[ 0] = x[ 0] ^ x[12] 121 | x[12] = x[12] ^ x[ 9] 122 | x[ 9] = x[ 9] ^ x[17] 123 | x[17] = x[17] ^ x[22] 124 | x[22] = x[22] ^ x[ 5] 125 | x[19] = x[19] ^ x[ 5] 126 | x[ 5] = x[ 5] ^ x[ 1] 127 | x[ 1] = x[ 1] ^ x[15] 128 | x[30] = x[30] ^ x[23] y[ 7] 129 | x[15] = x[15] ^ x[23] 130 | x[23] = x[23] ^ x[13] 131 | x[17] = x[17] ^ x[18] 132 | x[13] = x[13] ^ x[ 2] 133 | x[ 1] = x[ 1] ^ x[18] 134 | x[ 2] = x[ 2] ^ x[10] 135 | x[ 4] = x[ 4] ^ x[ 2] 136 | x[ 2] = x[ 2] ^ x[18] 137 | x[11] = x[11] ^ x[ 3] 138 | x[ 3] = x[ 3] ^ x[14] 139 | x[18] = x[18] ^ x[27] 140 | x[31] = x[31] ^ x[14] 141 | x[18] = x[18] ^ x[ 3] y[11] 142 | x[ 3] = x[ 3] ^ x[22] 143 | x[22] = x[22] ^ x[23] 144 | x[23] = x[23] ^ x[12] 145 | x[ 5] = x[ 5] ^ x[25] y[17] 146 | x[23] = x[23] ^ x[15] 147 | x[12] = x[12] ^ x[19] 148 | x[23] = x[23] ^ x[10] 149 | x[10] = x[10] ^ x[ 1] 150 | x[27] = x[27] ^ x[20] y[ 4] 151 | x[20] = x[20] ^ x[ 7] 152 | x[29] = x[29] ^ x[ 3] y[ 6] 153 | x[13] = x[13] ^ x[14] 154 | x[ 4] = x[ 4] ^ x[31] 155 | x[14] = x[14] ^ x[20] 156 | x[14] = x[14] ^ x[23] y[15] 157 | x[23] = x[23] ^ x[31] y[13] 158 | x[20] = x[20] ^ x[21] 159 | x[31] = x[31] ^ x[ 6] 160 | x[21] = x[21] ^ x[ 9] 161 | x[ 3] = x[ 3] ^ x[ 1] 162 | x[20] = x[20] ^ x[ 0] 163 | x[12] = x[12] ^ x[ 8] y[14] 164 | x[ 8] = x[ 8] ^ x[28] y[ 5] 165 | x[ 9] = x[ 9] ^ x[ 1] 166 | x[28] = x[28] ^ x[ 7] 167 | x[28] = x[28] ^ x[22] y[12] 168 | x[22] = x[22] ^ x[16] 169 | x[ 7] = x[ 7] ^ x[10] 170 | x[22] = x[22] ^ x[20] 171 | x[20] = x[20] ^ x[17] y[31] 172 | x[10] = x[10] ^ x[26] 173 | x[ 7] = x[ 7] ^ x[21] 174 | x[21] = x[21] ^ x[25] y[25] 175 | x[25] = x[25] ^ x[ 2] y[ 2] 176 | x[15] = x[15] ^ x[ 6] 177 | x[ 2] = x[ 2] ^ x[15] 178 | x[15] = x[15] ^ x[ 9] 179 | x[ 9] = x[ 9] ^ x[26] y[18] 180 | x[26] = x[26] ^ x[11] y[ 3] 181 | x[11] = x[11] ^ x[13] 182 | x[10] = x[10] ^ x[ 6] y[26] 183 | x[ 6] = x[ 6] ^ x[17] 184 | x[17] = x[17] ^ x[ 3] y[23] 185 | x[ 3] = x[ 3] ^ x[15] 186 | x[15] = x[15] ^ x[10] y[10] 187 | x[ 6] = x[ 6] ^ x[16] 188 | x[16] = x[16] ^ x[11] 189 | x[ 3] = x[ 3] ^ x[11] 190 | x[ 6] = x[ 6] ^ x[19] y[24] 191 | x[11] = x[11] ^ x[ 0] 192 | x[ 4] = x[ 4] ^ x[17] y[21] 193 | x[ 3] = x[ 3] ^ x[ 5] y[ 9] 194 | x[13] = x[13] ^ x[18] 195 | x[ 7] = x[ 7] ^ x[ 2] 196 | x[22] = x[22] ^ x[12] y[ 8] 197 | x[ 0] = x[ 0] ^ x[27] y[19] 198 | x[ 2] = x[ 2] ^ x[11] 199 | x[11] = x[11] ^ x[28] y[20] 200 | x[ 7] = x[ 7] ^ x[12] y[22] 201 | x[13] = x[13] ^ x[ 2] y[27] 202 | x[19] = x[19] ^ x[20] y[30] 203 | x[31] = x[31] ^ x[29] y[ 0] 204 | x[ 1] = x[ 1] ^ x[ 4] 205 | x[16] = x[16] ^ x[ 7] y[16] 206 | x[ 1] = x[ 1] ^ x[ 2] y[29] 207 | x[ 2] = x[ 2] ^ x[ 8] y[28] 208 | -------------------------------------------------------------------------------- /Implementations/Joltik.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000001011001110 3 | 0100001100100001 4 | 0010100100011000 5 | 0001010010001100 6 | 0010100011101100 7 | 0011010000010010 8 | 1001001010000001 9 | 0100000111001000 10 | 1100111010000010 11 | 0010000101000011 12 | 0001100000101001 13 | 1000110000010100 14 | 1110110000101000 15 | 0001001000110100 16 | 1000000110010010 17 | 1100100001000001 18 | 19 | 20 | Reduced Matrix: 21 | 0000000000001000 22 | 0100000000000000 23 | 0010000000000000 24 | 0001000000000000 25 | 0000100000000000 26 | 0000010000000000 27 | 0000001000000000 28 | 0000000100000000 29 | 1000000000000000 30 | 0000000001000000 31 | 0000000000100000 32 | 0000000000010000 33 | 0000000000000001 34 | 0000000000000100 35 | 0000000000000010 36 | 0000000010000000 37 | 38 | 39 | Xor Count = 44 40 | x[ 4] = x[ 4] ^ x[ 8] 41 | x[ 8] = x[ 8] ^ x[15] 42 | x[ 8] = x[ 8] ^ x[ 0] 43 | x[ 3] = x[ 3] ^ x[ 8] 44 | x[ 7] = x[ 7] ^ x[15] 45 | x[15] = x[15] ^ x[13] 46 | x[11] = x[11] ^ x[ 8] 47 | x[ 8] = x[ 8] ^ x[ 1] 48 | x[13] = x[13] ^ x[10] 49 | x[ 8] = x[ 8] ^ x[ 9] 50 | x[ 1] = x[ 1] ^ x[ 6] 51 | x[15] = x[15] ^ x[ 5] 52 | x[ 8] = x[ 8] ^ x[ 4] y[15] 53 | x[15] = x[15] ^ x[ 4] 54 | x[ 5] = x[ 5] ^ x[14] 55 | x[ 9] = x[ 9] ^ x[ 2] 56 | x[ 4] = x[ 4] ^ x[12] 57 | x[ 0] = x[ 0] ^ x[ 4] 58 | x[ 4] = x[ 4] ^ x[13] 59 | x[12] = x[12] ^ x[ 5] 60 | x[ 6] = x[ 6] ^ x[ 3] y[ 6] 61 | x[ 2] = x[ 2] ^ x[11] 62 | x[14] = x[14] ^ x[ 7] 63 | x[ 4] = x[ 4] ^ x[ 9] y[ 4] 64 | x[ 5] = x[ 5] ^ x[ 2] 65 | x[13] = x[13] ^ x[ 6] 66 | x[13] = x[13] ^ x[11] y[13] 67 | x[ 5] = x[ 5] ^ x[ 3] y[ 5] 68 | x[ 3] = x[ 3] ^ x[ 0] 69 | x[ 9] = x[ 9] ^ x[14] y[ 9] 70 | x[12] = x[12] ^ x[ 1] 71 | x[ 1] = x[ 1] ^ x[10] 72 | x[ 1] = x[ 1] ^ x[ 7] y[ 1] 73 | x[14] = x[14] ^ x[11] y[14] 74 | x[ 7] = x[ 7] ^ x[ 0] 75 | x[10] = x[10] ^ x[ 3] y[10] 76 | x[11] = x[11] ^ x[15] y[11] 77 | x[ 3] = x[ 3] ^ x[15] y[ 3] 78 | x[15] = x[15] ^ x[ 8] 79 | x[ 2] = x[ 2] ^ x[ 7] y[ 2] 80 | x[ 7] = x[ 7] ^ x[ 8] y[ 7] 81 | x[ 0] = x[ 0] ^ x[12] y[ 8] 82 | x[12] = x[12] ^ x[15] y[ 0] 83 | x[15] = x[15] ^ x[ 4] y[12] 84 | -------------------------------------------------------------------------------- /Implementations/MIDORI.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 0000100010001000 3 | 0000010001000100 4 | 0000001000100010 5 | 0000000100010001 6 | 1000000010001000 7 | 0100000001000100 8 | 0010000000100010 9 | 0001000000010001 10 | 1000100000001000 11 | 0100010000000100 12 | 0010001000000010 13 | 0001000100000001 14 | 1000100010000000 15 | 0100010001000000 16 | 0010001000100000 17 | 0001000100010000 18 | 19 | 20 | Reduced Matrix: 21 | 0000000000001000 22 | 0000000000000100 23 | 0000000000000010 24 | 0000000000000001 25 | 0000000010000000 26 | 0000000001000000 27 | 0000000000100000 28 | 0000000000010000 29 | 0000100000000000 30 | 0000010000000000 31 | 0000001000000000 32 | 0000000100000000 33 | 1000000000000000 34 | 0100000000000000 35 | 0010000000000000 36 | 0001000000000000 37 | 38 | 39 | Xor Count = 24 40 | x[ 3] = x[ 3] ^ x[15] 41 | x[ 2] = x[ 2] ^ x[14] 42 | x[ 1] = x[ 1] ^ x[13] 43 | x[ 0] = x[ 0] ^ x[12] 44 | x[ 7] = x[ 7] ^ x[11] 45 | x[11] = x[11] ^ x[ 3] y[ 7] 46 | x[ 6] = x[ 6] ^ x[10] 47 | x[10] = x[10] ^ x[ 2] y[ 6] 48 | x[ 5] = x[ 5] ^ x[ 9] 49 | x[ 9] = x[ 9] ^ x[ 1] y[ 5] 50 | x[ 4] = x[ 4] ^ x[ 8] 51 | x[ 8] = x[ 8] ^ x[ 0] y[ 4] 52 | x[15] = x[15] ^ x[ 7] y[ 3] 53 | x[ 3] = x[ 3] ^ x[15] y[15] 54 | x[14] = x[14] ^ x[ 6] y[ 2] 55 | x[ 2] = x[ 2] ^ x[14] y[14] 56 | x[13] = x[13] ^ x[ 5] y[ 1] 57 | x[ 1] = x[ 1] ^ x[13] y[13] 58 | x[12] = x[12] ^ x[ 4] y[ 0] 59 | x[ 0] = x[ 0] ^ x[12] y[12] 60 | x[ 7] = x[ 7] ^ x[11] y[11] 61 | x[ 6] = x[ 6] ^ x[10] y[10] 62 | x[ 5] = x[ 5] ^ x[ 9] y[ 9] 63 | x[ 4] = x[ 4] ^ x[ 8] y[ 8] 64 | -------------------------------------------------------------------------------- /Implementations/PRIDE_L_0.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 0000100010001000 3 | 0000010001000100 4 | 0000001000100010 5 | 0000000100010001 6 | 1000000010001000 7 | 0100000001000100 8 | 0010000000100010 9 | 0001000000010001 10 | 1000100000001000 11 | 0100010000000100 12 | 0010001000000010 13 | 0001000100000001 14 | 1000100010000000 15 | 0100010001000000 16 | 0010001000100000 17 | 0001000100010000 18 | 19 | 20 | Reduced Matrix: 21 | 0000000000001000 22 | 0000000000000100 23 | 0000000000000010 24 | 0000000000000001 25 | 0000000010000000 26 | 0000000001000000 27 | 0000000000100000 28 | 0000000000010000 29 | 0000100000000000 30 | 0000010000000000 31 | 0000001000000000 32 | 0000000100000000 33 | 1000000000000000 34 | 0100000000000000 35 | 0010000000000000 36 | 0001000000000000 37 | 38 | 39 | Xor Count = 24 40 | x[ 3] = x[ 3] ^ x[15] 41 | x[ 2] = x[ 2] ^ x[14] 42 | x[ 1] = x[ 1] ^ x[13] 43 | x[ 0] = x[ 0] ^ x[12] 44 | x[ 7] = x[ 7] ^ x[11] 45 | x[11] = x[11] ^ x[ 3] y[ 7] 46 | x[ 6] = x[ 6] ^ x[10] 47 | x[10] = x[10] ^ x[ 2] y[ 6] 48 | x[ 5] = x[ 5] ^ x[ 9] 49 | x[ 9] = x[ 9] ^ x[ 1] y[ 5] 50 | x[ 4] = x[ 4] ^ x[ 8] 51 | x[ 8] = x[ 8] ^ x[ 0] y[ 4] 52 | x[15] = x[15] ^ x[ 7] y[ 3] 53 | x[ 3] = x[ 3] ^ x[15] y[15] 54 | x[14] = x[14] ^ x[ 6] y[ 2] 55 | x[ 2] = x[ 2] ^ x[14] y[14] 56 | x[13] = x[13] ^ x[ 5] y[ 1] 57 | x[ 1] = x[ 1] ^ x[13] y[13] 58 | x[12] = x[12] ^ x[ 4] y[ 0] 59 | x[ 0] = x[ 0] ^ x[12] y[12] 60 | x[ 7] = x[ 7] ^ x[11] y[11] 61 | x[ 6] = x[ 6] ^ x[10] y[10] 62 | x[ 5] = x[ 5] ^ x[ 9] y[ 9] 63 | x[ 4] = x[ 4] ^ x[ 8] y[ 8] 64 | -------------------------------------------------------------------------------- /Implementations/PRIDE_L_1.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1100000000010000 3 | 0110000000001000 4 | 0011000000000100 5 | 0001100000000010 6 | 0000110000000001 7 | 0000011010000000 8 | 0000001101000000 9 | 1000000100100000 10 | 1000000000011000 11 | 0100000000001100 12 | 0010000000000110 13 | 0001000000000011 14 | 0000100010000001 15 | 0000010011000000 16 | 0000001001100000 17 | 0000000100110000 18 | 19 | 20 | Reduced Matrix: 21 | 0100000000000000 22 | 0010000000000000 23 | 0001000000000000 24 | 0000100000000000 25 | 0000010000000000 26 | 0000001000000000 27 | 0000000100000000 28 | 1000000000000000 29 | 0000000000001000 30 | 0000000000000100 31 | 0000000000000010 32 | 0000000000000001 33 | 0000000010000000 34 | 0000000001000000 35 | 0000000000100000 36 | 0000000000010000 37 | 38 | 39 | Xor Count = 24 40 | x[ 0] = x[ 0] ^ x[11] 41 | x[ 1] = x[ 1] ^ x[12] 42 | x[12] = x[12] ^ x[ 0] y[ 8] 43 | x[ 2] = x[ 2] ^ x[13] 44 | x[13] = x[13] ^ x[ 1] y[ 9] 45 | x[ 1] = x[ 1] ^ x[12] y[ 0] 46 | x[ 3] = x[ 3] ^ x[14] 47 | x[14] = x[14] ^ x[ 2] y[10] 48 | x[ 2] = x[ 2] ^ x[13] y[ 1] 49 | x[ 4] = x[ 4] ^ x[15] 50 | x[15] = x[15] ^ x[ 3] y[11] 51 | x[ 3] = x[ 3] ^ x[14] y[ 2] 52 | x[ 5] = x[ 5] ^ x[ 8] 53 | x[ 8] = x[ 8] ^ x[ 4] y[12] 54 | x[ 4] = x[ 4] ^ x[15] y[ 3] 55 | x[ 6] = x[ 6] ^ x[ 9] 56 | x[ 9] = x[ 9] ^ x[ 5] y[13] 57 | x[ 5] = x[ 5] ^ x[ 8] y[ 4] 58 | x[11] = x[11] ^ x[ 7] 59 | x[ 7] = x[ 7] ^ x[ 6] y[ 6] 60 | x[11] = x[11] ^ x[10] y[15] 61 | x[10] = x[10] ^ x[ 6] y[14] 62 | x[ 6] = x[ 6] ^ x[ 9] y[ 5] 63 | x[ 0] = x[ 0] ^ x[11] y[ 7] 64 | -------------------------------------------------------------------------------- /Implementations/PRIDE_L_2.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 0000110000000001 3 | 0000011010000000 4 | 0000001101000000 5 | 1000000100100000 6 | 1100000000010000 7 | 0110000000001000 8 | 0011000000000100 9 | 0001100000000010 10 | 0000100010000001 11 | 0000010011000000 12 | 0000001001100000 13 | 0000000100110000 14 | 1000000000011000 15 | 0100000000001100 16 | 0010000000000110 17 | 0001000000000011 18 | 19 | 20 | Reduced Matrix: 21 | 0000010000000000 22 | 0000001000000000 23 | 0000000100000000 24 | 1000000000000000 25 | 0100000000000000 26 | 0010000000000000 27 | 0001000000000000 28 | 0000100000000000 29 | 0000000010000000 30 | 0000000001000000 31 | 0000000000100000 32 | 0000000000010000 33 | 0000000000001000 34 | 0000000000000100 35 | 0000000000000010 36 | 0000000000000001 37 | 38 | 39 | Xor Count = 24 40 | x[ 4] = x[ 4] ^ x[15] 41 | x[10] = x[10] ^ x[ 7] 42 | x[11] = x[11] ^ x[ 0] 43 | x[ 0] = x[ 0] ^ x[10] y[ 3] 44 | x[ 1] = x[ 1] ^ x[11] y[ 4] 45 | x[ 2] = x[ 2] ^ x[13] 46 | x[ 3] = x[ 3] ^ x[ 2] y[ 6] 47 | x[ 8] = x[ 8] ^ x[ 5] 48 | x[ 5] = x[ 5] ^ x[ 4] y[ 0] 49 | x[ 6] = x[ 6] ^ x[ 8] y[ 1] 50 | x[ 7] = x[ 7] ^ x[ 6] 51 | x[ 9] = x[ 9] ^ x[ 8] y[ 9] 52 | x[ 7] = x[ 7] ^ x[ 9] y[ 2] 53 | x[ 8] = x[ 8] ^ x[ 5] y[ 8] 54 | x[10] = x[10] ^ x[ 7] y[10] 55 | x[12] = x[12] ^ x[11] y[12] 56 | x[11] = x[11] ^ x[ 0] y[11] 57 | x[13] = x[13] ^ x[ 1] 58 | x[13] = x[13] ^ x[12] y[13] 59 | x[14] = x[14] ^ x[ 2] y[14] 60 | x[ 2] = x[ 2] ^ x[13] y[ 5] 61 | x[15] = x[15] ^ x[ 3] 62 | x[15] = x[15] ^ x[14] y[15] 63 | x[ 4] = x[ 4] ^ x[15] y[ 7] 64 | -------------------------------------------------------------------------------- /Implementations/PRIDE_L_3.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000100000001000 3 | 0100010000000100 4 | 0010001000000010 5 | 0001000100000001 6 | 1000100010000000 7 | 0100010001000000 8 | 0010001000100000 9 | 0001000100010000 10 | 0000100010001000 11 | 0000010001000100 12 | 0000001000100010 13 | 0000000100010001 14 | 1000000010001000 15 | 0100000001000100 16 | 0010000000100010 17 | 0001000000010001 18 | 19 | 20 | Reduced Matrix: 21 | 1000000000000000 22 | 0100000000000000 23 | 0010000000000000 24 | 0001000000000000 25 | 0000000010000000 26 | 0000000001000000 27 | 0000000000100000 28 | 0000000000010000 29 | 0000100000000000 30 | 0000010000000000 31 | 0000001000000000 32 | 0000000100000000 33 | 0000000000001000 34 | 0000000000000100 35 | 0000000000000010 36 | 0000000000000001 37 | 38 | 39 | Xor Count = 24 40 | x[ 3] = x[ 3] ^ x[11] 41 | x[11] = x[11] ^ x[15] 42 | x[ 2] = x[ 2] ^ x[10] 43 | x[10] = x[10] ^ x[14] 44 | x[ 1] = x[ 1] ^ x[ 9] 45 | x[ 9] = x[ 9] ^ x[13] 46 | x[ 0] = x[ 0] ^ x[ 8] 47 | x[ 8] = x[ 8] ^ x[12] 48 | x[ 7] = x[ 7] ^ x[11] y[11] 49 | x[ 6] = x[ 6] ^ x[10] y[10] 50 | x[ 5] = x[ 5] ^ x[ 9] y[ 9] 51 | x[ 4] = x[ 4] ^ x[ 8] y[ 8] 52 | x[15] = x[15] ^ x[ 3] y[15] 53 | x[ 3] = x[ 3] ^ x[ 7] y[ 3] 54 | x[14] = x[14] ^ x[ 2] y[14] 55 | x[ 2] = x[ 2] ^ x[ 6] y[ 2] 56 | x[13] = x[13] ^ x[ 1] y[13] 57 | x[ 1] = x[ 1] ^ x[ 5] y[ 1] 58 | x[12] = x[12] ^ x[ 0] y[12] 59 | x[ 0] = x[ 0] ^ x[ 4] y[ 0] 60 | x[11] = x[11] ^ x[ 3] y[ 7] 61 | x[10] = x[10] ^ x[ 2] y[ 6] 62 | x[ 9] = x[ 9] ^ x[ 1] y[ 5] 63 | x[ 8] = x[ 8] ^ x[ 0] y[ 4] 64 | -------------------------------------------------------------------------------- /Implementations/PRINCE_M_0.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 0000100010001000 3 | 0100000001000100 4 | 0010001000000010 5 | 0001000100010000 6 | 1000100010000000 7 | 0000010001000100 8 | 0010000000100010 9 | 0001000100000001 10 | 1000100000001000 11 | 0100010001000000 12 | 0000001000100010 13 | 0001000000010001 14 | 1000000010001000 15 | 0100010000000100 16 | 0010001000100000 17 | 0000000100010001 18 | 19 | 20 | Reduced Matrix: 21 | 0000100000000000 22 | 0000000001000000 23 | 0000000000100000 24 | 0000000000000001 25 | 1000000000000000 26 | 0000000000000100 27 | 0000001000000000 28 | 0001000000000000 29 | 0000000010000000 30 | 0100000000000000 31 | 0000000000000010 32 | 0000000100000000 33 | 0000000000001000 34 | 0000010000000000 35 | 0010000000000000 36 | 0000000000010000 37 | 38 | 39 | Xor Count = 24 40 | x[ 7] = x[ 7] ^ x[15] 41 | x[ 6] = x[ 6] ^ x[10] 42 | x[10] = x[10] ^ x[14] 43 | x[ 1] = x[ 1] ^ x[13] 44 | x[ 8] = x[ 8] ^ x[12] 45 | x[15] = x[15] ^ x[11] 46 | x[ 5] = x[ 5] ^ x[ 9] 47 | x[ 9] = x[ 9] ^ x[ 1] y[ 1] 48 | x[ 4] = x[ 4] ^ x[ 8] y[ 0] 49 | x[11] = x[11] ^ x[ 7] y[15] 50 | x[ 3] = x[ 3] ^ x[ 7] y[ 7] 51 | x[14] = x[14] ^ x[ 6] y[10] 52 | x[ 2] = x[ 2] ^ x[ 6] y[14] 53 | x[13] = x[13] ^ x[ 5] y[ 5] 54 | x[ 1] = x[ 1] ^ x[13] y[ 9] 55 | x[12] = x[12] ^ x[ 4] 56 | x[ 0] = x[ 0] ^ x[12] y[ 4] 57 | x[15] = x[15] ^ x[ 3] y[ 3] 58 | x[ 7] = x[ 7] ^ x[15] y[11] 59 | x[10] = x[10] ^ x[ 2] y[ 2] 60 | x[ 6] = x[ 6] ^ x[10] y[ 6] 61 | x[ 5] = x[ 5] ^ x[ 9] y[13] 62 | x[ 8] = x[ 8] ^ x[ 0] y[ 8] 63 | x[12] = x[12] ^ x[ 8] y[12] 64 | -------------------------------------------------------------------------------- /Implementations/PRINCE_M_1.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000100010000000 3 | 0000010001000100 4 | 0010000000100010 5 | 0001000100000001 6 | 1000100000001000 7 | 0100010001000000 8 | 0000001000100010 9 | 0001000000010001 10 | 1000000010001000 11 | 0100010000000100 12 | 0010001000100000 13 | 0000000100010001 14 | 0000100010001000 15 | 0100000001000100 16 | 0010001000000010 17 | 0001000100010000 18 | 19 | 20 | Reduced Matrix: 21 | 0000000000001000 22 | 0000010000000000 23 | 0000000000100000 24 | 0000000000010000 25 | 1000000000000000 26 | 0100000000000000 27 | 0000000000000010 28 | 0000000100000000 29 | 0000100000000000 30 | 0000000001000000 31 | 0010000000000000 32 | 0000000000000001 33 | 0000000010000000 34 | 0000000000000100 35 | 0000001000000000 36 | 0001000000000000 37 | 38 | 39 | Xor Count = 24 40 | x[ 7] = x[ 7] ^ x[11] 41 | x[11] = x[11] ^ x[15] 42 | x[ 2] = x[ 2] ^ x[14] 43 | x[ 9] = x[ 9] ^ x[13] 44 | x[ 4] = x[ 4] ^ x[12] 45 | x[ 6] = x[ 6] ^ x[10] 46 | x[10] = x[10] ^ x[ 2] y[ 2] 47 | x[ 5] = x[ 5] ^ x[ 9] y[ 1] 48 | x[12] = x[12] ^ x[ 8] 49 | x[15] = x[15] ^ x[ 7] y[11] 50 | x[ 3] = x[ 3] ^ x[ 7] y[15] 51 | x[14] = x[14] ^ x[ 6] y[ 6] 52 | x[ 2] = x[ 2] ^ x[14] y[10] 53 | x[13] = x[13] ^ x[ 5] 54 | x[ 1] = x[ 1] ^ x[13] y[ 5] 55 | x[ 8] = x[ 8] ^ x[ 4] y[12] 56 | x[ 0] = x[ 0] ^ x[ 4] y[ 4] 57 | x[11] = x[11] ^ x[ 3] y[ 3] 58 | x[ 7] = x[ 7] ^ x[11] y[ 7] 59 | x[ 6] = x[ 6] ^ x[10] y[14] 60 | x[ 9] = x[ 9] ^ x[ 1] y[ 9] 61 | x[13] = x[13] ^ x[ 9] y[13] 62 | x[12] = x[12] ^ x[ 0] y[ 0] 63 | x[ 4] = x[ 4] ^ x[12] y[ 8] 64 | -------------------------------------------------------------------------------- /Implementations/QARMA128.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 00000000000000010000100000010000 3 | 00000000100000000000010000001000 4 | 00000000010000000000001000000100 5 | 00000000001000000000000100000010 6 | 00000000000100001000000000000001 7 | 00000000000010000100000010000000 8 | 00000000000001000010000001000000 9 | 00000000000000100001000000100000 10 | 00010000000000000000000100001000 11 | 00001000000000001000000000000100 12 | 00000100000000000100000000000010 13 | 00000010000000000010000000000001 14 | 00000001000000000001000010000000 15 | 10000000000000000000100001000000 16 | 01000000000000000000010000100000 17 | 00100000000000000000001000010000 18 | 00001000000100000000000000000001 19 | 00000100000010000000000010000000 20 | 00000010000001000000000001000000 21 | 00000001000000100000000000100000 22 | 10000000000000010000000000010000 23 | 01000000100000000000000000001000 24 | 00100000010000000000000000000100 25 | 00010000001000000000000000000010 26 | 00000001000010000001000000000000 27 | 10000000000001000000100000000000 28 | 01000000000000100000010000000000 29 | 00100000000000010000001000000000 30 | 00010000100000000000000100000000 31 | 00001000010000001000000000000000 32 | 00000100001000000100000000000000 33 | 00000010000100000010000000000000 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000100000000000 38 | 00000000000000000000010000000000 39 | 00000000000000000000001000000000 40 | 00000000000000000000000100000000 41 | 00000000000000001000000000000000 42 | 00000000000000000100000000000000 43 | 00000000000000000010000000000000 44 | 00000000000000000001000000000000 45 | 00000000000000000000000000001000 46 | 00000000000000000000000000000100 47 | 00000000000000000000000000000010 48 | 00000000000000000000000000000001 49 | 00000000000000000000000010000000 50 | 00000000000000000000000001000000 51 | 00000000000000000000000000100000 52 | 00000000000000000000000000010000 53 | 00001000000000000000000000000000 54 | 00000100000000000000000000000000 55 | 00000010000000000000000000000000 56 | 00000001000000000000000000000000 57 | 10000000000000000000000000000000 58 | 01000000000000000000000000000000 59 | 00100000000000000000000000000000 60 | 00010000000000000000000000000000 61 | 00000000000010000000000000000000 62 | 00000000000001000000000000000000 63 | 00000000000000100000000000000000 64 | 00000000000000010000000000000000 65 | 00000000100000000000000000000000 66 | 00000000010000000000000000000000 67 | 00000000001000000000000000000000 68 | 00000000000100000000000000000000 69 | 70 | 71 | Xor Count = 48 72 | x[24] = x[24] ^ x[12] 73 | x[12] = x[12] ^ x[19] 74 | x[ 5] = x[ 5] ^ x[17] 75 | x[17] = x[17] ^ x[24] y[ 5] 76 | x[18] = x[18] ^ x[ 6] 77 | x[ 6] = x[ 6] ^ x[13] 78 | x[ 3] = x[ 3] ^ x[23] 79 | x[11] = x[11] ^ x[31] 80 | x[31] = x[31] ^ x[18] y[11] 81 | x[20] = x[20] ^ x[ 0] 82 | x[12] = x[12] ^ x[ 7] y[24] 83 | x[21] = x[21] ^ x[ 1] 84 | x[ 9] = x[ 9] ^ x[29] 85 | x[23] = x[23] ^ x[30] 86 | x[ 2] = x[ 2] ^ x[22] 87 | x[22] = x[22] ^ x[ 9] y[ 2] 88 | x[ 1] = x[ 1] ^ x[ 8] 89 | x[14] = x[14] ^ x[26] 90 | x[26] = x[26] ^ x[21] y[14] 91 | x[ 0] = x[ 0] ^ x[15] 92 | x[29] = x[29] ^ x[ 4] 93 | x[ 0] = x[ 0] ^ x[27] y[20] 94 | x[13] = x[13] ^ x[20] y[25] 95 | x[29] = x[29] ^ x[16] y[ 9] 96 | x[23] = x[23] ^ x[10] y[ 3] 97 | x[ 4] = x[ 4] ^ x[11] y[16] 98 | x[ 6] = x[ 6] ^ x[25] y[18] 99 | x[15] = x[15] ^ x[ 2] y[27] 100 | x[16] = x[16] ^ x[11] y[ 4] 101 | x[25] = x[25] ^ x[20] y[13] 102 | x[ 8] = x[ 8] ^ x[ 3] y[28] 103 | x[ 7] = x[ 7] ^ x[14] y[19] 104 | x[30] = x[30] ^ x[ 5] y[10] 105 | x[ 1] = x[ 1] ^ x[28] y[21] 106 | x[28] = x[28] ^ x[ 3] y[ 8] 107 | x[10] = x[10] ^ x[ 5] y[30] 108 | x[11] = x[11] ^ x[31] y[31] 109 | x[ 5] = x[ 5] ^ x[17] y[17] 110 | x[27] = x[27] ^ x[ 2] y[15] 111 | x[19] = x[19] ^ x[14] y[ 7] 112 | x[14] = x[14] ^ x[26] y[26] 113 | x[ 2] = x[ 2] ^ x[22] y[22] 114 | x[ 9] = x[ 9] ^ x[29] y[29] 115 | x[21] = x[21] ^ x[ 1] y[ 1] 116 | x[20] = x[20] ^ x[ 0] y[ 0] 117 | x[ 3] = x[ 3] ^ x[23] y[23] 118 | x[18] = x[18] ^ x[ 6] y[ 6] 119 | x[24] = x[24] ^ x[12] y[12] 120 | -------------------------------------------------------------------------------- /Implementations/QARMA64.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 0000000100100001 3 | 0000100000011000 4 | 0000010010000100 5 | 0000001001000010 6 | 0001000000010010 7 | 1000000010000001 8 | 0100000001001000 9 | 0010000000100100 10 | 0010000100000001 11 | 0001100000001000 12 | 1000010000000100 13 | 0100001000000010 14 | 0001001000010000 15 | 1000000110000000 16 | 0100100001000000 17 | 0010010000100000 18 | 19 | 20 | Reduced Matrix: 21 | 0000000000100000 22 | 0000000000010000 23 | 0000000010000000 24 | 0000000001000000 25 | 0000000000000010 26 | 0000000000000001 27 | 0000000000001000 28 | 0000000000000100 29 | 0010000000000000 30 | 0001000000000000 31 | 1000000000000000 32 | 0100000000000000 33 | 0000001000000000 34 | 0000000100000000 35 | 0000100000000000 36 | 0000010000000000 37 | 38 | 39 | Xor Count = 24 40 | x[ 7] = x[ 7] ^ x[15] 41 | x[ 6] = x[ 6] ^ x[14] 42 | x[ 5] = x[ 5] ^ x[13] 43 | x[ 4] = x[ 4] ^ x[12] 44 | x[ 3] = x[ 3] ^ x[ 4] y[ 9] 45 | x[11] = x[11] ^ x[ 4] y[ 1] 46 | x[10] = x[10] ^ x[ 7] y[ 0] 47 | x[13] = x[13] ^ x[10] 48 | x[ 2] = x[ 2] ^ x[ 7] y[ 8] 49 | x[ 9] = x[ 9] ^ x[ 6] y[ 3] 50 | x[12] = x[12] ^ x[ 9] 51 | x[ 1] = x[ 1] ^ x[ 6] y[11] 52 | x[ 8] = x[ 8] ^ x[ 5] y[ 2] 53 | x[15] = x[15] ^ x[ 8] 54 | x[ 0] = x[ 0] ^ x[ 5] y[10] 55 | x[14] = x[14] ^ x[11] 56 | x[14] = x[14] ^ x[ 3] y[ 4] 57 | x[ 6] = x[ 6] ^ x[14] y[12] 58 | x[15] = x[15] ^ x[ 0] y[ 5] 59 | x[13] = x[13] ^ x[ 2] y[ 7] 60 | x[12] = x[12] ^ x[ 1] y[ 6] 61 | x[ 5] = x[ 5] ^ x[13] y[15] 62 | x[ 4] = x[ 4] ^ x[12] y[14] 63 | x[ 7] = x[ 7] ^ x[15] y[13] 64 | -------------------------------------------------------------------------------- /Implementations/SKINNY.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000000010001000 3 | 0100000001000100 4 | 0010000000100010 5 | 0001000000010001 6 | 1000000000000000 7 | 0100000000000000 8 | 0010000000000000 9 | 0001000000000000 10 | 0000100010000000 11 | 0000010001000000 12 | 0000001000100000 13 | 0000000100010000 14 | 1000000010000000 15 | 0100000001000000 16 | 0010000000100000 17 | 0001000000010000 18 | 19 | 20 | Reduced Matrix: 21 | 0000000000001000 22 | 0000000000000100 23 | 0000000000000010 24 | 0000000000000001 25 | 1000000000000000 26 | 0100000000000000 27 | 0010000000000000 28 | 0001000000000000 29 | 0000100000000000 30 | 0000010000000000 31 | 0000001000000000 32 | 0000000100000000 33 | 0000000010000000 34 | 0000000001000000 35 | 0000000000100000 36 | 0000000000010000 37 | 38 | 39 | Xor Count = 12 40 | x[ 7] = x[ 7] ^ x[11] y[11] 41 | x[ 6] = x[ 6] ^ x[10] y[10] 42 | x[ 5] = x[ 5] ^ x[ 9] y[ 9] 43 | x[ 4] = x[ 4] ^ x[ 8] y[ 8] 44 | x[11] = x[11] ^ x[ 3] y[15] 45 | x[10] = x[10] ^ x[ 2] y[14] 46 | x[ 9] = x[ 9] ^ x[ 1] y[13] 47 | x[ 8] = x[ 8] ^ x[ 0] y[12] 48 | x[15] = x[15] ^ x[11] y[ 3] 49 | x[14] = x[14] ^ x[10] y[ 2] 50 | x[13] = x[13] ^ x[ 9] y[ 1] 51 | x[12] = x[12] ^ x[ 8] y[ 0] 52 | -------------------------------------------------------------------------------- /Implementations/SmallScale_AES.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 0001100110001000 3 | 1001110101000100 4 | 0100011000100010 5 | 0010001100010001 6 | 1000000110011000 7 | 0100100111010100 8 | 0010010001100010 9 | 0001001000110001 10 | 1000100000011001 11 | 0100010010011101 12 | 0010001001000110 13 | 0001000100100011 14 | 1001100010000001 15 | 1101010001001001 16 | 0110001000100100 17 | 0011000100010010 18 | 19 | 20 | Reduced Matrix: 21 | 0000100000000000 22 | 0000010000000000 23 | 0000000000100000 24 | 0000000000000001 25 | 0000000000001000 26 | 0000000000000100 27 | 0000000000000010 28 | 0000000100000000 29 | 0000000010000000 30 | 0000000001000000 31 | 0010000000000000 32 | 0001000000000000 33 | 1000000000000000 34 | 0100000000000000 35 | 0000001000000000 36 | 0000000000010000 37 | 38 | 39 | Xor Count = 43 40 | x[12] = x[12] ^ x[ 8] 41 | x[13] = x[13] ^ x[ 9] 42 | x[ 9] = x[ 9] ^ x[ 5] 43 | x[ 3] = x[ 3] ^ x[ 7] 44 | x[ 7] = x[ 7] ^ x[11] 45 | x[10] = x[10] ^ x[ 2] 46 | x[ 2] = x[ 2] ^ x[14] 47 | x[ 8] = x[ 8] ^ x[ 4] 48 | x[ 8] = x[ 8] ^ x[ 7] 49 | x[11] = x[11] ^ x[15] 50 | x[15] = x[15] ^ x[ 2] 51 | x[ 2] = x[ 2] ^ x[ 6] 52 | x[ 6] = x[ 6] ^ x[14] 53 | x[14] = x[14] ^ x[10] 54 | x[ 2] = x[ 2] ^ x[13] y[10] 55 | x[14] = x[14] ^ x[ 9] y[ 6] 56 | x[13] = x[13] ^ x[ 1] 57 | x[ 5] = x[ 5] ^ x[13] 58 | x[13] = x[13] ^ x[ 8] y[ 5] 59 | x[ 9] = x[ 9] ^ x[12] 60 | x[ 8] = x[ 8] ^ x[11] 61 | x[12] = x[12] ^ x[ 0] 62 | x[ 0] = x[ 0] ^ x[ 3] 63 | x[ 3] = x[ 3] ^ x[15] 64 | x[11] = x[11] ^ x[ 3] y[15] 65 | x[ 3] = x[ 3] ^ x[10] y[11] 66 | x[ 4] = x[ 4] ^ x[ 0] 67 | x[ 1] = x[ 1] ^ x[ 4] 68 | x[10] = x[10] ^ x[ 5] 69 | x[ 4] = x[ 4] ^ x[12] y[ 0] 70 | x[12] = x[12] ^ x[ 7] y[ 4] 71 | x[ 7] = x[ 7] ^ x[ 6] 72 | x[ 6] = x[ 6] ^ x[ 5] 73 | x[ 5] = x[ 5] ^ x[ 1] y[ 1] 74 | x[15] = x[15] ^ x[ 7] y[ 3] 75 | x[ 9] = x[ 9] ^ x[ 8] 76 | x[ 6] = x[ 6] ^ x[14] y[14] 77 | x[10] = x[10] ^ x[ 2] y[ 2] 78 | x[ 1] = x[ 1] ^ x[ 9] y[13] 79 | x[ 7] = x[ 7] ^ x[ 3] y[ 7] 80 | x[ 9] = x[ 9] ^ x[13] y[ 9] 81 | x[ 0] = x[ 0] ^ x[ 8] y[12] 82 | x[ 8] = x[ 8] ^ x[12] y[ 8] 83 | -------------------------------------------------------------------------------- /Implementations/ToSC_SarSye16_448.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000100000000000000111000000 3 | 01000000010000001000000100100000 4 | 00100000001000000100000000010000 5 | 00010000000100000010000000001000 6 | 00001000000010000001000000000100 7 | 00000100000001000000100010000010 8 | 00000010000000100000010110000001 9 | 00000001000000010000001110000000 10 | 11100000100000001000000000000001 11 | 00010000010000000100000010000001 12 | 00001000001000000010000001000000 13 | 00000100000100000001000000100000 14 | 10000010000010000000100000010000 15 | 01000001000001000000010000001000 16 | 01000000000000100000001000000101 17 | 11000000000000010000000100000011 18 | 10000000111000001000000010000000 19 | 01000000000100000100000001000000 20 | 00100000000010000010000000100000 21 | 00010000000001000001000000010000 22 | 00001000100000100000100000001000 23 | 00000100010000010000010000000100 24 | 00000010010000000000001000000010 25 | 00000001110000000000000100000001 26 | 11000000100000001110000010000000 27 | 00100000010000000001000001000000 28 | 00010000001000000000100000100000 29 | 00001000000100000000010000010000 30 | 00000100000010001000001000001000 31 | 10000010000001000100000100000100 32 | 10000001000000100100000000000010 33 | 10000000000000011100000000000001 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000001000000000000000 38 | 00000000000000000000000000100000 39 | 00100000000000000000000000000000 40 | 00000000000100000000000000000000 41 | 00000000000000000000000000000100 42 | 00000100000000000000000000000000 43 | 00000000010000000000000000000000 44 | 00000000000000000000000100000000 45 | 00000000100000000000000000000000 46 | 00000010000000000000000000000000 47 | 00000000000000000010000000000000 48 | 00000000000000000001000000000000 49 | 00000000000000000000010000000000 50 | 00000001000000000000000000000000 51 | 00000000000000000000000010000000 52 | 00000000000000000000000000000010 53 | 00001000000000000000000000000000 54 | 01000000000000000000000000000000 55 | 00000000000010000000000000000000 56 | 00010000000000000000000000000000 57 | 00000000000000100000000000000000 58 | 00000000000000010000000000000000 59 | 00000000000000000000001000000000 60 | 00000000000000000000000000000001 61 | 00000000000000000000000000001000 62 | 00000000000000000000000001000000 63 | 00000000000000000000100000000000 64 | 00000000000000000000000000010000 65 | 00000000001000000000000000000000 66 | 00000000000001000000000000000000 67 | 10000000000000000000000000000000 68 | 00000000000000000100000000000000 69 | 70 | 71 | Xor Count = 114 72 | x[ 5] = x[ 5] ^ x[26] 73 | x[28] = x[28] ^ x[ 3] 74 | x[20] = x[20] ^ x[ 3] 75 | x[27] = x[27] ^ x[19] 76 | x[12] = x[12] ^ x[19] 77 | x[20] = x[20] ^ x[26] 78 | x[26] = x[26] ^ x[ 9] 79 | x[16] = x[16] ^ x[23] 80 | x[ 3] = x[ 3] ^ x[13] 81 | x[14] = x[14] ^ x[ 1] 82 | x[ 0] = x[ 0] ^ x[23] 83 | x[23] = x[23] ^ x[ 7] 84 | x[ 7] = x[ 7] ^ x[ 3] 85 | x[ 7] = x[ 7] ^ x[21] 86 | x[13] = x[13] ^ x[ 0] 87 | x[ 0] = x[ 0] ^ x[31] 88 | x[31] = x[31] ^ x[23] 89 | x[13] = x[13] ^ x[ 6] 90 | x[ 6] = x[ 6] ^ x[ 9] 91 | x[21] = x[21] ^ x[ 4] 92 | x[14] = x[14] ^ x[31] 93 | x[21] = x[21] ^ x[ 5] 94 | x[31] = x[31] ^ x[ 8] 95 | x[ 8] = x[ 8] ^ x[ 1] 96 | x[31] = x[31] ^ x[ 9] y[23] 97 | x[ 8] = x[ 8] ^ x[ 2] 98 | x[ 2] = x[ 2] ^ x[19] 99 | x[23] = x[23] ^ x[24] 100 | x[ 1] = x[ 1] ^ x[28] 101 | x[19] = x[19] ^ x[ 5] 102 | x[19] = x[19] ^ x[11] y[11] 103 | x[ 5] = x[ 5] ^ x[24] 104 | x[11] = x[11] ^ x[18] 105 | x[18] = x[18] ^ x[25] 106 | x[25] = x[25] ^ x[ 2] 107 | x[25] = x[25] ^ x[ 9] y[25] 108 | x[ 5] = x[ 5] ^ x[20] 109 | x[ 9] = x[ 9] ^ x[13] 110 | x[13] = x[13] ^ x[29] 111 | x[20] = x[20] ^ x[10] y[26] 112 | x[24] = x[24] ^ x[29] 113 | x[ 2] = x[ 2] ^ x[10] 114 | x[29] = x[29] ^ x[ 4] 115 | x[10] = x[10] ^ x[ 4] 116 | x[ 4] = x[ 4] ^ x[23] 117 | x[ 9] = x[ 9] ^ x[ 7] 118 | x[23] = x[23] ^ x[22] 119 | x[ 7] = x[ 7] ^ x[ 1] y[13] 120 | x[29] = x[29] ^ x[12] y[ 4] 121 | x[12] = x[12] ^ x[26] 122 | x[26] = x[26] ^ x[ 1] 123 | x[ 5] = x[ 5] ^ x[27] 124 | x[11] = x[11] ^ x[28] y[ 3] 125 | x[22] = x[22] ^ x[ 6] 126 | x[13] = x[13] ^ x[17] y[29] 127 | x[ 6] = x[ 6] ^ x[ 0] 128 | x[28] = x[28] ^ x[16] 129 | x[ 0] = x[ 0] ^ x[16] 130 | x[ 6] = x[ 6] ^ x[24] 131 | x[24] = x[24] ^ x[14] 132 | x[16] = x[16] ^ x[ 2] 133 | x[ 2] = x[ 2] ^ x[17] 134 | x[ 1] = x[ 1] ^ x[17] 135 | x[17] = x[17] ^ x[15] 136 | x[ 1] = x[ 1] ^ x[18] 137 | x[ 2] = x[ 2] ^ x[27] y[ 2] 138 | x[ 6] = x[ 6] ^ x[ 3] 139 | x[24] = x[24] ^ x[23] y[14] 140 | x[23] = x[23] ^ x[15] y[ 7] 141 | x[ 3] = x[ 3] ^ x[27] y[19] 142 | x[27] = x[27] ^ x[21] 143 | x[21] = x[21] ^ x[12] 144 | x[12] = x[12] ^ x[18] 145 | x[ 5] = x[ 5] ^ x[ 9] 146 | x[ 9] = x[ 9] ^ x[30] 147 | x[ 6] = x[ 6] ^ x[13] y[ 9] 148 | x[22] = x[22] ^ x[30] y[22] 149 | x[ 8] = x[ 8] ^ x[ 0] y[ 8] 150 | x[15] = x[15] ^ x[21] 151 | x[30] = x[30] ^ x[18] 152 | x[17] = x[17] ^ x[ 0] y[31] 153 | x[21] = x[21] ^ x[ 4] 154 | x[ 4] = x[ 4] ^ x[ 0] 155 | x[16] = x[16] ^ x[25] 156 | x[18] = x[18] ^ x[10] y[10] 157 | x[ 0] = x[ 0] ^ x[14] 158 | x[15] = x[15] ^ x[29] y[21] 159 | x[14] = x[14] ^ x[26] 160 | x[26] = x[26] ^ x[28] y[ 1] 161 | x[10] = x[10] ^ x[31] 162 | x[ 4] = x[ 4] ^ x[10] y[16] 163 | x[14] = x[14] ^ x[10] 164 | x[10] = x[10] ^ x[12] 165 | x[10] = x[10] ^ x[ 2] 166 | x[28] = x[28] ^ x[ 1] 167 | x[30] = x[30] ^ x[28] 168 | x[16] = x[16] ^ x[ 4] y[ 0] 169 | x[ 0] = x[ 0] ^ x[30] y[30] 170 | x[21] = x[21] ^ x[ 5] y[12] 171 | x[10] = x[10] ^ x[ 1] 172 | x[10] = x[10] ^ x[27] 173 | x[14] = x[14] ^ x[20] y[20] 174 | x[10] = x[10] ^ x[ 9] 175 | x[12] = x[12] ^ x[25] y[18] 176 | x[ 5] = x[ 5] ^ x[ 3] 177 | x[10] = x[10] ^ x[ 8] 178 | x[ 5] = x[ 5] ^ x[ 9] y[ 5] 179 | x[ 1] = x[ 1] ^ x[11] y[17] 180 | x[ 9] = x[ 9] ^ x[ 6] 181 | x[27] = x[27] ^ x[19] y[27] 182 | x[10] = x[10] ^ x[22] y[28] 183 | x[30] = x[30] ^ x[17] y[15] 184 | x[ 9] = x[ 9] ^ x[ 0] y[ 6] 185 | x[28] = x[28] ^ x[16] y[24] 186 | -------------------------------------------------------------------------------- /Implementations/ToSC_SarSye16_4x4_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000100000010100 3 | 0100010010000010 4 | 0010001001001001 5 | 0001000100111000 6 | 0010100010000001 7 | 1001010001001000 8 | 1100001000100100 9 | 0100000100010011 10 | 1000001010001000 11 | 0100100101000100 12 | 0010110000100010 13 | 0001010000010001 14 | 0100100000101000 15 | 0010010010010100 16 | 1001001011000010 17 | 1000000101000001 18 | 19 | 20 | Reduced Matrix: 21 | 0000000000000001 22 | 0000000000000010 23 | 0000000000010000 24 | 0001000000000000 25 | 0000000000100000 26 | 1000000000000000 27 | 0000001000000000 28 | 0000000100000000 29 | 0000000010000000 30 | 0100000000000000 31 | 0010000000000000 32 | 0000010000000000 33 | 0000100000000000 34 | 0000000000000100 35 | 0000000001000000 36 | 0000000000001000 37 | 38 | 39 | Xor Count = 41 40 | x[ 6] = x[ 6] ^ x[ 0] 41 | x[10] = x[10] ^ x[ 1] 42 | x[13] = x[13] ^ x[ 4] 43 | x[ 4] = x[ 4] ^ x[10] 44 | x[10] = x[10] ^ x[15] 45 | x[15] = x[15] ^ x[11] 46 | x[ 5] = x[ 5] ^ x[15] 47 | x[ 1] = x[ 1] ^ x[15] 48 | x[ 9] = x[ 9] ^ x[12] 49 | x[15] = x[15] ^ x[ 9] 50 | x[ 2] = x[ 2] ^ x[ 6] 51 | x[ 9] = x[ 9] ^ x[14] 52 | x[14] = x[14] ^ x[ 1] 53 | x[ 6] = x[ 6] ^ x[ 4] 54 | x[ 4] = x[ 4] ^ x[12] y[12] 55 | x[12] = x[12] ^ x[ 7] 56 | x[ 1] = x[ 1] ^ x[12] 57 | x[ 0] = x[ 0] ^ x[15] 58 | x[11] = x[11] ^ x[ 0] 59 | x[15] = x[15] ^ x[13] 60 | x[ 9] = x[ 9] ^ x[ 3] 61 | x[ 7] = x[ 7] ^ x[14] y[ 7] 62 | x[14] = x[14] ^ x[ 8] 63 | x[ 8] = x[ 8] ^ x[ 6] 64 | x[12] = x[12] ^ x[11] y[15] 65 | x[14] = x[14] ^ x[ 5] y[ 1] 66 | x[ 6] = x[ 6] ^ x[13] y[ 6] 67 | x[13] = x[13] ^ x[ 5] 68 | x[ 5] = x[ 5] ^ x[ 3] y[11] 69 | x[ 3] = x[ 3] ^ x[ 1] 70 | x[ 1] = x[ 1] ^ x[15] y[ 9] 71 | x[ 3] = x[ 3] ^ x[10] y[ 3] 72 | x[15] = x[15] ^ x[11] y[ 0] 73 | x[11] = x[11] ^ x[ 2] y[ 2] 74 | x[ 2] = x[ 2] ^ x[ 8] 75 | x[ 8] = x[ 8] ^ x[ 4] y[ 8] 76 | x[10] = x[10] ^ x[ 2] y[ 4] 77 | x[ 2] = x[ 2] ^ x[14] y[10] 78 | x[ 0] = x[ 0] ^ x[ 5] y[ 5] 79 | x[ 9] = x[ 9] ^ x[ 8] y[14] 80 | x[13] = x[13] ^ x[10] y[13] 81 | -------------------------------------------------------------------------------- /Implementations/ToSC_SarSye16_i_4x4_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000000100101000 3 | 0100100100110100 4 | 0010010010010010 5 | 0001001001000001 6 | 0001100010000010 7 | 1001010001000011 8 | 0100001000101001 9 | 0010000100010100 10 | 0100000110000001 11 | 0110100101001001 12 | 0011010000100100 13 | 1001001000010010 14 | 0001010000011000 15 | 1001011010010100 16 | 0100001101000010 17 | 0010100100100001 18 | 19 | 20 | Reduced Matrix: 21 | 1000000000000000 22 | 0100000000000000 23 | 0010000000000000 24 | 0001000000000000 25 | 0000100000000000 26 | 0000010000000000 27 | 0000001000000000 28 | 0000000100000000 29 | 0000000010000000 30 | 0000000001000000 31 | 0000000000100000 32 | 0000000000010000 33 | 0000000000001000 34 | 0000000000000100 35 | 0000000000000010 36 | 0000000000000001 37 | 38 | 39 | Xor Count = 38 40 | x[ 5] = x[ 5] ^ x[ 3] 41 | x[ 9] = x[ 9] ^ x[15] 42 | x[15] = x[15] ^ x[ 7] 43 | x[ 1] = x[ 1] ^ x[15] 44 | x[13] = x[13] ^ x[ 5] 45 | x[11] = x[11] ^ x[ 5] 46 | x[ 2] = x[ 2] ^ x[13] 47 | x[ 6] = x[ 6] ^ x[ 9] 48 | x[ 5] = x[ 5] ^ x[14] 49 | x[ 9] = x[ 9] ^ x[ 0] 50 | x[ 0] = x[ 0] ^ x[10] 51 | x[10] = x[10] ^ x[ 2] y[10] 52 | x[15] = x[15] ^ x[10] 53 | x[ 0] = x[ 0] ^ x[ 7] 54 | x[ 0] = x[ 0] ^ x[12] y[ 0] 55 | x[13] = x[13] ^ x[ 4] 56 | x[15] = x[15] ^ x[13] y[15] 57 | x[ 4] = x[ 4] ^ x[ 3] 58 | x[ 4] = x[ 4] ^ x[ 8] 59 | x[ 8] = x[ 8] ^ x[ 1] y[ 8] 60 | x[ 4] = x[ 4] ^ x[14] y[ 4] 61 | x[ 2] = x[ 2] ^ x[11] 62 | x[ 5] = x[ 5] ^ x[ 9] y[ 5] 63 | x[ 9] = x[ 9] ^ x[ 0] 64 | x[ 3] = x[ 3] ^ x[ 6] y[ 3] 65 | x[ 6] = x[ 6] ^ x[ 1] 66 | x[14] = x[14] ^ x[ 6] y[14] 67 | x[12] = x[12] ^ x[11] y[12] 68 | x[13] = x[13] ^ x[ 4] 69 | x[ 6] = x[ 6] ^ x[ 9] y[ 6] 70 | x[11] = x[11] ^ x[ 3] 71 | x[ 1] = x[ 1] ^ x[15] 72 | x[ 9] = x[ 9] ^ x[ 1] y[ 9] 73 | x[ 7] = x[ 7] ^ x[ 2] y[ 7] 74 | x[ 2] = x[ 2] ^ x[13] y[ 2] 75 | x[ 1] = x[ 1] ^ x[ 7] y[ 1] 76 | x[11] = x[11] ^ x[ 5] y[11] 77 | x[13] = x[13] ^ x[11] y[13] 78 | -------------------------------------------------------------------------------- /Implementations/ToSC_SarSye16_i_4x4_8.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000000000011000000010000010 3 | 01000000100000000100000001000001 4 | 00100000010000010010000010100010 5 | 00010000001000000001000001010001 6 | 00001000000100000000100000101000 7 | 00000100000010010000010000010110 8 | 00000010000001010000001000001001 9 | 00000001000000100000000100000100 10 | 00000001100000001000001010000000 11 | 10000000010000000100000101000000 12 | 01000001001000001010001000100000 13 | 00100000000100000101000100010000 14 | 00010000000010000010100000001000 15 | 00001001000001000001011000000100 16 | 00000101000000100000100100000010 17 | 00000010000000010000010000000001 18 | 10100000001000001000000000000001 19 | 01010000000100000100000010000000 20 | 00001000001010000010000001000001 21 | 10000100100101000001000000100000 22 | 11000010110010100000100000010000 23 | 01000001010001010000010000001001 24 | 10000000100000100000001000000101 25 | 01000000010000010000000100000010 26 | 00100000101000000000000110000000 27 | 00010000010100001000000001000000 28 | 00101000000010000100000100100000 29 | 10010100100001000010000000010000 30 | 11001010110000100001000000001000 31 | 01000101010000010000100100000100 32 | 10000010100000000000010100000010 33 | 01000001010000000000001000000001 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000000000000010 38 | 00000000000000000000000100000000 39 | 00000000000000000000000000100000 40 | 00000000000000000000000001000000 41 | 00000000000000000000000000010000 42 | 00000000000010000000000000000000 43 | 00000010000000000000000000000000 44 | 00000001000000000000000000000000 45 | 10000000000000000000000000000000 46 | 00000000000000000100000000000000 47 | 00000000000000001000000000000000 48 | 00010000000000000000000000000000 49 | 00000000000000000010000000000000 50 | 00000000000000000000010000000000 51 | 00000000000000000000000000000100 52 | 00000000000000010000000000000000 53 | 00000000001000000000000000000000 54 | 01000000000000000000000000000000 55 | 00001000000000000000000000000000 56 | 00000000000000000001000000000000 57 | 00000000000000100000000000000000 58 | 00000000000001000000000000000000 59 | 00000000000000000000001000000000 60 | 00000000010000000000000000000000 61 | 00000000000000000000000010000000 62 | 00000000000100000000000000000000 63 | 00100000000000000000000000000000 64 | 00000100000000000000000000000000 65 | 00000000000000000000000000001000 66 | 00000000000000000000100000000000 67 | 00000000000000000000000000000001 68 | 00000000100000000000000000000000 69 | 70 | 71 | Xor Count = 93 72 | x[12] = x[12] ^ x[27] 73 | x[20] = x[20] ^ x[12] 74 | x[ 8] = x[ 8] ^ x[ 0] 75 | x[ 0] = x[ 0] ^ x[16] 76 | x[ 6] = x[ 6] ^ x[31] 77 | x[28] = x[28] ^ x[20] 78 | x[10] = x[10] ^ x[31] 79 | x[31] = x[31] ^ x[ 8] 80 | x[26] = x[26] ^ x[18] 81 | x[11] = x[11] ^ x[ 3] 82 | x[22] = x[22] ^ x[ 7] 83 | x[ 2] = x[ 2] ^ x[ 0] 84 | x[30] = x[30] ^ x[15] 85 | x[ 4] = x[ 4] ^ x[19] 86 | x[13] = x[13] ^ x[28] 87 | x[17] = x[17] ^ x[11] 88 | x[11] = x[11] ^ x[26] 89 | x[26] = x[26] ^ x[ 9] 90 | x[20] = x[20] ^ x[ 6] 91 | x[19] = x[19] ^ x[27] 92 | x[ 6] = x[ 6] ^ x[21] 93 | x[ 9] = x[ 9] ^ x[ 1] 94 | x[ 1] = x[ 1] ^ x[17] 95 | x[27] = x[27] ^ x[28] 96 | x[28] = x[28] ^ x[ 4] 97 | x[ 4] = x[ 4] ^ x[12] 98 | x[12] = x[12] ^ x[ 5] 99 | x[21] = x[21] ^ x[29] 100 | x[ 1] = x[ 1] ^ x[24] y[17] 101 | x[17] = x[17] ^ x[ 0] 102 | x[ 0] = x[ 0] ^ x[24] 103 | x[29] = x[29] ^ x[14] 104 | x[ 5] = x[ 5] ^ x[13] 105 | x[25] = x[25] ^ x[10] 106 | x[ 9] = x[ 9] ^ x[31] 107 | x[31] = x[31] ^ x[23] 108 | x[24] = x[24] ^ x[31] 109 | x[ 4] = x[ 4] ^ x[18] 110 | x[ 5] = x[ 5] ^ x[ 8] 111 | x[13] = x[13] ^ x[22] 112 | x[ 8] = x[ 8] ^ x[22] 113 | x[12] = x[12] ^ x[30] 114 | x[22] = x[22] ^ x[31] 115 | x[10] = x[10] ^ x[ 2] y[16] 116 | x[16] = x[16] ^ x[10] 117 | x[24] = x[24] ^ x[16] y[24] 118 | x[26] = x[26] ^ x[ 2] 119 | x[31] = x[31] ^ x[30] 120 | x[17] = x[17] ^ x[23] 121 | x[16] = x[16] ^ x[26] 122 | x[27] = x[27] ^ x[ 3] 123 | x[ 3] = x[ 3] ^ x[19] 124 | x[19] = x[19] ^ x[11] 125 | x[11] = x[11] ^ x[25] 126 | x[14] = x[14] ^ x[20] 127 | x[15] = x[15] ^ x[ 6] y[15] 128 | x[20] = x[20] ^ x[15] 129 | x[29] = x[29] ^ x[23] 130 | x[20] = x[20] ^ x[ 7] 131 | x[ 7] = x[ 7] ^ x[29] y[ 7] 132 | x[22] = x[22] ^ x[ 7] y[22] 133 | x[12] = x[12] ^ x[21] y[ 5] 134 | x[21] = x[21] ^ x[13] 135 | x[21] = x[21] ^ x[28] y[13] 136 | x[ 4] = x[ 4] ^ x[19] 137 | x[ 2] = x[ 2] ^ x[17] 138 | x[30] = x[30] ^ x[ 0] y[ 0] 139 | x[ 0] = x[ 0] ^ x[ 8] y[ 8] 140 | x[18] = x[18] ^ x[27] y[12] 141 | x[25] = x[25] ^ x[ 3] y[ 3] 142 | x[14] = x[14] ^ x[ 9] y[20] 143 | x[ 8] = x[ 8] ^ x[ 9] y[31] 144 | x[23] = x[23] ^ x[ 9] 145 | x[27] = x[27] ^ x[ 4] y[ 4] 146 | x[ 3] = x[ 3] ^ x[ 2] y[11] 147 | x[ 2] = x[ 2] ^ x[ 4] y[26] 148 | x[ 4] = x[ 4] ^ x[11] y[18] 149 | x[11] = x[11] ^ x[16] y[25] 150 | x[ 5] = x[ 5] ^ x[18] y[27] 151 | x[ 9] = x[ 9] ^ x[31] y[23] 152 | x[31] = x[31] ^ x[15] y[30] 153 | x[13] = x[13] ^ x[20] 154 | x[20] = x[20] ^ x[12] 155 | x[29] = x[29] ^ x[20] y[14] 156 | x[20] = x[20] ^ x[ 9] y[29] 157 | x[26] = x[26] ^ x[30] y[ 2] 158 | x[17] = x[17] ^ x[11] y[ 9] 159 | x[16] = x[16] ^ x[ 8] y[10] 160 | x[19] = x[19] ^ x[ 5] y[19] 161 | x[23] = x[23] ^ x[17] y[ 1] 162 | x[ 6] = x[ 6] ^ x[13] y[ 6] 163 | x[28] = x[28] ^ x[14] y[28] 164 | x[13] = x[13] ^ x[ 8] y[21] 165 | -------------------------------------------------------------------------------- /Implementations/Twofish.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000111000001010000010100000 3 | 01000000111100001101000011010000 4 | 00100000111110000110100001101000 5 | 00010000100111001001010010010100 6 | 00001000010011101100101011001010 7 | 00000100110001110100010101000101 8 | 00000010100000111000001010000010 9 | 00000001110000010100000101000001 10 | 10100000111000001110000010000000 11 | 11010000111100001111000001000000 12 | 01101000111110001111100000100000 13 | 10010100100111001001110000010000 14 | 11001010010011100100111000001000 15 | 01000101110001111100011100000100 16 | 10000010100000111000001100000010 17 | 01000001110000011100000100000001 18 | 11100000101000001000000011100000 19 | 11110000110100000100000011110000 20 | 11111000011010000010000011111000 21 | 10011100100101000001000010011100 22 | 01001110110010100000100001001110 23 | 11000111010001010000010011000111 24 | 10000011100000100000001010000011 25 | 11000001010000010000000111000001 26 | 11100000100000001110000010100000 27 | 11110000010000001111000011010000 28 | 11111000001000001111100001101000 29 | 10011100000100001001110010010100 30 | 01001110000010000100111011001010 31 | 11000111000001001100011101000101 32 | 10000011000000101000001110000010 33 | 11000001000000011100000101000001 34 | 35 | 36 | Reduced Matrix: 37 | 00100000000000000000000000000000 38 | 00000000000000000010000000000000 39 | 00001000000000000000000000000000 40 | 00000000000000000000010000000000 41 | 00000010000000000000000000000000 42 | 00000001000000000000000000000000 43 | 10000000000000000000000000000000 44 | 01000000000000000000000000000000 45 | 00000000000000000000000000100000 46 | 00010000000000000000000000000000 47 | 00000000000000000000000000001000 48 | 00000000000000000000000000000100 49 | 00000000000000000000000000000010 50 | 00000000000000000000001000000000 51 | 00000000000000000000000010000000 52 | 00000000000000000000000001000000 53 | 00000000100000000000000000000000 54 | 00000000010000000000000000000000 55 | 00000000001000000000000000000000 56 | 00000000000100000000000000000000 57 | 00000000000010000000000000000000 58 | 00000000000001000000000000000000 59 | 00000000000000100000000000000000 60 | 00000000000000000000000000000001 61 | 00000000000000001000000000000000 62 | 00000000000000000000000000010000 63 | 00000000000000000000100000000000 64 | 00000000000000000001000000000000 65 | 00000100000000000000000000000000 66 | 00000000000000010000000000000000 67 | 00000000000000000100000000000000 68 | 00000000000000000000000100000000 69 | 70 | 71 | Xor Count = 111 72 | x[25] = x[25] ^ x[ 1] 73 | x[24] = x[24] ^ x[ 0] 74 | x[27] = x[27] ^ x[ 3] 75 | x[26] = x[26] ^ x[ 2] 76 | x[29] = x[29] ^ x[ 5] 77 | x[30] = x[30] ^ x[ 6] 78 | x[ 9] = x[ 9] ^ x[25] 79 | x[28] = x[28] ^ x[ 4] 80 | x[25] = x[25] ^ x[16] 81 | x[13] = x[13] ^ x[29] 82 | x[11] = x[11] ^ x[27] 83 | x[31] = x[31] ^ x[ 7] 84 | x[27] = x[27] ^ x[24] 85 | x[ 6] = x[ 6] ^ x[22] 86 | x[ 6] = x[ 6] ^ x[13] 87 | x[10] = x[10] ^ x[26] 88 | x[30] = x[30] ^ x[24] 89 | x[14] = x[14] ^ x[30] 90 | x[30] = x[30] ^ x[21] 91 | x[12] = x[12] ^ x[28] 92 | x[28] = x[28] ^ x[19] 93 | x[ 1] = x[ 1] ^ x[17] 94 | x[19] = x[19] ^ x[16] 95 | x[29] = x[29] ^ x[24] 96 | x[ 7] = x[ 7] ^ x[14] 97 | x[14] = x[14] ^ x[ 8] 98 | x[ 8] = x[ 8] ^ x[24] 99 | x[ 4] = x[ 4] ^ x[11] 100 | x[11] = x[11] ^ x[ 8] 101 | x[ 3] = x[ 3] ^ x[ 0] 102 | x[ 0] = x[ 0] ^ x[16] 103 | x[ 2] = x[ 2] ^ x[18] 104 | x[29] = x[29] ^ x[20] 105 | x[ 1] = x[ 1] ^ x[ 8] 106 | x[ 8] = x[ 8] ^ x[10] 107 | x[ 8] = x[ 8] ^ x[25] y[16] 108 | x[ 3] = x[ 3] ^ x[19] 109 | x[ 5] = x[ 5] ^ x[ 0] 110 | x[ 2] = x[ 2] ^ x[ 9] 111 | x[ 5] = x[ 5] ^ x[12] 112 | x[24] = x[24] ^ x[23] 113 | x[12] = x[12] ^ x[ 9] 114 | x[23] = x[23] ^ x[16] 115 | x[16] = x[16] ^ x[26] 116 | x[26] = x[26] ^ x[17] 117 | x[16] = x[16] ^ x[18] 118 | x[23] = x[23] ^ x[17] 119 | x[18] = x[18] ^ x[27] 120 | x[27] = x[27] ^ x[19] 121 | x[27] = x[27] ^ x[17] 122 | x[19] = x[19] ^ x[21] 123 | x[17] = x[17] ^ x[22] 124 | x[22] = x[22] ^ x[31] 125 | x[31] = x[31] ^ x[15] 126 | x[15] = x[15] ^ x[ 6] 127 | x[ 6] = x[ 6] ^ x[ 0] 128 | x[ 0] = x[ 0] ^ x[31] 129 | x[31] = x[31] ^ x[ 9] 130 | x[ 9] = x[ 9] ^ x[11] 131 | x[11] = x[11] ^ x[28] 132 | x[28] = x[28] ^ x[25] 133 | x[11] = x[11] ^ x[13] y[19] 134 | x[13] = x[13] ^ x[30] 135 | x[30] = x[30] ^ x[25] 136 | x[ 9] = x[ 9] ^ x[26] y[17] 137 | x[10] = x[10] ^ x[18] 138 | x[ 6] = x[ 6] ^ x[ 1] 139 | x[ 3] = x[ 3] ^ x[10] 140 | x[19] = x[19] ^ x[29] 141 | x[15] = x[15] ^ x[21] 142 | x[10] = x[10] ^ x[12] y[18] 143 | x[12] = x[12] ^ x[14] 144 | x[19] = x[19] ^ x[ 4] y[27] 145 | x[ 4] = x[ 4] ^ x[20] 146 | x[21] = x[21] ^ x[11] 147 | x[ 4] = x[ 4] ^ x[ 1] 148 | x[12] = x[12] ^ x[29] y[20] 149 | x[21] = x[21] ^ x[ 5] y[ 3] 150 | x[ 5] = x[ 5] ^ x[17] 151 | x[17] = x[17] ^ x[23] 152 | x[23] = x[23] ^ x[25] 153 | x[ 5] = x[ 5] ^ x[30] 154 | x[14] = x[14] ^ x[22] y[22] 155 | x[23] = x[23] ^ x[ 0] y[31] 156 | x[ 5] = x[ 5] ^ x[20] y[28] 157 | x[20] = x[20] ^ x[ 3] 158 | x[ 3] = x[ 3] ^ x[ 9] y[ 9] 159 | x[18] = x[18] ^ x[ 3] y[ 1] 160 | x[20] = x[20] ^ x[27] 161 | x[22] = x[22] ^ x[25] 162 | x[17] = x[17] ^ x[ 7] y[30] 163 | x[ 7] = x[ 7] ^ x[13] 164 | x[27] = x[27] ^ x[ 2] y[25] 165 | x[13] = x[13] ^ x[31] y[21] 166 | x[31] = x[31] ^ x[24] y[23] 167 | x[ 2] = x[ 2] ^ x[ 8] y[ 0] 168 | x[20] = x[20] ^ x[28] y[26] 169 | x[16] = x[16] ^ x[ 1] y[24] 170 | x[ 1] = x[ 1] ^ x[31] y[ 7] 171 | x[26] = x[26] ^ x[ 2] y[ 8] 172 | x[25] = x[25] ^ x[ 1] y[15] 173 | x[ 0] = x[ 0] ^ x[14] y[ 6] 174 | x[ 4] = x[ 4] ^ x[10] y[ 2] 175 | x[ 7] = x[ 7] ^ x[ 1] y[ 5] 176 | x[ 6] = x[ 6] ^ x[12] y[ 4] 177 | x[15] = x[15] ^ x[23] y[29] 178 | x[24] = x[24] ^ x[ 0] y[14] 179 | x[29] = x[29] ^ x[21] y[11] 180 | x[22] = x[22] ^ x[ 7] y[13] 181 | x[30] = x[30] ^ x[ 6] y[12] 182 | x[28] = x[28] ^ x[ 4] y[10] 183 | -------------------------------------------------------------------------------- /Implementations/Whirlwind_M0.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10100010010100110001111001001001 3 | 01110011111110101001000101101101 4 | 10111001011111010100100000110110 5 | 01010100101101100010110010010011 6 | 00101010001101011110000110010100 7 | 00110111101011110001100111010110 8 | 10011011110101111000010001100011 9 | 01000101011010111100001000111001 10 | 01010011101000100100100100011110 11 | 11111010011100110110110110010001 12 | 01111101101110010011011001001000 13 | 10110110010101001001001100101100 14 | 00110101001010101001010011100001 15 | 10101111001101111101011000011001 16 | 11010111100110110110001110000100 17 | 01101011010001010011100111000010 18 | 00011110010010011010001001010011 19 | 10010001011011010111001111111010 20 | 01001000001101101011100101111101 21 | 00101100100100110101010010110110 22 | 11100001100101000010101000110101 23 | 00011001110101100011011110101111 24 | 10000100011000111001101111010111 25 | 11000010001110010100010101101011 26 | 01001001000111100101001110100010 27 | 01101101100100011111101001110011 28 | 00110110010010000111110110111001 29 | 10010011001011001011011001010100 30 | 10010100111000010011010100101010 31 | 11010110000110011010111100110111 32 | 01100011100001001101011110011011 33 | 00111001110000100110101101000101 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000000000010000 38 | 00000010000000000000000000000000 39 | 01000000000000000000000000000000 40 | 00001000000000000000000000000000 41 | 00000100000000000000000000000000 42 | 00000000000000000000000000000001 43 | 00000000000000000000000000000010 44 | 00000000000000100000000000000000 45 | 00000000100000000000000000000000 46 | 00000000000000000000000000001000 47 | 00010000000000000000000000000000 48 | 00100000000000000000000000000000 49 | 00000000000000000000100000000000 50 | 00000000000000000100000000000000 51 | 00000000000000000000010000000000 52 | 00000000000000000000000100000000 53 | 00000000010000000000000000000000 54 | 00000000000000000000000000100000 55 | 00000000001000000000000000000000 56 | 00000000000010000000000000000000 57 | 00000000000000000000000000000100 58 | 00000000000001000000000000000000 59 | 00000001000000000000000000000000 60 | 00000000000000000000000001000000 61 | 00000000000000000000001000000000 62 | 00000000000000010000000000000000 63 | 00000000000000000000000010000000 64 | 00000000000000001000000000000000 65 | 10000000000000000000000000000000 66 | 00000000000000000010000000000000 67 | 00000000000100000000000000000000 68 | 00000000000000000001000000000000 69 | 70 | 71 | Xor Count = 183 72 | x[20] = x[20] ^ x[27] 73 | x[ 8] = x[ 8] ^ x[ 7] 74 | x[ 6] = x[ 6] ^ x[ 3] 75 | x[21] = x[21] ^ x[ 8] 76 | x[ 7] = x[ 7] ^ x[10] 77 | x[ 4] = x[ 4] ^ x[13] 78 | x[28] = x[28] ^ x[26] 79 | x[20] = x[20] ^ x[ 4] 80 | x[19] = x[19] ^ x[29] 81 | x[28] = x[28] ^ x[23] 82 | x[22] = x[22] ^ x[20] 83 | x[14] = x[14] ^ x[17] 84 | x[ 8] = x[ 8] ^ x[ 2] 85 | x[23] = x[23] ^ x[31] 86 | x[13] = x[13] ^ x[22] 87 | x[ 3] = x[ 3] ^ x[25] 88 | x[ 0] = x[ 0] ^ x[15] 89 | x[17] = x[17] ^ x[25] 90 | x[22] = x[22] ^ x[23] 91 | x[ 3] = x[ 3] ^ x[30] 92 | x[21] = x[21] ^ x[ 9] 93 | x[ 9] = x[ 9] ^ x[20] 94 | x[29] = x[29] ^ x[ 8] 95 | x[ 8] = x[ 8] ^ x[12] 96 | x[12] = x[12] ^ x[19] 97 | x[19] = x[19] ^ x[28] 98 | x[29] = x[29] ^ x[11] 99 | x[ 7] = x[ 7] ^ x[ 5] 100 | x[ 5] = x[ 5] ^ x[31] 101 | x[ 2] = x[ 2] ^ x[ 5] 102 | x[ 5] = x[ 5] ^ x[30] 103 | x[30] = x[30] ^ x[21] 104 | x[ 5] = x[ 5] ^ x[28] 105 | x[28] = x[28] ^ x[21] 106 | x[23] = x[23] ^ x[14] 107 | x[21] = x[21] ^ x[10] 108 | x[30] = x[30] ^ x[14] 109 | x[14] = x[14] ^ x[20] 110 | x[15] = x[15] ^ x[13] 111 | x[23] = x[23] ^ x[10] 112 | x[28] = x[28] ^ x[22] 113 | x[21] = x[21] ^ x[13] 114 | x[13] = x[13] ^ x[20] 115 | x[20] = x[20] ^ x[12] 116 | x[13] = x[13] ^ x[26] 117 | x[10] = x[10] ^ x[14] 118 | x[14] = x[14] ^ x[27] 119 | x[27] = x[27] ^ x[12] 120 | x[12] = x[12] ^ x[22] 121 | x[22] = x[22] ^ x[24] 122 | x[20] = x[20] ^ x[24] 123 | x[24] = x[24] ^ x[17] 124 | x[26] = x[26] ^ x[ 1] 125 | x[ 1] = x[ 1] ^ x[17] 126 | x[17] = x[17] ^ x[ 6] 127 | x[22] = x[22] ^ x[ 6] 128 | x[ 5] = x[ 5] ^ x[29] 129 | x[21] = x[21] ^ x[ 3] 130 | x[ 3] = x[ 3] ^ x[29] 131 | x[29] = x[29] ^ x[26] 132 | x[26] = x[26] ^ x[ 6] 133 | x[ 6] = x[ 6] ^ x[ 9] 134 | x[ 9] = x[ 9] ^ x[25] 135 | x[25] = x[25] ^ x[ 2] 136 | x[ 1] = x[ 1] ^ x[31] 137 | x[22] = x[22] ^ x[ 7] 138 | x[25] = x[25] ^ x[ 7] 139 | x[ 7] = x[ 7] ^ x[16] 140 | x[ 9] = x[ 9] ^ x[27] 141 | x[27] = x[27] ^ x[31] 142 | x[10] = x[10] ^ x[16] 143 | x[ 2] = x[ 2] ^ x[ 8] 144 | x[23] = x[23] ^ x[ 6] 145 | x[20] = x[20] ^ x[ 7] 146 | x[ 7] = x[ 7] ^ x[ 6] 147 | x[26] = x[26] ^ x[16] 148 | x[ 2] = x[ 2] ^ x[11] 149 | x[ 6] = x[ 6] ^ x[18] 150 | x[30] = x[30] ^ x[ 4] 151 | x[29] = x[29] ^ x[ 4] 152 | x[31] = x[31] ^ x[ 0] 153 | x[27] = x[27] ^ x[19] 154 | x[ 1] = x[ 1] ^ x[11] 155 | x[20] = x[20] ^ x[11] 156 | x[15] = x[15] ^ x[18] 157 | x[20] = x[20] ^ x[ 0] 158 | x[ 1] = x[ 1] ^ x[19] 159 | x[12] = x[12] ^ x[18] 160 | x[26] = x[26] ^ x[19] 161 | x[29] = x[29] ^ x[15] 162 | x[16] = x[16] ^ x[15] 163 | x[13] = x[13] ^ x[26] 164 | x[24] = x[24] ^ x[ 6] 165 | x[11] = x[11] ^ x[30] 166 | x[11] = x[11] ^ x[26] 167 | x[ 5] = x[ 5] ^ x[26] 168 | x[ 9] = x[ 9] ^ x[ 5] 169 | x[ 6] = x[ 6] ^ x[ 8] 170 | x[15] = x[15] ^ x[17] 171 | x[24] = x[24] ^ x[11] 172 | x[11] = x[11] ^ x[23] 173 | x[15] = x[15] ^ x[ 5] y[25] 174 | x[ 8] = x[ 8] ^ x[ 4] 175 | x[23] = x[23] ^ x[22] 176 | x[ 4] = x[ 4] ^ x[ 1] 177 | x[17] = x[17] ^ x[ 7] 178 | x[ 3] = x[ 3] ^ x[ 2] 179 | x[11] = x[11] ^ x[16] 180 | x[ 2] = x[ 2] ^ x[19] 181 | x[19] = x[19] ^ x[21] 182 | x[19] = x[19] ^ x[18] 183 | x[18] = x[18] ^ x[ 1] 184 | x[ 1] = x[ 1] ^ x[26] 185 | x[ 1] = x[ 1] ^ x[ 0] 186 | x[ 0] = x[ 0] ^ x[12] 187 | x[ 0] = x[ 0] ^ x[28] 188 | x[28] = x[28] ^ x[20] 189 | x[28] = x[28] ^ x[10] 190 | x[ 0] = x[ 0] ^ x[25] 191 | x[25] = x[25] ^ x[30] 192 | x[20] = x[20] ^ x[ 8] 193 | x[23] = x[23] ^ x[19] 194 | x[19] = x[19] ^ x[14] 195 | x[28] = x[28] ^ x[ 6] 196 | x[27] = x[27] ^ x[ 6] 197 | x[ 4] = x[ 4] ^ x[23] y[ 3] 198 | x[23] = x[23] ^ x[ 7] 199 | x[26] = x[26] ^ x[ 0] 200 | x[19] = x[19] ^ x[29] 201 | x[ 8] = x[ 8] ^ x[ 5] 202 | x[ 5] = x[ 5] ^ x[18] 203 | x[30] = x[30] ^ x[ 1] y[ 6] 204 | x[ 5] = x[ 5] ^ x[13] 205 | x[13] = x[13] ^ x[ 7] 206 | x[ 1] = x[ 1] ^ x[ 7] 207 | x[ 1] = x[ 1] ^ x[ 3] y[ 2] 208 | x[ 7] = x[ 7] ^ x[10] 209 | x[ 8] = x[ 8] ^ x[10] 210 | x[ 7] = x[ 7] ^ x[22] 211 | x[10] = x[10] ^ x[18] y[18] 212 | x[18] = x[18] ^ x[24] 213 | x[24] = x[24] ^ x[ 9] 214 | x[24] = x[24] ^ x[14] y[26] 215 | x[ 9] = x[ 9] ^ x[29] y[16] 216 | x[14] = x[14] ^ x[12] 217 | x[14] = x[14] ^ x[16] 218 | x[29] = x[29] ^ x[31] y[20] 219 | x[31] = x[31] ^ x[ 6] 220 | x[31] = x[31] ^ x[16] 221 | x[16] = x[16] ^ x[ 0] 222 | x[ 0] = x[ 0] ^ x[ 3] y[28] 223 | x[16] = x[16] ^ x[27] y[27] 224 | x[27] = x[27] ^ x[12] 225 | x[12] = x[12] ^ x[21] 226 | x[21] = x[21] ^ x[ 3] 227 | x[23] = x[23] ^ x[21] 228 | x[28] = x[28] ^ x[13] y[ 9] 229 | x[ 6] = x[ 6] ^ x[10] y[ 1] 230 | x[ 7] = x[ 7] ^ x[29] 231 | x[ 5] = x[ 5] ^ x[12] 232 | x[ 5] = x[ 5] ^ x[19] 233 | x[ 3] = x[ 3] ^ x[11] y[10] 234 | x[19] = x[19] ^ x[11] y[31] 235 | x[12] = x[12] ^ x[ 8] 236 | x[ 5] = x[ 5] ^ x[23] y[ 4] 237 | x[22] = x[22] ^ x[ 8] y[24] 238 | x[ 8] = x[ 8] ^ x[ 2] y[ 8] 239 | x[14] = x[14] ^ x[13] y[ 7] 240 | x[ 2] = x[ 2] ^ x[31] y[11] 241 | x[ 7] = x[ 7] ^ x[15] y[22] 242 | x[25] = x[25] ^ x[ 1] 243 | x[23] = x[23] ^ x[14] y[15] 244 | x[20] = x[20] ^ x[25] y[12] 245 | x[27] = x[27] ^ x[25] y[ 0] 246 | x[25] = x[25] ^ x[ 8] y[23] 247 | x[11] = x[11] ^ x[ 5] y[30] 248 | x[21] = x[21] ^ x[28] y[14] 249 | x[31] = x[31] ^ x[ 7] y[ 5] 250 | x[13] = x[13] ^ x[ 4] y[21] 251 | x[12] = x[12] ^ x[23] y[19] 252 | x[18] = x[18] ^ x[21] y[29] 253 | x[26] = x[26] ^ x[11] y[17] 254 | x[17] = x[17] ^ x[27] y[13] 255 | -------------------------------------------------------------------------------- /Implementations/Whirlwind_M1.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10100111001010111000100111110100 3 | 01111100001111100100110110000110 4 | 10111110100111110010011011000011 5 | 01011111010001110001001111101001 6 | 01111010101100101001100001001111 7 | 11000111111000111101010001101000 8 | 11101011111110010110001000111100 9 | 11110101011101000011000110011110 10 | 00101011101001111111010010001001 11 | 00111110011111001000011001001101 12 | 10011111101111101100001100100110 13 | 01000111010111111110100100010011 14 | 10110010011110100100111110011000 15 | 11100011110001110110100011010100 16 | 11111001111010110011110001100010 17 | 01110100111101011001111000110001 18 | 10001001111101001010011100101011 19 | 01001101100001100111110000111110 20 | 00100110110000111011111010011111 21 | 00010011111010010101111101000111 22 | 10011000010011110111101010110010 23 | 11010100011010001100011111100011 24 | 01100010001111001110101111111001 25 | 00110001100111101111010101110100 26 | 11110100100010010010101110100111 27 | 10000110010011010011111001111100 28 | 11000011001001101001111110111110 29 | 11101001000100110100011101011111 30 | 01001111100110001011001001111010 31 | 01101000110101001110001111000111 32 | 00111100011000101111100111101011 33 | 10011110001100010111010011110101 34 | 35 | 36 | Reduced Matrix: 37 | 00000000001000000000000000000000 38 | 00000000000000100000000000000000 39 | 00000000000001000000000000000000 40 | 00000000000010000000000000000000 41 | 00000000000000000000000000000001 42 | 00000100000000000000000000000000 43 | 00000000000000000000000000100000 44 | 00000000000000000000010000000000 45 | 00000000000000000000000010000000 46 | 00000000000000000010000000000000 47 | 00000000000000000000000100000000 48 | 00000000100000000000000000000000 49 | 00000000000000000001000000000000 50 | 00000000000000000000000001000000 51 | 00000000010000000000000000000000 52 | 00000000000100000000000000000000 53 | 00001000000000000000000000000000 54 | 00000000000000000000000000001000 55 | 00000000000000000100000000000000 56 | 00000000000000000000000000000100 57 | 00000000000000000000000000000010 58 | 00000000000000000000001000000000 59 | 00100000000000000000000000000000 60 | 00000010000000000000000000000000 61 | 01000000000000000000000000000000 62 | 00000000000000000000100000000000 63 | 00010000000000000000000000000000 64 | 00000000000000000000000000010000 65 | 10000000000000000000000000000000 66 | 00000000000000010000000000000000 67 | 00000000000000001000000000000000 68 | 00000001000000000000000000000000 69 | 70 | 71 | Xor Count = 190 72 | x[23] = x[23] ^ x[24] 73 | x[ 8] = x[ 8] ^ x[ 1] 74 | x[19] = x[19] ^ x[26] 75 | x[ 3] = x[ 3] ^ x[12] 76 | x[ 7] = x[ 7] ^ x[ 8] 77 | x[19] = x[19] ^ x[14] 78 | x[27] = x[27] ^ x[18] 79 | x[27] = x[27] ^ x[17] 80 | x[13] = x[13] ^ x[27] 81 | x[29] = x[29] ^ x[ 5] 82 | x[14] = x[14] ^ x[16] 83 | x[22] = x[22] ^ x[ 9] 84 | x[15] = x[15] ^ x[ 0] 85 | x[30] = x[30] ^ x[20] 86 | x[20] = x[20] ^ x[14] 87 | x[ 5] = x[ 5] ^ x[16] 88 | x[ 4] = x[ 4] ^ x[13] 89 | x[28] = x[28] ^ x[ 6] 90 | x[29] = x[29] ^ x[19] 91 | x[ 8] = x[ 8] ^ x[29] 92 | x[29] = x[29] ^ x[ 7] 93 | x[ 7] = x[ 7] ^ x[30] 94 | x[12] = x[12] ^ x[ 0] 95 | x[ 0] = x[ 0] ^ x[19] 96 | x[26] = x[26] ^ x[31] 97 | x[31] = x[31] ^ x[25] 98 | x[27] = x[27] ^ x[20] 99 | x[12] = x[12] ^ x[23] 100 | x[11] = x[11] ^ x[ 2] 101 | x[24] = x[24] ^ x[15] 102 | x[18] = x[18] ^ x[22] 103 | x[22] = x[22] ^ x[ 3] 104 | x[24] = x[24] ^ x[19] 105 | x[26] = x[26] ^ x[30] 106 | x[18] = x[18] ^ x[ 8] 107 | x[27] = x[27] ^ x[22] 108 | x[12] = x[12] ^ x[ 1] 109 | x[14] = x[14] ^ x[31] 110 | x[ 9] = x[ 9] ^ x[ 2] 111 | x[ 6] = x[ 6] ^ x[20] 112 | x[ 2] = x[ 2] ^ x[ 3] 113 | x[ 8] = x[ 8] ^ x[16] 114 | x[25] = x[25] ^ x[13] 115 | x[ 1] = x[ 1] ^ x[21] 116 | x[20] = x[20] ^ x[29] 117 | x[25] = x[25] ^ x[15] 118 | x[31] = x[31] ^ x[19] 119 | x[20] = x[20] ^ x[30] 120 | x[ 2] = x[ 2] ^ x[29] 121 | x[13] = x[13] ^ x[28] 122 | x[28] = x[28] ^ x[21] 123 | x[21] = x[21] ^ x[30] 124 | x[21] = x[21] ^ x[25] 125 | x[25] = x[25] ^ x[ 5] 126 | x[29] = x[29] ^ x[19] 127 | x[ 5] = x[ 5] ^ x[23] 128 | x[28] = x[28] ^ x[ 4] 129 | x[23] = x[23] ^ x[ 3] 130 | x[ 3] = x[ 3] ^ x[ 0] 131 | x[ 0] = x[ 0] ^ x[10] 132 | x[10] = x[10] ^ x[ 7] 133 | x[ 7] = x[ 7] ^ x[22] 134 | x[10] = x[10] ^ x[17] 135 | x[13] = x[13] ^ x[23] 136 | x[31] = x[31] ^ x[20] 137 | x[22] = x[22] ^ x[ 4] 138 | x[ 5] = x[ 5] ^ x[ 9] 139 | x[30] = x[30] ^ x[22] 140 | x[22] = x[22] ^ x[ 0] 141 | x[ 0] = x[ 0] ^ x[ 9] 142 | x[23] = x[23] ^ x[ 1] 143 | x[ 9] = x[ 9] ^ x[15] 144 | x[ 9] = x[ 9] ^ x[19] 145 | x[13] = x[13] ^ x[29] 146 | x[16] = x[16] ^ x[31] 147 | x[26] = x[26] ^ x[ 9] 148 | x[17] = x[17] ^ x[18] 149 | x[18] = x[18] ^ x[23] 150 | x[19] = x[19] ^ x[ 4] 151 | x[ 4] = x[ 4] ^ x[ 1] 152 | x[ 1] = x[ 1] ^ x[26] 153 | x[26] = x[26] ^ x[31] 154 | x[31] = x[31] ^ x[ 8] 155 | x[ 8] = x[ 8] ^ x[11] 156 | x[11] = x[11] ^ x[23] 157 | x[31] = x[31] ^ x[27] 158 | x[23] = x[23] ^ x[16] 159 | x[16] = x[16] ^ x[27] 160 | x[ 0] = x[ 0] ^ x[ 8] 161 | x[27] = x[27] ^ x[12] 162 | x[ 8] = x[ 8] ^ x[12] 163 | x[12] = x[12] ^ x[28] 164 | x[ 1] = x[ 1] ^ x[18] y[24] 165 | x[ 3] = x[ 3] ^ x[18] 166 | x[18] = x[18] ^ x[28] 167 | x[ 4] = x[ 4] ^ x[ 8] 168 | x[ 8] = x[ 8] ^ x[29] 169 | x[28] = x[28] ^ x[ 6] 170 | x[29] = x[29] ^ x[ 6] 171 | x[31] = x[31] ^ x[15] 172 | x[15] = x[15] ^ x[14] 173 | x[28] = x[28] ^ x[20] y[17] 174 | x[26] = x[26] ^ x[10] 175 | x[ 6] = x[ 6] ^ x[25] 176 | x[ 7] = x[ 7] ^ x[15] 177 | x[15] = x[15] ^ x[ 5] 178 | x[20] = x[20] ^ x[14] 179 | x[14] = x[14] ^ x[17] 180 | x[17] = x[17] ^ x[10] 181 | x[10] = x[10] ^ x[21] 182 | x[23] = x[23] ^ x[10] 183 | x[16] = x[16] ^ x[17] 184 | x[10] = x[10] ^ x[13] 185 | x[ 4] = x[ 4] ^ x[18] 186 | x[29] = x[29] ^ x[24] 187 | x[ 5] = x[ 5] ^ x[10] 188 | x[16] = x[16] ^ x[30] 189 | x[12] = x[12] ^ x[25] 190 | x[10] = x[10] ^ x[27] 191 | x[17] = x[17] ^ x[19] 192 | x[12] = x[12] ^ x[21] 193 | x[ 3] = x[ 3] ^ x[21] 194 | x[ 2] = x[ 2] ^ x[26] 195 | x[ 7] = x[ 7] ^ x[29] 196 | x[10] = x[10] ^ x[ 6] 197 | x[25] = x[25] ^ x[ 9] 198 | x[ 9] = x[ 9] ^ x[21] 199 | x[21] = x[21] ^ x[ 2] 200 | x[21] = x[21] ^ x[28] 201 | x[ 6] = x[ 6] ^ x[11] 202 | x[21] = x[21] ^ x[ 8] 203 | x[ 8] = x[ 8] ^ x[20] 204 | x[ 9] = x[ 9] ^ x[16] 205 | x[16] = x[16] ^ x[11] 206 | x[21] = x[21] ^ x[19] y[ 7] 207 | x[19] = x[19] ^ x[ 4] 208 | x[19] = x[19] ^ x[22] 209 | x[ 5] = x[ 5] ^ x[26] 210 | x[22] = x[22] ^ x[ 5] 211 | x[ 5] = x[ 5] ^ x[ 2] y[ 5] 212 | x[ 4] = x[ 4] ^ x[14] 213 | x[22] = x[22] ^ x[18] 214 | x[22] = x[22] ^ x[14] y[21] 215 | x[ 2] = x[ 2] ^ x[11] 216 | x[14] = x[14] ^ x[16] y[ 1] 217 | x[11] = x[11] ^ x[23] 218 | x[15] = x[15] ^ x[11] 219 | x[11] = x[11] ^ x[18] 220 | x[18] = x[18] ^ x[30] 221 | x[30] = x[30] ^ x[24] y[20] 222 | x[24] = x[24] ^ x[28] 223 | x[18] = x[18] ^ x[16] y[ 9] 224 | x[16] = x[16] ^ x[ 0] 225 | x[ 0] = x[ 0] ^ x[23] 226 | x[11] = x[11] ^ x[12] y[15] 227 | x[12] = x[12] ^ x[31] y[ 3] 228 | x[19] = x[19] ^ x[27] y[12] 229 | x[ 4] = x[ 4] ^ x[30] 230 | x[ 6] = x[ 6] ^ x[29] y[23] 231 | x[27] = x[27] ^ x[31] 232 | x[ 2] = x[ 2] ^ x[20] 233 | x[15] = x[15] ^ x[ 9] y[29] 234 | x[ 9] = x[ 9] ^ x[31] y[14] 235 | x[ 7] = x[ 7] ^ x[ 5] 236 | x[ 3] = x[ 3] ^ x[ 5] y[26] 237 | x[24] = x[24] ^ x[27] 238 | x[27] = x[27] ^ x[ 3] 239 | x[23] = x[23] ^ x[25] 240 | x[25] = x[25] ^ x[29] y[13] 241 | x[27] = x[27] ^ x[16] 242 | x[16] = x[16] ^ x[10] y[30] 243 | x[10] = x[10] ^ x[ 3] 244 | x[10] = x[10] ^ x[26] y[ 0] 245 | x[23] = x[23] ^ x[14] 246 | x[27] = x[27] ^ x[11] 247 | x[ 0] = x[ 0] ^ x[12] y[28] 248 | x[26] = x[26] ^ x[ 0] y[ 6] 249 | x[20] = x[20] ^ x[23] 250 | x[24] = x[24] ^ x[10] y[ 8] 251 | x[20] = x[20] ^ x[ 0] y[25] 252 | x[27] = x[27] ^ x[25] y[27] 253 | x[ 4] = x[ 4] ^ x[10] y[16] 254 | x[ 2] = x[ 2] ^ x[20] y[22] 255 | x[ 7] = x[ 7] ^ x[ 0] y[31] 256 | x[29] = x[29] ^ x[22] y[19] 257 | x[ 8] = x[ 8] ^ x[25] y[11] 258 | x[23] = x[23] ^ x[29] y[10] 259 | x[17] = x[17] ^ x[24] y[18] 260 | x[31] = x[31] ^ x[26] y[ 4] 261 | x[13] = x[13] ^ x[27] y[ 2] 262 | -------------------------------------------------------------------------------- /Implementations/ePrint_JeaPeySim_4x4_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 1000100010000001 3 | 0100010001001001 4 | 0010001000100100 5 | 0001000100010010 6 | 1000000111101000 7 | 0100100100010100 8 | 0010010010000010 9 | 0001001011000001 10 | 0001111010001000 11 | 1001000101000100 12 | 0100100000100010 13 | 0010110000010001 14 | 1110100000011000 15 | 0001010010010100 16 | 1000001001000010 17 | 1100000100100001 18 | 19 | 20 | Reduced Matrix: 21 | 0000000010000000 22 | 0100000000000000 23 | 0000000000100000 24 | 0001000000000000 25 | 0000010000000000 26 | 0000000000000100 27 | 0010000000000000 28 | 0000100000000000 29 | 0000000000001000 30 | 0000000100000000 31 | 0000000000000010 32 | 0000000000000001 33 | 0000000001000000 34 | 0000000000010000 35 | 0000001000000000 36 | 1000000000000000 37 | 38 | 39 | Xor Count = 41 40 | x[ 1] = x[ 1] ^ x[ 4] 41 | x[15] = x[15] ^ x[ 4] 42 | x[10] = x[10] ^ x[ 1] 43 | x[12] = x[12] ^ x[ 9] 44 | x[ 9] = x[ 9] ^ x[ 0] 45 | x[ 0] = x[ 0] ^ x[15] 46 | x[15] = x[15] ^ x[ 5] 47 | x[ 5] = x[ 5] ^ x[ 8] 48 | x[12] = x[12] ^ x[15] 49 | x[ 8] = x[ 8] ^ x[ 0] y[ 0] 50 | x[ 0] = x[ 0] ^ x[ 7] 51 | x[ 7] = x[ 7] ^ x[11] 52 | x[15] = x[15] ^ x[ 2] 53 | x[ 0] = x[ 0] ^ x[10] y[15] 54 | x[15] = x[15] ^ x[11] y[11] 55 | x[11] = x[11] ^ x[ 3] 56 | x[ 3] = x[ 3] ^ x[14] 57 | x[ 6] = x[ 6] ^ x[14] 58 | x[ 2] = x[ 2] ^ x[14] 59 | x[14] = x[14] ^ x[10] y[10] 60 | x[10] = x[10] ^ x[ 6] 61 | x[10] = x[10] ^ x[ 2] 62 | x[ 2] = x[ 2] ^ x[ 5] y[ 6] 63 | x[11] = x[11] ^ x[13] 64 | x[13] = x[13] ^ x[ 1] 65 | x[10] = x[10] ^ x[13] y[ 2] 66 | x[13] = x[13] ^ x[ 7] y[ 5] 67 | x[ 6] = x[ 6] ^ x[ 9] y[14] 68 | x[ 4] = x[ 4] ^ x[ 3] 69 | x[ 3] = x[ 3] ^ x[ 7] y[ 3] 70 | x[ 7] = x[ 7] ^ x[ 9] 71 | x[ 1] = x[ 1] ^ x[12] y[ 1] 72 | x[ 9] = x[ 9] ^ x[ 1] 73 | x[ 4] = x[ 4] ^ x[ 8] 74 | x[ 4] = x[ 4] ^ x[ 6] y[ 7] 75 | x[ 7] = x[ 7] ^ x[11] y[ 9] 76 | x[11] = x[11] ^ x[ 5] y[13] 77 | x[ 9] = x[ 9] ^ x[15] y[12] 78 | x[ 5] = x[ 5] ^ x[ 0] 79 | x[ 5] = x[ 5] ^ x[ 1] y[ 4] 80 | x[12] = x[12] ^ x[ 4] y[ 8] 81 | -------------------------------------------------------------------------------- /Implementations/ePrint_JeaPeySim_4x4_8.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 10000000100000001000000000010000 3 | 01000000010000000100000010010000 4 | 00100000001000000010000001000000 5 | 00010000000100000001000000100000 6 | 00001000000010000000100000000001 7 | 00000100000001000000010000001001 8 | 00000010000000100000001000000100 9 | 00000001000000010000000100000010 10 | 10000000000100001110000010000000 11 | 01000000100100000001000001000000 12 | 00100000010000001000000000100000 13 | 00010000001000001100000000010000 14 | 00001000000000010000111000001000 15 | 00000100000010010000000100000100 16 | 00000010000001000000100000000010 17 | 00000001000000100000110000000001 18 | 00010000111000001000000010000000 19 | 10010000000100000100000001000000 20 | 01000000100000000010000000100000 21 | 00100000110000000001000000010000 22 | 00000001000011100000100000001000 23 | 00001001000000010000010000000100 24 | 00000100000010000000001000000010 25 | 00000010000011000000000100000001 26 | 11100000100000000001000010000000 27 | 00010000010000001001000001000000 28 | 10000000001000000100000000100000 29 | 11000000000100000010000000010000 30 | 00001110000010000000000100001000 31 | 00000001000001000000100100000100 32 | 00001000000000100000010000000010 33 | 00001100000000010000001000000001 34 | 35 | 36 | Reduced Matrix: 37 | 10000000000000000000000000000000 38 | 00000000010000000000000000000000 39 | 00000000001000000000000000000000 40 | 00000000000000000001000000000000 41 | 00000000000000000000100000000000 42 | 00000100000000000000000000000000 43 | 00000000000000000000001000000000 44 | 00000001000000000000000000000000 45 | 00000000000000001000000000000000 46 | 00000000000100000000000000000000 47 | 00100000000000000000000000000000 48 | 00000000000000000000000000010000 49 | 00000000000001000000000000000000 50 | 00000000000000000000000000000100 51 | 00000010000000000000000000000000 52 | 00000000000010000000000000000000 53 | 01000000000000000000000000000000 54 | 00000000000000000000000001000000 55 | 00000000000000000000000000100000 56 | 00000000100000000000000000000000 57 | 00000000000000000000000000001000 58 | 00000000000000010000000000000000 59 | 00000000000000000000000000000010 60 | 00000000000000000000000000000001 61 | 00000000000000000100000000000000 62 | 00010000000000000000000000000000 63 | 00000000000000000010000000000000 64 | 00000000000000000000000010000000 65 | 00000000000000000000010000000000 66 | 00000000000000000000000100000000 67 | 00000000000000100000000000000000 68 | 00001000000000000000000000000000 69 | 70 | 71 | Xor Count = 82 72 | x[31] = x[31] ^ x[12] 73 | x[27] = x[27] ^ x[16] 74 | x[28] = x[28] ^ x[21] 75 | x[21] = x[21] ^ x[ 4] 76 | x[ 4] = x[ 4] ^ x[31] 77 | x[31] = x[31] ^ x[13] 78 | x[13] = x[13] ^ x[20] 79 | x[20] = x[20] ^ x[ 4] y[ 4] 80 | x[ 4] = x[ 4] ^ x[15] 81 | x[ 9] = x[ 9] ^ x[16] 82 | x[16] = x[16] ^ x[24] 83 | x[16] = x[16] ^ x[11] 84 | x[24] = x[24] ^ x[ 1] 85 | x[ 1] = x[ 1] ^ x[ 8] 86 | x[11] = x[11] ^ x[ 3] 87 | x[ 8] = x[ 8] ^ x[27] 88 | x[27] = x[27] ^ x[17] 89 | x[24] = x[24] ^ x[27] 90 | x[27] = x[27] ^ x[ 3] 91 | x[ 3] = x[ 3] ^ x[19] 92 | x[28] = x[28] ^ x[31] 93 | x[31] = x[31] ^ x[ 6] 94 | x[31] = x[31] ^ x[23] y[23] 95 | x[15] = x[15] ^ x[23] 96 | x[ 6] = x[ 6] ^ x[30] 97 | x[ 2] = x[ 2] ^ x[26] 98 | x[ 5] = x[ 5] ^ x[12] 99 | x[17] = x[17] ^ x[ 0] 100 | x[ 3] = x[ 3] ^ x[25] 101 | x[19] = x[19] ^ x[26] 102 | x[23] = x[23] ^ x[ 7] 103 | x[23] = x[23] ^ x[29] 104 | x[26] = x[26] ^ x[18] 105 | x[18] = x[18] ^ x[17] 106 | x[16] = x[16] ^ x[18] y[ 8] 107 | x[14] = x[14] ^ x[30] 108 | x[ 7] = x[ 7] ^ x[30] 109 | x[22] = x[22] ^ x[ 5] 110 | x[29] = x[29] ^ x[ 5] 111 | x[ 5] = x[ 5] ^ x[28] y[ 5] 112 | x[ 4] = x[ 4] ^ x[22] y[31] 113 | x[27] = x[27] ^ x[10] y[11] 114 | x[10] = x[10] ^ x[26] 115 | x[12] = x[12] ^ x[20] 116 | x[18] = x[18] ^ x[10] y[26] 117 | x[12] = x[12] ^ x[ 7] 118 | x[ 7] = x[ 7] ^ x[15] y[ 7] 119 | x[ 0] = x[ 0] ^ x[ 8] y[ 0] 120 | x[30] = x[30] ^ x[22] y[22] 121 | x[ 8] = x[ 8] ^ x[19] 122 | x[19] = x[19] ^ x[11] y[ 3] 123 | x[10] = x[10] ^ x[ 2] 124 | x[26] = x[26] ^ x[ 1] y[18] 125 | x[ 2] = x[ 2] ^ x[ 9] y[10] 126 | x[10] = x[10] ^ x[25] y[ 2] 127 | x[25] = x[25] ^ x[17] 128 | x[22] = x[22] ^ x[14] 129 | x[14] = x[14] ^ x[21] y[30] 130 | x[22] = x[22] ^ x[ 6] 131 | x[ 6] = x[ 6] ^ x[13] y[14] 132 | x[25] = x[25] ^ x[11] y[17] 133 | x[22] = x[22] ^ x[29] y[ 6] 134 | x[29] = x[29] ^ x[15] y[13] 135 | x[11] = x[11] ^ x[ 1] 136 | x[15] = x[15] ^ x[21] 137 | x[21] = x[21] ^ x[31] 138 | x[15] = x[15] ^ x[23] y[21] 139 | x[11] = x[11] ^ x[ 3] y[ 9] 140 | x[ 3] = x[ 3] ^ x[ 9] y[25] 141 | x[23] = x[23] ^ x[13] y[29] 142 | x[ 9] = x[ 9] ^ x[24] y[ 1] 143 | x[12] = x[12] ^ x[14] y[15] 144 | x[21] = x[21] ^ x[ 5] y[28] 145 | x[ 8] = x[ 8] ^ x[ 2] y[19] 146 | x[24] = x[24] ^ x[16] y[27] 147 | x[13] = x[13] ^ x[ 4] 148 | x[13] = x[13] ^ x[ 5] y[12] 149 | x[28] = x[28] ^ x[12] y[20] 150 | x[ 1] = x[ 1] ^ x[ 9] 151 | x[ 1] = x[ 1] ^ x[27] y[16] 152 | x[17] = x[17] ^ x[ 9] 153 | x[17] = x[17] ^ x[ 8] y[24] 154 | -------------------------------------------------------------------------------- /Implementations/ePrint_JeaPeySim_i_4x4_4.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 0001100010001100 3 | 1001010001000010 4 | 0100001000100001 5 | 0010000100011000 6 | 1000001011111000 7 | 0100001110000100 8 | 0010100111000010 9 | 0001010011100001 10 | 1110110000101000 11 | 0001001000110100 12 | 1000000110010010 13 | 1100100001000001 14 | 1000111010000001 15 | 0100000101001001 16 | 0010100000100100 17 | 0001110000010010 18 | 19 | 20 | Reduced Matrix: 21 | 0000000000000100 22 | 0000010000000000 23 | 0000000000000001 24 | 0000000100000000 25 | 0000100000000000 26 | 0000001000000000 27 | 0010000000000000 28 | 0001000000000000 29 | 0000000000001000 30 | 0000000000010000 31 | 0000000000000010 32 | 0100000000000000 33 | 0000000010000000 34 | 0000000001000000 35 | 0000000000100000 36 | 1000000000000000 37 | 38 | 39 | Xor Count = 41 40 | x[ 7] = x[ 7] ^ x[ 8] 41 | x[12] = x[12] ^ x[ 8] 42 | x[ 5] = x[ 5] ^ x[ 9] 43 | x[ 6] = x[ 6] ^ x[ 1] 44 | x[ 1] = x[ 1] ^ x[15] 45 | x[15] = x[15] ^ x[10] 46 | x[ 9] = x[ 9] ^ x[ 4] 47 | x[ 4] = x[ 4] ^ x[12] 48 | x[12] = x[12] ^ x[ 2] 49 | x[10] = x[10] ^ x[12] 50 | x[ 8] = x[ 8] ^ x[15] 51 | x[ 2] = x[ 2] ^ x[14] 52 | x[15] = x[15] ^ x[ 6] y[ 2] 53 | x[ 6] = x[ 6] ^ x[13] 54 | x[13] = x[13] ^ x[ 4] 55 | x[10] = x[10] ^ x[13] y[14] 56 | x[ 6] = x[ 6] ^ x[ 7] y[ 5] 57 | x[13] = x[13] ^ x[ 3] y[ 0] 58 | x[ 4] = x[ 4] ^ x[ 1] 59 | x[ 8] = x[ 8] ^ x[ 5] 60 | x[14] = x[14] ^ x[ 0] 61 | x[ 5] = x[ 5] ^ x[ 3] 62 | x[ 0] = x[ 0] ^ x[ 9] 63 | x[ 9] = x[ 9] ^ x[ 7] 64 | x[ 7] = x[ 7] ^ x[11] 65 | x[ 2] = x[ 2] ^ x[ 9] y[ 6] 66 | x[ 9] = x[ 9] ^ x[ 4] y[13] 67 | x[ 4] = x[ 4] ^ x[15] 68 | x[ 5] = x[ 5] ^ x[14] y[ 1] 69 | x[14] = x[14] ^ x[ 7] y[10] 70 | x[ 7] = x[ 7] ^ x[12] y[ 3] 71 | x[ 1] = x[ 1] ^ x[ 0] y[11] 72 | x[ 3] = x[ 3] ^ x[ 8] y[ 7] 73 | x[ 0] = x[ 0] ^ x[11] 74 | x[11] = x[11] ^ x[ 4] 75 | x[11] = x[11] ^ x[13] y[ 9] 76 | x[ 8] = x[ 8] ^ x[ 1] 77 | x[12] = x[12] ^ x[ 8] y[ 8] 78 | x[ 8] = x[ 8] ^ x[15] y[12] 79 | x[ 4] = x[ 4] ^ x[ 0] y[ 4] 80 | x[ 0] = x[ 0] ^ x[ 5] y[15] 81 | -------------------------------------------------------------------------------- /Implementations/ePrint_JeaPeySim_i_4x4_8.txt: -------------------------------------------------------------------------------- 1 | Original Matrix: 2 | 00010000100000001000000011000000 3 | 10010000010000000100000000100000 4 | 01000000001000000010000000010000 5 | 00100000000100000001000010000000 6 | 00000001000010000000100000001100 7 | 00001001000001000000010000000010 8 | 00000100000000100000001000000001 9 | 00000010000000010000000100001000 10 | 10000000001000001111000010000000 11 | 01000000001100001000000001000000 12 | 00100000100100001100000000100000 13 | 00010000010000001110000000010000 14 | 00001000000000100000111100001000 15 | 00000100000000110000100000000100 16 | 00000010000010010000110000000010 17 | 00000001000001000000111000000001 18 | 11100000110000000010000010000000 19 | 00010000001000000011000001000000 20 | 10000000000100001001000000100000 21 | 11000000100000000100000000010000 22 | 00001110000011000000001000001000 23 | 00000001000000100000001100000100 24 | 00001000000000010000100100000010 25 | 00001100000010000000010000000001 26 | 10000000111000001000000000010000 27 | 01000000000100000100000010010000 28 | 00100000100000000010000001000000 29 | 00010000110000000001000000100000 30 | 00001000000011100000100000000001 31 | 00000100000000010000010000001001 32 | 00000010000010000000001000000100 33 | 00000001000011000000000100000010 34 | 35 | 36 | Reduced Matrix: 37 | 00000000000000000000000001000000 38 | 00000000010000000000000000000000 39 | 00000000000000000000000000010000 40 | 00000000000100000000000000000000 41 | 00000000000000000000000000000100 42 | 00000000000001000000000000000000 43 | 00000000000000100000000000000000 44 | 00000000000000000000000000001000 45 | 10000000000000000000000000000000 46 | 00000000001000000000000000000000 47 | 00100000000000000000000000000000 48 | 00000000000000001000000000000000 49 | 00000000000010000000000000000000 50 | 00000000000000010000000000000000 51 | 00000010000000000000000000000000 52 | 00000001000000000000000000000000 53 | 00000000000000000000000010000000 54 | 00000000100000000000000000000000 55 | 00000000000000000000000000100000 56 | 01000000000000000000000000000000 57 | 00000000000000000000100000000000 58 | 00000000000000000000000100000000 59 | 00000000000000000000000000000010 60 | 00000000000000000000000000000001 61 | 00010000000000000000000000000000 62 | 00000000000000000100000000000000 63 | 00000000000000000010000000000000 64 | 00000000000000000001000000000000 65 | 00000100000000000000000000000000 66 | 00000000000000000000010000000000 67 | 00000000000000000000001000000000 68 | 00001000000000000000000000000000 69 | 70 | 71 | Xor Count = 83 72 | x[31] = x[31] ^ x[ 5] 73 | x[11] = x[11] ^ x[16] 74 | x[24] = x[24] ^ x[16] 75 | x[10] = x[10] ^ x[ 1] 76 | x[ 1] = x[ 1] ^ x[27] 77 | x[27] = x[27] ^ x[18] 78 | x[16] = x[16] ^ x[27] 79 | x[30] = x[30] ^ x[ 4] 80 | x[ 5] = x[ 5] ^ x[20] 81 | x[20] = x[20] ^ x[28] 82 | x[13] = x[13] ^ x[21] 83 | x[ 4] = x[ 4] ^ x[21] 84 | x[ 9] = x[ 9] ^ x[17] 85 | x[27] = x[27] ^ x[10] y[ 2] 86 | x[ 4] = x[ 4] ^ x[12] 87 | x[12] = x[12] ^ x[20] 88 | x[17] = x[17] ^ x[ 8] 89 | x[28] = x[28] ^ x[15] 90 | x[21] = x[21] ^ x[28] 91 | x[ 8] = x[ 8] ^ x[24] 92 | x[15] = x[15] ^ x[29] 93 | x[ 5] = x[ 5] ^ x[14] 94 | x[ 9] = x[ 9] ^ x[ 3] 95 | x[10] = x[10] ^ x[25] 96 | x[14] = x[14] ^ x[22] 97 | x[29] = x[29] ^ x[12] 98 | x[25] = x[25] ^ x[ 8] 99 | x[ 8] = x[ 8] ^ x[ 1] 100 | x[24] = x[24] ^ x[ 2] 101 | x[12] = x[12] ^ x[14] 102 | x[14] = x[14] ^ x[31] y[ 6] 103 | x[ 2] = x[ 2] ^ x[26] 104 | x[10] = x[10] ^ x[11] y[ 9] 105 | x[28] = x[28] ^ x[23] 106 | x[26] = x[26] ^ x[ 0] 107 | x[ 0] = x[ 0] ^ x[17] 108 | x[15] = x[15] ^ x[ 5] y[13] 109 | x[22] = x[22] ^ x[29] 110 | x[29] = x[29] ^ x[ 7] y[ 4] 111 | x[17] = x[17] ^ x[11] 112 | x[ 2] = x[ 2] ^ x[17] y[10] 113 | x[ 5] = x[ 5] ^ x[13] 114 | x[17] = x[17] ^ x[ 8] y[25] 115 | x[13] = x[13] ^ x[30] 116 | x[ 8] = x[ 8] ^ x[19] 117 | x[21] = x[21] ^ x[31] y[29] 118 | x[31] = x[31] ^ x[ 4] y[23] 119 | x[30] = x[30] ^ x[20] 120 | x[20] = x[20] ^ x[ 6] 121 | x[ 4] = x[ 4] ^ x[23] 122 | x[23] = x[23] ^ x[12] 123 | x[11] = x[11] ^ x[19] 124 | x[23] = x[23] ^ x[29] y[21] 125 | x[22] = x[22] ^ x[20] y[30] 126 | x[12] = x[12] ^ x[ 4] y[12] 127 | x[ 8] = x[ 8] ^ x[27] 128 | x[18] = x[18] ^ x[25] 129 | x[25] = x[25] ^ x[ 3] y[ 0] 130 | x[30] = x[30] ^ x[28] y[22] 131 | x[28] = x[28] ^ x[ 6] y[ 7] 132 | x[13] = x[13] ^ x[ 7] y[ 5] 133 | x[18] = x[18] ^ x[24] y[26] 134 | x[16] = x[16] ^ x[ 9] y[11] 135 | x[ 9] = x[ 9] ^ x[26] y[ 1] 136 | x[26] = x[26] ^ x[11] y[18] 137 | x[19] = x[19] ^ x[ 0] 138 | x[ 1] = x[ 1] ^ x[ 0] y[19] 139 | x[11] = x[11] ^ x[24] y[ 3] 140 | x[ 3] = x[ 3] ^ x[ 1] 141 | x[ 3] = x[ 3] ^ x[16] 142 | x[ 0] = x[ 0] ^ x[ 8] y[ 8] 143 | x[ 8] = x[ 8] ^ x[25] y[17] 144 | x[ 7] = x[ 7] ^ x[14] 145 | x[24] = x[24] ^ x[ 3] y[16] 146 | x[20] = x[20] ^ x[14] 147 | x[ 3] = x[ 3] ^ x[27] y[24] 148 | x[19] = x[19] ^ x[ 9] y[27] 149 | x[ 6] = x[ 6] ^ x[ 4] 150 | x[ 7] = x[ 7] ^ x[ 5] y[15] 151 | x[ 4] = x[ 4] ^ x[13] y[31] 152 | x[ 5] = x[ 5] ^ x[31] y[28] 153 | x[ 6] = x[ 6] ^ x[30] y[14] 154 | x[20] = x[20] ^ x[ 5] y[20] 155 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Optimizing_Implementations_of_Linear_Layers 2 | 3 | This contains the source code of the paper entitled "Optimizing Implementations of Linear Layers" 4 | -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | #include "strategy.h" 2 | #include "matrix.h" 3 | #include "reduce.h" 4 | #include 5 | #include 6 | 7 | void print_seq(vector m, vector tmp_m, vector seq); 8 | int main() 9 | { 10 | int counter = 100000; 11 | struct timeval start; 12 | struct timeval end; 13 | gettimeofday(&start, NULL); 14 | 15 | int num = 0; 16 | cout< m = get_matrix(); 22 | 23 | 24 | vector seq = reduce(m); 25 | 26 | vector tmp_m = get_reduced_matrix(seq, m); 27 | 28 | cout << "minimal = " << counter << " current = " << seq.size() << endl << endl; 29 | 30 | if(seq.size() < counter) 31 | { 32 | counter = seq.size(); 33 | print_seq(m, tmp_m, seq); 34 | } 35 | } 36 | 37 | gettimeofday(&end, NULL); 38 | float time = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec; 39 | time /= 1000000; 40 | cout << "Time used = " << time << endl; 41 | 42 | return 0; 43 | } 44 | 45 | void print_seq(vector m, vector tmp_m, vector seq) 46 | { 47 | ofstream f; 48 | f.open(FILENAME); 49 | f << "Original Matrix:" << endl; 50 | for(int i = 0; i < m.size(); i++) 51 | f << m[i] << endl; 52 | f << endl << endl; 53 | f << "Reduced Matrix:" << endl; 54 | for(int i = 0; i < tmp_m.size(); i++) 55 | f << tmp_m[i] << endl; 56 | f << endl << endl; 57 | 58 | 59 | f << "Xor Count = " << seq.size() << endl; 60 | 61 | int tab[SIZE] = {0}; 62 | for(int i = 0; i < tmp_m.size(); i++) 63 | { 64 | for(int j = 0; j < tmp_m.size(); j++) 65 | { 66 | if(tmp_m[i].test(tmp_m.size() - 1 - j)) 67 | { 68 | tab[i] = j; 69 | break; 70 | } 71 | } 72 | } 73 | 74 | for(int i = seq.size() - 1; i >= 0; i--) 75 | {//f << seq[i].dst << " <- " << seq[i].src << endl; 76 | f<<"x["< 5 | #include 6 | #include 7 | 8 | using namespace std; 9 | 10 | #define MULTI_THREAD_FLAG 1 11 | #define THREAD_NUM 4 12 | 13 | //#define STRATEGY 2 // 1 for strategy3-1, 2 for strategy3-2 14 | #define CHOICE 33 15 | 16 | 17 | 18 | 19 | #if CHOICE == 1 20 | #define SIZE 16 21 | #define FILENAME "FSE_SKOP15_4x4_4.txt" 22 | 23 | #elif CHOICE == 2 24 | #define SIZE 16 25 | #define FILENAME "FSE_LimSim16_4x4_4.txt" 26 | 27 | #elif CHOICE == 3 28 | #define SIZE 16 29 | #define FILENAME "FSE_LiWang16_4x4_4.txt" 30 | 31 | #elif CHOICE == 4 32 | #define SIZE 16 33 | #define FILENAME "FSE_LiWang16_4x4_4_2.txt" 34 | 35 | #elif CHOICE == 5 36 | #define SIZE 16 37 | #define FILENAME "C_BeiKraLea16_4x4_4.txt" 38 | 39 | #elif CHOICE == 6 40 | #define SIZE 16 41 | #define FILENAME "ToSC_SarSye16_4x4_4.txt" 42 | 43 | #elif CHOICE == 7 44 | #define SIZE 16 45 | #define FILENAME "ePrint_JeaPeySim_4x4_4.txt" 46 | 47 | #elif CHOICE == 8 48 | #define SIZE 16 49 | #define FILENAME "FSE_SKOP15_i_4x4_4.txt" 50 | 51 | #elif CHOICE == 9 52 | #define SIZE 16 53 | #define FILENAME "FSE_LiWang16_i_4x4_4.txt" 54 | 55 | #elif CHOICE == 10 56 | #define SIZE 16 57 | #define FILENAME "ToSC_SarSye16_i_4x4_4.txt" 58 | 59 | #elif CHOICE == 11 60 | #define SIZE 16 61 | #define FILENAME "ePrint_JeaPeySim_i_4x4_4.txt" 62 | 63 | #elif CHOICE == 12 64 | #define SIZE 32 65 | #define FILENAME "FSE_SKOP15_4x4_8.txt" 66 | 67 | #elif CHOICE == 13 68 | #define SIZE 32 69 | #define FILENAME "FSE_LiuSim16_4x4_8.txt" 70 | 71 | #elif CHOICE == 14 72 | #define SIZE 32 73 | #define FILENAME "FSE_LiWang16_4x4_8.txt" 74 | 75 | #elif CHOICE == 15 76 | #define SIZE 32 77 | #define FILENAME "FSE_LiWang16_4x4_8_2.txt" 78 | 79 | #elif CHOICE == 16 80 | #define SIZE 32 81 | #define FILENAME "C_BeiKraLea16_4x4_8.txt" 82 | 83 | #elif CHOICE == 17 84 | #define SIZE 32 85 | #define FILENAME "ToSC_SarSye16_4x4_8.txt" 86 | 87 | #elif CHOICE == 18 88 | #define SIZE 32 89 | #define FILENAME "ePrint_JeaPeySim_4x4_8.txt" 90 | 91 | #elif CHOICE == 19 92 | #define SIZE 32 93 | #define FILENAME "FSE_SKOP15_i_4x4_8.txt" 94 | 95 | #elif CHOICE == 20 96 | #define SIZE 32 97 | #define FILENAME "FSE_LiWang16_i_4x4_8.txt" 98 | 99 | #elif CHOICE == 21 100 | #define SIZE 32 101 | #define FILENAME "FSE_LiWang16_i_4x4_8_2.txt" 102 | 103 | #elif CHOICE == 22 104 | #define SIZE 32 105 | #define FILENAME "ToSC_SarSye16_i_4x4_8.txt" 106 | 107 | #elif CHOICE == 23 108 | #define SIZE 32 109 | #define FILENAME "ePrint_JeaPeySim_i_4x4_8.txt" 110 | 111 | #elif CHOICE == 24 112 | #define SIZE 32 113 | #define FILENAME "FSE_SKOP15_8x8_4.txt" 114 | 115 | #elif CHOICE == 25 116 | #define SIZE 32 117 | #define FILENAME "ACISP_SarSye17_8x8_4.txt" 118 | 119 | #elif CHOICE == 26 120 | #define SIZE 32 121 | #define FILENAME "FSE_SKOP15_i_8x8_4.txt" 122 | 123 | #elif CHOICE == 27 124 | #define SIZE 64 125 | #define FILENAME "FSE_SKOP15_8x8_8.txt" 126 | 127 | #elif CHOICE == 28 128 | #define SIZE 64 129 | #define FILENAME "FSE_LiuSim16_8x8_8.txt" 130 | 131 | #elif CHOICE == 29 132 | #define SIZE 64 133 | #define FILENAME "C_BeiKraLea16_8x8_8.txt" 134 | 135 | #elif CHOICE == 30 136 | #define SIZE 64 137 | #define FILENAME "ACISP_SarSye17_8x8_8.txt" 138 | 139 | #elif CHOICE == 31 140 | #define SIZE 64 141 | #define FILENAME "FSE_SKOP15_i_8x8_8.txt" 142 | 143 | #elif CHOICE == 32 144 | #define SIZE 64 145 | #define FILENAME "ePrint_JeaPeySim_i_8x8_8.txt" 146 | 147 | #elif CHOICE == 33 148 | #define SIZE 32 149 | #define FILENAME "AES.txt" 150 | 151 | #elif CHOICE == 34 152 | #define SIZE 32 153 | #define FILENAME "Anubis.txt" 154 | 155 | #elif CHOICE == 35 156 | #define SIZE 32 157 | #define FILENAME "Clefia_M0.txt" 158 | 159 | #elif CHOICE == 36 160 | #define SIZE 32 161 | #define FILENAME "Clefia_M1.txt" 162 | 163 | #elif CHOICE == 37 164 | #define SIZE 32 165 | #define FILENAME "Fox_Mu4.txt" 166 | 167 | #elif CHOICE == 38 168 | #define SIZE 32 169 | #define FILENAME "Twofish.txt" 170 | 171 | #elif CHOICE == 39 172 | #define SIZE 64 173 | #define FILENAME "Fox_Mu8.txt" 174 | 175 | #elif CHOICE == 40 176 | #define SIZE 64 177 | #define FILENAME "Grostl.txt" 178 | 179 | #elif CHOICE == 41 180 | #define SIZE 64 181 | #define FILENAME "Khazad.txt" 182 | 183 | #elif CHOICE == 42 184 | #define SIZE 64 185 | #define FILENAME "Whirlpool.txt" 186 | 187 | #elif CHOICE == 43 188 | #define SIZE 16 189 | #define FILENAME "Joltik.txt" 190 | 191 | #elif CHOICE == 44 192 | #define SIZE 16 193 | #define FILENAME "SmallScale_AES.txt" 194 | 195 | #elif CHOICE == 45 196 | #define SIZE 32 197 | #define FILENAME "Whirlwind_M0.txt" 198 | 199 | #elif CHOICE == 46 200 | #define SIZE 32 201 | #define FILENAME "Whirlwind_M1.txt" 202 | 203 | #elif CHOICE == 47 204 | #define SIZE 32 205 | #define FILENAME "QARMA128.txt" 206 | 207 | #elif CHOICE == 48 208 | #define SIZE 128 209 | #define FILENAME "ARIA.txt" 210 | 211 | #elif CHOICE == 49 212 | #define SIZE 16 213 | #define FILENAME "MIDORI.txt" 214 | 215 | #elif CHOICE == 50 216 | #define SIZE 16 217 | #define FILENAME "PRINCE_M_0.txt" 218 | 219 | #elif CHOICE == 51 220 | #define SIZE 16 221 | #define FILENAME "PRINCE_M_1.txt" 222 | 223 | #elif CHOICE == 52 224 | #define SIZE 16 225 | #define FILENAME "PRIDE_L_0.txt" 226 | 227 | #elif CHOICE == 53 228 | #define SIZE 16 229 | #define FILENAME "PRIDE_L_1.txt" 230 | 231 | #elif CHOICE == 54 232 | #define SIZE 16 233 | #define FILENAME "PRIDE_L_2.txt" 234 | 235 | #elif CHOICE == 55 236 | #define SIZE 16 237 | #define FILENAME "PRIDE_L_3.txt" 238 | 239 | #elif CHOICE == 56 240 | #define SIZE 16 241 | #define FILENAME "QARMA64.txt" 242 | 243 | #elif CHOICE == 57 244 | #define SIZE 16 245 | #define FILENAME "SKINNY.txt" 246 | 247 | #else 248 | #define SIZE 16 249 | #endif 250 | 251 | typedef bitset ROW; 252 | 253 | typedef struct{ 254 | int src; 255 | int dst; 256 | bool flag; 257 | }xpair; 258 | 259 | typedef struct 260 | { 261 | vector seq; 262 | int gap; 263 | int start; 264 | int len; 265 | }thread_data; 266 | 267 | vector get_matrix(); 268 | 269 | 270 | #endif 271 | -------------------------------------------------------------------------------- /reduce.cpp: -------------------------------------------------------------------------------- 1 | #include "reduce.h" 2 | #include 3 | #include 4 | 5 | // #define THREAD_NUM 2 6 | 7 | 8 | vector get_reduced_matrix(vector seq, vector m) 9 | { 10 | vector tmp_m(m); 11 | for(int i = 0; i < seq.size(); i++) 12 | tmp_m[seq[i].dst] ^= tmp_m[seq[i].src]; 13 | return tmp_m; 14 | } 15 | 16 | 17 | vector get_identity() 18 | { 19 | vector m; 20 | ROW tmp(0); 21 | for(int i = 0; i < SIZE; i++) 22 | { 23 | m.push_back(tmp); 24 | m[i][SIZE - 1 - i] = 1; 25 | } 26 | return m; 27 | } 28 | 29 | bool exchange(xpair a, xpair b) 30 | { 31 | if(a.dst == b.dst) 32 | return true; 33 | if(a.src == b.src) 34 | return true; 35 | if((a.src != b.dst) && (a.dst != b.src)) 36 | return true; 37 | return false; 38 | } 39 | 40 | int** get_table(vector seq, int ** table, int osize, int nsize) 41 | { 42 | if(table != NULL) 43 | { 44 | for(int i = 0; i < osize; i++) 45 | delete[] table[i]; 46 | delete[] table; 47 | } 48 | table = new int*[nsize]; 49 | for(int i = 0; i < nsize; i++) 50 | table[i] = new int[nsize]; 51 | 52 | int s = seq.size(); 53 | for(int i = 0; i < s; i++) 54 | { 55 | table[i][i] = 1; 56 | for(int j = i + 1; j < s; j++) 57 | { 58 | if(exchange(seq[i], seq[j])) 59 | table[i][j] = 1; 60 | else 61 | { 62 | for(int k = j; k < s; k++) 63 | table[i][k] = 0; 64 | break; 65 | } 66 | } 67 | for(int j = i - 1; j >= 0; j--) 68 | { 69 | if(exchange(seq[i], seq[j])) 70 | table[i][j] = 1; 71 | else 72 | { 73 | for(int k = j; k >= 0; k--) 74 | table[i][k] = 0; 75 | break; 76 | } 77 | } 78 | } 79 | return table; 80 | } 81 | 82 | void delete_table(int** table, int size) 83 | { 84 | if(table != NULL) 85 | { 86 | for(int i = 0; i < size; i++) 87 | delete[] table[i]; 88 | delete[] table; 89 | } 90 | } 91 | 92 | bool exchange_set(vector seq, int start, int end, xpair p) 93 | { 94 | if(start <= end) 95 | { 96 | for(int i = start; i <= end; i++) 97 | { 98 | if(!exchange(p, seq[i])) 99 | return false; 100 | } 101 | } 102 | else 103 | { 104 | for(int i = start; i >= end; i--) 105 | { 106 | if(!exchange(p, seq[i])) 107 | return false; 108 | } 109 | } 110 | return true; 111 | } 112 | 113 | 114 | bool reduce0(vector &seq, int** table) 115 | { 116 | int s = seq.size(); 117 | int index; 118 | 119 | for(int i = 0; i < s; i++) 120 | { 121 | for(int j = i + 1; j < s; j++) 122 | { 123 | if((table[i][j - 1] == 0) && (table[j][i + 1] == 0)) 124 | break; 125 | if(seq[i].src != seq[j].src) 126 | continue; 127 | for(int k = j + 1; k < s; k++) 128 | { 129 | if((table[k][j + 1] == 0) && (table[j][k-1] == 0)) 130 | break; 131 | if(seq[k].dst != seq[i].dst) 132 | { 133 | if (seq[k].dst != seq[j].dst) 134 | continue; 135 | else 136 | { 137 | if(seq[k].src != seq[i].dst) 138 | continue; 139 | } 140 | } 141 | else 142 | { 143 | if(seq[k].src != seq[j].dst) 144 | continue; 145 | } 146 | if((table[i][j - 1]) && table[k][j + 1]) 147 | index = j - 1;//fixpoint = j; 148 | else if(table[j][i + 1] && table[k][j + 1] && exchange_set(seq, j - 1, i + 1, seq[k])) 149 | index = i; //fixpoint = i; 150 | else if(table[i][j - 1] && table[j][k - 1] && exchange_set(seq, j + 1, k - 1, seq[i])) 151 | index = k - 2; //fixpoint = k; 152 | else 153 | continue; 154 | xpair tmp1, tmp2; 155 | tmp1 = seq[k]; 156 | tmp2.src = seq[i].src; 157 | tmp2.dst = seq[k].src; 158 | seq.erase(seq.begin() + k); 159 | seq.erase(seq.begin() + j); 160 | seq.erase(seq.begin() + i); 161 | seq.insert(seq.begin() + index, tmp1); 162 | seq.insert(seq.begin() + index + 1, tmp2); 163 | return true; 164 | } 165 | } 166 | } 167 | return false; 168 | } 169 | 170 | bool reduce1(vector &seq, int** table) 171 | { 172 | int s = seq.size(); 173 | int index; 174 | 175 | for(int i = 0; i < s; i++) 176 | { 177 | for(int j = i + 1; j < s; j++) 178 | { 179 | if((table[i][j - 1] == 0) && (table[j][i + 1] == 0)) 180 | break; 181 | if((seq[i].src != seq[j].dst) && (seq[i].dst != seq[j].dst)) 182 | continue; 183 | for(int k = j + 1; k < s; k++) 184 | { 185 | if((table[k][j + 1] == 0) && (table[j][k-1] == 0)) 186 | break; 187 | if(seq[k].src != seq[j].src) 188 | continue; 189 | else 190 | { 191 | if(seq[j].dst == seq[i].dst) 192 | { 193 | if(seq[k].dst != seq[i].src) 194 | continue; 195 | } 196 | if(seq[j].dst == seq[i].src) 197 | { 198 | if(seq[k].dst != seq[i].dst) 199 | continue; 200 | } 201 | } 202 | if((table[i][j - 1]) && table[k][j + 1]) 203 | index = j - 1;//fixpoint = j; 204 | else if(table[j][i + 1] && table[k][j + 1] && exchange_set(seq, j - 1, i + 1, seq[k])) 205 | index = i; //fixpoint = i; 206 | else if(table[i][j - 1] && table[j][k - 1] && exchange_set(seq, j + 1, k - 1, seq[i])) 207 | index = k - 2; //fixpoint = k; 208 | else 209 | continue; 210 | xpair tmp1, tmp2; 211 | tmp1.src = seq[j].src; 212 | tmp1.dst = seq[i].src; 213 | tmp2 = seq[i]; 214 | seq.erase(seq.begin() + k); 215 | seq.erase(seq.begin() + j); 216 | seq.erase(seq.begin() + i); 217 | seq.insert(seq.begin() + index, tmp1); 218 | seq.insert(seq.begin() + index + 1, tmp2); 219 | return true; 220 | } 221 | } 222 | } 223 | return false; 224 | } 225 | 226 | bool reduce2(vector &seq, int** table) 227 | { 228 | int s = seq.size(); 229 | int index; 230 | 231 | for(int i = 0; i < s; i++) 232 | { 233 | for(int j = i + 1; j < s; j++) 234 | { 235 | if((table[i][j - 1] == 0) && (table[j][i + 1] == 0)) 236 | break; 237 | if((seq[j].src != seq[i].dst) && (seq[j].dst != seq[i].dst)) 238 | continue; 239 | for(int k = j + 1; k < s; k++) 240 | { 241 | if((table[k][j + 1] == 0) && (table[j][k-1] == 0)) 242 | break; 243 | if(seq[k].src != seq[i].src) 244 | continue; 245 | else 246 | { 247 | if(seq[j].src == seq[i].dst) 248 | { 249 | if(seq[k].dst != seq[j].dst) 250 | continue; 251 | } 252 | if(seq[j].dst == seq[i].dst) 253 | { 254 | if(seq[k].dst != seq[j].src) 255 | continue; 256 | } 257 | } 258 | if((table[i][j - 1]) && table[k][j + 1]) 259 | index = j - 1;//fixpoint = j; 260 | else if(table[j][i + 1] && table[k][j + 1] && exchange_set(seq, j - 1, i + 1, seq[k])) 261 | index = i; //fixpoint = i; 262 | else if(table[i][j - 1] && table[j][k - 1] && exchange_set(seq, j + 1, k - 1, seq[i])) 263 | index = k - 2; //fixpoint = k; 264 | else 265 | continue; 266 | xpair tmp1, tmp2; 267 | tmp1.dst = seq[k].dst; 268 | tmp2.dst = seq[i].dst; 269 | if(seq[j].src == seq[i].dst) 270 | { 271 | tmp1.src = seq[j].src; 272 | tmp2.src = seq[i].src; 273 | } 274 | else 275 | { 276 | tmp1.src = seq[i].src; 277 | tmp2.src = seq[j].src; 278 | } 279 | seq.erase(seq.begin() + k); 280 | seq.erase(seq.begin() + j); 281 | seq.erase(seq.begin() + i); 282 | seq.insert(seq.begin() + index, tmp1); 283 | seq.insert(seq.begin() + index + 1, tmp2); 284 | return true; 285 | } 286 | } 287 | } 288 | return false; 289 | } 290 | 291 | bool reduce3(vector &seq, int** table) 292 | { 293 | int s = seq.size(); 294 | int index; 295 | 296 | for(int i = 0; i < s; i++) 297 | { 298 | for(int j = i + 1; j < s; j++) 299 | { 300 | if((table[i][j - 1] == 0) && (table[j][i + 1] == 0)) 301 | break; 302 | if(seq[j].dst != seq[i].src) 303 | continue; 304 | if(seq[j].src != seq[i].dst) 305 | continue; 306 | if(table[i][j - 1]) 307 | index = j - 1; 308 | else 309 | index = i; 310 | xpair tmp = seq[j]; 311 | seq.erase(seq.begin() + j); 312 | seq.erase(seq.begin() + i); 313 | seq.insert(seq.begin() + index, tmp); 314 | int mask = seq[index].dst ^ seq[index].src; 315 | for(int k = index + 1; k < s; k++) 316 | { 317 | if((seq[k].dst == seq[index].dst) || (seq[k].dst == seq[index].src)) 318 | seq[k].dst ^= mask; 319 | if((seq[k].src == seq[index].dst) || (seq[k].src == seq[index].src)) 320 | seq[k].src ^= mask; 321 | } 322 | return true; 323 | } 324 | } 325 | return false; 326 | } 327 | 328 | 329 | int reduce_step(vector &seq) 330 | { 331 | int** tab = NULL; 332 | tab = get_table(seq, tab, 0, seq.size()); 333 | int i = 0; 334 | int NUM = 4; 335 | int counter = 0; 336 | while(counter != NUM) 337 | { 338 | switch(i) 339 | { 340 | case 0: 341 | { 342 | if(reduce0(seq, tab)) 343 | { 344 | // cout << "activate case 0"< &seq, int tab[SIZE], int start) 411 | { 412 | 413 | for(int i = start; i < seq.size(); i++) 414 | { 415 | seq[i].src = tab[seq[i].src]; 416 | seq[i].dst = tab[seq[i].dst]; 417 | } 418 | } 419 | 420 | void get_equivalent_seq(vector &seq, int gap, int start) 421 | { 422 | 423 | vector m; 424 | bitset tmp; 425 | for (int i = 0; i < SIZE; i++) 426 | { 427 | tmp = 0; 428 | tmp[SIZE - 1 - i]=1; 429 | m.push_back(tmp); 430 | } 431 | for(int i = start + gap - 1; i >= start; i--) 432 | { 433 | m[seq[i].dst] ^= m[seq[i].src]; 434 | } 435 | 436 | vector seq_here(strgy3(m)); 437 | seq.erase(seq.begin() + start, seq.begin() + start + gap); 438 | seq.insert(seq.begin() + start, seq_here.begin(), seq_here.end()); 439 | int tab[SIZE] = {0}; 440 | build_table(m, tab); 441 | update_seq(seq, tab, start + seq_here.size()); 442 | } 443 | 444 | void* reduce_thread(void *d) 445 | { 446 | thread_data* data = (thread_data*)d; 447 | get_equivalent_seq(data->seq, data->gap, data->start); 448 | data->len = reduce_step(data->seq); 449 | pthread_exit(NULL); 450 | } 451 | 452 | bool check_consistence(vector seq) 453 | { 454 | vector m = get_matrix(); 455 | for(int i = 0; i < seq.size(); i++) 456 | m[seq[i].dst] ^= m[seq[i].src]; 457 | if(get_ones(m) == SIZE) 458 | return true; 459 | else 460 | return false; 461 | 462 | } 463 | 464 | #if MULTI_THREAD_FLAG 465 | vector reduce(vector m) 466 | { 467 | 468 | vector tmp_m(m); 469 | 470 | vector seq = strgy3(m); 471 | int l = reduce_step(seq); 472 | 473 | 474 | int gap = l; 475 | int start = 0; 476 | 477 | thread_data data[THREAD_NUM]; 478 | bool flag = true; 479 | while(flag) 480 | { 481 | for(int j = 0; j < THREAD_NUM; j++) 482 | { 483 | data[j].seq = seq; 484 | data[j].gap = gap; 485 | data[j].start = start; 486 | if((gap != 3) || (start != l - gap)) 487 | { 488 | if(start == l - gap) 489 | { 490 | gap--; 491 | start = 0; 492 | } 493 | else 494 | { 495 | start++; 496 | } 497 | } 498 | else 499 | { 500 | flag = false; 501 | } 502 | } 503 | int rc; 504 | pthread_t threads[THREAD_NUM]; 505 | pthread_attr_t attr; 506 | void* status; 507 | pthread_attr_init(&attr); 508 | pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); 509 | for(int j = 0; j < THREAD_NUM; j++) 510 | { 511 | 512 | rc = pthread_create(&threads[j], NULL, reduce_thread, (void *)(data + j)); 513 | if(rc) 514 | { 515 | cout << "Error: unable to create thread!" << endl; 516 | exit(-1); 517 | } 518 | } 519 | // pthread_attr_destroy(&attr); 520 | for(int j = 0; j < THREAD_NUM; j++) 521 | { 522 | rc = pthread_join(threads[j], &status); 523 | if(rc) 524 | { 525 | cout << "Error: unable to join, " << rc << endl; 526 | exit(-1); 527 | } 528 | } 529 | for(int j = 0; j < THREAD_NUM; j++) 530 | { 531 | if(data[j].len < l) 532 | { 533 | seq = data[j].seq; 534 | l = data[j].len; 535 | gap = l; 536 | start = 0; 537 | } 538 | } 539 | // cout << "gap = " << gap << endl; 540 | } 541 | return seq; 542 | } 543 | #else 544 | vector reduce(vector m) 545 | { 546 | 547 | vector tmp_m(m); 548 | 549 | vector seq = strgy3(m); 550 | int l = reduce_step(seq); 551 | 552 | int t; 553 | int gap = l + 1; 554 | 555 | 556 | while(gap >= 4) 557 | { 558 | gap--; 559 | for(int start = 0; start <= l - gap; start++) 560 | { 561 | vector t_seq(seq); 562 | get_equivalent_seq(t_seq, gap, start); 563 | 564 | t = reduce_step(t_seq); 565 | 566 | if(t < l) 567 | { 568 | l = t; 569 | seq = t_seq; 570 | gap = l + 1; 571 | break; 572 | } 573 | } 574 | 575 | } 576 | return seq; 577 | 578 | } 579 | #endif -------------------------------------------------------------------------------- /reduce.h: -------------------------------------------------------------------------------- 1 | #ifndef REDUCE_H 2 | #define REDUCE_H 3 | 4 | #include "strategy.h" 5 | #include "matrix.h" 6 | 7 | vector reduce(vector m); 8 | 9 | bool reduce0(vector &seq, int** table); 10 | int reduce_step(vector &seq); 11 | int** get_table(vector seq, int ** table, int osize, int nsize); 12 | 13 | int get_ones(vector m); 14 | 15 | 16 | vector get_reduced_matrix(vector seq, vector m); 17 | 18 | 19 | 20 | 21 | #endif -------------------------------------------------------------------------------- /strategy.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | #include 5 | #include "strategy.h" 6 | 7 | mt19937 rand_generator(time(NULL)); 8 | 9 | vector strgy1(vector &m) 10 | { 11 | /* compatible with non-square matrix.*/ 12 | vector seq; 13 | int row_size = m.size(); 14 | int col_size = m[0].size(); 15 | 16 | int *mark = new int[row_size]; 17 | memset(mark, 0, row_size * sizeof(int)); 18 | xpair p; 19 | for (unsigned col = 1; col <= col_size; ++col) 20 | { 21 | unsigned r = 0; 22 | while (((r < row_size) && (!m[r][col_size - col])) || (mark[r] == 1)) 23 | { 24 | ++r; 25 | } 26 | if (r >= row_size) 27 | { 28 | continue; 29 | } 30 | else 31 | { 32 | mark[r] = 1; 33 | } 34 | 35 | for (unsigned i = 0; i < row_size; ++i) 36 | { 37 | if (m[i][col_size - col] && (i != r)) 38 | { 39 | m[i] ^= m[r]; 40 | p.dst = i; 41 | p.src = r; 42 | p.flag = false; 43 | seq.push_back(p); 44 | } 45 | } 46 | } 47 | delete[] mark; 48 | return seq; 49 | } 50 | 51 | vector strgy2(vector &m) 52 | { 53 | vector trans_m; 54 | get_trans_matrix(trans_m, m); 55 | vector seq = strgy1(trans_m); 56 | for(int i = 0; i < seq.size(); i++) 57 | { 58 | seq[i].flag = true; 59 | } 60 | get_trans_matrix(m, trans_m); 61 | 62 | int tab[SIZE] = {0}; 63 | build_table(m, tab);//get TABLE 64 | vector final_seq = update_seq_str(seq, tab); 65 | return final_seq; 66 | } 67 | 68 | vector strgy3(vector &m) 69 | { 70 | vector tmp_seq; 71 | while(get_ones(m) != m.size()) 72 | { 73 | vector base_oper; 74 | base_oper.clear(); 75 | int value = 0; 76 | 77 | int Reduced_Row = select_oper(m, base_oper, value, 0); 78 | 79 | vector trans_m; 80 | get_trans_matrix(trans_m,m); 81 | 82 | int Reduced_Col = select_oper(trans_m, base_oper, Reduced_Row, 1); 83 | if (base_oper.size() >= 1) 84 | { 85 | int rand_num = rand_generator() % base_oper.size(); 86 | 87 | if (!base_oper[rand_num].flag) 88 | { 89 | m[base_oper[rand_num].dst] ^= m[base_oper[rand_num].src]; 90 | tmp_seq.push_back(base_oper[rand_num]); 91 | } 92 | 93 | else if (base_oper[rand_num].flag) 94 | { 95 | vector trans_tmp_m; 96 | get_trans_matrix(trans_tmp_m, m); 97 | trans_tmp_m[base_oper[rand_num].dst] ^= trans_tmp_m[base_oper[rand_num].src]; 98 | get_trans_matrix(m, trans_tmp_m); 99 | tmp_seq.push_back(base_oper[rand_num]); 100 | } 101 | } 102 | else 103 | { 104 | break; 105 | } 106 | } 107 | 108 | if (get_ones(m) != m.size()) 109 | { 110 | // int rnd = rand()%2; 111 | int rnd = rand_generator() % 2; 112 | if(rnd == 0) 113 | { 114 | vector seq_2(strgy1(m)); 115 | tmp_seq.insert(tmp_seq.end(), seq_2.begin(), seq_2.end()); 116 | } 117 | else if(rnd == 1) 118 | { 119 | vector seq_2(strgy2(m)); 120 | tmp_seq.insert(tmp_seq.end(), seq_2.begin(), seq_2.end()); 121 | } 122 | } 123 | 124 | int tab[SIZE] = {0}; 125 | build_table(m, tab); 126 | vector final_seq = update_seq_str(tmp_seq, tab); 127 | return final_seq; 128 | } 129 | 130 | 131 | int select_oper(vector m, vector &max_seq, int no_reduced, int opr_type) 132 | { 133 | int no_before = 0; 134 | int no_after = 0; 135 | xpair new_ele; 136 | 137 | for (int i = 0; i < m.size(); i++) 138 | { 139 | vector tmp_m(m); 140 | for (int j = 0; j < m.size(); j++) 141 | { 142 | if (i != j) 143 | { 144 | no_before = tmp_m[j].count(); 145 | tmp_m[j] ^= tmp_m[i]; 146 | no_after = tmp_m[j].count(); 147 | if((no_before - no_after) > 0) 148 | { 149 | if (no_reduced < (no_before - no_after)) 150 | { 151 | no_reduced = no_before - no_after; 152 | max_seq.clear(); 153 | new_ele.src = i; 154 | new_ele.dst = j; 155 | if(opr_type == 0) 156 | { 157 | new_ele.flag = false; 158 | } 159 | else if(opr_type == 1) 160 | { 161 | new_ele.flag = true; 162 | } 163 | max_seq.push_back(new_ele); 164 | } 165 | 166 | else if (no_reduced == (no_before - no_after)) 167 | { 168 | new_ele.src = i; 169 | new_ele.dst = j; 170 | if(opr_type == 0) 171 | { 172 | new_ele.flag = false; 173 | } 174 | else if(opr_type == 1) 175 | { 176 | new_ele.flag = true; 177 | } 178 | max_seq.push_back(new_ele); 179 | } 180 | } 181 | } 182 | } 183 | } 184 | return no_reduced; 185 | } 186 | 187 | 188 | int get_ones(vector m) 189 | { 190 | int s = 0; 191 | for(int i = 0; i < m.size(); i++) 192 | s += m[i].count(); 193 | return s; 194 | } 195 | 196 | void get_trans_matrix(vector &trans_m, vector m) 197 | { 198 | trans_m.clear(); 199 | for(int i = 0; i < m.size(); i++) 200 | { 201 | bitset tmp(0); 202 | for (int j = 0; j < m.size(); j++) 203 | { 204 | tmp[m[0].size() - 1 - j] = m[j][m[0].size() - i - 1]; 205 | } 206 | trans_m.push_back(tmp); 207 | } 208 | } 209 | 210 | void build_table(vector m, int tab[SIZE]) 211 | { 212 | int ind = 0; 213 | for (int i = 0; i < m.size(); i++) 214 | { 215 | for (int j = 0; j < m.size(); j++) 216 | { 217 | if (m[i].test(j)) 218 | { 219 | ind = m.size() - 1 - j; 220 | break; 221 | } 222 | } 223 | tab[ind] = i; 224 | } 225 | } 226 | 227 | vector update_seq_str(vector seq, int tab[SIZE]) 228 | { 229 | vector tmp_seq; 230 | for(int i = 0; i < seq.size(); i++) 231 | { 232 | if(!seq[i].flag) 233 | { 234 | tmp_seq.push_back(seq[i]); 235 | } 236 | } 237 | 238 | for(int i = seq.size() - 1; i >= 0; i--) 239 | { 240 | 241 | if(seq[i].flag) 242 | { 243 | xpair new_ele; 244 | new_ele.src = tab[seq[i].dst]; 245 | new_ele.dst = tab[seq[i].src]; 246 | new_ele.flag = false; 247 | tmp_seq.push_back(new_ele); 248 | } 249 | } 250 | return tmp_seq; 251 | } -------------------------------------------------------------------------------- /strategy.h: -------------------------------------------------------------------------------- 1 | #ifndef STRATEGY_H 2 | #define STRATEGY_H 3 | #include "matrix.h" 4 | 5 | vector strgy1(vector &m); 6 | vector strgy2(vector &m); 7 | vector strgy3(vector &m); 8 | int get_ones(vector m); 9 | void get_trans_matrix(vector &trans_m, vector m); 10 | 11 | 12 | // int select_oper(vector m, int &idx_src, int &idx_dst); 13 | int select_oper(vector m, vector &max_seq, int no_reduced, int opr_type); 14 | 15 | 16 | void build_table(vector m, int tab[SIZE]); 17 | vector update_seq_str(vector seq, int tab[SIZE]); 18 | 19 | #endif 20 | --------------------------------------------------------------------------------