int __fastcall HandleConnectionSuccess(int packetData)
{
int activeNetwork;
int playerId;
int sessionId;
unsigned __int8 usernameLength, tokenLength, versionLength;
char authToken[65];
unsigned __int8 *processedUsername;
unsigned __int8 packetBuffer[0x248];
unsigned __int8 tempBuffer[0x134];
if (GUI::pChat) {
Chat::AddDebugMessage(GUI::pChat, "Connected! Joining the game..");
}
activeNetwork = MultiPlayer::GetActiveNetwork();
Network::SetNetworkState(activeNetwork, 15);
RakNet::BitStream inputStream((int)tempBuffer, *(const void **)(packetData + 16), *(_DWORD *)(packetData + 8), 0);
inputStream.IgnoreBits(8);
inputStream.IgnoreBits(32);
inputStream.IgnoreBits(16);
inputStream.ReadBits((int)tempBuffer, &playerId, 16, 1);
inputStream.ReadBits((int)tempBuffer, &sessionId, 32, 1);
*(_WORD *)(*(_DWORD *)(MultiPlayer::GetActiveNetwork() + 884) + 4) = playerId;
tokenLength = MPSTRLEN("E02262CF28BC542486C558D4BE9EFB716592AFAF8B");
usernameLength = MPSTRLEN((_BYTE *)(MultiPlayer::GetActiveNetwork() + 337));
versionLength = MPSTRLEN("0.3.7");
DecryptData(authToken, byte_11BD770, 0x41, 0x4C);
processedUsername = ProcessUsernameData(LauncherWrapper::GetUsername());
RakNet::BitStream outputStream((int)packetBuffer);
outputStream.WriteBits((unsigned __int8 *)&sessionId, 32, 1);
outputStream.WriteBits(&usernameLength, 8, 1);
outputStream.Write((unsigned __int8 *)(MultiPlayer::GetActiveNetwork() + 337), usernameLength);
int encryptedSessionId = sessionId ^ 0xFD9;
outputStream.WriteBits((unsigned __int8 *)&encryptedSessionId, 32, 1);
outputStream.WriteBits(&tokenLength, 8, 1);
outputStream.Write(authToken, tokenLength);
outputStream.WriteBits(&versionLength, 8, 1);
outputStream.Write(processedUsername, versionLength);
SendPacket(activeNetwork, outputStream);
CleanupMemory(processedUsername);
return 0;
}