loop
exitwhen (toSubtract.prev.digit*base + toSubtract.prev.prev.digit <= remainder.prev.digit*base + remainder.prev.prev.digit)
set guess1 = guess - ((toSubtract.prev.digit*base + toSubtract.prev.prev.digit) - (remainder.prev.digit*base + remainder.prev.prev.digit))/divisor.prev.digit
static if DEBUG_MSGS then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Guess 1: "+I2S(guess1))
endif
exitwhen (0 >= guess1 or base <= guess1 or guess1 == guess)
call toSubtract.multFast(base, divisor, guess1)
if (guess1 + 5 > guess and guess1 - 5 < guess) then
set guess = guess1
exitwhen true
endif
set guess = guess1
static if DEBUG_MSGS then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"To Subtract 1: "+toSubtract.toString())
endif
if (remainder.size > toSubtract.size) then
set guess2 = guess + ((remainder.prev.digit*base + remainder.prev.prev.digit) - (toSubtract.prev.digit))/divisor.prev.digit
else
if (remainder.prev.digit > toSubtract.prev.digit) then
set guess2 = guess + ((remainder.prev.digit*base + remainder.prev.prev.digit) - (toSubtract.prev.digit*base + toSubtract.prev.prev.digit))/divisor.prev.digit
else
set guess2 = guess + (remainder.prev.prev.digit - toSubtract.prev.prev.digit)/divisor.prev.digit + (divisor.prev.prev.digit + base/2)/base
endif
endif
static if DEBUG_MSGS then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Guess 2: "+I2S(guess2))
endif
exitwhen (base <= guess2 or 0 >= guess2 or guess1 == guess2)
call toSubtract.multFast(base, divisor, guess2)
if (guess2 + 5 > guess and guess2 - 5 < guess) then
set guess = guess2
exitwhen true
endif
set guess = guess2
static if DEBUG_MSGS then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"To Subtract 2: "+toSubtract.toString())
endif
endloop