w&=BN_MASK2;
int BN_add_word(BIGNUM *a, BN_ULONG w)	{	BN_ULONG l;	int i;	if (a->neg)		{		a->neg=0;		i=BN_sub_word(a,w);		if (!BN_is_zero(a))			a->neg=!(a->neg);		return(i);		}	w&=BN_MASK2;	if (bn_wexpand(a,a->top+1) == NULL) return(0);	i=0;	for (;;)		{		if (i >= a->top)			l=w;		else			l=(a->d[i]+(BN_ULONG)w)&BN_MASK2;		a->d[i]=l;		if (w > l)			w=1;		else			break;		i++;		}	if (i >= a->top)		a->top++;	bn_check_top(a);	return(1);	}