VirtualBox

source: vbox/trunk/src/libs/openssl-3.1.7/crypto/genasm-nasm/poly1305-x86.S@ 107278

最後變更 在這個檔案從107278是 94320,由 vboxsync 提交於 3 年 前

libs/openssl-3.0.1: Export to OSE and fix copyright headers in Makefiles, bugref:10128

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 4.8 KB
 
1%ifidn __OUTPUT_FORMAT__,obj
2section code use32 class=code align=64
3%elifidn __OUTPUT_FORMAT__,win32
4section .text code align=64
5%else
6section .text code
7%endif
8align 64
9global _poly1305_init
10align 16
11_poly1305_init:
12L$_poly1305_init_begin:
13 push ebp
14 push ebx
15 push esi
16 push edi
17 mov edi,DWORD [20+esp]
18 mov esi,DWORD [24+esp]
19 mov ebp,DWORD [28+esp]
20 xor eax,eax
21 mov DWORD [edi],eax
22 mov DWORD [4+edi],eax
23 mov DWORD [8+edi],eax
24 mov DWORD [12+edi],eax
25 mov DWORD [16+edi],eax
26 mov DWORD [20+edi],eax
27 cmp esi,0
28 je NEAR L$000nokey
29 mov eax,DWORD [esi]
30 mov ebx,DWORD [4+esi]
31 mov ecx,DWORD [8+esi]
32 mov edx,DWORD [12+esi]
33 and eax,268435455
34 and ebx,268435452
35 and ecx,268435452
36 and edx,268435452
37 mov DWORD [24+edi],eax
38 mov DWORD [28+edi],ebx
39 mov DWORD [32+edi],ecx
40 mov DWORD [36+edi],edx
41 mov eax,0
42L$000nokey:
43 pop edi
44 pop esi
45 pop ebx
46 pop ebp
47 ret
48global _poly1305_blocks
49align 16
50_poly1305_blocks:
51L$_poly1305_blocks_begin:
52 push ebp
53 push ebx
54 push esi
55 push edi
56 mov edi,DWORD [20+esp]
57 mov esi,DWORD [24+esp]
58 mov ecx,DWORD [28+esp]
59L$001enter_blocks:
60 and ecx,-15
61 jz NEAR L$002nodata
62 sub esp,64
63 mov eax,DWORD [24+edi]
64 mov ebx,DWORD [28+edi]
65 lea ebp,[ecx*1+esi]
66 mov ecx,DWORD [32+edi]
67 mov edx,DWORD [36+edi]
68 mov DWORD [92+esp],ebp
69 mov ebp,esi
70 mov DWORD [36+esp],eax
71 mov eax,ebx
72 shr eax,2
73 mov DWORD [40+esp],ebx
74 add eax,ebx
75 mov ebx,ecx
76 shr ebx,2
77 mov DWORD [44+esp],ecx
78 add ebx,ecx
79 mov ecx,edx
80 shr ecx,2
81 mov DWORD [48+esp],edx
82 add ecx,edx
83 mov DWORD [52+esp],eax
84 mov DWORD [56+esp],ebx
85 mov DWORD [60+esp],ecx
86 mov eax,DWORD [edi]
87 mov ebx,DWORD [4+edi]
88 mov ecx,DWORD [8+edi]
89 mov esi,DWORD [12+edi]
90 mov edi,DWORD [16+edi]
91 jmp NEAR L$003loop
92align 32
93L$003loop:
94 add eax,DWORD [ebp]
95 adc ebx,DWORD [4+ebp]
96 adc ecx,DWORD [8+ebp]
97 adc esi,DWORD [12+ebp]
98 lea ebp,[16+ebp]
99 adc edi,DWORD [96+esp]
100 mov DWORD [esp],eax
101 mov DWORD [12+esp],esi
102 mul DWORD [36+esp]
103 mov DWORD [16+esp],edi
104 mov edi,eax
105 mov eax,ebx
106 mov esi,edx
107 mul DWORD [60+esp]
108 add edi,eax
109 mov eax,ecx
110 adc esi,edx
111 mul DWORD [56+esp]
112 add edi,eax
113 mov eax,DWORD [12+esp]
114 adc esi,edx
115 mul DWORD [52+esp]
116 add edi,eax
117 mov eax,DWORD [esp]
118 adc esi,edx
119 mul DWORD [40+esp]
120 mov DWORD [20+esp],edi
121 xor edi,edi
122 add esi,eax
123 mov eax,ebx
124 adc edi,edx
125 mul DWORD [36+esp]
126 add esi,eax
127 mov eax,ecx
128 adc edi,edx
129 mul DWORD [60+esp]
130 add esi,eax
131 mov eax,DWORD [12+esp]
132 adc edi,edx
133 mul DWORD [56+esp]
134 add esi,eax
135 mov eax,DWORD [16+esp]
136 adc edi,edx
137 imul eax,DWORD [52+esp]
138 add esi,eax
139 mov eax,DWORD [esp]
140 adc edi,0
141 mul DWORD [44+esp]
142 mov DWORD [24+esp],esi
143 xor esi,esi
144 add edi,eax
145 mov eax,ebx
146 adc esi,edx
147 mul DWORD [40+esp]
148 add edi,eax
149 mov eax,ecx
150 adc esi,edx
151 mul DWORD [36+esp]
152 add edi,eax
153 mov eax,DWORD [12+esp]
154 adc esi,edx
155 mul DWORD [60+esp]
156 add edi,eax
157 mov eax,DWORD [16+esp]
158 adc esi,edx
159 imul eax,DWORD [56+esp]
160 add edi,eax
161 mov eax,DWORD [esp]
162 adc esi,0
163 mul DWORD [48+esp]
164 mov DWORD [28+esp],edi
165 xor edi,edi
166 add esi,eax
167 mov eax,ebx
168 adc edi,edx
169 mul DWORD [44+esp]
170 add esi,eax
171 mov eax,ecx
172 adc edi,edx
173 mul DWORD [40+esp]
174 add esi,eax
175 mov eax,DWORD [12+esp]
176 adc edi,edx
177 mul DWORD [36+esp]
178 add esi,eax
179 mov ecx,DWORD [16+esp]
180 adc edi,edx
181 mov edx,ecx
182 imul ecx,DWORD [60+esp]
183 add esi,ecx
184 mov eax,DWORD [20+esp]
185 adc edi,0
186 imul edx,DWORD [36+esp]
187 add edx,edi
188 mov ebx,DWORD [24+esp]
189 mov ecx,DWORD [28+esp]
190 mov edi,edx
191 shr edx,2
192 and edi,3
193 lea edx,[edx*4+edx]
194 add eax,edx
195 adc ebx,0
196 adc ecx,0
197 adc esi,0
198 adc edi,0
199 cmp ebp,DWORD [92+esp]
200 jne NEAR L$003loop
201 mov edx,DWORD [84+esp]
202 add esp,64
203 mov DWORD [edx],eax
204 mov DWORD [4+edx],ebx
205 mov DWORD [8+edx],ecx
206 mov DWORD [12+edx],esi
207 mov DWORD [16+edx],edi
208L$002nodata:
209 pop edi
210 pop esi
211 pop ebx
212 pop ebp
213 ret
214global _poly1305_emit
215align 16
216_poly1305_emit:
217L$_poly1305_emit_begin:
218 push ebp
219 push ebx
220 push esi
221 push edi
222 mov ebp,DWORD [20+esp]
223L$004enter_emit:
224 mov edi,DWORD [24+esp]
225 mov eax,DWORD [ebp]
226 mov ebx,DWORD [4+ebp]
227 mov ecx,DWORD [8+ebp]
228 mov edx,DWORD [12+ebp]
229 mov esi,DWORD [16+ebp]
230 add eax,5
231 adc ebx,0
232 adc ecx,0
233 adc edx,0
234 adc esi,0
235 shr esi,2
236 neg esi
237 and eax,esi
238 and ebx,esi
239 and ecx,esi
240 and edx,esi
241 mov DWORD [edi],eax
242 mov DWORD [4+edi],ebx
243 mov DWORD [8+edi],ecx
244 mov DWORD [12+edi],edx
245 not esi
246 mov eax,DWORD [ebp]
247 mov ebx,DWORD [4+ebp]
248 mov ecx,DWORD [8+ebp]
249 mov edx,DWORD [12+ebp]
250 mov ebp,DWORD [28+esp]
251 and eax,esi
252 and ebx,esi
253 and ecx,esi
254 and edx,esi
255 or eax,DWORD [edi]
256 or ebx,DWORD [4+edi]
257 or ecx,DWORD [8+edi]
258 or edx,DWORD [12+edi]
259 add eax,DWORD [ebp]
260 adc ebx,DWORD [4+ebp]
261 adc ecx,DWORD [8+ebp]
262 adc edx,DWORD [12+ebp]
263 mov DWORD [edi],eax
264 mov DWORD [4+edi],ebx
265 mov DWORD [8+edi],ecx
266 mov DWORD [12+edi],edx
267 pop edi
268 pop esi
269 pop ebx
270 pop ebp
271 ret
272db 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54
273db 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32
274db 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111
275db 114,103,62,0
276align 4
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette