segment .text
global popcnt_array ; let the linker know about popcnt_array
popcnt_array:
push r12
push r13
push r14
push r15
xor eax, eax
xor r8d, r8d
xor r9d, r9d
xor r14d, r14d
xor r15d, r15d
.count_more:
popcnt r10, [rcx+r9*8]
add rax, r10
popcnt r11, [rcx+r9*8+8]
add r8, r11
popcnt r12, [rcx+r9*8+16]
add r14, r12
popcnt r13, [rcx+r9*8+24]
add r15, r13
add r9, 4
cmp r9, rdx
jl .count_more
add rax, r8
add rax, r14
add rax, r15
pop r15
pop r14
pop r13
pop r12
ret