In 64-bit assembly programming, you cannot push immediate values to the stack :
hwnd=CreateWindowEx(
WS_EX_CLIENTEDGE,
szClassName,
"Simple window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 480, 400,
NULL, NULL, hInstance, NULL);
assembled as :
xor eax, eax
mov qword ptr [rsp+58H], rax
mov qword ptr [rsp+50H], rbx
xor eax, eax
mov qword ptr [rsp+48H], rax
xor eax, eax
mov qword ptr [rsp+40H], rax
mov eax, 400
mov dword ptr [rsp+38H], eax
mov eax, 480
mov dword ptr [rsp+30H], eax
mov eax, 2147483648
mov dword ptr [rsp+28H], eax
mov eax, 2147483648
mov dword ptr [rsp+20H], eax
mov r9d, 13565952
lea r8, ptr [@337]
lea rdx, ptr [szClassName]
mov ecx, 512
call qword ptr [__imp_CreateWindowExA]