PopRegisterCoolingExtensionProtection

NTSTATUS __stdcall PopRegisterCoolingExtensionProtection(POP_COOLING_EXTENSION *CoolingExtension){
  INT64 v1; 
  INT64 v2; 
  INT64 *v3; 
  bool v5; 
  int DeviceProperty; 
  _DEVICE_OBJECT *v7; 
  _DEVICE_OBJECT *v8; 
  VOID **PoolWithTag; 
  _UNICODE_STRING DestinationString; 
  UINT64 NumberOfBytes; 
  PFILE_OBJECT FileObject; 
  PDEVICE_OBJECT DeviceObject; 

  LODWORD(NumberOfBytes) = 0;
  v3 = (INT64 *)(CoolingExtension + 14);
  DeviceObject = 0i64;
  FileObject = 0i64;
  v5 = *((_QWORD *)CoolingExtension + 7) == 0i64;
  DestinationString = 0i64;
  if( !v5 )
    return 0;
  LODWORD(v7) = IoGetDeviceAttachmentBaseRef(*((_QWORD *)CoolingExtension + 6), v1, v2);
  v8 = v7;
  if( IoGetDeviceProperty(v7, 11, 0i64, 0i64, &NumberOfBytes) == -1073741789 )
  {
    PoolWithTag = ExAllocatePoolWithTag(1ui64, (unsigned int)NumberOfBytes, 1819231056i64);
    if( PoolWithTag )
    {
      DeviceProperty = IoGetDeviceProperty(v8, 11, (unsigned int)NumberOfBytes, PoolWithTag, &NumberOfBytes);
      if( DeviceProperty >= 0 )
      {
        RtlInitUnicodeString(&DestinationString, (PCWSTR)PoolWithTag);
        DeviceProperty = IoGetDeviceObjectPointer(&DestinationString, 0x1F01FFui64, &FileObject, &DeviceObject);
        if( DeviceProperty >= 0 )
          DeviceProperty = IoRegisterPlugPlayNotification(
                             3i64,
                             0,
                             (OWORD *)&FileObject->Type,
                             (UINT64)DeviceObject->DriverObject,
                             (INT64)PopCoolingExtensionPnpNotification,
                             (INT64)CoolingExtension,
                             v3);
        if( FileObject )
          HalPutDmaAdapter((PADAPTER_OBJECT)FileObject);
      }
      ExFreePoolWithTag(PoolWithTag, 0x6C6F4350u);
    }
    else
    {
      DeviceProperty = -1073741670;
    }
  }
  else
  {
    DeviceProperty = -1073741823;
  }
  if( v8 )
    HalPutDmaAdapter((PADAPTER_OBJECT)v8);
  return DeviceProperty;
}

Referenced by:

PopAssociateThermalRequest