/******************************************************************************
*									      *
*  COMPUTE 64-BIT DIFFERENCE						      *
*  11/13/06 (dkc)							      *
*									      *
******************************************************************************/
unsigned int carry(unsigned int a, unsigned int b, unsigned int sum);
void differ(unsigned int *a, unsigned int *b) {
unsigned int high0,high1,low0,low1,templo,temphi,temp,c;
high0=*a;
low0=*(a+1);
high1=*b;
low1=*(b+1);

low1=~low1;
high1=~high1;
temp=low1+1;
c=carry(low1,1,temp);
low1=temp;
high1+=c;

templo=low0+low1;
c=carry(low0,low1,templo);
temphi=high0+high1+c;
*b=temphi;
*(b+1)=templo;
return;
}