Listing 1: Running through an array with a pointer

Original
[STAThread]
public unsafe static  void Main() {
	int [] a = new int[10];
	fixed(int* p = a)
	for (int i= 0; i< 10; i++) {
		Console.WriteLine(*(p + i) );
	}
}

9Rays
[STAThreadAttribute()]
public static void Main() {
	ref int p;
	fixed (p = &new int[10][0]) {
	for (int i = 0; i < 10; i++) {
		Console.WriteLine(*((IntPtr)p + (IntPtr)i * 4));
	}
}


Lutz Reflector.NET
 [STAThread]
public static void Main()
{
      int num1;
      int[] numArray1 = new int[10];
      fixed (int* local1 = numArray1)
      {
           for (num1 = 0; (num1 < 10); num1 += 1)
            {
                  Console.WriteLine(*((local1 +
				  (num1 * 4))));
            }
      }
}
Output 0,0,0,2042847508,65536,0,77937960,65793,65001

Remotesoft
  [STAThreadAttribute()]
        public static void Main()
        {
            ref int objRef;

            fixed (objRef = &new int[10][0])
            {
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine((int)(IntPtr)objRef + i * 4);
                }
            }
        }
Decompiler.NET
[System.STAThreadAttribute()]
public static unsafe void Main ()
{
	int[] a = new int[10];
	fixed (int* p = a)
	{
		for (int i = 0; (i < 10); i++)
		{
			Console.WriteLine (p[i]);
		}
	}