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