IopCallDriverReinitializationRoutines

UINT8 __stdcall IopCallDriverReinitializationRoutines(UINT8 FlushAndEnable){
  UINT8 v1; 
  UINT8 v2; 
  _LIST_ENTRY *v3; 

  v1 = 0;
  v2 = FlushAndEnable;
  if( !FlushAndEnable && !byte_140C50310 )
    return 0;
  while( 1 )
  {
    v3 = IopInterlockedRemoveHeadList((_LIST_ENTRY *)&stru_140C452E0 + 102);
    if( v3 )
    {
      v1 = 1;
      do
      {
        ++LODWORD(v3[1].Flink[3].Flink[1].Flink);
        LODWORD(v3[1].Flink[1].Flink) &= ~8u;
        ((void(__fastcall *)(_LIST_ENTRY *, _LIST_ENTRY *, _QWORD))v3[1].Blink)(
          v3[1].Flink,
          v3[2].Flink,
          LODWORD(v3[1].Flink[3].Flink[1].Flink));
        HalPutDmaAdapter((PADAPTER_OBJECT)v3[1].Flink);
        ExFreePoolWithTag(v3, 0);
        v3 = IopInterlockedRemoveHeadList((_LIST_ENTRY *)&stru_140C452E0 + 102);
      }
      while( v3 );
    }
    if( v2 != 1 )
      break;
    byte_140C50310 = 1;
    v2 = 0;
  }
  return v1;
}

Referenced by:

IopLoadUnloadDriver
PipCallDriverAddDeviceQueryRoutine
PnpCompleteSystemStartProcess