Я бы на твоем месте все же посмотрел, во что транслируется эта команда "mul Pos". Потому что Pos - как ты сам говоришь, в регистре, а регистр затирается.
Только вот еще одна вещь.
Есть команда SHL, которая не занимается медленным умножением, а сдвигает биты, что равносильно умножению на 2^x. При умножении на степень двойки (а число 4 - вторая степень двойки) SHL гораздо проще, быстрее и удобнее. Может и проблем меньше будет.
Что до оптимизации - не могу ничего сказать. Тут уже многое зависит от реализации самой делфы. Надо смотреть на сгенерированный ассемблерный код методов, чтобы понять, что не так. У меня, например, были случаи, когда VisualStudio при использовании встроенного ассемблера иногда не догадывалась сохранить регистры, или наоборот сохраняла их лишний раз и меняла тем самым все смещения от EBP. У делфи может быть то же самое в каких-то случаях.