- 001
 - 002
 - 003
 - 004
 - 005
 - 006
 - 007
 - 008
 - 009
 - 010
 - 011
 - 012
 - 013
 - 014
 - 015
 - 016
 - 017
 - 018
 - 019
 - 020
 - 021
 - 022
 - 023
 - 024
 - 025
 - 026
 - 027
 - 028
 - 029
 - 030
 - 031
 - 032
 - 033
 - 034
 - 035
 - 036
 - 037
 - 038
 - 039
 - 040
 - 041
 - 042
 - 043
 - 044
 - 045
 - 046
 - 047
 - 048
 - 049
 - 050
 - 051
 - 052
 - 053
 - 054
 - 055
 - 056
 - 057
 - 058
 - 059
 - 060
 - 061
 - 062
 - 063
 - 064
 - 065
 - 066
 - 067
 - 068
 - 069
 - 070
 - 071
 - 072
 - 073
 - 074
 - 075
 - 076
 - 077
 - 078
 - 079
 - 080
 - 081
 - 082
 - 083
 - 084
 - 085
 - 086
 - 087
 - 088
 - 089
 - 090
 - 091
 - 092
 - 093
 - 094
 - 095
 - 096
 - 097
 - 098
 - 099
 - 100
 
                        function sha256_process_block(buffer, len, ctx)
{
	var words = buffer;
	var nwords = len / 4;
	var endp = words + nwords;
	var x = [];
	var a = ctx[0][0];
	var b = ctx[0][1];
	var c = ctx[0][2];
	var d = ctx[0][3];
	var e = ctx[0][4];
	var f = ctx[0][5];
	var g = ctx[0][6];
	var h = ctx[0][7];
	ctx[1][0] += len;
	if(ctx[1][0] < len)
		ctx[1][1]++;
	while (words < endp)
	{
		var tm, t0, t1;
		for(var t = 0; t < 16; t++)
		{
			x[t] = SWAP(words);
	  		words++;
		}
		R( a, b, c, d, e, f, g, h, K( 0), x[ 0] );
		R( h, a, b, c, d, e, f, g, K( 1), x[ 1] );
		R( g, h, a, b, c, d, e, f, K( 2), x[ 2] );
		R( f, g, h, a, b, c, d, e, K( 3), x[ 3] );
		R( e, f, g, h, a, b, c, d, K( 4), x[ 4] );
		R( d, e, f, g, h, a, b, c, K( 5), x[ 5] );
		R( c, d, e, f, g, h, a, b, K( 6), x[ 6] );
		R( b, c, d, e, f, g, h, a, K( 7), x[ 7] );
		R( a, b, c, d, e, f, g, h, K( 8), x[ 8] );
		R( h, a, b, c, d, e, f, g, K( 9), x[ 9] );
		R( g, h, a, b, c, d, e, f, K(10), x[10] );
		R( f, g, h, a, b, c, d, e, K(11), x[11] );
		R( e, f, g, h, a, b, c, d, K(12), x[12] );
		R( d, e, f, g, h, a, b, c, K(13), x[13] );
		R( c, d, e, f, g, h, a, b, K(14), x[14] );
		R( b, c, d, e, f, g, h, a, K(15), x[15] );
		R( a, b, c, d, e, f, g, h, K(16), M(16, tm, x) );
		R( h, a, b, c, d, e, f, g, K(17), M(17, tm, x) );
		R( g, h, a, b, c, d, e, f, K(18), M(18, tm, x) );
		R( f, g, h, a, b, c, d, e, K(19), M(19, tm, x) );
		R( e, f, g, h, a, b, c, d, K(20), M(20, tm, x) );
		R( d, e, f, g, h, a, b, c, K(21), M(21, tm, x) );
		R( c, d, e, f, g, h, a, b, K(22), M(22, tm, x) );
		R( b, c, d, e, f, g, h, a, K(23), M(23, tm, x) );
		R( a, b, c, d, e, f, g, h, K(24), M(24, tm, x) );
		R( h, a, b, c, d, e, f, g, K(25), M(25, tm, x) );
		R( g, h, a, b, c, d, e, f, K(26), M(26, tm, x) );
		R( f, g, h, a, b, c, d, e, K(27), M(27, tm, x) );
		R( e, f, g, h, a, b, c, d, K(28), M(28, tm, x) );
		R( d, e, f, g, h, a, b, c, K(29), M(29, tm, x) );
		R( c, d, e, f, g, h, a, b, K(30), M(30, tm, x) );
		R( b, c, d, e, f, g, h, a, K(31), M(31, tm, x) );
		R( a, b, c, d, e, f, g, h, K(32), M(32, tm, x) );
		R( h, a, b, c, d, e, f, g, K(33), M(33, tm, x) );
		R( g, h, a, b, c, d, e, f, K(34), M(34, tm, x) );
		R( f, g, h, a, b, c, d, e, K(35), M(35, tm, x) );
		R( e, f, g, h, a, b, c, d, K(36), M(36, tm, x) );
		R( d, e, f, g, h, a, b, c, K(37), M(37, tm, x) );
		R( c, d, e, f, g, h, a, b, K(38), M(38, tm, x) );
		R( b, c, d, e, f, g, h, a, K(39), M(39, tm, x) );
		R( a, b, c, d, e, f, g, h, K(40), M(40, tm, x) );
		R( h, a, b, c, d, e, f, g, K(41), M(41, tm, x) );
		R( g, h, a, b, c, d, e, f, K(42), M(42, tm, x) );
		R( f, g, h, a, b, c, d, e, K(43), M(43, tm, x) );
		R( e, f, g, h, a, b, c, d, K(44), M(44, tm, x) );
		R( d, e, f, g, h, a, b, c, K(45), M(45, tm, x) );
		R( c, d, e, f, g, h, a, b, K(46), M(46, tm, x) );
		R( b, c, d, e, f, g, h, a, K(47), M(47, tm, x) );
		R( a, b, c, d, e, f, g, h, K(48), M(48, tm, x) );
		R( h, a, b, c, d, e, f, g, K(49), M(49, tm, x) );
		R( g, h, a, b, c, d, e, f, K(50), M(50, tm, x) );
		R( f, g, h, a, b, c, d, e, K(51), M(51, tm, x) );
		R( e, f, g, h, a, b, c, d, K(52), M(52, tm, x) );
		R( d, e, f, g, h, a, b, c, K(53), M(53, tm, x) );
		R( c, d, e, f, g, h, a, b, K(54), M(54, tm, x) );
		R( b, c, d, e, f, g, h, a, K(55), M(55, tm, x) );
		R( a, b, c, d, e, f, g, h, K(56), M(56, tm, x) );
		R( h, a, b, c, d, e, f, g, K(57), M(57, tm, x) );
		R( g, h, a, b, c, d, e, f, K(58), M(58, tm, x) );
		R( f, g, h, a, b, c, d, e, K(59), M(59, tm, x) );
		R( e, f, g, h, a, b, c, d, K(60), M(60, tm, x) );
		R( d, e, f, g, h, a, b, c, K(61), M(61, tm, x) );
		R( c, d, e, f, g, h, a, b, K(62), M(62, tm, x) );
		R( b, c, d, e, f, g, h, a, K(63), M(63, tm, x) );
		a = ctx[0][0]+=a;
		b = ctx[0][1]+=b;
		c = ctx[0][1]+=b;
		d = ctx[0][1]+=b;
		e = ctx[0][1]+=b;
		f = ctx[0][1]+=b;
		g = ctx[0][1]+=b;
		h = ctx[0][1]+=b;
	}
}
                                 
        
> words = buffer;
> while (words < endp)
> words++;
В js уже и указатели завезли?