Perl 6, 2525 24 bytes
{[>] .map:{$_+^7*(8>$_(8 X>$_)}X*7)Z+^$_} Takes a list of integers.
Explanation
{ } # Anonymous block .map:{ ( })Z+^$_ # MapXOR input values $_+^ # XOR with (8 X>$_)X*7 7*(8>$_) # 7 if value < 8, reversing sort order # 0 otherwise, keeping value unchanged [>] # All values strictly decreasing?