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