docs: function blockEncrypt(input, inOffset, sessionKey) {
  
          if (input &&
            sessionKey &&
            utils.isAnArray(sessionKey) &&
            utils.isAnArray(input)) {
  
            input = new Uint8Array(input);
            var sBox = sessionKey[0]
              , sKey = sessionKey[1]
  
              /*eslint-disable no-plusplus*/
              , x0 = input[inOffset++] & 0xFF |
                     (input[inOffset++] & 0xFF) << 8 |
                     (input[inOffset++] & 0xFF) << 16 |
                     (input[inOffset++] & 0xFF) << 24
  
              , x1 = input[inOffset++] & 0xFF |
                     (input[inOffset++] & 0xFF) << 8 |
                     (input[inOffset++] & 0xFF) << 16 |
                     (input[inOffset++] & 0xFF) << 24
  
              , x2 = input[inOffset++] & 0xFF |
                     (input[inOffset++] & 0xFF) << 8 |
                     (input[inOffset++] & 0xFF) << 16 |
                     (input[inOffset++] & 0xFF) << 24
  
              , x3 = input[inOffset++] & 0xFF |
                     (input[inOffset++] & 0xFF) << 8 |
                     (input[inOffset++] & 0xFF) << 16 |
                     (input[inOffset++] & 0xFF) << 24
              /*eslint-enable no-plusplus*/
  
              , t0
              , t1
              , k = ROUND_SUBKEYS
              , R = 0;
  
            x0 ^= sKey[INPUT_WHITEN];
            x1 ^= sKey[INPUT_WHITEN + 1];
            x2 ^= sKey[INPUT_WHITEN + 2];
            x3 ^= sKey[INPUT_WHITEN + 3];
            for (R = 0; R < ROUNDS; R += 2) {
  
              t0 = fe32(sBox, x0, 0);
              t1 = fe32(sBox, x1, 3);
              /*eslint-disable no-plusplus*/
              x2 ^= t0 + t1 + sKey[k++];
              /*eslint-enable no-plusplus*/
              x2 = x2 >>> 1 | x2 << 31;
              x3 = x3 << 1 | x3 >>> 31;
              /*eslint-disable no-plusplus*/
              x3 ^= t0 + 2 * t1 + sKey[k++];
              /*eslint-enable no-plusplus*/
  
              t0 = fe32(sBox, x2, 0);
              t1 = fe32(sBox, x3, 3);
              /*eslint-disable no-plusplus*/
              x0 ^= t0 + t1 + sKey[k++];
              /*eslint-enable no-plusplus*/
              x0 = x0 >>> 1 | x0 << 31;
              x1 = x1 << 1 | x1 >>> 31;
              /*eslint-disable no-plusplus*/
              x1 ^= t0 + 2 * t1 + sKey[k++];
              /*eslint-enable no-plusplus*/
            }
  
            x2 ^= sKey[OUTPUT_WHITEN];
            x3 ^= sKey[OUTPUT_WHITEN + 1];
            x0 ^= sKey[OUTPUT_WHITEN + 2];
            x1 ^= sKey[OUTPUT_WHITEN + 3];
  
            return new Uint8Array([x2, x2 >>> 8, x2 >>> 16, x2 >>> 24,
               x3, x3 >>> 8, x3 >>> 16, x3 >>> 24,
               x0, x0 >>> 8, x0 >>> 16, x0 >>> 24,
               x1, x1 >>> 8, x1 >>> 16, x1 >>> 24]);
          }
  
          throw 'input block is not an array or sessionKey is incorrect';
        }