CmpHashUnicodeComponent

INT64 __fastcall CmpHashUnicodeComponent(const UNICODE_STRING *Component){
  unsigned int v1; 
  __int16 v2; 
  wchar_t *Buffer; 
  __int64 v4; 
  UINT16 v5; 
  v1 = 0;
  v2 = _mm_cvtsi128_si32(*(__m128i *)Component);
  if( v2 )
  {
    Buffer = Component->Buffer;
    v4 = (unsigned __int16)(((unsigned __int16)(v2 - 1) >> 1) + 1);
    do
    {
      v5 = *Buffer;
      if( *Buffer >= 0x61u )
      {
        if( v5 > 0x7Au )
          v5 = NLS_UPCASE(v5);
        else
          v5 -= 32;
      }
      ++Buffer;
      v1 = v5 + 37 * v1;
      --v4;
    }
    while( v4 );
  }
  return v1;
}

Referenced by:

CmDeleteLayeredKey
CmInitSystem1
CmRenameKey
CmpAddStringToMapping
CmpAddToLeaf
CmpCheckLeaf
CmpCreateRegistryRoot
CmpDoBuildVirtualStack
CmpFindSubKeyByHashWithStatus
CmpFindSubkeyInHashByChildCell
CmpGetMappingHiveForString
CmpGetNameControlBlock
CmpPartialPromoteSubkeys
CmpSubtreeEnumeratorAdvance
CmpWaitForHiveMount