PsMapSystemDlls

NTSTATUS __stdcall PsMapSystemDlls(_EPROCESS *Process, UINT64 UseLargePages){
  unsigned int v2; 
  int v4; 
  int v5; 
  int v6; 
  _EX_FAST_REF **v7; 
  _EX_FAST_REF *v8; 
  _KAPC_STATE ApcState; 

  memset(&ApcState, 0, sizeof(ApcState));
  v2 = UseLargePages;
  v4 = 0;
  if( Process == KeGetCurrentThread()->ApcState.Process )
  {
    v5 = 0;
  }
  else
  {
    v5 = 1;
    KiStackAttachProcess(Process, 0i64, &ApcState);
  }
  v6 = 0;
  v7 = &PspSystemDlls;
  while( 1 )
  {
    v8 = *v7;
    if( *v7
      && (v6 <= 0
       || *((_WORD *)&v8[2]._bf_0 + 1) && Process->WoW64Process && v6 == PsWow64GetProcessNtdllType((INT64)Process)) )
    {
      v4 = PspMapSystemDll(Process, (PSP_SYSTEM_DLL_DATA *)v8, v2, 0i64);
      if( v4 < 0 )
        break;
    }
    ++v6;
    ++v7;
    if( v6 >= 6 )
      goto LABEL_9;
  }
  if( v6 > 0 )
    v4 = -1073741405;
LABEL_9:
  if( v5 )
    KiUnstackDetachProcess(&ApcState, 0i64);
  return v4;
}

Referenced by:

MiMapProcessExecutable