RtlStdInitializeStackDatabase

INT64 __stdcall RtlStdInitializeStackDatabase(
        PVOID Base,
        UINT64 CommitSize,
        UINT64 ReserveSize,
        _STACK_TRACE_DATABASE **OutputDatabase){
  UINT64 v6; 
  __int64 v7; 
  unsigned __int64 v8; 
  _SLIST_HEADER *v9; 
  char *v10; 
  __int64 v11; 
  __int64 v12; 
  if( CommitSize && (CommitSize != ReserveSize || !Base) )
    return 3221225485i64;
  v6 = 24i64 * (ReserveSize < 0x1000000 ? 5569 : 9551) + 752;
  if( ReserveSize <= v6 || !Base || CommitSize != ReserveSize )
    return 3221225485i64;
  *((_DWORD *)Base + 180) = ReserveSize < 0x1000000 ? 5569 : 9551;
  *((_QWORD *)Base + 21) = (char *)Base + ReserveSize;
  *((_QWORD *)Base + 23) = (char *)Base + ReserveSize;
  *((_BYTE *)Base + 128) = 1;
  *((_QWORD *)Base + 17) = Base;
  memset((INT64)Base + 728, 0i64);
  v7 = 32i64;
  v8 = (v6 + 15) & 0xFFFFFFFFFFFFFFF0ui64;
  v9 = (_SLIST_HEADER *)((char *)Base + 208);
  v10 = (char *)Base + v8;
  *((_QWORD *)Base + 20) = v10;
  *((_QWORD *)Base + 15) = v10;
  do
  {
    InitializeSListHead(v9);
    v9 = (_SLIST_HEADER *)((char *)v9 + 16);
    --v7;
  }
  while( v7 );
  *(_QWORD *)Base = 0i64;
  v11 = 0i64;
  for( *((_BYTE *)Base + 8) = 0; (unsigned int)v11 < *((_DWORD *)Base + 180); *((_BYTE *)Base + 8 * v12 + 744) = 0 )
  {
    v12 = 3 * v11;
    v11 = (unsigned int)(v11 + 1);
    *((_QWORD *)Base + v12 + 92) = 0i64;
  }
  *OutputDatabase = (_STACK_TRACE_DATABASE *)Base;
  return 0i64;
}

Referenced by:

RtlpInitializeStackTraceDatabase