fn encode_state(state: &State) -> usize