anchor.diff:      %% const uint64_t result_starstar = rotl(s0 * S, R) * T;
       %%
       {?scramble_starstar(S0, V_0, V_1), SR};
  -%%    %% The multiply by add shifted trick avoids creating bignums
  -%%    %% which improves performance significantly
  -%%    %%
  -%%    V0 = ?MASK(58, S0 + ?BSL(58, S0, 2)), % V0 = S0 * 5
  -%%    V1 = ?ROTL(58, V0, 7),
  -%%    V = ?MASK(58, V1 + ?BSL(58, V1, 3)), % V = V1 * 9
  -%%    {V, SR};
   exro928ss_next({[S15], Rs}) ->
       exro928ss_next({[S15|lists:reverse(Rs)], []}).
   
  
positive.code:                        {X :: uint58(), NewAlgState :: exsplus_state()}.
  exsp_next([S1|S0]) ->
      %% Note: members s0 and s1 are swapped here
      NewS1 = ?exs_next(S0, S1, S1_1),
      {?MASK(58, S0 + NewS1), [S0|NewS1]}.
  
  -dialyzer({no_improper_lists, exsss_next/1}).
  
  -spec exsss_next(exsplus_state()) -> {uint58(), exsplus_state()}.
  exsss_next([S1|S0]) ->
      %% Note: members s0 and s1 are swapped here
      NewS1 = ?exs_next(S0, S1, S1_1),
      {?scramble_starstar(S0, V_0, V_1), [S0|NewS1]}.
  
  exsp_uniform({AlgHandler, R0}) ->
      {I, R1} = exsp_next(R0),
  
negative.code: -define(
     exs_next(S0, S1, S1_b),
     begin
         S1_b = ?MASK(58, S1) bxor ?BSL(58, S1, 24),
         S1_b bxor S0 bxor (S1_b bsr 11) bxor (S0 bsr 41)
     end).
  
  