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