CmUpdateDevicePanelInterface

NTSTATUS __stdcall CmUpdateDevicePanelInterface(HPNPCTX *hPnpCtx, WCHAR *ObjectName, VOID *ObjectBaseKey){
  INT64 v3; 
  VOID **v7; 
  NTSTATUS DevicePanelPldProperty; 
  int ObjectProperty; 
  VOID **PoolWithTag; 
  INT64 v12; 
  int v13; 
  INT64 a9; 
  _DWORD a7[3]; 
  INT64 a6; 
  UINT8 PropertyBuffer[16]; 

  v3 = 0i64;
  a6 = 0i64;
  memset(a7, 0, sizeof(a7));
  v12 = 0i64;
  v7 = 0i64;
  *(_OWORD *)PropertyBuffer = 0i64;
  a9 = 0i64;
  v13 = 0;
  DevicePanelPldProperty = CmQueryDevicePanelPldProperty(
                             hPnpCtx,
                             ObjectName,
                             3,
                             ObjectBaseKey,
                             (_DEVPROPKEY *)&DEVPKEY_Device_PhysicalDeviceLocation,
                             (INT64)&a6,
                             (INT64)a7,
                             (INT64)&a7[1],
                             (INT64)&a9 + 4);
  ObjectProperty = DevicePanelPldProperty;
  if( DevicePanelPldProperty == -1073741275 )
  {
    ObjectProperty = 0;
  }
  else
  {
    if( DevicePanelPldProperty < 0 )
      goto LABEL_13;
    v3 = *(_QWORD *)&a7[1];
    if( *(_QWORD *)&a7[1] )
    {
      PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x190ui64, 1380994640i64);
      v7 = PoolWithTag;
      if( !PoolWithTag )
      {
        ObjectProperty = -1073741801;
        goto LABEL_13;
      }
      ObjectProperty = PnpGetObjectProperty(
                         (ULONG)hPnpCtx,
                         (INT64)ObjectName,
                         3i64,
                         (INT64)ObjectBaseKey,
                         0i64,
                         (INT64)&DEVPKEY_Device_InstanceId,
                         (INT64)&a9,
                         (INT64)PoolWithTag);
      if( ObjectProperty >= 0 )
        ObjectProperty = -1073741823;
      goto LABEL_11;
    }
  }
  if( PnpGetObjectProperty(
         (ULONG)hPnpCtx,
         (INT64)ObjectName,
         3i64,
         (INT64)ObjectBaseKey,
         0i64,
         (INT64)&DEVPKEY_Device_PanelId,
         (INT64)&a9,
         v3) != -1073741789 )
    goto LABEL_13;
  PnpSetObjectProperty(
    (INT64)hPnpCtx,
    (INT64)ObjectName,
    3u,
    0i64,
    0i64,
    (__int64)&DEVPKEY_Device_PanelId,
    0,
    0i64,
    0,
    0);
  PnpSetObjectProperty(
    (INT64)hPnpCtx,
    (INT64)ObjectName,
    3u,
    0i64,
    0i64,
    (__int64)&DEVPKEY_Device_PanelGroup,
    0,
    0i64,
    0,
    0);
  PnpSetObjectProperty(
    (INT64)hPnpCtx,
    (INT64)ObjectName,
    3u,
    0i64,
    0i64,
    (__int64)&DEVPKEY_Device_PanelSide,
    0,
    0i64,
    0,
    0);
LABEL_11:
  if( v7 )
    ExFreePoolWithTag(v7, 0);
LABEL_13:
  if( a6 )
    ExFreePoolWithTag((PVOID)a6, 0);
  return ObjectProperty;
}

Referenced by:

PiPnpRtlSetObjectProperty