; Help-backed INVOKE contract: Win64 register and stack argument placement.
section .text
global main

check_args:
    cmp ecx, 1
    jne fail
    cmp edx, 2
    jne fail
    cmp r8d, 3
    jne fail
    cmp r9d, 4
    jne fail
    cmp dword [rsp + 40], 5
    jne fail
    mov eax, 42
    ret
fail:
    mov eax, 1
    ret

main:
    sub rsp, 40
    invoke check_args, 1, 2, 3, 4, 5
    add rsp, 40
    ret
