anchor.diff:  		{ssh_transport,select_algorithm,3},
   		{ssh_transport,encrypt,2},
   		{ssh_transport,decrypt,2},
  +		{ssh_message,encode,1},
  +		{ssh_message,decode,1},
   		{public_key,dh_gex_group,4} % To find dh_gex group size
   	       ]],
       {ok, TracerPid}.
  
positive.code: %%%----------------------------------------------------------------
  find_times(L, Xs) ->
      [find_time(X,L) || X <- Xs]	++
  	crypto_algs_times_sizes([encrypt,decrypt], L).
  
  -record(call, {
  	  mfa,
  
negative.code:     Size.
  
  %%%----------------
  function_algs_times_sizes(EncDecs, L) ->
      Raw = [begin
  	       {Tag,Size} = function_ats_result(EncDec, C),
  	       {Tag, Size, now2micro_sec(now_diff(T1,T0))}
  	   end
  	   || EncDec <- EncDecs,
  	      C = #call{mfa = ED,
  			args = Args,  %%[S,Data],
  			t_call = T0,
  			t_return = T1} <- L,
  	      ED == EncDec
  	  ],
      [{Alg, round(1024*Time/Size), "microsec per kbyte"}  % Microseconds per 1k bytes.
       || {Alg,Size,Time} <- lists:foldl(fun increment/2, [], Raw)].
  
  function_ats_result({ssh_transport,encrypt,2}, #call{args=[S,Data]}) ->
      {{encrypt,S#ssh.encrypt}, size(Data)};
  function_ats_result({ssh_transport,decrypt,2}, #call{args=[S,Data]}) ->
      {{decrypt,S#ssh.decrypt}, size(Data)};
  function_ats_result({ssh_message,encode,1}, #call{result=Data}) ->
      {encode, size(Data)};
  function_ats_result({ssh_message,decode,1}, #call{args=[Data]}) ->
      {decode, size(Data)}.
      
  
  increment({Alg,Sz,T}, [{Alg,SumSz,SumT}|Acc]) ->
      [{Alg,SumSz+Sz,SumT+T} | Acc];
  