public static byte[] RC4(byte[] input, string pass) { bool flag = input == null || pass == null; byte[] result; if (flag) { result = null; } else { byte[] array = new byte[input.Length]; byte[] key = AuthCode.GetKey(AuthCode.encoding.GetBytes(pass), 256); long num = 0L; long num2 = 0L; for (int i = 0; i < input.Length; i += 1) { num = (num + 1L) % key.Length; num2 = (num2 + key[num]) % key.Length; checked { byte b = key[num]; key[num] = key[num2]; key[num2] = b; byte b2 = input[i]; byte b3 = key[(key[num] + key[num2]) % key.Length]; array[i] = (byte)(b2 ^ b3); } } result = array; } return(result); }