BCrypt.Net.BCrypt.EKSKey C# (CSharp) Method

EKSKey() private method

Perform the "enhanced key schedule" step described by Provos and Mazieres in "A Future- Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
private EKSKey ( byte saltBytes, byte inputBytes ) : void
saltBytes byte Salt byte array.
inputBytes byte Input byte array.
return void
        private void EKSKey(byte[] saltBytes, byte[] inputBytes)
        {
            int i;
            int passwordOffset = 0,
                saltOffset = 0;
            uint[] lr = { 0, 0 };
            int plen = _P.Length, slen = _S.Length;

            for (i = 0; i < plen; i++)
                _P[i] = _P[i] ^ StreamToWord(inputBytes, ref passwordOffset);

            for (i = 0; i < plen; i += 2)
            {
                lr[0] ^= StreamToWord(saltBytes, ref saltOffset);
                lr[1] ^= StreamToWord(saltBytes, ref saltOffset);
                Encipher(lr, 0);
                _P[i] = lr[0];
                _P[i + 1] = lr[1];
            }

            for (i = 0; i < slen; i += 2)
            {
                lr[0] ^= StreamToWord(saltBytes, ref saltOffset);
                lr[1] ^= StreamToWord(saltBytes, ref saltOffset);
                Encipher(lr, 0);
                _S[i] = lr[0];
                _S[i + 1] = lr[1];
            }
        }