.global memset .type memset,@function memset: mov 12(%esp),%ecx cmp $62,%ecx ja 2f movzbl 8(%esp),%edx mov 4(%esp),%eax test %ecx,%ecx jz 1f mov %dl,%dh mov %dl,(%eax) mov %dl,-1(%eax,%ecx) cmp $2,%ecx jbe 1f mov %dx,1(%eax) mov %dx,(-1-2)(%eax,%ecx) cmp $6,%ecx jbe 1f shl $8,%edx mov %dh,%dl shl $8,%edx mov %dh,%dl mov %edx,(1+2)(%eax) mov %edx,(-1-2-4)(%eax,%ecx) cmp $14,%ecx jbe 1f mov %edx,(1+2+4)(%eax) mov %edx,(1+2+4+4)(%eax) mov %edx,(-1-2-4-8)(%eax,%ecx) mov %edx,(-1-2-4-4)(%eax,%ecx) cmp $30,%ecx jbe 1f mov %edx,(1+2+4+8)(%eax) mov %edx,(1+2+4+8+4)(%eax) mov %edx,(1+2+4+8+8)(%eax) mov %edx,(1+2+4+8+12)(%eax) mov %edx,(-1-2-4-8-16)(%eax,%ecx) mov %edx,(-1-2-4-8-12)(%eax,%ecx) mov %edx,(-1-2-4-8-8)(%eax,%ecx) mov %edx,(-1-2-4-8-4)(%eax,%ecx) 1: ret 2: mov %edi,12(%esp) movzbl 8(%esp),%eax mov $0x01010101,%edx imul %edx,%eax mov %ecx,%edx lea -5(%ecx),%ecx mov 4(%esp),%edi shr $2, %ecx mov %eax,(%edi) mov %eax,-8(%edi,%edx) mov %eax,-4(%edi,%edx) add $4,%edi and $-4,%edi rep stosl mov 4(%esp),%eax ret