.global memset .type memset,@function memset: movzbq %sil,%rax mov $0x101010101010101,%r8 imul %r8,%rax cmp $126,%rdx ja 2f test %edx,%edx jz 1f 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 $15,%edi mov %rdi,%r8 mov %rax,-8(%rdi,%rdx) mov %rdx,%rcx jnz 2f 1: shr $3,%rcx rep stosq mov %r8,%rax ret 2: xor %edx,%edx sub %edi,%edx and $15,%edx mov %rax,(%rdi) mov %rax,8(%rdi) sub %rdx,%rcx add %rdx,%rdi jmp 1b