// Decompiled with JetBrains decompiler // Type: . // Assembly: AudioHD, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: A79492AA-5FAA-4ED2-ACC6-3D90AD665D99 // Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Trojan-Dropper.Win32.Sysn.awyx-36fae8d04bf5f7d873dd5aa10ad92403f80b9af8b6ef91319e70ea2c9c043024.exe using \u0004; using \u0005; using \u0006; using \u0007; using System; using System.Collections; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; using System.Threading; namespace \u0007 { internal sealed class \u0006 : IDisposable, \u0001 { private IConnectionPointContainer \u0001; private ArrayList \u0001; private IConnectionPoint \u0001; private void \u000F() { IConnectionPoint ppCP = (IConnectionPoint) null; Guid riid = new Guid(new byte[16] { (byte) 91, (byte) 117, (byte) 36, (byte) 56, (byte) 171, (byte) 240, (byte) 154, (byte) 64, (byte) 163, (byte) 13, (byte) 20, (byte) 184, (byte) 16, (byte) 125, (byte) 224, (byte) 234 }); this.\u0001.FindConnectionPoint(ref riid, out ppCP); this.\u0001 = ppCP; this.\u0001 = new ArrayList(); } public virtual void add_OnGroupAdded([In] \u0002 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnGroupAdded([In] \u0002 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnGroupRemoved([In] \u0003 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnGroupRemoved([In] \u0003 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnGroupNameChanged([In] \u0004.\u0004 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnGroupNameChanged([In] \u0004.\u0004 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnContactAddedToGroup([In] \u0004.\u0005 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnContactAddedToGroup([In] \u0004.\u0005 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnContactRemovedFromGroup([In] \u0004.\u0006 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnContactRemovedFromGroup([In] \u0004.\u0006 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnIMWindowCreated([In] \u0004.\u0007 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnIMWindowCreated([In] \u0004.\u0007 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnIMWindowDestroyed([In] \u0008 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnIMWindowDestroyed([In] \u0008 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnIMWindowContactAdded([In] \u0001 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnIMWindowContactAdded([In] \u0001 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnIMWindowContactRemoved([In] \u0002 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnIMWindowContactRemoved([In] \u0002 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnAppShutdown([In] \u0003 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnAppShutdown([In] \u0003 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnSignin([In] \u0005.\u0004 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnSignin([In] \u0005.\u0004 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnSignout([In] \u0005.\u0005 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnSignout([In] \u0005.\u0005 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnContactListAdd([In] \u0005.\u0006 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnContactListAdd([In] \u0005.\u0006 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnContactListRemove([In] \u0005.\u0007 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnContactListRemove([In] \u0005.\u0007 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnMyFriendlyNameChange([In] \u0008 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnMyFriendlyNameChange([In] \u0008 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnMyStatusChange([In] \u0001 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnMyStatusChange([In] \u0001 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnMyPhoneChange([In] \u0002 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnMyPhoneChange([In] \u0002 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnMyPropertyChange([In] \u0003 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnMyPropertyChange([In] \u0003 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnContactFriendlyNameChange([In] \u0006.\u0004 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnContactFriendlyNameChange([In] \u0006.\u0004 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnContactStatusChange([In] \u0006.\u0005 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnContactStatusChange([In] \u0006.\u0005 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnContactPropertyChange([In] \u0006.\u0006 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnContactPropertyChange([In] \u0006.\u0006 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnContactBlockChange([In] \u0006.\u0007 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnContactBlockChange([In] \u0006.\u0007 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnContactPagerChange([In] \u0008 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnContactPagerChange([In] \u0008 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnContactPhoneChange([In] \u0001 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnContactPhoneChange([In] \u0001 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnUnreadEmailChange([In] \u0002 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnUnreadEmailChange([In] \u0002 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public virtual void add_OnEmoticonListChange([In] \u0003 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) this.\u000F(); \u0007.\u0005 pUnkSink = new \u0007.\u0005(); int pdwCookie = 0; this.\u0001.Advise((object) pUnkSink, out pdwCookie); pUnkSink.\u0001 = pdwCookie; pUnkSink.\u0001 = obj0; this.\u0001.Add((object) pUnkSink); } finally { Monitor.Exit((object) this); } } public virtual void remove_OnEmoticonListChange([In] \u0003 obj0) { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 >= count) return; do { \u0007.\u0005 obj = (\u0007.\u0005) this.\u0001[index]; if (obj.\u0001 != null && ((obj.\u0001.Equals((object) obj0) ? 1 : 0) & (int) byte.MaxValue) != 0) { this.\u0001.RemoveAt(index); this.\u0001.Unadvise(obj.\u0001); if (count <= 1) { Marshal.ReleaseComObject((object) this.\u0001); this.\u0001 = (IConnectionPoint) null; this.\u0001 = (ArrayList) null; return; } goto label_4; } else ++index; } while (index < count); goto label_11; label_4: return; label_11:; } finally { Monitor.Exit((object) this); } } public override void Finalize() { Monitor.Enter((object) this); try { if (this.\u0001 == null) return; int count = this.\u0001.Count; int index = 0; if (0 < count) { do { this.\u0001.Unadvise(((\u0007.\u0005) this.\u0001[index]).\u0001); ++index; } while (index < count); } Marshal.ReleaseComObject((object) this.\u0001); } catch (Exception ex) { } finally { Monitor.Exit((object) this); } } public virtual void Dispose() { this.Finalize(); GC.SuppressFinalize((object) this); } } }