.global memset .type memset,@function memset: movzbq %sil,%rax mov $0x101010101010101,%r8 imul %r8,%rax lea -1(%rdx),%rcx cmp $126,%rcx jae 2f mov %sil,(%rdi) mov %sil,-1(%rdi,%rdx) cmp $2,%edx jbe 1f mov %ax,1(%rdi) mov %ax,(-1-2)(%rdi,%rdx) cmp $6,%edx jbe 1f mov %eax,(1+2)(%rdi) mov %eax,(-1-2-4)(%rdi,%rdx) cmp $14,%edx jbe 1f mov %rax,(1+2+4)(%rdi) mov %rax,(-1-2-4-8)(%rdi,%rdx) cmp $30,%edx jbe 1f mov %rax,(1+2+4+8)(%rdi) mov %rax,(1+2+4+8+8)(%rdi) mov %rax,(-1-2-4-8-16)(%rdi,%rdx) mov %rax,(-1-2-4-8-8)(%rdi,%rdx) cmp $62,%edx jbe 1f mov %rax,(1+2+4+8+16)(%rdi) mov %rax,(1+2+4+8+16+8)(%rdi) mov %rax,(1+2+4+8+16+16)(%rdi) mov %rax,(1+2+4+8+16+24)(%rdi) mov %rax,(-1-2-4-8-16-32)(%rdi,%rdx) mov %rax,(-1-2-4-8-16-24)(%rdi,%rdx) mov %rax,(-1-2-4-8-16-16)(%rdi,%rdx) mov %rax,(-1-2-4-8-16-8)(%rdi,%rdx) 1: mov %rdi,%rax ret 2: test %rdx,%rdx jz 1b mov %rdi,%r8 mov %rax,(%rdi) mov %rax,-16(%rdi,%rdx) mov %rax,-8(%rdi,%rdx) add $8,%rdi sub $8,%rcx and $-8,%rdi shr $3,%rcx rep stosq mov %r8,%rax ret