PiDevCfgMigrateRootDevice

__int64 __fastcall PiDevCfgMigrateRootDevice(__int64 a1, __int64 a2, _DWORD *a3){
  WCHAR *v5; 
  int v7; 
  int v8; 
  unsigned int *v9; 
  UNICODE_STRING ValueName; 
  KEY_VALUE_FULL_INFORMATION *Information; 
  Information = 0i64;
  v5 = *(WCHAR **)(a2 + 8);
  ValueName = 0i64;
  LOBYTE(v7) = 0;
  v8 = PiDevCfgOpenDeviceMigrationKey(v5, (PVOID *)a2);
  if( v8 >= 0 )
  {
    if( IopGetRegistryValue(0i64, (PWCHAR)L"ConfigFlags", 0i64, &Information) >= 0 )
    {
      if( PnpValidateRegistryDword(Information) )
        v7 = *(unsigned int *)((char *)v9 + v9[2]);
      ExFreePoolWithTag(v9, 0);
    }
    if( (v7 & 1) == 0 )
      return(unsigned int)-1073741823;
    ValueName.Buffer = L"DriverInfName";
    *(_DWORD *)&ValueName.Length = 1835034;
    if( PnpRegistryValueExists(0i64, &ValueName) )
      return(unsigned int)-1073741823;
    else
      return(unsigned int)PiDevCfgMigrateDevice(a1, a2, 0i64, 0i64, a3, 0i64);
  }
  return(unsigned int)v8;
}

Referenced by:

PiDevCfgProcessDevice