whole_func_string: 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);
  }
func_code_string: 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);
  }
func_documentation_string: body cipher decode
  
  @function __decode
  @param {Buffer} raw - data
  @param {Array} key - user key
  @return {Buffer}