Looks like you have done some interesting work here. If you write a prologue/epilogue pair of macros, you can do both high level and low level procedures. The high level ones look like this.
WndProc proc hWin:QWORD,uMsg:QWORD,wParam:QWORD,lParam:QWORD
For high level you automate the filling of the shadow space with the first 4 register arguments and can use any of the arguments directly. Low level bypasses all of this passing directly in the 4 registers to a procedure that has no stack frame. The number of registers when used correctly make algorithms a lot easier to write and you can avoid using the stack, just a slightly different brain to Win32.