In my main function in C++ I pass 6 int arguments to a subroutine written in assembly x64. The first four arguments are in registers but I'm struggling with getting the last two from stack. Here's my code:
.code
myProc1 proc a:DWORD, b:DWORD, c:DWORD, d:DWORD, e:DWORD, f:DWORD
 push rbp
 mov rbp, rsp
 sub rsp, 32  ; allocate shadow space 'padding'
 sub rsp, 16  ; allocate space for fifth and sixth argument
 mov DWORD PTR [rsp + 20h], e  ; push fifth argument
 mov DWORD PTR [rsp + 24h], f  ; push sixth argument
 mov rsp, rbp
 pop rbp
 ret
myProc1 endp
end
When I try to push e i f on stack I'm getting "invalid instruction operands". And I just don't know how else to try to push dword on stack.
I've tried using push and pop on qwords but then e and f value isn't as it should be. I'm guessing it's because int and qword are different sizes.
 
    