ExpQueryModuleInformationEx

__int64 __fastcall ExpQueryModuleInformationEx(__int64 a1, _WORD *a2, unsigned int a3, int a4, unsigned int *a5){
  _WORD *v6; 
  __int16 v7; 
  unsigned int v8; 
  unsigned int v9; 
  unsigned int *v10; 
  INT64 *i; 
  unsigned int v12; 

  v6 = a2;
  v7 = 0;
  v8 = 0;
  v9 = 2;
  if( a3 < 2 )
  {
    v10 = a5;
    if( a5 )
      *a5 = 2;
    v8 = -1073741820;
  }
  else
  {
    *a2 = 0;
    v10 = a5;
  }
  for( i = (INT64 *)PsLoadedModuleList; i != &PsLoadedModuleList; i = (INT64 *)*i )
  {
    v12 = v9 + 320;
    if( v9 + 320 < v9 )
      return 3221225473i64;
    v9 += 320;
    if( a3 < v12 )
    {
      if( v10 )
        *v10 = v12;
      v8 = -1073741820;
    }
    else
    {
      *v6 = 320;
      ExpConvertLdrEntryToModuleInfo((__int64)i, v7, (__int64)v6);
      if( a4 )
        *((_DWORD *)v6 + 77) = 0;
      v6 += 160;
      *v6 = 0;
    }
    ++v7;
  }
  if( v10 )
    *v10 = v9;
  return v8;
}

Referenced by:

ExpQuerySystemInformation