1.global memset
2.type memset,@function
3memset:
4	mov 12(%esp),%ecx
5	cmp $62,%ecx
6	ja 2f
7
8	mov 8(%esp),%dl
9	mov 4(%esp),%eax
10	test %ecx,%ecx
11	jz 1f
12
13	mov %dl,%dh
14
15	mov %dl,(%eax)
16	mov %dl,-1(%eax,%ecx)
17	cmp $2,%ecx
18	jbe 1f
19
20	mov %dx,1(%eax)
21	mov %dx,(-1-2)(%eax,%ecx)
22	cmp $6,%ecx
23	jbe 1f
24
25	shl $16,%edx
26	mov 8(%esp),%dl
27	mov 8(%esp),%dh
28
29	mov %edx,(1+2)(%eax)
30	mov %edx,(-1-2-4)(%eax,%ecx)
31	cmp $14,%ecx
32	jbe 1f
33
34	mov %edx,(1+2+4)(%eax)
35	mov %edx,(1+2+4+4)(%eax)
36	mov %edx,(-1-2-4-8)(%eax,%ecx)
37	mov %edx,(-1-2-4-4)(%eax,%ecx)
38	cmp $30,%ecx
39	jbe 1f
40
41	mov %edx,(1+2+4+8)(%eax)
42	mov %edx,(1+2+4+8+4)(%eax)
43	mov %edx,(1+2+4+8+8)(%eax)
44	mov %edx,(1+2+4+8+12)(%eax)
45	mov %edx,(-1-2-4-8-16)(%eax,%ecx)
46	mov %edx,(-1-2-4-8-12)(%eax,%ecx)
47	mov %edx,(-1-2-4-8-8)(%eax,%ecx)
48	mov %edx,(-1-2-4-8-4)(%eax,%ecx)
49
501:	ret
51
522:	movzbl 8(%esp),%eax
53	mov %edi,12(%esp)
54	imul $0x1010101,%eax
55	mov 4(%esp),%edi
56	test $15,%edi
57	mov %eax,-4(%edi,%ecx)
58	jnz 2f
59
601:	shr $2, %ecx
61	rep
62	stosl
63	mov 4(%esp),%eax
64	mov 12(%esp),%edi
65	ret
66
672:	xor %edx,%edx
68	sub %edi,%edx
69	and $15,%edx
70	mov %eax,(%edi)
71	mov %eax,4(%edi)
72	mov %eax,8(%edi)
73	mov %eax,12(%edi)
74	sub %edx,%ecx
75	add %edx,%edi
76	jmp 1b
77