@whydoubt Thank you :)
I noticed this in `msi.c` when I was adding the MD5 checksum code, but it felt like such an ugly hack to me that I decided to borrow the code itself. I believe it is an ugly hack because it looks like the structure `MD5_CTX` has been copied all over wherever MD5 hash is needed, when it should honestly be opaque. After looking into it further, it appears it follows the exact implementation defined in rfc1321. Albeit, I still very much disapprove of redefining the `MD5_CTX` wherever MD5 hashing is required...