public static bool DownloadPE()
        {
            PICkitFunctions.RunScript(0, 1);
            PICkitFunctions.ExecuteScript(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].DebugWriteVectorScript);
            if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgMemWrPrepScript != 0)
            {
                PICkitFunctions.DownloadAddress3(8388608);
                PICkitFunctions.RunScript(6, 1);
            }
            int num  = 0;
            int num2 = 0;

            byte[] array = new byte[64];
            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    num2 = 0;
                    if (j == 0)
                    {
                        array[num2++] = 167;
                    }
                    array[num2++] = 168;
                    array[num2++] = 48;
                    for (int k = 0; k < 16; k++)
                    {
                        array[num2++] = (byte)(PIC24_PE_Code[num] & 0xFF);
                        array[num2++] = (byte)((PIC24_PE_Code[num] >> 8) & 0xFF);
                        array[num2++] = (byte)((PIC24_PE_Code[num] >> 16) & 0xFF);
                        num++;
                    }
                    for (; num2 < 64; num2++)
                    {
                        array[num2] = 173;
                    }
                    PICkitFunctions.writeUSB(array);
                }
                num2          = 0;
                array[num2++] = 166;
                array[num2++] = 0;
                array[num2++] = 212;
                array[num2++] = 0;
                array[num2++] = 211;
                array[num2++] = 1;
                array[num2++] = 212;
                array[num2++] = 3;
                array[num2++] = 211;
                array[num2++] = 2;
                array[num2++] = 217;
                array[num2++] = 128;
                array[num2++] = 11;
                array[num2++] = 187;
                array[num2++] = 216;
                array[num2++] = 216;
                array[num2++] = 217;
                array[num2++] = 129;
                array[num2++] = 155;
                array[num2++] = 187;
                array[num2++] = 216;
                array[num2++] = 216;
                array[num2++] = 217;
                array[num2++] = 130;
                array[num2++] = 139;
                array[num2++] = 187;
                array[num2++] = 216;
                array[num2++] = 216;
                array[num2++] = 217;
                array[num2++] = 131;
                array[num2++] = 27;
                array[num2++] = 187;
                array[num2++] = 216;
                array[num2++] = 216;
                array[num2++] = 233;
                array[num2++] = 32;
                array[num2++] = 31;
                array[num2++] = 217;
                array[num2++] = 97;
                array[num2++] = 231;
                array[num2++] = 168;
                array[num2++] = 216;
                array[num2++] = 217;
                array[num2++] = 0;
                array[num2++] = 2;
                array[num2++] = 4;
                array[num2++] = 216;
                array[num2++] = 233;
                array[num2++] = 1;
                array[num2++] = 3;
                array[num2++] = 231;
                array[num2++] = 72;
                array[1]      = (byte)(num2 - 2);
                for (; num2 < 64; num2++)
                {
                    array[num2] = 173;
                }
                PICkitFunctions.writeUSB(array);
            }
            if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgMemWrPrepScript != 0)
            {
                PICkitFunctions.DownloadAddress3(8388608);
                PICkitFunctions.RunScript(5, 1);
            }
            byte[] array2 = new byte[128];
            num = 0;
            for (int l = 0; l < 16; l++)
            {
                PICkitFunctions.RunScriptUploadNoLen(3, 1);
                Array.Copy(PICkitFunctions.Usb_read_array, 1L, array2, 0L, 64L);
                PICkitFunctions.UploadDataNoLen();
                Array.Copy(PICkitFunctions.Usb_read_array, 1L, array2, 64L, 64L);
                int num3 = 0;
                for (int m = 0; m < 32; m++)
                {
                    uint num4 = array2[num3++];
                    num4 = (uint)((int)num4 | (array2[num3++] << 8));
                    num4 = (uint)((int)num4 | (array2[num3++] << 16));
                    if (num4 != PIC24_PE_Code[num++])
                    {
                        PICkitFunctions.RunScript(1, 1);
                        return(false);
                    }
                }
            }
            PICkitFunctions.RunScript(1, 1);
            return(true);
        }