CmDeleteCommonClassRegKey

__int64 __fastcall CmDeleteCommonClassRegKey(__int64 a1, const WCHAR *a2, int a3){
  unsigned int v6; 
  __int64(__fastcall *v7)(__int64, const WCHAR *, _QWORD, __int64, int, _DWORD *); 
  int v8; 
  unsigned int v9; 
  unsigned int v10; 
  int v11; 
  _DWORD result[4]; 
  int v14; 
  int v15; 
  char v16; 
  int v17; 
  memset((INT64)result, 0i64);
  if( (unsigned __int8)a3 == 32 )
  {
    v6 = 2;
  }
  else
  {
    if( (unsigned __int8)a3 != 64 )
      return(unsigned int)-1073741811;
    v6 = 4;
  }
  v7 = *(__int64(__fastcall **)(__int64, const WCHAR *, _QWORD, __int64, int, _DWORD *))(a1 + 504);
  v15 = 0;
  v17 = 0;
  v14 = a3;
  v16 = 1;
  if( v7 )
  {
    v8 = v7(a1, a2, v6, 12i64, 1, result);
    if( v8 == -1073741822 )
    {
      v7 = 0i64;
    }
    else
    {
      if( v8 == -1073741536 )
        return result[0];
      if( v8 )
        return(unsigned int)-1073741595;
    }
  }
  v9 = CmDeleteCommonClassRegKeyWorker(a1, a2, v14, v15, v16);
  v10 = v9;
  if( !v7 )
    return v10;
  result[0] = v9;
  v11 = v7(a1, a2, v6, 12i64, 2, result);
  if( v11 == -1073741822 )
    return v10;
  if( v11 == -1073741536 )
    return result[0];
  if( v11 )
    return(unsigned int)-1073741595;
  return v10;
}

Referenced by:

CmDeleteInstallerClassWorker
CmDeleteInterfaceClassWorker