WdipAccessCheck

NTSTATUS __stdcall WdipAccessCheck(){
  VOID **v0; 
  unsigned int v1; 
  VOID **PoolWithTag; 
  VOID **v3; 
  unsigned __int8 *v5; 
  unsigned int v6; 
  VOID **v7; 
  _ACL *v8; 
  UINT64 v9; 
  _KPROCESSOR_MODE AccessMode; 
  int AccessStatus; 
  _SID_IDENTIFIER_AUTHORITY IdentifierAuthority; 
  unsigned int GrantedAccess; 
  _SECURITY_SUBJECT_CONTEXT SubjectContext; 
  _GENERIC_MAPPING GenericMapping; 

  *(_DWORD *)IdentifierAuthority.Value = 0;
  *(_WORD *)&IdentifierAuthority.Value[4] = 1280;
  v0 = 0i64;
  GenericMapping.GenericRead = 131073;
  GrantedAccess = 0;
  GenericMapping.GenericWrite = 0x20000;
  GenericMapping.GenericExecute = 0x20000;
  GenericMapping.GenericAll = 2031617;
  memset(&SubjectContext, 0, sizeof(SubjectContext));
  v1 = RtlLengthRequiredSid(6ui64);
  PoolWithTag = ExAllocatePoolWithTag(1ui64, v1, 1934181463i64);
  v3 = PoolWithTag;
  if( !PoolWithTag )
    return -1073741670;
  AccessStatus = RtlInitializeSid(PoolWithTag, &IdentifierAuthority, 6u);
  if( AccessStatus >= 0 )
  {
    v5 = (unsigned __int8 *)SeLocalSystemSid;
    *((_DWORD *)v3 + 2) = 80;
    *((_DWORD *)v3 + 3) = -1324354722;
    *((_DWORD *)v3 + 4) = 78537857;
    *((_DWORD *)v3 + 5) = 698502321;
    *((_DWORD *)v3 + 6) = 558674196;
    *((_DWORD *)v3 + 7) = 1451644582;
    v6 = 4 * (*((unsigned __int8 *)v3 + 1) + *((unsigned __int8 *)SeAliasAdminsSid + 1) + v5[1]) + 108;
    v7 = ExAllocatePoolWithTag(1ui64, v6, 1934181463i64);
    v0 = v7;
    if( v7 )
    {
      v8 = (_ACL *)(v7 + 5);
      AccessStatus = RtlCreateSecurityDescriptor(v7, 1ui64);
      if( AccessStatus >= 0 )
      {
        AccessStatus = RtlCreateAcl(v8, (_ACL)(v6 - 40), 2ui64, v9);
        if( AccessStatus >= 0 )
        {
          AccessStatus = RtlAddAccessAllowedAce(v8, 2ui64, 1, SeAliasAdminsSid);
          if( AccessStatus >= 0 )
          {
            AccessStatus = RtlAddAccessAllowedAce(v8, 2ui64, 1, SeLocalSystemSid);
            if( AccessStatus >= 0 )
            {
              AccessStatus = RtlAddAccessAllowedAce(v8, 2ui64, 1, v3);
              if( AccessStatus >= 0 )
              {
                AccessStatus = RtlSetDaclSecurityDescriptor(v0, 1u, v8, 0);
                if( AccessStatus >= 0 )
                {
                  SeCaptureSubjectContext((INT64)&SubjectContext);
                  LOBYTE(AccessMode) = 1;
                  SeAccessCheck(
                    v0,
                    &SubjectContext,
                    0,
                    1,
                    0,
                    0i64,
                    &GenericMapping,
                    AccessMode,
                    &GrantedAccess,
                    &AccessStatus);
                  SeReleaseSubjectContext(&SubjectContext);
                }
              }
            }
          }
        }
      }
    }
    else
    {
      AccessStatus = -1073741670;
    }
  }
  ExFreePoolWithTag(v3, 0);
  if( v0 )
    ExFreePoolWithTag(v0, 0);
  return AccessStatus;
}

Referenced by:

WdiUpdateSem