SmpFpAllocateResource

NTSTATUS __stdcall SmpFpAllocateResource(INT64 SpinLock, INT64 a2){
  __int64 v2; 
  KIRQL v4; 
  __int64 *v5; 
  unsigned __int64 v6; 
  __int64 i; 
  __int64 v8; 
  v2 = (int)a2;
  v4 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)SpinLock);
  v5 = *(__int64 **)(SpinLock + 8 * v2 + 32);
  v6 = v4;
  for( i = v2; (v5[1] & 1) != 0; v5 = (__int64 *)*v5 )
    ;
  v8 = v5[1];
  *((_DWORD *)v5 + 2) |= 1u;
  ++*(_BYTE *)(i + SpinLock + 80);
  ++*(_BYTE *)(SpinLock + 86);
  ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)SpinLock);
  __writecr8(v6);
  return v8;
}

Referenced by:

SmpFpWaitForResource