ArbInitializeMmConfigRange

NTSTATUS __stdcall ArbInitializeMmConfigRange(PVOID Data){
  NTSTATUS result; 
  int v3; 
  UINT64 DataSize; 
  struct _UNICODE_STRING ValueName; 
  struct _OBJECT_ATTRIBUTES ObjectAttributes; 
  void *KeyHandle; 
  HANDLE Handle; 
  KeyHandle = 0i64;
  *(&ObjectAttributes.Length + 1) = 0;
  memset(&ObjectAttributes.Attributes + 1, 0, 20);
  Handle = 0i64;
  *(_DWORD *)(&ValueName.MaximumLength + 1) = 0;
  ObjectAttributes.RootDirectory = 0i64;
  ValueName.Buffer = L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Arbiters";
  *(_DWORD *)&ValueName.Length = 7733366;
  ObjectAttributes.ObjectName = &ValueName;
  ObjectAttributes.Length = 48;
  ObjectAttributes.Attributes = 576;
  result = ZwOpenKey(&KeyHandle, 0x2001Fu, &ObjectAttributes);
  if( result >= 0 )
  {
    *(_DWORD *)&ValueName.Length = 2228258;
    ValueName.Buffer = L"ReservedResources";
    ObjectAttributes.RootDirectory = KeyHandle;
    ObjectAttributes.Length = 48;
    ObjectAttributes.ObjectName = &ValueName;
    ObjectAttributes.Attributes = 576;
    *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
    v3 = ZwOpenKey(&Handle, 0x2001Fu, &ObjectAttributes);
    if( v3 >= 0 )
    {
      ValueName.Buffer = L"MmConfigRange";
      LODWORD(DataSize) = *(_DWORD *)Data;
      *(_DWORD *)&ValueName.Length = 1703962;
      v3 = ZwSetValueKey(Handle, &ValueName, 0i64, 0xAui64, Data, DataSize);
      ZwClose(Handle);
    }
    ZwClose(KeyHandle);
    return v3;
  }
  return result;
}

Referenced by:

HalpPciReportMmConfigAddressRange