Ah! Racked my brain on this one all day. Close but not quite.
I'm thinking the Hermming Code doesn't quite add up as the CRC code is 7 bits for sure and there are max 40 bits of data. There may be only 36 bits of data if you remove the first 4.
Anyhow, massaged code and implemented bit interpretation ....
And here is a very good reference, it starts slow, builds foundation, and covers all the common CRCs.
https://faculty.etsu.edu/tarnoff/ntes2150/Ch9_v02.pdfStarted.
Started.
0xA1 82 47 FF FF 0x5A 0b10100001 10000010 01000111 11111111 11111111 0b01011010 =?= 00110111
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:24}
0xA1 82 46 FF FF 0x5B 0b10100001 10000010 01000110 11111111 11111111 0b01011011 =?= 00111000
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:23}
0xA1 82 45 FF FF 0x59 0b10100001 10000010 01000101 11111111 11111111 0b01011001 =?= 00111001
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:22}
0xA1 82 44 FF FF 0x58 0b10100001 10000010 01000100 11111111 11111111 0b01011000 =?= 00111010
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:21}
0xA1 82 43 FF FF 0x5E 0b10100001 10000010 01000011 11111111 11111111 0b01011110 =?= 00111011
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:20}
0xA1 82 42 FF FF 0x5F 0b10100001 10000010 01000010 11111111 11111111 0b01011111 =?= 00111100
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:19}
0xA1 98 42 FF FF 0x44 0b10100001 10011000 01000010 11111111 11111111 0b01000100 =?= 00100110
{IsOn:1, Instr:1, Mode:0, FanSpeed:3, IsSleepOn:0, SetTemp:19}
0xA1 98 43 FF FF 0x45 0b10100001 10011000 01000011 11111111 11111111 0b01000101 =?= 00100101
{IsOn:1, Instr:1, Mode:0, FanSpeed:3, IsSleepOn:0, SetTemp:20}
0xA1 98 44 FF FF 0x42 0b10100001 10011000 01000100 11111111 11111111 0b01000010 =?= 00100100
{IsOn:1, Instr:1, Mode:0, FanSpeed:3, IsSleepOn:0, SetTemp:21}
0xA1 98 45 FF FF 0x43 0b10100001 10011000 01000101 11111111 11111111 0b01000011 =?= 00100011
{IsOn:1, Instr:1, Mode:0, FanSpeed:3, IsSleepOn:0, SetTemp:22}
0xA1 98 47 FF FF 0x41 0b10100001 10011000 01000111 11111111 11111111 0b01000001 =?= 00100001
{IsOn:1, Instr:1, Mode:0, FanSpeed:3, IsSleepOn:0, SetTemp:24}
0xA1 98 48 FF FF 0x4A 0b10100001 10011000 01001000 11111111 11111111 0b01001010 =?= 00100000
{IsOn:1, Instr:1, Mode:0, FanSpeed:3, IsSleepOn:0, SetTemp:25}
0xA1 98 49 FF FF 0x4B 0b10100001 10011000 01001001 11111111 11111111 0b01001011 =?= 00011111
{IsOn:1, Instr:1, Mode:0, FanSpeed:3, IsSleepOn:0, SetTemp:26}
0xA1 98 4A FF FF 0x48 0b10100001 10011000 01001010 11111111 11111111 0b01001000 =?= 00011110
{IsOn:1, Instr:1, Mode:0, FanSpeed:3, IsSleepOn:0, SetTemp:27}
0xA1 98 4B FF FF 0x49 0b10100001 10011000 01001011 11111111 11111111 0b01001001 =?= 00011101
{IsOn:1, Instr:1, Mode:0, FanSpeed:3, IsSleepOn:0, SetTemp:28}
0xA1 81 49 FF FF 0x56 0b10100001 10000001 01001001 11111111 11111111 0b01010110 =?= 00110110
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:26}
0xA1 81 48 FF FF 0x57 0b10100001 10000001 01001000 11111111 11111111 0b01010111 =?= 00110111
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:25}
0xA1 81 47 FF FF 0x58 0b10100001 10000001 01000111 11111111 11111111 0b01011000 =?= 00111000
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:24}
0xA1 81 46 FF FF 0x59 0b10100001 10000001 01000110 11111111 11111111 0b01011001 =?= 00111001
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:23}
0xA1 81 45 FF FF 0x5A 0b10100001 10000001 01000101 11111111 11111111 0b01011010 =?= 00111010
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:22}
0xA1 81 44 FF FF 0x5B 0b10100001 10000001 01000100 11111111 11111111 0b01011011 =?= 00111011
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:21}
0xA1 81 43 FF FF 0x5C 0b10100001 10000001 01000011 11111111 11111111 0b01011100 =?= 00111100
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:20}
0xA1 81 42 FF FF 0x5D 0b10100001 10000001 01000010 11111111 11111111 0b01011101 =?= 00111101
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:19}
0xA1 9B 42 FF FF 0x46 0b10100001 10011011 01000010 11111111 11111111 0b01000110 =?= 00100011
{IsOn:1, Instr:1, Mode:3, FanSpeed:3, IsSleepOn:0, SetTemp:19}
0xA1 9B 43 FF FF 0x47 0b10100001 10011011 01000011 11111111 11111111 0b01000111 =?= 00100010
{IsOn:1, Instr:1, Mode:3, FanSpeed:3, IsSleepOn:0, SetTemp:20}
0xA1 9B 44 FF FF 0x41 0b10100001 10011011 01000100 11111111 11111111 0b01000001 =?= 00100001
{IsOn:1, Instr:1, Mode:3, FanSpeed:3, IsSleepOn:0, SetTemp:21}
0xA1 9B 45 FF FF 0x40 0b10100001 10011011 01000101 11111111 11111111 0b01000000 =?= 00100000
{IsOn:1, Instr:1, Mode:3, FanSpeed:3, IsSleepOn:0, SetTemp:22}
0xA1 9B 46 FF FF 0x42 0b10100001 10011011 01000110 11111111 11111111 0b01000010 =?= 00011111
{IsOn:1, Instr:1, Mode:3, FanSpeed:3, IsSleepOn:0, SetTemp:23}
0xA1 9B 47 FF FF 0x43 0b10100001 10011011 01000111 11111111 11111111 0b01000011 =?= 00011110
{IsOn:1, Instr:1, Mode:3, FanSpeed:3, IsSleepOn:0, SetTemp:24}
0xA1 9B 48 FF FF 0x49 0b10100001 10011011 01001000 11111111 11111111 0b01001001 =?= 00011101
{IsOn:1, Instr:1, Mode:3, FanSpeed:3, IsSleepOn:0, SetTemp:25}
0xA1 E3 48 FF FF 0x25 0b10100001 11100011 01001000 11111111 11111111 0b00100101 =?= 11010101
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:1, SetTemp:25}
0xA1 E3 47 FF FF 0x2B 0b10100001 11100011 01000111 11111111 11111111 0b00101011 =?= 11010110
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:1, SetTemp:24}
0xA1 E3 46 FF FF 0x2A 0b10100001 11100011 01000110 11111111 11111111 0b00101010 =?= 11010111
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:1, SetTemp:23}
0xA1 E3 45 FF FF 0x28 0b10100001 11100011 01000101 11111111 11111111 0b00101000 =?= 11011000
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:1, SetTemp:22}
0xA1 A4 5E FF FF 0x7B 0b10100001 10100100 01011110 11111111 11111111 0b01111011 =?= 11111110
{IsOn:1, Instr:1, Mode:4, FanSpeed:0, IsSleepOn:0, SetTemp:31}
0xA1 94 5E FF FF 0x5B 0b10100001 10010100 01011110 11111111 11111111 0b01011011 =?= 00001110
{IsOn:1, Instr:1, Mode:4, FanSpeed:2, IsSleepOn:0, SetTemp:31}
0xA1 9C 5E FF FF 0x53 0b10100001 10011100 01011110 11111111 11111111 0b01010011 =?= 00000110
{IsOn:1, Instr:1, Mode:4, FanSpeed:3, IsSleepOn:0, SetTemp:31}
0xA1 A4 5E FF FF 0x7B 0b10100001 10100100 01011110 11111111 11111111 0b01111011 =?= 11111110
{IsOn:1, Instr:1, Mode:4, FanSpeed:0, IsSleepOn:0, SetTemp:31}
0xA1 82 45 FF FF 0x59 0b10100001 10000010 01000101 11111111 11111111 0b01011001 =?= 00111001
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:22}
0xA1 C2 45 FF FF 0x19 0b10100001 11000010 01000101 11111111 11111111 0b00011001 =?= 11111001
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:1, SetTemp:22}
0xA1 C2 44 FF FF 0x18 0b10100001 11000010 01000100 11111111 11111111 0b00011000 =?= 11111010
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:1, SetTemp:21}
0xA1 C2 43 FF FF 0x1E 0b10100001 11000010 01000011 11111111 11111111 0b00011110 =?= 11111011
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:1, SetTemp:20}
0xA1 C2 41 FF FF 0x1D 0b10100001 11000010 01000001 11111111 11111111 0b00011101 =?= 11111101
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:1, SetTemp:18}