PiDrvDbUnloadNode

INT64 __fastcall PiDrvDbUnloadNode(INT64 a1, _QWORD *a2){
  _ETHREAD *CurrentThread; 
  __int64 v5; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquireResourceExclusiveLite((ERESOURCE *)(a1 + 88), 1u);
  if( *(_QWORD *)(a1 + 72) )
  {
    v5 = *(_QWORD *)(a1 + 480);
    if( v5 )
    {
      if( v5 < 0 )
        KeSetCoalescableTimer((PKTIMER)(a1 + 264), *(LARGE_INTEGER *)(a1 + 480), 0, 0x3A98u, (PKDPC)(a1 + 328));
    }
    else
    {
      KiSetTimerEx((_KTIMER *)(a1 + 264), 0i64, 0i64, 0, (_KDPC *)(a1 + 328));
    }
    *(_BYTE *)(a1 + 488) = 1;
  }
  *a2 = 0i64;
  ExReleaseResourceLite((PERESOURCE)(a1 + 88));
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  return 0i64;
}

Referenced by:

PiDrvDbNodeActionCallback