ExpQueryModuleInformationEx

INT64 __fastcall ExpQueryModuleInformationEx(INT64 a1, _WORD *a2, UINT64 a3, INT64 a4, UINT64 *a5){
  unsigned int v5; 
  _WORD *v6; 
  INT16 v7; 
  unsigned int v8; 
  unsigned int v9; 
  UINT64 *v10; 
  PVOID *i; 
  unsigned int v12; 
  int v14; 
  v14 = a4;
  v5 = a3;
  v6 = a2;
  v7 = 0;
  v8 = 0;
  v9 = 2;
  if( (unsigned int)a3 < 2 )
  {
    v10 = a5;
    if( a5 )
      *(_DWORD *)a5 = 2;
    v8 = -1073741820;
  }
  else
  {
    *a2 = 0;
    v10 = a5;
  }
  for( i = (PVOID *)PsLoadedModuleList; i != &PsLoadedModuleList; i = (PVOID *)*i )
  {
    v12 = v9 + 320;
    if( v9 + 320 < v9 )
      return 3221225473i64;
    v9 += 320;
    if( v5 < v12 )
    {
      if( v10 )
        *(_DWORD *)v10 = v12;
      v8 = -1073741820;
    }
    else
    {
      *v6 = 320;
      ExpConvertLdrEntryToModuleInfo((INT64)i, v7, (INT64)v6);
      if( v14 )
        *((_DWORD *)v6 + 77) = 0;
      v6 += 160;
      *v6 = 0;
    }
    ++v7;
  }
  if( v10 )
    *(_DWORD *)v10 = v9;
  return v8;
}

Referenced by:

ExpQuerySystemInformation