docs: def recv_message(self, debug=False):
          """
          Reading socket and receiving message from server. Check the CRC32.
          """
          if debug:
              packet = self.sock.recv(1024)  # reads how many bytes to read
              hexdump(packet)
  
          packet_length_data = self.sock.recv(4)  # reads how many bytes to read
  
          if len(packet_length_data) < 4:
              raise Exception("Nothing in the socket!")
          packet_length = struct.unpack("<I", packet_length_data)[0]
          packet = self.sock.recv(packet_length - 4)  # read the rest of bytes from socket
  
          # check the CRC32
          if not crc32(packet_length_data + packet[0:-4]) == struct.unpack('<I', packet[-4:])[0]:
              raise Exception("CRC32 was not correct!")
          x = struct.unpack("<I", packet[:4])
          auth_key_id = packet[4:12]
          if auth_key_id == b'\x00\x00\x00\x00\x00\x00\x00\x00':
              # No encryption - Plain text
              (message_id, message_length) = struct.unpack("<QI", packet[12:24])
              data = packet[24:24+message_length]
          elif auth_key_id == self.auth_key_id:
              pass
              message_key = packet[12:28]
              encrypted_data = packet[28:-4]
              aes_key, aes_iv = self.aes_calculate(message_key, direction="from server")
              decrypted_data = crypt.ige_decrypt(encrypted_data, aes_key, aes_iv)
              assert decrypted_data[0:8] == self.server_salt
              assert decrypted_data[8:16] == self.session_id
              message_id = decrypted_data[16:24]
              seq_no = struct.unpack("<I", decrypted_data[24:28])[0]
              message_data_length = struct.unpack("<I", decrypted_data[28:32])[0]
              data = decrypted_data[32:32+message_data_length]
          else:
              raise Exception("Got unknown auth_key id")
          return data