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

Side by Side Diff: third_party/boringssl/win-x86_64/crypto/aes/vpaes-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 %define YMMWORD
4 %define ZMMWORD
5 section».text code align=64
3 6
4 7
5 8
9
6 10
7 11
8 12
9 13
10 14
11 15
12 16
13 17
14 18
15 19
16 20
17 21
18 22
19 23
20 ALIGN 16 24 ALIGN 16
21 _vpaes_encrypt_core» PROC PRIVATE 25 _vpaes_encrypt_core:
22 mov r9,rdx 26 mov r9,rdx
23 mov r11,16 27 mov r11,16
24 » mov» eax,DWORD PTR[240+rdx] 28 » mov» eax,DWORD[240+rdx]
25 movdqa xmm1,xmm9 29 movdqa xmm1,xmm9
26 » movdqa» xmm2,XMMWORD PTR[$L$k_ipt] 30 » movdqa» xmm2,XMMWORD[$L$k_ipt]
27 pandn xmm1,xmm0 31 pandn xmm1,xmm0
28 » movdqu» xmm5,XMMWORD PTR[r9] 32 » movdqu» xmm5,XMMWORD[r9]
29 psrld xmm1,4 33 psrld xmm1,4
30 pand xmm0,xmm9 34 pand xmm0,xmm9
31 DB 102,15,56,0,208 35 DB 102,15,56,0,208
32 » movdqa» xmm0,XMMWORD PTR[(($L$k_ipt+16))] 36 » movdqa» xmm0,XMMWORD[(($L$k_ipt+16))]
33 DB 102,15,56,0,193 37 DB 102,15,56,0,193
34 pxor xmm2,xmm5 38 pxor xmm2,xmm5
35 add r9,16 39 add r9,16
36 pxor xmm0,xmm2 40 pxor xmm0,xmm2
37 » lea» r10,QWORD PTR[$L$k_mc_backward] 41 » lea» r10,[$L$k_mc_backward]
38 » jmp» $L$enc_entry 42 » jmp» NEAR $L$enc_entry
39 43
40 ALIGN 16 44 ALIGN 16
41 $L$enc_loop:: 45 $L$enc_loop:
42 46
43 movdqa xmm4,xmm13 47 movdqa xmm4,xmm13
44 movdqa xmm0,xmm12 48 movdqa xmm0,xmm12
45 DB 102,15,56,0,226 49 DB 102,15,56,0,226
46 DB 102,15,56,0,195 50 DB 102,15,56,0,195
47 pxor xmm4,xmm5 51 pxor xmm4,xmm5
48 movdqa xmm5,xmm15 52 movdqa xmm5,xmm15
49 pxor xmm0,xmm4 53 pxor xmm0,xmm4
50 » movdqa» xmm1,XMMWORD PTR[((-64))+r10*1+r11] 54 » movdqa» xmm1,XMMWORD[((-64))+r10*1+r11]
51 DB 102,15,56,0,234 55 DB 102,15,56,0,234
52 » movdqa» xmm4,XMMWORD PTR[r10*1+r11] 56 » movdqa» xmm4,XMMWORD[r10*1+r11]
53 movdqa xmm2,xmm14 57 movdqa xmm2,xmm14
54 DB 102,15,56,0,211 58 DB 102,15,56,0,211
55 movdqa xmm3,xmm0 59 movdqa xmm3,xmm0
56 pxor xmm2,xmm5 60 pxor xmm2,xmm5
57 DB 102,15,56,0,193 61 DB 102,15,56,0,193
58 add r9,16 62 add r9,16
59 pxor xmm0,xmm2 63 pxor xmm0,xmm2
60 DB 102,15,56,0,220 64 DB 102,15,56,0,220
61 add r11,16 65 add r11,16
62 pxor xmm3,xmm0 66 pxor xmm3,xmm0
63 DB 102,15,56,0,193 67 DB 102,15,56,0,193
64 » and» r11,030h 68 » and» r11,0x30
65 sub rax,1 69 sub rax,1
66 pxor xmm0,xmm3 70 pxor xmm0,xmm3
67 71
68 $L$enc_entry:: 72 $L$enc_entry:
69 73
70 movdqa xmm1,xmm9 74 movdqa xmm1,xmm9
71 movdqa xmm5,xmm11 75 movdqa xmm5,xmm11
72 pandn xmm1,xmm0 76 pandn xmm1,xmm0
73 psrld xmm1,4 77 psrld xmm1,4
74 pand xmm0,xmm9 78 pand xmm0,xmm9
75 DB 102,15,56,0,232 79 DB 102,15,56,0,232
76 movdqa xmm3,xmm10 80 movdqa xmm3,xmm10
77 pxor xmm0,xmm1 81 pxor xmm0,xmm1
78 DB 102,15,56,0,217 82 DB 102,15,56,0,217
79 movdqa xmm4,xmm10 83 movdqa xmm4,xmm10
80 pxor xmm3,xmm5 84 pxor xmm3,xmm5
81 DB 102,15,56,0,224 85 DB 102,15,56,0,224
82 movdqa xmm2,xmm10 86 movdqa xmm2,xmm10
83 pxor xmm4,xmm5 87 pxor xmm4,xmm5
84 DB 102,15,56,0,211 88 DB 102,15,56,0,211
85 movdqa xmm3,xmm10 89 movdqa xmm3,xmm10
86 pxor xmm2,xmm0 90 pxor xmm2,xmm0
87 DB 102,15,56,0,220 91 DB 102,15,56,0,220
88 » movdqu» xmm5,XMMWORD PTR[r9] 92 » movdqu» xmm5,XMMWORD[r9]
89 pxor xmm3,xmm1 93 pxor xmm3,xmm1
90 » jnz» $L$enc_loop 94 » jnz» NEAR $L$enc_loop
91 95
92 96
93 » movdqa» xmm4,XMMWORD PTR[((-96))+r10] 97 » movdqa» xmm4,XMMWORD[((-96))+r10]
94 » movdqa» xmm0,XMMWORD PTR[((-80))+r10] 98 » movdqa» xmm0,XMMWORD[((-80))+r10]
95 DB 102,15,56,0,226 99 DB 102,15,56,0,226
96 pxor xmm4,xmm5 100 pxor xmm4,xmm5
97 DB 102,15,56,0,195 101 DB 102,15,56,0,195
98 » movdqa» xmm1,XMMWORD PTR[64+r10*1+r11] 102 » movdqa» xmm1,XMMWORD[64+r10*1+r11]
99 pxor xmm0,xmm4 103 pxor xmm0,xmm4
100 DB 102,15,56,0,193 104 DB 102,15,56,0,193
101 DB 0F3h,0C3h ;repret 105 DB 0F3h,0C3h ;repret
102 _vpaes_encrypt_core ENDP
103 106
104 107
105 108
109
106 110
107 111
108 112
109 113
110 ALIGN 16 114 ALIGN 16
111 _vpaes_decrypt_core» PROC PRIVATE 115 _vpaes_decrypt_core:
112 mov r9,rdx 116 mov r9,rdx
113 » mov» eax,DWORD PTR[240+rdx] 117 » mov» eax,DWORD[240+rdx]
114 movdqa xmm1,xmm9 118 movdqa xmm1,xmm9
115 » movdqa» xmm2,XMMWORD PTR[$L$k_dipt] 119 » movdqa» xmm2,XMMWORD[$L$k_dipt]
116 pandn xmm1,xmm0 120 pandn xmm1,xmm0
117 mov r11,rax 121 mov r11,rax
118 psrld xmm1,4 122 psrld xmm1,4
119 » movdqu» xmm5,XMMWORD PTR[r9] 123 » movdqu» xmm5,XMMWORD[r9]
120 shl r11,4 124 shl r11,4
121 pand xmm0,xmm9 125 pand xmm0,xmm9
122 DB 102,15,56,0,208 126 DB 102,15,56,0,208
123 » movdqa» xmm0,XMMWORD PTR[(($L$k_dipt+16))] 127 » movdqa» xmm0,XMMWORD[(($L$k_dipt+16))]
124 » xor» r11,030h 128 » xor» r11,0x30
125 » lea» r10,QWORD PTR[$L$k_dsbd] 129 » lea» r10,[$L$k_dsbd]
126 DB 102,15,56,0,193 130 DB 102,15,56,0,193
127 » and» r11,030h 131 » and» r11,0x30
128 pxor xmm2,xmm5 132 pxor xmm2,xmm5
129 » movdqa» xmm5,XMMWORD PTR[(($L$k_mc_forward+48))] 133 » movdqa» xmm5,XMMWORD[(($L$k_mc_forward+48))]
130 pxor xmm0,xmm2 134 pxor xmm0,xmm2
131 add r9,16 135 add r9,16
132 add r11,r10 136 add r11,r10
133 » jmp» $L$dec_entry 137 » jmp» NEAR $L$dec_entry
134 138
135 ALIGN 16 139 ALIGN 16
136 $L$dec_loop:: 140 $L$dec_loop:
137 141
138 142
139 143
140 » movdqa» xmm4,XMMWORD PTR[((-32))+r10] 144 » movdqa» xmm4,XMMWORD[((-32))+r10]
141 » movdqa» xmm1,XMMWORD PTR[((-16))+r10] 145 » movdqa» xmm1,XMMWORD[((-16))+r10]
142 DB 102,15,56,0,226 146 DB 102,15,56,0,226
143 DB 102,15,56,0,203 147 DB 102,15,56,0,203
144 pxor xmm0,xmm4 148 pxor xmm0,xmm4
145 » movdqa» xmm4,XMMWORD PTR[r10] 149 » movdqa» xmm4,XMMWORD[r10]
146 pxor xmm0,xmm1 150 pxor xmm0,xmm1
147 » movdqa» xmm1,XMMWORD PTR[16+r10] 151 » movdqa» xmm1,XMMWORD[16+r10]
148 152
149 DB 102,15,56,0,226 153 DB 102,15,56,0,226
150 DB 102,15,56,0,197 154 DB 102,15,56,0,197
151 DB 102,15,56,0,203 155 DB 102,15,56,0,203
152 pxor xmm0,xmm4 156 pxor xmm0,xmm4
153 » movdqa» xmm4,XMMWORD PTR[32+r10] 157 » movdqa» xmm4,XMMWORD[32+r10]
154 pxor xmm0,xmm1 158 pxor xmm0,xmm1
155 » movdqa» xmm1,XMMWORD PTR[48+r10] 159 » movdqa» xmm1,XMMWORD[48+r10]
156 160
157 DB 102,15,56,0,226 161 DB 102,15,56,0,226
158 DB 102,15,56,0,197 162 DB 102,15,56,0,197
159 DB 102,15,56,0,203 163 DB 102,15,56,0,203
160 pxor xmm0,xmm4 164 pxor xmm0,xmm4
161 » movdqa» xmm4,XMMWORD PTR[64+r10] 165 » movdqa» xmm4,XMMWORD[64+r10]
162 pxor xmm0,xmm1 166 pxor xmm0,xmm1
163 » movdqa» xmm1,XMMWORD PTR[80+r10] 167 » movdqa» xmm1,XMMWORD[80+r10]
164 168
165 DB 102,15,56,0,226 169 DB 102,15,56,0,226
166 DB 102,15,56,0,197 170 DB 102,15,56,0,197
167 DB 102,15,56,0,203 171 DB 102,15,56,0,203
168 pxor xmm0,xmm4 172 pxor xmm0,xmm4
169 add r9,16 173 add r9,16
170 DB 102,15,58,15,237,12 174 DB 102,15,58,15,237,12
171 pxor xmm0,xmm1 175 pxor xmm0,xmm1
172 sub rax,1 176 sub rax,1
173 177
174 $L$dec_entry:: 178 $L$dec_entry:
175 179
176 movdqa xmm1,xmm9 180 movdqa xmm1,xmm9
177 pandn xmm1,xmm0 181 pandn xmm1,xmm0
178 movdqa xmm2,xmm11 182 movdqa xmm2,xmm11
179 psrld xmm1,4 183 psrld xmm1,4
180 pand xmm0,xmm9 184 pand xmm0,xmm9
181 DB 102,15,56,0,208 185 DB 102,15,56,0,208
182 movdqa xmm3,xmm10 186 movdqa xmm3,xmm10
183 pxor xmm0,xmm1 187 pxor xmm0,xmm1
184 DB 102,15,56,0,217 188 DB 102,15,56,0,217
185 movdqa xmm4,xmm10 189 movdqa xmm4,xmm10
186 pxor xmm3,xmm2 190 pxor xmm3,xmm2
187 DB 102,15,56,0,224 191 DB 102,15,56,0,224
188 pxor xmm4,xmm2 192 pxor xmm4,xmm2
189 movdqa xmm2,xmm10 193 movdqa xmm2,xmm10
190 DB 102,15,56,0,211 194 DB 102,15,56,0,211
191 movdqa xmm3,xmm10 195 movdqa xmm3,xmm10
192 pxor xmm2,xmm0 196 pxor xmm2,xmm0
193 DB 102,15,56,0,220 197 DB 102,15,56,0,220
194 » movdqu» xmm0,XMMWORD PTR[r9] 198 » movdqu» xmm0,XMMWORD[r9]
195 pxor xmm3,xmm1 199 pxor xmm3,xmm1
196 » jnz» $L$dec_loop 200 » jnz» NEAR $L$dec_loop
197 201
198 202
199 » movdqa» xmm4,XMMWORD PTR[96+r10] 203 » movdqa» xmm4,XMMWORD[96+r10]
200 DB 102,15,56,0,226 204 DB 102,15,56,0,226
201 pxor xmm4,xmm0 205 pxor xmm4,xmm0
202 » movdqa» xmm0,XMMWORD PTR[112+r10] 206 » movdqa» xmm0,XMMWORD[112+r10]
203 » movdqa» xmm2,XMMWORD PTR[((-352))+r11] 207 » movdqa» xmm2,XMMWORD[((-352))+r11]
204 DB 102,15,56,0,195 208 DB 102,15,56,0,195
205 pxor xmm0,xmm4 209 pxor xmm0,xmm4
206 DB 102,15,56,0,194 210 DB 102,15,56,0,194
207 DB 0F3h,0C3h ;repret 211 DB 0F3h,0C3h ;repret
208 _vpaes_decrypt_core ENDP
209 212
210 213
211 214
215
212 216
213 217
214 218
215 219
216 ALIGN 16 220 ALIGN 16
217 _vpaes_schedule_core» PROC PRIVATE 221 _vpaes_schedule_core:
218 222
219 223
220 224
221 225
222 226
223 call _vpaes_preheat 227 call _vpaes_preheat
224 » movdqa» xmm8,XMMWORD PTR[$L$k_rcon] 228 » movdqa» xmm8,XMMWORD[$L$k_rcon]
225 » movdqu» xmm0,XMMWORD PTR[rdi] 229 » movdqu» xmm0,XMMWORD[rdi]
226 230
227 231
228 movdqa xmm3,xmm0 232 movdqa xmm3,xmm0
229 » lea» r11,QWORD PTR[$L$k_ipt] 233 » lea» r11,[$L$k_ipt]
230 call _vpaes_schedule_transform 234 call _vpaes_schedule_transform
231 movdqa xmm7,xmm0 235 movdqa xmm7,xmm0
232 236
233 » lea» r10,QWORD PTR[$L$k_sr] 237 » lea» r10,[$L$k_sr]
234 test rcx,rcx 238 test rcx,rcx
235 » jnz» $L$schedule_am_decrypting 239 » jnz» NEAR $L$schedule_am_decrypting
236 240
237 241
238 » movdqu» XMMWORD PTR[rdx],xmm0 242 » movdqu» XMMWORD[rdx],xmm0
239 » jmp» $L$schedule_go 243 » jmp» NEAR $L$schedule_go
240 244
241 $L$schedule_am_decrypting:: 245 $L$schedule_am_decrypting:
242 246
243 » movdqa» xmm1,XMMWORD PTR[r10*1+r8] 247 » movdqa» xmm1,XMMWORD[r10*1+r8]
244 DB 102,15,56,0,217 248 DB 102,15,56,0,217
245 » movdqu» XMMWORD PTR[rdx],xmm3 249 » movdqu» XMMWORD[rdx],xmm3
246 » xor» r8,030h 250 » xor» r8,0x30
247 251
248 $L$schedule_go:: 252 $L$schedule_go:
249 cmp esi,192 253 cmp esi,192
250 » ja» $L$schedule_256 254 » ja» NEAR $L$schedule_256
251 » je» $L$schedule_192 255 » je» NEAR $L$schedule_192
252 256
253 257
254 258
255 259
256 260
257 261
258 262
259 263
260 264
261 265
262 $L$schedule_128:: 266 $L$schedule_128:
263 mov esi,10 267 mov esi,10
264 268
265 $L$oop_schedule_128:: 269 $L$oop_schedule_128:
266 call _vpaes_schedule_round 270 call _vpaes_schedule_round
267 dec rsi 271 dec rsi
268 » jz» $L$schedule_mangle_last 272 » jz» NEAR $L$schedule_mangle_last
269 call _vpaes_schedule_mangle 273 call _vpaes_schedule_mangle
270 » jmp» $L$oop_schedule_128 274 » jmp» NEAR $L$oop_schedule_128
271 275
272 276
273 277
274 278
275 279
276 280
277 281
278 282
279 283
280 284
281 285
282 286
283 287
284 288
285 289
286 290
287 ALIGN 16 291 ALIGN 16
288 $L$schedule_192:: 292 $L$schedule_192:
289 » movdqu» xmm0,XMMWORD PTR[8+rdi] 293 » movdqu» xmm0,XMMWORD[8+rdi]
290 call _vpaes_schedule_transform 294 call _vpaes_schedule_transform
291 movdqa xmm6,xmm0 295 movdqa xmm6,xmm0
292 pxor xmm4,xmm4 296 pxor xmm4,xmm4
293 movhlps xmm6,xmm4 297 movhlps xmm6,xmm4
294 mov esi,4 298 mov esi,4
295 299
296 $L$oop_schedule_192:: 300 $L$oop_schedule_192:
297 call _vpaes_schedule_round 301 call _vpaes_schedule_round
298 DB 102,15,58,15,198,8 302 DB 102,15,58,15,198,8
299 call _vpaes_schedule_mangle 303 call _vpaes_schedule_mangle
300 call _vpaes_schedule_192_smear 304 call _vpaes_schedule_192_smear
301 call _vpaes_schedule_mangle 305 call _vpaes_schedule_mangle
302 call _vpaes_schedule_round 306 call _vpaes_schedule_round
303 dec rsi 307 dec rsi
304 » jz» $L$schedule_mangle_last 308 » jz» NEAR $L$schedule_mangle_last
305 call _vpaes_schedule_mangle 309 call _vpaes_schedule_mangle
306 call _vpaes_schedule_192_smear 310 call _vpaes_schedule_192_smear
307 » jmp» $L$oop_schedule_192 311 » jmp» NEAR $L$oop_schedule_192
308 312
309 313
310 314
311 315
312 316
313 317
314 318
315 319
316 320
317 321
318 322
319 ALIGN 16 323 ALIGN 16
320 $L$schedule_256:: 324 $L$schedule_256:
321 » movdqu» xmm0,XMMWORD PTR[16+rdi] 325 » movdqu» xmm0,XMMWORD[16+rdi]
322 call _vpaes_schedule_transform 326 call _vpaes_schedule_transform
323 mov esi,7 327 mov esi,7
324 328
325 $L$oop_schedule_256:: 329 $L$oop_schedule_256:
326 call _vpaes_schedule_mangle 330 call _vpaes_schedule_mangle
327 movdqa xmm6,xmm0 331 movdqa xmm6,xmm0
328 332
329 333
330 call _vpaes_schedule_round 334 call _vpaes_schedule_round
331 dec rsi 335 dec rsi
332 » jz» $L$schedule_mangle_last 336 » jz» NEAR $L$schedule_mangle_last
333 call _vpaes_schedule_mangle 337 call _vpaes_schedule_mangle
334 338
335 339
336 » pshufd» xmm0,xmm0,0FFh 340 » pshufd» xmm0,xmm0,0xFF
337 movdqa xmm5,xmm7 341 movdqa xmm5,xmm7
338 movdqa xmm7,xmm6 342 movdqa xmm7,xmm6
339 call _vpaes_schedule_low_round 343 call _vpaes_schedule_low_round
340 movdqa xmm7,xmm5 344 movdqa xmm7,xmm5
341 345
342 » jmp» $L$oop_schedule_256 346 » jmp» NEAR $L$oop_schedule_256
343 347
344 348
345 349
346 350
347 351
348 352
349 353
350 354
351 355
352 356
353 357
354 358
355 ALIGN 16 359 ALIGN 16
356 $L$schedule_mangle_last:: 360 $L$schedule_mangle_last:
357 361
358 » lea» r11,QWORD PTR[$L$k_deskew] 362 » lea» r11,[$L$k_deskew]
359 test rcx,rcx 363 test rcx,rcx
360 » jnz» $L$schedule_mangle_last_dec 364 » jnz» NEAR $L$schedule_mangle_last_dec
361 365
362 366
363 » movdqa» xmm1,XMMWORD PTR[r10*1+r8] 367 » movdqa» xmm1,XMMWORD[r10*1+r8]
364 DB 102,15,56,0,193 368 DB 102,15,56,0,193
365 » lea» r11,QWORD PTR[$L$k_opt] 369 » lea» r11,[$L$k_opt]
366 add rdx,32 370 add rdx,32
367 371
368 $L$schedule_mangle_last_dec:: 372 $L$schedule_mangle_last_dec:
369 add rdx,-16 373 add rdx,-16
370 » pxor» xmm0,XMMWORD PTR[$L$k_s63] 374 » pxor» xmm0,XMMWORD[$L$k_s63]
371 call _vpaes_schedule_transform 375 call _vpaes_schedule_transform
372 » movdqu» XMMWORD PTR[rdx],xmm0 376 » movdqu» XMMWORD[rdx],xmm0
373 377
374 378
375 pxor xmm0,xmm0 379 pxor xmm0,xmm0
376 pxor xmm1,xmm1 380 pxor xmm1,xmm1
377 pxor xmm2,xmm2 381 pxor xmm2,xmm2
378 pxor xmm3,xmm3 382 pxor xmm3,xmm3
379 pxor xmm4,xmm4 383 pxor xmm4,xmm4
380 pxor xmm5,xmm5 384 pxor xmm5,xmm5
381 pxor xmm6,xmm6 385 pxor xmm6,xmm6
382 pxor xmm7,xmm7 386 pxor xmm7,xmm7
383 DB 0F3h,0C3h ;repret 387 DB 0F3h,0C3h ;repret
384 _vpaes_schedule_core ENDP
385 388
386 389
387 390
391
388 392
389 393
390 394
391 395
392 396
393 397
394 398
395 399
396 400
397 401
398 402
399 403
400 404
401 ALIGN 16 405 ALIGN 16
402 _vpaes_schedule_192_smear» PROC PRIVATE 406 _vpaes_schedule_192_smear:
403 » pshufd» xmm1,xmm6,080h 407 » pshufd» xmm1,xmm6,0x80
404 » pshufd» xmm0,xmm7,0FEh 408 » pshufd» xmm0,xmm7,0xFE
405 pxor xmm6,xmm1 409 pxor xmm6,xmm1
406 pxor xmm1,xmm1 410 pxor xmm1,xmm1
407 pxor xmm6,xmm0 411 pxor xmm6,xmm0
408 movdqa xmm0,xmm6 412 movdqa xmm0,xmm6
409 movhlps xmm6,xmm1 413 movhlps xmm6,xmm1
410 DB 0F3h,0C3h ;repret 414 DB 0F3h,0C3h ;repret
411 _vpaes_schedule_192_smear ENDP
412 415
413 416
414 417
418
415 419
416 420
417 421
418 422
419 423
420 424
421 425
422 426
423 427
424 428
425 429
426 430
427 431
428 432
429 433
430 434
431 435
432 ALIGN 16 436 ALIGN 16
433 _vpaes_schedule_round» PROC PRIVATE 437 _vpaes_schedule_round:
434 438
435 pxor xmm1,xmm1 439 pxor xmm1,xmm1
436 DB 102,65,15,58,15,200,15 440 DB 102,65,15,58,15,200,15
437 DB 102,69,15,58,15,192,15 441 DB 102,69,15,58,15,192,15
438 pxor xmm7,xmm1 442 pxor xmm7,xmm1
439 443
440 444
441 » pshufd» xmm0,xmm0,0FFh 445 » pshufd» xmm0,xmm0,0xFF
442 DB 102,15,58,15,192,1 446 DB 102,15,58,15,192,1
443 447
444 448
445 449
446 450
447 _vpaes_schedule_low_round:: 451 _vpaes_schedule_low_round:
448 452
449 movdqa xmm1,xmm7 453 movdqa xmm1,xmm7
450 pslldq xmm7,4 454 pslldq xmm7,4
451 pxor xmm7,xmm1 455 pxor xmm7,xmm1
452 movdqa xmm1,xmm7 456 movdqa xmm1,xmm7
453 pslldq xmm7,8 457 pslldq xmm7,8
454 pxor xmm7,xmm1 458 pxor xmm7,xmm1
455 » pxor» xmm7,XMMWORD PTR[$L$k_s63] 459 » pxor» xmm7,XMMWORD[$L$k_s63]
456 460
457 461
458 movdqa xmm1,xmm9 462 movdqa xmm1,xmm9
459 pandn xmm1,xmm0 463 pandn xmm1,xmm0
460 psrld xmm1,4 464 psrld xmm1,4
461 pand xmm0,xmm9 465 pand xmm0,xmm9
462 movdqa xmm2,xmm11 466 movdqa xmm2,xmm11
463 DB 102,15,56,0,208 467 DB 102,15,56,0,208
464 pxor xmm0,xmm1 468 pxor xmm0,xmm1
465 movdqa xmm3,xmm10 469 movdqa xmm3,xmm10
(...skipping 11 matching lines...) Expand all
477 movdqa xmm4,xmm13 481 movdqa xmm4,xmm13
478 DB 102,15,56,0,226 482 DB 102,15,56,0,226
479 movdqa xmm0,xmm12 483 movdqa xmm0,xmm12
480 DB 102,15,56,0,195 484 DB 102,15,56,0,195
481 pxor xmm0,xmm4 485 pxor xmm0,xmm4
482 486
483 487
484 pxor xmm0,xmm7 488 pxor xmm0,xmm7
485 movdqa xmm7,xmm0 489 movdqa xmm7,xmm0
486 DB 0F3h,0C3h ;repret 490 DB 0F3h,0C3h ;repret
487 _vpaes_schedule_round ENDP
488 491
489 492
490 493
494
491 495
492 496
493 497
494 498
495 499
496 500
497 501
498 502
499 ALIGN 16 503 ALIGN 16
500 _vpaes_schedule_transform» PROC PRIVATE 504 _vpaes_schedule_transform:
501 movdqa xmm1,xmm9 505 movdqa xmm1,xmm9
502 pandn xmm1,xmm0 506 pandn xmm1,xmm0
503 psrld xmm1,4 507 psrld xmm1,4
504 pand xmm0,xmm9 508 pand xmm0,xmm9
505 » movdqa» xmm2,XMMWORD PTR[r11] 509 » movdqa» xmm2,XMMWORD[r11]
506 DB 102,15,56,0,208 510 DB 102,15,56,0,208
507 » movdqa» xmm0,XMMWORD PTR[16+r11] 511 » movdqa» xmm0,XMMWORD[16+r11]
508 DB 102,15,56,0,193 512 DB 102,15,56,0,193
509 pxor xmm0,xmm2 513 pxor xmm0,xmm2
510 DB 0F3h,0C3h ;repret 514 DB 0F3h,0C3h ;repret
511 _vpaes_schedule_transform ENDP
512 515
513 516
514 517
518
515 519
516 520
517 521
518 522
519 523
520 524
521 525
522 526
523 527
524 528
525 529
526 530
527 531
528 532
529 533
530 534
531 535
532 536
533 537
534 538
535 539
536 540
537 ALIGN 16 541 ALIGN 16
538 _vpaes_schedule_mangle» PROC PRIVATE 542 _vpaes_schedule_mangle:
539 movdqa xmm4,xmm0 543 movdqa xmm4,xmm0
540 » movdqa» xmm5,XMMWORD PTR[$L$k_mc_forward] 544 » movdqa» xmm5,XMMWORD[$L$k_mc_forward]
541 test rcx,rcx 545 test rcx,rcx
542 » jnz» $L$schedule_mangle_dec 546 » jnz» NEAR $L$schedule_mangle_dec
543 547
544 548
545 add rdx,16 549 add rdx,16
546 » pxor» xmm4,XMMWORD PTR[$L$k_s63] 550 » pxor» xmm4,XMMWORD[$L$k_s63]
547 DB 102,15,56,0,229 551 DB 102,15,56,0,229
548 movdqa xmm3,xmm4 552 movdqa xmm3,xmm4
549 DB 102,15,56,0,229 553 DB 102,15,56,0,229
550 pxor xmm3,xmm4 554 pxor xmm3,xmm4
551 DB 102,15,56,0,229 555 DB 102,15,56,0,229
552 pxor xmm3,xmm4 556 pxor xmm3,xmm4
553 557
554 » jmp» $L$schedule_mangle_both 558 » jmp» NEAR $L$schedule_mangle_both
555 ALIGN 16 559 ALIGN 16
556 $L$schedule_mangle_dec:: 560 $L$schedule_mangle_dec:
557 561
558 » lea» r11,QWORD PTR[$L$k_dksd] 562 » lea» r11,[$L$k_dksd]
559 movdqa xmm1,xmm9 563 movdqa xmm1,xmm9
560 pandn xmm1,xmm4 564 pandn xmm1,xmm4
561 psrld xmm1,4 565 psrld xmm1,4
562 pand xmm4,xmm9 566 pand xmm4,xmm9
563 567
564 » movdqa» xmm2,XMMWORD PTR[r11] 568 » movdqa» xmm2,XMMWORD[r11]
565 DB 102,15,56,0,212 569 DB 102,15,56,0,212
566 » movdqa» xmm3,XMMWORD PTR[16+r11] 570 » movdqa» xmm3,XMMWORD[16+r11]
567 DB 102,15,56,0,217 571 DB 102,15,56,0,217
568 pxor xmm3,xmm2 572 pxor xmm3,xmm2
569 DB 102,15,56,0,221 573 DB 102,15,56,0,221
570 574
571 » movdqa» xmm2,XMMWORD PTR[32+r11] 575 » movdqa» xmm2,XMMWORD[32+r11]
572 DB 102,15,56,0,212 576 DB 102,15,56,0,212
573 pxor xmm2,xmm3 577 pxor xmm2,xmm3
574 » movdqa» xmm3,XMMWORD PTR[48+r11] 578 » movdqa» xmm3,XMMWORD[48+r11]
575 DB 102,15,56,0,217 579 DB 102,15,56,0,217
576 pxor xmm3,xmm2 580 pxor xmm3,xmm2
577 DB 102,15,56,0,221 581 DB 102,15,56,0,221
578 582
579 » movdqa» xmm2,XMMWORD PTR[64+r11] 583 » movdqa» xmm2,XMMWORD[64+r11]
580 DB 102,15,56,0,212 584 DB 102,15,56,0,212
581 pxor xmm2,xmm3 585 pxor xmm2,xmm3
582 » movdqa» xmm3,XMMWORD PTR[80+r11] 586 » movdqa» xmm3,XMMWORD[80+r11]
583 DB 102,15,56,0,217 587 DB 102,15,56,0,217
584 pxor xmm3,xmm2 588 pxor xmm3,xmm2
585 DB 102,15,56,0,221 589 DB 102,15,56,0,221
586 590
587 » movdqa» xmm2,XMMWORD PTR[96+r11] 591 » movdqa» xmm2,XMMWORD[96+r11]
588 DB 102,15,56,0,212 592 DB 102,15,56,0,212
589 pxor xmm2,xmm3 593 pxor xmm2,xmm3
590 » movdqa» xmm3,XMMWORD PTR[112+r11] 594 » movdqa» xmm3,XMMWORD[112+r11]
591 DB 102,15,56,0,217 595 DB 102,15,56,0,217
592 pxor xmm3,xmm2 596 pxor xmm3,xmm2
593 597
594 add rdx,-16 598 add rdx,-16
595 599
596 $L$schedule_mangle_both:: 600 $L$schedule_mangle_both:
597 » movdqa» xmm1,XMMWORD PTR[r10*1+r8] 601 » movdqa» xmm1,XMMWORD[r10*1+r8]
598 DB 102,15,56,0,217 602 DB 102,15,56,0,217
599 add r8,-16 603 add r8,-16
600 » and» r8,030h 604 » and» r8,0x30
601 » movdqu» XMMWORD PTR[rdx],xmm3 605 » movdqu» XMMWORD[rdx],xmm3
602 DB 0F3h,0C3h ;repret 606 DB 0F3h,0C3h ;repret
603 _vpaes_schedule_mangle ENDP
604 607
605 608
606 609
607 610
608 PUBLIC» vpaes_set_encrypt_key 611
612 global» vpaes_set_encrypt_key
609 613
610 ALIGN 16 614 ALIGN 16
611 vpaes_set_encrypt_key» PROC PUBLIC 615 vpaes_set_encrypt_key:
612 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 616 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
613 » mov» QWORD PTR[16+rsp],rsi 617 » mov» QWORD[16+rsp],rsi
614 mov rax,rsp 618 mov rax,rsp
615 $L$SEH_begin_vpaes_set_encrypt_key:: 619 $L$SEH_begin_vpaes_set_encrypt_key:
616 mov rdi,rcx 620 mov rdi,rcx
617 mov rsi,rdx 621 mov rsi,rdx
618 mov rdx,r8 622 mov rdx,r8
619 623
620 624
621 » lea» rsp,QWORD PTR[((-184))+rsp] 625 » lea» rsp,[((-184))+rsp]
622 » movaps» XMMWORD PTR[16+rsp],xmm6 626 » movaps» XMMWORD[16+rsp],xmm6
623 » movaps» XMMWORD PTR[32+rsp],xmm7 627 » movaps» XMMWORD[32+rsp],xmm7
624 » movaps» XMMWORD PTR[48+rsp],xmm8 628 » movaps» XMMWORD[48+rsp],xmm8
625 » movaps» XMMWORD PTR[64+rsp],xmm9 629 » movaps» XMMWORD[64+rsp],xmm9
626 » movaps» XMMWORD PTR[80+rsp],xmm10 630 » movaps» XMMWORD[80+rsp],xmm10
627 » movaps» XMMWORD PTR[96+rsp],xmm11 631 » movaps» XMMWORD[96+rsp],xmm11
628 » movaps» XMMWORD PTR[112+rsp],xmm12 632 » movaps» XMMWORD[112+rsp],xmm12
629 » movaps» XMMWORD PTR[128+rsp],xmm13 633 » movaps» XMMWORD[128+rsp],xmm13
630 » movaps» XMMWORD PTR[144+rsp],xmm14 634 » movaps» XMMWORD[144+rsp],xmm14
631 » movaps» XMMWORD PTR[160+rsp],xmm15 635 » movaps» XMMWORD[160+rsp],xmm15
632 $L$enc_key_body:: 636 $L$enc_key_body:
633 mov eax,esi 637 mov eax,esi
634 shr eax,5 638 shr eax,5
635 add eax,5 639 add eax,5
636 » mov» DWORD PTR[240+rdx],eax 640 » mov» DWORD[240+rdx],eax
637 641
638 mov ecx,0 642 mov ecx,0
639 » mov» r8d,030h 643 » mov» r8d,0x30
640 call _vpaes_schedule_core 644 call _vpaes_schedule_core
641 » movaps» xmm6,XMMWORD PTR[16+rsp] 645 » movaps» xmm6,XMMWORD[16+rsp]
642 » movaps» xmm7,XMMWORD PTR[32+rsp] 646 » movaps» xmm7,XMMWORD[32+rsp]
643 » movaps» xmm8,XMMWORD PTR[48+rsp] 647 » movaps» xmm8,XMMWORD[48+rsp]
644 » movaps» xmm9,XMMWORD PTR[64+rsp] 648 » movaps» xmm9,XMMWORD[64+rsp]
645 » movaps» xmm10,XMMWORD PTR[80+rsp] 649 » movaps» xmm10,XMMWORD[80+rsp]
646 » movaps» xmm11,XMMWORD PTR[96+rsp] 650 » movaps» xmm11,XMMWORD[96+rsp]
647 » movaps» xmm12,XMMWORD PTR[112+rsp] 651 » movaps» xmm12,XMMWORD[112+rsp]
648 » movaps» xmm13,XMMWORD PTR[128+rsp] 652 » movaps» xmm13,XMMWORD[128+rsp]
649 » movaps» xmm14,XMMWORD PTR[144+rsp] 653 » movaps» xmm14,XMMWORD[144+rsp]
650 » movaps» xmm15,XMMWORD PTR[160+rsp] 654 » movaps» xmm15,XMMWORD[160+rsp]
651 » lea» rsp,QWORD PTR[184+rsp] 655 » lea» rsp,[184+rsp]
652 $L$enc_key_epilogue:: 656 $L$enc_key_epilogue:
653 xor eax,eax 657 xor eax,eax
654 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 658 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
655 » mov» rsi,QWORD PTR[16+rsp] 659 » mov» rsi,QWORD[16+rsp]
656 DB 0F3h,0C3h ;repret 660 DB 0F3h,0C3h ;repret
657 $L$SEH_end_vpaes_set_encrypt_key:: 661 $L$SEH_end_vpaes_set_encrypt_key:
658 vpaes_set_encrypt_key» ENDP
659 662
660 PUBLIC» vpaes_set_decrypt_key 663 global» vpaes_set_decrypt_key
661 664
662 ALIGN 16 665 ALIGN 16
663 vpaes_set_decrypt_key» PROC PUBLIC 666 vpaes_set_decrypt_key:
664 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 667 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
665 » mov» QWORD PTR[16+rsp],rsi 668 » mov» QWORD[16+rsp],rsi
666 mov rax,rsp 669 mov rax,rsp
667 $L$SEH_begin_vpaes_set_decrypt_key:: 670 $L$SEH_begin_vpaes_set_decrypt_key:
668 mov rdi,rcx 671 mov rdi,rcx
669 mov rsi,rdx 672 mov rsi,rdx
670 mov rdx,r8 673 mov rdx,r8
671 674
672 675
673 » lea» rsp,QWORD PTR[((-184))+rsp] 676 » lea» rsp,[((-184))+rsp]
674 » movaps» XMMWORD PTR[16+rsp],xmm6 677 » movaps» XMMWORD[16+rsp],xmm6
675 » movaps» XMMWORD PTR[32+rsp],xmm7 678 » movaps» XMMWORD[32+rsp],xmm7
676 » movaps» XMMWORD PTR[48+rsp],xmm8 679 » movaps» XMMWORD[48+rsp],xmm8
677 » movaps» XMMWORD PTR[64+rsp],xmm9 680 » movaps» XMMWORD[64+rsp],xmm9
678 » movaps» XMMWORD PTR[80+rsp],xmm10 681 » movaps» XMMWORD[80+rsp],xmm10
679 » movaps» XMMWORD PTR[96+rsp],xmm11 682 » movaps» XMMWORD[96+rsp],xmm11
680 » movaps» XMMWORD PTR[112+rsp],xmm12 683 » movaps» XMMWORD[112+rsp],xmm12
681 » movaps» XMMWORD PTR[128+rsp],xmm13 684 » movaps» XMMWORD[128+rsp],xmm13
682 » movaps» XMMWORD PTR[144+rsp],xmm14 685 » movaps» XMMWORD[144+rsp],xmm14
683 » movaps» XMMWORD PTR[160+rsp],xmm15 686 » movaps» XMMWORD[160+rsp],xmm15
684 $L$dec_key_body:: 687 $L$dec_key_body:
685 mov eax,esi 688 mov eax,esi
686 shr eax,5 689 shr eax,5
687 add eax,5 690 add eax,5
688 » mov» DWORD PTR[240+rdx],eax 691 » mov» DWORD[240+rdx],eax
689 shl eax,4 692 shl eax,4
690 » lea» rdx,QWORD PTR[16+rax*1+rdx] 693 » lea» rdx,[16+rax*1+rdx]
691 694
692 mov ecx,1 695 mov ecx,1
693 mov r8d,esi 696 mov r8d,esi
694 shr r8d,1 697 shr r8d,1
695 and r8d,32 698 and r8d,32
696 xor r8d,32 699 xor r8d,32
697 call _vpaes_schedule_core 700 call _vpaes_schedule_core
698 » movaps» xmm6,XMMWORD PTR[16+rsp] 701 » movaps» xmm6,XMMWORD[16+rsp]
699 » movaps» xmm7,XMMWORD PTR[32+rsp] 702 » movaps» xmm7,XMMWORD[32+rsp]
700 » movaps» xmm8,XMMWORD PTR[48+rsp] 703 » movaps» xmm8,XMMWORD[48+rsp]
701 » movaps» xmm9,XMMWORD PTR[64+rsp] 704 » movaps» xmm9,XMMWORD[64+rsp]
702 » movaps» xmm10,XMMWORD PTR[80+rsp] 705 » movaps» xmm10,XMMWORD[80+rsp]
703 » movaps» xmm11,XMMWORD PTR[96+rsp] 706 » movaps» xmm11,XMMWORD[96+rsp]
704 » movaps» xmm12,XMMWORD PTR[112+rsp] 707 » movaps» xmm12,XMMWORD[112+rsp]
705 » movaps» xmm13,XMMWORD PTR[128+rsp] 708 » movaps» xmm13,XMMWORD[128+rsp]
706 » movaps» xmm14,XMMWORD PTR[144+rsp] 709 » movaps» xmm14,XMMWORD[144+rsp]
707 » movaps» xmm15,XMMWORD PTR[160+rsp] 710 » movaps» xmm15,XMMWORD[160+rsp]
708 » lea» rsp,QWORD PTR[184+rsp] 711 » lea» rsp,[184+rsp]
709 $L$dec_key_epilogue:: 712 $L$dec_key_epilogue:
710 xor eax,eax 713 xor eax,eax
711 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 714 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
712 » mov» rsi,QWORD PTR[16+rsp] 715 » mov» rsi,QWORD[16+rsp]
713 DB 0F3h,0C3h ;repret 716 DB 0F3h,0C3h ;repret
714 $L$SEH_end_vpaes_set_decrypt_key:: 717 $L$SEH_end_vpaes_set_decrypt_key:
715 vpaes_set_decrypt_key» ENDP
716 718
717 PUBLIC» vpaes_encrypt 719 global» vpaes_encrypt
718 720
719 ALIGN 16 721 ALIGN 16
720 vpaes_encrypt» PROC PUBLIC 722 vpaes_encrypt:
721 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 723 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
722 » mov» QWORD PTR[16+rsp],rsi 724 » mov» QWORD[16+rsp],rsi
723 mov rax,rsp 725 mov rax,rsp
724 $L$SEH_begin_vpaes_encrypt:: 726 $L$SEH_begin_vpaes_encrypt:
725 mov rdi,rcx 727 mov rdi,rcx
726 mov rsi,rdx 728 mov rsi,rdx
727 mov rdx,r8 729 mov rdx,r8
728 730
729 731
730 » lea» rsp,QWORD PTR[((-184))+rsp] 732 » lea» rsp,[((-184))+rsp]
731 » movaps» XMMWORD PTR[16+rsp],xmm6 733 » movaps» XMMWORD[16+rsp],xmm6
732 » movaps» XMMWORD PTR[32+rsp],xmm7 734 » movaps» XMMWORD[32+rsp],xmm7
733 » movaps» XMMWORD PTR[48+rsp],xmm8 735 » movaps» XMMWORD[48+rsp],xmm8
734 » movaps» XMMWORD PTR[64+rsp],xmm9 736 » movaps» XMMWORD[64+rsp],xmm9
735 » movaps» XMMWORD PTR[80+rsp],xmm10 737 » movaps» XMMWORD[80+rsp],xmm10
736 » movaps» XMMWORD PTR[96+rsp],xmm11 738 » movaps» XMMWORD[96+rsp],xmm11
737 » movaps» XMMWORD PTR[112+rsp],xmm12 739 » movaps» XMMWORD[112+rsp],xmm12
738 » movaps» XMMWORD PTR[128+rsp],xmm13 740 » movaps» XMMWORD[128+rsp],xmm13
739 » movaps» XMMWORD PTR[144+rsp],xmm14 741 » movaps» XMMWORD[144+rsp],xmm14
740 » movaps» XMMWORD PTR[160+rsp],xmm15 742 » movaps» XMMWORD[160+rsp],xmm15
741 $L$enc_body:: 743 $L$enc_body:
742 » movdqu» xmm0,XMMWORD PTR[rdi] 744 » movdqu» xmm0,XMMWORD[rdi]
743 call _vpaes_preheat 745 call _vpaes_preheat
744 call _vpaes_encrypt_core 746 call _vpaes_encrypt_core
745 » movdqu» XMMWORD PTR[rsi],xmm0 747 » movdqu» XMMWORD[rsi],xmm0
746 » movaps» xmm6,XMMWORD PTR[16+rsp] 748 » movaps» xmm6,XMMWORD[16+rsp]
747 » movaps» xmm7,XMMWORD PTR[32+rsp] 749 » movaps» xmm7,XMMWORD[32+rsp]
748 » movaps» xmm8,XMMWORD PTR[48+rsp] 750 » movaps» xmm8,XMMWORD[48+rsp]
749 » movaps» xmm9,XMMWORD PTR[64+rsp] 751 » movaps» xmm9,XMMWORD[64+rsp]
750 » movaps» xmm10,XMMWORD PTR[80+rsp] 752 » movaps» xmm10,XMMWORD[80+rsp]
751 » movaps» xmm11,XMMWORD PTR[96+rsp] 753 » movaps» xmm11,XMMWORD[96+rsp]
752 » movaps» xmm12,XMMWORD PTR[112+rsp] 754 » movaps» xmm12,XMMWORD[112+rsp]
753 » movaps» xmm13,XMMWORD PTR[128+rsp] 755 » movaps» xmm13,XMMWORD[128+rsp]
754 » movaps» xmm14,XMMWORD PTR[144+rsp] 756 » movaps» xmm14,XMMWORD[144+rsp]
755 » movaps» xmm15,XMMWORD PTR[160+rsp] 757 » movaps» xmm15,XMMWORD[160+rsp]
756 » lea» rsp,QWORD PTR[184+rsp] 758 » lea» rsp,[184+rsp]
757 $L$enc_epilogue:: 759 $L$enc_epilogue:
758 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 760 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
759 » mov» rsi,QWORD PTR[16+rsp] 761 » mov» rsi,QWORD[16+rsp]
760 DB 0F3h,0C3h ;repret 762 DB 0F3h,0C3h ;repret
761 $L$SEH_end_vpaes_encrypt:: 763 $L$SEH_end_vpaes_encrypt:
762 vpaes_encrypt» ENDP
763 764
764 PUBLIC» vpaes_decrypt 765 global» vpaes_decrypt
765 766
766 ALIGN 16 767 ALIGN 16
767 vpaes_decrypt» PROC PUBLIC 768 vpaes_decrypt:
768 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 769 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
769 » mov» QWORD PTR[16+rsp],rsi 770 » mov» QWORD[16+rsp],rsi
770 mov rax,rsp 771 mov rax,rsp
771 $L$SEH_begin_vpaes_decrypt:: 772 $L$SEH_begin_vpaes_decrypt:
772 mov rdi,rcx 773 mov rdi,rcx
773 mov rsi,rdx 774 mov rsi,rdx
774 mov rdx,r8 775 mov rdx,r8
775 776
776 777
777 » lea» rsp,QWORD PTR[((-184))+rsp] 778 » lea» rsp,[((-184))+rsp]
778 » movaps» XMMWORD PTR[16+rsp],xmm6 779 » movaps» XMMWORD[16+rsp],xmm6
779 » movaps» XMMWORD PTR[32+rsp],xmm7 780 » movaps» XMMWORD[32+rsp],xmm7
780 » movaps» XMMWORD PTR[48+rsp],xmm8 781 » movaps» XMMWORD[48+rsp],xmm8
781 » movaps» XMMWORD PTR[64+rsp],xmm9 782 » movaps» XMMWORD[64+rsp],xmm9
782 » movaps» XMMWORD PTR[80+rsp],xmm10 783 » movaps» XMMWORD[80+rsp],xmm10
783 » movaps» XMMWORD PTR[96+rsp],xmm11 784 » movaps» XMMWORD[96+rsp],xmm11
784 » movaps» XMMWORD PTR[112+rsp],xmm12 785 » movaps» XMMWORD[112+rsp],xmm12
785 » movaps» XMMWORD PTR[128+rsp],xmm13 786 » movaps» XMMWORD[128+rsp],xmm13
786 » movaps» XMMWORD PTR[144+rsp],xmm14 787 » movaps» XMMWORD[144+rsp],xmm14
787 » movaps» XMMWORD PTR[160+rsp],xmm15 788 » movaps» XMMWORD[160+rsp],xmm15
788 $L$dec_body:: 789 $L$dec_body:
789 » movdqu» xmm0,XMMWORD PTR[rdi] 790 » movdqu» xmm0,XMMWORD[rdi]
790 call _vpaes_preheat 791 call _vpaes_preheat
791 call _vpaes_decrypt_core 792 call _vpaes_decrypt_core
792 » movdqu» XMMWORD PTR[rsi],xmm0 793 » movdqu» XMMWORD[rsi],xmm0
793 » movaps» xmm6,XMMWORD PTR[16+rsp] 794 » movaps» xmm6,XMMWORD[16+rsp]
794 » movaps» xmm7,XMMWORD PTR[32+rsp] 795 » movaps» xmm7,XMMWORD[32+rsp]
795 » movaps» xmm8,XMMWORD PTR[48+rsp] 796 » movaps» xmm8,XMMWORD[48+rsp]
796 » movaps» xmm9,XMMWORD PTR[64+rsp] 797 » movaps» xmm9,XMMWORD[64+rsp]
797 » movaps» xmm10,XMMWORD PTR[80+rsp] 798 » movaps» xmm10,XMMWORD[80+rsp]
798 » movaps» xmm11,XMMWORD PTR[96+rsp] 799 » movaps» xmm11,XMMWORD[96+rsp]
799 » movaps» xmm12,XMMWORD PTR[112+rsp] 800 » movaps» xmm12,XMMWORD[112+rsp]
800 » movaps» xmm13,XMMWORD PTR[128+rsp] 801 » movaps» xmm13,XMMWORD[128+rsp]
801 » movaps» xmm14,XMMWORD PTR[144+rsp] 802 » movaps» xmm14,XMMWORD[144+rsp]
802 » movaps» xmm15,XMMWORD PTR[160+rsp] 803 » movaps» xmm15,XMMWORD[160+rsp]
803 » lea» rsp,QWORD PTR[184+rsp] 804 » lea» rsp,[184+rsp]
804 $L$dec_epilogue:: 805 $L$dec_epilogue:
805 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 806 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
806 » mov» rsi,QWORD PTR[16+rsp] 807 » mov» rsi,QWORD[16+rsp]
807 DB 0F3h,0C3h ;repret 808 DB 0F3h,0C3h ;repret
808 $L$SEH_end_vpaes_decrypt:: 809 $L$SEH_end_vpaes_decrypt:
809 vpaes_decrypt» ENDP 810 global» vpaes_cbc_encrypt
810 PUBLIC» vpaes_cbc_encrypt
811 811
812 ALIGN 16 812 ALIGN 16
813 vpaes_cbc_encrypt» PROC PUBLIC 813 vpaes_cbc_encrypt:
814 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 814 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
815 » mov» QWORD PTR[16+rsp],rsi 815 » mov» QWORD[16+rsp],rsi
816 mov rax,rsp 816 mov rax,rsp
817 $L$SEH_begin_vpaes_cbc_encrypt:: 817 $L$SEH_begin_vpaes_cbc_encrypt:
818 mov rdi,rcx 818 mov rdi,rcx
819 mov rsi,rdx 819 mov rsi,rdx
820 mov rdx,r8 820 mov rdx,r8
821 mov rcx,r9 821 mov rcx,r9
822 » mov» r8,QWORD PTR[40+rsp] 822 » mov» r8,QWORD[40+rsp]
823 » mov» r9,QWORD PTR[48+rsp] 823 » mov» r9,QWORD[48+rsp]
824 824
825 825
826 xchg rdx,rcx 826 xchg rdx,rcx
827 sub rcx,16 827 sub rcx,16
828 » jc» $L$cbc_abort 828 » jc» NEAR $L$cbc_abort
829 » lea» rsp,QWORD PTR[((-184))+rsp] 829 » lea» rsp,[((-184))+rsp]
830 » movaps» XMMWORD PTR[16+rsp],xmm6 830 » movaps» XMMWORD[16+rsp],xmm6
831 » movaps» XMMWORD PTR[32+rsp],xmm7 831 » movaps» XMMWORD[32+rsp],xmm7
832 » movaps» XMMWORD PTR[48+rsp],xmm8 832 » movaps» XMMWORD[48+rsp],xmm8
833 » movaps» XMMWORD PTR[64+rsp],xmm9 833 » movaps» XMMWORD[64+rsp],xmm9
834 » movaps» XMMWORD PTR[80+rsp],xmm10 834 » movaps» XMMWORD[80+rsp],xmm10
835 » movaps» XMMWORD PTR[96+rsp],xmm11 835 » movaps» XMMWORD[96+rsp],xmm11
836 » movaps» XMMWORD PTR[112+rsp],xmm12 836 » movaps» XMMWORD[112+rsp],xmm12
837 » movaps» XMMWORD PTR[128+rsp],xmm13 837 » movaps» XMMWORD[128+rsp],xmm13
838 » movaps» XMMWORD PTR[144+rsp],xmm14 838 » movaps» XMMWORD[144+rsp],xmm14
839 » movaps» XMMWORD PTR[160+rsp],xmm15 839 » movaps» XMMWORD[160+rsp],xmm15
840 $L$cbc_body:: 840 $L$cbc_body:
841 » movdqu» xmm6,XMMWORD PTR[r8] 841 » movdqu» xmm6,XMMWORD[r8]
842 sub rsi,rdi 842 sub rsi,rdi
843 call _vpaes_preheat 843 call _vpaes_preheat
844 cmp r9d,0 844 cmp r9d,0
845 » je» $L$cbc_dec_loop 845 » je» NEAR $L$cbc_dec_loop
846 » jmp» $L$cbc_enc_loop 846 » jmp» NEAR $L$cbc_enc_loop
847 ALIGN 16 847 ALIGN 16
848 $L$cbc_enc_loop:: 848 $L$cbc_enc_loop:
849 » movdqu» xmm0,XMMWORD PTR[rdi] 849 » movdqu» xmm0,XMMWORD[rdi]
850 pxor xmm0,xmm6 850 pxor xmm0,xmm6
851 call _vpaes_encrypt_core 851 call _vpaes_encrypt_core
852 movdqa xmm6,xmm0 852 movdqa xmm6,xmm0
853 » movdqu» XMMWORD PTR[rdi*1+rsi],xmm0 853 » movdqu» XMMWORD[rdi*1+rsi],xmm0
854 » lea» rdi,QWORD PTR[16+rdi] 854 » lea» rdi,[16+rdi]
855 sub rcx,16 855 sub rcx,16
856 » jnc» $L$cbc_enc_loop 856 » jnc» NEAR $L$cbc_enc_loop
857 » jmp» $L$cbc_done 857 » jmp» NEAR $L$cbc_done
858 ALIGN 16 858 ALIGN 16
859 $L$cbc_dec_loop:: 859 $L$cbc_dec_loop:
860 » movdqu» xmm0,XMMWORD PTR[rdi] 860 » movdqu» xmm0,XMMWORD[rdi]
861 movdqa xmm7,xmm0 861 movdqa xmm7,xmm0
862 call _vpaes_decrypt_core 862 call _vpaes_decrypt_core
863 pxor xmm0,xmm6 863 pxor xmm0,xmm6
864 movdqa xmm6,xmm7 864 movdqa xmm6,xmm7
865 » movdqu» XMMWORD PTR[rdi*1+rsi],xmm0 865 » movdqu» XMMWORD[rdi*1+rsi],xmm0
866 » lea» rdi,QWORD PTR[16+rdi] 866 » lea» rdi,[16+rdi]
867 sub rcx,16 867 sub rcx,16
868 » jnc» $L$cbc_dec_loop 868 » jnc» NEAR $L$cbc_dec_loop
869 $L$cbc_done:: 869 $L$cbc_done:
870 » movdqu» XMMWORD PTR[r8],xmm6 870 » movdqu» XMMWORD[r8],xmm6
871 » movaps» xmm6,XMMWORD PTR[16+rsp] 871 » movaps» xmm6,XMMWORD[16+rsp]
872 » movaps» xmm7,XMMWORD PTR[32+rsp] 872 » movaps» xmm7,XMMWORD[32+rsp]
873 » movaps» xmm8,XMMWORD PTR[48+rsp] 873 » movaps» xmm8,XMMWORD[48+rsp]
874 » movaps» xmm9,XMMWORD PTR[64+rsp] 874 » movaps» xmm9,XMMWORD[64+rsp]
875 » movaps» xmm10,XMMWORD PTR[80+rsp] 875 » movaps» xmm10,XMMWORD[80+rsp]
876 » movaps» xmm11,XMMWORD PTR[96+rsp] 876 » movaps» xmm11,XMMWORD[96+rsp]
877 » movaps» xmm12,XMMWORD PTR[112+rsp] 877 » movaps» xmm12,XMMWORD[112+rsp]
878 » movaps» xmm13,XMMWORD PTR[128+rsp] 878 » movaps» xmm13,XMMWORD[128+rsp]
879 » movaps» xmm14,XMMWORD PTR[144+rsp] 879 » movaps» xmm14,XMMWORD[144+rsp]
880 » movaps» xmm15,XMMWORD PTR[160+rsp] 880 » movaps» xmm15,XMMWORD[160+rsp]
881 » lea» rsp,QWORD PTR[184+rsp] 881 » lea» rsp,[184+rsp]
882 $L$cbc_epilogue:: 882 $L$cbc_epilogue:
883 $L$cbc_abort:: 883 $L$cbc_abort:
884 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 884 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
885 » mov» rsi,QWORD PTR[16+rsp] 885 » mov» rsi,QWORD[16+rsp]
886 DB 0F3h,0C3h ;repret 886 DB 0F3h,0C3h ;repret
887 $L$SEH_end_vpaes_cbc_encrypt:: 887 $L$SEH_end_vpaes_cbc_encrypt:
888 vpaes_cbc_encrypt» ENDP
889 888
890 889
891 890
892 891
893 892
894 893
895 894
896 ALIGN 16 895 ALIGN 16
897 _vpaes_preheat» PROC PRIVATE 896 _vpaes_preheat:
898 » lea» r10,QWORD PTR[$L$k_s0F] 897 » lea» r10,[$L$k_s0F]
899 » movdqa» xmm10,XMMWORD PTR[((-32))+r10] 898 » movdqa» xmm10,XMMWORD[((-32))+r10]
900 » movdqa» xmm11,XMMWORD PTR[((-16))+r10] 899 » movdqa» xmm11,XMMWORD[((-16))+r10]
901 » movdqa» xmm9,XMMWORD PTR[r10] 900 » movdqa» xmm9,XMMWORD[r10]
902 » movdqa» xmm13,XMMWORD PTR[48+r10] 901 » movdqa» xmm13,XMMWORD[48+r10]
903 » movdqa» xmm12,XMMWORD PTR[64+r10] 902 » movdqa» xmm12,XMMWORD[64+r10]
904 » movdqa» xmm15,XMMWORD PTR[80+r10] 903 » movdqa» xmm15,XMMWORD[80+r10]
905 » movdqa» xmm14,XMMWORD PTR[96+r10] 904 » movdqa» xmm14,XMMWORD[96+r10]
906 DB 0F3h,0C3h ;repret 905 DB 0F3h,0C3h ;repret
907 _vpaes_preheat ENDP
908 906
909 907
910 908
909
911 910
912 911
913 912
914 ALIGN 64 913 ALIGN 64
915 _vpaes_consts:: 914 _vpaes_consts:
916 $L$k_inv:: 915 $L$k_inv:
917 » DQ» 00E05060F0D080180h,0040703090A0B0C02h 916 » DQ» 0x0E05060F0D080180,0x040703090A0B0C02
918 » DQ» 001040A060F0B0780h,0030D0E0C02050809h 917 » DQ» 0x01040A060F0B0780,0x030D0E0C02050809
919 918
920 $L$k_s0F:: 919 $L$k_s0F:
921 » DQ» 00F0F0F0F0F0F0F0Fh,00F0F0F0F0F0F0F0Fh 920 » DQ» 0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
922 921
923 $L$k_ipt:: 922 $L$k_ipt:
924 » DQ» 0C2B2E8985A2A7000h,0CABAE09052227808h 923 » DQ» 0xC2B2E8985A2A7000,0xCABAE09052227808
925 » DQ» 04C01307D317C4D00h,0CD80B1FCB0FDCC81h 924 » DQ» 0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
926 925
927 $L$k_sb1:: 926 $L$k_sb1:
928 » DQ» 0B19BE18FCB503E00h,0A5DF7A6E142AF544h 927 » DQ» 0xB19BE18FCB503E00,0xA5DF7A6E142AF544
929 » DQ» 03618D415FAE22300h,03BF7CCC10D2ED9EFh 928 » DQ» 0x3618D415FAE22300,0x3BF7CCC10D2ED9EF
930 $L$k_sb2:: 929 $L$k_sb2:
931 » DQ» 0E27A93C60B712400h,05EB7E955BC982FCDh 930 » DQ» 0xE27A93C60B712400,0x5EB7E955BC982FCD
932 » DQ» 069EB88400AE12900h,0C2A163C8AB82234Ah 931 » DQ» 0x69EB88400AE12900,0xC2A163C8AB82234A
933 $L$k_sbo:: 932 $L$k_sbo:
934 » DQ» 0D0D26D176FBDC700h,015AABF7AC502A878h 933 » DQ» 0xD0D26D176FBDC700,0x15AABF7AC502A878
935 » DQ» 0CFE474A55FBB6A00h,08E1E90D1412B35FAh 934 » DQ» 0xCFE474A55FBB6A00,0x8E1E90D1412B35FA
936 935
937 $L$k_mc_forward:: 936 $L$k_mc_forward:
938 » DQ» 00407060500030201h,00C0F0E0D080B0A09h 937 » DQ» 0x0407060500030201,0x0C0F0E0D080B0A09
939 » DQ» 0080B0A0904070605h,0000302010C0F0E0Dh 938 » DQ» 0x080B0A0904070605,0x000302010C0F0E0D
940 » DQ» 00C0F0E0D080B0A09h,00407060500030201h 939 » DQ» 0x0C0F0E0D080B0A09,0x0407060500030201
941 » DQ» 0000302010C0F0E0Dh,0080B0A0904070605h 940 » DQ» 0x000302010C0F0E0D,0x080B0A0904070605
942 941
943 $L$k_mc_backward:: 942 $L$k_mc_backward:
944 » DQ» 00605040702010003h,00E0D0C0F0A09080Bh 943 » DQ» 0x0605040702010003,0x0E0D0C0F0A09080B
945 » DQ» 0020100030E0D0C0Fh,00A09080B06050407h 944 » DQ» 0x020100030E0D0C0F,0x0A09080B06050407
946 » DQ» 00E0D0C0F0A09080Bh,00605040702010003h 945 » DQ» 0x0E0D0C0F0A09080B,0x0605040702010003
947 » DQ» 00A09080B06050407h,0020100030E0D0C0Fh 946 » DQ» 0x0A09080B06050407,0x020100030E0D0C0F
948 947
949 $L$k_sr:: 948 $L$k_sr:
950 » DQ» 00706050403020100h,00F0E0D0C0B0A0908h 949 » DQ» 0x0706050403020100,0x0F0E0D0C0B0A0908
951 » DQ» 0030E09040F0A0500h,00B06010C07020D08h 950 » DQ» 0x030E09040F0A0500,0x0B06010C07020D08
952 » DQ» 00F060D040B020900h,0070E050C030A0108h 951 » DQ» 0x0F060D040B020900,0x070E050C030A0108
953 » DQ» 00B0E0104070A0D00h,00306090C0F020508h 952 » DQ» 0x0B0E0104070A0D00,0x0306090C0F020508
954 953
955 $L$k_rcon:: 954 $L$k_rcon:
956 » DQ» 01F8391B9AF9DEEB6h,0702A98084D7C7D81h 955 » DQ» 0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
957 956
958 $L$k_s63:: 957 $L$k_s63:
959 » DQ» 05B5B5B5B5B5B5B5Bh,05B5B5B5B5B5B5B5Bh 958 » DQ» 0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
960 959
961 $L$k_opt:: 960 $L$k_opt:
962 » DQ» 0FF9F4929D6B66000h,0F7974121DEBE6808h 961 » DQ» 0xFF9F4929D6B66000,0xF7974121DEBE6808
963 » DQ» 001EDBD5150BCEC00h,0E10D5DB1B05C0CE0h 962 » DQ» 0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
964 963
965 $L$k_deskew:: 964 $L$k_deskew:
966 » DQ» 007E4A34047A4E300h,01DFEB95A5DBEF91Ah 965 » DQ» 0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
967 » DQ» 05F36B5DC83EA6900h,02841C2ABF49D1E77h 966 » DQ» 0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
968 967
969 968
970 969
971 970
972 971
973 $L$k_dksd:: 972 $L$k_dksd:
974 » DQ» 0FEB91A5DA3E44700h,00740E3A45A1DBEF9h 973 » DQ» 0xFEB91A5DA3E44700,0x0740E3A45A1DBEF9
975 » DQ» 041C277F4B5368300h,05FDC69EAAB289D1Eh 974 » DQ» 0x41C277F4B5368300,0x5FDC69EAAB289D1E
976 $L$k_dksb:: 975 $L$k_dksb:
977 » DQ» 09A4FCA1F8550D500h,003D653861CC94C99h 976 » DQ» 0x9A4FCA1F8550D500,0x03D653861CC94C99
978 » DQ» 0115BEDA7B6FC4A00h,0D993256F7E3482C8h 977 » DQ» 0x115BEDA7B6FC4A00,0xD993256F7E3482C8
979 $L$k_dkse:: 978 $L$k_dkse:
980 » DQ» 0D5031CCA1FC9D600h,053859A4C994F5086h 979 » DQ» 0xD5031CCA1FC9D600,0x53859A4C994F5086
981 » DQ» 0A23196054FDC7BE8h,0CD5EF96A20B31487h 980 » DQ» 0xA23196054FDC7BE8,0xCD5EF96A20B31487
982 $L$k_dks9:: 981 $L$k_dks9:
983 » DQ» 0B6116FC87ED9A700h,04AED933482255BFCh 982 » DQ» 0xB6116FC87ED9A700,0x4AED933482255BFC
984 » DQ» 04576516227143300h,08BB89FACE9DAFDCEh 983 » DQ» 0x4576516227143300,0x8BB89FACE9DAFDCE
985 984
986 985
987 986
988 987
989 988
990 $L$k_dipt:: 989 $L$k_dipt:
991 » DQ» 00F505B040B545F00h,0154A411E114E451Ah 990 » DQ» 0x0F505B040B545F00,0x154A411E114E451A
992 » DQ» 086E383E660056500h,012771772F491F194h 991 » DQ» 0x86E383E660056500,0x12771772F491F194
993 992
994 $L$k_dsb9:: 993 $L$k_dsb9:
995 » DQ» 0851C03539A86D600h,0CAD51F504F994CC9h 994 » DQ» 0x851C03539A86D600,0xCAD51F504F994CC9
996 » DQ» 0C03B1789ECD74900h,0725E2C9EB2FBA565h 995 » DQ» 0xC03B1789ECD74900,0x725E2C9EB2FBA565
997 $L$k_dsbd:: 996 $L$k_dsbd:
998 » DQ» 07D57CCDFE6B1A200h,0F56E9B13882A4439h 997 » DQ» 0x7D57CCDFE6B1A200,0xF56E9B13882A4439
999 » DQ» 03CE2FAF724C6CB00h,02931180D15DEEFD3h 998 » DQ» 0x3CE2FAF724C6CB00,0x2931180D15DEEFD3
1000 $L$k_dsbb:: 999 $L$k_dsbb:
1001 » DQ» 0D022649296B44200h,0602646F6B0F2D404h 1000 » DQ» 0xD022649296B44200,0x602646F6B0F2D404
1002 » DQ» 0C19498A6CD596700h,0F3FF0C3E3255AA6Bh 1001 » DQ» 0xC19498A6CD596700,0xF3FF0C3E3255AA6B
1003 $L$k_dsbe:: 1002 $L$k_dsbe:
1004 » DQ» 046F2929626D4D000h,02242600464B4F6B0h 1003 » DQ» 0x46F2929626D4D000,0x2242600464B4F6B0
1005 » DQ» 00C55A6CDFFAAC100h,09467F36B98593E32h 1004 » DQ» 0x0C55A6CDFFAAC100,0x9467F36B98593E32
1006 $L$k_dsbo:: 1005 $L$k_dsbo:
1007 » DQ» 01387EA537EF94000h,0C7AA6DB9D4943E2Dh 1006 » DQ» 0x1387EA537EF94000,0xC7AA6DB9D4943E2D
1008 » DQ» 012D7560F93441D00h,0CA4B8159D8C58E9Ch 1007 » DQ» 0x12D7560F93441D00,0xCA4B8159D8C58E9C
1009 DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 1008 DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
1010 DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 1009 DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54
1011 DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 1010 DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97
1012 DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 1011 DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
1013 DB 85,110,105,118,101,114,115,105,116,121,41,0 1012 DB 85,110,105,118,101,114,115,105,116,121,41,0
1014 ALIGN 64 1013 ALIGN 64
1015 1014
1016 EXTERN» __imp_RtlVirtualUnwind:NEAR 1015 EXTERN» __imp_RtlVirtualUnwind
1017 1016
1018 ALIGN 16 1017 ALIGN 16
1019 se_handler» PROC PRIVATE 1018 se_handler:
1020 push rsi 1019 push rsi
1021 push rdi 1020 push rdi
1022 push rbx 1021 push rbx
1023 push rbp 1022 push rbp
1024 push r12 1023 push r12
1025 push r13 1024 push r13
1026 push r14 1025 push r14
1027 push r15 1026 push r15
1028 pushfq 1027 pushfq
1029 sub rsp,64 1028 sub rsp,64
1030 1029
1031 » mov» rax,QWORD PTR[120+r8] 1030 » mov» rax,QWORD[120+r8]
1032 » mov» rbx,QWORD PTR[248+r8] 1031 » mov» rbx,QWORD[248+r8]
1033 1032
1034 » mov» rsi,QWORD PTR[8+r9] 1033 » mov» rsi,QWORD[8+r9]
1035 » mov» r11,QWORD PTR[56+r9] 1034 » mov» r11,QWORD[56+r9]
1036 1035
1037 » mov» r10d,DWORD PTR[r11] 1036 » mov» r10d,DWORD[r11]
1038 » lea» r10,QWORD PTR[r10*1+rsi] 1037 » lea» r10,[r10*1+rsi]
1039 cmp rbx,r10 1038 cmp rbx,r10
1040 » jb» $L$in_prologue 1039 » jb» NEAR $L$in_prologue
1041 1040
1042 » mov» rax,QWORD PTR[152+r8] 1041 » mov» rax,QWORD[152+r8]
1043 1042
1044 » mov» r10d,DWORD PTR[4+r11] 1043 » mov» r10d,DWORD[4+r11]
1045 » lea» r10,QWORD PTR[r10*1+rsi] 1044 » lea» r10,[r10*1+rsi]
1046 cmp rbx,r10 1045 cmp rbx,r10
1047 » jae» $L$in_prologue 1046 » jae» NEAR $L$in_prologue
1048 1047
1049 » lea» rsi,QWORD PTR[16+rax] 1048 » lea» rsi,[16+rax]
1050 » lea» rdi,QWORD PTR[512+r8] 1049 » lea» rdi,[512+r8]
1051 mov ecx,20 1050 mov ecx,20
1052 » DD» 0a548f3fch 1051 » DD» 0xa548f3fc
1053 » lea» rax,QWORD PTR[184+rax] 1052 » lea» rax,[184+rax]
1054 1053
1055 $L$in_prologue:: 1054 $L$in_prologue:
1056 » mov» rdi,QWORD PTR[8+rax] 1055 » mov» rdi,QWORD[8+rax]
1057 » mov» rsi,QWORD PTR[16+rax] 1056 » mov» rsi,QWORD[16+rax]
1058 » mov» QWORD PTR[152+r8],rax 1057 » mov» QWORD[152+r8],rax
1059 » mov» QWORD PTR[168+r8],rsi 1058 » mov» QWORD[168+r8],rsi
1060 » mov» QWORD PTR[176+r8],rdi 1059 » mov» QWORD[176+r8],rdi
1061 1060
1062 » mov» rdi,QWORD PTR[40+r9] 1061 » mov» rdi,QWORD[40+r9]
1063 mov rsi,r8 1062 mov rsi,r8
1064 mov ecx,154 1063 mov ecx,154
1065 » DD» 0a548f3fch 1064 » DD» 0xa548f3fc
1066 1065
1067 mov rsi,r9 1066 mov rsi,r9
1068 xor rcx,rcx 1067 xor rcx,rcx
1069 » mov» rdx,QWORD PTR[8+rsi] 1068 » mov» rdx,QWORD[8+rsi]
1070 » mov» r8,QWORD PTR[rsi] 1069 » mov» r8,QWORD[rsi]
1071 » mov» r9,QWORD PTR[16+rsi] 1070 » mov» r9,QWORD[16+rsi]
1072 » mov» r10,QWORD PTR[40+rsi] 1071 » mov» r10,QWORD[40+rsi]
1073 » lea» r11,QWORD PTR[56+rsi] 1072 » lea» r11,[56+rsi]
1074 » lea» r12,QWORD PTR[24+rsi] 1073 » lea» r12,[24+rsi]
1075 » mov» QWORD PTR[32+rsp],r10 1074 » mov» QWORD[32+rsp],r10
1076 » mov» QWORD PTR[40+rsp],r11 1075 » mov» QWORD[40+rsp],r11
1077 » mov» QWORD PTR[48+rsp],r12 1076 » mov» QWORD[48+rsp],r12
1078 » mov» QWORD PTR[56+rsp],rcx 1077 » mov» QWORD[56+rsp],rcx
1079 » call» QWORD PTR[__imp_RtlVirtualUnwind] 1078 » call» QWORD[__imp_RtlVirtualUnwind]
1080 1079
1081 mov eax,1 1080 mov eax,1
1082 add rsp,64 1081 add rsp,64
1083 popfq 1082 popfq
1084 pop r15 1083 pop r15
1085 pop r14 1084 pop r14
1086 pop r13 1085 pop r13
1087 pop r12 1086 pop r12
1088 pop rbp 1087 pop rbp
1089 pop rbx 1088 pop rbx
1090 pop rdi 1089 pop rdi
1091 pop rsi 1090 pop rsi
1092 DB 0F3h,0C3h ;repret 1091 DB 0F3h,0C3h ;repret
1093 se_handler ENDP
1094 1092
1095 .text$» ENDS 1093
1096 .pdata» SEGMENT READONLY ALIGN(4) 1094 section».pdata rdata align=4
1097 ALIGN 4 1095 ALIGN 4
1098 » DD» imagerel $L$SEH_begin_vpaes_set_encrypt_key 1096 » DD» $L$SEH_begin_vpaes_set_encrypt_key wrt ..imagebase
1099 » DD» imagerel $L$SEH_end_vpaes_set_encrypt_key 1097 » DD» $L$SEH_end_vpaes_set_encrypt_key wrt ..imagebase
1100 » DD» imagerel $L$SEH_info_vpaes_set_encrypt_key 1098 » DD» $L$SEH_info_vpaes_set_encrypt_key wrt ..imagebase
1101 1099
1102 » DD» imagerel $L$SEH_begin_vpaes_set_decrypt_key 1100 » DD» $L$SEH_begin_vpaes_set_decrypt_key wrt ..imagebase
1103 » DD» imagerel $L$SEH_end_vpaes_set_decrypt_key 1101 » DD» $L$SEH_end_vpaes_set_decrypt_key wrt ..imagebase
1104 » DD» imagerel $L$SEH_info_vpaes_set_decrypt_key 1102 » DD» $L$SEH_info_vpaes_set_decrypt_key wrt ..imagebase
1105 1103
1106 » DD» imagerel $L$SEH_begin_vpaes_encrypt 1104 » DD» $L$SEH_begin_vpaes_encrypt wrt ..imagebase
1107 » DD» imagerel $L$SEH_end_vpaes_encrypt 1105 » DD» $L$SEH_end_vpaes_encrypt wrt ..imagebase
1108 » DD» imagerel $L$SEH_info_vpaes_encrypt 1106 » DD» $L$SEH_info_vpaes_encrypt wrt ..imagebase
1109 1107
1110 » DD» imagerel $L$SEH_begin_vpaes_decrypt 1108 » DD» $L$SEH_begin_vpaes_decrypt wrt ..imagebase
1111 » DD» imagerel $L$SEH_end_vpaes_decrypt 1109 » DD» $L$SEH_end_vpaes_decrypt wrt ..imagebase
1112 » DD» imagerel $L$SEH_info_vpaes_decrypt 1110 » DD» $L$SEH_info_vpaes_decrypt wrt ..imagebase
1113 1111
1114 » DD» imagerel $L$SEH_begin_vpaes_cbc_encrypt 1112 » DD» $L$SEH_begin_vpaes_cbc_encrypt wrt ..imagebase
1115 » DD» imagerel $L$SEH_end_vpaes_cbc_encrypt 1113 » DD» $L$SEH_end_vpaes_cbc_encrypt wrt ..imagebase
1116 » DD» imagerel $L$SEH_info_vpaes_cbc_encrypt 1114 » DD» $L$SEH_info_vpaes_cbc_encrypt wrt ..imagebase
1117 1115
1118 .pdata» ENDS 1116 section».xdata rdata align=8
1119 .xdata» SEGMENT READONLY ALIGN(8)
1120 ALIGN 8 1117 ALIGN 8
1121 $L$SEH_info_vpaes_set_encrypt_key:: 1118 $L$SEH_info_vpaes_set_encrypt_key:
1122 DB 9,0,0,0 1119 DB 9,0,0,0
1123 » DD» imagerel se_handler 1120 » DD» se_handler wrt ..imagebase
1124 » DD» imagerel $L$enc_key_body,imagerel $L$enc_key_epilogue 1121 » DD» $L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imageb ase
1125 $L$SEH_info_vpaes_set_decrypt_key:: 1122 $L$SEH_info_vpaes_set_decrypt_key:
1126 DB 9,0,0,0 1123 DB 9,0,0,0
1127 » DD» imagerel se_handler 1124 » DD» se_handler wrt ..imagebase
1128 » DD» imagerel $L$dec_key_body,imagerel $L$dec_key_epilogue 1125 » DD» $L$dec_key_body wrt ..imagebase,$L$dec_key_epilogue wrt ..imageb ase
1129 $L$SEH_info_vpaes_encrypt:: 1126 $L$SEH_info_vpaes_encrypt:
1130 DB 9,0,0,0 1127 DB 9,0,0,0
1131 » DD» imagerel se_handler 1128 » DD» se_handler wrt ..imagebase
1132 » DD» imagerel $L$enc_body,imagerel $L$enc_epilogue 1129 » DD» $L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase
1133 $L$SEH_info_vpaes_decrypt:: 1130 $L$SEH_info_vpaes_decrypt:
1134 DB 9,0,0,0 1131 DB 9,0,0,0
1135 » DD» imagerel se_handler 1132 » DD» se_handler wrt ..imagebase
1136 » DD» imagerel $L$dec_body,imagerel $L$dec_epilogue 1133 » DD» $L$dec_body wrt ..imagebase,$L$dec_epilogue wrt ..imagebase
1137 $L$SEH_info_vpaes_cbc_encrypt:: 1134 $L$SEH_info_vpaes_cbc_encrypt:
1138 DB 9,0,0,0 1135 DB 9,0,0,0
1139 » DD» imagerel se_handler 1136 » DD» se_handler wrt ..imagebase
1140 » DD» imagerel $L$cbc_body,imagerel $L$cbc_epilogue 1137 » DD» $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase
1141
1142 .xdata» ENDS
1143 END
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698