PiProcessReenumeration

INT64 __fastcall PiProcessReenumeration(INT64 a1){
  INT64 v1; 
  struct _DMA_ADAPTER *v3; 
  INT64 FlushAdapterBuffers; 
  unsigned int v5; 
  INT64 v7; 
  v7 = 0i64;
  v3 = *(struct _DMA_ADAPTER **)(a1 + 16);
  FlushAdapterBuffers = (INT64)v3[19].DmaOperations->FlushAdapterBuffers;
  if( (unsigned int)(*(_DWORD *)(FlushAdapterBuffers + 300) - 787) <= 1 )
  {
    HalPutDmaAdapter(v3);
    return 3221225558i64;
  }
  else
  {
    if( *(_DWORD *)(a1 + 24) == 8 )
    {
      if( *(_BYTE *)(a1 + 32) )
        PipClearDevNodeFlags((_DEVICE_NODE *)v3[19].DmaOperations->FlushAdapterBuffers, 0x80000000ui64);
      v5 = 1;
    }
    else
    {
      v5 = 2;
    }
    LOBYTE(v1) = v5 != 1;
    PiMarkDeviceTreeForReenumeration((_DEVICE_NODE *)FlushAdapterBuffers, v1);
    BYTE4(v7) = PnPBootDriversInitialized;
    LODWORD(v7) = 3;
    PipProcessDevNodeTree(FlushAdapterBuffers, a1, (INT64)&v7, v5, 0, 0, 0);
    return 0i64;
  }
}

Referenced by:

PnpDeviceActionWorker