RunLengthEncode

VOID __stdcall RunLengthEncode(UINT64 *Buffer, UINT64 Length){
  int v2; 
  unsigned int v3; 
  unsigned int v4; 
  _DWORD *v5; 

  if( (_DWORD)Length )
  {
    if( ((unsigned __int8)Buffer & 3) == 0 && (Length & 3) == 0 )
    {
      v2 = *(_DWORD *)Buffer;
      v3 = 1;
      v4 = (unsigned int)Length >> 2;
      if( v4 > 1 )
      {
        v5 = (_DWORD *)Buffer + 1;
        do
        {
          if( *v5 != v2 )
            break;
          ++v3;
          ++v5;
        }
        while( v3 < v4 );
      }
    }
  }
}

Referenced by:

KdpReadPhysicalMemory