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