VrpUnlockJobContextExclusive

VOID __stdcall VrpUnlockJobContextExclusive(INT64 a1){
  VOID *v1; 
  char v2; 

  v1 = (VOID *)(a1 + 16);
  v2 = _InterlockedExchangeAdd64((volatile signed __int64 *)(a1 + 16), 0xFFFFFFFFFFFFFFFFui64);
  if( (v2 & 2) != 0 && (v2 & 4) == 0 )
    ExfTryToWakePushLock((_EX_PUSH_LOCK *)(a1 + 16));
  KeAbPostRelease(v1);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
}

Referenced by:

VrpHandleIoctlCreateMultipleNamespaceNodes
VrpHandleIoctlCreateNamespaceNode
VrpHandleIoctlInitializeJobForVreg
VrpHandleIoctlLoadDifferencingHive
VrpHandleIoctlUnloadDynamicallyLoadedHives