theta method

void theta(
  1. Register64List A
)
inherited

Implementation

void theta(Register64List A) {
  final C = Register64List(5);
  final r0 = Register64();
  final r1 = Register64();

  for (var x = 0; x < 5; x++) {
    C[x].set(0);

    for (var y = 0; y < 5; y++) {
      C[x].xor(A[x + 5 * y]);
    }
  }

  for (var x = 0; x < 5; x++) {
    r0.set(C[(x + 1) % 5]);
    r0.shiftl(1);

    r1.set(C[(x + 1) % 5]);
    r1.shiftr(63);

    r0.xor(r1);
    r0.xor(C[(x + 4) % 5]);

    for (var y = 0; y < 5; y++) {
      A[x + 5 * y].xor(r0);
    }
  }
}