/// <summary> /// Returns the hardcoded client revision string from the Outgoing[4000] message class. /// </summary> /// <returns></returns> public string GetClientRevision() { if (!string.IsNullOrWhiteSpace(_clientRevision)) { return(_clientRevision); } if (!(OutgoingMessages?.ContainsKey(4000) ?? false)) { return(string.Empty); } ASInstance outgoingInstance = OutgoingMessages[4000].Instance; ASMethod method = outgoingInstance.FindFirstMethod(null, "Array"); if (method == null) { return(string.Empty); } using (var inCode = new FlashReader(method.Body.Bytecode)) { object[] values = inCode.ReadValuesUntil(OPCode.PushString); var pushStringIndex = (int)values[0]; _clientRevision = method.ABC.Constants.Strings[pushStringIndex]; } return(_clientRevision); }