The structure of the decoders is based off arm-dis.c from binutils.
(Eventually) a reasonably complete ARM implementation in Haskell