Also, on the topic of potential optimizations, there are a lot more subtle benefits from "loading things when needed, as opposed to at the start". One example is that we don't need to load NNZ values if the CBP is all-zero, so it makes sense to only load load the NNZ values from fill_caches *after* decoding the CBP. Dark Shikari