code: function refreshData(data) {
                      var k = 0;
                      var tmp = 0;
                      for (;
                        (k | 0) < 227; k = (k + 1) | 0) {
                        tmp = (data[k] & 0x80000000) | (data[(k + 1) | 0] & 0x7fffffff);
                        data[k] = data[(k + 397) | 0] ^ (tmp >>> 1) ^ ((tmp & 0x1) ? 0x9908b0df : 0);
                      }
  
                      for (;
                        (k | 0) < 623; k = (k + 1) | 0) {
                        tmp = (data[k] & 0x80000000) | (data[(k + 1) | 0] & 0x7fffffff);
                        data[k] = data[(k - 227) | 0] ^ (tmp >>> 1) ^ ((tmp & 0x1) ? 0x9908b0df : 0);
                      }
  
                      tmp = (data[623] & 0x80000000) | (data[0] & 0x7fffffff);
                      data[623] = data[396] ^ (tmp >>> 1) ^ ((tmp & 0x1) ? 0x9908b0df : 0);
                    }
docs: http://en.wikipedia.org/wiki/Mersenne_twister