RPL Studio (Seamless RPL/RPX Modding)

Discussion in 'Wii U - Hacking & Backup Loaders' started by BullyWiiPlaza, Sep 9, 2016.

  1. BullyWiiPlaza
    OP

    BullyWiiPlaza Nintendo Hacking <3

    Member
    1,666
    1,369
    Aug 2, 2014
    Germany
    Here is a simple wrapper utility I made for unpacking and repacking RPL/RPX's. It no longer needs the SDK now :yayu:

    The JAR download and source code repository is here.
    Make sure to read the readme also.

    Video (outdated):
    Warning: Spoilers inside!
    Alternatively, here is the command line application this tool is based on.
     
    Last edited by Cyan, Sep 27, 2016 - Reason: Removed Adfly from first post. use in your signature if you want.
    Zarklord, Jack54782, Coc4tm and 11 others like this.
  2. Bug_Checker_

    Bug_Checker_ GBAtemp Advanced Fan

    Member
    950
    444
    Jun 10, 2006
    United States
    BullyWiiPlaza likes this.
  3. ShadowOne333

    ShadowOne333 GBAtemp Guru

    Member
    6,452
    4,013
    Jan 17, 2013
    Mexico
    Awesome!
    I'll give a try to peek into that pesky N64 aspect ratio code. :)
     
  4. the_randomizer

    the_randomizer The Temp's official fox whisperer

    Member
    20,723
    9,712
    Apr 29, 2011
    United States
    Dr. Wahwee's castle
    I already have the SDK, I just need the .jar app, right? :P
     
  5. BullyWiiPlaza
    OP

    BullyWiiPlaza Nintendo Hacking <3

    Member
    1,666
    1,369
    Aug 2, 2014
    Germany
    Last edited by BullyWiiPlaza, Sep 10, 2016
    the_randomizer likes this.
  6. BullyWiiPlaza
    OP

    BullyWiiPlaza Nintendo Hacking <3

    Member
    1,666
    1,369
    Aug 2, 2014
    Germany
    Now migrated to using wiiurpxtool so no more SDK dependence. Thanks @Bug_Checker_ :D
     
    Last edited by BullyWiiPlaza, Sep 10, 2016
  7. CreeperMario

    CreeperMario GBAtemp Advanced Fan

    Member
    616
    364
    Jun 18, 2016
    Australia
    OSv10 v15702
    More up-to-date solutions than wiiurpxtool include elf2rpx and readrpx by the Decaf team and @shinyquagsire23.
    I have been able to successfully create RPX files from C source code with elf2rpx that run within Loadiine GX2 flawlessly (to a certain extent, my padscore libs don't work)
    I'm not quite fluent with readrpx, but I believe that it allows you to view the assembly source of an rpx file.
     
    VinsCool and BullyWiiPlaza like this.
  8. BullyWiiPlaza
    OP

    BullyWiiPlaza Nintendo Hacking <3

    Member
    1,666
    1,369
    Aug 2, 2014
    Germany
    For reading them, just use IDA Pro.
     
    CreeperMario likes this.
  9. ShadowOne333

    ShadowOne333 GBAtemp Guru

    Member
    6,452
    4,013
    Jan 17, 2013
    Mexico
    Oh damn no longer do we need the SDK?!
    DAMN!

    This is going to make finding those gamma and aspect ratio ARM assembly codes somewhat easier, no more worrying about the damn SDK. :P
     
    Last edited by ShadowOne333, Sep 11, 2016
    NWPlayer123 and CreeperMario like this.
  10. the_randomizer

    the_randomizer The Temp's official fox whisperer

    Member
    20,723
    9,712
    Apr 29, 2011
    United States
    Dr. Wahwee's castle
    Where does it say that? oO Did I misread something? XD

    Don't you need the full paid version to actually decrypt PPC though?
     
    Last edited by the_randomizer, Sep 11, 2016
  11. FaTaL_ErRoR

    FaTaL_ErRoR AKA ŦƕƎ ƠṀƐƝ

    Member
    491
    346
    Mar 9, 2014
    United States
    Code:
        private static byte[][] Field6;
        private static int Field7;
        private static int Field8;
        private static int[] Field9;
        private static int[] Field10;
        private static int[] Field11;
        private static int Field12;
     
        private static byte[] Method39(final byte[] a, final byte[] a) {
            final byte[] array = new byte[a.length];
            int n;
            int i = n = 0;
            while (i < a.length) {
                final byte[] array2 = array;
                final byte b = a[n];
                final int n2 = n;
                final byte b2 = (byte)(b ^ a[n2]);
                ++n;
                array2[n2] = b2;
                i = n;
            }
            return array;
        }
     
        private static byte[][] Method40(final byte[][] a) {
            int n;
            int i = n = 0;
            while (i < 4) {
                int n2;
                int j = n2 = 0;
                while (j < Class7.Field7) {
                    final byte[] array = a[n];
                    final int[] field9 = Class7.Field9;
                    final byte[] array2 = a[n];
                    final int n3 = n2;
                    final byte b = (byte)(field9[array2[n3] & 0xFF] & 0xFF);
                    ++n2;
                    array[n3] = b;
                    j = n2;
                }
                i = ++n;
            }
            return a;
        }
     
        private static byte[] Method41(final byte[] a) {
            int n = 0;
            int n2 = a.length - 1;
            byte[] array = a;
            while (array[n2] == 0) {
                --n2;
                array = a;
                ++n;
            }
            final byte[] array2 = new byte[a.length - n - 1];
            final int n3 = 0;
            final byte[] array3 = array2;
            System.arraycopy(a, n3, array3, n3, array3.length);
            return array2;
        }
     
        public static byte[] Method42(final byte[] a) {
            final byte[] array = new byte[a.length];
            final byte[][] a2 = new byte[4][Class7.Field7];
            int n;
            int i = n = 0;
            while (i < a.length) {
                final byte[] array2 = a2[n / 4];
                final int n2 = n % 4;
                final byte b = a[n % 4 * 4 + n / 4];
                ++n;
                array2[n2] = b;
                i = n;
            }
            byte[][] array3 = Method52(a2, Class7.Field6, 0);
            int n3;
            int j = n3 = 1;
            while (j < Class7.Field12) {
                array3 = Method52(Method49(Method43(Method55(array3))), Class7.Field6, n3++);
                j = n3;
            }
            final byte[][] method52 = Method52(Method43(Method55(array3)), Class7.Field6, Class7.Field12);
            int n4;
            int k = n4 = 0;
            while (k < array.length) {
                final byte[] array4 = array;
                final int n5 = n4 % 4 * 4 + n4 / 4;
                final byte b2 = method52[n4 / 4][n4 % 4];
                ++n4;
                array4[n5] = b2;
                k = n4;
            }
            return array;
        }
     
        private static byte[][] Method43(final byte[][] a) {
            final byte[] array = new byte[4];
            int n;
            int i = n = 1;
            while (i < 4) {
                int n2;
                int j = n2 = 0;
                while (j < Class7.Field7) {
                    final byte[] array2 = array;
                    final byte[] array3 = a[n];
                    final int n3 = n2;
                    final byte b = array3[(n3 + n) % Class7.Field7];
                    ++n2;
                    array2[n3] = b;
                    j = n2;
                }
                int n4;
                int k = n4 = 0;
                while (k < Class7.Field7) {
                    final byte[] array4 = a[n];
                    final byte[] array5 = array;
                    final int n5 = n4;
                    final byte b2 = array5[n5];
                    ++n4;
                    array4[n5] = b2;
                    k = n4;
                }
                i = ++n;
            }
            return a;
        }
     
        private static byte[][] Method44(final byte[][] a) {
            final byte[] array = new byte[4];
            int n;
            int i = n = 1;
            while (i < 4) {
                int n2;
                int j = n2 = 0;
                while (j < Class7.Field7) {
                    final byte[] array2 = array;
                    final int n3 = (n2 + n) % Class7.Field7;
                    final byte b = a[n][n2];
                    ++n2;
                    array2[n3] = b;
                    j = n2;
                }
                int n4;
                int k = n4 = 0;
                while (k < Class7.Field7) {
                    final byte[] array3 = a[n];
                    final byte[] array4 = array;
                    final int n5 = n4;
                    final byte b2 = array4[n5];
                    ++n4;
                    array3[n5] = b2;
                    k = n4;
                }
                i = ++n;
            }
            return a;
        }
     
        private static byte[][] Method45(final byte[] a) {
            final byte[][] array = new byte[Class7.Field7 * (Class7.Field12 + 1)][4];
            int n;
            int i = n = 0;
            while (i < Class7.Field8) {
                final int n2 = n;
                final byte[][] array2 = array;
                final byte[][] array3 = array;
                final int n3 = n;
                array[n][0] = a[n * 4];
                final byte[] array4 = array3[n3];
                final int n4 = n * 4;
                final int n5 = 1;
                array4[n5] = a[n4 + n5];
                final byte[] array5 = array2[n3];
                final int n6 = n * 4;
                final int n7 = 2;
                array5[n7] = a[n6 + n7];
                final byte[] array6 = array2[n2];
                final int n8 = n * 4;
                final int n9 = 3;
                final byte b = a[n8 + n9];
                ++n;
                array6[n9] = b;
                i = n;
            }
            int field8;
            int j = field8 = Class7.Field8;
            while (j < Class7.Field7 * (Class7.Field12 + 1)) {
                byte[] a2 = new byte[4];
                int n10;
                int k = n10 = 0;
                while (k < 4) {
                    final byte[] array7 = a2;
                    final byte[] array8 = array[field8 - 1];
                    final int n11 = n10;
                    final byte b2 = array8[n11];
                    ++n10;
                    array7[n11] = b2;
                    k = n10;
                }
                byte[][] array9;
                if (field8 % Class7.Field8 == 0) {
                    a2 = Method48(Method50(a2));
                    array9 = array;
                    final int n12 = 0;
                    final byte[] array10 = a2;
                    array10[n12] = (byte)(array10[0] ^ (Class7.Field10[field8 / Class7.Field8] & 0xFF));
                }
                else {
                    if (Class7.Field8 > 6 && field8 % Class7.Field8 == 4) {
                        a2 = Method48(a2);
                    }
                    array9 = array;
                }
                final int n13 = field8;
                final byte[] method39 = Method39(array[field8 - Class7.Field8], a2);
                ++field8;
                array9[n13] = method39;
                j = field8;
            }
            return array;
        }
     
        public static byte Method46(final byte a, byte a) {
            byte b = a;
            a = a;
            byte b2 = 0;
            byte b3 = b;
            while (b3 != 0) {
                if ((b & 0x1) != 0x0) {
                    b2 ^= (byte)a;
                }
                final byte b4 = (byte)(a & 0x80);
                a = (byte)(a << 1);
                if (b4 != 0) {
                    a = (byte)(a ^ 0x1B);
                }
                b3 = (b = (byte)((b & 0xFF) >> 1));
            }
            return b2;
        }
     
        public static byte[] Method47(final byte[] a) {
            final byte[] array = new byte[a.length];
            final byte[][] a2 = new byte[4][Class7.Field7];
            int n;
            int i = n = 0;
            while (i < a.length) {
                final byte[] array2 = a2[n / 4];
                final int n2 = n % 4;
                final byte b = a[n % 4 * 4 + n / 4];
                ++n;
                array2[n2] = b;
                i = n;
            }
            byte[][] array3 = Method52(a2, Class7.Field6, Class7.Field12);
            int a3;
            int j = a3 = Class7.Field12 - 1;
            while (j >= 1) {
                final byte[][] method52 = Method52(Method44(Method40(array3)), Class7.Field6, a3);
                --a3;
                array3 = Method53(method52);
                j = a3;
            }
            final byte[][] method53 = Method52(Method44(Method40(array3)), Class7.Field6, 0);
            int n3;
            int k = n3 = 0;
            while (k < array.length) {
                final byte[] array4 = array;
                final int n4 = n3 % 4 * 4 + n3 / 4;
                final byte b2 = method53[n3 / 4][n3 % 4];
                ++n3;
                array4[n4] = b2;
                k = n3;
            }
            return array;
        }
     
        private static byte[] Method48(final byte[] a) {
            final byte[] array = new byte[a.length];
            int n;
            int i = n = 0;
            while (i < array.length) {
                final byte[] array2 = array;
                final int[] field11 = Class7.Field11;
                final int n2 = n;
                final byte b = (byte)(field11[a[n2] & 0xFF] & 0xFF);
                ++n;
                array2[n2] = b;
                i = n;
            }
            return array;
        }
     
        private static byte[][] Method49(final byte[][] a) {
            final int[] array = new int[4];
            final byte a2 = 2;
            final byte b = 3;
            int n;
            int i = n = 0;
            while (i < 4) {
                int j;
                final int n2 = j = 0;
                final int n3 = 3;
                final int[] array2 = array;
                final int n4 = 2;
                final int n5 = 1;
                final int[] array3 = array;
                final byte a3 = a2;
                final int n6 = 0;
                array3[n6] = (Method46(a3, a[n6][n]) ^ Method46(b, a[1][n]) ^ a[2][n] ^ a[3][n]);
                array3[n5] = (a[0][n] ^ Method46(a2, a[1][n]) ^ Method46(b, a[2][n]) ^ a[3][n]);
                array2[n4] = (a[0][n] ^ a[1][n] ^ Method46(a2, a[2][n]) ^ Method46(b, a[3][n]));
                array2[n3] = (Method46(b, a[0][n]) ^ a[1][n] ^ a[2][n] ^ Method46(a2, a[3][n]));
                int n7 = n2;
                while (j < 4) {
                    final byte[] array4 = a[n7];
                    final int n8 = n;
                    final byte b2 = (byte)array[n7];
                    ++n7;
                    array4[n8] = b2;
                    j = n7;
                }
                i = ++n;
            }
            return a;
        }
     
        private static byte[] Method50(final byte[] a) {
            final byte[] array = new byte[a.length];
            final int n = 3;
            final byte[] array2 = array;
            final int n2 = 2;
            final int n3 = 1;
            final byte[] array3 = array;
            array3[0] = a[1];
            array3[n3] = a[2];
            array2[n2] = a[3];
            array2[n] = a[0];
            return array2;
        }
     
        public static byte[] Method51(byte[] a, byte[] a) {
            Class7.Field7 = 4;
            Class7.Field8 = a.length / 4;
            Class7.Field12 = Class7.Field8 + 6;
            final byte[] array = { 0 };
            final int n;
            final byte[] array2 = new byte[n = 16 - a.length % 16];
            int i;
            final int n2 = i = 1;
            array2[0] = -128;
            int n3 = n2;
            while (i < n) {
                final byte[] array3 = array2;
                final int n4 = n3;
                final boolean b = false;
                ++n3;
                array3[n4] = (byte)(b ? 1 : 0);
                i = n3;
            }
            final byte[] array4 = new byte[a.length + n];
            byte[] method42 = new byte[16];
            final byte[] array5 = (Object)0;
            Class7.Field6 = Method45(a);
            a = array5;
            int n5;
            int j = n5 = 0;
            while (j < a.length + n) {
                if (n5 > 0 && n5 % 16 == 0) {
                    System.arraycopy(method42 = Method42(method42), 0, array4, n5 - 16, method42.length);
                }
                if (n5 < a.length) {
                    method42[n5 % 16] = a[n5];
                }
                else {
                    final byte[] array6 = method42;
                    final int n6 = n5 % 16;
                    final byte b2 = array2[a % 16];
                    ++a;
                    array6[n6] = b2;
                }
                j = ++n5;
            }
            if (method42.length == 16) {
                final byte[] method43 = Method42(method42);
                System.arraycopy(method43, 0, array4, n5 - 16, method43.length);
            }
            return array4;
        }
     
        private static byte[][] Method52(final byte[][] a, final byte[][] a, final int a) {
            final byte[][] array = new byte[a.length][a[0].length];
            int n;
            int i = n = 0;
            while (i < Class7.Field7) {
                int n2;
                int j = n2 = 0;
                while (j < 4) {
                    final byte[] array2 = array[n2];
                    final byte[] array3 = a[n2];
                    final int n3 = n;
                    final byte b = (byte)(array3[n3] ^ a[a * Class7.Field7 + n][n2]);
                    ++n2;
                    array2[n3] = b;
                    j = n2;
                }
                i = ++n;
            }
            return array;
        }
     
        private static byte[][] Method53(final byte[][] a) {
            final int[] array = new int[4];
            final byte a2 = 14;
            final byte b = 11;
            final byte b2 = 13;
            final byte b3 = 9;
            int n;
            int i = n = 0;
            while (i < 4) {
                int j;
                final int n2 = j = 0;
                final int n3 = 3;
                final int[] array2 = array;
                final int n4 = 2;
                final int n5 = 1;
                final int[] array3 = array;
                final byte a3 = a2;
                final int n6 = 0;
                array3[n6] = (Method46(a3, a[n6][n]) ^ Method46(b, a[1][n]) ^ Method46(b2, a[2][n]) ^ Method46(b3, a[3][n]));
                array3[n5] = (Method46(b3, a[0][n]) ^ Method46(a2, a[1][n]) ^ Method46(b, a[2][n]) ^ Method46(b2, a[3][n]));
                array2[n4] = (Method46(b2, a[0][n]) ^ Method46(b3, a[1][n]) ^ Method46(a2, a[2][n]) ^ Method46(b, a[3][n]));
                array2[n3] = (Method46(b, a[0][n]) ^ Method46(b2, a[1][n]) ^ Method46(b3, a[2][n]) ^ Method46(a2, a[3][n]));
                int n7 = n2;
                while (j < 4) {
                    final byte[] array4 = a[n7];
                    final int n8 = n;
                    final byte b4 = (byte)array[n7];
                    ++n7;
                    array4[n8] = b4;
                    j = n7;
                }
                i = ++n;
            }
            return a;
        }
     
        public static byte[] Method54(byte[] a, byte[] a) {
            final byte[] a2 = new byte[a.length];
            byte[] method47 = new byte[16];
            Class7.Field7 = 4;
            Class7.Field8 = a.length / 4;
            Class7.Field12 = Class7.Field8 + 6;
            byte[] array2;
            final byte[] array = array2 = (byte[])(Object)0;
            Class7.Field6 = Method45(a);
            a = array;
            while (array2 < a.length) {
                if (a > 0 && a % 16 == 0) {
                    System.arraycopy(method47 = Method47(method47), 0, a2, (int)(a - 16), method47.length);
                }
                if (a < a.length) {
                    method47[a % 16] = a[a];
                }
                array2 = ++a;
            }
            final byte[] method48 = Method47(method47);
            System.arraycopy(method48, 0, a2, (int)(a - 16), method48.length);
            return Method41(a2);
        }
     
        private static byte[][] Method55(final byte[][] a) {
            final byte[][] array = new byte[a.length][a[0].length];
            int n;
            int i = n = 0;
            while (i < 4) {
                int n2;
                int j = n2 = 0;
                while (j < Class7.Field7) {
                    final byte[] array2 = array[n];
                    final int[] field11 = Class7.Field11;
                    final byte[] array3 = a[n];
                    final int n3 = n2;
                    final byte b = (byte)(field11[array3[n3] & 0xFF] & 0xFF);
                    ++n2;
                    array2[n3] = b;
                    j = n2;
                }
                i = ++n;
            }
            return array;
        }
     
        static {
            Class7.Field11 = new int[] { 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22 };
            Class7.Field9 = new int[] { 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125 };
            final int[] field10 = new int[255];
            field10[0] = 141;
            final int n = 1;
            field10[n] = n;
            final int n2 = 2;
            field10[n2] = n2;
            field10[field10[3] = 4] = 8;
            field10[5] = 16;
            field10[6] = 32;
            field10[7] = 64;
            field10[8] = 128;
            field10[9] = 27;
            field10[10] = 54;
            field10[11] = 108;
            field10[12] = 216;
            field10[13] = 171;
            field10[14] = 77;
            field10[15] = 154;
            field10[16] = 47;
            field10[17] = 94;
            field10[18] = 188;
            field10[19] = 99;
            field10[20] = 198;
            field10[21] = 151;
            field10[22] = 53;
            field10[23] = 106;
            field10[24] = 212;
            field10[25] = 179;
            field10[26] = 125;
            field10[27] = 250;
            field10[28] = 239;
            field10[29] = 197;
            field10[30] = 145;
            field10[31] = 57;
            field10[32] = 114;
            field10[33] = 228;
            field10[34] = 211;
            field10[35] = 189;
            field10[36] = 97;
            field10[37] = 194;
            field10[38] = 159;
            field10[39] = 37;
            field10[40] = 74;
            field10[41] = 148;
            field10[42] = 51;
            field10[43] = 102;
            field10[44] = 204;
            field10[45] = 131;
            field10[46] = 29;
            field10[47] = 58;
            field10[48] = 116;
            field10[49] = 232;
            field10[50] = 203;
            field10[51] = 141;
            field10[52] = 1;
            field10[53] = 2;
            field10[54] = 4;
            field10[55] = 8;
            field10[56] = 16;
            field10[57] = 32;
            field10[58] = 64;
            field10[59] = 128;
            field10[60] = 27;
            field10[61] = 54;
            field10[62] = 108;
            field10[63] = 216;
            field10[64] = 171;
            field10[65] = 77;
            field10[66] = 154;
            field10[67] = 47;
            field10[68] = 94;
            field10[69] = 188;
            field10[70] = 99;
            field10[71] = 198;
            field10[72] = 151;
            field10[73] = 53;
            field10[74] = 106;
            field10[75] = 212;
            field10[76] = 179;
            field10[77] = 125;
            field10[78] = 250;
            field10[79] = 239;
            field10[80] = 197;
            field10[81] = 145;
            field10[82] = 57;
            field10[83] = 114;
            field10[84] = 228;
            field10[85] = 211;
            field10[86] = 189;
            field10[87] = 97;
            field10[88] = 194;
            field10[89] = 159;
            field10[90] = 37;
            field10[91] = 74;
            field10[92] = 148;
            field10[93] = 51;
            field10[94] = 102;
            field10[95] = 204;
            field10[96] = 131;
            field10[97] = 29;
            field10[98] = 58;
            field10[99] = 116;
            field10[100] = 232;
            field10[101] = 203;
            field10[102] = 141;
            field10[103] = 1;
            field10[104] = 2;
            field10[105] = 4;
            field10[106] = 8;
            field10[107] = 16;
            field10[108] = 32;
            field10[109] = 64;
            field10[110] = 128;
            field10[111] = 27;
            field10[112] = 54;
            field10[113] = 108;
            field10[114] = 216;
            field10[115] = 171;
            field10[116] = 77;
            field10[117] = 154;
            field10[118] = 47;
            field10[119] = 94;
            field10[120] = 188;
            field10[121] = 99;
            field10[122] = 198;
            field10[123] = 151;
            field10[124] = 53;
            field10[125] = 106;
            field10[126] = 212;
            field10[127] = 179;
            field10[128] = 125;
            field10[129] = 250;
            field10[130] = 239;
            field10[131] = 197;
            field10[132] = 145;
            field10[133] = 57;
            field10[134] = 114;
            field10[135] = 228;
            field10[136] = 211;
            field10[137] = 189;
            field10[138] = 97;
            field10[139] = 194;
            field10[140] = 159;
            field10[141] = 37;
            field10[142] = 74;
            field10[143] = 148;
            field10[144] = 51;
            field10[145] = 102;
            field10[146] = 204;
            field10[147] = 131;
            field10[148] = 29;
            field10[149] = 58;
            field10[150] = 116;
            field10[151] = 232;
            field10[152] = 203;
            field10[153] = 141;
            field10[154] = 1;
            field10[155] = 2;
            field10[156] = 4;
            field10[157] = 8;
            field10[158] = 16;
            field10[159] = 32;
            field10[160] = 64;
            field10[161] = 128;
            field10[162] = 27;
            field10[163] = 54;
            field10[164] = 108;
            field10[165] = 216;
            field10[166] = 171;
            field10[167] = 77;
            field10[168] = 154;
            field10[169] = 47;
            field10[170] = 94;
            field10[171] = 188;
            field10[172] = 99;
            field10[173] = 198;
            field10[174] = 151;
            field10[175] = 53;
            field10[176] = 106;
            field10[177] = 212;
            field10[field10[178] = 179] = 125;
            field10[180] = 250;
            field10[181] = 239;
            field10[182] = 197;
            field10[183] = 145;
            field10[184] = 57;
            field10[185] = 114;
            field10[186] = 228;
            field10[187] = 211;
            field10[field10[188] = 189] = 97;
            field10[190] = 194;
            field10[191] = 159;
            field10[192] = 37;
            field10[193] = 74;
            field10[194] = 148;
            field10[195] = 51;
            field10[196] = 102;
            field10[197] = 204;
            field10[198] = 131;
            field10[199] = 29;
            field10[200] = 58;
            field10[201] = 116;
            field10[202] = 232;
            final int n3 = 203;
            field10[n3] = n3;
            field10[204] = 141;
            field10[205] = 1;
            field10[206] = 2;
            field10[207] = 4;
            field10[208] = 8;
            field10[209] = 16;
            field10[210] = 32;
            field10[211] = 64;
            field10[212] = 128;
            field10[213] = 27;
            field10[214] = 54;
            field10[215] = 108;
            final int n4 = 216;
            field10[n4] = n4;
            field10[217] = 171;
            field10[218] = 77;
            field10[219] = 154;
            field10[220] = 47;
            field10[221] = 94;
            field10[222] = 188;
            field10[223] = 99;
            field10[224] = 198;
            field10[225] = 151;
            field10[226] = 53;
            field10[227] = 106;
            field10[228] = 212;
            field10[229] = 179;
            field10[230] = 125;
            field10[231] = 250;
            field10[232] = 239;
            field10[233] = 197;
            field10[234] = 145;
            field10[235] = 57;
            field10[236] = 114;
            field10[237] = 228;
            field10[238] = 211;
            field10[239] = 189;
            field10[240] = 97;
            field10[241] = 194;
            field10[242] = 159;
            field10[243] = 37;
            field10[244] = 74;
            field10[245] = 148;
            field10[246] = 51;
            field10[247] = 102;
            field10[248] = 204;
            field10[249] = 131;
            field10[250] = 29;
            field10[251] = 58;
            field10[252] = 116;
            field10[253] = 232;
            field10[254] = 203;
            Class7.Field10 = field10;
        }
    }
    
    Hey, I have some javascripts... Maybe you'll find them useful somewhere.
    Code:
        private static byte[][] Field6;
        private static int Field7;
        private static int Field8;
        private static int[] Field9;
        private static int[] Field10;
        private static int[] Field11;
        private static int Field12;
     
        private static byte[] Method39(final byte[] a, final byte[] a) {
            final byte[] array = new byte[a.length];
            int n;
            int i = n = 0;
            while (i < a.length) {
                final byte[] array2 = array;
                final byte b = a[n];
                final int n2 = n;
                final byte b2 = (byte)(b ^ a[n2]);
                ++n;
                array2[n2] = b2;
                i = n;
            }
            return array;
        }
     
        private static byte[][] Method40(final byte[][] a) {
            int n;
            int i = n = 0;
            while (i < 4) {
                int n2;
                int j = n2 = 0;
                while (j < Class7.Field7) {
                    final byte[] array = a[n];
                    final int[] field9 = Class7.Field9;
                    final byte[] array2 = a[n];
                    final int n3 = n2;
                    final byte b = (byte)(field9[array2[n3] & 0xFF] & 0xFF);
                    ++n2;
                    array[n3] = b;
                    j = n2;
                }
                i = ++n;
            }
            return a;
        }
     
        private static byte[] Method41(final byte[] a) {
            int n = 0;
            int n2 = a.length - 1;
            byte[] array = a;
            while (array[n2] == 0) {
                --n2;
                array = a;
                ++n;
            }
            final byte[] array2 = new byte[a.length - n - 1];
            final int n3 = 0;
            final byte[] array3 = array2;
            System.arraycopy(a, n3, array3, n3, array3.length);
            return array2;
        }
     
        public static byte[] Method42(final byte[] a) {
            final byte[] array = new byte[a.length];
            final byte[][] a2 = new byte[4][Class7.Field7];
            int n;
            int i = n = 0;
            while (i < a.length) {
                final byte[] array2 = a2[n / 4];
                final int n2 = n % 4;
                final byte b = a[n % 4 * 4 + n / 4];
                ++n;
                array2[n2] = b;
                i = n;
            }
            byte[][] array3 = Method52(a2, Class7.Field6, 0);
            int n3;
            int j = n3 = 1;
            while (j < Class7.Field12) {
                array3 = Method52(Method49(Method43(Method55(array3))), Class7.Field6, n3++);
                j = n3;
            }
            final byte[][] method52 = Method52(Method43(Method55(array3)), Class7.Field6, Class7.Field12);
            int n4;
            int k = n4 = 0;
            while (k < array.length) {
                final byte[] array4 = array;
                final int n5 = n4 % 4 * 4 + n4 / 4;
                final byte b2 = method52[n4 / 4][n4 % 4];
                ++n4;
                array4[n5] = b2;
                k = n4;
            }
            return array;
        }
     
        private static byte[][] Method43(final byte[][] a) {
            final byte[] array = new byte[4];
            int n;
            int i = n = 1;
            while (i < 4) {
                int n2;
                int j = n2 = 0;
                while (j < Class7.Field7) {
                    final byte[] array2 = array;
                    final byte[] array3 = a[n];
                    final int n3 = n2;
                    final byte b = array3[(n3 + n) % Class7.Field7];
                    ++n2;
                    array2[n3] = b;
                    j = n2;
                }
                int n4;
                int k = n4 = 0;
                while (k < Class7.Field7) {
                    final byte[] array4 = a[n];
                    final byte[] array5 = array;
                    final int n5 = n4;
                    final byte b2 = array5[n5];
                    ++n4;
                    array4[n5] = b2;
                    k = n4;
                }
                i = ++n;
            }
            return a;
        }
     
        private static byte[][] Method44(final byte[][] a) {
            final byte[] array = new byte[4];
            int n;
            int i = n = 1;
            while (i < 4) {
                int n2;
                int j = n2 = 0;
                while (j < Class7.Field7) {
                    final byte[] array2 = array;
                    final int n3 = (n2 + n) % Class7.Field7;
                    final byte b = a[n][n2];
                    ++n2;
                    array2[n3] = b;
                    j = n2;
                }
                int n4;
                int k = n4 = 0;
                while (k < Class7.Field7) {
                    final byte[] array3 = a[n];
                    final byte[] array4 = array;
                    final int n5 = n4;
                    final byte b2 = array4[n5];
                    ++n4;
                    array3[n5] = b2;
                    k = n4;
                }
                i = ++n;
            }
            return a;
        }
     
        private static byte[][] Method45(final byte[] a) {
            final byte[][] array = new byte[Class7.Field7 * (Class7.Field12 + 1)][4];
            int n;
            int i = n = 0;
            while (i < Class7.Field8) {
                final int n2 = n;
                final byte[][] array2 = array;
                final byte[][] array3 = array;
                final int n3 = n;
                array[n][0] = a[n * 4];
                final byte[] array4 = array3[n3];
                final int n4 = n * 4;
                final int n5 = 1;
                array4[n5] = a[n4 + n5];
                final byte[] array5 = array2[n3];
                final int n6 = n * 4;
                final int n7 = 2;
                array5[n7] = a[n6 + n7];
                final byte[] array6 = array2[n2];
                final int n8 = n * 4;
                final int n9 = 3;
                final byte b = a[n8 + n9];
                ++n;
                array6[n9] = b;
                i = n;
            }
            int field8;
            int j = field8 = Class7.Field8;
            while (j < Class7.Field7 * (Class7.Field12 + 1)) {
                byte[] a2 = new byte[4];
                int n10;
                int k = n10 = 0;
                while (k < 4) {
                    final byte[] array7 = a2;
                    final byte[] array8 = array[field8 - 1];
                    final int n11 = n10;
                    final byte b2 = array8[n11];
                    ++n10;
                    array7[n11] = b2;
                    k = n10;
                }
                byte[][] array9;
                if (field8 % Class7.Field8 == 0) {
                    a2 = Method48(Method50(a2));
                    array9 = array;
                    final int n12 = 0;
                    final byte[] array10 = a2;
                    array10[n12] = (byte)(array10[0] ^ (Class7.Field10[field8 / Class7.Field8] & 0xFF));
                }
                else {
                    if (Class7.Field8 > 6 && field8 % Class7.Field8 == 4) {
                        a2 = Method48(a2);
                    }
                    array9 = array;
                }
                final int n13 = field8;
                final byte[] method39 = Method39(array[field8 - Class7.Field8], a2);
                ++field8;
                array9[n13] = method39;
                j = field8;
            }
            return array;
        }
     
        public static byte Method46(final byte a, byte a) {
            byte b = a;
            a = a;
            byte b2 = 0;
            byte b3 = b;
            while (b3 != 0) {
                if ((b & 0x1) != 0x0) {
                    b2 ^= (byte)a;
                }
                final byte b4 = (byte)(a & 0x80);
                a = (byte)(a << 1);
                if (b4 != 0) {
                    a = (byte)(a ^ 0x1B);
                }
                b3 = (b = (byte)((b & 0xFF) >> 1));
            }
            return b2;
        }
     
        public static byte[] Method47(final byte[] a) {
            final byte[] array = new byte[a.length];
            final byte[][] a2 = new byte[4][Class7.Field7];
            int n;
            int i = n = 0;
            while (i < a.length) {
                final byte[] array2 = a2[n / 4];
                final int n2 = n % 4;
                final byte b = a[n % 4 * 4 + n / 4];
                ++n;
                array2[n2] = b;
                i = n;
            }
            byte[][] array3 = Method52(a2, Class7.Field6, Class7.Field12);
            int a3;
            int j = a3 = Class7.Field12 - 1;
            while (j >= 1) {
                final byte[][] method52 = Method52(Method44(Method40(array3)), Class7.Field6, a3);
                --a3;
                array3 = Method53(method52);
                j = a3;
            }
            final byte[][] method53 = Method52(Method44(Method40(array3)), Class7.Field6, 0);
            int n3;
            int k = n3 = 0;
            while (k < array.length) {
                final byte[] array4 = array;
                final int n4 = n3 % 4 * 4 + n3 / 4;
                final byte b2 = method53[n3 / 4][n3 % 4];
                ++n3;
                array4[n4] = b2;
                k = n3;
            }
            return array;
        }
     
        private static byte[] Method48(final byte[] a) {
            final byte[] array = new byte[a.length];
            int n;
            int i = n = 0;
            while (i < array.length) {
                final byte[] array2 = array;
                final int[] field11 = Class7.Field11;
                final int n2 = n;
                final byte b = (byte)(field11[a[n2] & 0xFF] & 0xFF);
                ++n;
                array2[n2] = b;
                i = n;
            }
            return array;
        }
     
        private static byte[][] Method49(final byte[][] a) {
            final int[] array = new int[4];
            final byte a2 = 2;
            final byte b = 3;
            int n;
            int i = n = 0;
            while (i < 4) {
                int j;
                final int n2 = j = 0;
                final int n3 = 3;
                final int[] array2 = array;
                final int n4 = 2;
                final int n5 = 1;
                final int[] array3 = array;
                final byte a3 = a2;
                final int n6 = 0;
                array3[n6] = (Method46(a3, a[n6][n]) ^ Method46(b, a[1][n]) ^ a[2][n] ^ a[3][n]);
                array3[n5] = (a[0][n] ^ Method46(a2, a[1][n]) ^ Method46(b, a[2][n]) ^ a[3][n]);
                array2[n4] = (a[0][n] ^ a[1][n] ^ Method46(a2, a[2][n]) ^ Method46(b, a[3][n]));
                array2[n3] = (Method46(b, a[0][n]) ^ a[1][n] ^ a[2][n] ^ Method46(a2, a[3][n]));
                int n7 = n2;
                while (j < 4) {
                    final byte[] array4 = a[n7];
                    final int n8 = n;
                    final byte b2 = (byte)array[n7];
                    ++n7;
                    array4[n8] = b2;
                    j = n7;
                }
                i = ++n;
            }
            return a;
        }
     
        private static byte[] Method50(final byte[] a) {
            final byte[] array = new byte[a.length];
            final int n = 3;
            final byte[] array2 = array;
            final int n2 = 2;
            final int n3 = 1;
            final byte[] array3 = array;
            array3[0] = a[1];
            array3[n3] = a[2];
            array2[n2] = a[3];
            array2[n] = a[0];
            return array2;
        }
     
        public static byte[] Method51(byte[] a, byte[] a) {
            Class7.Field7 = 4;
            Class7.Field8 = a.length / 4;
            Class7.Field12 = Class7.Field8 + 6;
            final byte[] array = { 0 };
            final int n;
            final byte[] array2 = new byte[n = 16 - a.length % 16];
            int i;
            final int n2 = i = 1;
            array2[0] = -128;
            int n3 = n2;
            while (i < n) {
                final byte[] array3 = array2;
                final int n4 = n3;
                final boolean b = false;
                ++n3;
                array3[n4] = (byte)(b ? 1 : 0);
                i = n3;
            }
            final byte[] array4 = new byte[a.length + n];
            byte[] method42 = new byte[16];
            final byte[] array5 = (Object)0;
            Class7.Field6 = Method45(a);
            a = array5;
            int n5;
            int j = n5 = 0;
            while (j < a.length + n) {
                if (n5 > 0 && n5 % 16 == 0) {
                    System.arraycopy(method42 = Method42(method42), 0, array4, n5 - 16, method42.length);
                }
                if (n5 < a.length) {
                    method42[n5 % 16] = a[n5];
                }
                else {
                    final byte[] array6 = method42;
                    final int n6 = n5 % 16;
                    final byte b2 = array2[a % 16];
                    ++a;
                    array6[n6] = b2;
                }
                j = ++n5;
            }
            if (method42.length == 16) {
                final byte[] method43 = Method42(method42);
                System.arraycopy(method43, 0, array4, n5 - 16, method43.length);
            }
            return array4;
        }
     
        private static byte[][] Method52(final byte[][] a, final byte[][] a, final int a) {
            final byte[][] array = new byte[a.length][a[0].length];
            int n;
            int i = n = 0;
            while (i < Class7.Field7) {
                int n2;
                int j = n2 = 0;
                while (j < 4) {
                    final byte[] array2 = array[n2];
                    final byte[] array3 = a[n2];
                    final int n3 = n;
                    final byte b = (byte)(array3[n3] ^ a[a * Class7.Field7 + n][n2]);
                    ++n2;
                    array2[n3] = b;
                    j = n2;
                }
                i = ++n;
            }
            return array;
        }
     
        private static byte[][] Method53(final byte[][] a) {
            final int[] array = new int[4];
            final byte a2 = 14;
            final byte b = 11;
            final byte b2 = 13;
            final byte b3 = 9;
            int n;
            int i = n = 0;
            while (i < 4) {
                int j;
                final int n2 = j = 0;
                final int n3 = 3;
                final int[] array2 = array;
                final int n4 = 2;
                final int n5 = 1;
                final int[] array3 = array;
                final byte a3 = a2;
                final int n6 = 0;
                array3[n6] = (Method46(a3, a[n6][n]) ^ Method46(b, a[1][n]) ^ Method46(b2, a[2][n]) ^ Method46(b3, a[3][n]));
                array3[n5] = (Method46(b3, a[0][n]) ^ Method46(a2, a[1][n]) ^ Method46(b, a[2][n]) ^ Method46(b2, a[3][n]));
                array2[n4] = (Method46(b2, a[0][n]) ^ Method46(b3, a[1][n]) ^ Method46(a2, a[2][n]) ^ Method46(b, a[3][n]));
                array2[n3] = (Method46(b, a[0][n]) ^ Method46(b2, a[1][n]) ^ Method46(b3, a[2][n]) ^ Method46(a2, a[3][n]));
                int n7 = n2;
                while (j < 4) {
                    final byte[] array4 = a[n7];
                    final int n8 = n;
                    final byte b4 = (byte)array[n7];
                    ++n7;
                    array4[n8] = b4;
                    j = n7;
                }
                i = ++n;
            }
            return a;
        }
     
        public static byte[] Method54(byte[] a, byte[] a) {
            final byte[] a2 = new byte[a.length];
            byte[] method47 = new byte[16];
            Class7.Field7 = 4;
            Class7.Field8 = a.length / 4;
            Class7.Field12 = Class7.Field8 + 6;
            byte[] array2;
            final byte[] array = array2 = (byte[])(Object)0;
            Class7.Field6 = Method45(a);
            a = array;
            while (array2 < a.length) {
                if (a > 0 && a % 16 == 0) {
                    System.arraycopy(method47 = Method47(method47), 0, a2, (int)(a - 16), method47.length);
                }
                if (a < a.length) {
                    method47[a % 16] = a[a];
                }
                array2 = ++a;
            }
            final byte[] method48 = Method47(method47);
            System.arraycopy(method48, 0, a2, (int)(a - 16), method48.length);
            return Method41(a2);
        }
     
        private static byte[][] Method55(final byte[][] a) {
            final byte[][] array = new byte[a.length][a[0].length];
            int n;
            int i = n = 0;
            while (i < 4) {
                int n2;
                int j = n2 = 0;
                while (j < Class7.Field7) {
                    final byte[] array2 = array[n];
                    final int[] field11 = Class7.Field11;
                    final byte[] array3 = a[n];
                    final int n3 = n2;
                    final byte b = (byte)(field11[array3[n3] & 0xFF] & 0xFF);
                    ++n2;
                    array2[n3] = b;
                    j = n2;
                }
                i = ++n;
            }
            return array;
        }
     
        static {
            Class7.Field11 = new int[] { 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22 };
            Class7.Field9 = new int[] { 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125 };
            final int[] field10 = new int[255];
            field10[0] = 141;
            final int n = 1;
            field10[n] = n;
            final int n2 = 2;
            field10[n2] = n2;
            field10[field10[3] = 4] = 8;
            field10[5] = 16;
            field10[6] = 32;
            field10[7] = 64;
            field10[8] = 128;
            field10[9] = 27;
            field10[10] = 54;
            field10[11] = 108;
            field10[12] = 216;
            field10[13] = 171;
            field10[14] = 77;
            field10[15] = 154;
            field10[16] = 47;
            field10[17] = 94;
            field10[18] = 188;
            field10[19] = 99;
            field10[20] = 198;
            field10[21] = 151;
            field10[22] = 53;
            field10[23] = 106;
            field10[24] = 212;
            field10[25] = 179;
            field10[26] = 125;
            field10[27] = 250;
            field10[28] = 239;
            field10[29] = 197;
            field10[30] = 145;
            field10[31] = 57;
            field10[32] = 114;
            field10[33] = 228;
            field10[34] = 211;
            field10[35] = 189;
            field10[36] = 97;
            field10[37] = 194;
            field10[38] = 159;
            field10[39] = 37;
            field10[40] = 74;
            field10[41] = 148;
            field10[42] = 51;
            field10[43] = 102;
            field10[44] = 204;
            field10[45] = 131;
            field10[46] = 29;
            field10[47] = 58;
            field10[48] = 116;
            field10[49] = 232;
            field10[50] = 203;
            field10[51] = 141;
            field10[52] = 1;
            field10[53] = 2;
            field10[54] = 4;
            field10[55] = 8;
            field10[56] = 16;
            field10[57] = 32;
            field10[58] = 64;
            field10[59] = 128;
            field10[60] = 27;
            field10[61] = 54;
            field10[62] = 108;
            field10[63] = 216;
            field10[64] = 171;
            field10[65] = 77;
            field10[66] = 154;
            field10[67] = 47;
            field10[68] = 94;
            field10[69] = 188;
            field10[70] = 99;
            field10[71] = 198;
            field10[72] = 151;
            field10[73] = 53;
            field10[74] = 106;
            field10[75] = 212;
            field10[76] = 179;
            field10[77] = 125;
            field10[78] = 250;
            field10[79] = 239;
            field10[80] = 197;
            field10[81] = 145;
            field10[82] = 57;
            field10[83] = 114;
            field10[84] = 228;
            field10[85] = 211;
            field10[86] = 189;
            field10[87] = 97;
            field10[88] = 194;
            field10[89] = 159;
            field10[90] = 37;
            field10[91] = 74;
            field10[92] = 148;
            field10[93] = 51;
            field10[94] = 102;
            field10[95] = 204;
            field10[96] = 131;
            field10[97] = 29;
            field10[98] = 58;
            field10[99] = 116;
            field10[100] = 232;
            field10[101] = 203;
            field10[102] = 141;
            field10[103] = 1;
            field10[104] = 2;
            field10[105] = 4;
            field10[106] = 8;
            field10[107] = 16;
            field10[108] = 32;
            field10[109] = 64;
            field10[110] = 128;
            field10[111] = 27;
            field10[112] = 54;
            field10[113] = 108;
            field10[114] = 216;
            field10[115] = 171;
            field10[116] = 77;
            field10[117] = 154;
            field10[118] = 47;
            field10[119] = 94;
            field10[120] = 188;
            field10[121] = 99;
            field10[122] = 198;
            field10[123] = 151;
            field10[124] = 53;
            field10[125] = 106;
            field10[126] = 212;
            field10[127] = 179;
            field10[128] = 125;
            field10[129] = 250;
            field10[130] = 239;
            field10[131] = 197;
            field10[132] = 145;
            field10[133] = 57;
            field10[134] = 114;
            field10[135] = 228;
            field10[136] = 211;
            field10[137] = 189;
            field10[138] = 97;
            field10[139] = 194;
            field10[140] = 159;
            field10[141] = 37;
            field10[142] = 74;
            field10[143] = 148;
            field10[144] = 51;
            field10[145] = 102;
            field10[146] = 204;
            field10[147] = 131;
            field10[148] = 29;
            field10[149] = 58;
            field10[150] = 116;
            field10[151] = 232;
            field10[152] = 203;
            field10[153] = 141;
            field10[154] = 1;
            field10[155] = 2;
            field10[156] = 4;
            field10[157] = 8;
            field10[158] = 16;
            field10[159] = 32;
            field10[160] = 64;
            field10[161] = 128;
            field10[162] = 27;
            field10[163] = 54;
            field10[164] = 108;
            field10[165] = 216;
            field10[166] = 171;
            field10[167] = 77;
            field10[168] = 154;
            field10[169] = 47;
            field10[170] = 94;
            field10[171] = 188;
            field10[172] = 99;
            field10[173] = 198;
            field10[174] = 151;
            field10[175] = 53;
            field10[176] = 106;
            field10[177] = 212;
            field10[field10[178] = 179] = 125;
            field10[180] = 250;
            field10[181] = 239;
            field10[182] = 197;
            field10[183] = 145;
            field10[184] = 57;
            field10[185] = 114;
            field10[186] = 228;
            field10[187] = 211;
            field10[field10[188] = 189] = 97;
            field10[190] = 194;
            field10[191] = 159;
            field10[192] = 37;
            field10[193] = 74;
            field10[194] = 148;
            field10[195] = 51;
            field10[196] = 102;
            field10[197] = 204;
            field10[198] = 131;
            field10[199] = 29;
            field10[200] = 58;
            field10[201] = 116;
            field10[202] = 232;
            final int n3 = 203;
            field10[n3] = n3;
            field10[204] = 141;
            field10[205] = 1;
            field10[206] = 2;
            field10[207] = 4;
            field10[208] = 8;
            field10[209] = 16;
            field10[210] = 32;
            field10[211] = 64;
            field10[212] = 128;
            field10[213] = 27;
            field10[214] = 54;
            field10[215] = 108;
            final int n4 = 216;
            field10[n4] = n4;
            field10[217] = 171;
            field10[218] = 77;
            field10[219] = 154;
            field10[220] = 47;
            field10[221] = 94;
            field10[222] = 188;
            field10[223] = 99;
            field10[224] = 198;
            field10[225] = 151;
            field10[226] = 53;
            field10[227] = 106;
            field10[228] = 212;
            field10[229] = 179;
            field10[230] = 125;
            field10[231] = 250;
            field10[232] = 239;
            field10[233] = 197;
            field10[234] = 145;
            field10[235] = 57;
            field10[236] = 114;
            field10[237] = 228;
            field10[238] = 211;
            field10[239] = 189;
            field10[240] = 97;
            field10[241] = 194;
            field10[242] = 159;
            field10[243] = 37;
            field10[244] = 74;
            field10[245] = 148;
            field10[246] = 51;
            field10[247] = 102;
            field10[248] = 204;
            field10[249] = 131;
            field10[250] = 29;
            field10[251] = 58;
            field10[252] = 116;
            field10[253] = 232;
            field10[254] = 203;
            Class7.Field10 = field10;
        }
    }
    

    Code:
    private static final int Field13 = 1732584193;
        private static final int[] Field14;
        private static final int Field15 = -271733879;
        private static final int Field16 = 271733878;
        private static final int Field17 = -1732584194;
        private static final int[] Field18;
     
        public static byte[] Method56(final byte[] a) {
            final int length;
            final int n;
            final byte[] array = new byte[((n = ((length = a.length) + 8 >>> 6) + 1) << 6) - length];
            final int n2 = length;
            array[0] = -128;
            long n3 = n2 << 3;
            int n4;
            int i = n4 = 0;
            while (i < 8) {
                final byte[] array2 = array;
                array2[array2.length - 8 + n4] = (byte)n3;
                final long n5 = n3;
                ++n4;
                n3 = n5 >>> 8;
                i = n4;
            }
            int n6 = 1732584193;
            int n7 = -271733879;
            int n8 = -1732584194;
            int n9 = 271733878;
            final int[] array3 = new int[16];
            int n10;
            int j = n10 = 0;
            while (j < n) {
                int n11 = n10 << 6;
                int n12;
                int k = n12 = 0;
                while (k < 64) {
                    final int[] array4 = array3;
                    final int n13 = n12 >>> 2;
                    final int n14 = ((n11 < length) ? a[n11] : array[n11 - length]) << 24 | array3[n12 >>> 2] >>> 8;
                    ++n12;
                    array4[n13] = n14;
                    ++n11;
                    k = n12;
                }
                final int n15 = n6;
                final int n16 = n7;
                final int n17 = n8;
                final int n18 = n9;
                int n19;
                int l = n19 = 0;
                while (l < 64) {
                    final int n20 = n19 >>> 4;
                    int n21 = 0;
                    int n22 = n19;
                    int n24 = 0;
                    Label_0352: {
                        switch (n20) {
                            case 0: {
                                final int n23 = n7;
                                while (false) {}
                                n21 = ((n23 & n8) | (~n7 & n9));
                                n24 = n7;
                                break Label_0352;
                            }
                            case 1: {
                                n21 = ((n7 & n9) | (n8 & ~n9));
                                n22 = (n22 * 5 + 1 & 0xF);
                                n24 = n7;
                                break Label_0352;
                            }
                            case 2: {
                                n21 = (n7 ^ n8 ^ n9);
                                n22 = (n22 * 3 + 5 & 0xF);
                                n24 = n7;
                                break Label_0352;
                            }
                            case 3: {
                                n21 = (n8 ^ (n7 | ~n9));
                                n22 = (n22 * 7 & 0xF);
                                break;
                            }
                        }
                        n24 = n7;
                    }
                    final int n25 = n24 + Integer.rotateLeft(n6 + n21 + array3[n22] + Class8.Field18[n19], Class8.Field14[n20 << 2 | (n19 & 0x3)]);
                    n6 = n9;
                    n9 = n8;
                    final int n26 = n7;
                    ++n19;
                    n8 = n26;
                    n7 = n25;
                    l = n19;
                }
                n6 += n15;
                n7 += n16;
                n8 += n17;
                final int n27 = n9;
                ++n10;
                n9 = n27 + n18;
                j = n10;
            }
            final byte[] array5 = new byte[16];
            int n28 = 0;
            int n30;
            int n29 = n30 = 0;
            while (n29 < 4) {
                int n31 = (n30 == 0) ? n6 : ((n30 == 1) ? n7 : ((n30 == 2) ? n8 : n9));
                int n33;
                int n32 = n33 = 0;
                while (n32 < 4) {
                    final byte[] array6 = array5;
                    final int n34 = n28;
                    final byte b = (byte)n31;
                    ++n28;
                    array6[n34] = b;
                    final int n35 = n31;
                    ++n33;
                    n31 = n35 >>> 8;
                    n32 = n33;
                }
                n29 = ++n30;
            }
            return array5;
        }
     
        static {
            Field14 = new int[] { 7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21 };
            Field18 = new int[64];
            int n;
            int i = n = 0;
            while (i < 64) {
                final int[] field18 = Class8.Field18;
                final double n2 = 4.294967296E9;
                final int n3 = n;
                final int n4 = (int)(n2 * Math.abs(Math.sin(n3 + 1)));
                ++n;
                field18[n3] = n4;
                i = n;
            }
        }
     
        public static String Method57(final byte[] a) {
            final StringBuilder sb = new StringBuilder();
            int n;
            int i = n = 0;
            while (i < a.length) {
                final StringBuilder sb2 = sb;
                final String method160 = Class21.Method160(")sqT");
                final Object[] array = { null };
                final int n2 = 0;
                final Integer value = a[n] & 0xFF;
                ++n;
                array[n2] = value;
                sb2.append(String.format(method160, array));
                i = n;
            }
            return sb.toString();
        }
    }
    Code:
     public static String Method160(final String a) {
            final StackTraceElement stackTraceElement = new CloneNotSupportedException().getStackTrace()[1];
            final String string = new StringBuffer(stackTraceElement.getClassName()).insert(0, stackTraceElement.getMethodName()).toString();
            final int n = string.length() - 1;
            final int n2 = (0x3 ^ 0x5) << 4 ^ (3 << 2 ^ 0x1);
            final int n3 = 4 << 3 ^ 0x2;
            final int length = a.length();
            final char[] array = new char[length];
            int n4;
            int i = n4 = length - 1;
            final char[] array2 = array;
            final int n5 = n3;
            final int n6 = n2;
            int n7 = n;
            final int n8 = n;
            final String s = string;
            while (i >= 0) {
                final char[] array3 = array2;
                final int n9 = n6;
                final int n10 = n4--;
                array3[n10] = (char)(n9 ^ (a.charAt(n10) ^ s.charAt(n7)));
                if (n4 < 0) {
                    break;
                }
                final char[] array4 = array2;
                final int n11 = n5;
                final int n12 = n4;
                final char c = (char)(n11 ^ (a.charAt(n12) ^ s.charAt(n7)));
                --n4;
                --n7;
                array4[n12] = c;
                if (n7 < 0) {
                    n7 = n8;
                }
                i = n4;
            }
            return new String(array2);
        }
    }
    
    Code:
       j = new int[]{99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22};
            B = new int[]{82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125};
            a = new int[]{141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, 203};
        }
    }
    
     
    Last edited by FaTaL_ErRoR, Sep 11, 2016
  12. BullyWiiPlaza
    OP

    BullyWiiPlaza Nintendo Hacking <3

    Member
    1,666
    1,369
    Aug 2, 2014
    Germany
    I updated the application
    Actually, yeah you do xD
     
    the_randomizer likes this.
  13. the_randomizer

    the_randomizer The Temp's official fox whisperer

    Member
    20,723
    9,712
    Apr 29, 2011
    United States
    Dr. Wahwee's castle
    Well, I have IDA Pro, full version (long story), but it's cool that we no longer need the SDK to use this :P
     
  14. asper

    asper GBAtemp Advanced Fan

    Member
    593
    301
    May 14, 2010
    United States
    This app is useful indeed !
    I will only make the unpack function saving to a new file and not overwrite the existing one.
     
    BullyWiiPlaza likes this.
  15. BullyWiiPlaza
    OP

    BullyWiiPlaza Nintendo Hacking <3

    Member
    1,666
    1,369
    Aug 2, 2014
    Germany
    That is how the wiiurpxtool.exe does it so I pretty much can't control it
     
  16. hippy dave

    hippy dave Butts Butts Megabutts

    Member
    2,568
    1,791
    Apr 30, 2012
    Make your app copy it to a new file, and then unpack that one?
     
    BullyWiiPlaza likes this.
  17. pwsincd

    pwsincd Garage Flower

    Member
    3,304
    1,700
    Dec 4, 2011
    Manchester UK
    this is free right ? :P
     
  18. BullyWiiPlaza
    OP

    BullyWiiPlaza Nintendo Hacking <3

    Member
    1,666
    1,369
    Aug 2, 2014
    Germany
    Implemented now. :P

    DRPX/DRPL are the decompressed files so that nobody gets confused with which files are compressed or decompressed.
     
    the_randomizer, hippy dave and asper like this.