if (!BN_uadd(r,a,b)) return(0);
int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)	{	const BIGNUM *tmp;	bn_check_top(a);	bn_check_top(b);	/*  a +  b	a+b	 *  a + -b	a-b	 * -a +  b	b-a	 * -a + -b	-(a+b)	 */	if (a->neg ^ b->neg)		{		/* only one is negative */		if (a->neg)			{ tmp=a; a=b; b=tmp; }		/* we are now a - b */		if (BN_ucmp(a,b) < 0)			{			if (!BN_usub(r,b,a)) return(0);			r->neg=1;			}		else			{			if (!BN_usub(r,a,b)) return(0);			r->neg=0;			}		return(1);		}	if (a->neg) /* both are neg */		r->neg=1;	else		r->neg=0;	if (!BN_uadd(r,a,b)) return(0);	return(1);	}