The LZMA implementation used deviates from the spec slightly, looking at the header:
5d 00 00 80 00 cc 20 3c 00 ef a7 10 00
5d is packed lc, lp, pb bits, and 00 00 80 00 (8 MiB) is the dictionary size, as expected.
The next 8 bytes should be uncompressed file size as an unsigned little-endian 64 bit integer, but it isn't. Instead it is two unsigned 32 bit little-endian integers representing:
cc 20 3c 00 (3940556 bytes) uncompressed file size
ef a7 10 00 (1091567 bytes) compressed file size
Zero out the last 4 bytes and it decompresses without issue:
5d 00 00 80 00 cc 20 3c 00 00 00 00 00