HalpWdatProcessWdrtInternalData
NTSTATUS __fastcall HalpWdatProcessWdrtInternalData(__int64 a1, _DWORD *a2, _DWORD *a3, _BYTE *r9_0){
unsigned int v5;
int v7;
int v8;
NTSTATUS result;
_LARGE_INTEGER v10;
_WD_HARDWARE_REGISTER a4;
a4.Write = 0i64;
v5 = *(unsigned __int16 *)(a1 + 68);
a2[5] = 1;
*(_OWORD *)&a4.PhysicalAddress.anonymous_0.LowPart = 0i64;
if( v5 < 0x1FF )
v5 = 511;
a2[4] = v5;
v7 = *(unsigned __int8 *)(a1 + 70);
*(_OWORD *)&a4.Address = 0i64;
if( v7 )
{
v8 = v7 - 1;
if( v8 )
{
if( v8 != 1 )
return -1073741811;
a2[6] = 10;
}
else
{
a2[6] = 100;
}
}
else
{
a2[6] = 1000;
}
LOBYTE(a2) = *(_BYTE *)(a1 + 36);
v10 = *(_LARGE_INTEGER *)(a1 + 40);
*a3 = 1072;
result = WdHwCreateHardwareRegister(v10, (INT64)a2, 3u, &a4);
if( result >= 0 )
{
a4.Read(a4.Address);
WdHwDestroyHardwareRegister((INT64)&a4);
result = 0;
*r9_0 = 1;
}
else
{
*r9_0 = 0;
}
return result;
}Referenced by:
HalpWdatDiscover