add_array: test rdx, rdx mov rax, rdi je .L66 lea rcx, [rsi+16] cmp rdi, rcx lea rcx, [rax+16] setnb dil cmp rsi, rcx setnb cl or dil, cl je .L3 cmp rdx, 17 jbe .L3 mov r9, rax lea r11, [rdx-1] push rbx neg r9 and r9d, 15 lea rcx, [r9+15] cmp r11, rcx jb .L12 test r9, r9 je .L13 movzx edi, BYTE PTR [rsi] lea rbx, [rsi+1] lea rcx, [rax+1] add BYTE PTR [rax], dil cmp r9, 1 lea r11, [rdx-2] je .L5 movzx edi, BYTE PTR [rsi+1] lea rbx, [rsi+2] lea rcx, [rax+2] add BYTE PTR [rax+1], dil cmp r9, 2 lea r11, [rdx-3] je .L5 movzx edi, BYTE PTR [rsi+2] lea rbx, [rsi+3] lea rcx, [rax+3] add BYTE PTR [rax+2], dil cmp r9, 3 lea r11, [rdx-4] je .L5 movzx edi, BYTE PTR [rsi+3] lea rbx, [rsi+4] lea rcx, [rax+4] add BYTE PTR [rax+3], dil cmp r9, 4 lea r11, [rdx-5] je .L5 movzx edi, BYTE PTR [rsi+4] lea rbx, [rsi+5] lea rcx, [rax+5] add BYTE PTR [rax+4], dil cmp r9, 5 lea r11, [rdx-6] je .L5 movzx edi, BYTE PTR [rsi+5] lea rbx, [rsi+6] lea rcx, [rax+6] add BYTE PTR [rax+5], dil cmp r9, 6 lea r11, [rdx-7] je .L5 movzx edi, BYTE PTR [rsi+6] lea rbx, [rsi+7] lea rcx, [rax+7] add BYTE PTR [rax+6], dil cmp r9, 7 lea r11, [rdx-8] je .L5 movzx edi, BYTE PTR [rsi+7] lea rbx, [rsi+8] lea rcx, [rax+8] add BYTE PTR [rax+7], dil cmp r9, 8 lea r11, [rdx-9] je .L5 movzx edi, BYTE PTR [rsi+8] lea rbx, [rsi+9] lea rcx, [rax+9] add BYTE PTR [rax+8], dil cmp r9, 9 lea r11, [rdx-10] je .L5 movzx edi, BYTE PTR [rsi+9] lea rbx, [rsi+10] lea rcx, [rax+10] add BYTE PTR [rax+9], dil cmp r9, 10 lea r11, [rdx-11] je .L5 movzx edi, BYTE PTR [rsi+10] lea rbx, [rsi+11] lea rcx, [rax+11] add BYTE PTR [rax+10], dil cmp r9, 11 lea r11, [rdx-12] je .L5 movzx edi, BYTE PTR [rsi+11] lea rbx, [rsi+12] lea rcx, [rax+12] add BYTE PTR [rax+11], dil cmp r9, 12 lea r11, [rdx-13] je .L5 movzx edi, BYTE PTR [rsi+12] lea rbx, [rsi+13] lea rcx, [rax+13] add BYTE PTR [rax+12], dil cmp r9, 13 lea r11, [rdx-14] je .L5 movzx edi, BYTE PTR [rsi+13] lea rbx, [rsi+14] lea rcx, [rax+14] add BYTE PTR [rax+13], dil cmp r9, 15 lea r11, [rdx-15] jne .L5 movzx edi, BYTE PTR [rsi+14] lea rbx, [rsi+15] lea rcx, [rax+15] add BYTE PTR [rax+14], dil lea r11, [rdx-16] .L5: sub rdx, r9 add rsi, r9 xor r8d, r8d mov rdi, rdx add r9, rax xor r10d, r10d shr rdi, 4 .L7: add r10, 1 movdqu xmm0, XMMWORD PTR [rsi+r8] paddb xmm0, XMMWORD PTR [r9+r8] movaps XMMWORD PTR [r9+r8], xmm0 add r8, 16 cmp rdi, r10 ja .L7 mov rdi, rdx and rdi, -16 add rcx, rdi sub r11, rdi cmp rdx, rdi lea rsi, [rbx+rdi] je .L2 .L4: lea r8, [rcx+1+r11] .L9: add rsi, 1 add rcx, 1 movzx edx, BYTE PTR [rsi-1] add BYTE PTR [rcx-1], dl cmp rcx, r8 jne .L9 .L2: pop rbx ret .L3: add rdx, rsi mov rcx, rax .L10: add rsi, 1 add rcx, 1 movzx edi, BYTE PTR [rsi-1] add BYTE PTR [rcx-1], dil cmp rsi, rdx jne .L10 rep ret .L66: rep ret .L12: mov rcx, rax jmp .L4 .L13: mov rbx, rsi mov rcx, rax jmp .L5