RtlpStdExtendLowerWatermark

KSPIN_LOCK __fastcall RtlpStdExtendLowerWatermark(UINT64 *SpinLock, INT64 a2){
  KSPIN_LOCK v4; 
  char v5; 
  UINT64 v6; 
  char v7; 
  void *v8; 
  UINT64 v9; 
  unsigned __int64 v10; 
  UINT64 AllocationType; 
  UINT64 Protect; 
  ULONG_PTR RegionSize; 
  PVOID BaseAddress; 
  RegionSize = 0i64;
  v4 = 0i64;
  KeAcquireSpinLockRaiseToDpc(SpinLock, a2);
  *((_BYTE *)SpinLock + 8) = v5;
  v6 = SpinLock[20];
  v7 = *((_BYTE *)SpinLock + 128);
  v8 = (void *)SpinLock[18];
  BaseAddress = v8;
  v9 = v6 + a2;
  if( !v7 )
  {
    if( v9 > (unsigned __int64)v8 )
    {
      RegionSize = (a2 + 4095) & 0xFFFFFFFFFFFFF000ui64;
      if( (unsigned __int64)v8 + RegionSize >= SpinLock[19] )
        goto LABEL_9;
      LODWORD(Protect) = 4;
      LODWORD(AllocationType) = 4096;
      if( ZwAllocateVirtualMemory(
             (PVOID)0xFFFFFFFFFFFFFFFFi64,
             &BaseAddress,
             0i64,
             &RegionSize,
             AllocationType,
             Protect) < 0 )
        goto LABEL_9;
      SpinLock[18] = (UINT64)BaseAddress + RegionSize;
    }
LABEL_8:
    ++*((_DWORD *)SpinLock + 48);
    SpinLock[20] = v6 + a2;
    v4 = v6;
    goto LABEL_9;
  }
  if( v9 <= SpinLock[21] )
    goto LABEL_8;
LABEL_9:
  v10 = *((unsigned __int8 *)SpinLock + 8);
  KxReleaseSpinLock(SpinLock);
  __writecr8(v10);
  return v4;
}

Referenced by:

RtlpStdGetSpaceForTrace