code: function theta (s) {
    var clo = [0, 0, 0, 0, 0]
    var chi = [0, 0, 0, 0, 0]
  
    for (var x = 0; x < 5; ++x) {
      for (var y = 0; y < 5; ++y) {
        clo[x] ^= s[ilo(x, y)]
        chi[x] ^= s[ihi(x, y)]
      }
    }
  
    for (x = 0; x < 5; ++x) {
      var next = (x + 1) % 5
      var prev = (x + 4) % 5
      var dlo = rol64lo(clo[next], chi[next], 1) ^ clo[prev]
      var dhi = rol64hi(clo[next], chi[next], 1) ^ chi[prev]
  
      for (y = 0; y < 5; ++y) {
        s[ilo(x, y)] ^= dlo
        s[ihi(x, y)] ^= dhi
      }
    }
  }
docs: steps