PiPnpRtlPdoRaiseNtPlugPlayPropertyChangeEvent

CHAR __fastcall PiPnpRtlPdoRaiseNtPlugPlayPropertyChangeEvent(UINT64 P2, INT64 a2){
  __int64 v3; 
  __int64 v4; 
  __int16 *v5; 
  _WORD *v6; 
  PVOID *v7; 
  PVOID *v8; 
  __int64 v9; 
  _WORD *v10; 
  __int64 v11; 
  _WORD *v12; 
  __int64 v13; 
  if( !P2 )
    goto LABEL_18;
  v3 = *(_QWORD *)(P2 + 312);
  v4 = *(_QWORD *)(v3 + 40);
  if( !v4 || (*(_DWORD *)(v4 + 396) & 0x20000) != 0 )
  {
    IoAddTriageDumpDataBlock((PVOID)P2, *(unsigned __int16 *)(P2 + 2));
    v5 = *(__int16 **)(P2 + 8);
    if( v5 )
    {
      IoAddTriageDumpDataBlock(v5, (unsigned int)v5[1]);
      v6 = (_WORD *)(*(_QWORD *)(P2 + 8) + 56i64);
      if( *v6 )
      {
        IoAddTriageDumpDataBlock(v6, 2ui64);
        IoAddTriageDumpDataBlock(
          *(PVOID *)(*(_QWORD *)(P2 + 8) + 64i64),
          *(unsigned __int16 *)(*(_QWORD *)(P2 + 8) + 56i64));
      }
    }
    v7 = *(PVOID **)(*(_QWORD *)(P2 + 312) + 40i64);
    if( v7 )
    {
      v8 = v7 + 5;
      IoAddTriageDumpDataBlock(v7, 0x310ui64);
      if( *(_WORD *)v8 )
      {
        IoAddTriageDumpDataBlock(v8, 2ui64);
        IoAddTriageDumpDataBlock(v8[1], *(unsigned __int16 *)v8);
      }
      v9 = *(_QWORD *)(P2 + 312);
      v10 = (_WORD *)(*(_QWORD *)(v9 + 40) + 56i64);
      if( *v10 )
      {
        IoAddTriageDumpDataBlock(v10, 2ui64);
        IoAddTriageDumpDataBlock(
          *(PVOID *)(*(_QWORD *)(*(_QWORD *)(P2 + 312) + 40i64) + 64i64),
          *(unsigned __int16 *)(*(_QWORD *)(*(_QWORD *)(P2 + 312) + 40i64) + 56i64));
        v9 = *(_QWORD *)(P2 + 312);
      }
      v11 = *(_QWORD *)(*(_QWORD *)(v9 + 40) + 16i64);
      if( v11 )
      {
        v12 = (_WORD *)(v11 + 56);
        if( *v12 )
        {
          IoAddTriageDumpDataBlock(v12, 2ui64);
          v13 = *(_QWORD *)(*(_QWORD *)(*(_QWORD *)(P2 + 312) + 40i64) + 16i64);
          IoAddTriageDumpDataBlock(*(PVOID *)(v13 + 64), *(unsigned __int16 *)(v13 + 56));
        }
      }
    }
LABEL_18:
    KeBugCheckEx(0xCAu, 2ui64, P2, 0i64, 0i64);
  }
  if( v4 != -40 )
    LOBYTE(v3) = PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v4, *(_QWORD *)(v4 + 48), a2);
  return v3;
}

Referenced by:

PiQueryPowerRelations
PnpDeviceActionWorker