PipDmgInitReadGroupPolicy

NTSTATUS __stdcall PipDmgInitReadGroupPolicy(){
  INT64 v0; 
  NTSTATUS v1; 
  NTSTATUS RegistryValue; 
  _KEY_VALUE_FULL_INFORMATION *v3; 
  int v4; 
  int v5; 
  __int64 v7; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  VOID *KeyHandle; 
  _KEY_VALUE_FULL_INFORMATION *Information; 

  Information = 0i64;
  v1 = 0;
  memset(&ObjectAttributes.Attributes + 1, 0, 20);
  KeyHandle = 0i64;
  ObjectAttributes.ObjectName = (_UNICODE_STRING *)&v7;
  ObjectAttributes.Attributes = 576;
  if( ZwOpenKey(
         &KeyHandle,
         0x20019ui64,
         &ObjectAttributes,
         v0,
         9961622i64,
         (INT64)L"\\Registry\\Machine\\Software\\Policies\\Microsoft\\Windows\\Kernel DMA Protection",
         48i64,
         0i64) >= 0 )
  {
    RegistryValue = IopGetRegistryValue(KeyHandle, (PWCHAR)L"DeviceEnumerationPolicy", 0i64, &Information);
    v3 = Information;
    if( RegistryValue >= 0 && PnpValidateRegistryDword((__int64)Information) )
    {
      v4 = *(ULONG *)((char *)&v3->TitleIndex + v3->DataOffset);
      if( v4 )
      {
        v5 = v4 - 1;
        if( v5 )
        {
          if( v5 == 1 )
            v1 = 1;
        }
        else
        {
          v1 = 2;
        }
      }
      else
      {
        v1 = 3;
      }
    }
    if( v3 )
      ExFreePoolWithTag(v3, 0);
  }
  if( KeyHandle != (VOID *)-1i64 )
    ZwClose((_HANDLE)KeyHandle);
  return v1;
}

Referenced by:

PipDmgInitPhaseTwo