Index: /trunk/source/level-0/X86/X8632/x8632-bignum.lisp
===================================================================
--- /trunk/source/level-0/X86/X8632/x8632-bignum.lisp	(revision 11079)
+++ /trunk/source/level-0/X86/X8632/x8632-bignum.lisp	(revision 11080)
@@ -863,7 +863,5 @@
 					  (xidx 4) #|(ra 0)|#
 					  (yptr arg_y) (yidx arg_z))
-  (movl (% ebp) (@ 20 (% esp)))
-  (leal (@ 20 (% esp)) (% ebp))
-  (popl (@ 4 (% ebp)))
+  (save-stackargs-frame 4)
   (push (% arg_y))
   (push (% arg_z))
@@ -874,4 +872,7 @@
   (movd (% imm0) (% mm0))		;save guess
 
+  @loop
+  (movl (@ (% esp)) (% yidx))
+  (movl (@ 4 (% esp)) (% yptr))
   (movd (@ (- x8632::misc-data-offset 0) (% yptr) (% yidx)) (% mm1)) ;y1 (high)
   ;; (%multiply guess y1)
@@ -897,5 +898,5 @@
   (sbbl (% eax) (% edx))
   (movd (% edx) (% mm7))		;save high digit
-  ;; guess is now either good, or one too large
+  ;; see if guess is suitable
   ;; if (and (= high-digit 0)
   (test (% edx) (% edx))
@@ -933,5 +934,5 @@
   (subl ($ 1) (% imm0))
   (movd (% imm0) (% mm0))
-  (jmp @return))
+  (jmp @loop))
 
 ;;; If x[i] = y[j], return the all ones digit (as two halves).
