
typedef unsigned char unit;
typedef unit *unitptr;
extern short global_precision;
typedef __SIZE_TYPE__ size_t;
extern void *memcpy (void *dest, const void *src, size_t n);

short mp_compare(const unit* r1, const unit* r2)
{
  register short precision;
  precision = global_precision;
  (r1) = ((r1)+(precision)-1);
  (r2) = ((r2)+(precision)-1);
  do
    { if (*r1 < *r2)
	return(-1);
      if (*((r1)--) > *((r2)--))
	return(1);
    } while (--precision);
}

static unit modulus[((1280+(2*8))/8)];
static unit d_data[((1280+(2*8))/8)*2];

int upton_modmult (unitptr prod, unitptr multiplicand, unitptr multiplier)
{
 unitptr d = d_data;
 while (mp_compare(d,modulus) > 0)
   memcpy((void*)(prod), (const void*)(d), (global_precision));
}
