IopCallBootDriverReinitializationRoutines

CHAR __stdcall IopCallBootDriverReinitializationRoutines(){
  CHAR v0; 
  _LIST_ENTRY *v1; 
  PVOID *p_Flink; 
  v0 = 0;
  PnpDiagnosticTrace(&KMPnPEvt_BootDriverReinit_Start, 0i64, 0i64);
  while( 1 )
  {
    v1 = IopInterlockedRemoveHeadList(&IopBootDriverReinitializeQueueHead);
    p_Flink = (PVOID *)&v1->Flink;
    if( !v1 )
      break;
    v0 = 1;
    ++LODWORD(v1[1].Flink[3].Flink[1].Flink);
    LODWORD(v1[1].Flink[1].Flink) &= ~0x20u;
    ((void(__fastcall *)(_LIST_ENTRY *, _LIST_ENTRY *, _QWORD))v1[1].Blink)(
      v1[1].Flink,
      v1[2].Flink,
      LODWORD(v1[1].Flink[3].Flink[1].Flink));
    ObfDereferenceObjectWithTag(p_Flink[2], 0x746C6644ui64);
    ExFreePoolWithTag(p_Flink, 0);
  }
  IopBootDriverReinitCompleted = 1;
  PnpDiagnosticTrace(&KMPnPEvt_BootDriverReinit_Stop, 0i64, 0i64);
  return v0;
}

Referenced by:

IopInitializeBootDrivers