anchor.diff:  implementation
   
   uses
  -  System.Math;
  +  System.Math, Winapi.Windows;
   
   {$RANGECHECKS OFF}
   {$OVERFLOWCHECKS OFF}
   
  +function SplitMix64(var X: UInt64) : UInt64;
  +var
  +  Z: UInt64;
  +begin
  +  Inc(X, UInt64($9E3779B97F4A7C15));
  +  Z := (X xor (X shr 30)) * UInt64($BF58476D1CE4E5B9);
  +  Z := (Z xor (Z shr 27)) * UInt64($94D049BB133111EB);
  +  Result := Z xor (Z shr 31);
  +end;
  +
   { TXorShift32 }
   
   constructor TXorShift32.Create;
  -begin
  -  FSeed := 314159265;
  +var
  +  C: Int64;
  +begin
  +  if QueryPerformanceCounter(C) then
  +    FSeed := UInt32(C)
  +  else
  +    FSeed := GetTickCount;
   end;
   
   function TXorShift32.GetSeed: Int64;
  
positive.code: {                                                                           }
  { Literature: https://de.wikipedia.org/wiki/Xorshift                        }
  {             https://en.wikipedia.org/wiki/Xorshift                        }
  {                                                                           }
  { License:    Redistribution and use in source and binary forms, with or    }
  {             without modification, are permitted provided that the         }
  
negative.code: { TXorShift64 }
  
  constructor TXorShift64.Create;
  var
    C: Int64;
  begin
    if QueryPerformanceCounter(C) then
      FSeed := C
    else
      FSeed := 88172645463325252 + GetTickCount;
  end;
  
  function TXorShift64.GetSeed: Int64;
  