Чую подвох, но рискну размяться:
## Код:
```
MODULE M;

   IMPORT Kernel;
   
   PROCEDURE P (IN a: ARRAY OF INTEGER; size: INTEGER): INTEGER;
      VAR i, res: INTEGER;
   BEGIN
      i := 0; WHILE (a[i] # -1) & (a[i] + 8 <= a[i + 1]) DO INC(i) END;
      IF a[i] = -1 THEN res := -1
      ELSE res := a[i] + 4; IF res + 4 > size THEN res := -1 END
      END;
      RETURN res
   END P;
   
   PROCEDURE LookupMarkOffs (t: Kernel.Type): INTEGER;
   BEGIN RETURN P(t.ptroffs, t.size)
   END LookupMarkOffs;

END M.
```
