For one thing if you want to use the same code for 32 and 64, in a "master" include file write something like this:
if use64
else
eax equ rax
....
esi equ rsi
...
endif
Then just use rax, rbx, rsi etc as if it were 64-bit code. For instance in this snippet you would just write "PermReg equ rsi". if use64 is not set, it will use esi instead.
Anyway, of course you can do "Now equ [PermReg.SYSTEMTIME]", but it's clumsier compared to ASSUME. I don't really remember all the little gotcha's. It's been more than a year since I hassled with ML64. As long as you're only doing it in one little routine, as you show here, it's fine, but if using it more extensively (for an important structure, throughout the whole program) there are problems.
Well, I could recommend you glance through my old code to see some of these techniques. When I was learning, I extensively read your code, qWord's, and everyone else's: it's a great way to shorten the learning curve. But you're not going to do that. Clearly you guys will have to go through the whole process yourselves, make the same mistakes, re-invent the wheel, and undoubtedly wind up (after a few months) using H/JWasm like the rest of us. Have fun!
[EDIT] I mean you could learn a few things about 64-bit, especially making the same code compatible with 32 and 64, from my old code. When it comes to overall assembler programming, of course you and hutch know a lot more than I do, don't mean to imply otherwise.