jump ( s0! s1! s2! s3! jump-table -- s0' s1' s2' s3' )


Vocabulary
random.xoshiro

Inputs
s0!an object
s1!an object
s2!an object
s3!an object
jump-tablean object


Outputs
s0'an object
s1'an object
s2'an object
s3'an object


Definition


:: jump ( s0! s1! s2! s3! jump-table -- s0' s1' s2' s3' )
0 0 0 0 :> ( t0! t1! t2! t3! ) 4 <iota> [
64 <iota> [
[ jump-table nth ] [ 1 swap shift ] bi* bitand 0 > [
s0 t0 bitxor t0! s1 t1 bitxor t1! s2 t2 bitxor
t2! s3 t3 bitxor t3!
] when s0 s1 s2 s3 (next-256) drop s3! s2! s1! s0!
] with each
] each t0 t1 t2 t3 ;