Here is point.
Mixer address XPpRHV6hWFDnQvNhu7WaRy6h6KfGkmx9Hb is used for sender.
One time.
Every input to mixer got NEW address.
Matched....
From sender, with NEW address.
Okay... but you still don't know who the original sender is, correct? Isn't that the point of anonymous transfers -- to mask the original sender's address?
Mixer identified.
Input of mixer address XPpRHV6hWFDnQvNhu7WaRy6h6KfGkmx9Hb == output from sender XQaYnWevqYVfg7j75qr2YR38R3xbb5xjyw
XPpRHV6hWFDnQvNhu7WaRy6h6KfGkmx9Hb will not be used again for any sender.
So XQaYnWevqYVfg7j75qr2YR38R3xbb5xjyw == XPpRHV6hWFDnQvNhu7WaRy6h6KfGkmx9Hb.
Compare output, count blocks, check explorer, input of XPpRHV6hWFDnQvNhu7WaRy6h6KfGkmx9Hb will be user for output for another sender.
Can find related output address.
That's what i am doing in analysis aka mapping.