Files
raton4.0-source/Client/Costura/AssemblyLoader.cs
T
2026-08-27 11:23:13 -06:00

210 lines
8.4 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Costura.AssemblyLoader
// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510
// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Threading;
#nullable disable
namespace Costura;
[CompilerGenerated]
internal static class AssemblyLoader
{
private static object nullCacheLock = new object();
private static Dictionary<string, bool> nullCache = new Dictionary<string, bool>();
private static Dictionary<string, string> assemblyNames = new Dictionary<string, string>();
private static Dictionary<string, string> symbolNames = new Dictionary<string, string>();
private static int isAttached;
private static string CultureToString(CultureInfo culture)
{
return culture == null ? string.Empty : culture.Name;
}
private static Assembly ReadExistingAssembly(AssemblyName name)
{
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
{
AssemblyName name1 = assembly.GetName();
// ISSUE: reference to a compiler-generated method
// ISSUE: reference to a compiler-generated method
if (string.Equals(name1.Name, name.Name, StringComparison.InvariantCultureIgnoreCase) && string.Equals(AssemblyLoader.CultureToString(name1.CultureInfo), AssemblyLoader.CultureToString(name.CultureInfo), StringComparison.InvariantCultureIgnoreCase))
return assembly;
}
return (Assembly) null;
}
private static string GetAssemblyResourceName(AssemblyName requestedAssemblyName)
{
string lowerInvariant = requestedAssemblyName.Name.ToLowerInvariant();
if (requestedAssemblyName.CultureInfo != null && !string.IsNullOrEmpty(requestedAssemblyName.CultureInfo.Name))
{
// ISSUE: reference to a compiler-generated method
lowerInvariant = $"{AssemblyLoader.CultureToString(requestedAssemblyName.CultureInfo)}.{lowerInvariant}".ToLowerInvariant();
}
return lowerInvariant;
}
private static void CopyTo(Stream source, Stream destination)
{
byte[] buffer = new byte[81920 /*0x014000*/];
int count;
while ((count = source.Read(buffer, 0, buffer.Length)) != 0)
destination.Write(buffer, 0, count);
}
private static Stream LoadStream(string fullName)
{
Assembly executingAssembly = Assembly.GetExecutingAssembly();
if (!fullName.EndsWith(".compressed"))
return executingAssembly.GetManifestResourceStream(fullName);
using (Stream manifestResourceStream = executingAssembly.GetManifestResourceStream(fullName))
{
using (DeflateStream source = new DeflateStream(manifestResourceStream, CompressionMode.Decompress))
{
MemoryStream destination = new MemoryStream();
// ISSUE: reference to a compiler-generated method
AssemblyLoader.CopyTo((Stream) source, (Stream) destination);
destination.Position = 0L;
return (Stream) destination;
}
}
}
private static Stream LoadStream(Dictionary<string, string> resourceNames, string name)
{
string fullName;
// ISSUE: reference to a compiler-generated method
return resourceNames.TryGetValue(name, out fullName) ? AssemblyLoader.LoadStream(fullName) : (Stream) null;
}
private static byte[] ReadStream(Stream stream)
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
return buffer;
}
private static Assembly ReadFromEmbeddedResources(
Dictionary<string, string> assemblyNames,
Dictionary<string, string> symbolNames,
AssemblyName requestedAssemblyName)
{
// ISSUE: reference to a compiler-generated method
string assemblyResourceName = AssemblyLoader.GetAssemblyResourceName(requestedAssemblyName);
byte[] rawAssembly;
// ISSUE: reference to a compiler-generated method
using (Stream stream = AssemblyLoader.LoadStream(assemblyNames, assemblyResourceName))
{
if (stream == null)
return (Assembly) null;
// ISSUE: reference to a compiler-generated method
rawAssembly = AssemblyLoader.ReadStream(stream);
}
// ISSUE: reference to a compiler-generated method
using (Stream stream = AssemblyLoader.LoadStream(symbolNames, assemblyResourceName))
{
if (stream != null)
{
// ISSUE: reference to a compiler-generated method
byte[] rawSymbolStore = AssemblyLoader.ReadStream(stream);
return Assembly.Load(rawAssembly, rawSymbolStore);
}
}
return Assembly.Load(rawAssembly);
}
public static Assembly ResolveAssembly(object sender, ResolveEventArgs e)
{
string name = e.Name;
AssemblyName assemblyName = new AssemblyName(name);
// ISSUE: reference to a compiler-generated field
lock (AssemblyLoader.nullCacheLock)
{
// ISSUE: reference to a compiler-generated field
if (AssemblyLoader.nullCache.ContainsKey(name))
return (Assembly) null;
}
// ISSUE: reference to a compiler-generated method
Assembly assembly1 = AssemblyLoader.ReadExistingAssembly(assemblyName);
if ((object) assembly1 != null)
return assembly1;
// ISSUE: reference to a compiler-generated field
// ISSUE: reference to a compiler-generated field
// ISSUE: reference to a compiler-generated method
Assembly assembly2 = AssemblyLoader.ReadFromEmbeddedResources(AssemblyLoader.assemblyNames, AssemblyLoader.symbolNames, assemblyName);
if ((object) assembly2 == null)
{
// ISSUE: reference to a compiler-generated field
lock (AssemblyLoader.nullCacheLock)
{
// ISSUE: reference to a compiler-generated field
AssemblyLoader.nullCache[name] = true;
}
if ((assemblyName.Flags & AssemblyNameFlags.Retargetable) != AssemblyNameFlags.None)
assembly2 = Assembly.Load(assemblyName);
}
return assembly2;
}
static AssemblyLoader()
{
// ISSUE: reference to a compiler-generated field
AssemblyLoader.assemblyNames.Add("costura", "costura.costura.dll.compressed");
// ISSUE: reference to a compiler-generated field
AssemblyLoader.symbolNames.Add("costura", "costura.costura.pdb.compressed");
// ISSUE: reference to a compiler-generated field
AssemblyLoader.assemblyNames.Add("messagepacklib", "costura.messagepacklib.dll.compressed");
// ISSUE: reference to a compiler-generated field
AssemblyLoader.assemblyNames.Add("system.buffers", "costura.system.buffers.dll.compressed");
}
public static void Attach(bool subscribe)
{
// ISSUE: reference to a compiler-generated field
if (Interlocked.Exchange(ref AssemblyLoader.isAttached, 1) == 1 || !subscribe)
return;
AppDomain.CurrentDomain.AssemblyResolve += (ResolveEventHandler) ((sender, e) =>
{
string name = e.Name;
AssemblyName assemblyName = new AssemblyName(name);
// ISSUE: reference to a compiler-generated field
lock (AssemblyLoader.nullCacheLock)
{
// ISSUE: reference to a compiler-generated field
if (AssemblyLoader.nullCache.ContainsKey(name))
return (Assembly) null;
}
// ISSUE: reference to a compiler-generated method
Assembly assembly1 = AssemblyLoader.ReadExistingAssembly(assemblyName);
if ((object) assembly1 != null)
return assembly1;
// ISSUE: reference to a compiler-generated field
// ISSUE: reference to a compiler-generated field
// ISSUE: reference to a compiler-generated method
Assembly assembly2 = AssemblyLoader.ReadFromEmbeddedResources(AssemblyLoader.assemblyNames, AssemblyLoader.symbolNames, assemblyName);
if ((object) assembly2 == null)
{
// ISSUE: reference to a compiler-generated field
lock (AssemblyLoader.nullCacheLock)
{
// ISSUE: reference to a compiler-generated field
AssemblyLoader.nullCache[name] = true;
}
if ((assemblyName.Flags & AssemblyNameFlags.Retargetable) != AssemblyNameFlags.None)
assembly2 = Assembly.Load(assemblyName);
}
return assembly2;
});
}
}