RtlpStdGetSpaceForTrace

PSLIST_ENTRY __fastcall RtlpStdGetSpaceForTrace(INT64 a1, UINT16 a2){
  __int64 v2; 
  unsigned int i; 
  PSLIST_ENTRY v6; 
  KSPIN_LOCK v7; 
  unsigned int v8; 
  v2 = a2;
  if( !a2 )
    return 0i64;
  for( i = a2 - 1; i < 0x20; ++i )
  {
    v6 = RtlpInterlockedPopEntrySList((PSLIST_HEADER)(a1 + 16 * (i + 13i64)));
    if( v6 )
    {
      _InterlockedDecrement((volatile signed __int32 *)(a1 + 196));
      return v6 - 1;
    }
  }
  v7 = RtlpStdExtendLowerWatermark((UINT64 *)a1, (8 * v2 + 31) & 0xFFFFFFFFFFFFFFF0ui64);
  if( v7 )
  {
    v8 = ((((8 * (_DWORD)v2 + 31) & 0xFFFFFFF0) - 16) >> 3) - 1;
    if( v8 > 0x1F )
      LOWORD(v8) = 31;
    *(_WORD *)(v7 + 8) = ((_WORD)v8 << 11) | *(_WORD *)(v7 + 8) & 0x7FF;
  }
  return(PSLIST_ENTRY)v7;
}

Referenced by:

RtlpStdLogCapturedStackTrace