web_modules/forge.bundle.js
function _update(s, w, bytes) {
  // consume 512 bit (64 byte) chunks
  var t, a, b, c, d, f, r, i;
  var len = bytes.length();
  while(len >= 64) {
    // initialize hash value for this chunk
    a = s.h0;
    b = s.h1;
    c = s.h2;
    d = s.h3;

    // round 1
    for(i = 0; i < 16; ++i) {
      w[i] = bytes.getInt32Le();
      f = d ^ (b & (c ^ d));
      t = (a + f + _k[i] + w[i]);
      r = _r[i];
      a = d;
      d = c;
      c = b;
      b += (t << r) | (t >>> (32 - r));
    }
    // round 2
    for(; i < 32; ++i) {
      f = c ^ (d & (b ^ c));
      t = (a + f + _k[i] + w[_g[i]]);
      r = _r[i];
      a = d;
      d = c;
      c = b;
      b += (t << r) | (t >>> (32 - r));
    }
    // round 3
    for(; i < 48; ++i) {
      f = b ^ c ^ d;
      t = (a + f + _k[i] + w[_g[i]]);
      r = _r[i];
      a = d;
      d = c;
      c = b;
      b += (t << r) | (t >>> (32 - r));
    }
    // round 4
    for(; i < 64; ++i) {
      f = c ^ (b | ~d);
      t = (a + f + _k[i] + w[_g[i]]);
      r = _r[i];
      a = d;
      d = c;
      c = b;
      b += (t << r) | (t >>> (32 - r));
    }

    // update hash state
    s.h0 = (s.h0 + a) | 0;
    s.h1 = (s.h1 + b) | 0;
    s.h2 = (s.h2 + c) | 0;
    s.h3 = (s.h3 + d) | 0;

    len -= 64;
  }
}
function _update(s, w, bytes) {
  // consume 512 bit (64 byte) chunks
  var t, a, b, c, d, f, r, i;
  var len = bytes.length();
  while(len >= 64) {
    // initialize hash value for this chunk
    a = s.h0;
    b = s.h1;
    c = s.h2;
    d = s.h3;

    // round 1
    for(i = 0; i < 16; ++i) {
      w[i] = bytes.getInt32Le();
      f = d ^ (b & (c ^ d));
      t = (a + f + _k[i] + w[i]);
      r = _r[i];
      a = d;
      d = c;
      c = b;
      b += (t << r) | (t >>> (32 - r));
    }
    // round 2
    for(; i < 32; ++i) {
      f = c ^ (d & (b ^ c));
      t = (a + f + _k[i] + w[_g[i]]);
      r = _r[i];
      a = d;
      d = c;
      c = b;
      b += (t << r) | (t >>> (32 - r));
    }
    // round 3
    for(; i < 48; ++i) {
      f = b ^ c ^ d;
      t = (a + f + _k[i] + w[_g[i]]);
      r = _r[i];
      a = d;
      d = c;
      c = b;
      b += (t << r) | (t >>> (32 - r));
    }
    // round 4
    for(; i < 64; ++i) {
      f = c ^ (b | ~d);
      t = (a + f + _k[i] + w[_g[i]]);
      r = _r[i];
      a = d;
      d = c;
      c = b;
      b += (t << r) | (t >>> (32 - r));
    }

    // update hash state
    s.h0 = (s.h0 + a) | 0;
    s.h1 = (s.h1 + b) | 0;
    s.h2 = (s.h2 + c) | 0;
    s.h3 = (s.h3 + d) | 0;

    len -= 64;
  }
}
function _update ( s , w , bytes ) { // consume 512 bit (64 byte) chunks
 var t , a , b , c , d , f , r , i ; var len = bytes . length ( ) ; while ( len >= 64 ) { // initialize hash value for this chunk
 a = s . h0 ; b = s . h1 ; c = s . h2 ; d = s . h3 ; // round 1
 for ( i = 0 ; i < 16 ; ++ i ) { w [ i ] = bytes . getInt32Le ( ) ; f = d ^ ( b & ( c ^ d ) ) ; t = ( a + f + _k [ i ] + w [ i ] ) ; r = _r [ i ] ; a = d ; d = c ; c = b ; b += ( t << r ) | ( t >>> ( 32 - r ) ) ; } // round 2
 for ( ; i < 32 ; ++ i ) { f = c ^ ( d & ( b ^ c ) ) ; t = ( a + f + _k [ i ] + w [ _g [ i ] ] ) ; r = _r [ i ] ; a = d ; d = c ; c = b ; b += ( t << r ) | ( t >>> ( 32 - r ) ) ; } // round 3
 for ( ; i < 48 ; ++ i ) { f = b ^ c ^ d ; t = ( a + f + _k [ i ] + w [ _g [ i ] ] ) ; r = _r [ i ] ; a = d ; d = c ; c = b ; b += ( t << r ) | ( t >>> ( 32 - r ) ) ; } // round 4
 for ( ; i < 64 ; ++ i ) { f = c ^ ( b | ~ d ) ; t = ( a + f + _k [ i ] + w [ _g [ i ] ] ) ; r = _r [ i ] ; a = d ; d = c ; c = b ; b += ( t << r ) | ( t >>> ( 32 - r ) ) ; } // update hash state
 s . h0 = ( s . h0 + a ) | 0 ; s . h1 = ( s . h1 + b ) | 0 ; s . h2 = ( s . h2 + c ) | 0 ; s . h3 = ( s . h3 + d ) | 0 ; len -= 64 ; } }
Updates an MD5 state with the given byte buffer.

@param s the MD5 state to update.
@param w the array to use to store words.
@param bytes the byte buffer to update with.
Updates an MD5 state with the given byte buffer .