.global memset .type memset,@function memset: mov 12(%esp),%ecx cmp $62,%ecx ja 2f mov 8(%esp),%dl 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: movzbl 8(%esp),%eax mov %edi,12(%esp) imul $0x1010101,%eax mov 4(%esp),%edi test $15,%edi mov %eax,-4(%edi,%ecx) jnz 2f 1: shr $2, %ecx rep stosl mov 4(%esp),%eax mov 12(%esp),%edi ret 2: xor %edx,%edx sub %edi,%edx and $15,%edx mov %eax,(%edi) mov %eax,4(%edi) mov %eax,8(%edi) mov %eax,12(%edi) sub %edx,%ecx add %edx,%edi jmp 1b