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