ExpWnfCheckCrossScopeAccess

NTSTATUS __stdcall ExpWnfCheckCrossScopeAccess(_WNF_STATE_NAME_STRUCT StateName){
  unsigned __int64 v1; 
  NTSTATUS result; 
  VOID **v3; 
  int v4; 
  VOID **StateNameRegistration; 

  StateNameRegistration = 0i64;
  v1 = ((unsigned __int64)StateName._bf_0 >> 6) & 0xF;
  if( (_DWORD)v1 == 3 )
    return 0;
  if( (_DWORD)v1 != 1 || (((unsigned __int64)StateName._bf_0 >> 4) & 3) != 0 )
  {
LABEL_9:
    if( !SeSinglePrivilegeCheck(*(_QWORD *)&SeTcbPrivilege, KeGetCurrentThread()->PreviousMode) )
      return -1073741727;
    return 0;
  }
  result = ExpWnfLookupPermanentName(StateName, &StateNameRegistration);
  if( result < 0 )
    return result;
  v3 = StateNameRegistration;
  v4 = ExpWnfCheckCallerAccess(StateNameRegistration[2], 0x10ui64);
  ExFreePoolWithTag(v3, 0x20666E57u);
  if( v4 < 0 )
  {
    if( v4 != -1073741790 )
      return v4;
    goto LABEL_9;
  }
  return 0;
}

Referenced by:

ExpNtDeleteWnfStateData
ExpNtUpdateWnfStateData
NtQueryWnfStateData
NtQueryWnfStateNameInformation