PiDmListRemoveObject

_QWORD *__fastcall PiDmListRemoveObject(unsigned int a1, ULONG_PTR a2, ULONG_PTR a3, __int64 a4){
  VOID *ObjectManagerForObjectType; 
  _ETHREAD *CurrentThread; 
  VOID *v10; 
  _ETHREAD *v11; 
  ObjectManagerForObjectType = PiDmGetObjectManagerForObjectType(*(unsigned int *)(a2 + 28));
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v10 = ObjectManagerForObjectType;
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx(a2, 0i64);
  v11 = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)v11 + 242);
  ExAcquirePushLockSharedEx(a3, 0i64);
  PiDmListRemoveObjectWorker(a1, v10, a2, a3, a4);
  ExReleasePushLockEx(a3, 0i64);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  ExReleasePushLockEx(a2, 0i64);
  return KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}

Referenced by:

PiPnpRtlCmActionCallback