1pub fn lambda_process(data: &[u8], seed: u64) -> Vec<u8> {
3 let mut n: u128 = if seed == 0 { 42 } else { seed as u128 };
4 let mut result = Vec::with_capacity(data.len());
5
6 for &byte in data {
7 let mut keystream_byte: u8 = 0;
8 for i in 0..8 {
9 if n % 2 == 0 {
10 n /= 2;
11 } else {
12 n = n.wrapping_mul(3).wrapping_add(1);
13 keystream_byte |= 1 << i;
14 }
15 if n <= 1 {
16 n = (seed as u128).wrapping_add(keystream_byte as u128).wrapping_add(i as u128);
17 }
18 if n > (u64::MAX as u128) {
19 n = (n % (u64::MAX as u128)) + 7;
20 }
21 }
22 result.push(byte ^ keystream_byte);
23 }
24 result
25}