BN_ULONG *A,*B;
BN_ULONG *A; const BN_ULONG *B;
BIGNUM *BN_copy(BIGNUM *a, BIGNUM *b)	{	int i;	BN_ULONG *A,*B;	bn_check_top(b);	if (a == b) return(a);	if (bn_wexpand(a,b->top) == NULL) return(NULL);#if 1	A=a->d;	B=b->d;	for (i=b->top&(~7); i>0; i-=8)		{		A[0]=B[0];		A[1]=B[1];		A[2]=B[2];		A[3]=B[3];		A[4]=B[4];		A[5]=B[5];		A[6]=B[6];		A[7]=B[7];		A+=8;		B+=8;		}	switch (b->top&7)		{	case 7:		A[6]=B[6];	case 6:		A[5]=B[5];	case 5:		A[4]=B[4];	case 4:		A[3]=B[3];	case 3:		A[2]=B[2];	case 2:		A[1]=B[1];	case 1:		A[0]=B[0];        case 0:		/* I need the 'case 0' entry for utrix cc.		 * If the optimiser is turned on, it does the		 * switch table by doing		 * a=top&7		 * a--;		 * goto jump_table[a];		 * If top is 0, this makes us jump to 0xffffffc which is		 * rather bad :-(.		 * eric 23-Apr-1998		 */		;		}#else	memcpy(a->d,b->d,sizeof(b->d[0])*b->top);#endif/*	memset(&(a->d[b->top]),0,sizeof(a->d[0])*(a->max-b->top));*/	a->top=b->top;	if ((a->top == 0) && (a->d != NULL))		a->d[0]=0;	a->neg=b->neg;	return(a);	}