Hi guys,

As I am working on a 194 and changed the login protocol for myself a lot I thought I would share it would you guys.

Code:
aClass5_764 = new Class5(this, 994, method98(43594 + anInt917)); // Socket connection to server
            aClass5_764.method153(aClass35_Sub2_Sub3_901.aByteArray1157, 0, 8); // read one long (8 bytes)
            aClass35_Sub2_Sub3_901.anInt1158 = 0; // First 8 bytes from server containing ISAAC server key
            aLong842 = aClass35_Sub2_Sub3_901.method395(720); // read a long (first ISAAC key from server side)
            int[] is = new int[4]; // Complete ISAAC key

            is[0] = (int) (Math.random() * 9.9999999E7); // generate a client side key
            is[1] = (int) (Math.random() * 9.9999999E7); // generate second part of client side key
            is[2] = (int) (aLong842 >> 32); // Split server key in two ints
            is[3] = (int) aLong842; // split server key in two ints
            aClass35_Sub2_Sub3_959.anInt1158 = 0; // Encrypted login packet buffer
            aClass35_Sub2_Sub3_959.method381(10); // dummy unsigned byte
            aClass35_Sub2_Sub3_959.method384(is[0]); // ISAAC key client side part 1
            aClass35_Sub2_Sub3_959.method384(is[1]); // ISAAC key client side part 2
            aClass35_Sub2_Sub3_959.method384(is[2]); // ISAAC key server side part 1
            aClass35_Sub2_Sub3_959.method384(is[3]); // ISAAC key server side part 2
            aClass35_Sub2_Sub3_959.method384(i); // int, 4 bytes thus (dummy, always 0)
            aClass35_Sub2_Sub3_959.method386(string); // username, RSString (String, suffixed by an unsigned byte with value 10)
            aClass35_Sub2_Sub3_959.method386(string_834); // password, RSString (String, suffixed by an unsigned byte with value 10)
            aClass35_Sub2_Sub3_959.method404(aBigInteger786, aBigInteger694, -623); // RSA encrypt the login block
            aClass35_Sub2_Sub3_937.anInt1158 = 0; // Actual login block, this is sended FIRST
            if (bool) { // if reconnecting
                aClass35_Sub2_Sub3_937.method381(18); // unsigned byte
            } else {
                aClass35_Sub2_Sub3_937.method381(16); // unsigned byte
            }
            aClass35_Sub2_Sub3_937.method381(aClass35_Sub2_Sub3_959.anInt1158 + 32 + 1); // unsigned byte (RSA encrypted block's packet size in bytes)
            aClass35_Sub2_Sub3_937.method381(194); // unsigned byte (revision)
            for (int i_835 = 0; i_835 < 8; i_835++) {
                aClass35_Sub2_Sub3_937.method384(anIntArray717[i_835]);
            }
            aClass35_Sub2_Sub3_937.method387(2, (aClass35_Sub2_Sub3_959.aByteArray1157), 0, aClass35_Sub2_Sub3_959.anInt1158);
            aClass35_Sub2_Sub3_959.aClass34_1162 = new Class34(true, is); // initialize packet ENCRYPTION (client -> server, traffic)
            for (int i_836 = 0; i_836 < 4; i_836++) { // loop 4 times
                is[i_836] += 50; // slightly modify the ISAAC key
            }
            aClass34_646 = new Class34(true, is); // initialize packet DECRYPTION (server-> client, traffic)
            aClass5_764.method154(aClass35_Sub2_Sub3_937.aByteArray1157, aClass35_Sub2_Sub3_937.anInt1158, false, 0); // sends the RSA encrypted block
            int i_837 = aClass5_764.method151(); // unsigned byte (response code of the server)
If you have any questions, feel free to drop them here
If you don't know what to do with this nor implement it, then gtfu

Edit for Bot:
Green = handshake
Red = encrypted/actual login packet