- pop bp ; ebp <- offset @Base\r
- mov cs:[esi + (offset SavedSs - offset @Base)], edx\r
- mov cs:[esi + (offset SavedEsp - offset @Base)], bx\r
+ pop bp ; ebp <- address of @Base\r
+ DB 67h ; address size override\r
+ push [esp + sizeof (IA32_REGS) + 2]\r
+ lea eax, [esi + (@RealMode - @Base)]\r
+ push eax\r
+ retf\r
+@RealMode:\r
+ mov cs:[esi + (SavedSs - @Base)], edx\r
+ mov cs:[esi + (SavedEsp - @Base)], bx\r