PsPicoWalkUserStack
UINT64 __stdcall PsPicoWalkUserStack(PVOID *Callers, UINT64 FrameCount){
unsigned int v2;
_OWORD *v4;
_OWORD *v5;
UINT64 result;
_ETHREAD *CurrentThread;
char *v8;
__int64 v9;
__int128 v10;
char v11[400];
v2 = FrameCount;
LODWORD(v4) = PsGetBaseTrapFrame((INT64)KeGetCurrentThread());
v5 = v4;
result = 0i64;
if( (_QWORD)xmmword_140C1DE70 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 243);
v8 = v11;
v9 = 3i64;
do
{
*(_OWORD *)v8 = *v5;
*((_OWORD *)v8 + 1) = v5[1];
*((_OWORD *)v8 + 2) = v5[2];
*((_OWORD *)v8 + 3) = v5[3];
*((_OWORD *)v8 + 4) = v5[4];
*((_OWORD *)v8 + 5) = v5[5];
*((_OWORD *)v8 + 6) = v5[6];
v8 += 128;
v10 = v5[7];
v5 += 8;
*((_OWORD *)v8 - 1) = v10;
--v9;
}
while( v9 );
*(_OWORD *)v8 = *v5;
KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
return((__int64(__fastcall *)(char *, PVOID *, _QWORD))xmmword_140C1DE70)(v11, Callers, v2);
}
return result;
}Referenced by:
EtwpTraceStackWalk