// Decompiled with JetBrains decompiler
// Type: SmartAssembly.SmartExceptionsCore.SmartStackFrame
// Assembly: Idm, Version=6.5.8.1, Culture=neutral, PublicKeyToken=null
// MVID: 8A2CC06E-B699-4A98-98EE-08831FC9C995
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00001-msil\Backdoor.Win32.DarkKomet.gwon-35b4a84324681a1000c14cf114b6f94ada34eb6c6ca38b9a4584b31e742aece3.exe

using \u0003;
using System;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;

namespace SmartAssembly.SmartExceptionsCore
{
  [Serializable]
  public class SmartStackFrame : ISerializable
  {
    public const string NotSerializable = "Non-serializable object's string representation: '{0}'";
    public readonly int MethodID;
    public readonly object[] Objects;
    public readonly int ILOffset;
    public readonly int ExceptionStackDepth;

    public virtual void GetObjectData([In] SerializationInfo obj0, [In] StreamingContext obj1)
    {
      obj0.AddValue(\u0002.\u0002\u0002(2144), (object) this.MethodID, typeof (int));
      // ISSUE: type reference
      \u0001\u0004.\u007E\u008E\u0005((object) obj0, \u0002.\u0002\u0002(2181), (object) this.ILOffset, \u0082\u0003.\u008C\u0003(__typeref (int)));
      // ISSUE: type reference
      \u0001\u0004.\u007E\u008E\u0005((object) obj0, \u0002.\u0002\u0002(2218), (object) this.ExceptionStackDepth, \u0082\u0003.\u008C\u0003(__typeref (int)));
      int num1 = this.Objects == null ? 0 : this.Objects.Length;
      if (true)
        goto label_8;
label_1:
      int num2;
      // ISSUE: type reference
      \u0001\u0004.\u007E\u008E\u0005((object) obj0, \u0002.\u0002\u0002(2271), (object) num2, \u0082\u0003.\u008C\u0003(__typeref (int)));
      if (true)
        goto label_9;
label_7:
      int index;
      for (; index < num2; ++index)
      {
        string str1 = \u0097\u0002.\u001B\u0002(\u0002.\u0002\u0002(2316), (object) index);
        if (true)
          goto label_10;
label_4:
        string str2;
        try
        {
          SmartStackFrame.\u0006\u0002(obj0, str2, this.Objects[index]);
          continue;
        }
        catch (Exception ex)
        {
          object obj = (object) \u0002.\u0002\u0002(2361);
          SmartStackFrame.\u0006\u0002(obj0, str2, obj);
          continue;
        }
label_10:
        str2 = str1;
        goto label_4;
      }
      return;
label_9:
      index = 0;
      goto label_7;
label_8:
      num2 = num1;
      goto label_1;
    }

    private static void \u0006\u0002([In] SerializationInfo obj0, [In] string obj1, [In] object obj2)
    {
      try
      {
        if (obj2.GetType().IsSerializable)
          goto label_3;
label_2:
        obj2 = (object) \u0097\u0002.\u001B\u0002(\u0002.\u0002\u0002(2462), obj2);
label_3:
        if (true)
        {
          // ISSUE: type reference
          \u0001\u0004.\u007E\u008E\u0005((object) obj0, obj1, obj2, \u0082\u0003.\u008C\u0003(__typeref (object)));
        }
        else
          goto label_2;
      }
      catch (SerializationException ex)
      {
        do
        {
          // ISSUE: type reference
          \u0001\u0004.\u007E\u008E\u0005((object) obj0, obj1, (object) \u0097\u0002.\u001B\u0002(\u0002.\u0002\u0002(2462), obj2), \u0082\u0003.\u008C\u0003(__typeref (object)));
        }
        while (false);
      }
    }

    internal SmartStackFrame([In] SerializationInfo obj0, [In] StreamingContext obj1)
    {
      this.MethodID = \u0095\u0002.\u007E\u0090\u0005((object) obj0, \u0002.\u0002\u0002(2144));
      this.ILOffset = \u0095\u0002.\u007E\u0090\u0005((object) obj0, \u0002.\u0002\u0002(2181));
      this.ExceptionStackDepth = \u0095\u0002.\u007E\u0090\u0005((object) obj0, \u0002.\u0002\u0002(2218));
      int length = \u0095\u0002.\u007E\u0090\u0005((object) obj0, \u0002.\u0002\u0002(2271));
      this.Objects = new object[length];
      for (int index = 0; index < length; ++index)
      {
        try
        {
          // ISSUE: type reference
          this.Objects[index] = \u0002\u0004.\u007E\u008F\u0005((object) obj0, \u0097\u0002.\u001B\u0002(\u0002.\u0002\u0002(2316), (object) index), \u0082\u0003.\u008C\u0003(__typeref (object)));
        }
        catch (Exception ex)
        {
          this.Objects[index] = (object) \u0002.\u0002\u0002(2535);
        }
      }
    }

    internal SmartStackFrame([In] int obj0, [In] object[] obj1, [In] int obj2, [In] int obj3)
    {
      this.MethodID = obj0;
      this.ExceptionStackDepth = obj3;
      this.ILOffset = obj2;
      this.Objects = obj1;
    }
  }
}
