SepGetSidValuesDump

VOID *__stdcall SepGetSidValuesDump(_SEP_SID_VALUES_BLOCK *SidValues, UINT64 *OutputSize){
  int v2; 
  VOID **PoolWithTag; 
  VOID **v6; 
  unsigned __int8 *p_SidValuesStart; 
  VOID **v8; 
  unsigned int i; 
  unsigned int v10; 

  v2 = 0;
  *(_DWORD *)OutputSize = 0;
  if( !SidValues )
    return 0i64;
  if( !SidValues->SidCount )
    return 0i64;
  PoolWithTag = ExAllocatePoolWithTag(1ui64, SidValues->BlockLength - 24, 1767073107i64);
  v6 = PoolWithTag;
  if( !PoolWithTag )
    return 0i64;
  p_SidValuesStart = (unsigned __int8 *)&SidValues->SidValuesStart;
  v8 = PoolWithTag;
  for( i = 0; i < SidValues->SidCount; v8 = (VOID **)((char *)v8 + v10) )
  {
    v10 = 4 * p_SidValuesStart[1] + 8;
    RtlCopySid(v10, v8, p_SidValuesStart);
    v2 += v10;
    ++i;
    p_SidValuesStart += (4i64 * p_SidValuesStart[1] + 11) & 0xFFFFFFFCi64;
  }
  *(_DWORD *)OutputSize = v2;
  return v6;
}

Referenced by:

SepLogTokenSidManagement