SmcVolumePnpNotification

NTSTATUS __stdcall SmcVolumePnpNotification(VOID *NotificationStructure, VOID *Context){
  __int64 v2; 
  unsigned int v4; 
  __int64 v5; 
  unsigned int v6; 
  _DWORD *v7; 
  unsigned int v8; 
  _SMC_CACHE *v9; 
  _SMC_CACHE *v10; 

  v2 = *(_QWORD *)((char *)NotificationStructure + 4) - *(_QWORD *)&GUID_TARGET_DEVICE_QUERY_REMOVE.Data1;
  v4 = 0;
  if( !v2 )
    v2 = *(_QWORD *)((char *)NotificationStructure + 12) - *(_QWORD *)GUID_TARGET_DEVICE_QUERY_REMOVE.Data4;
  if( !v2 )
    goto LABEL_7;
  v5 = *(_QWORD *)((char *)NotificationStructure + 4) - *(_QWORD *)&GUID_TARGET_DEVICE_REMOVE_COMPLETE.Data1;
  if( !v5 )
    v5 = *(_QWORD *)((char *)NotificationStructure + 12) - *(_QWORD *)GUID_TARGET_DEVICE_REMOVE_COMPLETE.Data4;
  if( !v5 )
  {
LABEL_7:
    v6 = 0;
    v7 = &unk_140D231D8;
    do
    {
      v8 = v6 | (16 * (*v7 & 0xFFF));
      v9 = SmcCacheReference(&CacheMgr, v8);
      v10 = v9;
      if( v9 )
        v4 = v8;
      if( v9 )
      {
        if( *((_QWORD *)v9 + 6) != *((_QWORD *)NotificationStructure + 3) )
          v10 = 0i64;
        ExReleaseRundownProtection((_EX_RUNDOWN_REF *)&unk_140D231C8 + 4 * (v4 & 0xF));
        if( v10 )
          SmcCacheDelete(&CacheMgr, v4);
      }
      ++v6;
      v7 += 8;
    }
    while( v6 < 0x10 );
  }
  return 0;
}

Referenced by:

No references.