I've made a lot of progress with the Deadwood decompression code today; see the snapshots or the changelog for details.
One issue I'm having is that a function in DwCompress.c is exceeding the 52-line limit for functions; I will resolve this once DNS decompression is working. Another place where a function exceeds the 52-line limit is in DwStr.c, with the function dw_dnsname_convert() exceeds 52 lines.
In all of the cases, it's an issue where the complexity of DNS makes it so the functions have been spilling over.
I will work on splitting out parts of these functions in to sub-functions once DwCompress.c is doing basic DNS packet decompression.