anchor.diff:  
   function TRandomHash.MemTransform2(const AChunk: TBytes): TBytes;
   var
  -  i, LChunkLength, LPivot: Int32;
  +  i, LChunkLength, LPivot, LOdd: Int32;
   begin
     LChunkLength := System.Length(AChunk);
     LPivot := LChunkLength SHR 1;
  -  System.SetLength(Result, LChunkLength);
  -  System.Move(AChunk[LPivot], Result[0], LPivot);
  -  System.Move(AChunk[System.Low(AChunk)], Result[LPivot], LPivot);
  +  LOdd := LChunkLength MOD 2;
  +  System.SetLength(Result, LChunkLength);
  +  System.Move(AChunk[LPivot + LOdd], Result[0], LPivot);
  +  System.Move(AChunk[0], Result[LPivot + LOdd], LPivot);
  +  // Set middle-byte for odd-length arrays
  +  if LOdd = 1 then
  +    Result[LPivot] := AChunk[LPivot];
   end;
   
   function TRandomHash.MemTransform3(const AChunk: TBytes): TBytes;
  
positive.code:       N = 5;            // Number of hashing rounds required to compute a nonce (total rounds = 2^N - 1)
        M = 10 * 1024;    // 10KB The memory expansion unit (in bytes)
  
      private
        FMurmurHash3_x86_32 : IHash;
        FHashAlg : array[0..17] of IHash;  // declared here to avoid race-condition during mining
        function ContencateByteArrays(const AChunk1, AChunk2: TBytes): TBytes; inline;
  
negative.code: begin
    LChunkLength := System.Length(AChunk);
    System.SetLength(Result, LChunkLength);
    for i := 0 to System.High(AChunk) do
      Result[i] := TBits.RotateRight8(AChunk[i], i);
  end;
  
  