src/sha_dev.js
function safeAdd_64_4(a, b, c, d)
	{
		var lsw, msw, lowOrder, highOrder;

		lsw = (a.lowOrder & 0xFFFF) + (b.lowOrder & 0xFFFF) +
			(c.lowOrder & 0xFFFF) + (d.lowOrder & 0xFFFF);
		msw = (a.lowOrder >>> 16) + (b.lowOrder >>> 16) +
			(c.lowOrder >>> 16) + (d.lowOrder >>> 16) + (lsw >>> 16);
		lowOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);

		lsw = (a.highOrder & 0xFFFF) + (b.highOrder & 0xFFFF) +
			(c.highOrder & 0xFFFF) + (d.highOrder & 0xFFFF) + (msw >>> 16);
		msw = (a.highOrder >>> 16) + (b.highOrder >>> 16) +
			(c.highOrder >>> 16) + (d.highOrder >>> 16) + (lsw >>> 16);
		highOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);

		return new Int_64(highOrder, lowOrder);
	}
function safeAdd_64_4(a, b, c, d)
	{
		var lsw, msw, lowOrder, highOrder;

		lsw = (a.lowOrder & 0xFFFF) + (b.lowOrder & 0xFFFF) +
			(c.lowOrder & 0xFFFF) + (d.lowOrder & 0xFFFF);
		msw = (a.lowOrder >>> 16) + (b.lowOrder >>> 16) +
			(c.lowOrder >>> 16) + (d.lowOrder >>> 16) + (lsw >>> 16);
		lowOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);

		lsw = (a.highOrder & 0xFFFF) + (b.highOrder & 0xFFFF) +
			(c.highOrder & 0xFFFF) + (d.highOrder & 0xFFFF) + (msw >>> 16);
		msw = (a.highOrder >>> 16) + (b.highOrder >>> 16) +
			(c.highOrder >>> 16) + (d.highOrder >>> 16) + (lsw >>> 16);
		highOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);

		return new Int_64(highOrder, lowOrder);
	}
function safeAdd_64_4 ( a , b , c , d ) { var lsw , msw , lowOrder , highOrder ; lsw = ( a . lowOrder & 0xFFFF ) + ( b . lowOrder & 0xFFFF ) + ( c . lowOrder & 0xFFFF ) + ( d . lowOrder & 0xFFFF ) ; msw = ( a . lowOrder >>> 16 ) + ( b . lowOrder >>> 16 ) + ( c . lowOrder >>> 16 ) + ( d . lowOrder >>> 16 ) + ( lsw >>> 16 ) ; lowOrder = ( ( msw & 0xFFFF ) << 16 ) | ( lsw & 0xFFFF ) ; lsw = ( a . highOrder & 0xFFFF ) + ( b . highOrder & 0xFFFF ) + ( c . highOrder & 0xFFFF ) + ( d . highOrder & 0xFFFF ) + ( msw >>> 16 ) ; msw = ( a . highOrder >>> 16 ) + ( b . highOrder >>> 16 ) + ( c . highOrder >>> 16 ) + ( d . highOrder >>> 16 ) + ( lsw >>> 16 ) ; highOrder = ( ( msw & 0xFFFF ) << 16 ) | ( lsw & 0xFFFF ) ; return new Int_64 ( highOrder , lowOrder ) ; }
Add four 64-bit integers, wrapping at 2^64. This uses 16-bit operations
internally to work around bugs in some JS interpreters.

@private
@param {Int_64} a The first 64-bit integer argument to be added
@param {Int_64} b The second 64-bit integer argument to be added
@param {Int_64} c The third 64-bit integer argument to be added
@param {Int_64} d The fouth 64-bit integer argument to be added
@return {Int_64} The sum of a + b + c + d
Add four 64 - bit integers wrapping at 2^64 . This uses 16 - bit operations internally to work around bugs in some JS interpreters .