Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(749)

Side by Side Diff: third_party/boringssl/win-x86_64/crypto/modes/ghash-x86_64.asm

Issue 693893006: Roll BoringSSL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@nasm
Patch Set: roll further Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 OPTION» DOTNAME 1 default»rel
2 .text$» SEGMENT ALIGN(256) 'CODE' 2 %define XMMWORD
3 EXTERN» OPENSSL_ia32cap_P:NEAR 3 %define YMMWORD
4 %define ZMMWORD
5 section».text code align=64
4 6
5 PUBLIC» gcm_gmult_4bit 7 EXTERN» OPENSSL_ia32cap_P
8
9 global» gcm_gmult_4bit
6 10
7 ALIGN 16 11 ALIGN 16
8 gcm_gmult_4bit» PROC PUBLIC 12 gcm_gmult_4bit:
9 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 13 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
10 » mov» QWORD PTR[16+rsp],rsi 14 » mov» QWORD[16+rsp],rsi
11 mov rax,rsp 15 mov rax,rsp
12 $L$SEH_begin_gcm_gmult_4bit:: 16 $L$SEH_begin_gcm_gmult_4bit:
13 mov rdi,rcx 17 mov rdi,rcx
14 mov rsi,rdx 18 mov rsi,rdx
15 19
16 20
17 push rbx 21 push rbx
18 push rbp 22 push rbp
19 push r12 23 push r12
20 $L$gmult_prologue:: 24 $L$gmult_prologue:
21 25
22 » movzx» r8,BYTE PTR[15+rdi] 26 » movzx» r8,BYTE[15+rdi]
23 » lea» r11,QWORD PTR[$L$rem_4bit] 27 » lea» r11,[$L$rem_4bit]
24 xor rax,rax 28 xor rax,rax
25 xor rbx,rbx 29 xor rbx,rbx
26 mov al,r8b 30 mov al,r8b
27 mov bl,r8b 31 mov bl,r8b
28 shl al,4 32 shl al,4
29 mov rcx,14 33 mov rcx,14
30 » mov» r8,QWORD PTR[8+rax*1+rsi] 34 » mov» r8,QWORD[8+rax*1+rsi]
31 » mov» r9,QWORD PTR[rax*1+rsi] 35 » mov» r9,QWORD[rax*1+rsi]
32 » and» bl,0f0h 36 » and» bl,0xf0
33 mov rdx,r8 37 mov rdx,r8
34 » jmp» $L$oop1 38 » jmp» NEAR $L$oop1
35 39
36 ALIGN 16 40 ALIGN 16
37 $L$oop1:: 41 $L$oop1:
38 shr r8,4 42 shr r8,4
39 » and» rdx,0fh 43 » and» rdx,0xf
40 mov r10,r9 44 mov r10,r9
41 » mov» al,BYTE PTR[rcx*1+rdi] 45 » mov» al,BYTE[rcx*1+rdi]
42 shr r9,4 46 shr r9,4
43 » xor» r8,QWORD PTR[8+rbx*1+rsi] 47 » xor» r8,QWORD[8+rbx*1+rsi]
44 shl r10,60 48 shl r10,60
45 » xor» r9,QWORD PTR[rbx*1+rsi] 49 » xor» r9,QWORD[rbx*1+rsi]
46 mov bl,al 50 mov bl,al
47 » xor» r9,QWORD PTR[rdx*8+r11] 51 » xor» r9,QWORD[rdx*8+r11]
48 mov rdx,r8 52 mov rdx,r8
49 shl al,4 53 shl al,4
50 xor r8,r10 54 xor r8,r10
51 dec rcx 55 dec rcx
52 » js» $L$break1 56 » js» NEAR $L$break1
53 57
54 shr r8,4 58 shr r8,4
55 » and» rdx,0fh 59 » and» rdx,0xf
56 mov r10,r9 60 mov r10,r9
57 shr r9,4 61 shr r9,4
58 » xor» r8,QWORD PTR[8+rax*1+rsi] 62 » xor» r8,QWORD[8+rax*1+rsi]
59 shl r10,60 63 shl r10,60
60 » xor» r9,QWORD PTR[rax*1+rsi] 64 » xor» r9,QWORD[rax*1+rsi]
61 » and» bl,0f0h 65 » and» bl,0xf0
62 » xor» r9,QWORD PTR[rdx*8+r11] 66 » xor» r9,QWORD[rdx*8+r11]
63 mov rdx,r8 67 mov rdx,r8
64 xor r8,r10 68 xor r8,r10
65 » jmp» $L$oop1 69 » jmp» NEAR $L$oop1
66 70
67 ALIGN 16 71 ALIGN 16
68 $L$break1:: 72 $L$break1:
69 shr r8,4 73 shr r8,4
70 » and» rdx,0fh 74 » and» rdx,0xf
71 mov r10,r9 75 mov r10,r9
72 shr r9,4 76 shr r9,4
73 » xor» r8,QWORD PTR[8+rax*1+rsi] 77 » xor» r8,QWORD[8+rax*1+rsi]
74 shl r10,60 78 shl r10,60
75 » xor» r9,QWORD PTR[rax*1+rsi] 79 » xor» r9,QWORD[rax*1+rsi]
76 » and» bl,0f0h 80 » and» bl,0xf0
77 » xor» r9,QWORD PTR[rdx*8+r11] 81 » xor» r9,QWORD[rdx*8+r11]
78 mov rdx,r8 82 mov rdx,r8
79 xor r8,r10 83 xor r8,r10
80 84
81 shr r8,4 85 shr r8,4
82 » and» rdx,0fh 86 » and» rdx,0xf
83 mov r10,r9 87 mov r10,r9
84 shr r9,4 88 shr r9,4
85 » xor» r8,QWORD PTR[8+rbx*1+rsi] 89 » xor» r8,QWORD[8+rbx*1+rsi]
86 shl r10,60 90 shl r10,60
87 » xor» r9,QWORD PTR[rbx*1+rsi] 91 » xor» r9,QWORD[rbx*1+rsi]
88 xor r8,r10 92 xor r8,r10
89 » xor» r9,QWORD PTR[rdx*8+r11] 93 » xor» r9,QWORD[rdx*8+r11]
90 94
91 bswap r8 95 bswap r8
92 bswap r9 96 bswap r9
93 » mov» QWORD PTR[8+rdi],r8 97 » mov» QWORD[8+rdi],r8
94 » mov» QWORD PTR[rdi],r9 98 » mov» QWORD[rdi],r9
95 99
96 » mov» rbx,QWORD PTR[16+rsp] 100 » mov» rbx,QWORD[16+rsp]
97 » lea» rsp,QWORD PTR[24+rsp] 101 » lea» rsp,[24+rsp]
98 $L$gmult_epilogue:: 102 $L$gmult_epilogue:
99 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 103 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
100 » mov» rsi,QWORD PTR[16+rsp] 104 » mov» rsi,QWORD[16+rsp]
101 DB 0F3h,0C3h ;repret 105 DB 0F3h,0C3h ;repret
102 $L$SEH_end_gcm_gmult_4bit:: 106 $L$SEH_end_gcm_gmult_4bit:
103 gcm_gmult_4bit» ENDP 107 global» gcm_ghash_4bit
104 PUBLIC» gcm_ghash_4bit
105 108
106 ALIGN 16 109 ALIGN 16
107 gcm_ghash_4bit» PROC PUBLIC 110 gcm_ghash_4bit:
108 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 111 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
109 » mov» QWORD PTR[16+rsp],rsi 112 » mov» QWORD[16+rsp],rsi
110 mov rax,rsp 113 mov rax,rsp
111 $L$SEH_begin_gcm_ghash_4bit:: 114 $L$SEH_begin_gcm_ghash_4bit:
112 mov rdi,rcx 115 mov rdi,rcx
113 mov rsi,rdx 116 mov rsi,rdx
114 mov rdx,r8 117 mov rdx,r8
115 mov rcx,r9 118 mov rcx,r9
116 119
117 120
118 push rbx 121 push rbx
119 push rbp 122 push rbp
120 push r12 123 push r12
121 push r13 124 push r13
122 push r14 125 push r14
123 push r15 126 push r15
124 sub rsp,280 127 sub rsp,280
125 $L$ghash_prologue:: 128 $L$ghash_prologue:
126 mov r14,rdx 129 mov r14,rdx
127 mov r15,rcx 130 mov r15,rcx
128 sub rsi,-128 131 sub rsi,-128
129 » lea» rbp,QWORD PTR[((16+128))+rsp] 132 » lea» rbp,[((16+128))+rsp]
130 xor edx,edx 133 xor edx,edx
131 » mov» r8,QWORD PTR[((0+0-128))+rsi] 134 » mov» r8,QWORD[((0+0-128))+rsi]
132 » mov» rax,QWORD PTR[((0+8-128))+rsi] 135 » mov» rax,QWORD[((0+8-128))+rsi]
133 » mov» dl,al 136 » mov» dl,al
134 » shr» rax,4 137 » shr» rax,4
135 » mov» r10,r8 138 » mov» r10,r8
136 » shr» r8,4 139 » shr» r8,4
137 » mov» r9,QWORD PTR[((16+0-128))+rsi] 140 » mov» r9,QWORD[((16+0-128))+rsi]
138 » shl» dl,4 141 » shl» dl,4
139 » mov» rbx,QWORD PTR[((16+8-128))+rsi] 142 » mov» rbx,QWORD[((16+8-128))+rsi]
140 » shl» r10,60 143 » shl» r10,60
141 » mov» BYTE PTR[rsp],dl 144 » mov» BYTE[rsp],dl
142 » or» rax,r10 145 » or» rax,r10
143 » mov» dl,bl 146 » mov» dl,bl
144 » shr» rbx,4 147 » shr» rbx,4
145 » mov» r10,r9 148 » mov» r10,r9
146 » shr» r9,4 149 » shr» r9,4
147 » mov» QWORD PTR[rbp],r8 150 » mov» QWORD[rbp],r8
148 » mov» r8,QWORD PTR[((32+0-128))+rsi] 151 » mov» r8,QWORD[((32+0-128))+rsi]
149 » shl» dl,4 152 » shl» dl,4
150 » mov» QWORD PTR[((0-128))+rbp],rax 153 » mov» QWORD[((0-128))+rbp],rax
151 » mov» rax,QWORD PTR[((32+8-128))+rsi] 154 » mov» rax,QWORD[((32+8-128))+rsi]
152 » shl» r10,60 155 » shl» r10,60
153 » mov» BYTE PTR[1+rsp],dl 156 » mov» BYTE[1+rsp],dl
154 » or» rbx,r10 157 » or» rbx,r10
155 » mov» dl,al 158 » mov» dl,al
156 » shr» rax,4 159 » shr» rax,4
157 » mov» r10,r8 160 » mov» r10,r8
158 » shr» r8,4 161 » shr» r8,4
159 » mov» QWORD PTR[8+rbp],r9 162 » mov» QWORD[8+rbp],r9
160 » mov» r9,QWORD PTR[((48+0-128))+rsi] 163 » mov» r9,QWORD[((48+0-128))+rsi]
161 » shl» dl,4 164 » shl» dl,4
162 » mov» QWORD PTR[((8-128))+rbp],rbx 165 » mov» QWORD[((8-128))+rbp],rbx
163 » mov» rbx,QWORD PTR[((48+8-128))+rsi] 166 » mov» rbx,QWORD[((48+8-128))+rsi]
164 » shl» r10,60 167 » shl» r10,60
165 » mov» BYTE PTR[2+rsp],dl 168 » mov» BYTE[2+rsp],dl
166 » or» rax,r10 169 » or» rax,r10
167 » mov» dl,bl 170 » mov» dl,bl
168 » shr» rbx,4 171 » shr» rbx,4
169 » mov» r10,r9 172 » mov» r10,r9
170 » shr» r9,4 173 » shr» r9,4
171 » mov» QWORD PTR[16+rbp],r8 174 » mov» QWORD[16+rbp],r8
172 » mov» r8,QWORD PTR[((64+0-128))+rsi] 175 » mov» r8,QWORD[((64+0-128))+rsi]
173 » shl» dl,4 176 » shl» dl,4
174 » mov» QWORD PTR[((16-128))+rbp],rax 177 » mov» QWORD[((16-128))+rbp],rax
175 » mov» rax,QWORD PTR[((64+8-128))+rsi] 178 » mov» rax,QWORD[((64+8-128))+rsi]
176 » shl» r10,60 179 » shl» r10,60
177 » mov» BYTE PTR[3+rsp],dl 180 » mov» BYTE[3+rsp],dl
178 » or» rbx,r10 181 » or» rbx,r10
179 » mov» dl,al 182 » mov» dl,al
180 » shr» rax,4 183 » shr» rax,4
181 » mov» r10,r8 184 » mov» r10,r8
182 » shr» r8,4 185 » shr» r8,4
183 » mov» QWORD PTR[24+rbp],r9 186 » mov» QWORD[24+rbp],r9
184 » mov» r9,QWORD PTR[((80+0-128))+rsi] 187 » mov» r9,QWORD[((80+0-128))+rsi]
185 » shl» dl,4 188 » shl» dl,4
186 » mov» QWORD PTR[((24-128))+rbp],rbx 189 » mov» QWORD[((24-128))+rbp],rbx
187 » mov» rbx,QWORD PTR[((80+8-128))+rsi] 190 » mov» rbx,QWORD[((80+8-128))+rsi]
188 » shl» r10,60 191 » shl» r10,60
189 » mov» BYTE PTR[4+rsp],dl 192 » mov» BYTE[4+rsp],dl
190 » or» rax,r10 193 » or» rax,r10
191 » mov» dl,bl 194 » mov» dl,bl
192 » shr» rbx,4 195 » shr» rbx,4
193 » mov» r10,r9 196 » mov» r10,r9
194 » shr» r9,4 197 » shr» r9,4
195 » mov» QWORD PTR[32+rbp],r8 198 » mov» QWORD[32+rbp],r8
196 » mov» r8,QWORD PTR[((96+0-128))+rsi] 199 » mov» r8,QWORD[((96+0-128))+rsi]
197 » shl» dl,4 200 » shl» dl,4
198 » mov» QWORD PTR[((32-128))+rbp],rax 201 » mov» QWORD[((32-128))+rbp],rax
199 » mov» rax,QWORD PTR[((96+8-128))+rsi] 202 » mov» rax,QWORD[((96+8-128))+rsi]
200 » shl» r10,60 203 » shl» r10,60
201 » mov» BYTE PTR[5+rsp],dl 204 » mov» BYTE[5+rsp],dl
202 » or» rbx,r10 205 » or» rbx,r10
203 » mov» dl,al 206 » mov» dl,al
204 » shr» rax,4 207 » shr» rax,4
205 » mov» r10,r8 208 » mov» r10,r8
206 » shr» r8,4 209 » shr» r8,4
207 » mov» QWORD PTR[40+rbp],r9 210 » mov» QWORD[40+rbp],r9
208 » mov» r9,QWORD PTR[((112+0-128))+rsi] 211 » mov» r9,QWORD[((112+0-128))+rsi]
209 » shl» dl,4 212 » shl» dl,4
210 » mov» QWORD PTR[((40-128))+rbp],rbx 213 » mov» QWORD[((40-128))+rbp],rbx
211 » mov» rbx,QWORD PTR[((112+8-128))+rsi] 214 » mov» rbx,QWORD[((112+8-128))+rsi]
212 » shl» r10,60 215 » shl» r10,60
213 » mov» BYTE PTR[6+rsp],dl 216 » mov» BYTE[6+rsp],dl
214 » or» rax,r10 217 » or» rax,r10
215 » mov» dl,bl 218 » mov» dl,bl
216 » shr» rbx,4 219 » shr» rbx,4
217 » mov» r10,r9 220 » mov» r10,r9
218 » shr» r9,4 221 » shr» r9,4
219 » mov» QWORD PTR[48+rbp],r8 222 » mov» QWORD[48+rbp],r8
220 » mov» r8,QWORD PTR[((128+0-128))+rsi] 223 » mov» r8,QWORD[((128+0-128))+rsi]
221 » shl» dl,4 224 » shl» dl,4
222 » mov» QWORD PTR[((48-128))+rbp],rax 225 » mov» QWORD[((48-128))+rbp],rax
223 » mov» rax,QWORD PTR[((128+8-128))+rsi] 226 » mov» rax,QWORD[((128+8-128))+rsi]
224 » shl» r10,60 227 » shl» r10,60
225 » mov» BYTE PTR[7+rsp],dl 228 » mov» BYTE[7+rsp],dl
226 » or» rbx,r10 229 » or» rbx,r10
227 » mov» dl,al 230 » mov» dl,al
228 » shr» rax,4 231 » shr» rax,4
229 » mov» r10,r8 232 » mov» r10,r8
230 » shr» r8,4 233 » shr» r8,4
231 » mov» QWORD PTR[56+rbp],r9 234 » mov» QWORD[56+rbp],r9
232 » mov» r9,QWORD PTR[((144+0-128))+rsi] 235 » mov» r9,QWORD[((144+0-128))+rsi]
233 » shl» dl,4 236 » shl» dl,4
234 » mov» QWORD PTR[((56-128))+rbp],rbx 237 » mov» QWORD[((56-128))+rbp],rbx
235 » mov» rbx,QWORD PTR[((144+8-128))+rsi] 238 » mov» rbx,QWORD[((144+8-128))+rsi]
236 » shl» r10,60 239 » shl» r10,60
237 » mov» BYTE PTR[8+rsp],dl 240 » mov» BYTE[8+rsp],dl
238 » or» rax,r10 241 » or» rax,r10
239 » mov» dl,bl 242 » mov» dl,bl
240 » shr» rbx,4 243 » shr» rbx,4
241 » mov» r10,r9 244 » mov» r10,r9
242 » shr» r9,4 245 » shr» r9,4
243 » mov» QWORD PTR[64+rbp],r8 246 » mov» QWORD[64+rbp],r8
244 » mov» r8,QWORD PTR[((160+0-128))+rsi] 247 » mov» r8,QWORD[((160+0-128))+rsi]
245 » shl» dl,4 248 » shl» dl,4
246 » mov» QWORD PTR[((64-128))+rbp],rax 249 » mov» QWORD[((64-128))+rbp],rax
247 » mov» rax,QWORD PTR[((160+8-128))+rsi] 250 » mov» rax,QWORD[((160+8-128))+rsi]
248 » shl» r10,60 251 » shl» r10,60
249 » mov» BYTE PTR[9+rsp],dl 252 » mov» BYTE[9+rsp],dl
250 » or» rbx,r10 253 » or» rbx,r10
251 » mov» dl,al 254 » mov» dl,al
252 » shr» rax,4 255 » shr» rax,4
253 » mov» r10,r8 256 » mov» r10,r8
254 » shr» r8,4 257 » shr» r8,4
255 » mov» QWORD PTR[72+rbp],r9 258 » mov» QWORD[72+rbp],r9
256 » mov» r9,QWORD PTR[((176+0-128))+rsi] 259 » mov» r9,QWORD[((176+0-128))+rsi]
257 » shl» dl,4 260 » shl» dl,4
258 » mov» QWORD PTR[((72-128))+rbp],rbx 261 » mov» QWORD[((72-128))+rbp],rbx
259 » mov» rbx,QWORD PTR[((176+8-128))+rsi] 262 » mov» rbx,QWORD[((176+8-128))+rsi]
260 » shl» r10,60 263 » shl» r10,60
261 » mov» BYTE PTR[10+rsp],dl 264 » mov» BYTE[10+rsp],dl
262 » or» rax,r10 265 » or» rax,r10
263 » mov» dl,bl 266 » mov» dl,bl
264 » shr» rbx,4 267 » shr» rbx,4
265 » mov» r10,r9 268 » mov» r10,r9
266 » shr» r9,4 269 » shr» r9,4
267 » mov» QWORD PTR[80+rbp],r8 270 » mov» QWORD[80+rbp],r8
268 » mov» r8,QWORD PTR[((192+0-128))+rsi] 271 » mov» r8,QWORD[((192+0-128))+rsi]
269 » shl» dl,4 272 » shl» dl,4
270 » mov» QWORD PTR[((80-128))+rbp],rax 273 » mov» QWORD[((80-128))+rbp],rax
271 » mov» rax,QWORD PTR[((192+8-128))+rsi] 274 » mov» rax,QWORD[((192+8-128))+rsi]
272 » shl» r10,60 275 » shl» r10,60
273 » mov» BYTE PTR[11+rsp],dl 276 » mov» BYTE[11+rsp],dl
274 » or» rbx,r10 277 » or» rbx,r10
275 » mov» dl,al 278 » mov» dl,al
276 » shr» rax,4 279 » shr» rax,4
277 » mov» r10,r8 280 » mov» r10,r8
278 » shr» r8,4 281 » shr» r8,4
279 » mov» QWORD PTR[88+rbp],r9 282 » mov» QWORD[88+rbp],r9
280 » mov» r9,QWORD PTR[((208+0-128))+rsi] 283 » mov» r9,QWORD[((208+0-128))+rsi]
281 » shl» dl,4 284 » shl» dl,4
282 » mov» QWORD PTR[((88-128))+rbp],rbx 285 » mov» QWORD[((88-128))+rbp],rbx
283 » mov» rbx,QWORD PTR[((208+8-128))+rsi] 286 » mov» rbx,QWORD[((208+8-128))+rsi]
284 » shl» r10,60 287 » shl» r10,60
285 » mov» BYTE PTR[12+rsp],dl 288 » mov» BYTE[12+rsp],dl
286 » or» rax,r10 289 » or» rax,r10
287 » mov» dl,bl 290 » mov» dl,bl
288 » shr» rbx,4 291 » shr» rbx,4
289 » mov» r10,r9 292 » mov» r10,r9
290 » shr» r9,4 293 » shr» r9,4
291 » mov» QWORD PTR[96+rbp],r8 294 » mov» QWORD[96+rbp],r8
292 » mov» r8,QWORD PTR[((224+0-128))+rsi] 295 » mov» r8,QWORD[((224+0-128))+rsi]
293 » shl» dl,4 296 » shl» dl,4
294 » mov» QWORD PTR[((96-128))+rbp],rax 297 » mov» QWORD[((96-128))+rbp],rax
295 » mov» rax,QWORD PTR[((224+8-128))+rsi] 298 » mov» rax,QWORD[((224+8-128))+rsi]
296 » shl» r10,60 299 » shl» r10,60
297 » mov» BYTE PTR[13+rsp],dl 300 » mov» BYTE[13+rsp],dl
298 » or» rbx,r10 301 » or» rbx,r10
299 » mov» dl,al 302 » mov» dl,al
300 » shr» rax,4 303 » shr» rax,4
301 » mov» r10,r8 304 » mov» r10,r8
302 » shr» r8,4 305 » shr» r8,4
303 » mov» QWORD PTR[104+rbp],r9 306 » mov» QWORD[104+rbp],r9
304 » mov» r9,QWORD PTR[((240+0-128))+rsi] 307 » mov» r9,QWORD[((240+0-128))+rsi]
305 » shl» dl,4 308 » shl» dl,4
306 » mov» QWORD PTR[((104-128))+rbp],rbx 309 » mov» QWORD[((104-128))+rbp],rbx
307 » mov» rbx,QWORD PTR[((240+8-128))+rsi] 310 » mov» rbx,QWORD[((240+8-128))+rsi]
308 » shl» r10,60 311 » shl» r10,60
309 » mov» BYTE PTR[14+rsp],dl 312 » mov» BYTE[14+rsp],dl
310 » or» rax,r10 313 » or» rax,r10
311 » mov» dl,bl 314 » mov» dl,bl
312 » shr» rbx,4 315 » shr» rbx,4
313 » mov» r10,r9 316 » mov» r10,r9
314 » shr» r9,4 317 » shr» r9,4
315 » mov» QWORD PTR[112+rbp],r8 318 » mov» QWORD[112+rbp],r8
316 » shl» dl,4 319 » shl» dl,4
317 » mov» QWORD PTR[((112-128))+rbp],rax 320 » mov» QWORD[((112-128))+rbp],rax
318 » shl» r10,60 321 » shl» r10,60
319 » mov» BYTE PTR[15+rsp],dl 322 » mov» BYTE[15+rsp],dl
320 » or» rbx,r10 323 » or» rbx,r10
321 » mov» QWORD PTR[120+rbp],r9 324 » mov» QWORD[120+rbp],r9
322 » mov» QWORD PTR[((120-128))+rbp],rbx 325 » mov» QWORD[((120-128))+rbp],rbx
323 add rsi,-128 326 add rsi,-128
324 » mov» r8,QWORD PTR[8+rdi] 327 » mov» r8,QWORD[8+rdi]
325 » mov» r9,QWORD PTR[rdi] 328 » mov» r9,QWORD[rdi]
326 add r15,r14 329 add r15,r14
327 » lea» r11,QWORD PTR[$L$rem_8bit] 330 » lea» r11,[$L$rem_8bit]
328 » jmp» $L$outer_loop 331 » jmp» NEAR $L$outer_loop
329 ALIGN 16 332 ALIGN 16
330 $L$outer_loop:: 333 $L$outer_loop:
331 » xor» r9,QWORD PTR[r14] 334 » xor» r9,QWORD[r14]
332 » mov» rdx,QWORD PTR[8+r14] 335 » mov» rdx,QWORD[8+r14]
333 » lea» r14,QWORD PTR[16+r14] 336 » lea» r14,[16+r14]
334 xor rdx,r8 337 xor rdx,r8
335 » mov» QWORD PTR[rdi],r9 338 » mov» QWORD[rdi],r9
336 » mov» QWORD PTR[8+rdi],rdx 339 » mov» QWORD[8+rdi],rdx
337 shr rdx,32 340 shr rdx,32
338 xor rax,rax 341 xor rax,rax
339 rol edx,8 342 rol edx,8
340 mov al,dl 343 mov al,dl
341 movzx ebx,dl 344 movzx ebx,dl
342 shl al,4 345 shl al,4
343 shr ebx,4 346 shr ebx,4
344 rol edx,8 347 rol edx,8
345 » mov» r8,QWORD PTR[8+rax*1+rsi] 348 » mov» r8,QWORD[8+rax*1+rsi]
346 » mov» r9,QWORD PTR[rax*1+rsi] 349 » mov» r9,QWORD[rax*1+rsi]
347 mov al,dl 350 mov al,dl
348 movzx ecx,dl 351 movzx ecx,dl
349 shl al,4 352 shl al,4
350 » movzx» r12,BYTE PTR[rbx*1+rsp] 353 » movzx» r12,BYTE[rbx*1+rsp]
351 shr ecx,4 354 shr ecx,4
352 xor r12,r8 355 xor r12,r8
353 mov r10,r9 356 mov r10,r9
354 shr r8,8 357 shr r8,8
355 movzx r12,r12b 358 movzx r12,r12b
356 shr r9,8 359 shr r9,8
357 » xor» r8,QWORD PTR[((-128))+rbx*8+rbp] 360 » xor» r8,QWORD[((-128))+rbx*8+rbp]
358 shl r10,56 361 shl r10,56
359 » xor» r9,QWORD PTR[rbx*8+rbp] 362 » xor» r9,QWORD[rbx*8+rbp]
360 rol edx,8 363 rol edx,8
361 » xor» r8,QWORD PTR[8+rax*1+rsi] 364 » xor» r8,QWORD[8+rax*1+rsi]
362 » xor» r9,QWORD PTR[rax*1+rsi] 365 » xor» r9,QWORD[rax*1+rsi]
363 mov al,dl 366 mov al,dl
364 xor r8,r10 367 xor r8,r10
365 » movzx» r12,WORD PTR[r12*2+r11] 368 » movzx» r12,WORD[r12*2+r11]
366 movzx ebx,dl 369 movzx ebx,dl
367 shl al,4 370 shl al,4
368 » movzx» r13,BYTE PTR[rcx*1+rsp] 371 » movzx» r13,BYTE[rcx*1+rsp]
369 shr ebx,4 372 shr ebx,4
370 shl r12,48 373 shl r12,48
371 xor r13,r8 374 xor r13,r8
372 mov r10,r9 375 mov r10,r9
373 xor r9,r12 376 xor r9,r12
374 shr r8,8 377 shr r8,8
375 movzx r13,r13b 378 movzx r13,r13b
376 shr r9,8 379 shr r9,8
377 » xor» r8,QWORD PTR[((-128))+rcx*8+rbp] 380 » xor» r8,QWORD[((-128))+rcx*8+rbp]
378 shl r10,56 381 shl r10,56
379 » xor» r9,QWORD PTR[rcx*8+rbp] 382 » xor» r9,QWORD[rcx*8+rbp]
380 rol edx,8 383 rol edx,8
381 » xor» r8,QWORD PTR[8+rax*1+rsi] 384 » xor» r8,QWORD[8+rax*1+rsi]
382 » xor» r9,QWORD PTR[rax*1+rsi] 385 » xor» r9,QWORD[rax*1+rsi]
383 mov al,dl 386 mov al,dl
384 xor r8,r10 387 xor r8,r10
385 » movzx» r13,WORD PTR[r13*2+r11] 388 » movzx» r13,WORD[r13*2+r11]
386 movzx ecx,dl 389 movzx ecx,dl
387 shl al,4 390 shl al,4
388 » movzx» r12,BYTE PTR[rbx*1+rsp] 391 » movzx» r12,BYTE[rbx*1+rsp]
389 shr ecx,4 392 shr ecx,4
390 shl r13,48 393 shl r13,48
391 xor r12,r8 394 xor r12,r8
392 mov r10,r9 395 mov r10,r9
393 xor r9,r13 396 xor r9,r13
394 shr r8,8 397 shr r8,8
395 movzx r12,r12b 398 movzx r12,r12b
396 » mov» edx,DWORD PTR[8+rdi] 399 » mov» edx,DWORD[8+rdi]
397 shr r9,8 400 shr r9,8
398 » xor» r8,QWORD PTR[((-128))+rbx*8+rbp] 401 » xor» r8,QWORD[((-128))+rbx*8+rbp]
399 shl r10,56 402 shl r10,56
400 » xor» r9,QWORD PTR[rbx*8+rbp] 403 » xor» r9,QWORD[rbx*8+rbp]
401 rol edx,8 404 rol edx,8
402 » xor» r8,QWORD PTR[8+rax*1+rsi] 405 » xor» r8,QWORD[8+rax*1+rsi]
403 » xor» r9,QWORD PTR[rax*1+rsi] 406 » xor» r9,QWORD[rax*1+rsi]
404 mov al,dl 407 mov al,dl
405 xor r8,r10 408 xor r8,r10
406 » movzx» r12,WORD PTR[r12*2+r11] 409 » movzx» r12,WORD[r12*2+r11]
407 movzx ebx,dl 410 movzx ebx,dl
408 shl al,4 411 shl al,4
409 » movzx» r13,BYTE PTR[rcx*1+rsp] 412 » movzx» r13,BYTE[rcx*1+rsp]
410 shr ebx,4 413 shr ebx,4
411 shl r12,48 414 shl r12,48
412 xor r13,r8 415 xor r13,r8
413 mov r10,r9 416 mov r10,r9
414 xor r9,r12 417 xor r9,r12
415 shr r8,8 418 shr r8,8
416 movzx r13,r13b 419 movzx r13,r13b
417 shr r9,8 420 shr r9,8
418 » xor» r8,QWORD PTR[((-128))+rcx*8+rbp] 421 » xor» r8,QWORD[((-128))+rcx*8+rbp]
419 shl r10,56 422 shl r10,56
420 » xor» r9,QWORD PTR[rcx*8+rbp] 423 » xor» r9,QWORD[rcx*8+rbp]
421 rol edx,8 424 rol edx,8
422 » xor» r8,QWORD PTR[8+rax*1+rsi] 425 » xor» r8,QWORD[8+rax*1+rsi]
423 » xor» r9,QWORD PTR[rax*1+rsi] 426 » xor» r9,QWORD[rax*1+rsi]
424 mov al,dl 427 mov al,dl
425 xor r8,r10 428 xor r8,r10
426 » movzx» r13,WORD PTR[r13*2+r11] 429 » movzx» r13,WORD[r13*2+r11]
427 movzx ecx,dl 430 movzx ecx,dl
428 shl al,4 431 shl al,4
429 » movzx» r12,BYTE PTR[rbx*1+rsp] 432 » movzx» r12,BYTE[rbx*1+rsp]
430 shr ecx,4 433 shr ecx,4
431 shl r13,48 434 shl r13,48
432 xor r12,r8 435 xor r12,r8
433 mov r10,r9 436 mov r10,r9
434 xor r9,r13 437 xor r9,r13
435 shr r8,8 438 shr r8,8
436 movzx r12,r12b 439 movzx r12,r12b
437 shr r9,8 440 shr r9,8
438 » xor» r8,QWORD PTR[((-128))+rbx*8+rbp] 441 » xor» r8,QWORD[((-128))+rbx*8+rbp]
439 shl r10,56 442 shl r10,56
440 » xor» r9,QWORD PTR[rbx*8+rbp] 443 » xor» r9,QWORD[rbx*8+rbp]
441 rol edx,8 444 rol edx,8
442 » xor» r8,QWORD PTR[8+rax*1+rsi] 445 » xor» r8,QWORD[8+rax*1+rsi]
443 » xor» r9,QWORD PTR[rax*1+rsi] 446 » xor» r9,QWORD[rax*1+rsi]
444 mov al,dl 447 mov al,dl
445 xor r8,r10 448 xor r8,r10
446 » movzx» r12,WORD PTR[r12*2+r11] 449 » movzx» r12,WORD[r12*2+r11]
447 movzx ebx,dl 450 movzx ebx,dl
448 shl al,4 451 shl al,4
449 » movzx» r13,BYTE PTR[rcx*1+rsp] 452 » movzx» r13,BYTE[rcx*1+rsp]
450 shr ebx,4 453 shr ebx,4
451 shl r12,48 454 shl r12,48
452 xor r13,r8 455 xor r13,r8
453 mov r10,r9 456 mov r10,r9
454 xor r9,r12 457 xor r9,r12
455 shr r8,8 458 shr r8,8
456 movzx r13,r13b 459 movzx r13,r13b
457 shr r9,8 460 shr r9,8
458 » xor» r8,QWORD PTR[((-128))+rcx*8+rbp] 461 » xor» r8,QWORD[((-128))+rcx*8+rbp]
459 shl r10,56 462 shl r10,56
460 » xor» r9,QWORD PTR[rcx*8+rbp] 463 » xor» r9,QWORD[rcx*8+rbp]
461 rol edx,8 464 rol edx,8
462 » xor» r8,QWORD PTR[8+rax*1+rsi] 465 » xor» r8,QWORD[8+rax*1+rsi]
463 » xor» r9,QWORD PTR[rax*1+rsi] 466 » xor» r9,QWORD[rax*1+rsi]
464 mov al,dl 467 mov al,dl
465 xor r8,r10 468 xor r8,r10
466 » movzx» r13,WORD PTR[r13*2+r11] 469 » movzx» r13,WORD[r13*2+r11]
467 movzx ecx,dl 470 movzx ecx,dl
468 shl al,4 471 shl al,4
469 » movzx» r12,BYTE PTR[rbx*1+rsp] 472 » movzx» r12,BYTE[rbx*1+rsp]
470 shr ecx,4 473 shr ecx,4
471 shl r13,48 474 shl r13,48
472 xor r12,r8 475 xor r12,r8
473 mov r10,r9 476 mov r10,r9
474 xor r9,r13 477 xor r9,r13
475 shr r8,8 478 shr r8,8
476 movzx r12,r12b 479 movzx r12,r12b
477 » mov» edx,DWORD PTR[4+rdi] 480 » mov» edx,DWORD[4+rdi]
478 shr r9,8 481 shr r9,8
479 » xor» r8,QWORD PTR[((-128))+rbx*8+rbp] 482 » xor» r8,QWORD[((-128))+rbx*8+rbp]
480 shl r10,56 483 shl r10,56
481 » xor» r9,QWORD PTR[rbx*8+rbp] 484 » xor» r9,QWORD[rbx*8+rbp]
482 rol edx,8 485 rol edx,8
483 » xor» r8,QWORD PTR[8+rax*1+rsi] 486 » xor» r8,QWORD[8+rax*1+rsi]
484 » xor» r9,QWORD PTR[rax*1+rsi] 487 » xor» r9,QWORD[rax*1+rsi]
485 mov al,dl 488 mov al,dl
486 xor r8,r10 489 xor r8,r10
487 » movzx» r12,WORD PTR[r12*2+r11] 490 » movzx» r12,WORD[r12*2+r11]
488 movzx ebx,dl 491 movzx ebx,dl
489 shl al,4 492 shl al,4
490 » movzx» r13,BYTE PTR[rcx*1+rsp] 493 » movzx» r13,BYTE[rcx*1+rsp]
491 shr ebx,4 494 shr ebx,4
492 shl r12,48 495 shl r12,48
493 xor r13,r8 496 xor r13,r8
494 mov r10,r9 497 mov r10,r9
495 xor r9,r12 498 xor r9,r12
496 shr r8,8 499 shr r8,8
497 movzx r13,r13b 500 movzx r13,r13b
498 shr r9,8 501 shr r9,8
499 » xor» r8,QWORD PTR[((-128))+rcx*8+rbp] 502 » xor» r8,QWORD[((-128))+rcx*8+rbp]
500 shl r10,56 503 shl r10,56
501 » xor» r9,QWORD PTR[rcx*8+rbp] 504 » xor» r9,QWORD[rcx*8+rbp]
502 rol edx,8 505 rol edx,8
503 » xor» r8,QWORD PTR[8+rax*1+rsi] 506 » xor» r8,QWORD[8+rax*1+rsi]
504 » xor» r9,QWORD PTR[rax*1+rsi] 507 » xor» r9,QWORD[rax*1+rsi]
505 mov al,dl 508 mov al,dl
506 xor r8,r10 509 xor r8,r10
507 » movzx» r13,WORD PTR[r13*2+r11] 510 » movzx» r13,WORD[r13*2+r11]
508 movzx ecx,dl 511 movzx ecx,dl
509 shl al,4 512 shl al,4
510 » movzx» r12,BYTE PTR[rbx*1+rsp] 513 » movzx» r12,BYTE[rbx*1+rsp]
511 shr ecx,4 514 shr ecx,4
512 shl r13,48 515 shl r13,48
513 xor r12,r8 516 xor r12,r8
514 mov r10,r9 517 mov r10,r9
515 xor r9,r13 518 xor r9,r13
516 shr r8,8 519 shr r8,8
517 movzx r12,r12b 520 movzx r12,r12b
518 shr r9,8 521 shr r9,8
519 » xor» r8,QWORD PTR[((-128))+rbx*8+rbp] 522 » xor» r8,QWORD[((-128))+rbx*8+rbp]
520 shl r10,56 523 shl r10,56
521 » xor» r9,QWORD PTR[rbx*8+rbp] 524 » xor» r9,QWORD[rbx*8+rbp]
522 rol edx,8 525 rol edx,8
523 » xor» r8,QWORD PTR[8+rax*1+rsi] 526 » xor» r8,QWORD[8+rax*1+rsi]
524 » xor» r9,QWORD PTR[rax*1+rsi] 527 » xor» r9,QWORD[rax*1+rsi]
525 mov al,dl 528 mov al,dl
526 xor r8,r10 529 xor r8,r10
527 » movzx» r12,WORD PTR[r12*2+r11] 530 » movzx» r12,WORD[r12*2+r11]
528 movzx ebx,dl 531 movzx ebx,dl
529 shl al,4 532 shl al,4
530 » movzx» r13,BYTE PTR[rcx*1+rsp] 533 » movzx» r13,BYTE[rcx*1+rsp]
531 shr ebx,4 534 shr ebx,4
532 shl r12,48 535 shl r12,48
533 xor r13,r8 536 xor r13,r8
534 mov r10,r9 537 mov r10,r9
535 xor r9,r12 538 xor r9,r12
536 shr r8,8 539 shr r8,8
537 movzx r13,r13b 540 movzx r13,r13b
538 shr r9,8 541 shr r9,8
539 » xor» r8,QWORD PTR[((-128))+rcx*8+rbp] 542 » xor» r8,QWORD[((-128))+rcx*8+rbp]
540 shl r10,56 543 shl r10,56
541 » xor» r9,QWORD PTR[rcx*8+rbp] 544 » xor» r9,QWORD[rcx*8+rbp]
542 rol edx,8 545 rol edx,8
543 » xor» r8,QWORD PTR[8+rax*1+rsi] 546 » xor» r8,QWORD[8+rax*1+rsi]
544 » xor» r9,QWORD PTR[rax*1+rsi] 547 » xor» r9,QWORD[rax*1+rsi]
545 mov al,dl 548 mov al,dl
546 xor r8,r10 549 xor r8,r10
547 » movzx» r13,WORD PTR[r13*2+r11] 550 » movzx» r13,WORD[r13*2+r11]
548 movzx ecx,dl 551 movzx ecx,dl
549 shl al,4 552 shl al,4
550 » movzx» r12,BYTE PTR[rbx*1+rsp] 553 » movzx» r12,BYTE[rbx*1+rsp]
551 shr ecx,4 554 shr ecx,4
552 shl r13,48 555 shl r13,48
553 xor r12,r8 556 xor r12,r8
554 mov r10,r9 557 mov r10,r9
555 xor r9,r13 558 xor r9,r13
556 shr r8,8 559 shr r8,8
557 movzx r12,r12b 560 movzx r12,r12b
558 » mov» edx,DWORD PTR[rdi] 561 » mov» edx,DWORD[rdi]
559 shr r9,8 562 shr r9,8
560 » xor» r8,QWORD PTR[((-128))+rbx*8+rbp] 563 » xor» r8,QWORD[((-128))+rbx*8+rbp]
561 shl r10,56 564 shl r10,56
562 » xor» r9,QWORD PTR[rbx*8+rbp] 565 » xor» r9,QWORD[rbx*8+rbp]
563 rol edx,8 566 rol edx,8
564 » xor» r8,QWORD PTR[8+rax*1+rsi] 567 » xor» r8,QWORD[8+rax*1+rsi]
565 » xor» r9,QWORD PTR[rax*1+rsi] 568 » xor» r9,QWORD[rax*1+rsi]
566 mov al,dl 569 mov al,dl
567 xor r8,r10 570 xor r8,r10
568 » movzx» r12,WORD PTR[r12*2+r11] 571 » movzx» r12,WORD[r12*2+r11]
569 movzx ebx,dl 572 movzx ebx,dl
570 shl al,4 573 shl al,4
571 » movzx» r13,BYTE PTR[rcx*1+rsp] 574 » movzx» r13,BYTE[rcx*1+rsp]
572 shr ebx,4 575 shr ebx,4
573 shl r12,48 576 shl r12,48
574 xor r13,r8 577 xor r13,r8
575 mov r10,r9 578 mov r10,r9
576 xor r9,r12 579 xor r9,r12
577 shr r8,8 580 shr r8,8
578 movzx r13,r13b 581 movzx r13,r13b
579 shr r9,8 582 shr r9,8
580 » xor» r8,QWORD PTR[((-128))+rcx*8+rbp] 583 » xor» r8,QWORD[((-128))+rcx*8+rbp]
581 shl r10,56 584 shl r10,56
582 » xor» r9,QWORD PTR[rcx*8+rbp] 585 » xor» r9,QWORD[rcx*8+rbp]
583 rol edx,8 586 rol edx,8
584 » xor» r8,QWORD PTR[8+rax*1+rsi] 587 » xor» r8,QWORD[8+rax*1+rsi]
585 » xor» r9,QWORD PTR[rax*1+rsi] 588 » xor» r9,QWORD[rax*1+rsi]
586 mov al,dl 589 mov al,dl
587 xor r8,r10 590 xor r8,r10
588 » movzx» r13,WORD PTR[r13*2+r11] 591 » movzx» r13,WORD[r13*2+r11]
589 movzx ecx,dl 592 movzx ecx,dl
590 shl al,4 593 shl al,4
591 » movzx» r12,BYTE PTR[rbx*1+rsp] 594 » movzx» r12,BYTE[rbx*1+rsp]
592 shr ecx,4 595 shr ecx,4
593 shl r13,48 596 shl r13,48
594 xor r12,r8 597 xor r12,r8
595 mov r10,r9 598 mov r10,r9
596 xor r9,r13 599 xor r9,r13
597 shr r8,8 600 shr r8,8
598 movzx r12,r12b 601 movzx r12,r12b
599 shr r9,8 602 shr r9,8
600 » xor» r8,QWORD PTR[((-128))+rbx*8+rbp] 603 » xor» r8,QWORD[((-128))+rbx*8+rbp]
601 shl r10,56 604 shl r10,56
602 » xor» r9,QWORD PTR[rbx*8+rbp] 605 » xor» r9,QWORD[rbx*8+rbp]
603 rol edx,8 606 rol edx,8
604 » xor» r8,QWORD PTR[8+rax*1+rsi] 607 » xor» r8,QWORD[8+rax*1+rsi]
605 » xor» r9,QWORD PTR[rax*1+rsi] 608 » xor» r9,QWORD[rax*1+rsi]
606 mov al,dl 609 mov al,dl
607 xor r8,r10 610 xor r8,r10
608 » movzx» r12,WORD PTR[r12*2+r11] 611 » movzx» r12,WORD[r12*2+r11]
609 movzx ebx,dl 612 movzx ebx,dl
610 shl al,4 613 shl al,4
611 » movzx» r13,BYTE PTR[rcx*1+rsp] 614 » movzx» r13,BYTE[rcx*1+rsp]
612 shr ebx,4 615 shr ebx,4
613 shl r12,48 616 shl r12,48
614 xor r13,r8 617 xor r13,r8
615 mov r10,r9 618 mov r10,r9
616 xor r9,r12 619 xor r9,r12
617 shr r8,8 620 shr r8,8
618 movzx r13,r13b 621 movzx r13,r13b
619 shr r9,8 622 shr r9,8
620 » xor» r8,QWORD PTR[((-128))+rcx*8+rbp] 623 » xor» r8,QWORD[((-128))+rcx*8+rbp]
621 shl r10,56 624 shl r10,56
622 » xor» r9,QWORD PTR[rcx*8+rbp] 625 » xor» r9,QWORD[rcx*8+rbp]
623 rol edx,8 626 rol edx,8
624 » xor» r8,QWORD PTR[8+rax*1+rsi] 627 » xor» r8,QWORD[8+rax*1+rsi]
625 » xor» r9,QWORD PTR[rax*1+rsi] 628 » xor» r9,QWORD[rax*1+rsi]
626 mov al,dl 629 mov al,dl
627 xor r8,r10 630 xor r8,r10
628 » movzx» r13,WORD PTR[r13*2+r11] 631 » movzx» r13,WORD[r13*2+r11]
629 movzx ecx,dl 632 movzx ecx,dl
630 shl al,4 633 shl al,4
631 » movzx» r12,BYTE PTR[rbx*1+rsp] 634 » movzx» r12,BYTE[rbx*1+rsp]
632 and ecx,240 635 and ecx,240
633 shl r13,48 636 shl r13,48
634 xor r12,r8 637 xor r12,r8
635 mov r10,r9 638 mov r10,r9
636 xor r9,r13 639 xor r9,r13
637 shr r8,8 640 shr r8,8
638 movzx r12,r12b 641 movzx r12,r12b
639 » mov» edx,DWORD PTR[((-4))+rdi] 642 » mov» edx,DWORD[((-4))+rdi]
640 shr r9,8 643 shr r9,8
641 » xor» r8,QWORD PTR[((-128))+rbx*8+rbp] 644 » xor» r8,QWORD[((-128))+rbx*8+rbp]
642 shl r10,56 645 shl r10,56
643 » xor» r9,QWORD PTR[rbx*8+rbp] 646 » xor» r9,QWORD[rbx*8+rbp]
644 » movzx» r12,WORD PTR[r12*2+r11] 647 » movzx» r12,WORD[r12*2+r11]
645 » xor» r8,QWORD PTR[8+rax*1+rsi] 648 » xor» r8,QWORD[8+rax*1+rsi]
646 » xor» r9,QWORD PTR[rax*1+rsi] 649 » xor» r9,QWORD[rax*1+rsi]
647 shl r12,48 650 shl r12,48
648 xor r8,r10 651 xor r8,r10
649 xor r9,r12 652 xor r9,r12
650 movzx r13,r8b 653 movzx r13,r8b
651 shr r8,4 654 shr r8,4
652 mov r10,r9 655 mov r10,r9
653 shl r13b,4 656 shl r13b,4
654 shr r9,4 657 shr r9,4
655 » xor» r8,QWORD PTR[8+rcx*1+rsi] 658 » xor» r8,QWORD[8+rcx*1+rsi]
656 » movzx» r13,WORD PTR[r13*2+r11] 659 » movzx» r13,WORD[r13*2+r11]
657 shl r10,60 660 shl r10,60
658 » xor» r9,QWORD PTR[rcx*1+rsi] 661 » xor» r9,QWORD[rcx*1+rsi]
659 xor r8,r10 662 xor r8,r10
660 shl r13,48 663 shl r13,48
661 bswap r8 664 bswap r8
662 xor r9,r13 665 xor r9,r13
663 bswap r9 666 bswap r9
664 cmp r14,r15 667 cmp r14,r15
665 » jb» $L$outer_loop 668 » jb» NEAR $L$outer_loop
666 » mov» QWORD PTR[8+rdi],r8 669 » mov» QWORD[8+rdi],r8
667 » mov» QWORD PTR[rdi],r9 670 » mov» QWORD[rdi],r9
668 671
669 » lea» rsi,QWORD PTR[280+rsp] 672 » lea» rsi,[280+rsp]
670 » mov» r15,QWORD PTR[rsi] 673 » mov» r15,QWORD[rsi]
671 » mov» r14,QWORD PTR[8+rsi] 674 » mov» r14,QWORD[8+rsi]
672 » mov» r13,QWORD PTR[16+rsi] 675 » mov» r13,QWORD[16+rsi]
673 » mov» r12,QWORD PTR[24+rsi] 676 » mov» r12,QWORD[24+rsi]
674 » mov» rbp,QWORD PTR[32+rsi] 677 » mov» rbp,QWORD[32+rsi]
675 » mov» rbx,QWORD PTR[40+rsi] 678 » mov» rbx,QWORD[40+rsi]
676 » lea» rsp,QWORD PTR[48+rsi] 679 » lea» rsp,[48+rsi]
677 $L$ghash_epilogue:: 680 $L$ghash_epilogue:
678 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 681 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
679 » mov» rsi,QWORD PTR[16+rsp] 682 » mov» rsi,QWORD[16+rsp]
680 DB 0F3h,0C3h ;repret 683 DB 0F3h,0C3h ;repret
681 $L$SEH_end_gcm_ghash_4bit:: 684 $L$SEH_end_gcm_ghash_4bit:
682 gcm_ghash_4bit» ENDP 685 global» gcm_init_clmul
683 PUBLIC» gcm_init_clmul
684 686
685 ALIGN 16 687 ALIGN 16
686 gcm_init_clmul» PROC PUBLIC 688 gcm_init_clmul:
687 $L$_init_clmul:: 689 $L$_init_clmul:
688 $L$SEH_begin_gcm_init_clmul:: 690 $L$SEH_begin_gcm_init_clmul:
689 691
690 DB» 048h,083h,0ech,018h 692 DB» 0x48,0x83,0xec,0x18
691 DB» 00fh,029h,034h,024h 693 DB» 0x0f,0x29,0x34,0x24
692 » movdqu» xmm2,XMMWORD PTR[rdx] 694 » movdqu» xmm2,XMMWORD[rdx]
693 pshufd xmm2,xmm2,78 695 pshufd xmm2,xmm2,78
694 696
695 697
696 pshufd xmm4,xmm2,255 698 pshufd xmm4,xmm2,255
697 movdqa xmm3,xmm2 699 movdqa xmm3,xmm2
698 psllq xmm2,1 700 psllq xmm2,1
699 pxor xmm5,xmm5 701 pxor xmm5,xmm5
700 psrlq xmm3,63 702 psrlq xmm3,63
701 pcmpgtd xmm5,xmm4 703 pcmpgtd xmm5,xmm4
702 pslldq xmm3,8 704 pslldq xmm3,8
703 por xmm2,xmm3 705 por xmm2,xmm3
704 706
705 707
706 » pand» xmm5,XMMWORD PTR[$L$0x1c2_polynomial] 708 » pand» xmm5,XMMWORD[$L$0x1c2_polynomial]
707 pxor xmm2,xmm5 709 pxor xmm2,xmm5
708 710
709 711
710 pshufd xmm6,xmm2,78 712 pshufd xmm6,xmm2,78
711 movdqa xmm0,xmm2 713 movdqa xmm0,xmm2
712 pxor xmm6,xmm2 714 pxor xmm6,xmm2
713 movdqa xmm1,xmm0 715 movdqa xmm1,xmm0
714 pshufd xmm3,xmm0,78 716 pshufd xmm3,xmm0,78
715 pxor xmm3,xmm0 717 pxor xmm3,xmm0
716 DB 102,15,58,68,194,0 718 DB 102,15,58,68,194,0
(...skipping 26 matching lines...) Expand all
743 psrlq xmm0,1 745 psrlq xmm0,1
744 pxor xmm1,xmm4 746 pxor xmm1,xmm4
745 pxor xmm4,xmm0 747 pxor xmm4,xmm0
746 psrlq xmm0,5 748 psrlq xmm0,5
747 pxor xmm0,xmm4 749 pxor xmm0,xmm4
748 psrlq xmm0,1 750 psrlq xmm0,1
749 pxor xmm0,xmm1 751 pxor xmm0,xmm1
750 pshufd xmm3,xmm2,78 752 pshufd xmm3,xmm2,78
751 pshufd xmm4,xmm0,78 753 pshufd xmm4,xmm0,78
752 pxor xmm3,xmm2 754 pxor xmm3,xmm2
753 » movdqu» XMMWORD PTR[rcx],xmm2 755 » movdqu» XMMWORD[rcx],xmm2
754 pxor xmm4,xmm0 756 pxor xmm4,xmm0
755 » movdqu» XMMWORD PTR[16+rcx],xmm0 757 » movdqu» XMMWORD[16+rcx],xmm0
756 DB 102,15,58,15,227,8 758 DB 102,15,58,15,227,8
757 » movdqu» XMMWORD PTR[32+rcx],xmm4 759 » movdqu» XMMWORD[32+rcx],xmm4
758 movdqa xmm1,xmm0 760 movdqa xmm1,xmm0
759 pshufd xmm3,xmm0,78 761 pshufd xmm3,xmm0,78
760 pxor xmm3,xmm0 762 pxor xmm3,xmm0
761 DB 102,15,58,68,194,0 763 DB 102,15,58,68,194,0
762 DB 102,15,58,68,202,17 764 DB 102,15,58,68,202,17
763 DB 102,15,58,68,222,0 765 DB 102,15,58,68,222,0
764 pxor xmm3,xmm0 766 pxor xmm3,xmm0
765 pxor xmm3,xmm1 767 pxor xmm3,xmm1
766 768
767 movdqa xmm4,xmm3 769 movdqa xmm4,xmm3
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 psrlq xmm0,1 828 psrlq xmm0,1
827 pxor xmm1,xmm4 829 pxor xmm1,xmm4
828 pxor xmm4,xmm0 830 pxor xmm4,xmm0
829 psrlq xmm0,5 831 psrlq xmm0,5
830 pxor xmm0,xmm4 832 pxor xmm0,xmm4
831 psrlq xmm0,1 833 psrlq xmm0,1
832 pxor xmm0,xmm1 834 pxor xmm0,xmm1
833 pshufd xmm3,xmm5,78 835 pshufd xmm3,xmm5,78
834 pshufd xmm4,xmm0,78 836 pshufd xmm4,xmm0,78
835 pxor xmm3,xmm5 837 pxor xmm3,xmm5
836 » movdqu» XMMWORD PTR[48+rcx],xmm5 838 » movdqu» XMMWORD[48+rcx],xmm5
837 pxor xmm4,xmm0 839 pxor xmm4,xmm0
838 » movdqu» XMMWORD PTR[64+rcx],xmm0 840 » movdqu» XMMWORD[64+rcx],xmm0
839 DB 102,15,58,15,227,8 841 DB 102,15,58,15,227,8
840 » movdqu» XMMWORD PTR[80+rcx],xmm4 842 » movdqu» XMMWORD[80+rcx],xmm4
841 » movaps» xmm6,XMMWORD PTR[rsp] 843 » movaps» xmm6,XMMWORD[rsp]
842 » lea» rsp,QWORD PTR[24+rsp] 844 » lea» rsp,[24+rsp]
843 $L$SEH_end_gcm_init_clmul:: 845 $L$SEH_end_gcm_init_clmul:
844 DB 0F3h,0C3h ;repret 846 DB 0F3h,0C3h ;repret
845 gcm_init_clmul» ENDP 847
846 PUBLIC» gcm_gmult_clmul 848 global» gcm_gmult_clmul
847 849
848 ALIGN 16 850 ALIGN 16
849 gcm_gmult_clmul»PROC PUBLIC 851 gcm_gmult_clmul:
850 $L$_gmult_clmul:: 852 $L$_gmult_clmul:
851 » movdqu» xmm0,XMMWORD PTR[rcx] 853 » movdqu» xmm0,XMMWORD[rcx]
852 » movdqa» xmm5,XMMWORD PTR[$L$bswap_mask] 854 » movdqa» xmm5,XMMWORD[$L$bswap_mask]
853 » movdqu» xmm2,XMMWORD PTR[rdx] 855 » movdqu» xmm2,XMMWORD[rdx]
854 » movdqu» xmm4,XMMWORD PTR[32+rdx] 856 » movdqu» xmm4,XMMWORD[32+rdx]
855 DB 102,15,56,0,197 857 DB 102,15,56,0,197
856 movdqa xmm1,xmm0 858 movdqa xmm1,xmm0
857 pshufd xmm3,xmm0,78 859 pshufd xmm3,xmm0,78
858 pxor xmm3,xmm0 860 pxor xmm3,xmm0
859 DB 102,15,58,68,194,0 861 DB 102,15,58,68,194,0
860 DB 102,15,58,68,202,17 862 DB 102,15,58,68,202,17
861 DB 102,15,58,68,220,0 863 DB 102,15,58,68,220,0
862 pxor xmm3,xmm0 864 pxor xmm3,xmm0
863 pxor xmm3,xmm1 865 pxor xmm3,xmm1
864 866
(...skipping 19 matching lines...) Expand all
884 886
885 movdqa xmm4,xmm0 887 movdqa xmm4,xmm0
886 psrlq xmm0,1 888 psrlq xmm0,1
887 pxor xmm1,xmm4 889 pxor xmm1,xmm4
888 pxor xmm4,xmm0 890 pxor xmm4,xmm0
889 psrlq xmm0,5 891 psrlq xmm0,5
890 pxor xmm0,xmm4 892 pxor xmm0,xmm4
891 psrlq xmm0,1 893 psrlq xmm0,1
892 pxor xmm0,xmm1 894 pxor xmm0,xmm1
893 DB 102,15,56,0,197 895 DB 102,15,56,0,197
894 » movdqu» XMMWORD PTR[rcx],xmm0 896 » movdqu» XMMWORD[rcx],xmm0
895 DB 0F3h,0C3h ;repret 897 DB 0F3h,0C3h ;repret
896 gcm_gmult_clmul»ENDP 898
897 PUBLIC» gcm_ghash_clmul 899 global» gcm_ghash_clmul
898 900
899 ALIGN 32 901 ALIGN 32
900 gcm_ghash_clmul»PROC PUBLIC 902 gcm_ghash_clmul:
901 $L$_ghash_clmul:: 903 $L$_ghash_clmul:
902 » lea» rax,QWORD PTR[((-136))+rsp] 904 » lea» rax,[((-136))+rsp]
903 $L$SEH_begin_gcm_ghash_clmul:: 905 $L$SEH_begin_gcm_ghash_clmul:
904 906
905 DB» 048h,08dh,060h,0e0h 907 DB» 0x48,0x8d,0x60,0xe0
906 DB» 00fh,029h,070h,0e0h 908 DB» 0x0f,0x29,0x70,0xe0
907 DB» 00fh,029h,078h,0f0h 909 DB» 0x0f,0x29,0x78,0xf0
908 DB» 044h,00fh,029h,000h 910 DB» 0x44,0x0f,0x29,0x00
909 DB» 044h,00fh,029h,048h,010h 911 DB» 0x44,0x0f,0x29,0x48,0x10
910 DB» 044h,00fh,029h,050h,020h 912 DB» 0x44,0x0f,0x29,0x50,0x20
911 DB» 044h,00fh,029h,058h,030h 913 DB» 0x44,0x0f,0x29,0x58,0x30
912 DB» 044h,00fh,029h,060h,040h 914 DB» 0x44,0x0f,0x29,0x60,0x40
913 DB» 044h,00fh,029h,068h,050h 915 DB» 0x44,0x0f,0x29,0x68,0x50
914 DB» 044h,00fh,029h,070h,060h 916 DB» 0x44,0x0f,0x29,0x70,0x60
915 DB» 044h,00fh,029h,078h,070h 917 DB» 0x44,0x0f,0x29,0x78,0x70
916 » movdqa» xmm10,XMMWORD PTR[$L$bswap_mask] 918 » movdqa» xmm10,XMMWORD[$L$bswap_mask]
917 919
918 » movdqu» xmm0,XMMWORD PTR[rcx] 920 » movdqu» xmm0,XMMWORD[rcx]
919 » movdqu» xmm2,XMMWORD PTR[rdx] 921 » movdqu» xmm2,XMMWORD[rdx]
920 » movdqu» xmm7,XMMWORD PTR[32+rdx] 922 » movdqu» xmm7,XMMWORD[32+rdx]
921 DB 102,65,15,56,0,194 923 DB 102,65,15,56,0,194
922 924
923 » sub» r9,010h 925 » sub» r9,0x10
924 » jz» $L$odd_tail 926 » jz» NEAR $L$odd_tail
925 927
926 » movdqu» xmm6,XMMWORD PTR[16+rdx] 928 » movdqu» xmm6,XMMWORD[16+rdx]
927 » mov» eax,DWORD PTR[((OPENSSL_ia32cap_P+4))] 929 » mov» eax,DWORD[((OPENSSL_ia32cap_P+4))]
928 » cmp» r9,030h 930 » cmp» r9,0x30
929 » jb» $L$skip4x 931 » jb» NEAR $L$skip4x
930 932
931 and eax,71303168 933 and eax,71303168
932 cmp eax,4194304 934 cmp eax,4194304
933 » je» $L$skip4x 935 » je» NEAR $L$skip4x
934 936
935 » sub» r9,030h 937 » sub» r9,0x30
936 » mov» rax,0A040608020C0E000h 938 » mov» rax,0xA040608020C0E000
937 » movdqu» xmm14,XMMWORD PTR[48+rdx] 939 » movdqu» xmm14,XMMWORD[48+rdx]
938 » movdqu» xmm15,XMMWORD PTR[64+rdx] 940 » movdqu» xmm15,XMMWORD[64+rdx]
939 941
940 942
941 943
942 944
943 » movdqu» xmm3,XMMWORD PTR[48+r8] 945 » movdqu» xmm3,XMMWORD[48+r8]
944 » movdqu» xmm11,XMMWORD PTR[32+r8] 946 » movdqu» xmm11,XMMWORD[32+r8]
945 DB 102,65,15,56,0,218 947 DB 102,65,15,56,0,218
946 DB 102,69,15,56,0,218 948 DB 102,69,15,56,0,218
947 movdqa xmm5,xmm3 949 movdqa xmm5,xmm3
948 pshufd xmm4,xmm3,78 950 pshufd xmm4,xmm3,78
949 pxor xmm4,xmm3 951 pxor xmm4,xmm3
950 DB 102,15,58,68,218,0 952 DB 102,15,58,68,218,0
951 DB 102,15,58,68,234,17 953 DB 102,15,58,68,234,17
952 DB 102,15,58,68,231,0 954 DB 102,15,58,68,231,0
953 955
954 movdqa xmm13,xmm11 956 movdqa xmm13,xmm11
955 pshufd xmm12,xmm11,78 957 pshufd xmm12,xmm11,78
956 pxor xmm12,xmm11 958 pxor xmm12,xmm11
957 DB 102,68,15,58,68,222,0 959 DB 102,68,15,58,68,222,0
958 DB 102,68,15,58,68,238,17 960 DB 102,68,15,58,68,238,17
959 DB 102,68,15,58,68,231,16 961 DB 102,68,15,58,68,231,16
960 xorps xmm3,xmm11 962 xorps xmm3,xmm11
961 xorps xmm5,xmm13 963 xorps xmm5,xmm13
962 » movups» xmm7,XMMWORD PTR[80+rdx] 964 » movups» xmm7,XMMWORD[80+rdx]
963 xorps xmm4,xmm12 965 xorps xmm4,xmm12
964 966
965 » movdqu» xmm11,XMMWORD PTR[16+r8] 967 » movdqu» xmm11,XMMWORD[16+r8]
966 » movdqu» xmm8,XMMWORD PTR[r8] 968 » movdqu» xmm8,XMMWORD[r8]
967 DB 102,69,15,56,0,218 969 DB 102,69,15,56,0,218
968 DB 102,69,15,56,0,194 970 DB 102,69,15,56,0,194
969 movdqa xmm13,xmm11 971 movdqa xmm13,xmm11
970 pshufd xmm12,xmm11,78 972 pshufd xmm12,xmm11,78
971 pxor xmm0,xmm8 973 pxor xmm0,xmm8
972 pxor xmm12,xmm11 974 pxor xmm12,xmm11
973 DB 102,69,15,58,68,222,0 975 DB 102,69,15,58,68,222,0
974 movdqa xmm1,xmm0 976 movdqa xmm1,xmm0
975 pshufd xmm8,xmm0,78 977 pshufd xmm8,xmm0,78
976 pxor xmm8,xmm0 978 pxor xmm8,xmm0
977 DB 102,69,15,58,68,238,17 979 DB 102,69,15,58,68,238,17
978 DB 102,68,15,58,68,231,0 980 DB 102,68,15,58,68,231,0
979 xorps xmm3,xmm11 981 xorps xmm3,xmm11
980 xorps xmm5,xmm13 982 xorps xmm5,xmm13
981 983
982 » lea» r8,QWORD PTR[64+r8] 984 » lea» r8,[64+r8]
983 » sub» r9,040h 985 » sub» r9,0x40
984 » jc» $L$tail4x 986 » jc» NEAR $L$tail4x
985 987
986 » jmp» $L$mod4_loop 988 » jmp» NEAR $L$mod4_loop
987 ALIGN 32 989 ALIGN 32
988 $L$mod4_loop:: 990 $L$mod4_loop:
989 DB 102,65,15,58,68,199,0 991 DB 102,65,15,58,68,199,0
990 xorps xmm4,xmm12 992 xorps xmm4,xmm12
991 » movdqu» xmm11,XMMWORD PTR[48+r8] 993 » movdqu» xmm11,XMMWORD[48+r8]
992 DB 102,69,15,56,0,218 994 DB 102,69,15,56,0,218
993 DB 102,65,15,58,68,207,17 995 DB 102,65,15,58,68,207,17
994 xorps xmm0,xmm3 996 xorps xmm0,xmm3
995 » movdqu» xmm3,XMMWORD PTR[32+r8] 997 » movdqu» xmm3,XMMWORD[32+r8]
996 movdqa xmm13,xmm11 998 movdqa xmm13,xmm11
997 DB 102,68,15,58,68,199,16 999 DB 102,68,15,58,68,199,16
998 pshufd xmm12,xmm11,78 1000 pshufd xmm12,xmm11,78
999 xorps xmm1,xmm5 1001 xorps xmm1,xmm5
1000 pxor xmm12,xmm11 1002 pxor xmm12,xmm11
1001 DB 102,65,15,56,0,218 1003 DB 102,65,15,56,0,218
1002 » movups» xmm7,XMMWORD PTR[32+rdx] 1004 » movups» xmm7,XMMWORD[32+rdx]
1003 xorps xmm8,xmm4 1005 xorps xmm8,xmm4
1004 DB 102,68,15,58,68,218,0 1006 DB 102,68,15,58,68,218,0
1005 pshufd xmm4,xmm3,78 1007 pshufd xmm4,xmm3,78
1006 1008
1007 pxor xmm8,xmm0 1009 pxor xmm8,xmm0
1008 movdqa xmm5,xmm3 1010 movdqa xmm5,xmm3
1009 pxor xmm8,xmm1 1011 pxor xmm8,xmm1
1010 pxor xmm4,xmm3 1012 pxor xmm4,xmm3
1011 movdqa xmm9,xmm8 1013 movdqa xmm9,xmm8
1012 DB 102,68,15,58,68,234,17 1014 DB 102,68,15,58,68,234,17
1013 pslldq xmm8,8 1015 pslldq xmm8,8
1014 psrldq xmm9,8 1016 psrldq xmm9,8
1015 pxor xmm0,xmm8 1017 pxor xmm0,xmm8
1016 » movdqa» xmm8,XMMWORD PTR[$L$7_mask] 1018 » movdqa» xmm8,XMMWORD[$L$7_mask]
1017 pxor xmm1,xmm9 1019 pxor xmm1,xmm9
1018 DB 102,76,15,110,200 1020 DB 102,76,15,110,200
1019 1021
1020 pand xmm8,xmm0 1022 pand xmm8,xmm0
1021 DB 102,69,15,56,0,200 1023 DB 102,69,15,56,0,200
1022 pxor xmm9,xmm0 1024 pxor xmm9,xmm0
1023 DB 102,68,15,58,68,231,0 1025 DB 102,68,15,58,68,231,0
1024 psllq xmm9,57 1026 psllq xmm9,57
1025 movdqa xmm8,xmm9 1027 movdqa xmm8,xmm9
1026 pslldq xmm9,8 1028 pslldq xmm9,8
1027 DB 102,15,58,68,222,0 1029 DB 102,15,58,68,222,0
1028 psrldq xmm8,8 1030 psrldq xmm8,8
1029 pxor xmm0,xmm9 1031 pxor xmm0,xmm9
1030 pxor xmm1,xmm8 1032 pxor xmm1,xmm8
1031 » movdqu» xmm8,XMMWORD PTR[r8] 1033 » movdqu» xmm8,XMMWORD[r8]
1032 1034
1033 movdqa xmm9,xmm0 1035 movdqa xmm9,xmm0
1034 psrlq xmm0,1 1036 psrlq xmm0,1
1035 DB 102,15,58,68,238,17 1037 DB 102,15,58,68,238,17
1036 xorps xmm3,xmm11 1038 xorps xmm3,xmm11
1037 » movdqu» xmm11,XMMWORD PTR[16+r8] 1039 » movdqu» xmm11,XMMWORD[16+r8]
1038 DB 102,69,15,56,0,218 1040 DB 102,69,15,56,0,218
1039 DB 102,15,58,68,231,16 1041 DB 102,15,58,68,231,16
1040 xorps xmm5,xmm13 1042 xorps xmm5,xmm13
1041 » movups» xmm7,XMMWORD PTR[80+rdx] 1043 » movups» xmm7,XMMWORD[80+rdx]
1042 DB 102,69,15,56,0,194 1044 DB 102,69,15,56,0,194
1043 pxor xmm1,xmm9 1045 pxor xmm1,xmm9
1044 pxor xmm9,xmm0 1046 pxor xmm9,xmm0
1045 psrlq xmm0,5 1047 psrlq xmm0,5
1046 1048
1047 movdqa xmm13,xmm11 1049 movdqa xmm13,xmm11
1048 pxor xmm4,xmm12 1050 pxor xmm4,xmm12
1049 pshufd xmm12,xmm11,78 1051 pshufd xmm12,xmm11,78
1050 pxor xmm0,xmm9 1052 pxor xmm0,xmm9
1051 pxor xmm1,xmm8 1053 pxor xmm1,xmm8
1052 pxor xmm12,xmm11 1054 pxor xmm12,xmm11
1053 DB 102,69,15,58,68,222,0 1055 DB 102,69,15,58,68,222,0
1054 psrlq xmm0,1 1056 psrlq xmm0,1
1055 pxor xmm0,xmm1 1057 pxor xmm0,xmm1
1056 movdqa xmm1,xmm0 1058 movdqa xmm1,xmm0
1057 DB 102,69,15,58,68,238,17 1059 DB 102,69,15,58,68,238,17
1058 xorps xmm3,xmm11 1060 xorps xmm3,xmm11
1059 pshufd xmm8,xmm0,78 1061 pshufd xmm8,xmm0,78
1060 pxor xmm8,xmm0 1062 pxor xmm8,xmm0
1061 1063
1062 DB 102,68,15,58,68,231,0 1064 DB 102,68,15,58,68,231,0
1063 xorps xmm5,xmm13 1065 xorps xmm5,xmm13
1064 1066
1065 » lea» r8,QWORD PTR[64+r8] 1067 » lea» r8,[64+r8]
1066 » sub» r9,040h 1068 » sub» r9,0x40
1067 » jnc» $L$mod4_loop 1069 » jnc» NEAR $L$mod4_loop
1068 1070
1069 $L$tail4x:: 1071 $L$tail4x:
1070 DB 102,65,15,58,68,199,0 1072 DB 102,65,15,58,68,199,0
1071 DB 102,65,15,58,68,207,17 1073 DB 102,65,15,58,68,207,17
1072 DB 102,68,15,58,68,199,16 1074 DB 102,68,15,58,68,199,16
1073 xorps xmm4,xmm12 1075 xorps xmm4,xmm12
1074 xorps xmm0,xmm3 1076 xorps xmm0,xmm3
1075 xorps xmm1,xmm5 1077 xorps xmm1,xmm5
1076 pxor xmm1,xmm0 1078 pxor xmm1,xmm0
1077 pxor xmm8,xmm4 1079 pxor xmm8,xmm4
1078 1080
1079 pxor xmm8,xmm1 1081 pxor xmm8,xmm1
(...skipping 20 matching lines...) Expand all
1100 1102
1101 1103
1102 movdqa xmm4,xmm0 1104 movdqa xmm4,xmm0
1103 psrlq xmm0,1 1105 psrlq xmm0,1
1104 pxor xmm1,xmm4 1106 pxor xmm1,xmm4
1105 pxor xmm4,xmm0 1107 pxor xmm4,xmm0
1106 psrlq xmm0,5 1108 psrlq xmm0,5
1107 pxor xmm0,xmm4 1109 pxor xmm0,xmm4
1108 psrlq xmm0,1 1110 psrlq xmm0,1
1109 pxor xmm0,xmm1 1111 pxor xmm0,xmm1
1110 » add» r9,040h 1112 » add» r9,0x40
1111 » jz» $L$done 1113 » jz» NEAR $L$done
1112 » movdqu» xmm7,XMMWORD PTR[32+rdx] 1114 » movdqu» xmm7,XMMWORD[32+rdx]
1113 » sub» r9,010h 1115 » sub» r9,0x10
1114 » jz» $L$odd_tail 1116 » jz» NEAR $L$odd_tail
1115 $L$skip4x:: 1117 $L$skip4x:
1116 1118
1117 1119
1118 1120
1119 1121
1120 1122
1121 » movdqu» xmm8,XMMWORD PTR[r8] 1123 » movdqu» xmm8,XMMWORD[r8]
1122 » movdqu» xmm3,XMMWORD PTR[16+r8] 1124 » movdqu» xmm3,XMMWORD[16+r8]
1123 DB 102,69,15,56,0,194 1125 DB 102,69,15,56,0,194
1124 DB 102,65,15,56,0,218 1126 DB 102,65,15,56,0,218
1125 pxor xmm0,xmm8 1127 pxor xmm0,xmm8
1126 1128
1127 movdqa xmm5,xmm3 1129 movdqa xmm5,xmm3
1128 pshufd xmm4,xmm3,78 1130 pshufd xmm4,xmm3,78
1129 pxor xmm4,xmm3 1131 pxor xmm4,xmm3
1130 DB 102,15,58,68,218,0 1132 DB 102,15,58,68,218,0
1131 DB 102,15,58,68,234,17 1133 DB 102,15,58,68,234,17
1132 DB 102,15,58,68,231,0 1134 DB 102,15,58,68,231,0
1133 1135
1134 » lea» r8,QWORD PTR[32+r8] 1136 » lea» r8,[32+r8]
1135 nop 1137 nop
1136 » sub» r9,020h 1138 » sub» r9,0x20
1137 » jbe» $L$even_tail 1139 » jbe» NEAR $L$even_tail
1138 nop 1140 nop
1139 » jmp» $L$mod_loop 1141 » jmp» NEAR $L$mod_loop
1140 1142
1141 ALIGN 32 1143 ALIGN 32
1142 $L$mod_loop:: 1144 $L$mod_loop:
1143 movdqa xmm1,xmm0 1145 movdqa xmm1,xmm0
1144 movdqa xmm8,xmm4 1146 movdqa xmm8,xmm4
1145 pshufd xmm4,xmm0,78 1147 pshufd xmm4,xmm0,78
1146 pxor xmm4,xmm0 1148 pxor xmm4,xmm0
1147 1149
1148 DB 102,15,58,68,198,0 1150 DB 102,15,58,68,198,0
1149 DB 102,15,58,68,206,17 1151 DB 102,15,58,68,206,17
1150 DB 102,15,58,68,231,16 1152 DB 102,15,58,68,231,16
1151 1153
1152 pxor xmm0,xmm3 1154 pxor xmm0,xmm3
1153 pxor xmm1,xmm5 1155 pxor xmm1,xmm5
1154 » movdqu» xmm9,XMMWORD PTR[r8] 1156 » movdqu» xmm9,XMMWORD[r8]
1155 pxor xmm8,xmm0 1157 pxor xmm8,xmm0
1156 DB 102,69,15,56,0,202 1158 DB 102,69,15,56,0,202
1157 » movdqu» xmm3,XMMWORD PTR[16+r8] 1159 » movdqu» xmm3,XMMWORD[16+r8]
1158 1160
1159 pxor xmm8,xmm1 1161 pxor xmm8,xmm1
1160 pxor xmm1,xmm9 1162 pxor xmm1,xmm9
1161 pxor xmm4,xmm8 1163 pxor xmm4,xmm8
1162 DB 102,65,15,56,0,218 1164 DB 102,65,15,56,0,218
1163 movdqa xmm8,xmm4 1165 movdqa xmm8,xmm4
1164 psrldq xmm8,8 1166 psrldq xmm8,8
1165 pslldq xmm4,8 1167 pslldq xmm4,8
1166 pxor xmm1,xmm8 1168 pxor xmm1,xmm8
1167 pxor xmm0,xmm4 1169 pxor xmm0,xmm4
(...skipping 16 matching lines...) Expand all
1184 pxor xmm1,xmm8 1186 pxor xmm1,xmm8
1185 pxor xmm4,xmm5 1187 pxor xmm4,xmm5
1186 1188
1187 movdqa xmm9,xmm0 1189 movdqa xmm9,xmm0
1188 psrlq xmm0,1 1190 psrlq xmm0,1
1189 DB 102,15,58,68,234,17 1191 DB 102,15,58,68,234,17
1190 pxor xmm1,xmm9 1192 pxor xmm1,xmm9
1191 pxor xmm9,xmm0 1193 pxor xmm9,xmm0
1192 psrlq xmm0,5 1194 psrlq xmm0,5
1193 pxor xmm0,xmm9 1195 pxor xmm0,xmm9
1194 » lea» r8,QWORD PTR[32+r8] 1196 » lea» r8,[32+r8]
1195 psrlq xmm0,1 1197 psrlq xmm0,1
1196 DB 102,15,58,68,231,0 1198 DB 102,15,58,68,231,0
1197 pxor xmm0,xmm1 1199 pxor xmm0,xmm1
1198 1200
1199 » sub» r9,020h 1201 » sub» r9,0x20
1200 » ja» $L$mod_loop 1202 » ja» NEAR $L$mod_loop
1201 1203
1202 $L$even_tail:: 1204 $L$even_tail:
1203 movdqa xmm1,xmm0 1205 movdqa xmm1,xmm0
1204 movdqa xmm8,xmm4 1206 movdqa xmm8,xmm4
1205 pshufd xmm4,xmm0,78 1207 pshufd xmm4,xmm0,78
1206 pxor xmm4,xmm0 1208 pxor xmm4,xmm0
1207 1209
1208 DB 102,15,58,68,198,0 1210 DB 102,15,58,68,198,0
1209 DB 102,15,58,68,206,17 1211 DB 102,15,58,68,206,17
1210 DB 102,15,58,68,231,16 1212 DB 102,15,58,68,231,16
1211 1213
1212 pxor xmm0,xmm3 1214 pxor xmm0,xmm3
(...skipping 23 matching lines...) Expand all
1236 1238
1237 movdqa xmm4,xmm0 1239 movdqa xmm4,xmm0
1238 psrlq xmm0,1 1240 psrlq xmm0,1
1239 pxor xmm1,xmm4 1241 pxor xmm1,xmm4
1240 pxor xmm4,xmm0 1242 pxor xmm4,xmm0
1241 psrlq xmm0,5 1243 psrlq xmm0,5
1242 pxor xmm0,xmm4 1244 pxor xmm0,xmm4
1243 psrlq xmm0,1 1245 psrlq xmm0,1
1244 pxor xmm0,xmm1 1246 pxor xmm0,xmm1
1245 test r9,r9 1247 test r9,r9
1246 » jnz» $L$done 1248 » jnz» NEAR $L$done
1247 1249
1248 $L$odd_tail:: 1250 $L$odd_tail:
1249 » movdqu» xmm8,XMMWORD PTR[r8] 1251 » movdqu» xmm8,XMMWORD[r8]
1250 DB 102,69,15,56,0,194 1252 DB 102,69,15,56,0,194
1251 pxor xmm0,xmm8 1253 pxor xmm0,xmm8
1252 movdqa xmm1,xmm0 1254 movdqa xmm1,xmm0
1253 pshufd xmm3,xmm0,78 1255 pshufd xmm3,xmm0,78
1254 pxor xmm3,xmm0 1256 pxor xmm3,xmm0
1255 DB 102,15,58,68,194,0 1257 DB 102,15,58,68,194,0
1256 DB 102,15,58,68,202,17 1258 DB 102,15,58,68,202,17
1257 DB 102,15,58,68,223,0 1259 DB 102,15,58,68,223,0
1258 pxor xmm3,xmm0 1260 pxor xmm3,xmm0
1259 pxor xmm3,xmm1 1261 pxor xmm3,xmm1
(...skipping 19 matching lines...) Expand all
1279 1281
1280 1282
1281 movdqa xmm4,xmm0 1283 movdqa xmm4,xmm0
1282 psrlq xmm0,1 1284 psrlq xmm0,1
1283 pxor xmm1,xmm4 1285 pxor xmm1,xmm4
1284 pxor xmm4,xmm0 1286 pxor xmm4,xmm0
1285 psrlq xmm0,5 1287 psrlq xmm0,5
1286 pxor xmm0,xmm4 1288 pxor xmm0,xmm4
1287 psrlq xmm0,1 1289 psrlq xmm0,1
1288 pxor xmm0,xmm1 1290 pxor xmm0,xmm1
1289 $L$done:: 1291 $L$done:
1290 DB 102,65,15,56,0,194 1292 DB 102,65,15,56,0,194
1291 » movdqu» XMMWORD PTR[rcx],xmm0 1293 » movdqu» XMMWORD[rcx],xmm0
1292 » movaps» xmm6,XMMWORD PTR[rsp] 1294 » movaps» xmm6,XMMWORD[rsp]
1293 » movaps» xmm7,XMMWORD PTR[16+rsp] 1295 » movaps» xmm7,XMMWORD[16+rsp]
1294 » movaps» xmm8,XMMWORD PTR[32+rsp] 1296 » movaps» xmm8,XMMWORD[32+rsp]
1295 » movaps» xmm9,XMMWORD PTR[48+rsp] 1297 » movaps» xmm9,XMMWORD[48+rsp]
1296 » movaps» xmm10,XMMWORD PTR[64+rsp] 1298 » movaps» xmm10,XMMWORD[64+rsp]
1297 » movaps» xmm11,XMMWORD PTR[80+rsp] 1299 » movaps» xmm11,XMMWORD[80+rsp]
1298 » movaps» xmm12,XMMWORD PTR[96+rsp] 1300 » movaps» xmm12,XMMWORD[96+rsp]
1299 » movaps» xmm13,XMMWORD PTR[112+rsp] 1301 » movaps» xmm13,XMMWORD[112+rsp]
1300 » movaps» xmm14,XMMWORD PTR[128+rsp] 1302 » movaps» xmm14,XMMWORD[128+rsp]
1301 » movaps» xmm15,XMMWORD PTR[144+rsp] 1303 » movaps» xmm15,XMMWORD[144+rsp]
1302 » lea» rsp,QWORD PTR[168+rsp] 1304 » lea» rsp,[168+rsp]
1303 $L$SEH_end_gcm_ghash_clmul:: 1305 $L$SEH_end_gcm_ghash_clmul:
1304 DB 0F3h,0C3h ;repret 1306 DB 0F3h,0C3h ;repret
1305 gcm_ghash_clmul»ENDP 1307
1306 PUBLIC» gcm_init_avx 1308 global» gcm_init_avx
1307 1309
1308 ALIGN 32 1310 ALIGN 32
1309 gcm_init_avx» PROC PUBLIC 1311 gcm_init_avx:
1310 » jmp» $L$_init_clmul 1312 » jmp» NEAR $L$_init_clmul
1311 gcm_init_avx» ENDP 1313
1312 PUBLIC» gcm_gmult_avx 1314 global» gcm_gmult_avx
1313 1315
1314 ALIGN 32 1316 ALIGN 32
1315 gcm_gmult_avx» PROC PUBLIC 1317 gcm_gmult_avx:
1316 » jmp» $L$_gmult_clmul 1318 » jmp» NEAR $L$_gmult_clmul
1317 gcm_gmult_avx» ENDP 1319
1318 PUBLIC» gcm_ghash_avx 1320 global» gcm_ghash_avx
1319 1321
1320 ALIGN 32 1322 ALIGN 32
1321 gcm_ghash_avx» PROC PUBLIC 1323 gcm_ghash_avx:
1322 » jmp» $L$_ghash_clmul 1324 » jmp» NEAR $L$_ghash_clmul
1323 gcm_ghash_avx» ENDP 1325
1324 ALIGN 64 1326 ALIGN 64
1325 $L$bswap_mask:: 1327 $L$bswap_mask:
1326 DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 1328 DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
1327 $L$0x1c2_polynomial:: 1329 $L$0x1c2_polynomial:
1328 DB» 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0c2h 1330 DB» 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2
1329 $L$7_mask:: 1331 $L$7_mask:
1330 DD 7,0,7,0 1332 DD 7,0,7,0
1331 $L$7_mask_poly:: 1333 $L$7_mask_poly:
1332 DD 7,0,450,0 1334 DD 7,0,450,0
1333 ALIGN 64 1335 ALIGN 64
1334 1336
1335 $L$rem_4bit:: 1337 $L$rem_4bit:
1336 DD 0,0,0,471859200,0,943718400,0,610271232 1338 DD 0,0,0,471859200,0,943718400,0,610271232
1337 DD 0,1887436800,0,1822425088,0,1220542464,0,1423966208 1339 DD 0,1887436800,0,1822425088,0,1220542464,0,1423966208
1338 DD 0,3774873600,0,4246732800,0,3644850176,0,3311403008 1340 DD 0,3774873600,0,4246732800,0,3644850176,0,3311403008
1339 DD 0,2441084928,0,2376073216,0,2847932416,0,3051356160 1341 DD 0,2441084928,0,2376073216,0,2847932416,0,3051356160
1340 1342
1341 $L$rem_8bit:: 1343 $L$rem_8bit:
1342 » DW» 00000h,001C2h,00384h,00246h,00708h,006CAh,0048Ch,0054Eh 1344 » DW» 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E
1343 » DW» 00E10h,00FD2h,00D94h,00C56h,00918h,008DAh,00A9Ch,00B5Eh 1345 » DW» 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E
1344 » DW» 01C20h,01DE2h,01FA4h,01E66h,01B28h,01AEAh,018ACh,0196Eh 1346 » DW» 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E
1345 » DW» 01230h,013F2h,011B4h,01076h,01538h,014FAh,016BCh,0177Eh 1347 » DW» 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E
1346 » DW» 03840h,03982h,03BC4h,03A06h,03F48h,03E8Ah,03CCCh,03D0Eh 1348 » DW» 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E
1347 » DW» 03650h,03792h,035D4h,03416h,03158h,0309Ah,032DCh,0331Eh 1349 » DW» 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E
1348 » DW» 02460h,025A2h,027E4h,02626h,02368h,022AAh,020ECh,0212Eh 1350 » DW» 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E
1349 » DW» 02A70h,02BB2h,029F4h,02836h,02D78h,02CBAh,02EFCh,02F3Eh 1351 » DW» 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E
1350 » DW» 07080h,07142h,07304h,072C6h,07788h,0764Ah,0740Ch,075CEh 1352 » DW» 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE
1351 » DW» 07E90h,07F52h,07D14h,07CD6h,07998h,0785Ah,07A1Ch,07BDEh 1353 » DW» 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE
1352 » DW» 06CA0h,06D62h,06F24h,06EE6h,06BA8h,06A6Ah,0682Ch,069EEh 1354 » DW» 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE
1353 » DW» 062B0h,06372h,06134h,060F6h,065B8h,0647Ah,0663Ch,067FEh 1355 » DW» 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE
1354 » DW» 048C0h,04902h,04B44h,04A86h,04FC8h,04E0Ah,04C4Ch,04D8Eh 1356 » DW» 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E
1355 » DW» 046D0h,04712h,04554h,04496h,041D8h,0401Ah,0425Ch,0439Eh 1357 » DW» 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E
1356 » DW» 054E0h,05522h,05764h,056A6h,053E8h,0522Ah,0506Ch,051AEh 1358 » DW» 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE
1357 » DW» 05AF0h,05B32h,05974h,058B6h,05DF8h,05C3Ah,05E7Ch,05FBEh 1359 » DW» 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE
1358 » DW» 0E100h,0E0C2h,0E284h,0E346h,0E608h,0E7CAh,0E58Ch,0E44Eh 1360 » DW» 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E
1359 » DW» 0EF10h,0EED2h,0EC94h,0ED56h,0E818h,0E9DAh,0EB9Ch,0EA5Eh 1361 » DW» 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E
1360 » DW» 0FD20h,0FCE2h,0FEA4h,0FF66h,0FA28h,0FBEAh,0F9ACh,0F86Eh 1362 » DW» 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E
1361 » DW» 0F330h,0F2F2h,0F0B4h,0F176h,0F438h,0F5FAh,0F7BCh,0F67Eh 1363 » DW» 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E
1362 » DW» 0D940h,0D882h,0DAC4h,0DB06h,0DE48h,0DF8Ah,0DDCCh,0DC0Eh 1364 » DW» 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E
1363 » DW» 0D750h,0D692h,0D4D4h,0D516h,0D058h,0D19Ah,0D3DCh,0D21Eh 1365 » DW» 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E
1364 » DW» 0C560h,0C4A2h,0C6E4h,0C726h,0C268h,0C3AAh,0C1ECh,0C02Eh 1366 » DW» 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E
1365 » DW» 0CB70h,0CAB2h,0C8F4h,0C936h,0CC78h,0CDBAh,0CFFCh,0CE3Eh 1367 » DW» 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E
1366 » DW» 09180h,09042h,09204h,093C6h,09688h,0974Ah,0950Ch,094CEh 1368 » DW» 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE
1367 » DW» 09F90h,09E52h,09C14h,09DD6h,09898h,0995Ah,09B1Ch,09ADEh 1369 » DW» 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE
1368 » DW» 08DA0h,08C62h,08E24h,08FE6h,08AA8h,08B6Ah,0892Ch,088EEh 1370 » DW» 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE
1369 » DW» 083B0h,08272h,08034h,081F6h,084B8h,0857Ah,0873Ch,086FEh 1371 » DW» 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE
1370 » DW» 0A9C0h,0A802h,0AA44h,0AB86h,0AEC8h,0AF0Ah,0AD4Ch,0AC8Eh 1372 » DW» 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E
1371 » DW» 0A7D0h,0A612h,0A454h,0A596h,0A0D8h,0A11Ah,0A35Ch,0A29Eh 1373 » DW» 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E
1372 » DW» 0B5E0h,0B422h,0B664h,0B7A6h,0B2E8h,0B32Ah,0B16Ch,0B0AEh 1374 » DW» 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE
1373 » DW» 0BBF0h,0BA32h,0B874h,0B9B6h,0BCF8h,0BD3Ah,0BF7Ch,0BEBEh 1375 » DW» 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE
1374 1376
1375 DB 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52 1377 DB 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52
1376 DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 1378 DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32
1377 DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 1379 DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111
1378 DB 114,103,62,0 1380 DB 114,103,62,0
1379 ALIGN 64 1381 ALIGN 64
1380 EXTERN» __imp_RtlVirtualUnwind:NEAR 1382 EXTERN» __imp_RtlVirtualUnwind
1381 1383
1382 ALIGN 16 1384 ALIGN 16
1383 se_handler» PROC PRIVATE 1385 se_handler:
1384 push rsi 1386 push rsi
1385 push rdi 1387 push rdi
1386 push rbx 1388 push rbx
1387 push rbp 1389 push rbp
1388 push r12 1390 push r12
1389 push r13 1391 push r13
1390 push r14 1392 push r14
1391 push r15 1393 push r15
1392 pushfq 1394 pushfq
1393 sub rsp,64 1395 sub rsp,64
1394 1396
1395 » mov» rax,QWORD PTR[120+r8] 1397 » mov» rax,QWORD[120+r8]
1396 » mov» rbx,QWORD PTR[248+r8] 1398 » mov» rbx,QWORD[248+r8]
1397 1399
1398 » mov» rsi,QWORD PTR[8+r9] 1400 » mov» rsi,QWORD[8+r9]
1399 » mov» r11,QWORD PTR[56+r9] 1401 » mov» r11,QWORD[56+r9]
1400 1402
1401 » mov» r10d,DWORD PTR[r11] 1403 » mov» r10d,DWORD[r11]
1402 » lea» r10,QWORD PTR[r10*1+rsi] 1404 » lea» r10,[r10*1+rsi]
1403 cmp rbx,r10 1405 cmp rbx,r10
1404 » jb» $L$in_prologue 1406 » jb» NEAR $L$in_prologue
1405 1407
1406 » mov» rax,QWORD PTR[152+r8] 1408 » mov» rax,QWORD[152+r8]
1407 1409
1408 » mov» r10d,DWORD PTR[4+r11] 1410 » mov» r10d,DWORD[4+r11]
1409 » lea» r10,QWORD PTR[r10*1+rsi] 1411 » lea» r10,[r10*1+rsi]
1410 cmp rbx,r10 1412 cmp rbx,r10
1411 » jae» $L$in_prologue 1413 » jae» NEAR $L$in_prologue
1412 1414
1413 » lea» rax,QWORD PTR[24+rax] 1415 » lea» rax,[24+rax]
1414 1416
1415 » mov» rbx,QWORD PTR[((-8))+rax] 1417 » mov» rbx,QWORD[((-8))+rax]
1416 » mov» rbp,QWORD PTR[((-16))+rax] 1418 » mov» rbp,QWORD[((-16))+rax]
1417 » mov» r12,QWORD PTR[((-24))+rax] 1419 » mov» r12,QWORD[((-24))+rax]
1418 » mov» QWORD PTR[144+r8],rbx 1420 » mov» QWORD[144+r8],rbx
1419 » mov» QWORD PTR[160+r8],rbp 1421 » mov» QWORD[160+r8],rbp
1420 » mov» QWORD PTR[216+r8],r12 1422 » mov» QWORD[216+r8],r12
1421 1423
1422 $L$in_prologue:: 1424 $L$in_prologue:
1423 » mov» rdi,QWORD PTR[8+rax] 1425 » mov» rdi,QWORD[8+rax]
1424 » mov» rsi,QWORD PTR[16+rax] 1426 » mov» rsi,QWORD[16+rax]
1425 » mov» QWORD PTR[152+r8],rax 1427 » mov» QWORD[152+r8],rax
1426 » mov» QWORD PTR[168+r8],rsi 1428 » mov» QWORD[168+r8],rsi
1427 » mov» QWORD PTR[176+r8],rdi 1429 » mov» QWORD[176+r8],rdi
1428 1430
1429 » mov» rdi,QWORD PTR[40+r9] 1431 » mov» rdi,QWORD[40+r9]
1430 mov rsi,r8 1432 mov rsi,r8
1431 mov ecx,154 1433 mov ecx,154
1432 » DD» 0a548f3fch 1434 » DD» 0xa548f3fc
1433 1435
1434 mov rsi,r9 1436 mov rsi,r9
1435 xor rcx,rcx 1437 xor rcx,rcx
1436 » mov» rdx,QWORD PTR[8+rsi] 1438 » mov» rdx,QWORD[8+rsi]
1437 » mov» r8,QWORD PTR[rsi] 1439 » mov» r8,QWORD[rsi]
1438 » mov» r9,QWORD PTR[16+rsi] 1440 » mov» r9,QWORD[16+rsi]
1439 » mov» r10,QWORD PTR[40+rsi] 1441 » mov» r10,QWORD[40+rsi]
1440 » lea» r11,QWORD PTR[56+rsi] 1442 » lea» r11,[56+rsi]
1441 » lea» r12,QWORD PTR[24+rsi] 1443 » lea» r12,[24+rsi]
1442 » mov» QWORD PTR[32+rsp],r10 1444 » mov» QWORD[32+rsp],r10
1443 » mov» QWORD PTR[40+rsp],r11 1445 » mov» QWORD[40+rsp],r11
1444 » mov» QWORD PTR[48+rsp],r12 1446 » mov» QWORD[48+rsp],r12
1445 » mov» QWORD PTR[56+rsp],rcx 1447 » mov» QWORD[56+rsp],rcx
1446 » call» QWORD PTR[__imp_RtlVirtualUnwind] 1448 » call» QWORD[__imp_RtlVirtualUnwind]
1447 1449
1448 mov eax,1 1450 mov eax,1
1449 add rsp,64 1451 add rsp,64
1450 popfq 1452 popfq
1451 pop r15 1453 pop r15
1452 pop r14 1454 pop r14
1453 pop r13 1455 pop r13
1454 pop r12 1456 pop r12
1455 pop rbp 1457 pop rbp
1456 pop rbx 1458 pop rbx
1457 pop rdi 1459 pop rdi
1458 pop rsi 1460 pop rsi
1459 DB 0F3h,0C3h ;repret 1461 DB 0F3h,0C3h ;repret
1460 se_handler ENDP
1461 1462
1462 .text$» ENDS 1463
1463 .pdata» SEGMENT READONLY ALIGN(4) 1464 section».pdata rdata align=4
1464 ALIGN 4 1465 ALIGN 4
1465 » DD» imagerel $L$SEH_begin_gcm_gmult_4bit 1466 » DD» $L$SEH_begin_gcm_gmult_4bit wrt ..imagebase
1466 » DD» imagerel $L$SEH_end_gcm_gmult_4bit 1467 » DD» $L$SEH_end_gcm_gmult_4bit wrt ..imagebase
1467 » DD» imagerel $L$SEH_info_gcm_gmult_4bit 1468 » DD» $L$SEH_info_gcm_gmult_4bit wrt ..imagebase
1468 1469
1469 » DD» imagerel $L$SEH_begin_gcm_ghash_4bit 1470 » DD» $L$SEH_begin_gcm_ghash_4bit wrt ..imagebase
1470 » DD» imagerel $L$SEH_end_gcm_ghash_4bit 1471 » DD» $L$SEH_end_gcm_ghash_4bit wrt ..imagebase
1471 » DD» imagerel $L$SEH_info_gcm_ghash_4bit 1472 » DD» $L$SEH_info_gcm_ghash_4bit wrt ..imagebase
1472 1473
1473 » DD» imagerel $L$SEH_begin_gcm_init_clmul 1474 » DD» $L$SEH_begin_gcm_init_clmul wrt ..imagebase
1474 » DD» imagerel $L$SEH_end_gcm_init_clmul 1475 » DD» $L$SEH_end_gcm_init_clmul wrt ..imagebase
1475 » DD» imagerel $L$SEH_info_gcm_init_clmul 1476 » DD» $L$SEH_info_gcm_init_clmul wrt ..imagebase
1476 1477
1477 » DD» imagerel $L$SEH_begin_gcm_ghash_clmul 1478 » DD» $L$SEH_begin_gcm_ghash_clmul wrt ..imagebase
1478 » DD» imagerel $L$SEH_end_gcm_ghash_clmul 1479 » DD» $L$SEH_end_gcm_ghash_clmul wrt ..imagebase
1479 » DD» imagerel $L$SEH_info_gcm_ghash_clmul 1480 » DD» $L$SEH_info_gcm_ghash_clmul wrt ..imagebase
1480 .pdata» ENDS 1481 section».xdata rdata align=8
1481 .xdata» SEGMENT READONLY ALIGN(8)
1482 ALIGN 8 1482 ALIGN 8
1483 $L$SEH_info_gcm_gmult_4bit:: 1483 $L$SEH_info_gcm_gmult_4bit:
1484 DB 9,0,0,0 1484 DB 9,0,0,0
1485 » DD» imagerel se_handler 1485 » DD» se_handler wrt ..imagebase
1486 » DD» imagerel $L$gmult_prologue,imagerel $L$gmult_epilogue 1486 » DD» $L$gmult_prologue wrt ..imagebase,$L$gmult_epilogue wrt ..imageb ase
1487 $L$SEH_info_gcm_ghash_4bit:: 1487 $L$SEH_info_gcm_ghash_4bit:
1488 DB 9,0,0,0 1488 DB 9,0,0,0
1489 » DD» imagerel se_handler 1489 » DD» se_handler wrt ..imagebase
1490 » DD» imagerel $L$ghash_prologue,imagerel $L$ghash_epilogue 1490 » DD» $L$ghash_prologue wrt ..imagebase,$L$ghash_epilogue wrt ..imageb ase
1491 $L$SEH_info_gcm_init_clmul:: 1491 $L$SEH_info_gcm_init_clmul:
1492 DB» 001h,008h,003h,000h 1492 DB» 0x01,0x08,0x03,0x00
1493 DB» 008h,068h,000h,000h 1493 DB» 0x08,0x68,0x00,0x00
1494 DB» 004h,022h,000h,000h 1494 DB» 0x04,0x22,0x00,0x00
1495 $L$SEH_info_gcm_ghash_clmul:: 1495 $L$SEH_info_gcm_ghash_clmul:
1496 DB» 001h,033h,016h,000h 1496 DB» 0x01,0x33,0x16,0x00
1497 DB» 033h,0f8h,009h,000h 1497 DB» 0x33,0xf8,0x09,0x00
1498 DB» 02eh,0e8h,008h,000h 1498 DB» 0x2e,0xe8,0x08,0x00
1499 DB» 029h,0d8h,007h,000h 1499 DB» 0x29,0xd8,0x07,0x00
1500 DB» 024h,0c8h,006h,000h 1500 DB» 0x24,0xc8,0x06,0x00
1501 DB» 01fh,0b8h,005h,000h 1501 DB» 0x1f,0xb8,0x05,0x00
1502 DB» 01ah,0a8h,004h,000h 1502 DB» 0x1a,0xa8,0x04,0x00
1503 DB» 015h,098h,003h,000h 1503 DB» 0x15,0x98,0x03,0x00
1504 DB» 010h,088h,002h,000h 1504 DB» 0x10,0x88,0x02,0x00
1505 DB» 00ch,078h,001h,000h 1505 DB» 0x0c,0x78,0x01,0x00
1506 DB» 008h,068h,000h,000h 1506 DB» 0x08,0x68,0x00,0x00
1507 DB» 004h,001h,015h,000h 1507 DB» 0x04,0x01,0x15,0x00
1508
1509 .xdata» ENDS
1510 END
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698