SepReferenceCachedTokenHandles

INT64 __fastcall SepReferenceCachedTokenHandles(UINT64 a1, PVOID *a2, INT64 a3){
  NTSTATUS v3; 
  __int64 v4; 
  unsigned int v7; 
  PVOID *v8; 
  UINT64 v10; 
  UINT64 HandleAttributes; 
  UINT64 Options; 
  v3 = 0;
  v4 = 0i64;
  v7 = a1;
  if( (_DWORD)a1 )
  {
    while( 1 )
    {
      v8 = (PVOID *)(a3 + 8 * v4);
      LODWORD(Options) = 2;
      LODWORD(HandleAttributes) = 512;
      LODWORD(v10) = 0;
      v3 = ZwDuplicateObject(
             (PVOID)0xFFFFFFFFFFFFFFFFi64,
             *a2,
             (PVOID)0xFFFFFFFFFFFFFFFFi64,
             v8,
             v10,
             HandleAttributes,
             Options);
      if( v3 < 0 )
        break;
      v4 = (unsigned int)(v4 + 1);
      ++a2;
      if( (unsigned int)v4 >= v7 )
        return(unsigned int)v3;
    }
    for( ; (_DWORD)v4; LODWORD(v4) = v4 - 1 )
      ZwClose(*v8--);
  }
  return(unsigned int)v3;
}

Referenced by:

SepSetTokenCachedHandles