No registers involved. This is the macro.
LOCAL64 MACRO arg1
LOCAL var, pvar
.data?
var QWORD ?
.data
pvar QWORD var
.code
arg1 = pvar
ENDM
Its a re-assignable equate that is renamed to the user's preference. What I have not nutted out yet is how to do structures.
This is the disassembly.
0x00000001`40001000: 4883EC28 sub rsp,0x28
0x00000001`40001004: B940000000 mov ecx,0x0000000000000040
0x00000001`40001009: 48BA000000000100 mov rdx,0x0000000100000000
0x00000001`40001013: FF15EF0F0000 call qword ptr [kernel32.dll!GlobalAlloc]
0x00000001`40001019: 4883C428 add rsp,0x28
0x00000001`4000101D: 48890547200000 mov qword ptr [0x000000014000306B],rax
The pseudo local variable is the QWORD address on the last line that rax is copied into.