#include <iostream>

int main() {
    int arr[] = {43, -25, 14, 16, -25, 78, 69, 96, -18, 23};
    const int size = sizeof(arr) / sizeof(arr[0]);
    int even_count = 0;

    __asm__ (
        "movq $0, %%rcx \n\t"
        "movl $0, %%eax \n\t"
        "loop_start: \n\t"
        "cmpq %[size], %%rcx \n\t"
        "jge loop_end \n\t"
        "movl (%[arr], %%rcx, 4), %%ebx \n\t"
        "andl $1, %%ebx \n\t"
        "jz even_number \n\t"
        "jmp next_iteration \n\t"
        "even_number: \n\t"
        "incl %%eax \n\t"
        "next_iteration: \n\t"
        "incq %%rcx \n\t"
        "jmp loop_start \n\t"
        "loop_end: \n\t"
        "movl %%eax, %[count] \n\t"
        : [count] "=r" (even_count)
        : [arr] "r" (arr), [size] "r" ((long)size)
        : "rax", "rbx", "rcx"
    );

    std::cout << "Number of even elements: " << even_count << std::endl;

    return 0;
}
