1c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.file	"ghash-x86.s"
2c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.text
3c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.globl	gcm_gmult_4bit_x86
4c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	gcm_gmult_4bit_x86,@function
5c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
6c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionitagcm_gmult_4bit_x86:
7c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_gcm_gmult_4bit_x86_begin:
8c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebp
9c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebx
10c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%esi
11c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%edi
12c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	subl	$84,%esp
13c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	104(%esp),%edi
14c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	108(%esp),%esi
15c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	(%edi),%ebp
16c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	4(%edi),%edx
17c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	8(%edi),%ecx
18c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	12(%edi),%ebx
19c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$0,16(%esp)
20c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$471859200,20(%esp)
21c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$943718400,24(%esp)
22c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$610271232,28(%esp)
23c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$1887436800,32(%esp)
24c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$1822425088,36(%esp)
25c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$1220542464,40(%esp)
26c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$1423966208,44(%esp)
27c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$3774873600,48(%esp)
28c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$4246732800,52(%esp)
29c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$3644850176,56(%esp)
30c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$3311403008,60(%esp)
31c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$2441084928,64(%esp)
32c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$2376073216,68(%esp)
33c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$2847932416,72(%esp)
34c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$3051356160,76(%esp)
35c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebp,(%esp)
36c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edx,4(%esp)
37c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,8(%esp)
38c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,12(%esp)
39c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrl	$20,%ebx
40c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%ebx
41c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	4(%esi,%ebx,1),%ebp
42c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	(%esi,%ebx,1),%edx
43c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	12(%esi,%ebx,1),%ecx
44c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	8(%esi,%ebx,1),%ebx
45c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	%eax,%eax
46c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$15,%edi
47c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L000x86_loop
48c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
49c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L000x86_loop:
50c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	%bl,%al
51c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%ecx,%ebx
52c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andb	$15,%al
53c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%edx,%ecx
54c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%ebp,%edx
55c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrl	$4,%ebp
56c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	16(%esp,%eax,4),%ebp
57c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	(%esp,%edi,1),%al
58c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andb	$240,%al
59c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	8(%esi,%eax,1),%ebx
60c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	12(%esi,%eax,1),%ecx
61c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	(%esi,%eax,1),%edx
62c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	4(%esi,%eax,1),%ebp
63c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	decl	%edi
64c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	js	.L001x86_break
65c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	%bl,%al
66c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%ecx,%ebx
67c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andb	$15,%al
68c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%edx,%ecx
69c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%ebp,%edx
70c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrl	$4,%ebp
71c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	16(%esp,%eax,4),%ebp
72c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	(%esp,%edi,1),%al
73c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%al
74c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	8(%esi,%eax,1),%ebx
75c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	12(%esi,%eax,1),%ecx
76c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	(%esi,%eax,1),%edx
77c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	4(%esi,%eax,1),%ebp
78c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L000x86_loop
79c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
80c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L001x86_break:
81c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%ebx
82c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%ecx
83c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%edx
84c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%ebp
85c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	104(%esp),%edi
86c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,12(%edi)
87c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,8(%edi)
88c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edx,4(%edi)
89c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebp,(%edi)
90c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$84,%esp
91c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%edi
92c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%esi
93c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebx
94c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebp
95c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
96c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	gcm_gmult_4bit_x86,.-.L_gcm_gmult_4bit_x86_begin
97c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.globl	gcm_ghash_4bit_x86
98c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	gcm_ghash_4bit_x86,@function
99c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
100c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionitagcm_ghash_4bit_x86:
101c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_gcm_ghash_4bit_x86_begin:
102c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebp
103c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebx
104c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%esi
105c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%edi
106c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	subl	$84,%esp
107c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	104(%esp),%ebx
108c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	108(%esp),%esi
109c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	112(%esp),%edi
110c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	116(%esp),%ecx
111c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	%edi,%ecx
112c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,116(%esp)
113c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	(%ebx),%ebp
114c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	4(%ebx),%edx
115c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	8(%ebx),%ecx
116c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	12(%ebx),%ebx
117c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$0,16(%esp)
118c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$471859200,20(%esp)
119c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$943718400,24(%esp)
120c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$610271232,28(%esp)
121c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$1887436800,32(%esp)
122c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$1822425088,36(%esp)
123c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$1220542464,40(%esp)
124c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$1423966208,44(%esp)
125c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$3774873600,48(%esp)
126c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$4246732800,52(%esp)
127c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$3644850176,56(%esp)
128c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$3311403008,60(%esp)
129c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$2441084928,64(%esp)
130c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$2376073216,68(%esp)
131c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$2847932416,72(%esp)
132c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$3051356160,76(%esp)
133c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
134c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L002x86_outer_loop:
135c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	12(%edi),%ebx
136c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	8(%edi),%ecx
137c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	4(%edi),%edx
138c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	(%edi),%ebp
139c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,12(%esp)
140c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,8(%esp)
141c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edx,4(%esp)
142c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebp,(%esp)
143c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrl	$20,%ebx
144c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%ebx
145c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	4(%esi,%ebx,1),%ebp
146c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	(%esi,%ebx,1),%edx
147c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	12(%esi,%ebx,1),%ecx
148c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	8(%esi,%ebx,1),%ebx
149c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	%eax,%eax
150c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$15,%edi
151c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L003x86_loop
152c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
153c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L003x86_loop:
154c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	%bl,%al
155c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%ecx,%ebx
156c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andb	$15,%al
157c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%edx,%ecx
158c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%ebp,%edx
159c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrl	$4,%ebp
160c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	16(%esp,%eax,4),%ebp
161c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	(%esp,%edi,1),%al
162c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andb	$240,%al
163c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	8(%esi,%eax,1),%ebx
164c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	12(%esi,%eax,1),%ecx
165c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	(%esi,%eax,1),%edx
166c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	4(%esi,%eax,1),%ebp
167c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	decl	%edi
168c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	js	.L004x86_break
169c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	%bl,%al
170c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%ecx,%ebx
171c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andb	$15,%al
172c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%edx,%ecx
173c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrdl	$4,%ebp,%edx
174c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrl	$4,%ebp
175c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	16(%esp,%eax,4),%ebp
176c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	(%esp,%edi,1),%al
177c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%al
178c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	8(%esi,%eax,1),%ebx
179c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	12(%esi,%eax,1),%ecx
180c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	(%esi,%eax,1),%edx
181c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	4(%esi,%eax,1),%ebp
182c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L003x86_loop
183c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
184c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L004x86_break:
185c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%ebx
186c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%ecx
187c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%edx
188c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%ebp
189c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	112(%esp),%edi
190c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	16(%edi),%edi
191c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	cmpl	116(%esp),%edi
192c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edi,112(%esp)
193c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jb	.L002x86_outer_loop
194c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	104(%esp),%edi
195c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,12(%edi)
196c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,8(%edi)
197c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edx,4(%edi)
198c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebp,(%edi)
199c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$84,%esp
200c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%edi
201c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%esi
202c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebx
203c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebp
204c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
205c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	gcm_ghash_4bit_x86,.-.L_gcm_ghash_4bit_x86_begin
206c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	_mmx_gmult_4bit_inner,@function
207c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
208c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita_mmx_gmult_4bit_inner:
209c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	%ecx,%ecx
210c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,%edx
211c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	%dl,%cl
212c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
213c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
214c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	8(%esi,%ecx,1),%mm0
215c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	(%esi,%ecx,1),%mm1
216c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
217c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
218c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
219c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
220c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
221c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	14(%edi),%cl
222c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
223c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
224c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
225c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
226c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
227c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
228c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
229c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
230c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
231c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
232c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
233c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
234c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
235c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
236c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
237c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
238c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
239c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
240c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
241c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
242c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
243c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
244c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	13(%edi),%cl
245c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
246c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
247c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
248c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
249c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
250c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
251c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
252c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
253c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
254c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
255c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
256c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
257c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
258c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
259c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
260c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
261c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
262c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
263c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
264c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
265c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
266c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
267c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
268c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	12(%edi),%cl
269c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
270c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
271c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
272c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
273c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
274c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
275c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
276c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
277c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
278c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
279c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
280c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
281c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
282c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
283c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
284c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
285c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
286c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
287c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
288c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
289c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
290c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
291c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
292c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	11(%edi),%cl
293c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
294c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
295c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
296c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
297c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
298c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
299c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
300c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
301c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
302c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
303c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
304c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
305c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
306c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
307c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
308c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
309c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
310c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
311c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
312c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
313c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
314c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
315c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
316c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	10(%edi),%cl
317c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
318c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
319c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
320c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
321c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
322c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
323c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
324c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
325c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
326c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
327c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
328c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
329c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
330c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
331c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
332c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
333c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
334c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
335c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
336c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
337c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
338c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
339c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
340c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	9(%edi),%cl
341c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
342c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
343c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
344c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
345c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
346c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
347c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
348c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
349c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
350c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
351c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
352c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
353c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
354c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
355c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
356c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
357c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
358c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
359c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
360c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
361c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
362c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
363c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
364c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	8(%edi),%cl
365c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
366c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
367c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
368c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
369c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
370c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
371c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
372c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
373c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
374c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
375c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
376c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
377c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
378c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
379c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
380c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
381c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
382c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
383c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
384c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
385c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
386c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
387c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
388c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	7(%edi),%cl
389c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
390c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
391c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
392c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
393c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
394c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
395c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
396c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
397c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
398c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
399c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
400c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
401c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
402c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
403c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
404c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
405c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
406c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
407c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
408c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
409c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
410c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
411c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
412c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	6(%edi),%cl
413c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
414c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
415c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
416c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
417c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
418c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
419c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
420c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
421c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
422c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
423c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
424c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
425c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
426c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
427c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
428c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
429c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
430c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
431c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
432c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
433c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
434c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
435c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
436c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	5(%edi),%cl
437c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
438c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
439c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
440c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
441c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
442c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
443c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
444c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
445c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
446c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
447c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
448c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
449c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
450c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
451c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
452c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
453c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
454c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
455c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
456c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
457c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
458c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
459c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
460c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	4(%edi),%cl
461c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
462c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
463c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
464c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
465c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
466c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
467c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
468c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
469c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
470c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
471c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
472c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
473c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
474c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
475c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
476c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
477c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
478c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
479c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
480c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
481c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
482c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
483c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
484c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	3(%edi),%cl
485c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
486c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
487c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
488c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
489c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
490c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
491c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
492c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
493c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
494c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
495c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
496c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
497c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
498c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
499c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
500c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
501c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
502c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
503c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
504c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
505c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
506c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
507c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
508c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	2(%edi),%cl
509c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
510c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
511c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
512c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
513c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
514c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
515c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
516c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
517c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
518c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
519c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
520c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
521c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
522c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
523c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
524c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
525c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
526c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
527c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
528c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
529c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
530c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
531c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
532c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	1(%edi),%cl
533c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
534c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
535c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
536c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
537c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
538c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
539c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
540c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
541c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
542c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
543c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
544c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
545c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
546c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
547c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
548c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
549c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
550c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
551c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
552c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
553c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
554c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
555c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
556c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movb	(%edi),%cl
557c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
558c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
559c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
560c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
561c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,%edx
562c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
563c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
564c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shlb	$4,%cl
565c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
566c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
567c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
568c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%ecx,1),%mm0
569c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
570c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$240,%edx
571c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebp,8),%mm1
572c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebx
573c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%ecx,1),%mm1
574c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebp
575c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
576c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm0
577c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movq	%mm1,%mm2
578c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$4,%mm1
579c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	8(%esi,%edx,1),%mm0
580c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psllq	$60,%mm2
581c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%eax,%ebx,8),%mm1
582c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$15,%ebp
583c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	(%esi,%edx,1),%mm1
584c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ebx
585c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%mm2,%mm0
586c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	4(%eax,%ebp,8),%edi
587c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$32,%mm0
588c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm1,%edx
589c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrlq	$32,%mm1
590c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm0,%ecx
591c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movd	%mm1,%ebp
592c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shll	$4,%edi
593c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%ebx
594c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%edx
595c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%ecx
596c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	%edi,%ebp
597c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	bswap	%ebp
598c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
599c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	_mmx_gmult_4bit_inner,.-_mmx_gmult_4bit_inner
600c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.globl	gcm_gmult_4bit_mmx
601c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	gcm_gmult_4bit_mmx,@function
602c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
603c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionitagcm_gmult_4bit_mmx:
604c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_gcm_gmult_4bit_mmx_begin:
605c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebp
606c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebx
607c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%esi
608c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%edi
609c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	20(%esp),%edi
610c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	24(%esp),%esi
611c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	.L005pic_point
612c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L005pic_point:
613c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%eax
614c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	.Lrem_4bit-.L005pic_point(%eax),%eax
615c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movzbl	15(%edi),%ebx
616c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_mmx_gmult_4bit_inner
617c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	20(%esp),%edi
618c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	emms
619c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,12(%edi)
620c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edx,4(%edi)
621c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,8(%edi)
622c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebp,(%edi)
623c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%edi
624c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%esi
625c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebx
626c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebp
627c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
628c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	gcm_gmult_4bit_mmx,.-.L_gcm_gmult_4bit_mmx_begin
629c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.globl	gcm_ghash_4bit_mmx
630c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	gcm_ghash_4bit_mmx,@function
631c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
632c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionitagcm_ghash_4bit_mmx:
633c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_gcm_ghash_4bit_mmx_begin:
634c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebp
635c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebx
636c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%esi
637c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%edi
638c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	20(%esp),%ebp
639c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	24(%esp),%esi
640c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	28(%esp),%edi
641c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	32(%esp),%ecx
642c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	.L006pic_point
643c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L006pic_point:
644c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%eax
645c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	.Lrem_4bit-.L006pic_point(%eax),%eax
646c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	%edi,%ecx
647c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,32(%esp)
648c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	subl	$20,%esp
649c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	12(%ebp),%ebx
650c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	4(%ebp),%edx
651c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	8(%ebp),%ecx
652c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	(%ebp),%ebp
653c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L007mmx_outer_loop
654c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
655c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L007mmx_outer_loop:
656c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	12(%edi),%ebx
657c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	4(%edi),%edx
658c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	8(%edi),%ecx
659c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	(%edi),%ebp
660c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edi,48(%esp)
661c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,12(%esp)
662c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edx,4(%esp)
663c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,8(%esp)
664c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebp,(%esp)
665c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%esp,%edi
666c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrl	$24,%ebx
667c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_mmx_gmult_4bit_inner
668c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	48(%esp),%edi
669c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	16(%edi),%edi
670c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	cmpl	52(%esp),%edi
671c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jb	.L007mmx_outer_loop
672c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	40(%esp),%edi
673c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	emms
674c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,12(%edi)
675c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edx,4(%edi)
676c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ecx,8(%edi)
677c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebp,(%edi)
678c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$20,%esp
679c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%edi
680c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%esi
681c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebx
682c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebp
683c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
684c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	gcm_ghash_4bit_mmx,.-.L_gcm_ghash_4bit_mmx_begin
685c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	64
686c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.Lrem_4bit:
687c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	0,0,0,29491200,0,58982400,0,38141952
688c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	0,117964800,0,113901568,0,76283904,0,88997888
689c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	0,235929600,0,265420800,0,227803136,0,206962688
690c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	0,152567808,0,148504576,0,177995776,0,190709760
691c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	64
692c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L008rem_8bit:
693c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	0,450,900,582,1800,1738,1164,1358
694c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	3600,4050,3476,3158,2328,2266,2716,2910
695c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	7200,7650,8100,7782,6952,6890,6316,6510
696c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	4656,5106,4532,4214,5432,5370,5820,6014
697c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	14400,14722,15300,14854,16200,16010,15564,15630
698c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	13904,14226,13780,13334,12632,12442,13020,13086
699c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	9312,9634,10212,9766,9064,8874,8428,8494
700c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	10864,11186,10740,10294,11640,11450,12028,12094
701c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	28800,28994,29444,29382,30600,30282,29708,30158
702c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	32400,32594,32020,31958,31128,30810,31260,31710
703c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	27808,28002,28452,28390,27560,27242,26668,27118
704c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	25264,25458,24884,24822,26040,25722,26172,26622
705c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	18624,18690,19268,19078,20424,19978,19532,19854
706c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	18128,18194,17748,17558,16856,16410,16988,17310
707c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	21728,21794,22372,22182,21480,21034,20588,20910
708c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	23280,23346,22900,22710,24056,23610,24188,24510
709c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	57600,57538,57988,58182,58888,59338,58764,58446
710c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	61200,61138,60564,60758,59416,59866,60316,59998
711c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	64800,64738,65188,65382,64040,64490,63916,63598
712c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	62256,62194,61620,61814,62520,62970,63420,63102
713c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	55616,55426,56004,56070,56904,57226,56780,56334
714c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	55120,54930,54484,54550,53336,53658,54236,53790
715c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	50528,50338,50916,50982,49768,50090,49644,49198
716c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	52080,51890,51444,51510,52344,52666,53244,52798
717c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	37248,36930,37380,37830,38536,38730,38156,38094
718c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	40848,40530,39956,40406,39064,39258,39708,39646
719c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	36256,35938,36388,36838,35496,35690,35116,35054
720c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	33712,33394,32820,33270,33976,34170,34620,34558
721c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	43456,43010,43588,43910,44744,44810,44364,44174
722c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	42960,42514,42068,42390,41176,41242,41820,41630
723c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	46560,46114,46692,47014,45800,45866,45420,45230
724c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.value	48112,47666,47220,47542,48376,48442,49020,48830
725c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
726c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
727c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
728c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	0
729