RtlComputeLfnChecksum

UINT16 __stdcall RtlComputeLfnChecksum(_UNICODE_STRING *Name){
  wchar_t *Buffer; 
  unsigned __int16 v2; 
  unsigned __int64 v3; 
  unsigned __int64 v4; 

  Buffer = Name->Buffer;
  v2 = 0;
  v3 = 0i64;
  v4 = (unsigned __int64)Name->Length >> 1;
  if( Buffer > &Buffer[v4] )
    v4 = 0i64;
  if( v4 )
  {
    do
    {
      ++v3;
      v2 = *Buffer++ + 37 * v2;
    }
    while( v3 < v4 );
  }
  return(int)abs32(314159269 * v2) % 1000000007;
}

Referenced by:

RtlGenerate8dot3Name