public static void ReadCache(ArrayList alAssems, string name, uint nFlag)
{
IAssemblyEnum ppEnum1 = (IAssemblyEnum)null;
IAssemblyName ppName = (IAssemblyName)null;
IAssemblyName ppEnum2 = (IAssemblyName)null;
IApplicationContext ppAppCtx = (IApplicationContext)null;
if (name != null)
{
int assemblyNameObject = Win32Native.CreateAssemblyNameObject(out ppEnum2, name, 1U, IntPtr.Zero);
if (assemblyNameObject != 0)
{
Marshal.ThrowExceptionForHR(assemblyNameObject);
}
}
int assemblyEnum = Win32Native.CreateAssemblyEnum(out ppEnum1, ppAppCtx, ppEnum2, nFlag, IntPtr.Zero);
if (assemblyEnum != 0)
{
Marshal.ThrowExceptionForHR(assemblyEnum);
}
while (true)
{
string displayName;
do
{
int nextAssembly = ppEnum1.GetNextAssembly(out ppAppCtx, out ppName, 0U);
if (nextAssembly != 0)
{
if (nextAssembly < 0)
{
Marshal.ThrowExceptionForHR(nextAssembly);
return;
}
goto label_10;
}
else
{
displayName = Fusion.GetDisplayName(ppName, 0U);
}
}while (displayName == null);
alAssems.Add((object)displayName);
}
label_10 :;
}