RtlpHpAcquireQueuedLockExclusive

VOID __stdcall RtlpHpAcquireQueuedLockExclusive(INT8 SpinLock, UINT64 *a3){
  _QWORD *v2; 
  _QWORD *v3; 
  UINT8 CurrentIrql; 
  _ETHREAD *CurrentThread; 

  v3 = v2;
  if( (_DWORD)a3 )
  {
    v2[1] = SpinLock;
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    ExpAcquireSpinLockExclusive((INT64 *)SpinLock, CurrentIrql);
    v3[2] = CurrentIrql;
  }
  else
  {
    *v2 = 0i64;
    v2[2] = 0i64;
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    v2[1] = SpinLock;
    --CurrentThread->Tcb.SpecialApcDisable;
    ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)SpinLock, 0i64);
  }
}

Referenced by:

RtlpHpVsChunkDecommit
RtlpHpVsChunkSplit
RtlpHpVsContextAllocateInternal
RtlpHpVsContextFree
RtlpHpVsContextFreeInternal
RtlpHpVsContextFreeList