function __decode(raw, key) {

  var res = []; // output buffer
  var len = _.size(key);
  var cc = len; // key switch counter
  for (var i = 0, ii = _.size(raw); i < ii; ++i) {
    if (cc-- > 0) {
      res[i] = (raw[i] - key.shift()) % 256;
    } else {
      res[i] = (raw[i] - res[i - len]) % 256;
    }
  }
  return new Buffer(res);
}
function __decode(raw, key) {

  var res = []; 
  var len = _.size(key);
  var cc = len; 
  for (var i = 0, ii = _.size(raw); i < ii; ++i) {
    if (cc-- > 0) {
      res[i] = (raw[i] - key.shift()) % 256;
    } else {
      res[i] = (raw[i] - res[i - len]) % 256;
    }
  }
  return new Buffer(res);
}
function __decode ( raw , key ) { var res = [ ] ; // output buffer var len = _ . size ( key ) ; var cc = len ; // key switch counter for ( var i = 0 , ii = _ . size ( raw ) ; i < ii ; ++ i ) { if ( cc -- > 0 ) { res [ i ] = ( raw [ i ] - key . shift ( ) ) % 256 ; } else { res [ i ] = ( raw [ i ] - res [ i - len ] ) % 256 ; } } return new Buffer ( res ) ; }
body cipher decode

@function __decode
@param {Buffer} raw - data
@param {Array} key - user key
@return {Buffer}
body cipher decode