{
void BN_CTX_end(BN_CTX *ctx)	{	if (ctx == NULL) return;	assert(ctx->depth > 0);	if (ctx->depth == 0)		/* should never happen, but we can tolerate it if not in		 * debug mode (could be a 'goto err' in the calling function		 * before BN_CTX_start was reached) */		BN_CTX_start(ctx);	ctx->too_many = 0;	ctx->depth--;	/* It appears some "scrapbook" uses of BN_CTX result in BIGNUMs being	 * left in an inconsistent state when they are released (eg. BN_div).	 * These can trip us up when they get reused, so the safest fix is to	 * make sure the BIGNUMs are made sane when the context usage is	 * releasing them. */	if (ctx->depth < BN_CTX_NUM_POS)#if 0		ctx->tos = ctx->pos[ctx->depth];#else		{		while(ctx->tos > ctx->pos[ctx->depth])			/* This ensures the BIGNUM is sane(r) for reuse. */			ctx->bn[--(ctx->tos)].top = 0;		}#endif	}