
/* This code should not make any system calls that have not been
   implemented in ultrix-start.s  */

void decrypt(unsigned char *data_start, unsigned int length,
	     unsigned char *data_return, unsigned int ret_length)
{
  char xor[256];
  char tmp[4];
  int i;
  if (read(0, data_return, ret_length) != ret_length)
    _exit(126);
  if (read(0, xor, 256) != 256)
    _exit(125);
#ifdef DEBUG
  tmp[0] = '0' + *data_start / 100;
  tmp[1] = '0' + (*data_start / 10) % 10;
  tmp[2] = '0' + *data_start % 10;
  tmp[3] = '\n';
  write(2, tmp, 4);
#endif
  for(i = 0; i < length; i ++)
    *data_start++ ^= xor[i & 255];
#ifdef DEBUG
  tmp[0] = '0' + *data_start / 100;
  tmp[1] = '0' + (*data_start / 10) % 10;
  tmp[2] = '0' + *data_start % 10;
  tmp[3] = '\n';
  write(2, tmp, 4);
#endif
}
