function sqrt( x ) {
	var root;
	var bit;
	var sum;
	var y;

	y = x >>> 0; // asm type annotation

	root = 0 >>> 0; // asm type annotation
	bit = BIT;

	// `bit` should start as the highest power of `4` less than or equal to `x`:
	while ( bit > y ) {
		bit >>>= 2;
	}
	// Perform a digit-by-digit/abacus computation...
	while ( bit !== 0 ) {
		sum = ( root + bit ) >>> 0; // asm type annotation
		root >>>= 1;
		if ( x >= sum ) {
			x -= sum;
			root += bit;
		}
		bit >>>= 2;
	}
	// Note: `x` is the remainder

	return root >>> 0; // asm type annotation
}
Returns an integer square root.

@param {uinteger32} x - input value
@returns {uinteger32} integer square root

@example
var v = sqrt( 9 >>> 0 );
// returns 3

@example
var v = sqrt( 2 >>> 0 );
// returns 1

@example
var v = sqrt( 3 >>> 0 );
// returns 1

@example
var v = sqrt( 0 >>> 0 );
// returns 0