HalpAcquireSecondaryIcEntryExclusive

NTSTATUS __stdcall HalpAcquireSecondaryIcEntryExclusive(INT32 *a1, _BYTE *a2){
  unsigned __int64 v4; 
  NTSTATUS result; 

  _InterlockedIncrement(a1 + 29);
  while( 1 )
  {
    KeWaitForSingleObject((UINT64)(a1 + 30), 0, 0, 0, 0i64);
    v4 = (unsigned __int8)HalpAcquireHighLevelLock((UINT64 *)&CmpDummyThreadEvent + 994);
    result = _InterlockedCompareExchange(a1 + 28, 2, 1);
    if( result == 1 )
      break;
    KxReleaseSpinLock((UINT64 *)&CmpDummyThreadEvent + 994);
    __writecr8(v4);
  }
  _InterlockedDecrement(a1 + 29);
  *a2 = v4;
  return result;
}

Referenced by:

HalpDeleteSecondaryIcEntry