That's just bad programming.
Maybe they meant
if not ( ^first.rsdtc and ^ last.rsdtc );
which is bad programming too as it's really difficult to read.
Or maybe they changed the code and forgot to remove something. Who knows?
In any case the program line you mention is that same as
if first.rsdtc and ^ last.rsdtc;