anchor.diff:  f(T, B,C,D) when 20 =< T, T =< 39 -> B bxor C bxor D;
   f(T, B,C,D) when 40 =< T, T =< 59 -> (B band C) bor (B band D) bor (C band D);
   f(T, B,C,D) when 60 =< T, T =< 79 -> B bxor C bxor D.
  - 
  +
   %% rotates S bytes to the left on 32 bits
   rotl(S, Num) ->
   	Max = 16#ffffffff,
  
positive.code: 
  compute(<<Bin:512, Other/binary>>, I, {H0,H1,H2,H3,H4} = Hs) ->
  	W0_15 = compute_ws(<<Bin:512>>),
  	Ws = compute_wt(W0_15), 
  	{A,B,C,D,E} = inner_loop(0, Hs, Ws),
  	compute(Other, I-1, {add([H0,A]), add([H1,B]), add([H2,C]),
  		add([H3,D]),add([H4,E])}).
  
negative.code: compute_ws(<<>>) -> [];
  compute_ws(<<Wi:32, Other/binary>>) -> [Wi] ++ compute_ws(Other).
  
  %% generates W_t.
  compute_wt(Ws) -> compute_wt(Ws, 16).
  compute_wt(Ws, 80) -> Ws;
  compute_wt(Ws, T) ->
  	Wp = map(fun(X)->nth(1 + T - X, Ws) end, [3,8,14,16]),
  	Wt_pre = foldl(fun(X,Y)->X bxor Y end, 0, Wp),
  	Wt = rotl(1, Wt_pre),
  