[ ] check copy_nonoverlapping instead of copy_from_slice
[ ] tests for error cases
[ ] abstract length reading and u{8,16,32,64}::from_be_bytes calls
[ ] check elf size and call traces using serde
[ ] assert_eq!(&data, ...) => assert_eq!(data, ...)
[ ] PosImm => ImmPos
[ ] decode with buffer.peak() and then buffer.read()
[ ] add permissive flag for numeric conversions (e.g. u8 -> f32)
