RtlpStdGetRecordedStackTraceIndex
INT64 __fastcall RtlpStdGetRecordedStackTraceIndex(INT64 a1, UINT16 *a2){
__int64 v2;
unsigned int v5;
UINT16 *v6;
UINT64 v7;
INT64 v8;
VOID *v9;
char v10;
_QWORD *v11;
__int64 v12;
unsigned __int64 v13;
v2 = a2[7];
v5 = 0;
if( (_WORD)v2 )
{
v6 = a2 + 8;
do
{
v5 += *(_DWORD *)v6;
v6 += 4;
--v2;
}
while( v2 );
}
v7 = v5 % *(_DWORD *)(a1 + 720);
v8 = a1 + 24i64 * (unsigned int)v7;
KeAcquireSpinLockRaiseToDpc((UINT64 *)(v8 + 736), v7);
*(_BYTE *)(v8 + 744) = v10;
if( *(_DWORD *)(a2 + 5) )
{
LODWORD(v12) = a2[6] + (a2[5] << 16);
}
else
{
v11 = (_QWORD *)RtlpStdExtendUpperWatermark((UINT64 *)a1, v9);
if( v11 )
{
*v11 = a2;
v12 = (__int64)(*(_QWORD *)(a1 + 184) - (_QWORD)v11) >> 3;
a2[6] = v12;
a2[5] = WORD1(v12);
}
else
{
LODWORD(v12) = 0;
}
}
v13 = *(unsigned __int8 *)(v8 + 744);
KxReleaseSpinLock((UINT64 *)(v8 + 736));
__writecr8(v13);
return(unsigned int)v12;
}Referenced by:
ExInitializeResourceLite
ExpInitializeResource