SepSetTokenPackage

INT64 __fastcall SepSetTokenPackage(INT64 a1, UINT8 *a2){
  VOID *v4; 
  unsigned int v5; 
  void *PoolWithTag; 
  void *v7; 
  void *v8; 
  v4 = *(VOID **)(a1 + 784);
  if( v4 && !RtlIsParentOfChildAppContainer(v4, a2) )
    return 3221225506i64;
  v5 = (4 * a2[1] + 11) & 0xFFFFFFFC;
  PoolWithTag = ExAllocatePoolWithTag(PagedPool, v5, 0x69536553ui64);
  v7 = PoolWithTag;
  if( !PoolWithTag )
    return 3221225626i64;
  RtlCopySid(v5, PoolWithTag, a2);
  v8 = *(void **)(a1 + 784);
  if( v8 )
    ExFreePoolWithTag(v8, 0);
  *(_QWORD *)(a1 + 784) = v7;
  return 0i64;
}

Referenced by:

NtCreateLowBoxToken
SepDuplicateToken
SepFilterToken
SepGetAnonymousToken