HalpDmaFinalizeDoubleBufferingDisposition

VOID __stdcall HalpDmaFinalizeDoubleBufferingDisposition(){
  INT64 v0; 
  VOID **v1; 
  char *v2; 
  NTSTATUS v3; 
  VOID **PoolWithTag; 
  size_t v5; 
  unsigned int *v6; 
  __int64 v7; 
  unsigned __int64 v8; 
  INT64 Length; 
  UINT64 Lengtha; 
  UINT64 Lengthb; 
  UINT64 *ResultLength; 
  UINT64 NumberOfBytes; 
  VOID *KeyHandle; 
  _UNICODE_STRING ValueName; 
  __int64 v16[2]; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  char KeyValueInformation[16]; 

  *(&ObjectAttributes.Length + 1) = 0;
  memset(&ObjectAttributes.Attributes + 1, 0, 20);
  LODWORD(NumberOfBytes) = 0;
  v16[1] = (__int64)L"\\Registry\\MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management";
  v1 = 0i64;
  ObjectAttributes.RootDirectory = 0i64;
  ValueName.Buffer = L"DynamicMemory";
  v16[0] = 11141288i64;
  ObjectAttributes.ObjectName = (_UNICODE_STRING *)v16;
  *(_QWORD *)&ValueName.Length = 1835034i64;
  ObjectAttributes.Length = 48;
  ObjectAttributes.Attributes = 576;
  if( !ZwOpenKey(&KeyHandle, 0x20019ui64, &ObjectAttributes, v0, Length, (INT64)ResultLength, NumberOfBytes, 0i64) )
  {
    LODWORD(Lengtha) = 16;
    v2 = KeyValueInformation;
    v3 = ZwQueryValueKey(
           KeyHandle,
           &ValueName,
           KeyValuePartialInformation,
           KeyValueInformation,
           Lengtha,
           &NumberOfBytes);
    if( (v3 == -2147483643 || v3 == -1073741789) && (unsigned int)NumberOfBytes > 0x10 )
    {
      PoolWithTag = ExAllocatePoolWithTag(1ui64, (unsigned int)NumberOfBytes, 543973704i64);
      v1 = PoolWithTag;
      if( !PoolWithTag )
      {
LABEL_7:
        if( KeyHandle )
          ZwClose((_HANDLE)KeyHandle);
        return;
      }
      v2 = (char *)PoolWithTag;
      LODWORD(Lengthb) = NumberOfBytes;
      v3 = ZwQueryValueKey(KeyHandle, &ValueName, KeyValuePartialInformation, PoolWithTag, Lengthb, &NumberOfBytes);
    }
    if( !v3 )
    {
      v5 = *((_DWORD *)v2 + 2);
      v6 = (unsigned int *)(v2 + 12);
      if( v5 < 4 )
      {
        HIDWORD(NumberOfBytes) = 0;
        memmove((char *)&NumberOfBytes + 4, v6, v5);
        v7 = HIDWORD(NumberOfBytes);
      }
      else
      {
        v7 = *v6;
      }
      v8 = (v7 << 30) - 1;
      if( v8 > qword_140C4BA18 )
        qword_140C4BA18 = v8;
    }
    if( v1 )
      ExFreePoolWithTag(v1, 0x206C6148u);
    goto LABEL_7;
  }
}

Referenced by:

HalpDmaInitSystem