SepGetTokenAccessInformationBufferSize

UINT64 __fastcall SepGetTokenAccessInformationBufferSize(
        _TOKEN *pToken,
        UINT8 UseNewTrust,
        VOID *NewTrustSid,
        UINT64 *pPrivilegeCount,
        UINT64 *pGroupsLength,
        UINT64 *pGroupsSALength,
        UINT64 *pRestrictedSidsLength,
        UINT64 *pRestrictedSidsSALength,
        UINT64 *pPackageSidLength,
        UINT64 *pCapabilitySidsLength,
        UINT64 *pCapabilitySidsSALength,
        UINT64 *pTrustSidLength,
        UINT64 *pSecurityAttributesLength){
  unsigned int v13; 
  __int64 v15; 
  int v16; 
  int v17; 
  unsigned int v18; 
  int v19; 
  int v20; 
  int v21; 
  __int64 *v22; 
  __int64 v23; 
  __int64 v24; 
  int v25; 
  int v26; 
  __int64 v27; 
  unsigned int v28; 
  int v29; 
  __int64 *v31; 
  __int64 v32; 
  __int64 v33; 
  __int64 *v34; 
  __int64 v35; 
  __int64 v36; 
  int v37; 
  int v38; 
  int v39; 
  UINT64 v40; 
  UINT8 v41; 
  UINT64 *v42; 
  v42 = pPrivilegeCount;
  v41 = UseNewTrust;
  v13 = 0;
  LODWORD(v40) = 0;
  v37 = SepTokenPrivilegeCount((INT64)pToken);
  v16 = 12 * v37 + 4;
  if( !v37 )
    v16 = 16;
  v17 = *(_DWORD *)(v15 + 800);
  v39 = v16;
  v18 = *(_DWORD *)(v15 + 124);
  v19 = 16 * *(_DWORD *)(v15 + 128);
  v20 = 16 * v17;
  v21 = 16 * v18;
  v38 = 16 * v18;
  if( v18 )
  {
    v22 = *(__int64 **)(v15 + 152);
    v23 = v18;
    do
    {
      v24 = *v22;
      v22 += 2;
      v21 += (4 * *(unsigned __int8 *)(v24 + 1) + 15) & 0xFFFFFFF8;
      --v23;
    }
    while( v23 );
  }
  v25 = 16 * *(_DWORD *)(v15 + 128);
  if( *(_DWORD *)(v15 + 128) )
  {
    v34 = *(__int64 **)(v15 + 160);
    v35 = *(unsigned int *)(v15 + 128);
    do
    {
      v36 = *v34;
      v34 += 2;
      v25 += (4 * *(unsigned __int8 *)(v36 + 1) + 15) & 0xFFFFFFF8;
      --v35;
    }
    while( v35 );
  }
  v26 = 16 * v17;
  if( v17 )
  {
    v31 = *(__int64 **)(v15 + 792);
    v32 = *(unsigned int *)(v15 + 800);
    do
    {
      v33 = *v31;
      v31 += 2;
      v26 += (4 * *(unsigned __int8 *)(v33 + 1) + 15) & 0xFFFFFFF8;
      --v32;
    }
    while( v32 );
  }
  v27 = *(_QWORD *)(v15 + 784);
  v28 = 0;
  if( v27 )
    v28 = (4 * *(unsigned __int8 *)(v27 + 1) + 15) & 0xFFFFFFF8;
  if( !v41 )
    NewTrustSid = *(VOID **)(v15 + 1104);
  if( NewTrustSid )
    v13 = (4 * *((unsigned __int8 *)NewTrustSid + 1) + 15) & 0xFFFFFFF8;
  AuthzBasepQueryInternalSecurityAttributesToken(*(UINT64 **)(v15 + 776), 0i64, 0i64, &v40);
  *(_DWORD *)v42 = v37;
  *(_DWORD *)pGroupsLength = v21;
  *(_DWORD *)pGroupsSALength = v38;
  v29 = v40;
  *(_DWORD *)pRestrictedSidsLength = v25;
  *(_DWORD *)pRestrictedSidsSALength = v19;
  *(_DWORD *)pPackageSidLength = v28;
  *(_DWORD *)pCapabilitySidsLength = v26;
  *(_DWORD *)pCapabilitySidsSALength = v20;
  *(_DWORD *)pTrustSidLength = v13;
  *(_DWORD *)pSecurityAttributesLength = v29;
  return v21 + 904 + v25 + v28 + v26 + v13 + v29 + v39;
}

Referenced by:

NtQueryInformationToken
SeQueryInformationToken