You and your team have successfully intercepted a message from the enemy, which could win you the war! But the message is encrypted with a difficult cipher, and your textbook's instructions for deciphering the same are badly burnt and hardly readable. Can you still decipher the message?
The message:
5dcb 3b80 6a00 7fa7 7701 81a4 7035 3608 1533 0008 54cb d205 f0f9 ad30 79aa 2e68 3aa6 9e4a 8b40 18d3 4152 a896 7617 71d5 1c00 6274 48e3 7209 0392 0b64 aea6 d205 f0f9 d732 0a60 a6da b0e9 0040
The textbook:
When the Enemy has brought hither his Message, it will be encrypted in ####-###-#########, which can be decoded by splitting each #### into ####-###-chunks. To convert, add fifty-nine to each #### which has been #####, by keeping only the least-significant ones. One may use the Function below to get the ####-###-chunks.
The textbook's function:
#define LSB1 0x01
#define LSB2 0x03
#define LSB3 0x07
#define LSB4 0x0F
#define LSB5 0x1F
static void write_as_ascii(uint8_t *dec, uint8_t *data) {
dec[0] = (data[0] >> 3) & LSB5;
dec[1] = ((data[0] & ####) << #) | (data[1] >> 6) & ####;
dec[2] = (data[1] >> 1) & LSB5;
dec[3] = ((data[#] & LSB1) << 4) | (data[2] >> #) & ####;
dec[4] = ((data[2] & ####) << 1) | (data[3] >> 7) & LSB1;
dec[5] = (data[#] >> 2) & LSB5;
dec[6] = ((data[3] & ####) << 3) | (data[4] >> 5) & LSB3;
dec[7] = data[4] & LSB5;
}
What does the message say in English?