PspThreadOpen

NTSTATUS __stdcall PspThreadOpen(
        _OB_OPEN_REASON OpenReason,
        INT8 AccessMode,
        _EPROCESS *TargetProcess,
        VOID *Object,
        UINT64 *GrantedAccess,
        UINT64 HandleCount){
  BOOL IsParentProcess; 
  _EPROCESS *v10; 
  unsigned int v11; 
  unsigned int v12; 
  int v13; 

  IsParentProcess = PspIsParentProcess((INT64)TargetProcess, *((_QWORD *)Object + 68));
  v12 = v11 & 0xFFFFFFFE;
  if( !IsParentProcess )
    v12 = v11;
  if( (v12 & *(_DWORD *)GrantedAccess) != 0 && PsTestProtectedProcessIncompatibility(AccessMode, TargetProcess, v10)
    || *((_QWORD *)Object + 188)
    && !TargetProcess->PicoContext
    && AccessMode
    && (~HIDWORD(xmmword_140C1DE80) & *(_DWORD *)GrantedAccess) != 0 )
  {
    return -1073741790;
  }
  v13 = *(_DWORD *)GrantedAccess;
  if( (*(_DWORD *)GrantedAccess & 0x40) != 0 )
  {
    v13 |= 0x800u;
    *(_DWORD *)GrantedAccess = v13;
  }
  if( (v13 & 0x20) != 0 )
  {
    v13 |= 0x400u;
    *(_DWORD *)GrantedAccess = v13;
  }
  if( (v13 & 2) != 0 )
    *(_DWORD *)GrantedAccess = v13 | 0x1000;
  return 0;
}

Referenced by:

No references.