the macro-expansion of do-region looks okay now:
(SYMBOL-MACROLET ((SRC (AREF SRC #:G1202 #:G1204 #:G1206))
                  (DST (AREF DST #:G1203 #:G1205 #:G1207)))
  (LOOP FOR #:G1202 FROM (AREF ASTART 0 0) BELOW (AREF AEND 0 0)
        AND #:G1203 FROM (AREF ASTART 1 0) BELOW (AREF AEND 1 0)
        DO (LOOP FOR #:G1204 FROM (AREF ASTART 0 1) BELOW (AREF AEND 0 1)
                 AND #:G1205 FROM (AREF ASTART 1 1) BELOW (AREF AEND 1 1)
                 DO (LOOP FOR #:G1206 FROM (AREF ASTART 0 2) BELOW (AREF AEND 0
                                                                         2)
                          AND #:G1207 FROM (AREF ASTART 1 2) BELOW (AREF AEND 1
                                                                         2)
                          DO (SETF DST SRC)))))
the macro expands fine but sbcl complains when i want to use it in a function definition:

Control stack exhausted (no more space for function call frames).
This is probably due to heavily nested or infinitely recursive function
calls, or a tail call that SBCL cannot or has not optimized away.
a recursion in symbol-macrolet led to the control stack error

                         (SYMBOL-MACROLET ((SRC-A
                                              (AREF SRC #:G1002 #:G1004
                                                    #:G1006))
                                             (DST-A
                                              (AREF DST #:G1003 #:G1005
                                                    #:G1007)))
                             (SETF DST-A SRC-A))
instead of symbol-macrolet, introduce a macrolet that can receive optional offsets for the array indices:

(MACROLET ((SRC (&OPTIONAL (O-0 0) (O-1 0) (O-2 0))
                                        '(AREF SRC (+ O-0 #:G1062)
                                               (+ O-1 #:G1064)
                                               (+ O-2 #:G1066)))
                                      (DST (&OPTIONAL (O-0 0) (O-1 0) (O-2 0))
                                        '(AREF DST (+ O-0 #:G1063)
                                               (+ O-1 #:G1065)
                                               (+ O-2 #:G1067))))
                             (SETF (DST) (SRC))))))
implement offsets in do-region
the coordinate calculations in extract are wrong (probably original matlab code counts from 1)
padding seems to work in 2d