RtlStdReleaseStackTrace

PSLIST_ENTRY __fastcall RtlStdReleaseStackTrace(INT64 a1, INT64 a2){
  __int64 v2; 
  int v5; 
  unsigned int v6; 
  _DWORD *v7; 
  UINT64 v8; 
  INT64 v9; 
  INT64 v10; 
  char v11; 
  __int16 v12; 
  __int16 v13; 
  _QWORD *i; 
  unsigned __int64 v15; 
  PSLIST_ENTRY result; 
  v2 = *(unsigned __int16 *)(a2 + 14);
  v5 = 0;
  v6 = 0;
  if( (_WORD)v2 )
  {
    v7 = (_DWORD *)(a2 + 16);
    do
    {
      v6 += *v7;
      v7 += 2;
      --v2;
    }
    while( v2 );
  }
  v8 = v6 % *(_DWORD *)(a1 + 720);
  v9 = a1 + 8 * (v8 + 2 * v8 + 91);
  v10 = v9 + 8;
  KeAcquireSpinLockRaiseToDpc((UINT64 *)(v9 + 8), v8);
  *(_BYTE *)(v9 + 16) = v11;
  v12 = *(_WORD *)(a2 + 8);
  if( (v12 & 0x7FF) != 2047 )
  {
    v13 = v12 ^ (v12 ^ (v12 - 1)) & 0x7FF;
    *(_WORD *)(a2 + 8) = v13;
    if( (v13 & 0x7FF) == 0 )
    {
      for( i = *(_QWORD **)v9; ; i = (_QWORD *)*i )
      {
        if( !i )
        {
          __debugbreak();
          goto LABEL_11;
        }
        if( i == (_QWORD *)a2 )
          break;
        v9 = (INT64)i;
      }
      *(_QWORD *)v9 = *(_QWORD *)a2;
LABEL_11:
      v5 = 1;
    }
  }
  v15 = *(unsigned __int8 *)(v10 + 8);
  KxReleaseSpinLock((UINT64 *)v10);
  result = (PSLIST_ENTRY)(unsigned int)KiIrqlFlags;
  __writecr8(v15);
  if( v5 )
  {
    result = RtlpInterlockedPushEntrySList(
               (PSLIST_HEADER)(a1 + 16 * (((unsigned __int64)*(unsigned __int16 *)(a2 + 8) >> 11) + 13)),
               (PSLIST_ENTRY)(a2 + 16));
    _InterlockedAdd((volatile signed __int32 *)(a1 + 196), 1u);
  }
  return result;
}

Referenced by:

ExInitializeResourceLite
ExpInitializeResource