Attacker has to win following game by distinguishing that output was updated by a certain function or not?
Attacker queries an oracle for the output.
Oracle generates fresh 4 random bytes $a$, $b$, $c$, and $d$ and one random bit $x$.
if $x=0$, Oracle outputs values of $a$, $b$, $c$, and $d$.
if $x=1$, it first updates the values using following equations (applied sequentially) and then outputs updated values of $a$, $b$, $c$, and $d$. $$\begin{align} a &= (a + dc) \bmod 256;\\ b &= (b + ad) \bmod 256;\\ c &= (c + ba) \bmod 256;\\ d &= (d + cb) \bmod 256;\\ \end{align}$$
Goal of attacker is to find that output was result of step 3 or 4?
*Attacker can make infinite queries.
Example: if a=0, b=0, c=1, d=1 and x=1 at step 2, then Oracle outputs 1,1,2,3.
(a,b,c,d)=((a+d*c)%256,(b+a*d)%256,(c+b*a)%256,(d+c*b)%256)
in the sense that has in Python, which is where I suggest examining what happens for the low bits, then the two low-order bits. – fgrieu Jun 26 '21 at 15:24