PspInitializeSystemDlls

VOID __stdcall PspInitializeSystemDlls(){
  int v0; 
  __int64 *v1; 
  _PS_SYSTEM_DLL_INFO *SystemDllInfo; 
  __int64 v3; 
  unsigned int i; 
  __int64 v5; 
  char *ExportedRoutineByName; 

  v0 = 0;
  v1 = &qword_140A98498;
  do
  {
    SystemDllInfo = PsQuerySystemDllInfo((_SYSTEM_DLL_TYPE)v0);
    if( SystemDllInfo )
    {
      v3 = *(v1 - 1);
      for( i = 0;
            i < *(_DWORD *)v1;
            **(_QWORD **)(v3 + 8 * v5 + 8) = &ExportedRoutineByName[*((_QWORD *)SystemDllInfo + 3)
                                                                  - *((_QWORD *)SystemDllInfo + 4)] )
      {
        v5 = 2i64 * i;
        ExportedRoutineByName = (char *)RtlFindExportedRoutineByName(
                                          *((VOID **)SystemDllInfo + 4),
                                          *(INT8 **)(v3 + 16i64 * i));
        if( !ExportedRoutineByName )
          KeBugCheckEx(0x6Bu, (PVOID)0xFFFFFFFFC000007Ai64, (PVOID)6, 0i64, 0i64);
        ++i;
      }
      if( (unsigned int)(v0 - 1) <= 1 )
        *((_QWORD *)PspWow64GetSharedInformation((unsigned int)v0) + 6) = *((_QWORD *)SystemDllInfo + 3);
    }
    ++v0;
    v1 += 2;
  }
  while( v0 < 6 );
}

Referenced by:

PspInitPhase2