BcpSanitizeDriverName

VOID __stdcall BcpSanitizeDriverName(UNICODE_STRING *DriverName, UNICODE_STRING *SanitizedDriverName){
  unsigned __int64 Length; 
  unsigned __int64 v4; 
  wchar_t *Buffer; 
  wchar_t *v6; 
  unsigned __int64 v7; 
  int v8; 
  __int64 v9; 
  __int64 v10; 
  unsigned __int16 v11; 
  unsigned __int64 v12; 
  unsigned __int64 v13; 
  Length = DriverName->Length;
  v4 = SanitizedDriverName->MaximumLength - 2i64;
  Buffer = DriverName->Buffer;
  v6 = SanitizedDriverName->Buffer;
  if( Length >= v4 )
    v7 = v4 >> 1;
  else
    LODWORD(v7) = (unsigned int)Length >> 1;
  v8 = 0;
  if( (_DWORD)v7 )
  {
    v9 = 0i64;
    v10 = (unsigned int)v7;
    v8 = v7;
    do
    {
      v11 = Buffer[v9];
      v12 = v11;
      if( (unsigned __int16)(v11 - 32) > 0x3Fu
        || (v13 = 0x87FFFFFE03FF4001ui64, LOWORD(v12) = v11 - 32, !_bittest64((const __int64 *)&v13, v12)) )
      {
        if( (unsigned __int16)(v11 - 97) > 0x19u )
          v11 = 32;
      }
      v6[v9++] = v11;
      --v10;
    }
    while( v10 );
  }
  SanitizedDriverName->Length = 2 * v8;
  v6[v8] = 0;
}

Referenced by:

BcpDisplayErrorInformation