SepIsParentOfChildAppContainer

UINT8 __stdcall SepIsParentOfChildAppContainer(UINT64 SessionId, UINT64 LowboxNumber1, UINT64 LowboxNumber2){
  unsigned int v3; 
  unsigned int v4; 
  unsigned int v5; 
  UINT8 IsParentOfChildAppContainer; 
  char v7; 
  _ETHREAD *CurrentThread; 
  _ETHREAD *v9; 
  _SEP_LOWBOX_NUMBER_MAPPING *v10; 
  _SEP_LOWBOX_NUMBER_ENTRY *MatchingEntry2; 
  _SEP_LOWBOX_NUMBER_ENTRY *MatchingEntry1; 
  _SEP_LOWBOX_NUMBER_MAPPING *LowboxMap; 

  v3 = SessionId;
  LowboxMap = 0i64;
  v4 = LowboxNumber2;
  MatchingEntry1 = 0i64;
  v5 = LowboxNumber1;
  MatchingEntry2 = 0i64;
  IsParentOfChildAppContainer = 0;
  v7 = 0;
  if( (_DWORD)LowboxNumber1 && (_DWORD)LowboxNumber2 )
  {
    if( (unsigned int)SessionId >= 5 )
    {
      CurrentThread = (_ETHREAD *)KeGetCurrentThread();
      --CurrentThread->Tcb.KernelApcDisable;
      ExAcquirePushLockSharedEx(&stru_140C25D50, 0i64);
      v7 = 1;
      if( SepGetTokenSessionMapEntry(v3, 0, &LowboxMap) < 0 )
      {
LABEL_11:
        if( _InterlockedCompareExchange64(&stru_140C25D50._bf_0, 0i64, 17i64) != 17 )
          ExfReleasePushLockShared(&stru_140C25D50);
        KeAbPostRelease(&stru_140C25D50);
        KeLeaveCriticalRegionThread(KeGetCurrentThread());
        return IsParentOfChildAppContainer;
      }
    }
    else
    {
      LowboxMap = (_SEP_LOWBOX_NUMBER_MAPPING *)((char *)&unk_140C25C80 + 40 * (unsigned int)SessionId);
    }
    v9 = (_ETHREAD *)KeGetCurrentThread();
    --v9->Tcb.KernelApcDisable;
    v10 = LowboxMap;
    ExAcquirePushLockExclusiveEx(&LowboxMap->Lock, 0i64);
    if( SepFindMatchingLowBoxNumberEntries(v10->HashTable, v5, v4, &MatchingEntry1, &MatchingEntry2) >= 0 )
      IsParentOfChildAppContainer = RtlIsParentOfChildAppContainer(
                                      MatchingEntry1->PackageSid,
                                      MatchingEntry2->PackageSid);
    if( (_InterlockedExchangeAdd64(&v10->Lock._bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock(&LowboxMap->Lock);
    KeAbPostRelease(LowboxMap);
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
    if( !v7 )
      return IsParentOfChildAppContainer;
    goto LABEL_11;
  }
  return 0;
}

Referenced by:

SeIsParentOfChildAppContainer