private RemotePlayContext SendInitControlMessages(Socket udpClient)
        {
            /******** Initial control message 1 ********/

            byte[]         controlMessage1Payload            = HexUtil.Unhexlify("0064006400004823");
            ushort         initialControlMessage1PayloadSize = (ushort)(12 + controlMessage1Payload.Length);
            ControlMessage initialMessage1 = new ControlMessage(0, 0, 0, 0, 1, 0, initialControlMessage1PayloadSize, 0x4823, 0x19000);

            initialMessage1.UnParsedPayload = controlMessage1Payload;
            byte[]        initialControlMessage1Data = GetByteArrayForControlMessage(initialMessage1);
            ControlResult initControlResult1         = SendControlDataAndWaitForAnswer(udpClient, initialControlMessage1Data, 1, "Send Init Control message 1");

            if (!initControlResult1.WasSuccessful)
            {
                return(null);
            }

            ControlMessage initialAnswer1 = initControlResult1.ControlMessages[0];

            /******** Initial control message 2 ********/

            byte[]       initialAnswer1Payload = initialAnswer1.UnParsedPayload;
            MemoryStream memoryBuffer          = new MemoryStream(initialAnswer1Payload)
            {
                Position = 8
            };

            byte[] funcIncrBuffer = new byte[4];
            memoryBuffer.Read(funcIncrBuffer, 0, funcIncrBuffer.Length);
            uint funcIncrValue = ByteUtil.ByteArrayToUInt(funcIncrBuffer);

            memoryBuffer.Position = 28;
            byte[] lastAnswerPart = new byte[memoryBuffer.Length - memoryBuffer.Position];
            memoryBuffer.Read(lastAnswerPart, 0, lastAnswerPart.Length);
            byte[] funcIncr   = ByteUtil.UIntToByteArray(initialAnswer1.FuncIncr);
            byte[] classValue = ByteUtil.UIntToByteArray(initialAnswer1.ClassValue);

            byte[] controlMessage2Payload            = ByteUtil.ConcatenateArrays(funcIncr, classValue, funcIncr, lastAnswerPart);
            ushort initialControlMessage2PayloadSize = (ushort)(12 + controlMessage2Payload.Length);

            ControlMessage controlMessage2 = new ControlMessage(0, initialAnswer1.FuncIncr, 0, 0, 10, 0, initialControlMessage2PayloadSize, funcIncrValue, initialAnswer1.ReceiverId);

            controlMessage2.UnParsedPayload = controlMessage2Payload;
            byte[] initialControlMessage2Data = GetByteArrayForControlMessage(controlMessage2);

            ControlResult initControlResult2 = SendControlDataAndWaitForAnswer(udpClient, initialControlMessage2Data, 1, "Send Init Control message 2");

            if (!initControlResult2.WasSuccessful)
            {
                return(null);
            }

            RemotePlayContext remotePlayContext = new RemotePlayContext()
            {
                ReceiverId = initialAnswer1.FuncIncr,
                FuncIncr   = initialMessage1.FuncIncr
            };

            return(remotePlayContext);
        }