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