code: function(x,_length){
          /* append padding */
          x[_length>>5] |= 0x80<<(24-_length%32);
          x[((_length+64>>9)<<4)+15] = _length;
          var w = Array(80),  a = 1732584193,
              b = -271733879, c = -1732584194,
              d = 271733878,  e = -1009589776;
          for(var i=0,l=x.length,_olda,
              _oldb,_oldc,_oldd,_olde;i<l;i+=16){
              _olda = a; _oldb = b;
              _oldc = c; _oldd = d; _olde = e;
              for(var j=0;j<80;j++){
                  w[j] = j<16 ? x[i+j]
                              : __rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);
                  var t = __add(__add(__rol(a,5),
                                __sha1ft(j,b,c,d)),
                                __add(__add(e,w[j]),
                                __sha1kt(j)));
                  e = d; d = c;
                  c = __rol(b,30);
                  b = a; a = t;
              }
              a = __add(a,_olda);
              b = __add(b,_oldb);
              c = __add(c,_oldc);
              d = __add(d,_oldd);
              e = __add(e,_olde);
          }
          return [a,b,c,d,e];
      }
docs: /*
  Calculate the SHA-1 of an array of big-endian words, and a bit length