diff --git a/crypto/bn/bn_asm.c b/crypto/bn/bn_asm.c index 7f4c3ff3b2..286a0f1e74 100644 --- a/crypto/bn/bn_asm.c +++ b/crypto/bn/bn_asm.c @@ -266,16 +266,16 @@ BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d) for (;;) { - t=(h-q*dh); + t=(h-(th=q*dh)); + tl=BN_MASK2; if ((t&BN_MASK2h) || - ((dl*q) <= ( - (t<>BN_BITS4)))) break; q--; } - th=q*dh; - tl=q*dl; + if (tl==BN_MASK2) tl=q*dl; t=(tl>>BN_BITS4); tl=(tl<