(perm [base]byte)
| 189 | } |
| 190 | |
| 191 | func CodeShuffleUnroll(perm [base]byte) int { |
| 192 | var state = [base]byte{ |
| 193 | 0, 1, 2, 3, |
| 194 | 4, 5, 6, 7, |
| 195 | 8, 9, 10, 11, |
| 196 | } |
| 197 | var inverse = [base]byte{ |
| 198 | 0, 1, 2, 3, |
| 199 | 4, 5, 6, 7, |
| 200 | 8, 9, 10, 11, |
| 201 | } |
| 202 | |
| 203 | total := 0 |
| 204 | |
| 205 | j0 := inverse[perm[0]] |
| 206 | inverse[state[0]], state[j0] = j0, state[0] |
| 207 | total += int(j0-0) * 39916800 |
| 208 | |
| 209 | j1 := inverse[perm[1]] |
| 210 | inverse[state[1]], state[j1] = j1, state[1] |
| 211 | total += int(j1-1) * 3628800 |
| 212 | |
| 213 | j2 := inverse[perm[2]] |
| 214 | inverse[state[2]], state[j2] = j2, state[2] |
| 215 | total += int(j2-2) * 362880 |
| 216 | |
| 217 | j3 := inverse[perm[3]] |
| 218 | inverse[state[3]], state[j3] = j3, state[3] |
| 219 | total += int(j3-3) * 40320 |
| 220 | |
| 221 | j4 := inverse[perm[4]] |
| 222 | inverse[state[4]], state[j4] = j4, state[4] |
| 223 | total += int(j4-4) * 5040 |
| 224 | |
| 225 | j5 := inverse[perm[5]] |
| 226 | inverse[state[5]], state[j5] = j5, state[5] |
| 227 | total += int(j5-5) * 720 |
| 228 | |
| 229 | j6 := inverse[perm[6]] |
| 230 | inverse[state[6]], state[j6] = j6, state[6] |
| 231 | total += int(j6-6) * 120 |
| 232 | |
| 233 | j7 := inverse[perm[7]] |
| 234 | inverse[state[7]], state[j7] = j7, state[7] |
| 235 | total += int(j7-7) * 24 |
| 236 | |
| 237 | j8 := inverse[perm[8]] |
| 238 | inverse[state[8]], state[j8] = j8, state[8] |
| 239 | total += int(j8-8) * 6 |
| 240 | |
| 241 | j9 := inverse[perm[9]] |
| 242 | inverse[state[9]], state[j9] = j9, state[9] |
| 243 | total += int(j9-9) * 2 |
| 244 | |
| 245 | j10 := inverse[perm[10]] |
| 246 | inverse[state[10]], state[j10] = j10, state[10] |
| 247 | total += int(j10-10) * 1 |
| 248 |
no outgoing calls