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

Side by Side Diff: third_party/boringssl/win-x86_64/crypto/aes/aesni-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 PUBLIC» aesni_encrypt 4 %define ZMMWORD
5 section».text code align=64
6
7 EXTERN» OPENSSL_ia32cap_P
8 global» aesni_encrypt
5 9
6 ALIGN 16 10 ALIGN 16
7 aesni_encrypt» PROC PUBLIC 11 aesni_encrypt:
8 » movups» xmm2,XMMWORD PTR[rcx] 12 » movups» xmm2,XMMWORD[rcx]
9 » mov» eax,DWORD PTR[240+r8] 13 » mov» eax,DWORD[240+r8]
10 » movups» xmm0,XMMWORD PTR[r8] 14 » movups» xmm0,XMMWORD[r8]
11 » movups» xmm1,XMMWORD PTR[16+r8] 15 » movups» xmm1,XMMWORD[16+r8]
12 » lea» r8,QWORD PTR[32+r8] 16 » lea» r8,[32+r8]
13 xorps xmm2,xmm0 17 xorps xmm2,xmm0
14 $L$oop_enc1_1:: 18 $L$oop_enc1_1:
15 DB 102,15,56,220,209 19 DB 102,15,56,220,209
16 dec eax 20 dec eax
17 » movups» xmm1,XMMWORD PTR[r8] 21 » movups» xmm1,XMMWORD[r8]
18 » lea» r8,QWORD PTR[16+r8] 22 » lea» r8,[16+r8]
19 » jnz» $L$oop_enc1_1 23 » jnz» NEAR $L$oop_enc1_1
20 DB 102,15,56,221,209 24 DB 102,15,56,221,209
21 » movups» XMMWORD PTR[rdx],xmm2 25 » movups» XMMWORD[rdx],xmm2
22 DB 0F3h,0C3h ;repret 26 DB 0F3h,0C3h ;repret
23 aesni_encrypt ENDP
24 27
25 PUBLIC» aesni_decrypt 28
29 global» aesni_decrypt
26 30
27 ALIGN 16 31 ALIGN 16
28 aesni_decrypt» PROC PUBLIC 32 aesni_decrypt:
29 » movups» xmm2,XMMWORD PTR[rcx] 33 » movups» xmm2,XMMWORD[rcx]
30 » mov» eax,DWORD PTR[240+r8] 34 » mov» eax,DWORD[240+r8]
31 » movups» xmm0,XMMWORD PTR[r8] 35 » movups» xmm0,XMMWORD[r8]
32 » movups» xmm1,XMMWORD PTR[16+r8] 36 » movups» xmm1,XMMWORD[16+r8]
33 » lea» r8,QWORD PTR[32+r8] 37 » lea» r8,[32+r8]
34 xorps xmm2,xmm0 38 xorps xmm2,xmm0
35 $L$oop_dec1_2:: 39 $L$oop_dec1_2:
36 DB 102,15,56,222,209 40 DB 102,15,56,222,209
37 dec eax 41 dec eax
38 » movups» xmm1,XMMWORD PTR[r8] 42 » movups» xmm1,XMMWORD[r8]
39 » lea» r8,QWORD PTR[16+r8] 43 » lea» r8,[16+r8]
40 » jnz» $L$oop_dec1_2 44 » jnz» NEAR $L$oop_dec1_2
41 DB 102,15,56,223,209 45 DB 102,15,56,223,209
42 » movups» XMMWORD PTR[rdx],xmm2 46 » movups» XMMWORD[rdx],xmm2
43 DB 0F3h,0C3h ;repret 47 DB 0F3h,0C3h ;repret
44 aesni_decrypt» ENDP 48
45 49
46 ALIGN 16 50 ALIGN 16
47 _aesni_encrypt2»PROC PRIVATE 51 _aesni_encrypt2:
48 » movups» xmm0,XMMWORD PTR[rcx] 52 » movups» xmm0,XMMWORD[rcx]
49 shl eax,4 53 shl eax,4
50 » movups» xmm1,XMMWORD PTR[16+rcx] 54 » movups» xmm1,XMMWORD[16+rcx]
51 xorps xmm2,xmm0 55 xorps xmm2,xmm0
52 xorps xmm3,xmm0 56 xorps xmm3,xmm0
53 » movups» xmm0,XMMWORD PTR[32+rcx] 57 » movups» xmm0,XMMWORD[32+rcx]
54 » lea» rcx,QWORD PTR[32+rax*1+rcx] 58 » lea» rcx,[32+rax*1+rcx]
55 neg rax 59 neg rax
56 add rax,16 60 add rax,16
57 61
58 $L$enc_loop2:: 62 $L$enc_loop2:
59 DB 102,15,56,220,209 63 DB 102,15,56,220,209
60 DB 102,15,56,220,217 64 DB 102,15,56,220,217
61 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 65 » movups» xmm1,XMMWORD[rax*1+rcx]
62 add rax,32 66 add rax,32
63 DB 102,15,56,220,208 67 DB 102,15,56,220,208
64 DB 102,15,56,220,216 68 DB 102,15,56,220,216
65 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 69 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
66 » jnz» $L$enc_loop2 70 » jnz» NEAR $L$enc_loop2
67 71
68 DB 102,15,56,220,209 72 DB 102,15,56,220,209
69 DB 102,15,56,220,217 73 DB 102,15,56,220,217
70 DB 102,15,56,221,208 74 DB 102,15,56,221,208
71 DB 102,15,56,221,216 75 DB 102,15,56,221,216
72 DB 0F3h,0C3h ;repret 76 DB 0F3h,0C3h ;repret
73 _aesni_encrypt2»ENDP 77
74 78
75 ALIGN 16 79 ALIGN 16
76 _aesni_decrypt2»PROC PRIVATE 80 _aesni_decrypt2:
77 » movups» xmm0,XMMWORD PTR[rcx] 81 » movups» xmm0,XMMWORD[rcx]
78 shl eax,4 82 shl eax,4
79 » movups» xmm1,XMMWORD PTR[16+rcx] 83 » movups» xmm1,XMMWORD[16+rcx]
80 xorps xmm2,xmm0 84 xorps xmm2,xmm0
81 xorps xmm3,xmm0 85 xorps xmm3,xmm0
82 » movups» xmm0,XMMWORD PTR[32+rcx] 86 » movups» xmm0,XMMWORD[32+rcx]
83 » lea» rcx,QWORD PTR[32+rax*1+rcx] 87 » lea» rcx,[32+rax*1+rcx]
84 neg rax 88 neg rax
85 add rax,16 89 add rax,16
86 90
87 $L$dec_loop2:: 91 $L$dec_loop2:
88 DB 102,15,56,222,209 92 DB 102,15,56,222,209
89 DB 102,15,56,222,217 93 DB 102,15,56,222,217
90 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 94 » movups» xmm1,XMMWORD[rax*1+rcx]
91 add rax,32 95 add rax,32
92 DB 102,15,56,222,208 96 DB 102,15,56,222,208
93 DB 102,15,56,222,216 97 DB 102,15,56,222,216
94 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 98 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
95 » jnz» $L$dec_loop2 99 » jnz» NEAR $L$dec_loop2
96 100
97 DB 102,15,56,222,209 101 DB 102,15,56,222,209
98 DB 102,15,56,222,217 102 DB 102,15,56,222,217
99 DB 102,15,56,223,208 103 DB 102,15,56,223,208
100 DB 102,15,56,223,216 104 DB 102,15,56,223,216
101 DB 0F3h,0C3h ;repret 105 DB 0F3h,0C3h ;repret
102 _aesni_decrypt2»ENDP 106
103 107
104 ALIGN 16 108 ALIGN 16
105 _aesni_encrypt3»PROC PRIVATE 109 _aesni_encrypt3:
106 » movups» xmm0,XMMWORD PTR[rcx] 110 » movups» xmm0,XMMWORD[rcx]
107 shl eax,4 111 shl eax,4
108 » movups» xmm1,XMMWORD PTR[16+rcx] 112 » movups» xmm1,XMMWORD[16+rcx]
109 xorps xmm2,xmm0 113 xorps xmm2,xmm0
110 xorps xmm3,xmm0 114 xorps xmm3,xmm0
111 xorps xmm4,xmm0 115 xorps xmm4,xmm0
112 » movups» xmm0,XMMWORD PTR[32+rcx] 116 » movups» xmm0,XMMWORD[32+rcx]
113 » lea» rcx,QWORD PTR[32+rax*1+rcx] 117 » lea» rcx,[32+rax*1+rcx]
114 neg rax 118 neg rax
115 add rax,16 119 add rax,16
116 120
117 $L$enc_loop3:: 121 $L$enc_loop3:
118 DB 102,15,56,220,209 122 DB 102,15,56,220,209
119 DB 102,15,56,220,217 123 DB 102,15,56,220,217
120 DB 102,15,56,220,225 124 DB 102,15,56,220,225
121 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 125 » movups» xmm1,XMMWORD[rax*1+rcx]
122 add rax,32 126 add rax,32
123 DB 102,15,56,220,208 127 DB 102,15,56,220,208
124 DB 102,15,56,220,216 128 DB 102,15,56,220,216
125 DB 102,15,56,220,224 129 DB 102,15,56,220,224
126 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 130 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
127 » jnz» $L$enc_loop3 131 » jnz» NEAR $L$enc_loop3
128 132
129 DB 102,15,56,220,209 133 DB 102,15,56,220,209
130 DB 102,15,56,220,217 134 DB 102,15,56,220,217
131 DB 102,15,56,220,225 135 DB 102,15,56,220,225
132 DB 102,15,56,221,208 136 DB 102,15,56,221,208
133 DB 102,15,56,221,216 137 DB 102,15,56,221,216
134 DB 102,15,56,221,224 138 DB 102,15,56,221,224
135 DB 0F3h,0C3h ;repret 139 DB 0F3h,0C3h ;repret
136 _aesni_encrypt3»ENDP 140
137 141
138 ALIGN 16 142 ALIGN 16
139 _aesni_decrypt3»PROC PRIVATE 143 _aesni_decrypt3:
140 » movups» xmm0,XMMWORD PTR[rcx] 144 » movups» xmm0,XMMWORD[rcx]
141 shl eax,4 145 shl eax,4
142 » movups» xmm1,XMMWORD PTR[16+rcx] 146 » movups» xmm1,XMMWORD[16+rcx]
143 xorps xmm2,xmm0 147 xorps xmm2,xmm0
144 xorps xmm3,xmm0 148 xorps xmm3,xmm0
145 xorps xmm4,xmm0 149 xorps xmm4,xmm0
146 » movups» xmm0,XMMWORD PTR[32+rcx] 150 » movups» xmm0,XMMWORD[32+rcx]
147 » lea» rcx,QWORD PTR[32+rax*1+rcx] 151 » lea» rcx,[32+rax*1+rcx]
148 neg rax 152 neg rax
149 add rax,16 153 add rax,16
150 154
151 $L$dec_loop3:: 155 $L$dec_loop3:
152 DB 102,15,56,222,209 156 DB 102,15,56,222,209
153 DB 102,15,56,222,217 157 DB 102,15,56,222,217
154 DB 102,15,56,222,225 158 DB 102,15,56,222,225
155 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 159 » movups» xmm1,XMMWORD[rax*1+rcx]
156 add rax,32 160 add rax,32
157 DB 102,15,56,222,208 161 DB 102,15,56,222,208
158 DB 102,15,56,222,216 162 DB 102,15,56,222,216
159 DB 102,15,56,222,224 163 DB 102,15,56,222,224
160 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 164 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
161 » jnz» $L$dec_loop3 165 » jnz» NEAR $L$dec_loop3
162 166
163 DB 102,15,56,222,209 167 DB 102,15,56,222,209
164 DB 102,15,56,222,217 168 DB 102,15,56,222,217
165 DB 102,15,56,222,225 169 DB 102,15,56,222,225
166 DB 102,15,56,223,208 170 DB 102,15,56,223,208
167 DB 102,15,56,223,216 171 DB 102,15,56,223,216
168 DB 102,15,56,223,224 172 DB 102,15,56,223,224
169 DB 0F3h,0C3h ;repret 173 DB 0F3h,0C3h ;repret
170 _aesni_decrypt3»ENDP 174
171 175
172 ALIGN 16 176 ALIGN 16
173 _aesni_encrypt4»PROC PRIVATE 177 _aesni_encrypt4:
174 » movups» xmm0,XMMWORD PTR[rcx] 178 » movups» xmm0,XMMWORD[rcx]
175 shl eax,4 179 shl eax,4
176 » movups» xmm1,XMMWORD PTR[16+rcx] 180 » movups» xmm1,XMMWORD[16+rcx]
177 xorps xmm2,xmm0 181 xorps xmm2,xmm0
178 xorps xmm3,xmm0 182 xorps xmm3,xmm0
179 xorps xmm4,xmm0 183 xorps xmm4,xmm0
180 xorps xmm5,xmm0 184 xorps xmm5,xmm0
181 » movups» xmm0,XMMWORD PTR[32+rcx] 185 » movups» xmm0,XMMWORD[32+rcx]
182 » lea» rcx,QWORD PTR[32+rax*1+rcx] 186 » lea» rcx,[32+rax*1+rcx]
183 neg rax 187 neg rax
184 DB» 00fh,01fh,000h 188 DB» 0x0f,0x1f,0x00
185 add rax,16 189 add rax,16
186 190
187 $L$enc_loop4:: 191 $L$enc_loop4:
188 DB 102,15,56,220,209 192 DB 102,15,56,220,209
189 DB 102,15,56,220,217 193 DB 102,15,56,220,217
190 DB 102,15,56,220,225 194 DB 102,15,56,220,225
191 DB 102,15,56,220,233 195 DB 102,15,56,220,233
192 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 196 » movups» xmm1,XMMWORD[rax*1+rcx]
193 add rax,32 197 add rax,32
194 DB 102,15,56,220,208 198 DB 102,15,56,220,208
195 DB 102,15,56,220,216 199 DB 102,15,56,220,216
196 DB 102,15,56,220,224 200 DB 102,15,56,220,224
197 DB 102,15,56,220,232 201 DB 102,15,56,220,232
198 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 202 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
199 » jnz» $L$enc_loop4 203 » jnz» NEAR $L$enc_loop4
200 204
201 DB 102,15,56,220,209 205 DB 102,15,56,220,209
202 DB 102,15,56,220,217 206 DB 102,15,56,220,217
203 DB 102,15,56,220,225 207 DB 102,15,56,220,225
204 DB 102,15,56,220,233 208 DB 102,15,56,220,233
205 DB 102,15,56,221,208 209 DB 102,15,56,221,208
206 DB 102,15,56,221,216 210 DB 102,15,56,221,216
207 DB 102,15,56,221,224 211 DB 102,15,56,221,224
208 DB 102,15,56,221,232 212 DB 102,15,56,221,232
209 DB 0F3h,0C3h ;repret 213 DB 0F3h,0C3h ;repret
210 _aesni_encrypt4»ENDP 214
211 215
212 ALIGN 16 216 ALIGN 16
213 _aesni_decrypt4»PROC PRIVATE 217 _aesni_decrypt4:
214 » movups» xmm0,XMMWORD PTR[rcx] 218 » movups» xmm0,XMMWORD[rcx]
215 shl eax,4 219 shl eax,4
216 » movups» xmm1,XMMWORD PTR[16+rcx] 220 » movups» xmm1,XMMWORD[16+rcx]
217 xorps xmm2,xmm0 221 xorps xmm2,xmm0
218 xorps xmm3,xmm0 222 xorps xmm3,xmm0
219 xorps xmm4,xmm0 223 xorps xmm4,xmm0
220 xorps xmm5,xmm0 224 xorps xmm5,xmm0
221 » movups» xmm0,XMMWORD PTR[32+rcx] 225 » movups» xmm0,XMMWORD[32+rcx]
222 » lea» rcx,QWORD PTR[32+rax*1+rcx] 226 » lea» rcx,[32+rax*1+rcx]
223 neg rax 227 neg rax
224 DB» 00fh,01fh,000h 228 DB» 0x0f,0x1f,0x00
225 add rax,16 229 add rax,16
226 230
227 $L$dec_loop4:: 231 $L$dec_loop4:
228 DB 102,15,56,222,209 232 DB 102,15,56,222,209
229 DB 102,15,56,222,217 233 DB 102,15,56,222,217
230 DB 102,15,56,222,225 234 DB 102,15,56,222,225
231 DB 102,15,56,222,233 235 DB 102,15,56,222,233
232 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 236 » movups» xmm1,XMMWORD[rax*1+rcx]
233 add rax,32 237 add rax,32
234 DB 102,15,56,222,208 238 DB 102,15,56,222,208
235 DB 102,15,56,222,216 239 DB 102,15,56,222,216
236 DB 102,15,56,222,224 240 DB 102,15,56,222,224
237 DB 102,15,56,222,232 241 DB 102,15,56,222,232
238 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 242 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
239 » jnz» $L$dec_loop4 243 » jnz» NEAR $L$dec_loop4
240 244
241 DB 102,15,56,222,209 245 DB 102,15,56,222,209
242 DB 102,15,56,222,217 246 DB 102,15,56,222,217
243 DB 102,15,56,222,225 247 DB 102,15,56,222,225
244 DB 102,15,56,222,233 248 DB 102,15,56,222,233
245 DB 102,15,56,223,208 249 DB 102,15,56,223,208
246 DB 102,15,56,223,216 250 DB 102,15,56,223,216
247 DB 102,15,56,223,224 251 DB 102,15,56,223,224
248 DB 102,15,56,223,232 252 DB 102,15,56,223,232
249 DB 0F3h,0C3h ;repret 253 DB 0F3h,0C3h ;repret
250 _aesni_decrypt4»ENDP 254
251 255
252 ALIGN 16 256 ALIGN 16
253 _aesni_encrypt6»PROC PRIVATE 257 _aesni_encrypt6:
254 » movups» xmm0,XMMWORD PTR[rcx] 258 » movups» xmm0,XMMWORD[rcx]
255 shl eax,4 259 shl eax,4
256 » movups» xmm1,XMMWORD PTR[16+rcx] 260 » movups» xmm1,XMMWORD[16+rcx]
257 xorps xmm2,xmm0 261 xorps xmm2,xmm0
258 pxor xmm3,xmm0 262 pxor xmm3,xmm0
259 pxor xmm4,xmm0 263 pxor xmm4,xmm0
260 DB 102,15,56,220,209 264 DB 102,15,56,220,209
261 » lea» rcx,QWORD PTR[32+rax*1+rcx] 265 » lea» rcx,[32+rax*1+rcx]
262 neg rax 266 neg rax
263 DB 102,15,56,220,217 267 DB 102,15,56,220,217
264 pxor xmm5,xmm0 268 pxor xmm5,xmm0
265 pxor xmm6,xmm0 269 pxor xmm6,xmm0
266 DB 102,15,56,220,225 270 DB 102,15,56,220,225
267 pxor xmm7,xmm0 271 pxor xmm7,xmm0
268 add rax,16 272 add rax,16
269 DB 102,15,56,220,233 273 DB 102,15,56,220,233
270 DB 102,15,56,220,241 274 DB 102,15,56,220,241
271 DB 102,15,56,220,249 275 DB 102,15,56,220,249
272 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 276 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
273 » jmp» $L$enc_loop6_enter 277 » jmp» NEAR $L$enc_loop6_enter
274 ALIGN 16 278 ALIGN 16
275 $L$enc_loop6:: 279 $L$enc_loop6:
276 DB 102,15,56,220,209 280 DB 102,15,56,220,209
277 DB 102,15,56,220,217 281 DB 102,15,56,220,217
278 DB 102,15,56,220,225 282 DB 102,15,56,220,225
279 DB 102,15,56,220,233 283 DB 102,15,56,220,233
280 DB 102,15,56,220,241 284 DB 102,15,56,220,241
281 DB 102,15,56,220,249 285 DB 102,15,56,220,249
282 $L$enc_loop6_enter:: 286 $L$enc_loop6_enter:
283 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 287 » movups» xmm1,XMMWORD[rax*1+rcx]
284 add rax,32 288 add rax,32
285 DB 102,15,56,220,208 289 DB 102,15,56,220,208
286 DB 102,15,56,220,216 290 DB 102,15,56,220,216
287 DB 102,15,56,220,224 291 DB 102,15,56,220,224
288 DB 102,15,56,220,232 292 DB 102,15,56,220,232
289 DB 102,15,56,220,240 293 DB 102,15,56,220,240
290 DB 102,15,56,220,248 294 DB 102,15,56,220,248
291 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 295 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
292 » jnz» $L$enc_loop6 296 » jnz» NEAR $L$enc_loop6
293 297
294 DB 102,15,56,220,209 298 DB 102,15,56,220,209
295 DB 102,15,56,220,217 299 DB 102,15,56,220,217
296 DB 102,15,56,220,225 300 DB 102,15,56,220,225
297 DB 102,15,56,220,233 301 DB 102,15,56,220,233
298 DB 102,15,56,220,241 302 DB 102,15,56,220,241
299 DB 102,15,56,220,249 303 DB 102,15,56,220,249
300 DB 102,15,56,221,208 304 DB 102,15,56,221,208
301 DB 102,15,56,221,216 305 DB 102,15,56,221,216
302 DB 102,15,56,221,224 306 DB 102,15,56,221,224
303 DB 102,15,56,221,232 307 DB 102,15,56,221,232
304 DB 102,15,56,221,240 308 DB 102,15,56,221,240
305 DB 102,15,56,221,248 309 DB 102,15,56,221,248
306 DB 0F3h,0C3h ;repret 310 DB 0F3h,0C3h ;repret
307 _aesni_encrypt6»ENDP 311
308 312
309 ALIGN 16 313 ALIGN 16
310 _aesni_decrypt6»PROC PRIVATE 314 _aesni_decrypt6:
311 » movups» xmm0,XMMWORD PTR[rcx] 315 » movups» xmm0,XMMWORD[rcx]
312 shl eax,4 316 shl eax,4
313 » movups» xmm1,XMMWORD PTR[16+rcx] 317 » movups» xmm1,XMMWORD[16+rcx]
314 xorps xmm2,xmm0 318 xorps xmm2,xmm0
315 pxor xmm3,xmm0 319 pxor xmm3,xmm0
316 pxor xmm4,xmm0 320 pxor xmm4,xmm0
317 DB 102,15,56,222,209 321 DB 102,15,56,222,209
318 » lea» rcx,QWORD PTR[32+rax*1+rcx] 322 » lea» rcx,[32+rax*1+rcx]
319 neg rax 323 neg rax
320 DB 102,15,56,222,217 324 DB 102,15,56,222,217
321 pxor xmm5,xmm0 325 pxor xmm5,xmm0
322 pxor xmm6,xmm0 326 pxor xmm6,xmm0
323 DB 102,15,56,222,225 327 DB 102,15,56,222,225
324 pxor xmm7,xmm0 328 pxor xmm7,xmm0
325 add rax,16 329 add rax,16
326 DB 102,15,56,222,233 330 DB 102,15,56,222,233
327 DB 102,15,56,222,241 331 DB 102,15,56,222,241
328 DB 102,15,56,222,249 332 DB 102,15,56,222,249
329 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 333 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
330 » jmp» $L$dec_loop6_enter 334 » jmp» NEAR $L$dec_loop6_enter
331 ALIGN 16 335 ALIGN 16
332 $L$dec_loop6:: 336 $L$dec_loop6:
333 DB 102,15,56,222,209 337 DB 102,15,56,222,209
334 DB 102,15,56,222,217 338 DB 102,15,56,222,217
335 DB 102,15,56,222,225 339 DB 102,15,56,222,225
336 DB 102,15,56,222,233 340 DB 102,15,56,222,233
337 DB 102,15,56,222,241 341 DB 102,15,56,222,241
338 DB 102,15,56,222,249 342 DB 102,15,56,222,249
339 $L$dec_loop6_enter:: 343 $L$dec_loop6_enter:
340 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 344 » movups» xmm1,XMMWORD[rax*1+rcx]
341 add rax,32 345 add rax,32
342 DB 102,15,56,222,208 346 DB 102,15,56,222,208
343 DB 102,15,56,222,216 347 DB 102,15,56,222,216
344 DB 102,15,56,222,224 348 DB 102,15,56,222,224
345 DB 102,15,56,222,232 349 DB 102,15,56,222,232
346 DB 102,15,56,222,240 350 DB 102,15,56,222,240
347 DB 102,15,56,222,248 351 DB 102,15,56,222,248
348 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 352 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
349 » jnz» $L$dec_loop6 353 » jnz» NEAR $L$dec_loop6
350 354
351 DB 102,15,56,222,209 355 DB 102,15,56,222,209
352 DB 102,15,56,222,217 356 DB 102,15,56,222,217
353 DB 102,15,56,222,225 357 DB 102,15,56,222,225
354 DB 102,15,56,222,233 358 DB 102,15,56,222,233
355 DB 102,15,56,222,241 359 DB 102,15,56,222,241
356 DB 102,15,56,222,249 360 DB 102,15,56,222,249
357 DB 102,15,56,223,208 361 DB 102,15,56,223,208
358 DB 102,15,56,223,216 362 DB 102,15,56,223,216
359 DB 102,15,56,223,224 363 DB 102,15,56,223,224
360 DB 102,15,56,223,232 364 DB 102,15,56,223,232
361 DB 102,15,56,223,240 365 DB 102,15,56,223,240
362 DB 102,15,56,223,248 366 DB 102,15,56,223,248
363 DB 0F3h,0C3h ;repret 367 DB 0F3h,0C3h ;repret
364 _aesni_decrypt6»ENDP 368
365 369
366 ALIGN 16 370 ALIGN 16
367 _aesni_encrypt8»PROC PRIVATE 371 _aesni_encrypt8:
368 » movups» xmm0,XMMWORD PTR[rcx] 372 » movups» xmm0,XMMWORD[rcx]
369 shl eax,4 373 shl eax,4
370 » movups» xmm1,XMMWORD PTR[16+rcx] 374 » movups» xmm1,XMMWORD[16+rcx]
371 xorps xmm2,xmm0 375 xorps xmm2,xmm0
372 xorps xmm3,xmm0 376 xorps xmm3,xmm0
373 pxor xmm4,xmm0 377 pxor xmm4,xmm0
374 pxor xmm5,xmm0 378 pxor xmm5,xmm0
375 pxor xmm6,xmm0 379 pxor xmm6,xmm0
376 » lea» rcx,QWORD PTR[32+rax*1+rcx] 380 » lea» rcx,[32+rax*1+rcx]
377 neg rax 381 neg rax
378 DB 102,15,56,220,209 382 DB 102,15,56,220,209
379 add rax,16 383 add rax,16
380 pxor xmm7,xmm0 384 pxor xmm7,xmm0
381 DB 102,15,56,220,217 385 DB 102,15,56,220,217
382 pxor xmm8,xmm0 386 pxor xmm8,xmm0
383 pxor xmm9,xmm0 387 pxor xmm9,xmm0
384 DB 102,15,56,220,225 388 DB 102,15,56,220,225
385 DB 102,15,56,220,233 389 DB 102,15,56,220,233
386 DB 102,15,56,220,241 390 DB 102,15,56,220,241
387 DB 102,15,56,220,249 391 DB 102,15,56,220,249
388 DB 102,68,15,56,220,193 392 DB 102,68,15,56,220,193
389 DB 102,68,15,56,220,201 393 DB 102,68,15,56,220,201
390 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 394 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
391 » jmp» $L$enc_loop8_enter 395 » jmp» NEAR $L$enc_loop8_enter
392 ALIGN 16 396 ALIGN 16
393 $L$enc_loop8:: 397 $L$enc_loop8:
394 DB 102,15,56,220,209 398 DB 102,15,56,220,209
395 DB 102,15,56,220,217 399 DB 102,15,56,220,217
396 DB 102,15,56,220,225 400 DB 102,15,56,220,225
397 DB 102,15,56,220,233 401 DB 102,15,56,220,233
398 DB 102,15,56,220,241 402 DB 102,15,56,220,241
399 DB 102,15,56,220,249 403 DB 102,15,56,220,249
400 DB 102,68,15,56,220,193 404 DB 102,68,15,56,220,193
401 DB 102,68,15,56,220,201 405 DB 102,68,15,56,220,201
402 $L$enc_loop8_enter:: 406 $L$enc_loop8_enter:
403 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 407 » movups» xmm1,XMMWORD[rax*1+rcx]
404 add rax,32 408 add rax,32
405 DB 102,15,56,220,208 409 DB 102,15,56,220,208
406 DB 102,15,56,220,216 410 DB 102,15,56,220,216
407 DB 102,15,56,220,224 411 DB 102,15,56,220,224
408 DB 102,15,56,220,232 412 DB 102,15,56,220,232
409 DB 102,15,56,220,240 413 DB 102,15,56,220,240
410 DB 102,15,56,220,248 414 DB 102,15,56,220,248
411 DB 102,68,15,56,220,192 415 DB 102,68,15,56,220,192
412 DB 102,68,15,56,220,200 416 DB 102,68,15,56,220,200
413 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 417 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
414 » jnz» $L$enc_loop8 418 » jnz» NEAR $L$enc_loop8
415 419
416 DB 102,15,56,220,209 420 DB 102,15,56,220,209
417 DB 102,15,56,220,217 421 DB 102,15,56,220,217
418 DB 102,15,56,220,225 422 DB 102,15,56,220,225
419 DB 102,15,56,220,233 423 DB 102,15,56,220,233
420 DB 102,15,56,220,241 424 DB 102,15,56,220,241
421 DB 102,15,56,220,249 425 DB 102,15,56,220,249
422 DB 102,68,15,56,220,193 426 DB 102,68,15,56,220,193
423 DB 102,68,15,56,220,201 427 DB 102,68,15,56,220,201
424 DB 102,15,56,221,208 428 DB 102,15,56,221,208
425 DB 102,15,56,221,216 429 DB 102,15,56,221,216
426 DB 102,15,56,221,224 430 DB 102,15,56,221,224
427 DB 102,15,56,221,232 431 DB 102,15,56,221,232
428 DB 102,15,56,221,240 432 DB 102,15,56,221,240
429 DB 102,15,56,221,248 433 DB 102,15,56,221,248
430 DB 102,68,15,56,221,192 434 DB 102,68,15,56,221,192
431 DB 102,68,15,56,221,200 435 DB 102,68,15,56,221,200
432 DB 0F3h,0C3h ;repret 436 DB 0F3h,0C3h ;repret
433 _aesni_encrypt8»ENDP 437
434 438
435 ALIGN 16 439 ALIGN 16
436 _aesni_decrypt8»PROC PRIVATE 440 _aesni_decrypt8:
437 » movups» xmm0,XMMWORD PTR[rcx] 441 » movups» xmm0,XMMWORD[rcx]
438 shl eax,4 442 shl eax,4
439 » movups» xmm1,XMMWORD PTR[16+rcx] 443 » movups» xmm1,XMMWORD[16+rcx]
440 xorps xmm2,xmm0 444 xorps xmm2,xmm0
441 xorps xmm3,xmm0 445 xorps xmm3,xmm0
442 pxor xmm4,xmm0 446 pxor xmm4,xmm0
443 pxor xmm5,xmm0 447 pxor xmm5,xmm0
444 pxor xmm6,xmm0 448 pxor xmm6,xmm0
445 » lea» rcx,QWORD PTR[32+rax*1+rcx] 449 » lea» rcx,[32+rax*1+rcx]
446 neg rax 450 neg rax
447 DB 102,15,56,222,209 451 DB 102,15,56,222,209
448 add rax,16 452 add rax,16
449 pxor xmm7,xmm0 453 pxor xmm7,xmm0
450 DB 102,15,56,222,217 454 DB 102,15,56,222,217
451 pxor xmm8,xmm0 455 pxor xmm8,xmm0
452 pxor xmm9,xmm0 456 pxor xmm9,xmm0
453 DB 102,15,56,222,225 457 DB 102,15,56,222,225
454 DB 102,15,56,222,233 458 DB 102,15,56,222,233
455 DB 102,15,56,222,241 459 DB 102,15,56,222,241
456 DB 102,15,56,222,249 460 DB 102,15,56,222,249
457 DB 102,68,15,56,222,193 461 DB 102,68,15,56,222,193
458 DB 102,68,15,56,222,201 462 DB 102,68,15,56,222,201
459 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 463 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
460 » jmp» $L$dec_loop8_enter 464 » jmp» NEAR $L$dec_loop8_enter
461 ALIGN 16 465 ALIGN 16
462 $L$dec_loop8:: 466 $L$dec_loop8:
463 DB 102,15,56,222,209 467 DB 102,15,56,222,209
464 DB 102,15,56,222,217 468 DB 102,15,56,222,217
465 DB 102,15,56,222,225 469 DB 102,15,56,222,225
466 DB 102,15,56,222,233 470 DB 102,15,56,222,233
467 DB 102,15,56,222,241 471 DB 102,15,56,222,241
468 DB 102,15,56,222,249 472 DB 102,15,56,222,249
469 DB 102,68,15,56,222,193 473 DB 102,68,15,56,222,193
470 DB 102,68,15,56,222,201 474 DB 102,68,15,56,222,201
471 $L$dec_loop8_enter:: 475 $L$dec_loop8_enter:
472 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 476 » movups» xmm1,XMMWORD[rax*1+rcx]
473 add rax,32 477 add rax,32
474 DB 102,15,56,222,208 478 DB 102,15,56,222,208
475 DB 102,15,56,222,216 479 DB 102,15,56,222,216
476 DB 102,15,56,222,224 480 DB 102,15,56,222,224
477 DB 102,15,56,222,232 481 DB 102,15,56,222,232
478 DB 102,15,56,222,240 482 DB 102,15,56,222,240
479 DB 102,15,56,222,248 483 DB 102,15,56,222,248
480 DB 102,68,15,56,222,192 484 DB 102,68,15,56,222,192
481 DB 102,68,15,56,222,200 485 DB 102,68,15,56,222,200
482 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 486 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
483 » jnz» $L$dec_loop8 487 » jnz» NEAR $L$dec_loop8
484 488
485 DB 102,15,56,222,209 489 DB 102,15,56,222,209
486 DB 102,15,56,222,217 490 DB 102,15,56,222,217
487 DB 102,15,56,222,225 491 DB 102,15,56,222,225
488 DB 102,15,56,222,233 492 DB 102,15,56,222,233
489 DB 102,15,56,222,241 493 DB 102,15,56,222,241
490 DB 102,15,56,222,249 494 DB 102,15,56,222,249
491 DB 102,68,15,56,222,193 495 DB 102,68,15,56,222,193
492 DB 102,68,15,56,222,201 496 DB 102,68,15,56,222,201
493 DB 102,15,56,223,208 497 DB 102,15,56,223,208
494 DB 102,15,56,223,216 498 DB 102,15,56,223,216
495 DB 102,15,56,223,224 499 DB 102,15,56,223,224
496 DB 102,15,56,223,232 500 DB 102,15,56,223,232
497 DB 102,15,56,223,240 501 DB 102,15,56,223,240
498 DB 102,15,56,223,248 502 DB 102,15,56,223,248
499 DB 102,68,15,56,223,192 503 DB 102,68,15,56,223,192
500 DB 102,68,15,56,223,200 504 DB 102,68,15,56,223,200
501 DB 0F3h,0C3h ;repret 505 DB 0F3h,0C3h ;repret
502 _aesni_decrypt8»ENDP 506
503 PUBLIC» aesni_ecb_encrypt 507 global» aesni_ecb_encrypt
504 508
505 ALIGN» 16 509 ALIGN» 16
506 aesni_ecb_encrypt» PROC PUBLIC 510 aesni_ecb_encrypt:
507 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 511 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
508 » mov» QWORD PTR[16+rsp],rsi 512 » mov» QWORD[16+rsp],rsi
509 mov rax,rsp 513 mov rax,rsp
510 $L$SEH_begin_aesni_ecb_encrypt:: 514 $L$SEH_begin_aesni_ecb_encrypt:
511 mov rdi,rcx 515 mov rdi,rcx
512 mov rsi,rdx 516 mov rsi,rdx
513 mov rdx,r8 517 mov rdx,r8
514 mov rcx,r9 518 mov rcx,r9
515 » mov» r8,QWORD PTR[40+rsp] 519 » mov» r8,QWORD[40+rsp]
516 520
517 521
518 and rdx,-16 522 and rdx,-16
519 » jz» $L$ecb_ret 523 » jz» NEAR $L$ecb_ret
520 524
521 » mov» eax,DWORD PTR[240+rcx] 525 » mov» eax,DWORD[240+rcx]
522 » movups» xmm0,XMMWORD PTR[rcx] 526 » movups» xmm0,XMMWORD[rcx]
523 mov r11,rcx 527 mov r11,rcx
524 mov r10d,eax 528 mov r10d,eax
525 test r8d,r8d 529 test r8d,r8d
526 » jz» $L$ecb_decrypt 530 » jz» NEAR $L$ecb_decrypt
527 531
528 » cmp» rdx,080h 532 » cmp» rdx,0x80
529 » jb» $L$ecb_enc_tail 533 » jb» NEAR $L$ecb_enc_tail
530 534
531 » movdqu» xmm2,XMMWORD PTR[rdi] 535 » movdqu» xmm2,XMMWORD[rdi]
532 » movdqu» xmm3,XMMWORD PTR[16+rdi] 536 » movdqu» xmm3,XMMWORD[16+rdi]
533 » movdqu» xmm4,XMMWORD PTR[32+rdi] 537 » movdqu» xmm4,XMMWORD[32+rdi]
534 » movdqu» xmm5,XMMWORD PTR[48+rdi] 538 » movdqu» xmm5,XMMWORD[48+rdi]
535 » movdqu» xmm6,XMMWORD PTR[64+rdi] 539 » movdqu» xmm6,XMMWORD[64+rdi]
536 » movdqu» xmm7,XMMWORD PTR[80+rdi] 540 » movdqu» xmm7,XMMWORD[80+rdi]
537 » movdqu» xmm8,XMMWORD PTR[96+rdi] 541 » movdqu» xmm8,XMMWORD[96+rdi]
538 » movdqu» xmm9,XMMWORD PTR[112+rdi] 542 » movdqu» xmm9,XMMWORD[112+rdi]
539 » lea» rdi,QWORD PTR[128+rdi] 543 » lea» rdi,[128+rdi]
540 » sub» rdx,080h 544 » sub» rdx,0x80
541 » jmp» $L$ecb_enc_loop8_enter 545 » jmp» NEAR $L$ecb_enc_loop8_enter
542 ALIGN» 16 546 ALIGN» 16
543 $L$ecb_enc_loop8:: 547 $L$ecb_enc_loop8:
544 » movups» XMMWORD PTR[rsi],xmm2 548 » movups» XMMWORD[rsi],xmm2
545 mov rcx,r11 549 mov rcx,r11
546 » movdqu» xmm2,XMMWORD PTR[rdi] 550 » movdqu» xmm2,XMMWORD[rdi]
547 mov eax,r10d 551 mov eax,r10d
548 » movups» XMMWORD PTR[16+rsi],xmm3 552 » movups» XMMWORD[16+rsi],xmm3
549 » movdqu» xmm3,XMMWORD PTR[16+rdi] 553 » movdqu» xmm3,XMMWORD[16+rdi]
550 » movups» XMMWORD PTR[32+rsi],xmm4 554 » movups» XMMWORD[32+rsi],xmm4
551 » movdqu» xmm4,XMMWORD PTR[32+rdi] 555 » movdqu» xmm4,XMMWORD[32+rdi]
552 » movups» XMMWORD PTR[48+rsi],xmm5 556 » movups» XMMWORD[48+rsi],xmm5
553 » movdqu» xmm5,XMMWORD PTR[48+rdi] 557 » movdqu» xmm5,XMMWORD[48+rdi]
554 » movups» XMMWORD PTR[64+rsi],xmm6 558 » movups» XMMWORD[64+rsi],xmm6
555 » movdqu» xmm6,XMMWORD PTR[64+rdi] 559 » movdqu» xmm6,XMMWORD[64+rdi]
556 » movups» XMMWORD PTR[80+rsi],xmm7 560 » movups» XMMWORD[80+rsi],xmm7
557 » movdqu» xmm7,XMMWORD PTR[80+rdi] 561 » movdqu» xmm7,XMMWORD[80+rdi]
558 » movups» XMMWORD PTR[96+rsi],xmm8 562 » movups» XMMWORD[96+rsi],xmm8
559 » movdqu» xmm8,XMMWORD PTR[96+rdi] 563 » movdqu» xmm8,XMMWORD[96+rdi]
560 » movups» XMMWORD PTR[112+rsi],xmm9 564 » movups» XMMWORD[112+rsi],xmm9
561 » lea» rsi,QWORD PTR[128+rsi] 565 » lea» rsi,[128+rsi]
562 » movdqu» xmm9,XMMWORD PTR[112+rdi] 566 » movdqu» xmm9,XMMWORD[112+rdi]
563 » lea» rdi,QWORD PTR[128+rdi] 567 » lea» rdi,[128+rdi]
564 $L$ecb_enc_loop8_enter:: 568 $L$ecb_enc_loop8_enter:
565 569
566 call _aesni_encrypt8 570 call _aesni_encrypt8
567 571
568 » sub» rdx,080h 572 » sub» rdx,0x80
569 » jnc» $L$ecb_enc_loop8 573 » jnc» NEAR $L$ecb_enc_loop8
570 574
571 » movups» XMMWORD PTR[rsi],xmm2 575 » movups» XMMWORD[rsi],xmm2
572 mov rcx,r11 576 mov rcx,r11
573 » movups» XMMWORD PTR[16+rsi],xmm3 577 » movups» XMMWORD[16+rsi],xmm3
574 mov eax,r10d 578 mov eax,r10d
575 » movups» XMMWORD PTR[32+rsi],xmm4 579 » movups» XMMWORD[32+rsi],xmm4
576 » movups» XMMWORD PTR[48+rsi],xmm5 580 » movups» XMMWORD[48+rsi],xmm5
577 » movups» XMMWORD PTR[64+rsi],xmm6 581 » movups» XMMWORD[64+rsi],xmm6
578 » movups» XMMWORD PTR[80+rsi],xmm7 582 » movups» XMMWORD[80+rsi],xmm7
579 » movups» XMMWORD PTR[96+rsi],xmm8 583 » movups» XMMWORD[96+rsi],xmm8
580 » movups» XMMWORD PTR[112+rsi],xmm9 584 » movups» XMMWORD[112+rsi],xmm9
581 » lea» rsi,QWORD PTR[128+rsi] 585 » lea» rsi,[128+rsi]
582 » add» rdx,080h 586 » add» rdx,0x80
583 » jz» $L$ecb_ret 587 » jz» NEAR $L$ecb_ret
584 588
585 $L$ecb_enc_tail:: 589 $L$ecb_enc_tail:
586 » movups» xmm2,XMMWORD PTR[rdi] 590 » movups» xmm2,XMMWORD[rdi]
587 » cmp» rdx,020h 591 » cmp» rdx,0x20
588 » jb» $L$ecb_enc_one 592 » jb» NEAR $L$ecb_enc_one
589 » movups» xmm3,XMMWORD PTR[16+rdi] 593 » movups» xmm3,XMMWORD[16+rdi]
590 » je» $L$ecb_enc_two 594 » je» NEAR $L$ecb_enc_two
591 » movups» xmm4,XMMWORD PTR[32+rdi] 595 » movups» xmm4,XMMWORD[32+rdi]
592 » cmp» rdx,040h 596 » cmp» rdx,0x40
593 » jb» $L$ecb_enc_three 597 » jb» NEAR $L$ecb_enc_three
594 » movups» xmm5,XMMWORD PTR[48+rdi] 598 » movups» xmm5,XMMWORD[48+rdi]
595 » je» $L$ecb_enc_four 599 » je» NEAR $L$ecb_enc_four
596 » movups» xmm6,XMMWORD PTR[64+rdi] 600 » movups» xmm6,XMMWORD[64+rdi]
597 » cmp» rdx,060h 601 » cmp» rdx,0x60
598 » jb» $L$ecb_enc_five 602 » jb» NEAR $L$ecb_enc_five
599 » movups» xmm7,XMMWORD PTR[80+rdi] 603 » movups» xmm7,XMMWORD[80+rdi]
600 » je» $L$ecb_enc_six 604 » je» NEAR $L$ecb_enc_six
601 » movdqu» xmm8,XMMWORD PTR[96+rdi] 605 » movdqu» xmm8,XMMWORD[96+rdi]
602 call _aesni_encrypt8 606 call _aesni_encrypt8
603 » movups» XMMWORD PTR[rsi],xmm2 607 » movups» XMMWORD[rsi],xmm2
604 » movups» XMMWORD PTR[16+rsi],xmm3 608 » movups» XMMWORD[16+rsi],xmm3
605 » movups» XMMWORD PTR[32+rsi],xmm4 609 » movups» XMMWORD[32+rsi],xmm4
606 » movups» XMMWORD PTR[48+rsi],xmm5 610 » movups» XMMWORD[48+rsi],xmm5
607 » movups» XMMWORD PTR[64+rsi],xmm6 611 » movups» XMMWORD[64+rsi],xmm6
608 » movups» XMMWORD PTR[80+rsi],xmm7 612 » movups» XMMWORD[80+rsi],xmm7
609 » movups» XMMWORD PTR[96+rsi],xmm8 613 » movups» XMMWORD[96+rsi],xmm8
610 » jmp» $L$ecb_ret 614 » jmp» NEAR $L$ecb_ret
611 ALIGN» 16 615 ALIGN» 16
612 $L$ecb_enc_one:: 616 $L$ecb_enc_one:
613 » movups» xmm0,XMMWORD PTR[rcx] 617 » movups» xmm0,XMMWORD[rcx]
614 » movups» xmm1,XMMWORD PTR[16+rcx] 618 » movups» xmm1,XMMWORD[16+rcx]
615 » lea» rcx,QWORD PTR[32+rcx] 619 » lea» rcx,[32+rcx]
616 xorps xmm2,xmm0 620 xorps xmm2,xmm0
617 $L$oop_enc1_3:: 621 $L$oop_enc1_3:
618 DB 102,15,56,220,209 622 DB 102,15,56,220,209
619 dec eax 623 dec eax
620 » movups» xmm1,XMMWORD PTR[rcx] 624 » movups» xmm1,XMMWORD[rcx]
621 » lea» rcx,QWORD PTR[16+rcx] 625 » lea» rcx,[16+rcx]
622 » jnz» $L$oop_enc1_3 626 » jnz» NEAR $L$oop_enc1_3
623 DB 102,15,56,221,209 627 DB 102,15,56,221,209
624 » movups» XMMWORD PTR[rsi],xmm2 628 » movups» XMMWORD[rsi],xmm2
625 » jmp» $L$ecb_ret 629 » jmp» NEAR $L$ecb_ret
626 ALIGN» 16 630 ALIGN» 16
627 $L$ecb_enc_two:: 631 $L$ecb_enc_two:
628 call _aesni_encrypt2 632 call _aesni_encrypt2
629 » movups» XMMWORD PTR[rsi],xmm2 633 » movups» XMMWORD[rsi],xmm2
630 » movups» XMMWORD PTR[16+rsi],xmm3 634 » movups» XMMWORD[16+rsi],xmm3
631 » jmp» $L$ecb_ret 635 » jmp» NEAR $L$ecb_ret
632 ALIGN» 16 636 ALIGN» 16
633 $L$ecb_enc_three:: 637 $L$ecb_enc_three:
634 call _aesni_encrypt3 638 call _aesni_encrypt3
635 » movups» XMMWORD PTR[rsi],xmm2 639 » movups» XMMWORD[rsi],xmm2
636 » movups» XMMWORD PTR[16+rsi],xmm3 640 » movups» XMMWORD[16+rsi],xmm3
637 » movups» XMMWORD PTR[32+rsi],xmm4 641 » movups» XMMWORD[32+rsi],xmm4
638 » jmp» $L$ecb_ret 642 » jmp» NEAR $L$ecb_ret
639 ALIGN» 16 643 ALIGN» 16
640 $L$ecb_enc_four:: 644 $L$ecb_enc_four:
641 call _aesni_encrypt4 645 call _aesni_encrypt4
642 » movups» XMMWORD PTR[rsi],xmm2 646 » movups» XMMWORD[rsi],xmm2
643 » movups» XMMWORD PTR[16+rsi],xmm3 647 » movups» XMMWORD[16+rsi],xmm3
644 » movups» XMMWORD PTR[32+rsi],xmm4 648 » movups» XMMWORD[32+rsi],xmm4
645 » movups» XMMWORD PTR[48+rsi],xmm5 649 » movups» XMMWORD[48+rsi],xmm5
646 » jmp» $L$ecb_ret 650 » jmp» NEAR $L$ecb_ret
647 ALIGN» 16 651 ALIGN» 16
648 $L$ecb_enc_five:: 652 $L$ecb_enc_five:
649 xorps xmm7,xmm7 653 xorps xmm7,xmm7
650 call _aesni_encrypt6 654 call _aesni_encrypt6
651 » movups» XMMWORD PTR[rsi],xmm2 655 » movups» XMMWORD[rsi],xmm2
652 » movups» XMMWORD PTR[16+rsi],xmm3 656 » movups» XMMWORD[16+rsi],xmm3
653 » movups» XMMWORD PTR[32+rsi],xmm4 657 » movups» XMMWORD[32+rsi],xmm4
654 » movups» XMMWORD PTR[48+rsi],xmm5 658 » movups» XMMWORD[48+rsi],xmm5
655 » movups» XMMWORD PTR[64+rsi],xmm6 659 » movups» XMMWORD[64+rsi],xmm6
656 » jmp» $L$ecb_ret 660 » jmp» NEAR $L$ecb_ret
657 ALIGN» 16 661 ALIGN» 16
658 $L$ecb_enc_six:: 662 $L$ecb_enc_six:
659 call _aesni_encrypt6 663 call _aesni_encrypt6
660 » movups» XMMWORD PTR[rsi],xmm2 664 » movups» XMMWORD[rsi],xmm2
661 » movups» XMMWORD PTR[16+rsi],xmm3 665 » movups» XMMWORD[16+rsi],xmm3
662 » movups» XMMWORD PTR[32+rsi],xmm4 666 » movups» XMMWORD[32+rsi],xmm4
663 » movups» XMMWORD PTR[48+rsi],xmm5 667 » movups» XMMWORD[48+rsi],xmm5
664 » movups» XMMWORD PTR[64+rsi],xmm6 668 » movups» XMMWORD[64+rsi],xmm6
665 » movups» XMMWORD PTR[80+rsi],xmm7 669 » movups» XMMWORD[80+rsi],xmm7
666 » jmp» $L$ecb_ret 670 » jmp» NEAR $L$ecb_ret
667 671
668 ALIGN» 16 672 ALIGN» 16
669 $L$ecb_decrypt:: 673 $L$ecb_decrypt:
670 » cmp» rdx,080h 674 » cmp» rdx,0x80
671 » jb» $L$ecb_dec_tail 675 » jb» NEAR $L$ecb_dec_tail
672 676
673 » movdqu» xmm2,XMMWORD PTR[rdi] 677 » movdqu» xmm2,XMMWORD[rdi]
674 » movdqu» xmm3,XMMWORD PTR[16+rdi] 678 » movdqu» xmm3,XMMWORD[16+rdi]
675 » movdqu» xmm4,XMMWORD PTR[32+rdi] 679 » movdqu» xmm4,XMMWORD[32+rdi]
676 » movdqu» xmm5,XMMWORD PTR[48+rdi] 680 » movdqu» xmm5,XMMWORD[48+rdi]
677 » movdqu» xmm6,XMMWORD PTR[64+rdi] 681 » movdqu» xmm6,XMMWORD[64+rdi]
678 » movdqu» xmm7,XMMWORD PTR[80+rdi] 682 » movdqu» xmm7,XMMWORD[80+rdi]
679 » movdqu» xmm8,XMMWORD PTR[96+rdi] 683 » movdqu» xmm8,XMMWORD[96+rdi]
680 » movdqu» xmm9,XMMWORD PTR[112+rdi] 684 » movdqu» xmm9,XMMWORD[112+rdi]
681 » lea» rdi,QWORD PTR[128+rdi] 685 » lea» rdi,[128+rdi]
682 » sub» rdx,080h 686 » sub» rdx,0x80
683 » jmp» $L$ecb_dec_loop8_enter 687 » jmp» NEAR $L$ecb_dec_loop8_enter
684 ALIGN» 16 688 ALIGN» 16
685 $L$ecb_dec_loop8:: 689 $L$ecb_dec_loop8:
686 » movups» XMMWORD PTR[rsi],xmm2 690 » movups» XMMWORD[rsi],xmm2
687 mov rcx,r11 691 mov rcx,r11
688 » movdqu» xmm2,XMMWORD PTR[rdi] 692 » movdqu» xmm2,XMMWORD[rdi]
689 mov eax,r10d 693 mov eax,r10d
690 » movups» XMMWORD PTR[16+rsi],xmm3 694 » movups» XMMWORD[16+rsi],xmm3
691 » movdqu» xmm3,XMMWORD PTR[16+rdi] 695 » movdqu» xmm3,XMMWORD[16+rdi]
692 » movups» XMMWORD PTR[32+rsi],xmm4 696 » movups» XMMWORD[32+rsi],xmm4
693 » movdqu» xmm4,XMMWORD PTR[32+rdi] 697 » movdqu» xmm4,XMMWORD[32+rdi]
694 » movups» XMMWORD PTR[48+rsi],xmm5 698 » movups» XMMWORD[48+rsi],xmm5
695 » movdqu» xmm5,XMMWORD PTR[48+rdi] 699 » movdqu» xmm5,XMMWORD[48+rdi]
696 » movups» XMMWORD PTR[64+rsi],xmm6 700 » movups» XMMWORD[64+rsi],xmm6
697 » movdqu» xmm6,XMMWORD PTR[64+rdi] 701 » movdqu» xmm6,XMMWORD[64+rdi]
698 » movups» XMMWORD PTR[80+rsi],xmm7 702 » movups» XMMWORD[80+rsi],xmm7
699 » movdqu» xmm7,XMMWORD PTR[80+rdi] 703 » movdqu» xmm7,XMMWORD[80+rdi]
700 » movups» XMMWORD PTR[96+rsi],xmm8 704 » movups» XMMWORD[96+rsi],xmm8
701 » movdqu» xmm8,XMMWORD PTR[96+rdi] 705 » movdqu» xmm8,XMMWORD[96+rdi]
702 » movups» XMMWORD PTR[112+rsi],xmm9 706 » movups» XMMWORD[112+rsi],xmm9
703 » lea» rsi,QWORD PTR[128+rsi] 707 » lea» rsi,[128+rsi]
704 » movdqu» xmm9,XMMWORD PTR[112+rdi] 708 » movdqu» xmm9,XMMWORD[112+rdi]
705 » lea» rdi,QWORD PTR[128+rdi] 709 » lea» rdi,[128+rdi]
706 $L$ecb_dec_loop8_enter:: 710 $L$ecb_dec_loop8_enter:
707 711
708 call _aesni_decrypt8 712 call _aesni_decrypt8
709 713
710 » movups» xmm0,XMMWORD PTR[r11] 714 » movups» xmm0,XMMWORD[r11]
711 » sub» rdx,080h 715 » sub» rdx,0x80
712 » jnc» $L$ecb_dec_loop8 716 » jnc» NEAR $L$ecb_dec_loop8
713 717
714 » movups» XMMWORD PTR[rsi],xmm2 718 » movups» XMMWORD[rsi],xmm2
715 mov rcx,r11 719 mov rcx,r11
716 » movups» XMMWORD PTR[16+rsi],xmm3 720 » movups» XMMWORD[16+rsi],xmm3
717 mov eax,r10d 721 mov eax,r10d
718 » movups» XMMWORD PTR[32+rsi],xmm4 722 » movups» XMMWORD[32+rsi],xmm4
719 » movups» XMMWORD PTR[48+rsi],xmm5 723 » movups» XMMWORD[48+rsi],xmm5
720 » movups» XMMWORD PTR[64+rsi],xmm6 724 » movups» XMMWORD[64+rsi],xmm6
721 » movups» XMMWORD PTR[80+rsi],xmm7 725 » movups» XMMWORD[80+rsi],xmm7
722 » movups» XMMWORD PTR[96+rsi],xmm8 726 » movups» XMMWORD[96+rsi],xmm8
723 » movups» XMMWORD PTR[112+rsi],xmm9 727 » movups» XMMWORD[112+rsi],xmm9
724 » lea» rsi,QWORD PTR[128+rsi] 728 » lea» rsi,[128+rsi]
725 » add» rdx,080h 729 » add» rdx,0x80
726 » jz» $L$ecb_ret 730 » jz» NEAR $L$ecb_ret
727 731
728 $L$ecb_dec_tail:: 732 $L$ecb_dec_tail:
729 » movups» xmm2,XMMWORD PTR[rdi] 733 » movups» xmm2,XMMWORD[rdi]
730 » cmp» rdx,020h 734 » cmp» rdx,0x20
731 » jb» $L$ecb_dec_one 735 » jb» NEAR $L$ecb_dec_one
732 » movups» xmm3,XMMWORD PTR[16+rdi] 736 » movups» xmm3,XMMWORD[16+rdi]
733 » je» $L$ecb_dec_two 737 » je» NEAR $L$ecb_dec_two
734 » movups» xmm4,XMMWORD PTR[32+rdi] 738 » movups» xmm4,XMMWORD[32+rdi]
735 » cmp» rdx,040h 739 » cmp» rdx,0x40
736 » jb» $L$ecb_dec_three 740 » jb» NEAR $L$ecb_dec_three
737 » movups» xmm5,XMMWORD PTR[48+rdi] 741 » movups» xmm5,XMMWORD[48+rdi]
738 » je» $L$ecb_dec_four 742 » je» NEAR $L$ecb_dec_four
739 » movups» xmm6,XMMWORD PTR[64+rdi] 743 » movups» xmm6,XMMWORD[64+rdi]
740 » cmp» rdx,060h 744 » cmp» rdx,0x60
741 » jb» $L$ecb_dec_five 745 » jb» NEAR $L$ecb_dec_five
742 » movups» xmm7,XMMWORD PTR[80+rdi] 746 » movups» xmm7,XMMWORD[80+rdi]
743 » je» $L$ecb_dec_six 747 » je» NEAR $L$ecb_dec_six
744 » movups» xmm8,XMMWORD PTR[96+rdi] 748 » movups» xmm8,XMMWORD[96+rdi]
745 » movups» xmm0,XMMWORD PTR[rcx] 749 » movups» xmm0,XMMWORD[rcx]
746 call _aesni_decrypt8 750 call _aesni_decrypt8
747 » movups» XMMWORD PTR[rsi],xmm2 751 » movups» XMMWORD[rsi],xmm2
748 » movups» XMMWORD PTR[16+rsi],xmm3 752 » movups» XMMWORD[16+rsi],xmm3
749 » movups» XMMWORD PTR[32+rsi],xmm4 753 » movups» XMMWORD[32+rsi],xmm4
750 » movups» XMMWORD PTR[48+rsi],xmm5 754 » movups» XMMWORD[48+rsi],xmm5
751 » movups» XMMWORD PTR[64+rsi],xmm6 755 » movups» XMMWORD[64+rsi],xmm6
752 » movups» XMMWORD PTR[80+rsi],xmm7 756 » movups» XMMWORD[80+rsi],xmm7
753 » movups» XMMWORD PTR[96+rsi],xmm8 757 » movups» XMMWORD[96+rsi],xmm8
754 » jmp» $L$ecb_ret 758 » jmp» NEAR $L$ecb_ret
755 ALIGN» 16 759 ALIGN» 16
756 $L$ecb_dec_one:: 760 $L$ecb_dec_one:
757 » movups» xmm0,XMMWORD PTR[rcx] 761 » movups» xmm0,XMMWORD[rcx]
758 » movups» xmm1,XMMWORD PTR[16+rcx] 762 » movups» xmm1,XMMWORD[16+rcx]
759 » lea» rcx,QWORD PTR[32+rcx] 763 » lea» rcx,[32+rcx]
760 xorps xmm2,xmm0 764 xorps xmm2,xmm0
761 $L$oop_dec1_4:: 765 $L$oop_dec1_4:
762 DB 102,15,56,222,209 766 DB 102,15,56,222,209
763 dec eax 767 dec eax
764 » movups» xmm1,XMMWORD PTR[rcx] 768 » movups» xmm1,XMMWORD[rcx]
765 » lea» rcx,QWORD PTR[16+rcx] 769 » lea» rcx,[16+rcx]
766 » jnz» $L$oop_dec1_4 770 » jnz» NEAR $L$oop_dec1_4
767 DB 102,15,56,223,209 771 DB 102,15,56,223,209
768 » movups» XMMWORD PTR[rsi],xmm2 772 » movups» XMMWORD[rsi],xmm2
769 » jmp» $L$ecb_ret 773 » jmp» NEAR $L$ecb_ret
770 ALIGN» 16 774 ALIGN» 16
771 $L$ecb_dec_two:: 775 $L$ecb_dec_two:
772 call _aesni_decrypt2 776 call _aesni_decrypt2
773 » movups» XMMWORD PTR[rsi],xmm2 777 » movups» XMMWORD[rsi],xmm2
774 » movups» XMMWORD PTR[16+rsi],xmm3 778 » movups» XMMWORD[16+rsi],xmm3
775 » jmp» $L$ecb_ret 779 » jmp» NEAR $L$ecb_ret
776 ALIGN» 16 780 ALIGN» 16
777 $L$ecb_dec_three:: 781 $L$ecb_dec_three:
778 call _aesni_decrypt3 782 call _aesni_decrypt3
779 » movups» XMMWORD PTR[rsi],xmm2 783 » movups» XMMWORD[rsi],xmm2
780 » movups» XMMWORD PTR[16+rsi],xmm3 784 » movups» XMMWORD[16+rsi],xmm3
781 » movups» XMMWORD PTR[32+rsi],xmm4 785 » movups» XMMWORD[32+rsi],xmm4
782 » jmp» $L$ecb_ret 786 » jmp» NEAR $L$ecb_ret
783 ALIGN» 16 787 ALIGN» 16
784 $L$ecb_dec_four:: 788 $L$ecb_dec_four:
785 call _aesni_decrypt4 789 call _aesni_decrypt4
786 » movups» XMMWORD PTR[rsi],xmm2 790 » movups» XMMWORD[rsi],xmm2
787 » movups» XMMWORD PTR[16+rsi],xmm3 791 » movups» XMMWORD[16+rsi],xmm3
788 » movups» XMMWORD PTR[32+rsi],xmm4 792 » movups» XMMWORD[32+rsi],xmm4
789 » movups» XMMWORD PTR[48+rsi],xmm5 793 » movups» XMMWORD[48+rsi],xmm5
790 » jmp» $L$ecb_ret 794 » jmp» NEAR $L$ecb_ret
791 ALIGN» 16 795 ALIGN» 16
792 $L$ecb_dec_five:: 796 $L$ecb_dec_five:
793 xorps xmm7,xmm7 797 xorps xmm7,xmm7
794 call _aesni_decrypt6 798 call _aesni_decrypt6
795 » movups» XMMWORD PTR[rsi],xmm2 799 » movups» XMMWORD[rsi],xmm2
796 » movups» XMMWORD PTR[16+rsi],xmm3 800 » movups» XMMWORD[16+rsi],xmm3
797 » movups» XMMWORD PTR[32+rsi],xmm4 801 » movups» XMMWORD[32+rsi],xmm4
798 » movups» XMMWORD PTR[48+rsi],xmm5 802 » movups» XMMWORD[48+rsi],xmm5
799 » movups» XMMWORD PTR[64+rsi],xmm6 803 » movups» XMMWORD[64+rsi],xmm6
800 » jmp» $L$ecb_ret 804 » jmp» NEAR $L$ecb_ret
801 ALIGN» 16 805 ALIGN» 16
802 $L$ecb_dec_six:: 806 $L$ecb_dec_six:
803 call _aesni_decrypt6 807 call _aesni_decrypt6
804 » movups» XMMWORD PTR[rsi],xmm2 808 » movups» XMMWORD[rsi],xmm2
805 » movups» XMMWORD PTR[16+rsi],xmm3 809 » movups» XMMWORD[16+rsi],xmm3
806 » movups» XMMWORD PTR[32+rsi],xmm4 810 » movups» XMMWORD[32+rsi],xmm4
807 » movups» XMMWORD PTR[48+rsi],xmm5 811 » movups» XMMWORD[48+rsi],xmm5
808 » movups» XMMWORD PTR[64+rsi],xmm6 812 » movups» XMMWORD[64+rsi],xmm6
809 » movups» XMMWORD PTR[80+rsi],xmm7 813 » movups» XMMWORD[80+rsi],xmm7
810 814
811 $L$ecb_ret:: 815 $L$ecb_ret:
812 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 816 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
813 » mov» rsi,QWORD PTR[16+rsp] 817 » mov» rsi,QWORD[16+rsp]
814 DB 0F3h,0C3h ;repret 818 DB 0F3h,0C3h ;repret
815 $L$SEH_end_aesni_ecb_encrypt:: 819 $L$SEH_end_aesni_ecb_encrypt:
816 aesni_ecb_encrypt» ENDP 820 global» aesni_ccm64_encrypt_blocks
817 PUBLIC» aesni_ccm64_encrypt_blocks 821
818 822 ALIGN» 16
819 ALIGN» 16 823 aesni_ccm64_encrypt_blocks:
820 aesni_ccm64_encrypt_blocks» PROC PUBLIC 824 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
821 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 825 » mov» QWORD[16+rsp],rsi
822 » mov» QWORD PTR[16+rsp],rsi
823 mov rax,rsp 826 mov rax,rsp
824 $L$SEH_begin_aesni_ccm64_encrypt_blocks:: 827 $L$SEH_begin_aesni_ccm64_encrypt_blocks:
825 mov rdi,rcx 828 mov rdi,rcx
826 mov rsi,rdx 829 mov rsi,rdx
827 mov rdx,r8 830 mov rdx,r8
828 mov rcx,r9 831 mov rcx,r9
829 » mov» r8,QWORD PTR[40+rsp] 832 » mov» r8,QWORD[40+rsp]
830 » mov» r9,QWORD PTR[48+rsp] 833 » mov» r9,QWORD[48+rsp]
831 834
832 835
833 » lea» rsp,QWORD PTR[((-88))+rsp] 836 » lea» rsp,[((-88))+rsp]
834 » movaps» XMMWORD PTR[rsp],xmm6 837 » movaps» XMMWORD[rsp],xmm6
835 » movaps» XMMWORD PTR[16+rsp],xmm7 838 » movaps» XMMWORD[16+rsp],xmm7
836 » movaps» XMMWORD PTR[32+rsp],xmm8 839 » movaps» XMMWORD[32+rsp],xmm8
837 » movaps» XMMWORD PTR[48+rsp],xmm9 840 » movaps» XMMWORD[48+rsp],xmm9
838 $L$ccm64_enc_body:: 841 $L$ccm64_enc_body:
839 » mov» eax,DWORD PTR[240+rcx] 842 » mov» eax,DWORD[240+rcx]
840 » movdqu» xmm6,XMMWORD PTR[r8] 843 » movdqu» xmm6,XMMWORD[r8]
841 » movdqa» xmm9,XMMWORD PTR[$L$increment64] 844 » movdqa» xmm9,XMMWORD[$L$increment64]
842 » movdqa» xmm7,XMMWORD PTR[$L$bswap_mask] 845 » movdqa» xmm7,XMMWORD[$L$bswap_mask]
843 846
844 shl eax,4 847 shl eax,4
845 mov r10d,16 848 mov r10d,16
846 » lea» r11,QWORD PTR[rcx] 849 » lea» r11,[rcx]
847 » movdqu» xmm3,XMMWORD PTR[r9] 850 » movdqu» xmm3,XMMWORD[r9]
848 movdqa xmm2,xmm6 851 movdqa xmm2,xmm6
849 » lea» rcx,QWORD PTR[32+rax*1+rcx] 852 » lea» rcx,[32+rax*1+rcx]
850 DB 102,15,56,0,247 853 DB 102,15,56,0,247
851 sub r10,rax 854 sub r10,rax
852 » jmp» $L$ccm64_enc_outer 855 » jmp» NEAR $L$ccm64_enc_outer
853 ALIGN» 16 856 ALIGN» 16
854 $L$ccm64_enc_outer:: 857 $L$ccm64_enc_outer:
855 » movups» xmm0,XMMWORD PTR[r11] 858 » movups» xmm0,XMMWORD[r11]
856 mov rax,r10 859 mov rax,r10
857 » movups» xmm8,XMMWORD PTR[rdi] 860 » movups» xmm8,XMMWORD[rdi]
858 861
859 xorps xmm2,xmm0 862 xorps xmm2,xmm0
860 » movups» xmm1,XMMWORD PTR[16+r11] 863 » movups» xmm1,XMMWORD[16+r11]
861 xorps xmm0,xmm8 864 xorps xmm0,xmm8
862 xorps xmm3,xmm0 865 xorps xmm3,xmm0
863 » movups» xmm0,XMMWORD PTR[32+r11] 866 » movups» xmm0,XMMWORD[32+r11]
864 867
865 $L$ccm64_enc2_loop:: 868 $L$ccm64_enc2_loop:
866 DB 102,15,56,220,209 869 DB 102,15,56,220,209
867 DB 102,15,56,220,217 870 DB 102,15,56,220,217
868 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 871 » movups» xmm1,XMMWORD[rax*1+rcx]
869 add rax,32 872 add rax,32
870 DB 102,15,56,220,208 873 DB 102,15,56,220,208
871 DB 102,15,56,220,216 874 DB 102,15,56,220,216
872 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 875 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
873 » jnz» $L$ccm64_enc2_loop 876 » jnz» NEAR $L$ccm64_enc2_loop
874 DB 102,15,56,220,209 877 DB 102,15,56,220,209
875 DB 102,15,56,220,217 878 DB 102,15,56,220,217
876 paddq xmm6,xmm9 879 paddq xmm6,xmm9
877 dec rdx 880 dec rdx
878 DB 102,15,56,221,208 881 DB 102,15,56,221,208
879 DB 102,15,56,221,216 882 DB 102,15,56,221,216
880 883
881 » lea» rdi,QWORD PTR[16+rdi] 884 » lea» rdi,[16+rdi]
882 xorps xmm8,xmm2 885 xorps xmm8,xmm2
883 movdqa xmm2,xmm6 886 movdqa xmm2,xmm6
884 » movups» XMMWORD PTR[rsi],xmm8 887 » movups» XMMWORD[rsi],xmm8
885 DB 102,15,56,0,215 888 DB 102,15,56,0,215
886 » lea» rsi,QWORD PTR[16+rsi] 889 » lea» rsi,[16+rsi]
887 » jnz» $L$ccm64_enc_outer 890 » jnz» NEAR $L$ccm64_enc_outer
888 891
889 » movups» XMMWORD PTR[r9],xmm3 892 » movups» XMMWORD[r9],xmm3
890 » movaps» xmm6,XMMWORD PTR[rsp] 893 » movaps» xmm6,XMMWORD[rsp]
891 » movaps» xmm7,XMMWORD PTR[16+rsp] 894 » movaps» xmm7,XMMWORD[16+rsp]
892 » movaps» xmm8,XMMWORD PTR[32+rsp] 895 » movaps» xmm8,XMMWORD[32+rsp]
893 » movaps» xmm9,XMMWORD PTR[48+rsp] 896 » movaps» xmm9,XMMWORD[48+rsp]
894 » lea» rsp,QWORD PTR[88+rsp] 897 » lea» rsp,[88+rsp]
895 $L$ccm64_enc_ret:: 898 $L$ccm64_enc_ret:
896 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 899 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
897 » mov» rsi,QWORD PTR[16+rsp] 900 » mov» rsi,QWORD[16+rsp]
898 DB 0F3h,0C3h ;repret 901 DB 0F3h,0C3h ;repret
899 $L$SEH_end_aesni_ccm64_encrypt_blocks:: 902 $L$SEH_end_aesni_ccm64_encrypt_blocks:
900 aesni_ccm64_encrypt_blocks» ENDP 903 global» aesni_ccm64_decrypt_blocks
901 PUBLIC» aesni_ccm64_decrypt_blocks 904
902 905 ALIGN» 16
903 ALIGN» 16 906 aesni_ccm64_decrypt_blocks:
904 aesni_ccm64_decrypt_blocks» PROC PUBLIC 907 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
905 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 908 » mov» QWORD[16+rsp],rsi
906 » mov» QWORD PTR[16+rsp],rsi
907 mov rax,rsp 909 mov rax,rsp
908 $L$SEH_begin_aesni_ccm64_decrypt_blocks:: 910 $L$SEH_begin_aesni_ccm64_decrypt_blocks:
909 mov rdi,rcx 911 mov rdi,rcx
910 mov rsi,rdx 912 mov rsi,rdx
911 mov rdx,r8 913 mov rdx,r8
912 mov rcx,r9 914 mov rcx,r9
913 » mov» r8,QWORD PTR[40+rsp] 915 » mov» r8,QWORD[40+rsp]
914 » mov» r9,QWORD PTR[48+rsp] 916 » mov» r9,QWORD[48+rsp]
915 917
916 918
917 » lea» rsp,QWORD PTR[((-88))+rsp] 919 » lea» rsp,[((-88))+rsp]
918 » movaps» XMMWORD PTR[rsp],xmm6 920 » movaps» XMMWORD[rsp],xmm6
919 » movaps» XMMWORD PTR[16+rsp],xmm7 921 » movaps» XMMWORD[16+rsp],xmm7
920 » movaps» XMMWORD PTR[32+rsp],xmm8 922 » movaps» XMMWORD[32+rsp],xmm8
921 » movaps» XMMWORD PTR[48+rsp],xmm9 923 » movaps» XMMWORD[48+rsp],xmm9
922 $L$ccm64_dec_body:: 924 $L$ccm64_dec_body:
923 » mov» eax,DWORD PTR[240+rcx] 925 » mov» eax,DWORD[240+rcx]
924 » movups» xmm6,XMMWORD PTR[r8] 926 » movups» xmm6,XMMWORD[r8]
925 » movdqu» xmm3,XMMWORD PTR[r9] 927 » movdqu» xmm3,XMMWORD[r9]
926 » movdqa» xmm9,XMMWORD PTR[$L$increment64] 928 » movdqa» xmm9,XMMWORD[$L$increment64]
927 » movdqa» xmm7,XMMWORD PTR[$L$bswap_mask] 929 » movdqa» xmm7,XMMWORD[$L$bswap_mask]
928 930
929 movaps xmm2,xmm6 931 movaps xmm2,xmm6
930 mov r10d,eax 932 mov r10d,eax
931 mov r11,rcx 933 mov r11,rcx
932 DB 102,15,56,0,247 934 DB 102,15,56,0,247
933 » movups» xmm0,XMMWORD PTR[rcx] 935 » movups» xmm0,XMMWORD[rcx]
934 » movups» xmm1,XMMWORD PTR[16+rcx] 936 » movups» xmm1,XMMWORD[16+rcx]
935 » lea» rcx,QWORD PTR[32+rcx] 937 » lea» rcx,[32+rcx]
936 xorps xmm2,xmm0 938 xorps xmm2,xmm0
937 $L$oop_enc1_5:: 939 $L$oop_enc1_5:
938 DB 102,15,56,220,209 940 DB 102,15,56,220,209
939 dec eax 941 dec eax
940 » movups» xmm1,XMMWORD PTR[rcx] 942 » movups» xmm1,XMMWORD[rcx]
941 » lea» rcx,QWORD PTR[16+rcx] 943 » lea» rcx,[16+rcx]
942 » jnz» $L$oop_enc1_5 944 » jnz» NEAR $L$oop_enc1_5
943 DB 102,15,56,221,209 945 DB 102,15,56,221,209
944 shl r10d,4 946 shl r10d,4
945 mov eax,16 947 mov eax,16
946 » movups» xmm8,XMMWORD PTR[rdi] 948 » movups» xmm8,XMMWORD[rdi]
947 paddq xmm6,xmm9 949 paddq xmm6,xmm9
948 » lea» rdi,QWORD PTR[16+rdi] 950 » lea» rdi,[16+rdi]
949 sub rax,r10 951 sub rax,r10
950 » lea» rcx,QWORD PTR[32+r10*1+r11] 952 » lea» rcx,[32+r10*1+r11]
951 mov r10,rax 953 mov r10,rax
952 » jmp» $L$ccm64_dec_outer 954 » jmp» NEAR $L$ccm64_dec_outer
953 ALIGN» 16 955 ALIGN» 16
954 $L$ccm64_dec_outer:: 956 $L$ccm64_dec_outer:
955 xorps xmm8,xmm2 957 xorps xmm8,xmm2
956 movdqa xmm2,xmm6 958 movdqa xmm2,xmm6
957 » movups» XMMWORD PTR[rsi],xmm8 959 » movups» XMMWORD[rsi],xmm8
958 » lea» rsi,QWORD PTR[16+rsi] 960 » lea» rsi,[16+rsi]
959 DB 102,15,56,0,215 961 DB 102,15,56,0,215
960 962
961 sub rdx,1 963 sub rdx,1
962 » jz» $L$ccm64_dec_break 964 » jz» NEAR $L$ccm64_dec_break
963 965
964 » movups» xmm0,XMMWORD PTR[r11] 966 » movups» xmm0,XMMWORD[r11]
965 mov rax,r10 967 mov rax,r10
966 » movups» xmm1,XMMWORD PTR[16+r11] 968 » movups» xmm1,XMMWORD[16+r11]
967 xorps xmm8,xmm0 969 xorps xmm8,xmm0
968 xorps xmm2,xmm0 970 xorps xmm2,xmm0
969 xorps xmm3,xmm8 971 xorps xmm3,xmm8
970 » movups» xmm0,XMMWORD PTR[32+r11] 972 » movups» xmm0,XMMWORD[32+r11]
971 » jmp» $L$ccm64_dec2_loop 973 » jmp» NEAR $L$ccm64_dec2_loop
972 ALIGN» 16 974 ALIGN» 16
973 $L$ccm64_dec2_loop:: 975 $L$ccm64_dec2_loop:
974 DB» 102,15,56,220,209 976 DB» 102,15,56,220,209
975 DB» 102,15,56,220,217 977 DB» 102,15,56,220,217
976 » movups» xmm1,XMMWORD PTR[rax*1+rcx] 978 » movups» xmm1,XMMWORD[rax*1+rcx]
977 add rax,32 979 add rax,32
978 DB 102,15,56,220,208 980 DB 102,15,56,220,208
979 DB 102,15,56,220,216 981 DB 102,15,56,220,216
980 » movups» xmm0,XMMWORD PTR[((-16))+rax*1+rcx] 982 » movups» xmm0,XMMWORD[((-16))+rax*1+rcx]
981 » jnz» $L$ccm64_dec2_loop 983 » jnz» NEAR $L$ccm64_dec2_loop
982 » movups» xmm8,XMMWORD PTR[rdi] 984 » movups» xmm8,XMMWORD[rdi]
983 paddq xmm6,xmm9 985 paddq xmm6,xmm9
984 DB 102,15,56,220,209 986 DB 102,15,56,220,209
985 DB 102,15,56,220,217 987 DB 102,15,56,220,217
986 DB 102,15,56,221,208 988 DB 102,15,56,221,208
987 DB 102,15,56,221,216 989 DB 102,15,56,221,216
988 » lea» rdi,QWORD PTR[16+rdi] 990 » lea» rdi,[16+rdi]
989 » jmp» $L$ccm64_dec_outer 991 » jmp» NEAR $L$ccm64_dec_outer
990 992
991 ALIGN» 16 993 ALIGN» 16
992 $L$ccm64_dec_break:: 994 $L$ccm64_dec_break:
993 995
994 » mov» eax,DWORD PTR[240+r11] 996 » mov» eax,DWORD[240+r11]
995 » movups» xmm0,XMMWORD PTR[r11] 997 » movups» xmm0,XMMWORD[r11]
996 » movups» xmm1,XMMWORD PTR[16+r11] 998 » movups» xmm1,XMMWORD[16+r11]
997 xorps xmm8,xmm0 999 xorps xmm8,xmm0
998 » lea» r11,QWORD PTR[32+r11] 1000 » lea» r11,[32+r11]
999 xorps xmm3,xmm8 1001 xorps xmm3,xmm8
1000 $L$oop_enc1_6:: 1002 $L$oop_enc1_6:
1001 DB 102,15,56,220,217 1003 DB 102,15,56,220,217
1002 dec eax 1004 dec eax
1003 » movups» xmm1,XMMWORD PTR[r11] 1005 » movups» xmm1,XMMWORD[r11]
1004 » lea» r11,QWORD PTR[16+r11] 1006 » lea» r11,[16+r11]
1005 » jnz» $L$oop_enc1_6 1007 » jnz» NEAR $L$oop_enc1_6
1006 DB 102,15,56,221,217 1008 DB 102,15,56,221,217
1007 » movups» XMMWORD PTR[r9],xmm3 1009 » movups» XMMWORD[r9],xmm3
1008 » movaps» xmm6,XMMWORD PTR[rsp] 1010 » movaps» xmm6,XMMWORD[rsp]
1009 » movaps» xmm7,XMMWORD PTR[16+rsp] 1011 » movaps» xmm7,XMMWORD[16+rsp]
1010 » movaps» xmm8,XMMWORD PTR[32+rsp] 1012 » movaps» xmm8,XMMWORD[32+rsp]
1011 » movaps» xmm9,XMMWORD PTR[48+rsp] 1013 » movaps» xmm9,XMMWORD[48+rsp]
1012 » lea» rsp,QWORD PTR[88+rsp] 1014 » lea» rsp,[88+rsp]
1013 $L$ccm64_dec_ret:: 1015 $L$ccm64_dec_ret:
1014 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 1016 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
1015 » mov» rsi,QWORD PTR[16+rsp] 1017 » mov» rsi,QWORD[16+rsp]
1016 DB 0F3h,0C3h ;repret 1018 DB 0F3h,0C3h ;repret
1017 $L$SEH_end_aesni_ccm64_decrypt_blocks:: 1019 $L$SEH_end_aesni_ccm64_decrypt_blocks:
1018 aesni_ccm64_decrypt_blocks» ENDP 1020 global» aesni_ctr32_encrypt_blocks
1019 PUBLIC» aesni_ctr32_encrypt_blocks 1021
1020 1022 ALIGN» 16
1021 ALIGN» 16 1023 aesni_ctr32_encrypt_blocks:
1022 aesni_ctr32_encrypt_blocks» PROC PUBLIC 1024 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
1023 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 1025 » mov» QWORD[16+rsp],rsi
1024 » mov» QWORD PTR[16+rsp],rsi
1025 mov rax,rsp 1026 mov rax,rsp
1026 $L$SEH_begin_aesni_ctr32_encrypt_blocks:: 1027 $L$SEH_begin_aesni_ctr32_encrypt_blocks:
1027 mov rdi,rcx 1028 mov rdi,rcx
1028 mov rsi,rdx 1029 mov rsi,rdx
1029 mov rdx,r8 1030 mov rdx,r8
1030 mov rcx,r9 1031 mov rcx,r9
1031 » mov» r8,QWORD PTR[40+rsp] 1032 » mov» r8,QWORD[40+rsp]
1032 1033
1033 1034
1034 » lea» rax,QWORD PTR[rsp] 1035 » lea» rax,[rsp]
1035 push rbp 1036 push rbp
1036 sub rsp,288 1037 sub rsp,288
1037 and rsp,-16 1038 and rsp,-16
1038 » movaps» XMMWORD PTR[(-168)+rax],xmm6 1039 » movaps» XMMWORD[(-168)+rax],xmm6
1039 » movaps» XMMWORD PTR[(-152)+rax],xmm7 1040 » movaps» XMMWORD[(-152)+rax],xmm7
1040 » movaps» XMMWORD PTR[(-136)+rax],xmm8 1041 » movaps» XMMWORD[(-136)+rax],xmm8
1041 » movaps» XMMWORD PTR[(-120)+rax],xmm9 1042 » movaps» XMMWORD[(-120)+rax],xmm9
1042 » movaps» XMMWORD PTR[(-104)+rax],xmm10 1043 » movaps» XMMWORD[(-104)+rax],xmm10
1043 » movaps» XMMWORD PTR[(-88)+rax],xmm11 1044 » movaps» XMMWORD[(-88)+rax],xmm11
1044 » movaps» XMMWORD PTR[(-72)+rax],xmm12 1045 » movaps» XMMWORD[(-72)+rax],xmm12
1045 » movaps» XMMWORD PTR[(-56)+rax],xmm13 1046 » movaps» XMMWORD[(-56)+rax],xmm13
1046 » movaps» XMMWORD PTR[(-40)+rax],xmm14 1047 » movaps» XMMWORD[(-40)+rax],xmm14
1047 » movaps» XMMWORD PTR[(-24)+rax],xmm15 1048 » movaps» XMMWORD[(-24)+rax],xmm15
1048 $L$ctr32_body:: 1049 $L$ctr32_body:
1049 » lea» rbp,QWORD PTR[((-8))+rax] 1050 » lea» rbp,[((-8))+rax]
1050 1051
1051 cmp rdx,1 1052 cmp rdx,1
1052 » je» $L$ctr32_one_shortcut 1053 » je» NEAR $L$ctr32_one_shortcut
1053 1054
1054 » movdqu» xmm2,XMMWORD PTR[r8] 1055 » movdqu» xmm2,XMMWORD[r8]
1055 » movdqu» xmm0,XMMWORD PTR[rcx] 1056 » movdqu» xmm0,XMMWORD[rcx]
1056 » mov» r8d,DWORD PTR[12+r8] 1057 » mov» r8d,DWORD[12+r8]
1057 pxor xmm2,xmm0 1058 pxor xmm2,xmm0
1058 » mov» r11d,DWORD PTR[12+rcx] 1059 » mov» r11d,DWORD[12+rcx]
1059 » movdqa» XMMWORD PTR[rsp],xmm2 1060 » movdqa» XMMWORD[rsp],xmm2
1060 bswap r8d 1061 bswap r8d
1061 movdqa xmm3,xmm2 1062 movdqa xmm3,xmm2
1062 movdqa xmm4,xmm2 1063 movdqa xmm4,xmm2
1063 movdqa xmm5,xmm2 1064 movdqa xmm5,xmm2
1064 » movdqa» XMMWORD PTR[64+rsp],xmm2 1065 » movdqa» XMMWORD[64+rsp],xmm2
1065 » movdqa» XMMWORD PTR[80+rsp],xmm2 1066 » movdqa» XMMWORD[80+rsp],xmm2
1066 » movdqa» XMMWORD PTR[96+rsp],xmm2 1067 » movdqa» XMMWORD[96+rsp],xmm2
1067 mov r10,rdx 1068 mov r10,rdx
1068 » movdqa» XMMWORD PTR[112+rsp],xmm2 1069 » movdqa» XMMWORD[112+rsp],xmm2
1069 1070
1070 » lea» rax,QWORD PTR[1+r8] 1071 » lea» rax,[1+r8]
1071 » lea» rdx,QWORD PTR[2+r8] 1072 » lea» rdx,[2+r8]
1072 bswap eax 1073 bswap eax
1073 bswap edx 1074 bswap edx
1074 xor eax,r11d 1075 xor eax,r11d
1075 xor edx,r11d 1076 xor edx,r11d
1076 DB 102,15,58,34,216,3 1077 DB 102,15,58,34,216,3
1077 » lea» rax,QWORD PTR[3+r8] 1078 » lea» rax,[3+r8]
1078 » movdqa» XMMWORD PTR[16+rsp],xmm3 1079 » movdqa» XMMWORD[16+rsp],xmm3
1079 DB 102,15,58,34,226,3 1080 DB 102,15,58,34,226,3
1080 bswap eax 1081 bswap eax
1081 mov rdx,r10 1082 mov rdx,r10
1082 » lea» r10,QWORD PTR[4+r8] 1083 » lea» r10,[4+r8]
1083 » movdqa» XMMWORD PTR[32+rsp],xmm4 1084 » movdqa» XMMWORD[32+rsp],xmm4
1084 xor eax,r11d 1085 xor eax,r11d
1085 bswap r10d 1086 bswap r10d
1086 DB 102,15,58,34,232,3 1087 DB 102,15,58,34,232,3
1087 xor r10d,r11d 1088 xor r10d,r11d
1088 » movdqa» XMMWORD PTR[48+rsp],xmm5 1089 » movdqa» XMMWORD[48+rsp],xmm5
1089 » lea» r9,QWORD PTR[5+r8] 1090 » lea» r9,[5+r8]
1090 » mov» DWORD PTR[((64+12))+rsp],r10d 1091 » mov» DWORD[((64+12))+rsp],r10d
1091 » bswap» r9d 1092 » bswap» r9d
1092 » lea» r10,QWORD PTR[6+r8] 1093 » lea» r10,[6+r8]
1093 » mov» eax,DWORD PTR[240+rcx] 1094 » mov» eax,DWORD[240+rcx]
1094 xor r9d,r11d 1095 xor r9d,r11d
1095 bswap r10d 1096 bswap r10d
1096 » mov» DWORD PTR[((80+12))+rsp],r9d 1097 » mov» DWORD[((80+12))+rsp],r9d
1097 xor r10d,r11d 1098 xor r10d,r11d
1098 » lea» r9,QWORD PTR[7+r8] 1099 » lea» r9,[7+r8]
1099 » mov» DWORD PTR[((96+12))+rsp],r10d 1100 » mov» DWORD[((96+12))+rsp],r10d
1100 » bswap» r9d 1101 » bswap» r9d
1101 » mov» r10d,DWORD PTR[((OPENSSL_ia32cap_P+4))] 1102 » mov» r10d,DWORD[((OPENSSL_ia32cap_P+4))]
1102 xor r9d,r11d 1103 xor r9d,r11d
1103 and r10d,71303168 1104 and r10d,71303168
1104 » mov» DWORD PTR[((112+12))+rsp],r9d 1105 » mov» DWORD[((112+12))+rsp],r9d
1105 1106
1106 » movups» xmm1,XMMWORD PTR[16+rcx] 1107 » movups» xmm1,XMMWORD[16+rcx]
1107 1108
1108 » movdqa» xmm6,XMMWORD PTR[64+rsp] 1109 » movdqa» xmm6,XMMWORD[64+rsp]
1109 » movdqa» xmm7,XMMWORD PTR[80+rsp] 1110 » movdqa» xmm7,XMMWORD[80+rsp]
1110 1111
1111 cmp rdx,8 1112 cmp rdx,8
1112 » jb» $L$ctr32_tail 1113 » jb» NEAR $L$ctr32_tail
1113 1114
1114 sub rdx,6 1115 sub rdx,6
1115 cmp r10d,4194304 1116 cmp r10d,4194304
1116 » je» $L$ctr32_6x 1117 » je» NEAR $L$ctr32_6x
1117 1118
1118 » lea» rcx,QWORD PTR[128+rcx] 1119 » lea» rcx,[128+rcx]
1119 sub rdx,2 1120 sub rdx,2
1120 » jmp» $L$ctr32_loop8 1121 » jmp» NEAR $L$ctr32_loop8
1121 1122
1122 ALIGN» 16 1123 ALIGN» 16
1123 $L$ctr32_6x:: 1124 $L$ctr32_6x:
1124 shl eax,4 1125 shl eax,4
1125 mov r10d,48 1126 mov r10d,48
1126 bswap r11d 1127 bswap r11d
1127 » lea» rcx,QWORD PTR[32+rax*1+rcx] 1128 » lea» rcx,[32+rax*1+rcx]
1128 sub r10,rax 1129 sub r10,rax
1129 » jmp» $L$ctr32_loop6 1130 » jmp» NEAR $L$ctr32_loop6
1130 1131
1131 ALIGN» 16 1132 ALIGN» 16
1132 $L$ctr32_loop6:: 1133 $L$ctr32_loop6:
1133 add r8d,6 1134 add r8d,6
1134 » movups» xmm0,XMMWORD PTR[((-48))+r10*1+rcx] 1135 » movups» xmm0,XMMWORD[((-48))+r10*1+rcx]
1135 DB 102,15,56,220,209 1136 DB 102,15,56,220,209
1136 mov eax,r8d 1137 mov eax,r8d
1137 xor eax,r11d 1138 xor eax,r11d
1138 DB 102,15,56,220,217 1139 DB 102,15,56,220,217
1139 DB» 00fh,038h,0f1h,044h,024h,12 1140 DB» 0x0f,0x38,0xf1,0x44,0x24,12
1140 » lea» eax,DWORD PTR[1+r8] 1141 » lea» eax,[1+r8]
1141 DB 102,15,56,220,225 1142 DB 102,15,56,220,225
1142 xor eax,r11d 1143 xor eax,r11d
1143 DB» 00fh,038h,0f1h,044h,024h,28 1144 DB» 0x0f,0x38,0xf1,0x44,0x24,28
1144 DB 102,15,56,220,233 1145 DB 102,15,56,220,233
1145 » lea» eax,DWORD PTR[2+r8] 1146 » lea» eax,[2+r8]
1146 xor eax,r11d 1147 xor eax,r11d
1147 DB 102,15,56,220,241 1148 DB 102,15,56,220,241
1148 DB» 00fh,038h,0f1h,044h,024h,44 1149 DB» 0x0f,0x38,0xf1,0x44,0x24,44
1149 » lea» eax,DWORD PTR[3+r8] 1150 » lea» eax,[3+r8]
1150 DB 102,15,56,220,249 1151 DB 102,15,56,220,249
1151 » movups» xmm1,XMMWORD PTR[((-32))+r10*1+rcx] 1152 » movups» xmm1,XMMWORD[((-32))+r10*1+rcx]
1152 » xor» eax,r11d 1153 » xor» eax,r11d
1153 1154
1154 DB» 102,15,56,220,208 1155 DB» 102,15,56,220,208
1155 DB» 00fh,038h,0f1h,044h,024h,60 1156 DB» 0x0f,0x38,0xf1,0x44,0x24,60
1156 » lea» eax,DWORD PTR[4+r8] 1157 » lea» eax,[4+r8]
1157 DB» 102,15,56,220,216 1158 DB» 102,15,56,220,216
1158 » xor» eax,r11d 1159 » xor» eax,r11d
1159 DB» 00fh,038h,0f1h,044h,024h,76 1160 DB» 0x0f,0x38,0xf1,0x44,0x24,76
1160 DB 102,15,56,220,224 1161 DB 102,15,56,220,224
1161 » lea» eax,DWORD PTR[5+r8] 1162 » lea» eax,[5+r8]
1162 xor eax,r11d 1163 xor eax,r11d
1163 DB 102,15,56,220,232 1164 DB 102,15,56,220,232
1164 DB» 00fh,038h,0f1h,044h,024h,92 1165 DB» 0x0f,0x38,0xf1,0x44,0x24,92
1165 mov rax,r10 1166 mov rax,r10
1166 DB 102,15,56,220,240 1167 DB 102,15,56,220,240
1167 DB 102,15,56,220,248 1168 DB 102,15,56,220,248
1168 » movups» xmm0,XMMWORD PTR[((-16))+r10*1+rcx] 1169 » movups» xmm0,XMMWORD[((-16))+r10*1+rcx]
1169 1170
1170 call $L$enc_loop6 1171 call $L$enc_loop6
1171 1172
1172 » movdqu» xmm8,XMMWORD PTR[rdi] 1173 » movdqu» xmm8,XMMWORD[rdi]
1173 » movdqu» xmm9,XMMWORD PTR[16+rdi] 1174 » movdqu» xmm9,XMMWORD[16+rdi]
1174 » movdqu» xmm10,XMMWORD PTR[32+rdi] 1175 » movdqu» xmm10,XMMWORD[32+rdi]
1175 » movdqu» xmm11,XMMWORD PTR[48+rdi] 1176 » movdqu» xmm11,XMMWORD[48+rdi]
1176 » movdqu» xmm12,XMMWORD PTR[64+rdi] 1177 » movdqu» xmm12,XMMWORD[64+rdi]
1177 » movdqu» xmm13,XMMWORD PTR[80+rdi] 1178 » movdqu» xmm13,XMMWORD[80+rdi]
1178 » lea» rdi,QWORD PTR[96+rdi] 1179 » lea» rdi,[96+rdi]
1179 » movups» xmm1,XMMWORD PTR[((-64))+r10*1+rcx] 1180 » movups» xmm1,XMMWORD[((-64))+r10*1+rcx]
1180 pxor xmm8,xmm2 1181 pxor xmm8,xmm2
1181 » movaps» xmm2,XMMWORD PTR[rsp] 1182 » movaps» xmm2,XMMWORD[rsp]
1182 pxor xmm9,xmm3 1183 pxor xmm9,xmm3
1183 » movaps» xmm3,XMMWORD PTR[16+rsp] 1184 » movaps» xmm3,XMMWORD[16+rsp]
1184 pxor xmm10,xmm4 1185 pxor xmm10,xmm4
1185 » movaps» xmm4,XMMWORD PTR[32+rsp] 1186 » movaps» xmm4,XMMWORD[32+rsp]
1186 pxor xmm11,xmm5 1187 pxor xmm11,xmm5
1187 » movaps» xmm5,XMMWORD PTR[48+rsp] 1188 » movaps» xmm5,XMMWORD[48+rsp]
1188 pxor xmm12,xmm6 1189 pxor xmm12,xmm6
1189 » movaps» xmm6,XMMWORD PTR[64+rsp] 1190 » movaps» xmm6,XMMWORD[64+rsp]
1190 pxor xmm13,xmm7 1191 pxor xmm13,xmm7
1191 » movaps» xmm7,XMMWORD PTR[80+rsp] 1192 » movaps» xmm7,XMMWORD[80+rsp]
1192 » movdqu» XMMWORD PTR[rsi],xmm8 1193 » movdqu» XMMWORD[rsi],xmm8
1193 » movdqu» XMMWORD PTR[16+rsi],xmm9 1194 » movdqu» XMMWORD[16+rsi],xmm9
1194 » movdqu» XMMWORD PTR[32+rsi],xmm10 1195 » movdqu» XMMWORD[32+rsi],xmm10
1195 » movdqu» XMMWORD PTR[48+rsi],xmm11 1196 » movdqu» XMMWORD[48+rsi],xmm11
1196 » movdqu» XMMWORD PTR[64+rsi],xmm12 1197 » movdqu» XMMWORD[64+rsi],xmm12
1197 » movdqu» XMMWORD PTR[80+rsi],xmm13 1198 » movdqu» XMMWORD[80+rsi],xmm13
1198 » lea» rsi,QWORD PTR[96+rsi] 1199 » lea» rsi,[96+rsi]
1199 1200
1200 sub rdx,6 1201 sub rdx,6
1201 » jnc» $L$ctr32_loop6 1202 » jnc» NEAR $L$ctr32_loop6
1202 1203
1203 add rdx,6 1204 add rdx,6
1204 » jz» $L$ctr32_done 1205 » jz» NEAR $L$ctr32_done
1205 1206
1206 » lea» eax,DWORD PTR[((-48))+r10] 1207 » lea» eax,[((-48))+r10]
1207 » lea» rcx,QWORD PTR[((-80))+r10*1+rcx] 1208 » lea» rcx,[((-80))+r10*1+rcx]
1208 neg eax 1209 neg eax
1209 shr eax,4 1210 shr eax,4
1210 » jmp» $L$ctr32_tail 1211 » jmp» NEAR $L$ctr32_tail
1211 1212
1212 ALIGN 32 1213 ALIGN 32
1213 $L$ctr32_loop8:: 1214 $L$ctr32_loop8:
1214 add r8d,8 1215 add r8d,8
1215 » movdqa» xmm8,XMMWORD PTR[96+rsp] 1216 » movdqa» xmm8,XMMWORD[96+rsp]
1216 DB 102,15,56,220,209 1217 DB 102,15,56,220,209
1217 mov r9d,r8d 1218 mov r9d,r8d
1218 » movdqa» xmm9,XMMWORD PTR[112+rsp] 1219 » movdqa» xmm9,XMMWORD[112+rsp]
1219 DB» 102,15,56,220,217 1220 DB» 102,15,56,220,217
1220 » bswap» r9d 1221 » bswap» r9d
1221 » movups» xmm0,XMMWORD PTR[((32-128))+rcx] 1222 » movups» xmm0,XMMWORD[((32-128))+rcx]
1222 DB 102,15,56,220,225 1223 DB 102,15,56,220,225
1223 xor r9d,r11d 1224 xor r9d,r11d
1224 nop 1225 nop
1225 DB 102,15,56,220,233 1226 DB 102,15,56,220,233
1226 » mov» DWORD PTR[((0+12))+rsp],r9d 1227 » mov» DWORD[((0+12))+rsp],r9d
1227 » lea» r9,QWORD PTR[1+r8] 1228 » lea» r9,[1+r8]
1228 DB 102,15,56,220,241 1229 DB 102,15,56,220,241
1229 DB 102,15,56,220,249 1230 DB 102,15,56,220,249
1230 DB 102,68,15,56,220,193 1231 DB 102,68,15,56,220,193
1231 DB 102,68,15,56,220,201 1232 DB 102,68,15,56,220,201
1232 » movups» xmm1,XMMWORD PTR[((48-128))+rcx] 1233 » movups» xmm1,XMMWORD[((48-128))+rcx]
1233 » bswap» r9d 1234 » bswap» r9d
1234 DB» 102,15,56,220,208 1235 DB» 102,15,56,220,208
1235 DB» 102,15,56,220,216 1236 DB» 102,15,56,220,216
1236 » xor» r9d,r11d 1237 » xor» r9d,r11d
1237 DB» 066h,090h 1238 DB» 0x66,0x90
1238 DB 102,15,56,220,224 1239 DB 102,15,56,220,224
1239 DB 102,15,56,220,232 1240 DB 102,15,56,220,232
1240 » mov» DWORD PTR[((16+12))+rsp],r9d 1241 » mov» DWORD[((16+12))+rsp],r9d
1241 » lea» r9,QWORD PTR[2+r8] 1242 » lea» r9,[2+r8]
1242 DB 102,15,56,220,240 1243 DB 102,15,56,220,240
1243 DB 102,15,56,220,248 1244 DB 102,15,56,220,248
1244 DB 102,68,15,56,220,192 1245 DB 102,68,15,56,220,192
1245 DB 102,68,15,56,220,200 1246 DB 102,68,15,56,220,200
1246 » movups» xmm0,XMMWORD PTR[((64-128))+rcx] 1247 » movups» xmm0,XMMWORD[((64-128))+rcx]
1247 » bswap» r9d 1248 » bswap» r9d
1248 DB» 102,15,56,220,209 1249 DB» 102,15,56,220,209
1249 DB» 102,15,56,220,217 1250 DB» 102,15,56,220,217
1250 » xor» r9d,r11d 1251 » xor» r9d,r11d
1251 DB» 066h,090h 1252 DB» 0x66,0x90
1252 DB 102,15,56,220,225 1253 DB 102,15,56,220,225
1253 DB 102,15,56,220,233 1254 DB 102,15,56,220,233
1254 » mov» DWORD PTR[((32+12))+rsp],r9d 1255 » mov» DWORD[((32+12))+rsp],r9d
1255 » lea» r9,QWORD PTR[3+r8] 1256 » lea» r9,[3+r8]
1256 DB 102,15,56,220,241 1257 DB 102,15,56,220,241
1257 DB 102,15,56,220,249 1258 DB 102,15,56,220,249
1258 DB 102,68,15,56,220,193 1259 DB 102,68,15,56,220,193
1259 DB 102,68,15,56,220,201 1260 DB 102,68,15,56,220,201
1260 » movups» xmm1,XMMWORD PTR[((80-128))+rcx] 1261 » movups» xmm1,XMMWORD[((80-128))+rcx]
1261 » bswap» r9d 1262 » bswap» r9d
1262 DB» 102,15,56,220,208 1263 DB» 102,15,56,220,208
1263 DB» 102,15,56,220,216 1264 DB» 102,15,56,220,216
1264 » xor» r9d,r11d 1265 » xor» r9d,r11d
1265 DB» 066h,090h 1266 DB» 0x66,0x90
1266 DB 102,15,56,220,224 1267 DB 102,15,56,220,224
1267 DB 102,15,56,220,232 1268 DB 102,15,56,220,232
1268 » mov» DWORD PTR[((48+12))+rsp],r9d 1269 » mov» DWORD[((48+12))+rsp],r9d
1269 » lea» r9,QWORD PTR[4+r8] 1270 » lea» r9,[4+r8]
1270 DB 102,15,56,220,240 1271 DB 102,15,56,220,240
1271 DB 102,15,56,220,248 1272 DB 102,15,56,220,248
1272 DB 102,68,15,56,220,192 1273 DB 102,68,15,56,220,192
1273 DB 102,68,15,56,220,200 1274 DB 102,68,15,56,220,200
1274 » movups» xmm0,XMMWORD PTR[((96-128))+rcx] 1275 » movups» xmm0,XMMWORD[((96-128))+rcx]
1275 » bswap» r9d 1276 » bswap» r9d
1276 DB» 102,15,56,220,209 1277 DB» 102,15,56,220,209
1277 DB» 102,15,56,220,217 1278 DB» 102,15,56,220,217
1278 » xor» r9d,r11d 1279 » xor» r9d,r11d
1279 DB» 066h,090h 1280 DB» 0x66,0x90
1280 DB 102,15,56,220,225 1281 DB 102,15,56,220,225
1281 DB 102,15,56,220,233 1282 DB 102,15,56,220,233
1282 » mov» DWORD PTR[((64+12))+rsp],r9d 1283 » mov» DWORD[((64+12))+rsp],r9d
1283 » lea» r9,QWORD PTR[5+r8] 1284 » lea» r9,[5+r8]
1284 DB 102,15,56,220,241 1285 DB 102,15,56,220,241
1285 DB 102,15,56,220,249 1286 DB 102,15,56,220,249
1286 DB 102,68,15,56,220,193 1287 DB 102,68,15,56,220,193
1287 DB 102,68,15,56,220,201 1288 DB 102,68,15,56,220,201
1288 » movups» xmm1,XMMWORD PTR[((112-128))+rcx] 1289 » movups» xmm1,XMMWORD[((112-128))+rcx]
1289 » bswap» r9d 1290 » bswap» r9d
1290 DB» 102,15,56,220,208 1291 DB» 102,15,56,220,208
1291 DB» 102,15,56,220,216 1292 DB» 102,15,56,220,216
1292 » xor» r9d,r11d 1293 » xor» r9d,r11d
1293 DB» 066h,090h 1294 DB» 0x66,0x90
1294 DB 102,15,56,220,224 1295 DB 102,15,56,220,224
1295 DB 102,15,56,220,232 1296 DB 102,15,56,220,232
1296 » mov» DWORD PTR[((80+12))+rsp],r9d 1297 » mov» DWORD[((80+12))+rsp],r9d
1297 » lea» r9,QWORD PTR[6+r8] 1298 » lea» r9,[6+r8]
1298 DB 102,15,56,220,240 1299 DB 102,15,56,220,240
1299 DB 102,15,56,220,248 1300 DB 102,15,56,220,248
1300 DB 102,68,15,56,220,192 1301 DB 102,68,15,56,220,192
1301 DB 102,68,15,56,220,200 1302 DB 102,68,15,56,220,200
1302 » movups» xmm0,XMMWORD PTR[((128-128))+rcx] 1303 » movups» xmm0,XMMWORD[((128-128))+rcx]
1303 » bswap» r9d 1304 » bswap» r9d
1304 DB» 102,15,56,220,209 1305 DB» 102,15,56,220,209
1305 DB» 102,15,56,220,217 1306 DB» 102,15,56,220,217
1306 » xor» r9d,r11d 1307 » xor» r9d,r11d
1307 DB» 066h,090h 1308 DB» 0x66,0x90
1308 DB 102,15,56,220,225 1309 DB 102,15,56,220,225
1309 DB 102,15,56,220,233 1310 DB 102,15,56,220,233
1310 » mov» DWORD PTR[((96+12))+rsp],r9d 1311 » mov» DWORD[((96+12))+rsp],r9d
1311 » lea» r9,QWORD PTR[7+r8] 1312 » lea» r9,[7+r8]
1312 DB 102,15,56,220,241 1313 DB 102,15,56,220,241
1313 DB 102,15,56,220,249 1314 DB 102,15,56,220,249
1314 DB 102,68,15,56,220,193 1315 DB 102,68,15,56,220,193
1315 DB 102,68,15,56,220,201 1316 DB 102,68,15,56,220,201
1316 » movups» xmm1,XMMWORD PTR[((144-128))+rcx] 1317 » movups» xmm1,XMMWORD[((144-128))+rcx]
1317 bswap r9d 1318 bswap r9d
1318 DB 102,15,56,220,208 1319 DB 102,15,56,220,208
1319 DB 102,15,56,220,216 1320 DB 102,15,56,220,216
1320 DB 102,15,56,220,224 1321 DB 102,15,56,220,224
1321 xor r9d,r11d 1322 xor r9d,r11d
1322 » movdqu» xmm10,XMMWORD PTR[rdi] 1323 » movdqu» xmm10,XMMWORD[rdi]
1323 DB 102,15,56,220,232 1324 DB 102,15,56,220,232
1324 » mov» DWORD PTR[((112+12))+rsp],r9d 1325 » mov» DWORD[((112+12))+rsp],r9d
1325 cmp eax,11 1326 cmp eax,11
1326 DB 102,15,56,220,240 1327 DB 102,15,56,220,240
1327 DB 102,15,56,220,248 1328 DB 102,15,56,220,248
1328 DB 102,68,15,56,220,192 1329 DB 102,68,15,56,220,192
1329 DB 102,68,15,56,220,200 1330 DB 102,68,15,56,220,200
1330 » movups» xmm0,XMMWORD PTR[((160-128))+rcx] 1331 » movups» xmm0,XMMWORD[((160-128))+rcx]
1331 1332
1332 » jb» $L$ctr32_enc_done 1333 » jb» NEAR $L$ctr32_enc_done
1333 1334
1334 DB» 102,15,56,220,209 1335 DB» 102,15,56,220,209
1335 DB» 102,15,56,220,217 1336 DB» 102,15,56,220,217
1336 DB 102,15,56,220,225 1337 DB 102,15,56,220,225
1337 DB 102,15,56,220,233 1338 DB 102,15,56,220,233
1338 DB 102,15,56,220,241 1339 DB 102,15,56,220,241
1339 DB 102,15,56,220,249 1340 DB 102,15,56,220,249
1340 DB 102,68,15,56,220,193 1341 DB 102,68,15,56,220,193
1341 DB 102,68,15,56,220,201 1342 DB 102,68,15,56,220,201
1342 » movups» xmm1,XMMWORD PTR[((176-128))+rcx] 1343 » movups» xmm1,XMMWORD[((176-128))+rcx]
1343 1344
1344 DB 102,15,56,220,208 1345 DB 102,15,56,220,208
1345 DB 102,15,56,220,216 1346 DB 102,15,56,220,216
1346 DB 102,15,56,220,224 1347 DB 102,15,56,220,224
1347 DB 102,15,56,220,232 1348 DB 102,15,56,220,232
1348 DB 102,15,56,220,240 1349 DB 102,15,56,220,240
1349 DB 102,15,56,220,248 1350 DB 102,15,56,220,248
1350 DB 102,68,15,56,220,192 1351 DB 102,68,15,56,220,192
1351 DB 102,68,15,56,220,200 1352 DB 102,68,15,56,220,200
1352 » movups» xmm0,XMMWORD PTR[((192-128))+rcx] 1353 » movups» xmm0,XMMWORD[((192-128))+rcx]
1353 » je» $L$ctr32_enc_done 1354 » je» NEAR $L$ctr32_enc_done
1354 1355
1355 DB 102,15,56,220,209 1356 DB 102,15,56,220,209
1356 DB 102,15,56,220,217 1357 DB 102,15,56,220,217
1357 DB 102,15,56,220,225 1358 DB 102,15,56,220,225
1358 DB 102,15,56,220,233 1359 DB 102,15,56,220,233
1359 DB 102,15,56,220,241 1360 DB 102,15,56,220,241
1360 DB 102,15,56,220,249 1361 DB 102,15,56,220,249
1361 DB 102,68,15,56,220,193 1362 DB 102,68,15,56,220,193
1362 DB 102,68,15,56,220,201 1363 DB 102,68,15,56,220,201
1363 » movups» xmm1,XMMWORD PTR[((208-128))+rcx] 1364 » movups» xmm1,XMMWORD[((208-128))+rcx]
1364 1365
1365 DB 102,15,56,220,208 1366 DB 102,15,56,220,208
1366 DB 102,15,56,220,216 1367 DB 102,15,56,220,216
1367 DB 102,15,56,220,224 1368 DB 102,15,56,220,224
1368 DB 102,15,56,220,232 1369 DB 102,15,56,220,232
1369 DB 102,15,56,220,240 1370 DB 102,15,56,220,240
1370 DB 102,15,56,220,248 1371 DB 102,15,56,220,248
1371 DB 102,68,15,56,220,192 1372 DB 102,68,15,56,220,192
1372 DB 102,68,15,56,220,200 1373 DB 102,68,15,56,220,200
1373 » movups» xmm0,XMMWORD PTR[((224-128))+rcx] 1374 » movups» xmm0,XMMWORD[((224-128))+rcx]
1374 » jmp» $L$ctr32_enc_done 1375 » jmp» NEAR $L$ctr32_enc_done
1375 1376
1376 ALIGN 16 1377 ALIGN 16
1377 $L$ctr32_enc_done:: 1378 $L$ctr32_enc_done:
1378 » movdqu» xmm11,XMMWORD PTR[16+rdi] 1379 » movdqu» xmm11,XMMWORD[16+rdi]
1379 pxor xmm10,xmm0 1380 pxor xmm10,xmm0
1380 » movdqu» xmm12,XMMWORD PTR[32+rdi] 1381 » movdqu» xmm12,XMMWORD[32+rdi]
1381 pxor xmm11,xmm0 1382 pxor xmm11,xmm0
1382 » movdqu» xmm13,XMMWORD PTR[48+rdi] 1383 » movdqu» xmm13,XMMWORD[48+rdi]
1383 pxor xmm12,xmm0 1384 pxor xmm12,xmm0
1384 » movdqu» xmm14,XMMWORD PTR[64+rdi] 1385 » movdqu» xmm14,XMMWORD[64+rdi]
1385 pxor xmm13,xmm0 1386 pxor xmm13,xmm0
1386 » movdqu» xmm15,XMMWORD PTR[80+rdi] 1387 » movdqu» xmm15,XMMWORD[80+rdi]
1387 pxor xmm14,xmm0 1388 pxor xmm14,xmm0
1388 pxor xmm15,xmm0 1389 pxor xmm15,xmm0
1389 DB 102,15,56,220,209 1390 DB 102,15,56,220,209
1390 DB 102,15,56,220,217 1391 DB 102,15,56,220,217
1391 DB 102,15,56,220,225 1392 DB 102,15,56,220,225
1392 DB 102,15,56,220,233 1393 DB 102,15,56,220,233
1393 DB 102,15,56,220,241 1394 DB 102,15,56,220,241
1394 DB 102,15,56,220,249 1395 DB 102,15,56,220,249
1395 DB 102,68,15,56,220,193 1396 DB 102,68,15,56,220,193
1396 DB 102,68,15,56,220,201 1397 DB 102,68,15,56,220,201
1397 » movdqu» xmm1,XMMWORD PTR[96+rdi] 1398 » movdqu» xmm1,XMMWORD[96+rdi]
1398 » lea» rdi,QWORD PTR[128+rdi] 1399 » lea» rdi,[128+rdi]
1399 1400
1400 DB 102,65,15,56,221,210 1401 DB 102,65,15,56,221,210
1401 pxor xmm1,xmm0 1402 pxor xmm1,xmm0
1402 » movdqu» xmm10,XMMWORD PTR[((112-128))+rdi] 1403 » movdqu» xmm10,XMMWORD[((112-128))+rdi]
1403 DB 102,65,15,56,221,219 1404 DB 102,65,15,56,221,219
1404 pxor xmm10,xmm0 1405 pxor xmm10,xmm0
1405 » movdqa» xmm11,XMMWORD PTR[rsp] 1406 » movdqa» xmm11,XMMWORD[rsp]
1406 DB 102,65,15,56,221,228 1407 DB 102,65,15,56,221,228
1407 DB 102,65,15,56,221,237 1408 DB 102,65,15,56,221,237
1408 » movdqa» xmm12,XMMWORD PTR[16+rsp] 1409 » movdqa» xmm12,XMMWORD[16+rsp]
1409 » movdqa» xmm13,XMMWORD PTR[32+rsp] 1410 » movdqa» xmm13,XMMWORD[32+rsp]
1410 DB 102,65,15,56,221,246 1411 DB 102,65,15,56,221,246
1411 DB 102,65,15,56,221,255 1412 DB 102,65,15,56,221,255
1412 » movdqa» xmm14,XMMWORD PTR[48+rsp] 1413 » movdqa» xmm14,XMMWORD[48+rsp]
1413 » movdqa» xmm15,XMMWORD PTR[64+rsp] 1414 » movdqa» xmm15,XMMWORD[64+rsp]
1414 DB 102,68,15,56,221,193 1415 DB 102,68,15,56,221,193
1415 » movdqa» xmm0,XMMWORD PTR[80+rsp] 1416 » movdqa» xmm0,XMMWORD[80+rsp]
1416 » movups» xmm1,XMMWORD PTR[((16-128))+rcx] 1417 » movups» xmm1,XMMWORD[((16-128))+rcx]
1417 DB 102,69,15,56,221,202 1418 DB 102,69,15,56,221,202
1418 1419
1419 » movups» XMMWORD PTR[rsi],xmm2 1420 » movups» XMMWORD[rsi],xmm2
1420 movdqa xmm2,xmm11 1421 movdqa xmm2,xmm11
1421 » movups» XMMWORD PTR[16+rsi],xmm3 1422 » movups» XMMWORD[16+rsi],xmm3
1422 movdqa xmm3,xmm12 1423 movdqa xmm3,xmm12
1423 » movups» XMMWORD PTR[32+rsi],xmm4 1424 » movups» XMMWORD[32+rsi],xmm4
1424 movdqa xmm4,xmm13 1425 movdqa xmm4,xmm13
1425 » movups» XMMWORD PTR[48+rsi],xmm5 1426 » movups» XMMWORD[48+rsi],xmm5
1426 movdqa xmm5,xmm14 1427 movdqa xmm5,xmm14
1427 » movups» XMMWORD PTR[64+rsi],xmm6 1428 » movups» XMMWORD[64+rsi],xmm6
1428 movdqa xmm6,xmm15 1429 movdqa xmm6,xmm15
1429 » movups» XMMWORD PTR[80+rsi],xmm7 1430 » movups» XMMWORD[80+rsi],xmm7
1430 movdqa xmm7,xmm0 1431 movdqa xmm7,xmm0
1431 » movups» XMMWORD PTR[96+rsi],xmm8 1432 » movups» XMMWORD[96+rsi],xmm8
1432 » movups» XMMWORD PTR[112+rsi],xmm9 1433 » movups» XMMWORD[112+rsi],xmm9
1433 » lea» rsi,QWORD PTR[128+rsi] 1434 » lea» rsi,[128+rsi]
1434 1435
1435 sub rdx,8 1436 sub rdx,8
1436 » jnc» $L$ctr32_loop8 1437 » jnc» NEAR $L$ctr32_loop8
1437 1438
1438 add rdx,8 1439 add rdx,8
1439 » jz» $L$ctr32_done 1440 » jz» NEAR $L$ctr32_done
1440 » lea» rcx,QWORD PTR[((-128))+rcx] 1441 » lea» rcx,[((-128))+rcx]
1441 1442
1442 $L$ctr32_tail:: 1443 $L$ctr32_tail:
1443 » lea» rcx,QWORD PTR[16+rcx] 1444 » lea» rcx,[16+rcx]
1444 cmp rdx,4 1445 cmp rdx,4
1445 » jb» $L$ctr32_loop3 1446 » jb» NEAR $L$ctr32_loop3
1446 » je» $L$ctr32_loop4 1447 » je» NEAR $L$ctr32_loop4
1447 1448
1448 shl eax,4 1449 shl eax,4
1449 » movdqa» xmm8,XMMWORD PTR[96+rsp] 1450 » movdqa» xmm8,XMMWORD[96+rsp]
1450 pxor xmm9,xmm9 1451 pxor xmm9,xmm9
1451 1452
1452 » movups» xmm0,XMMWORD PTR[16+rcx] 1453 » movups» xmm0,XMMWORD[16+rcx]
1453 DB 102,15,56,220,209 1454 DB 102,15,56,220,209
1454 DB 102,15,56,220,217 1455 DB 102,15,56,220,217
1455 » lea» rcx,QWORD PTR[((32-16))+rax*1+rcx] 1456 » lea» rcx,[((32-16))+rax*1+rcx]
1456 neg rax 1457 neg rax
1457 DB 102,15,56,220,225 1458 DB 102,15,56,220,225
1458 add rax,16 1459 add rax,16
1459 » movups» xmm10,XMMWORD PTR[rdi] 1460 » movups» xmm10,XMMWORD[rdi]
1460 DB 102,15,56,220,233 1461 DB 102,15,56,220,233
1461 DB 102,15,56,220,241 1462 DB 102,15,56,220,241
1462 » movups» xmm11,XMMWORD PTR[16+rdi] 1463 » movups» xmm11,XMMWORD[16+rdi]
1463 » movups» xmm12,XMMWORD PTR[32+rdi] 1464 » movups» xmm12,XMMWORD[32+rdi]
1464 DB 102,15,56,220,249 1465 DB 102,15,56,220,249
1465 DB 102,68,15,56,220,193 1466 DB 102,68,15,56,220,193
1466 1467
1467 call $L$enc_loop8_enter 1468 call $L$enc_loop8_enter
1468 1469
1469 » movdqu» xmm13,XMMWORD PTR[48+rdi] 1470 » movdqu» xmm13,XMMWORD[48+rdi]
1470 pxor xmm2,xmm10 1471 pxor xmm2,xmm10
1471 » movdqu» xmm10,XMMWORD PTR[64+rdi] 1472 » movdqu» xmm10,XMMWORD[64+rdi]
1472 pxor xmm3,xmm11 1473 pxor xmm3,xmm11
1473 » movdqu» XMMWORD PTR[rsi],xmm2 1474 » movdqu» XMMWORD[rsi],xmm2
1474 pxor xmm4,xmm12 1475 pxor xmm4,xmm12
1475 » movdqu» XMMWORD PTR[16+rsi],xmm3 1476 » movdqu» XMMWORD[16+rsi],xmm3
1476 pxor xmm5,xmm13 1477 pxor xmm5,xmm13
1477 » movdqu» XMMWORD PTR[32+rsi],xmm4 1478 » movdqu» XMMWORD[32+rsi],xmm4
1478 pxor xmm6,xmm10 1479 pxor xmm6,xmm10
1479 » movdqu» XMMWORD PTR[48+rsi],xmm5 1480 » movdqu» XMMWORD[48+rsi],xmm5
1480 » movdqu» XMMWORD PTR[64+rsi],xmm6 1481 » movdqu» XMMWORD[64+rsi],xmm6
1481 cmp rdx,6 1482 cmp rdx,6
1482 » jb» $L$ctr32_done 1483 » jb» NEAR $L$ctr32_done
1483 1484
1484 » movups» xmm11,XMMWORD PTR[80+rdi] 1485 » movups» xmm11,XMMWORD[80+rdi]
1485 xorps xmm7,xmm11 1486 xorps xmm7,xmm11
1486 » movups» XMMWORD PTR[80+rsi],xmm7 1487 » movups» XMMWORD[80+rsi],xmm7
1487 » je» $L$ctr32_done 1488 » je» NEAR $L$ctr32_done
1488 1489
1489 » movups» xmm12,XMMWORD PTR[96+rdi] 1490 » movups» xmm12,XMMWORD[96+rdi]
1490 xorps xmm8,xmm12 1491 xorps xmm8,xmm12
1491 » movups» XMMWORD PTR[96+rsi],xmm8 1492 » movups» XMMWORD[96+rsi],xmm8
1492 » jmp» $L$ctr32_done 1493 » jmp» NEAR $L$ctr32_done
1493 1494
1494 ALIGN 32 1495 ALIGN 32
1495 $L$ctr32_loop4:: 1496 $L$ctr32_loop4:
1496 DB» 102,15,56,220,209 1497 DB» 102,15,56,220,209
1497 » lea» rcx,QWORD PTR[16+rcx] 1498 » lea» rcx,[16+rcx]
1498 dec eax 1499 dec eax
1499 DB 102,15,56,220,217 1500 DB 102,15,56,220,217
1500 DB 102,15,56,220,225 1501 DB 102,15,56,220,225
1501 DB 102,15,56,220,233 1502 DB 102,15,56,220,233
1502 » movups» xmm1,XMMWORD PTR[rcx] 1503 » movups» xmm1,XMMWORD[rcx]
1503 » jnz» $L$ctr32_loop4 1504 » jnz» NEAR $L$ctr32_loop4
1504 DB 102,15,56,221,209 1505 DB 102,15,56,221,209
1505 DB 102,15,56,221,217 1506 DB 102,15,56,221,217
1506 » movups» xmm10,XMMWORD PTR[rdi] 1507 » movups» xmm10,XMMWORD[rdi]
1507 » movups» xmm11,XMMWORD PTR[16+rdi] 1508 » movups» xmm11,XMMWORD[16+rdi]
1508 DB 102,15,56,221,225 1509 DB 102,15,56,221,225
1509 DB 102,15,56,221,233 1510 DB 102,15,56,221,233
1510 » movups» xmm12,XMMWORD PTR[32+rdi] 1511 » movups» xmm12,XMMWORD[32+rdi]
1511 » movups» xmm13,XMMWORD PTR[48+rdi] 1512 » movups» xmm13,XMMWORD[48+rdi]
1512 1513
1513 xorps xmm2,xmm10 1514 xorps xmm2,xmm10
1514 » movups» XMMWORD PTR[rsi],xmm2 1515 » movups» XMMWORD[rsi],xmm2
1515 xorps xmm3,xmm11 1516 xorps xmm3,xmm11
1516 » movups» XMMWORD PTR[16+rsi],xmm3 1517 » movups» XMMWORD[16+rsi],xmm3
1517 pxor xmm4,xmm12 1518 pxor xmm4,xmm12
1518 » movdqu» XMMWORD PTR[32+rsi],xmm4 1519 » movdqu» XMMWORD[32+rsi],xmm4
1519 pxor xmm5,xmm13 1520 pxor xmm5,xmm13
1520 » movdqu» XMMWORD PTR[48+rsi],xmm5 1521 » movdqu» XMMWORD[48+rsi],xmm5
1521 » jmp» $L$ctr32_done 1522 » jmp» NEAR $L$ctr32_done
1522 1523
1523 ALIGN 32 1524 ALIGN 32
1524 $L$ctr32_loop3:: 1525 $L$ctr32_loop3:
1525 DB» 102,15,56,220,209 1526 DB» 102,15,56,220,209
1526 » lea» rcx,QWORD PTR[16+rcx] 1527 » lea» rcx,[16+rcx]
1527 dec eax 1528 dec eax
1528 DB 102,15,56,220,217 1529 DB 102,15,56,220,217
1529 DB 102,15,56,220,225 1530 DB 102,15,56,220,225
1530 » movups» xmm1,XMMWORD PTR[rcx] 1531 » movups» xmm1,XMMWORD[rcx]
1531 » jnz» $L$ctr32_loop3 1532 » jnz» NEAR $L$ctr32_loop3
1532 DB 102,15,56,221,209 1533 DB 102,15,56,221,209
1533 DB 102,15,56,221,217 1534 DB 102,15,56,221,217
1534 DB 102,15,56,221,225 1535 DB 102,15,56,221,225
1535 1536
1536 » movups» xmm10,XMMWORD PTR[rdi] 1537 » movups» xmm10,XMMWORD[rdi]
1537 xorps xmm2,xmm10 1538 xorps xmm2,xmm10
1538 » movups» XMMWORD PTR[rsi],xmm2 1539 » movups» XMMWORD[rsi],xmm2
1539 cmp rdx,2 1540 cmp rdx,2
1540 » jb» $L$ctr32_done 1541 » jb» NEAR $L$ctr32_done
1541 1542
1542 » movups» xmm11,XMMWORD PTR[16+rdi] 1543 » movups» xmm11,XMMWORD[16+rdi]
1543 xorps xmm3,xmm11 1544 xorps xmm3,xmm11
1544 » movups» XMMWORD PTR[16+rsi],xmm3 1545 » movups» XMMWORD[16+rsi],xmm3
1545 » je» $L$ctr32_done 1546 » je» NEAR $L$ctr32_done
1546 1547
1547 » movups» xmm12,XMMWORD PTR[32+rdi] 1548 » movups» xmm12,XMMWORD[32+rdi]
1548 xorps xmm4,xmm12 1549 xorps xmm4,xmm12
1549 » movups» XMMWORD PTR[32+rsi],xmm4 1550 » movups» XMMWORD[32+rsi],xmm4
1550 » jmp» $L$ctr32_done 1551 » jmp» NEAR $L$ctr32_done
1551 1552
1552 ALIGN 16 1553 ALIGN 16
1553 $L$ctr32_one_shortcut:: 1554 $L$ctr32_one_shortcut:
1554 » movups» xmm2,XMMWORD PTR[r8] 1555 » movups» xmm2,XMMWORD[r8]
1555 » movups» xmm10,XMMWORD PTR[rdi] 1556 » movups» xmm10,XMMWORD[rdi]
1556 » mov» eax,DWORD PTR[240+rcx] 1557 » mov» eax,DWORD[240+rcx]
1557 » movups» xmm0,XMMWORD PTR[rcx] 1558 » movups» xmm0,XMMWORD[rcx]
1558 » movups» xmm1,XMMWORD PTR[16+rcx] 1559 » movups» xmm1,XMMWORD[16+rcx]
1559 » lea» rcx,QWORD PTR[32+rcx] 1560 » lea» rcx,[32+rcx]
1560 xorps xmm2,xmm0 1561 xorps xmm2,xmm0
1561 $L$oop_enc1_7:: 1562 $L$oop_enc1_7:
1562 DB» 102,15,56,220,209 1563 DB» 102,15,56,220,209
1563 » dec» eax 1564 » dec» eax
1564 » movups» xmm1,XMMWORD PTR[rcx] 1565 » movups» xmm1,XMMWORD[rcx]
1565 » lea» rcx,QWORD PTR[16+rcx] 1566 » lea» rcx,[16+rcx]
1566 » jnz» $L$oop_enc1_7 1567 » jnz» NEAR $L$oop_enc1_7
1567 DB 102,15,56,221,209 1568 DB 102,15,56,221,209
1568 xorps xmm2,xmm10 1569 xorps xmm2,xmm10
1569 » movups» XMMWORD PTR[rsi],xmm2 1570 » movups» XMMWORD[rsi],xmm2
1570 » jmp» $L$ctr32_done 1571 » jmp» NEAR $L$ctr32_done
1571 1572
1572 ALIGN 16 1573 ALIGN 16
1573 $L$ctr32_done:: 1574 $L$ctr32_done:
1574 » movaps» xmm6,XMMWORD PTR[((-160))+rbp] 1575 » movaps» xmm6,XMMWORD[((-160))+rbp]
1575 » movaps» xmm7,XMMWORD PTR[((-144))+rbp] 1576 » movaps» xmm7,XMMWORD[((-144))+rbp]
1576 » movaps» xmm8,XMMWORD PTR[((-128))+rbp] 1577 » movaps» xmm8,XMMWORD[((-128))+rbp]
1577 » movaps» xmm9,XMMWORD PTR[((-112))+rbp] 1578 » movaps» xmm9,XMMWORD[((-112))+rbp]
1578 » movaps» xmm10,XMMWORD PTR[((-96))+rbp] 1579 » movaps» xmm10,XMMWORD[((-96))+rbp]
1579 » movaps» xmm11,XMMWORD PTR[((-80))+rbp] 1580 » movaps» xmm11,XMMWORD[((-80))+rbp]
1580 » movaps» xmm12,XMMWORD PTR[((-64))+rbp] 1581 » movaps» xmm12,XMMWORD[((-64))+rbp]
1581 » movaps» xmm13,XMMWORD PTR[((-48))+rbp] 1582 » movaps» xmm13,XMMWORD[((-48))+rbp]
1582 » movaps» xmm14,XMMWORD PTR[((-32))+rbp] 1583 » movaps» xmm14,XMMWORD[((-32))+rbp]
1583 » movaps» xmm15,XMMWORD PTR[((-16))+rbp] 1584 » movaps» xmm15,XMMWORD[((-16))+rbp]
1584 » lea» rsp,QWORD PTR[rbp] 1585 » lea» rsp,[rbp]
1585 pop rbp 1586 pop rbp
1586 $L$ctr32_epilogue:: 1587 $L$ctr32_epilogue:
1587 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 1588 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
1588 » mov» rsi,QWORD PTR[16+rsp] 1589 » mov» rsi,QWORD[16+rsp]
1589 DB 0F3h,0C3h ;repret 1590 DB 0F3h,0C3h ;repret
1590 $L$SEH_end_aesni_ctr32_encrypt_blocks:: 1591 $L$SEH_end_aesni_ctr32_encrypt_blocks:
1591 aesni_ctr32_encrypt_blocks» ENDP 1592 global» aesni_xts_encrypt
1592 PUBLIC» aesni_xts_encrypt
1593 1593
1594 ALIGN 16 1594 ALIGN 16
1595 aesni_xts_encrypt» PROC PUBLIC 1595 aesni_xts_encrypt:
1596 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 1596 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
1597 » mov» QWORD PTR[16+rsp],rsi 1597 » mov» QWORD[16+rsp],rsi
1598 mov rax,rsp 1598 mov rax,rsp
1599 $L$SEH_begin_aesni_xts_encrypt:: 1599 $L$SEH_begin_aesni_xts_encrypt:
1600 mov rdi,rcx 1600 mov rdi,rcx
1601 mov rsi,rdx 1601 mov rsi,rdx
1602 mov rdx,r8 1602 mov rdx,r8
1603 mov rcx,r9 1603 mov rcx,r9
1604 » mov» r8,QWORD PTR[40+rsp] 1604 » mov» r8,QWORD[40+rsp]
1605 » mov» r9,QWORD PTR[48+rsp] 1605 » mov» r9,QWORD[48+rsp]
1606 1606
1607 1607
1608 » lea» rax,QWORD PTR[rsp] 1608 » lea» rax,[rsp]
1609 push rbp 1609 push rbp
1610 sub rsp,272 1610 sub rsp,272
1611 and rsp,-16 1611 and rsp,-16
1612 » movaps» XMMWORD PTR[(-168)+rax],xmm6 1612 » movaps» XMMWORD[(-168)+rax],xmm6
1613 » movaps» XMMWORD PTR[(-152)+rax],xmm7 1613 » movaps» XMMWORD[(-152)+rax],xmm7
1614 » movaps» XMMWORD PTR[(-136)+rax],xmm8 1614 » movaps» XMMWORD[(-136)+rax],xmm8
1615 » movaps» XMMWORD PTR[(-120)+rax],xmm9 1615 » movaps» XMMWORD[(-120)+rax],xmm9
1616 » movaps» XMMWORD PTR[(-104)+rax],xmm10 1616 » movaps» XMMWORD[(-104)+rax],xmm10
1617 » movaps» XMMWORD PTR[(-88)+rax],xmm11 1617 » movaps» XMMWORD[(-88)+rax],xmm11
1618 » movaps» XMMWORD PTR[(-72)+rax],xmm12 1618 » movaps» XMMWORD[(-72)+rax],xmm12
1619 » movaps» XMMWORD PTR[(-56)+rax],xmm13 1619 » movaps» XMMWORD[(-56)+rax],xmm13
1620 » movaps» XMMWORD PTR[(-40)+rax],xmm14 1620 » movaps» XMMWORD[(-40)+rax],xmm14
1621 » movaps» XMMWORD PTR[(-24)+rax],xmm15 1621 » movaps» XMMWORD[(-24)+rax],xmm15
1622 $L$xts_enc_body:: 1622 $L$xts_enc_body:
1623 » lea» rbp,QWORD PTR[((-8))+rax] 1623 » lea» rbp,[((-8))+rax]
1624 » movups» xmm2,XMMWORD PTR[r9] 1624 » movups» xmm2,XMMWORD[r9]
1625 » mov» eax,DWORD PTR[240+r8] 1625 » mov» eax,DWORD[240+r8]
1626 » mov» r10d,DWORD PTR[240+rcx] 1626 » mov» r10d,DWORD[240+rcx]
1627 » movups» xmm0,XMMWORD PTR[r8] 1627 » movups» xmm0,XMMWORD[r8]
1628 » movups» xmm1,XMMWORD PTR[16+r8] 1628 » movups» xmm1,XMMWORD[16+r8]
1629 » lea» r8,QWORD PTR[32+r8] 1629 » lea» r8,[32+r8]
1630 xorps xmm2,xmm0 1630 xorps xmm2,xmm0
1631 $L$oop_enc1_8:: 1631 $L$oop_enc1_8:
1632 DB» 102,15,56,220,209 1632 DB» 102,15,56,220,209
1633 » dec» eax 1633 » dec» eax
1634 » movups» xmm1,XMMWORD PTR[r8] 1634 » movups» xmm1,XMMWORD[r8]
1635 » lea» r8,QWORD PTR[16+r8] 1635 » lea» r8,[16+r8]
1636 » jnz» $L$oop_enc1_8 1636 » jnz» NEAR $L$oop_enc1_8
1637 DB» 102,15,56,221,209 1637 DB» 102,15,56,221,209
1638 » movups» xmm0,XMMWORD PTR[rcx] 1638 » movups» xmm0,XMMWORD[rcx]
1639 mov r11,rcx 1639 mov r11,rcx
1640 mov eax,r10d 1640 mov eax,r10d
1641 shl r10d,4 1641 shl r10d,4
1642 mov r9,rdx 1642 mov r9,rdx
1643 and rdx,-16 1643 and rdx,-16
1644 1644
1645 » movups» xmm1,XMMWORD PTR[16+r10*1+rcx] 1645 » movups» xmm1,XMMWORD[16+r10*1+rcx]
1646 1646
1647 » movdqa» xmm8,XMMWORD PTR[$L$xts_magic] 1647 » movdqa» xmm8,XMMWORD[$L$xts_magic]
1648 movdqa xmm15,xmm2 1648 movdqa xmm15,xmm2
1649 » pshufd» xmm9,xmm2,05fh 1649 » pshufd» xmm9,xmm2,0x5f
1650 pxor xmm1,xmm0 1650 pxor xmm1,xmm0
1651 movdqa xmm14,xmm9 1651 movdqa xmm14,xmm9
1652 paddd xmm9,xmm9 1652 paddd xmm9,xmm9
1653 movdqa xmm10,xmm15 1653 movdqa xmm10,xmm15
1654 psrad xmm14,31 1654 psrad xmm14,31
1655 paddq xmm15,xmm15 1655 paddq xmm15,xmm15
1656 pand xmm14,xmm8 1656 pand xmm14,xmm8
1657 pxor xmm10,xmm0 1657 pxor xmm10,xmm0
1658 pxor xmm15,xmm14 1658 pxor xmm15,xmm14
1659 movdqa xmm14,xmm9 1659 movdqa xmm14,xmm9
(...skipping 19 matching lines...) Expand all
1679 paddq xmm15,xmm15 1679 paddq xmm15,xmm15
1680 pand xmm14,xmm8 1680 pand xmm14,xmm8
1681 pxor xmm13,xmm0 1681 pxor xmm13,xmm0
1682 pxor xmm15,xmm14 1682 pxor xmm15,xmm14
1683 movdqa xmm14,xmm15 1683 movdqa xmm14,xmm15
1684 psrad xmm9,31 1684 psrad xmm9,31
1685 paddq xmm15,xmm15 1685 paddq xmm15,xmm15
1686 pand xmm9,xmm8 1686 pand xmm9,xmm8
1687 pxor xmm14,xmm0 1687 pxor xmm14,xmm0
1688 pxor xmm15,xmm9 1688 pxor xmm15,xmm9
1689 » movaps» XMMWORD PTR[96+rsp],xmm1 1689 » movaps» XMMWORD[96+rsp],xmm1
1690 1690
1691 sub rdx,16*6 1691 sub rdx,16*6
1692 » jc» $L$xts_enc_short 1692 » jc» NEAR $L$xts_enc_short
1693 1693
1694 mov eax,16+96 1694 mov eax,16+96
1695 » lea» rcx,QWORD PTR[32+r10*1+r11] 1695 » lea» rcx,[32+r10*1+r11]
1696 sub rax,r10 1696 sub rax,r10
1697 » movups» xmm1,XMMWORD PTR[16+r11] 1697 » movups» xmm1,XMMWORD[16+r11]
1698 mov r10,rax 1698 mov r10,rax
1699 » lea» r8,QWORD PTR[$L$xts_magic] 1699 » lea» r8,[$L$xts_magic]
1700 » jmp» $L$xts_enc_grandloop 1700 » jmp» NEAR $L$xts_enc_grandloop
1701 1701
1702 ALIGN 32 1702 ALIGN 32
1703 $L$xts_enc_grandloop:: 1703 $L$xts_enc_grandloop:
1704 » movdqu» xmm2,XMMWORD PTR[rdi] 1704 » movdqu» xmm2,XMMWORD[rdi]
1705 movdqa xmm8,xmm0 1705 movdqa xmm8,xmm0
1706 » movdqu» xmm3,XMMWORD PTR[16+rdi] 1706 » movdqu» xmm3,XMMWORD[16+rdi]
1707 pxor xmm2,xmm10 1707 pxor xmm2,xmm10
1708 » movdqu» xmm4,XMMWORD PTR[32+rdi] 1708 » movdqu» xmm4,XMMWORD[32+rdi]
1709 pxor xmm3,xmm11 1709 pxor xmm3,xmm11
1710 DB 102,15,56,220,209 1710 DB 102,15,56,220,209
1711 » movdqu» xmm5,XMMWORD PTR[48+rdi] 1711 » movdqu» xmm5,XMMWORD[48+rdi]
1712 pxor xmm4,xmm12 1712 pxor xmm4,xmm12
1713 DB 102,15,56,220,217 1713 DB 102,15,56,220,217
1714 » movdqu» xmm6,XMMWORD PTR[64+rdi] 1714 » movdqu» xmm6,XMMWORD[64+rdi]
1715 pxor xmm5,xmm13 1715 pxor xmm5,xmm13
1716 DB 102,15,56,220,225 1716 DB 102,15,56,220,225
1717 » movdqu» xmm7,XMMWORD PTR[80+rdi] 1717 » movdqu» xmm7,XMMWORD[80+rdi]
1718 pxor xmm8,xmm15 1718 pxor xmm8,xmm15
1719 » movdqa» xmm9,XMMWORD PTR[96+rsp] 1719 » movdqa» xmm9,XMMWORD[96+rsp]
1720 pxor xmm6,xmm14 1720 pxor xmm6,xmm14
1721 DB 102,15,56,220,233 1721 DB 102,15,56,220,233
1722 » movups» xmm0,XMMWORD PTR[32+r11] 1722 » movups» xmm0,XMMWORD[32+r11]
1723 » lea» rdi,QWORD PTR[96+rdi] 1723 » lea» rdi,[96+rdi]
1724 pxor xmm7,xmm8 1724 pxor xmm7,xmm8
1725 1725
1726 pxor xmm10,xmm9 1726 pxor xmm10,xmm9
1727 DB 102,15,56,220,241 1727 DB 102,15,56,220,241
1728 pxor xmm11,xmm9 1728 pxor xmm11,xmm9
1729 » movdqa» XMMWORD PTR[rsp],xmm10 1729 » movdqa» XMMWORD[rsp],xmm10
1730 DB 102,15,56,220,249 1730 DB 102,15,56,220,249
1731 » movups» xmm1,XMMWORD PTR[48+r11] 1731 » movups» xmm1,XMMWORD[48+r11]
1732 pxor xmm12,xmm9 1732 pxor xmm12,xmm9
1733 1733
1734 DB 102,15,56,220,208 1734 DB 102,15,56,220,208
1735 pxor xmm13,xmm9 1735 pxor xmm13,xmm9
1736 » movdqa» XMMWORD PTR[16+rsp],xmm11 1736 » movdqa» XMMWORD[16+rsp],xmm11
1737 DB 102,15,56,220,216 1737 DB 102,15,56,220,216
1738 pxor xmm14,xmm9 1738 pxor xmm14,xmm9
1739 » movdqa» XMMWORD PTR[32+rsp],xmm12 1739 » movdqa» XMMWORD[32+rsp],xmm12
1740 DB 102,15,56,220,224 1740 DB 102,15,56,220,224
1741 DB 102,15,56,220,232 1741 DB 102,15,56,220,232
1742 pxor xmm8,xmm9 1742 pxor xmm8,xmm9
1743 » movdqa» XMMWORD PTR[64+rsp],xmm14 1743 » movdqa» XMMWORD[64+rsp],xmm14
1744 DB 102,15,56,220,240 1744 DB 102,15,56,220,240
1745 DB 102,15,56,220,248 1745 DB 102,15,56,220,248
1746 » movups» xmm0,XMMWORD PTR[64+r11] 1746 » movups» xmm0,XMMWORD[64+r11]
1747 » movdqa» XMMWORD PTR[80+rsp],xmm8 1747 » movdqa» XMMWORD[80+rsp],xmm8
1748 » pshufd» xmm9,xmm15,05fh 1748 » pshufd» xmm9,xmm15,0x5f
1749 » jmp» $L$xts_enc_loop6 1749 » jmp» NEAR $L$xts_enc_loop6
1750 ALIGN 32 1750 ALIGN 32
1751 $L$xts_enc_loop6:: 1751 $L$xts_enc_loop6:
1752 DB 102,15,56,220,209 1752 DB 102,15,56,220,209
1753 DB 102,15,56,220,217 1753 DB 102,15,56,220,217
1754 DB 102,15,56,220,225 1754 DB 102,15,56,220,225
1755 DB 102,15,56,220,233 1755 DB 102,15,56,220,233
1756 DB 102,15,56,220,241 1756 DB 102,15,56,220,241
1757 DB 102,15,56,220,249 1757 DB 102,15,56,220,249
1758 » movups» xmm1,XMMWORD PTR[((-64))+rax*1+rcx] 1758 » movups» xmm1,XMMWORD[((-64))+rax*1+rcx]
1759 add rax,32 1759 add rax,32
1760 1760
1761 DB 102,15,56,220,208 1761 DB 102,15,56,220,208
1762 DB 102,15,56,220,216 1762 DB 102,15,56,220,216
1763 DB 102,15,56,220,224 1763 DB 102,15,56,220,224
1764 DB 102,15,56,220,232 1764 DB 102,15,56,220,232
1765 DB 102,15,56,220,240 1765 DB 102,15,56,220,240
1766 DB 102,15,56,220,248 1766 DB 102,15,56,220,248
1767 » movups» xmm0,XMMWORD PTR[((-80))+rax*1+rcx] 1767 » movups» xmm0,XMMWORD[((-80))+rax*1+rcx]
1768 » jnz» $L$xts_enc_loop6 1768 » jnz» NEAR $L$xts_enc_loop6
1769 1769
1770 » movdqa» xmm8,XMMWORD PTR[r8] 1770 » movdqa» xmm8,XMMWORD[r8]
1771 movdqa xmm14,xmm9 1771 movdqa xmm14,xmm9
1772 paddd xmm9,xmm9 1772 paddd xmm9,xmm9
1773 DB 102,15,56,220,209 1773 DB 102,15,56,220,209
1774 paddq xmm15,xmm15 1774 paddq xmm15,xmm15
1775 psrad xmm14,31 1775 psrad xmm14,31
1776 DB 102,15,56,220,217 1776 DB 102,15,56,220,217
1777 pand xmm14,xmm8 1777 pand xmm14,xmm8
1778 » movups» xmm10,XMMWORD PTR[r11] 1778 » movups» xmm10,XMMWORD[r11]
1779 DB 102,15,56,220,225 1779 DB 102,15,56,220,225
1780 DB 102,15,56,220,233 1780 DB 102,15,56,220,233
1781 DB 102,15,56,220,241 1781 DB 102,15,56,220,241
1782 pxor xmm15,xmm14 1782 pxor xmm15,xmm14
1783 movaps xmm11,xmm10 1783 movaps xmm11,xmm10
1784 DB 102,15,56,220,249 1784 DB 102,15,56,220,249
1785 » movups» xmm1,XMMWORD PTR[((-64))+rcx] 1785 » movups» xmm1,XMMWORD[((-64))+rcx]
1786 1786
1787 movdqa xmm14,xmm9 1787 movdqa xmm14,xmm9
1788 DB 102,15,56,220,208 1788 DB 102,15,56,220,208
1789 paddd xmm9,xmm9 1789 paddd xmm9,xmm9
1790 pxor xmm10,xmm15 1790 pxor xmm10,xmm15
1791 DB 102,15,56,220,216 1791 DB 102,15,56,220,216
1792 psrad xmm14,31 1792 psrad xmm14,31
1793 paddq xmm15,xmm15 1793 paddq xmm15,xmm15
1794 DB 102,15,56,220,224 1794 DB 102,15,56,220,224
1795 DB 102,15,56,220,232 1795 DB 102,15,56,220,232
1796 pand xmm14,xmm8 1796 pand xmm14,xmm8
1797 movaps xmm12,xmm11 1797 movaps xmm12,xmm11
1798 DB 102,15,56,220,240 1798 DB 102,15,56,220,240
1799 pxor xmm15,xmm14 1799 pxor xmm15,xmm14
1800 movdqa xmm14,xmm9 1800 movdqa xmm14,xmm9
1801 DB 102,15,56,220,248 1801 DB 102,15,56,220,248
1802 » movups» xmm0,XMMWORD PTR[((-48))+rcx] 1802 » movups» xmm0,XMMWORD[((-48))+rcx]
1803 1803
1804 paddd xmm9,xmm9 1804 paddd xmm9,xmm9
1805 DB 102,15,56,220,209 1805 DB 102,15,56,220,209
1806 pxor xmm11,xmm15 1806 pxor xmm11,xmm15
1807 psrad xmm14,31 1807 psrad xmm14,31
1808 DB 102,15,56,220,217 1808 DB 102,15,56,220,217
1809 paddq xmm15,xmm15 1809 paddq xmm15,xmm15
1810 pand xmm14,xmm8 1810 pand xmm14,xmm8
1811 DB 102,15,56,220,225 1811 DB 102,15,56,220,225
1812 DB 102,15,56,220,233 1812 DB 102,15,56,220,233
1813 » movdqa» XMMWORD PTR[48+rsp],xmm13 1813 » movdqa» XMMWORD[48+rsp],xmm13
1814 pxor xmm15,xmm14 1814 pxor xmm15,xmm14
1815 DB 102,15,56,220,241 1815 DB 102,15,56,220,241
1816 movaps xmm13,xmm12 1816 movaps xmm13,xmm12
1817 movdqa xmm14,xmm9 1817 movdqa xmm14,xmm9
1818 DB 102,15,56,220,249 1818 DB 102,15,56,220,249
1819 » movups» xmm1,XMMWORD PTR[((-32))+rcx] 1819 » movups» xmm1,XMMWORD[((-32))+rcx]
1820 1820
1821 paddd xmm9,xmm9 1821 paddd xmm9,xmm9
1822 DB 102,15,56,220,208 1822 DB 102,15,56,220,208
1823 pxor xmm12,xmm15 1823 pxor xmm12,xmm15
1824 psrad xmm14,31 1824 psrad xmm14,31
1825 DB 102,15,56,220,216 1825 DB 102,15,56,220,216
1826 paddq xmm15,xmm15 1826 paddq xmm15,xmm15
1827 pand xmm14,xmm8 1827 pand xmm14,xmm8
1828 DB 102,15,56,220,224 1828 DB 102,15,56,220,224
1829 DB 102,15,56,220,232 1829 DB 102,15,56,220,232
1830 DB 102,15,56,220,240 1830 DB 102,15,56,220,240
1831 pxor xmm15,xmm14 1831 pxor xmm15,xmm14
1832 movaps xmm14,xmm13 1832 movaps xmm14,xmm13
1833 DB 102,15,56,220,248 1833 DB 102,15,56,220,248
1834 1834
1835 movdqa xmm0,xmm9 1835 movdqa xmm0,xmm9
1836 paddd xmm9,xmm9 1836 paddd xmm9,xmm9
1837 DB 102,15,56,220,209 1837 DB 102,15,56,220,209
1838 pxor xmm13,xmm15 1838 pxor xmm13,xmm15
1839 psrad xmm0,31 1839 psrad xmm0,31
1840 DB 102,15,56,220,217 1840 DB 102,15,56,220,217
1841 paddq xmm15,xmm15 1841 paddq xmm15,xmm15
1842 pand xmm0,xmm8 1842 pand xmm0,xmm8
1843 DB 102,15,56,220,225 1843 DB 102,15,56,220,225
1844 DB 102,15,56,220,233 1844 DB 102,15,56,220,233
1845 pxor xmm15,xmm0 1845 pxor xmm15,xmm0
1846 » movups» xmm0,XMMWORD PTR[r11] 1846 » movups» xmm0,XMMWORD[r11]
1847 DB 102,15,56,220,241 1847 DB 102,15,56,220,241
1848 DB 102,15,56,220,249 1848 DB 102,15,56,220,249
1849 » movups» xmm1,XMMWORD PTR[16+r11] 1849 » movups» xmm1,XMMWORD[16+r11]
1850 1850
1851 pxor xmm14,xmm15 1851 pxor xmm14,xmm15
1852 DB 102,15,56,221,84,36,0 1852 DB 102,15,56,221,84,36,0
1853 psrad xmm9,31 1853 psrad xmm9,31
1854 paddq xmm15,xmm15 1854 paddq xmm15,xmm15
1855 DB 102,15,56,221,92,36,16 1855 DB 102,15,56,221,92,36,16
1856 DB 102,15,56,221,100,36,32 1856 DB 102,15,56,221,100,36,32
1857 pand xmm9,xmm8 1857 pand xmm9,xmm8
1858 mov rax,r10 1858 mov rax,r10
1859 DB 102,15,56,221,108,36,48 1859 DB 102,15,56,221,108,36,48
1860 DB 102,15,56,221,116,36,64 1860 DB 102,15,56,221,116,36,64
1861 DB 102,15,56,221,124,36,80 1861 DB 102,15,56,221,124,36,80
1862 pxor xmm15,xmm9 1862 pxor xmm15,xmm9
1863 1863
1864 » lea» rsi,QWORD PTR[96+rsi] 1864 » lea» rsi,[96+rsi]
1865 » movups» XMMWORD PTR[(-96)+rsi],xmm2 1865 » movups» XMMWORD[(-96)+rsi],xmm2
1866 » movups» XMMWORD PTR[(-80)+rsi],xmm3 1866 » movups» XMMWORD[(-80)+rsi],xmm3
1867 » movups» XMMWORD PTR[(-64)+rsi],xmm4 1867 » movups» XMMWORD[(-64)+rsi],xmm4
1868 » movups» XMMWORD PTR[(-48)+rsi],xmm5 1868 » movups» XMMWORD[(-48)+rsi],xmm5
1869 » movups» XMMWORD PTR[(-32)+rsi],xmm6 1869 » movups» XMMWORD[(-32)+rsi],xmm6
1870 » movups» XMMWORD PTR[(-16)+rsi],xmm7 1870 » movups» XMMWORD[(-16)+rsi],xmm7
1871 sub rdx,16*6 1871 sub rdx,16*6
1872 » jnc» $L$xts_enc_grandloop 1872 » jnc» NEAR $L$xts_enc_grandloop
1873 1873
1874 mov eax,16+96 1874 mov eax,16+96
1875 sub eax,r10d 1875 sub eax,r10d
1876 mov rcx,r11 1876 mov rcx,r11
1877 shr eax,4 1877 shr eax,4
1878 1878
1879 $L$xts_enc_short:: 1879 $L$xts_enc_short:
1880 mov r10d,eax 1880 mov r10d,eax
1881 pxor xmm10,xmm0 1881 pxor xmm10,xmm0
1882 add rdx,16*6 1882 add rdx,16*6
1883 » jz» $L$xts_enc_done 1883 » jz» NEAR $L$xts_enc_done
1884 1884
1885 pxor xmm11,xmm0 1885 pxor xmm11,xmm0
1886 » cmp» rdx,020h 1886 » cmp» rdx,0x20
1887 » jb» $L$xts_enc_one 1887 » jb» NEAR $L$xts_enc_one
1888 pxor xmm12,xmm0 1888 pxor xmm12,xmm0
1889 » je» $L$xts_enc_two 1889 » je» NEAR $L$xts_enc_two
1890 1890
1891 pxor xmm13,xmm0 1891 pxor xmm13,xmm0
1892 » cmp» rdx,040h 1892 » cmp» rdx,0x40
1893 » jb» $L$xts_enc_three 1893 » jb» NEAR $L$xts_enc_three
1894 pxor xmm14,xmm0 1894 pxor xmm14,xmm0
1895 » je» $L$xts_enc_four 1895 » je» NEAR $L$xts_enc_four
1896 1896
1897 » movdqu» xmm2,XMMWORD PTR[rdi] 1897 » movdqu» xmm2,XMMWORD[rdi]
1898 » movdqu» xmm3,XMMWORD PTR[16+rdi] 1898 » movdqu» xmm3,XMMWORD[16+rdi]
1899 » movdqu» xmm4,XMMWORD PTR[32+rdi] 1899 » movdqu» xmm4,XMMWORD[32+rdi]
1900 pxor xmm2,xmm10 1900 pxor xmm2,xmm10
1901 » movdqu» xmm5,XMMWORD PTR[48+rdi] 1901 » movdqu» xmm5,XMMWORD[48+rdi]
1902 pxor xmm3,xmm11 1902 pxor xmm3,xmm11
1903 » movdqu» xmm6,XMMWORD PTR[64+rdi] 1903 » movdqu» xmm6,XMMWORD[64+rdi]
1904 » lea» rdi,QWORD PTR[80+rdi] 1904 » lea» rdi,[80+rdi]
1905 pxor xmm4,xmm12 1905 pxor xmm4,xmm12
1906 pxor xmm5,xmm13 1906 pxor xmm5,xmm13
1907 pxor xmm6,xmm14 1907 pxor xmm6,xmm14
1908 1908
1909 call _aesni_encrypt6 1909 call _aesni_encrypt6
1910 1910
1911 xorps xmm2,xmm10 1911 xorps xmm2,xmm10
1912 movdqa xmm10,xmm15 1912 movdqa xmm10,xmm15
1913 xorps xmm3,xmm11 1913 xorps xmm3,xmm11
1914 xorps xmm4,xmm12 1914 xorps xmm4,xmm12
1915 » movdqu» XMMWORD PTR[rsi],xmm2 1915 » movdqu» XMMWORD[rsi],xmm2
1916 xorps xmm5,xmm13 1916 xorps xmm5,xmm13
1917 » movdqu» XMMWORD PTR[16+rsi],xmm3 1917 » movdqu» XMMWORD[16+rsi],xmm3
1918 xorps xmm6,xmm14 1918 xorps xmm6,xmm14
1919 » movdqu» XMMWORD PTR[32+rsi],xmm4 1919 » movdqu» XMMWORD[32+rsi],xmm4
1920 » movdqu» XMMWORD PTR[48+rsi],xmm5 1920 » movdqu» XMMWORD[48+rsi],xmm5
1921 » movdqu» XMMWORD PTR[64+rsi],xmm6 1921 » movdqu» XMMWORD[64+rsi],xmm6
1922 » lea» rsi,QWORD PTR[80+rsi] 1922 » lea» rsi,[80+rsi]
1923 » jmp» $L$xts_enc_done 1923 » jmp» NEAR $L$xts_enc_done
1924 1924
1925 ALIGN 16 1925 ALIGN 16
1926 $L$xts_enc_one:: 1926 $L$xts_enc_one:
1927 » movups» xmm2,XMMWORD PTR[rdi] 1927 » movups» xmm2,XMMWORD[rdi]
1928 » lea» rdi,QWORD PTR[16+rdi] 1928 » lea» rdi,[16+rdi]
1929 xorps xmm2,xmm10 1929 xorps xmm2,xmm10
1930 » movups» xmm0,XMMWORD PTR[rcx] 1930 » movups» xmm0,XMMWORD[rcx]
1931 » movups» xmm1,XMMWORD PTR[16+rcx] 1931 » movups» xmm1,XMMWORD[16+rcx]
1932 » lea» rcx,QWORD PTR[32+rcx] 1932 » lea» rcx,[32+rcx]
1933 xorps xmm2,xmm0 1933 xorps xmm2,xmm0
1934 $L$oop_enc1_9:: 1934 $L$oop_enc1_9:
1935 DB 102,15,56,220,209 1935 DB 102,15,56,220,209
1936 dec eax 1936 dec eax
1937 » movups» xmm1,XMMWORD PTR[rcx] 1937 » movups» xmm1,XMMWORD[rcx]
1938 » lea» rcx,QWORD PTR[16+rcx] 1938 » lea» rcx,[16+rcx]
1939 » jnz» $L$oop_enc1_9 1939 » jnz» NEAR $L$oop_enc1_9
1940 DB 102,15,56,221,209 1940 DB 102,15,56,221,209
1941 xorps xmm2,xmm10 1941 xorps xmm2,xmm10
1942 movdqa xmm10,xmm11 1942 movdqa xmm10,xmm11
1943 » movups» XMMWORD PTR[rsi],xmm2 1943 » movups» XMMWORD[rsi],xmm2
1944 » lea» rsi,QWORD PTR[16+rsi] 1944 » lea» rsi,[16+rsi]
1945 » jmp» $L$xts_enc_done 1945 » jmp» NEAR $L$xts_enc_done
1946 1946
1947 ALIGN 16 1947 ALIGN 16
1948 $L$xts_enc_two:: 1948 $L$xts_enc_two:
1949 » movups» xmm2,XMMWORD PTR[rdi] 1949 » movups» xmm2,XMMWORD[rdi]
1950 » movups» xmm3,XMMWORD PTR[16+rdi] 1950 » movups» xmm3,XMMWORD[16+rdi]
1951 » lea» rdi,QWORD PTR[32+rdi] 1951 » lea» rdi,[32+rdi]
1952 xorps xmm2,xmm10 1952 xorps xmm2,xmm10
1953 xorps xmm3,xmm11 1953 xorps xmm3,xmm11
1954 1954
1955 call _aesni_encrypt2 1955 call _aesni_encrypt2
1956 1956
1957 xorps xmm2,xmm10 1957 xorps xmm2,xmm10
1958 movdqa xmm10,xmm12 1958 movdqa xmm10,xmm12
1959 xorps xmm3,xmm11 1959 xorps xmm3,xmm11
1960 » movups» XMMWORD PTR[rsi],xmm2 1960 » movups» XMMWORD[rsi],xmm2
1961 » movups» XMMWORD PTR[16+rsi],xmm3 1961 » movups» XMMWORD[16+rsi],xmm3
1962 » lea» rsi,QWORD PTR[32+rsi] 1962 » lea» rsi,[32+rsi]
1963 » jmp» $L$xts_enc_done 1963 » jmp» NEAR $L$xts_enc_done
1964 1964
1965 ALIGN 16 1965 ALIGN 16
1966 $L$xts_enc_three:: 1966 $L$xts_enc_three:
1967 » movups» xmm2,XMMWORD PTR[rdi] 1967 » movups» xmm2,XMMWORD[rdi]
1968 » movups» xmm3,XMMWORD PTR[16+rdi] 1968 » movups» xmm3,XMMWORD[16+rdi]
1969 » movups» xmm4,XMMWORD PTR[32+rdi] 1969 » movups» xmm4,XMMWORD[32+rdi]
1970 » lea» rdi,QWORD PTR[48+rdi] 1970 » lea» rdi,[48+rdi]
1971 xorps xmm2,xmm10 1971 xorps xmm2,xmm10
1972 xorps xmm3,xmm11 1972 xorps xmm3,xmm11
1973 xorps xmm4,xmm12 1973 xorps xmm4,xmm12
1974 1974
1975 call _aesni_encrypt3 1975 call _aesni_encrypt3
1976 1976
1977 xorps xmm2,xmm10 1977 xorps xmm2,xmm10
1978 movdqa xmm10,xmm13 1978 movdqa xmm10,xmm13
1979 xorps xmm3,xmm11 1979 xorps xmm3,xmm11
1980 xorps xmm4,xmm12 1980 xorps xmm4,xmm12
1981 » movups» XMMWORD PTR[rsi],xmm2 1981 » movups» XMMWORD[rsi],xmm2
1982 » movups» XMMWORD PTR[16+rsi],xmm3 1982 » movups» XMMWORD[16+rsi],xmm3
1983 » movups» XMMWORD PTR[32+rsi],xmm4 1983 » movups» XMMWORD[32+rsi],xmm4
1984 » lea» rsi,QWORD PTR[48+rsi] 1984 » lea» rsi,[48+rsi]
1985 » jmp» $L$xts_enc_done 1985 » jmp» NEAR $L$xts_enc_done
1986 1986
1987 ALIGN 16 1987 ALIGN 16
1988 $L$xts_enc_four:: 1988 $L$xts_enc_four:
1989 » movups» xmm2,XMMWORD PTR[rdi] 1989 » movups» xmm2,XMMWORD[rdi]
1990 » movups» xmm3,XMMWORD PTR[16+rdi] 1990 » movups» xmm3,XMMWORD[16+rdi]
1991 » movups» xmm4,XMMWORD PTR[32+rdi] 1991 » movups» xmm4,XMMWORD[32+rdi]
1992 xorps xmm2,xmm10 1992 xorps xmm2,xmm10
1993 » movups» xmm5,XMMWORD PTR[48+rdi] 1993 » movups» xmm5,XMMWORD[48+rdi]
1994 » lea» rdi,QWORD PTR[64+rdi] 1994 » lea» rdi,[64+rdi]
1995 xorps xmm3,xmm11 1995 xorps xmm3,xmm11
1996 xorps xmm4,xmm12 1996 xorps xmm4,xmm12
1997 xorps xmm5,xmm13 1997 xorps xmm5,xmm13
1998 1998
1999 call _aesni_encrypt4 1999 call _aesni_encrypt4
2000 2000
2001 pxor xmm2,xmm10 2001 pxor xmm2,xmm10
2002 movdqa xmm10,xmm14 2002 movdqa xmm10,xmm14
2003 pxor xmm3,xmm11 2003 pxor xmm3,xmm11
2004 pxor xmm4,xmm12 2004 pxor xmm4,xmm12
2005 » movdqu» XMMWORD PTR[rsi],xmm2 2005 » movdqu» XMMWORD[rsi],xmm2
2006 pxor xmm5,xmm13 2006 pxor xmm5,xmm13
2007 » movdqu» XMMWORD PTR[16+rsi],xmm3 2007 » movdqu» XMMWORD[16+rsi],xmm3
2008 » movdqu» XMMWORD PTR[32+rsi],xmm4 2008 » movdqu» XMMWORD[32+rsi],xmm4
2009 » movdqu» XMMWORD PTR[48+rsi],xmm5 2009 » movdqu» XMMWORD[48+rsi],xmm5
2010 » lea» rsi,QWORD PTR[64+rsi] 2010 » lea» rsi,[64+rsi]
2011 » jmp» $L$xts_enc_done 2011 » jmp» NEAR $L$xts_enc_done
2012 2012
2013 ALIGN 16 2013 ALIGN 16
2014 $L$xts_enc_done:: 2014 $L$xts_enc_done:
2015 and r9,15 2015 and r9,15
2016 » jz» $L$xts_enc_ret 2016 » jz» NEAR $L$xts_enc_ret
2017 mov rdx,r9 2017 mov rdx,r9
2018 2018
2019 $L$xts_enc_steal:: 2019 $L$xts_enc_steal:
2020 » movzx» eax,BYTE PTR[rdi] 2020 » movzx» eax,BYTE[rdi]
2021 » movzx» ecx,BYTE PTR[((-16))+rsi] 2021 » movzx» ecx,BYTE[((-16))+rsi]
2022 » lea» rdi,QWORD PTR[1+rdi] 2022 » lea» rdi,[1+rdi]
2023 » mov» BYTE PTR[((-16))+rsi],al 2023 » mov» BYTE[((-16))+rsi],al
2024 » mov» BYTE PTR[rsi],cl 2024 » mov» BYTE[rsi],cl
2025 » lea» rsi,QWORD PTR[1+rsi] 2025 » lea» rsi,[1+rsi]
2026 sub rdx,1 2026 sub rdx,1
2027 » jnz» $L$xts_enc_steal 2027 » jnz» NEAR $L$xts_enc_steal
2028 2028
2029 sub rsi,r9 2029 sub rsi,r9
2030 mov rcx,r11 2030 mov rcx,r11
2031 mov eax,r10d 2031 mov eax,r10d
2032 2032
2033 » movups» xmm2,XMMWORD PTR[((-16))+rsi] 2033 » movups» xmm2,XMMWORD[((-16))+rsi]
2034 xorps xmm2,xmm10 2034 xorps xmm2,xmm10
2035 » movups» xmm0,XMMWORD PTR[rcx] 2035 » movups» xmm0,XMMWORD[rcx]
2036 » movups» xmm1,XMMWORD PTR[16+rcx] 2036 » movups» xmm1,XMMWORD[16+rcx]
2037 » lea» rcx,QWORD PTR[32+rcx] 2037 » lea» rcx,[32+rcx]
2038 xorps xmm2,xmm0 2038 xorps xmm2,xmm0
2039 $L$oop_enc1_10:: 2039 $L$oop_enc1_10:
2040 DB 102,15,56,220,209 2040 DB 102,15,56,220,209
2041 dec eax 2041 dec eax
2042 » movups» xmm1,XMMWORD PTR[rcx] 2042 » movups» xmm1,XMMWORD[rcx]
2043 » lea» rcx,QWORD PTR[16+rcx] 2043 » lea» rcx,[16+rcx]
2044 » jnz» $L$oop_enc1_10 2044 » jnz» NEAR $L$oop_enc1_10
2045 DB 102,15,56,221,209 2045 DB 102,15,56,221,209
2046 xorps xmm2,xmm10 2046 xorps xmm2,xmm10
2047 » movups» XMMWORD PTR[(-16)+rsi],xmm2 2047 » movups» XMMWORD[(-16)+rsi],xmm2
2048 2048
2049 $L$xts_enc_ret:: 2049 $L$xts_enc_ret:
2050 » movaps» xmm6,XMMWORD PTR[((-160))+rbp] 2050 » movaps» xmm6,XMMWORD[((-160))+rbp]
2051 » movaps» xmm7,XMMWORD PTR[((-144))+rbp] 2051 » movaps» xmm7,XMMWORD[((-144))+rbp]
2052 » movaps» xmm8,XMMWORD PTR[((-128))+rbp] 2052 » movaps» xmm8,XMMWORD[((-128))+rbp]
2053 » movaps» xmm9,XMMWORD PTR[((-112))+rbp] 2053 » movaps» xmm9,XMMWORD[((-112))+rbp]
2054 » movaps» xmm10,XMMWORD PTR[((-96))+rbp] 2054 » movaps» xmm10,XMMWORD[((-96))+rbp]
2055 » movaps» xmm11,XMMWORD PTR[((-80))+rbp] 2055 » movaps» xmm11,XMMWORD[((-80))+rbp]
2056 » movaps» xmm12,XMMWORD PTR[((-64))+rbp] 2056 » movaps» xmm12,XMMWORD[((-64))+rbp]
2057 » movaps» xmm13,XMMWORD PTR[((-48))+rbp] 2057 » movaps» xmm13,XMMWORD[((-48))+rbp]
2058 » movaps» xmm14,XMMWORD PTR[((-32))+rbp] 2058 » movaps» xmm14,XMMWORD[((-32))+rbp]
2059 » movaps» xmm15,XMMWORD PTR[((-16))+rbp] 2059 » movaps» xmm15,XMMWORD[((-16))+rbp]
2060 » lea» rsp,QWORD PTR[rbp] 2060 » lea» rsp,[rbp]
2061 pop rbp 2061 pop rbp
2062 $L$xts_enc_epilogue:: 2062 $L$xts_enc_epilogue:
2063 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 2063 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
2064 » mov» rsi,QWORD PTR[16+rsp] 2064 » mov» rsi,QWORD[16+rsp]
2065 DB 0F3h,0C3h ;repret 2065 DB 0F3h,0C3h ;repret
2066 $L$SEH_end_aesni_xts_encrypt:: 2066 $L$SEH_end_aesni_xts_encrypt:
2067 aesni_xts_encrypt» ENDP 2067 global» aesni_xts_decrypt
2068 PUBLIC» aesni_xts_decrypt
2069 2068
2070 ALIGN 16 2069 ALIGN 16
2071 aesni_xts_decrypt» PROC PUBLIC 2070 aesni_xts_decrypt:
2072 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 2071 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
2073 » mov» QWORD PTR[16+rsp],rsi 2072 » mov» QWORD[16+rsp],rsi
2074 mov rax,rsp 2073 mov rax,rsp
2075 $L$SEH_begin_aesni_xts_decrypt:: 2074 $L$SEH_begin_aesni_xts_decrypt:
2076 mov rdi,rcx 2075 mov rdi,rcx
2077 mov rsi,rdx 2076 mov rsi,rdx
2078 mov rdx,r8 2077 mov rdx,r8
2079 mov rcx,r9 2078 mov rcx,r9
2080 » mov» r8,QWORD PTR[40+rsp] 2079 » mov» r8,QWORD[40+rsp]
2081 » mov» r9,QWORD PTR[48+rsp] 2080 » mov» r9,QWORD[48+rsp]
2082 2081
2083 2082
2084 » lea» rax,QWORD PTR[rsp] 2083 » lea» rax,[rsp]
2085 push rbp 2084 push rbp
2086 sub rsp,272 2085 sub rsp,272
2087 and rsp,-16 2086 and rsp,-16
2088 » movaps» XMMWORD PTR[(-168)+rax],xmm6 2087 » movaps» XMMWORD[(-168)+rax],xmm6
2089 » movaps» XMMWORD PTR[(-152)+rax],xmm7 2088 » movaps» XMMWORD[(-152)+rax],xmm7
2090 » movaps» XMMWORD PTR[(-136)+rax],xmm8 2089 » movaps» XMMWORD[(-136)+rax],xmm8
2091 » movaps» XMMWORD PTR[(-120)+rax],xmm9 2090 » movaps» XMMWORD[(-120)+rax],xmm9
2092 » movaps» XMMWORD PTR[(-104)+rax],xmm10 2091 » movaps» XMMWORD[(-104)+rax],xmm10
2093 » movaps» XMMWORD PTR[(-88)+rax],xmm11 2092 » movaps» XMMWORD[(-88)+rax],xmm11
2094 » movaps» XMMWORD PTR[(-72)+rax],xmm12 2093 » movaps» XMMWORD[(-72)+rax],xmm12
2095 » movaps» XMMWORD PTR[(-56)+rax],xmm13 2094 » movaps» XMMWORD[(-56)+rax],xmm13
2096 » movaps» XMMWORD PTR[(-40)+rax],xmm14 2095 » movaps» XMMWORD[(-40)+rax],xmm14
2097 » movaps» XMMWORD PTR[(-24)+rax],xmm15 2096 » movaps» XMMWORD[(-24)+rax],xmm15
2098 $L$xts_dec_body:: 2097 $L$xts_dec_body:
2099 » lea» rbp,QWORD PTR[((-8))+rax] 2098 » lea» rbp,[((-8))+rax]
2100 » movups» xmm2,XMMWORD PTR[r9] 2099 » movups» xmm2,XMMWORD[r9]
2101 » mov» eax,DWORD PTR[240+r8] 2100 » mov» eax,DWORD[240+r8]
2102 » mov» r10d,DWORD PTR[240+rcx] 2101 » mov» r10d,DWORD[240+rcx]
2103 » movups» xmm0,XMMWORD PTR[r8] 2102 » movups» xmm0,XMMWORD[r8]
2104 » movups» xmm1,XMMWORD PTR[16+r8] 2103 » movups» xmm1,XMMWORD[16+r8]
2105 » lea» r8,QWORD PTR[32+r8] 2104 » lea» r8,[32+r8]
2106 xorps xmm2,xmm0 2105 xorps xmm2,xmm0
2107 $L$oop_enc1_11:: 2106 $L$oop_enc1_11:
2108 DB 102,15,56,220,209 2107 DB 102,15,56,220,209
2109 dec eax 2108 dec eax
2110 » movups» xmm1,XMMWORD PTR[r8] 2109 » movups» xmm1,XMMWORD[r8]
2111 » lea» r8,QWORD PTR[16+r8] 2110 » lea» r8,[16+r8]
2112 » jnz» $L$oop_enc1_11 2111 » jnz» NEAR $L$oop_enc1_11
2113 DB 102,15,56,221,209 2112 DB 102,15,56,221,209
2114 xor eax,eax 2113 xor eax,eax
2115 test rdx,15 2114 test rdx,15
2116 setnz al 2115 setnz al
2117 shl rax,4 2116 shl rax,4
2118 sub rdx,rax 2117 sub rdx,rax
2119 2118
2120 » movups» xmm0,XMMWORD PTR[rcx] 2119 » movups» xmm0,XMMWORD[rcx]
2121 mov r11,rcx 2120 mov r11,rcx
2122 mov eax,r10d 2121 mov eax,r10d
2123 shl r10d,4 2122 shl r10d,4
2124 mov r9,rdx 2123 mov r9,rdx
2125 and rdx,-16 2124 and rdx,-16
2126 2125
2127 » movups» xmm1,XMMWORD PTR[16+r10*1+rcx] 2126 » movups» xmm1,XMMWORD[16+r10*1+rcx]
2128 2127
2129 » movdqa» xmm8,XMMWORD PTR[$L$xts_magic] 2128 » movdqa» xmm8,XMMWORD[$L$xts_magic]
2130 movdqa xmm15,xmm2 2129 movdqa xmm15,xmm2
2131 » pshufd» xmm9,xmm2,05fh 2130 » pshufd» xmm9,xmm2,0x5f
2132 pxor xmm1,xmm0 2131 pxor xmm1,xmm0
2133 movdqa xmm14,xmm9 2132 movdqa xmm14,xmm9
2134 paddd xmm9,xmm9 2133 paddd xmm9,xmm9
2135 movdqa xmm10,xmm15 2134 movdqa xmm10,xmm15
2136 psrad xmm14,31 2135 psrad xmm14,31
2137 paddq xmm15,xmm15 2136 paddq xmm15,xmm15
2138 pand xmm14,xmm8 2137 pand xmm14,xmm8
2139 pxor xmm10,xmm0 2138 pxor xmm10,xmm0
2140 pxor xmm15,xmm14 2139 pxor xmm15,xmm14
2141 movdqa xmm14,xmm9 2140 movdqa xmm14,xmm9
(...skipping 19 matching lines...) Expand all
2161 paddq xmm15,xmm15 2160 paddq xmm15,xmm15
2162 pand xmm14,xmm8 2161 pand xmm14,xmm8
2163 pxor xmm13,xmm0 2162 pxor xmm13,xmm0
2164 pxor xmm15,xmm14 2163 pxor xmm15,xmm14
2165 movdqa xmm14,xmm15 2164 movdqa xmm14,xmm15
2166 psrad xmm9,31 2165 psrad xmm9,31
2167 paddq xmm15,xmm15 2166 paddq xmm15,xmm15
2168 pand xmm9,xmm8 2167 pand xmm9,xmm8
2169 pxor xmm14,xmm0 2168 pxor xmm14,xmm0
2170 pxor xmm15,xmm9 2169 pxor xmm15,xmm9
2171 » movaps» XMMWORD PTR[96+rsp],xmm1 2170 » movaps» XMMWORD[96+rsp],xmm1
2172 2171
2173 sub rdx,16*6 2172 sub rdx,16*6
2174 » jc» $L$xts_dec_short 2173 » jc» NEAR $L$xts_dec_short
2175 2174
2176 mov eax,16+96 2175 mov eax,16+96
2177 » lea» rcx,QWORD PTR[32+r10*1+r11] 2176 » lea» rcx,[32+r10*1+r11]
2178 sub rax,r10 2177 sub rax,r10
2179 » movups» xmm1,XMMWORD PTR[16+r11] 2178 » movups» xmm1,XMMWORD[16+r11]
2180 mov r10,rax 2179 mov r10,rax
2181 » lea» r8,QWORD PTR[$L$xts_magic] 2180 » lea» r8,[$L$xts_magic]
2182 » jmp» $L$xts_dec_grandloop 2181 » jmp» NEAR $L$xts_dec_grandloop
2183 2182
2184 ALIGN 32 2183 ALIGN 32
2185 $L$xts_dec_grandloop:: 2184 $L$xts_dec_grandloop:
2186 » movdqu» xmm2,XMMWORD PTR[rdi] 2185 » movdqu» xmm2,XMMWORD[rdi]
2187 movdqa xmm8,xmm0 2186 movdqa xmm8,xmm0
2188 » movdqu» xmm3,XMMWORD PTR[16+rdi] 2187 » movdqu» xmm3,XMMWORD[16+rdi]
2189 pxor xmm2,xmm10 2188 pxor xmm2,xmm10
2190 » movdqu» xmm4,XMMWORD PTR[32+rdi] 2189 » movdqu» xmm4,XMMWORD[32+rdi]
2191 pxor xmm3,xmm11 2190 pxor xmm3,xmm11
2192 DB 102,15,56,222,209 2191 DB 102,15,56,222,209
2193 » movdqu» xmm5,XMMWORD PTR[48+rdi] 2192 » movdqu» xmm5,XMMWORD[48+rdi]
2194 pxor xmm4,xmm12 2193 pxor xmm4,xmm12
2195 DB 102,15,56,222,217 2194 DB 102,15,56,222,217
2196 » movdqu» xmm6,XMMWORD PTR[64+rdi] 2195 » movdqu» xmm6,XMMWORD[64+rdi]
2197 pxor xmm5,xmm13 2196 pxor xmm5,xmm13
2198 DB 102,15,56,222,225 2197 DB 102,15,56,222,225
2199 » movdqu» xmm7,XMMWORD PTR[80+rdi] 2198 » movdqu» xmm7,XMMWORD[80+rdi]
2200 pxor xmm8,xmm15 2199 pxor xmm8,xmm15
2201 » movdqa» xmm9,XMMWORD PTR[96+rsp] 2200 » movdqa» xmm9,XMMWORD[96+rsp]
2202 pxor xmm6,xmm14 2201 pxor xmm6,xmm14
2203 DB 102,15,56,222,233 2202 DB 102,15,56,222,233
2204 » movups» xmm0,XMMWORD PTR[32+r11] 2203 » movups» xmm0,XMMWORD[32+r11]
2205 » lea» rdi,QWORD PTR[96+rdi] 2204 » lea» rdi,[96+rdi]
2206 pxor xmm7,xmm8 2205 pxor xmm7,xmm8
2207 2206
2208 pxor xmm10,xmm9 2207 pxor xmm10,xmm9
2209 DB 102,15,56,222,241 2208 DB 102,15,56,222,241
2210 pxor xmm11,xmm9 2209 pxor xmm11,xmm9
2211 » movdqa» XMMWORD PTR[rsp],xmm10 2210 » movdqa» XMMWORD[rsp],xmm10
2212 DB 102,15,56,222,249 2211 DB 102,15,56,222,249
2213 » movups» xmm1,XMMWORD PTR[48+r11] 2212 » movups» xmm1,XMMWORD[48+r11]
2214 pxor xmm12,xmm9 2213 pxor xmm12,xmm9
2215 2214
2216 DB 102,15,56,222,208 2215 DB 102,15,56,222,208
2217 pxor xmm13,xmm9 2216 pxor xmm13,xmm9
2218 » movdqa» XMMWORD PTR[16+rsp],xmm11 2217 » movdqa» XMMWORD[16+rsp],xmm11
2219 DB 102,15,56,222,216 2218 DB 102,15,56,222,216
2220 pxor xmm14,xmm9 2219 pxor xmm14,xmm9
2221 » movdqa» XMMWORD PTR[32+rsp],xmm12 2220 » movdqa» XMMWORD[32+rsp],xmm12
2222 DB 102,15,56,222,224 2221 DB 102,15,56,222,224
2223 DB 102,15,56,222,232 2222 DB 102,15,56,222,232
2224 pxor xmm8,xmm9 2223 pxor xmm8,xmm9
2225 » movdqa» XMMWORD PTR[64+rsp],xmm14 2224 » movdqa» XMMWORD[64+rsp],xmm14
2226 DB 102,15,56,222,240 2225 DB 102,15,56,222,240
2227 DB 102,15,56,222,248 2226 DB 102,15,56,222,248
2228 » movups» xmm0,XMMWORD PTR[64+r11] 2227 » movups» xmm0,XMMWORD[64+r11]
2229 » movdqa» XMMWORD PTR[80+rsp],xmm8 2228 » movdqa» XMMWORD[80+rsp],xmm8
2230 » pshufd» xmm9,xmm15,05fh 2229 » pshufd» xmm9,xmm15,0x5f
2231 » jmp» $L$xts_dec_loop6 2230 » jmp» NEAR $L$xts_dec_loop6
2232 ALIGN 32 2231 ALIGN 32
2233 $L$xts_dec_loop6:: 2232 $L$xts_dec_loop6:
2234 DB 102,15,56,222,209 2233 DB 102,15,56,222,209
2235 DB 102,15,56,222,217 2234 DB 102,15,56,222,217
2236 DB 102,15,56,222,225 2235 DB 102,15,56,222,225
2237 DB 102,15,56,222,233 2236 DB 102,15,56,222,233
2238 DB 102,15,56,222,241 2237 DB 102,15,56,222,241
2239 DB 102,15,56,222,249 2238 DB 102,15,56,222,249
2240 » movups» xmm1,XMMWORD PTR[((-64))+rax*1+rcx] 2239 » movups» xmm1,XMMWORD[((-64))+rax*1+rcx]
2241 add rax,32 2240 add rax,32
2242 2241
2243 DB 102,15,56,222,208 2242 DB 102,15,56,222,208
2244 DB 102,15,56,222,216 2243 DB 102,15,56,222,216
2245 DB 102,15,56,222,224 2244 DB 102,15,56,222,224
2246 DB 102,15,56,222,232 2245 DB 102,15,56,222,232
2247 DB 102,15,56,222,240 2246 DB 102,15,56,222,240
2248 DB 102,15,56,222,248 2247 DB 102,15,56,222,248
2249 » movups» xmm0,XMMWORD PTR[((-80))+rax*1+rcx] 2248 » movups» xmm0,XMMWORD[((-80))+rax*1+rcx]
2250 » jnz» $L$xts_dec_loop6 2249 » jnz» NEAR $L$xts_dec_loop6
2251 2250
2252 » movdqa» xmm8,XMMWORD PTR[r8] 2251 » movdqa» xmm8,XMMWORD[r8]
2253 movdqa xmm14,xmm9 2252 movdqa xmm14,xmm9
2254 paddd xmm9,xmm9 2253 paddd xmm9,xmm9
2255 DB 102,15,56,222,209 2254 DB 102,15,56,222,209
2256 paddq xmm15,xmm15 2255 paddq xmm15,xmm15
2257 psrad xmm14,31 2256 psrad xmm14,31
2258 DB 102,15,56,222,217 2257 DB 102,15,56,222,217
2259 pand xmm14,xmm8 2258 pand xmm14,xmm8
2260 » movups» xmm10,XMMWORD PTR[r11] 2259 » movups» xmm10,XMMWORD[r11]
2261 DB 102,15,56,222,225 2260 DB 102,15,56,222,225
2262 DB 102,15,56,222,233 2261 DB 102,15,56,222,233
2263 DB 102,15,56,222,241 2262 DB 102,15,56,222,241
2264 pxor xmm15,xmm14 2263 pxor xmm15,xmm14
2265 movaps xmm11,xmm10 2264 movaps xmm11,xmm10
2266 DB 102,15,56,222,249 2265 DB 102,15,56,222,249
2267 » movups» xmm1,XMMWORD PTR[((-64))+rcx] 2266 » movups» xmm1,XMMWORD[((-64))+rcx]
2268 2267
2269 movdqa xmm14,xmm9 2268 movdqa xmm14,xmm9
2270 DB 102,15,56,222,208 2269 DB 102,15,56,222,208
2271 paddd xmm9,xmm9 2270 paddd xmm9,xmm9
2272 pxor xmm10,xmm15 2271 pxor xmm10,xmm15
2273 DB 102,15,56,222,216 2272 DB 102,15,56,222,216
2274 psrad xmm14,31 2273 psrad xmm14,31
2275 paddq xmm15,xmm15 2274 paddq xmm15,xmm15
2276 DB 102,15,56,222,224 2275 DB 102,15,56,222,224
2277 DB 102,15,56,222,232 2276 DB 102,15,56,222,232
2278 pand xmm14,xmm8 2277 pand xmm14,xmm8
2279 movaps xmm12,xmm11 2278 movaps xmm12,xmm11
2280 DB 102,15,56,222,240 2279 DB 102,15,56,222,240
2281 pxor xmm15,xmm14 2280 pxor xmm15,xmm14
2282 movdqa xmm14,xmm9 2281 movdqa xmm14,xmm9
2283 DB 102,15,56,222,248 2282 DB 102,15,56,222,248
2284 » movups» xmm0,XMMWORD PTR[((-48))+rcx] 2283 » movups» xmm0,XMMWORD[((-48))+rcx]
2285 2284
2286 paddd xmm9,xmm9 2285 paddd xmm9,xmm9
2287 DB 102,15,56,222,209 2286 DB 102,15,56,222,209
2288 pxor xmm11,xmm15 2287 pxor xmm11,xmm15
2289 psrad xmm14,31 2288 psrad xmm14,31
2290 DB 102,15,56,222,217 2289 DB 102,15,56,222,217
2291 paddq xmm15,xmm15 2290 paddq xmm15,xmm15
2292 pand xmm14,xmm8 2291 pand xmm14,xmm8
2293 DB 102,15,56,222,225 2292 DB 102,15,56,222,225
2294 DB 102,15,56,222,233 2293 DB 102,15,56,222,233
2295 » movdqa» XMMWORD PTR[48+rsp],xmm13 2294 » movdqa» XMMWORD[48+rsp],xmm13
2296 pxor xmm15,xmm14 2295 pxor xmm15,xmm14
2297 DB 102,15,56,222,241 2296 DB 102,15,56,222,241
2298 movaps xmm13,xmm12 2297 movaps xmm13,xmm12
2299 movdqa xmm14,xmm9 2298 movdqa xmm14,xmm9
2300 DB 102,15,56,222,249 2299 DB 102,15,56,222,249
2301 » movups» xmm1,XMMWORD PTR[((-32))+rcx] 2300 » movups» xmm1,XMMWORD[((-32))+rcx]
2302 2301
2303 paddd xmm9,xmm9 2302 paddd xmm9,xmm9
2304 DB 102,15,56,222,208 2303 DB 102,15,56,222,208
2305 pxor xmm12,xmm15 2304 pxor xmm12,xmm15
2306 psrad xmm14,31 2305 psrad xmm14,31
2307 DB 102,15,56,222,216 2306 DB 102,15,56,222,216
2308 paddq xmm15,xmm15 2307 paddq xmm15,xmm15
2309 pand xmm14,xmm8 2308 pand xmm14,xmm8
2310 DB 102,15,56,222,224 2309 DB 102,15,56,222,224
2311 DB 102,15,56,222,232 2310 DB 102,15,56,222,232
2312 DB 102,15,56,222,240 2311 DB 102,15,56,222,240
2313 pxor xmm15,xmm14 2312 pxor xmm15,xmm14
2314 movaps xmm14,xmm13 2313 movaps xmm14,xmm13
2315 DB 102,15,56,222,248 2314 DB 102,15,56,222,248
2316 2315
2317 movdqa xmm0,xmm9 2316 movdqa xmm0,xmm9
2318 paddd xmm9,xmm9 2317 paddd xmm9,xmm9
2319 DB 102,15,56,222,209 2318 DB 102,15,56,222,209
2320 pxor xmm13,xmm15 2319 pxor xmm13,xmm15
2321 psrad xmm0,31 2320 psrad xmm0,31
2322 DB 102,15,56,222,217 2321 DB 102,15,56,222,217
2323 paddq xmm15,xmm15 2322 paddq xmm15,xmm15
2324 pand xmm0,xmm8 2323 pand xmm0,xmm8
2325 DB 102,15,56,222,225 2324 DB 102,15,56,222,225
2326 DB 102,15,56,222,233 2325 DB 102,15,56,222,233
2327 pxor xmm15,xmm0 2326 pxor xmm15,xmm0
2328 » movups» xmm0,XMMWORD PTR[r11] 2327 » movups» xmm0,XMMWORD[r11]
2329 DB 102,15,56,222,241 2328 DB 102,15,56,222,241
2330 DB 102,15,56,222,249 2329 DB 102,15,56,222,249
2331 » movups» xmm1,XMMWORD PTR[16+r11] 2330 » movups» xmm1,XMMWORD[16+r11]
2332 2331
2333 pxor xmm14,xmm15 2332 pxor xmm14,xmm15
2334 DB 102,15,56,223,84,36,0 2333 DB 102,15,56,223,84,36,0
2335 psrad xmm9,31 2334 psrad xmm9,31
2336 paddq xmm15,xmm15 2335 paddq xmm15,xmm15
2337 DB 102,15,56,223,92,36,16 2336 DB 102,15,56,223,92,36,16
2338 DB 102,15,56,223,100,36,32 2337 DB 102,15,56,223,100,36,32
2339 pand xmm9,xmm8 2338 pand xmm9,xmm8
2340 mov rax,r10 2339 mov rax,r10
2341 DB 102,15,56,223,108,36,48 2340 DB 102,15,56,223,108,36,48
2342 DB 102,15,56,223,116,36,64 2341 DB 102,15,56,223,116,36,64
2343 DB 102,15,56,223,124,36,80 2342 DB 102,15,56,223,124,36,80
2344 pxor xmm15,xmm9 2343 pxor xmm15,xmm9
2345 2344
2346 » lea» rsi,QWORD PTR[96+rsi] 2345 » lea» rsi,[96+rsi]
2347 » movups» XMMWORD PTR[(-96)+rsi],xmm2 2346 » movups» XMMWORD[(-96)+rsi],xmm2
2348 » movups» XMMWORD PTR[(-80)+rsi],xmm3 2347 » movups» XMMWORD[(-80)+rsi],xmm3
2349 » movups» XMMWORD PTR[(-64)+rsi],xmm4 2348 » movups» XMMWORD[(-64)+rsi],xmm4
2350 » movups» XMMWORD PTR[(-48)+rsi],xmm5 2349 » movups» XMMWORD[(-48)+rsi],xmm5
2351 » movups» XMMWORD PTR[(-32)+rsi],xmm6 2350 » movups» XMMWORD[(-32)+rsi],xmm6
2352 » movups» XMMWORD PTR[(-16)+rsi],xmm7 2351 » movups» XMMWORD[(-16)+rsi],xmm7
2353 sub rdx,16*6 2352 sub rdx,16*6
2354 » jnc» $L$xts_dec_grandloop 2353 » jnc» NEAR $L$xts_dec_grandloop
2355 2354
2356 mov eax,16+96 2355 mov eax,16+96
2357 sub eax,r10d 2356 sub eax,r10d
2358 mov rcx,r11 2357 mov rcx,r11
2359 shr eax,4 2358 shr eax,4
2360 2359
2361 $L$xts_dec_short:: 2360 $L$xts_dec_short:
2362 mov r10d,eax 2361 mov r10d,eax
2363 pxor xmm10,xmm0 2362 pxor xmm10,xmm0
2364 pxor xmm11,xmm0 2363 pxor xmm11,xmm0
2365 add rdx,16*6 2364 add rdx,16*6
2366 » jz» $L$xts_dec_done 2365 » jz» NEAR $L$xts_dec_done
2367 2366
2368 pxor xmm12,xmm0 2367 pxor xmm12,xmm0
2369 » cmp» rdx,020h 2368 » cmp» rdx,0x20
2370 » jb» $L$xts_dec_one 2369 » jb» NEAR $L$xts_dec_one
2371 pxor xmm13,xmm0 2370 pxor xmm13,xmm0
2372 » je» $L$xts_dec_two 2371 » je» NEAR $L$xts_dec_two
2373 2372
2374 pxor xmm14,xmm0 2373 pxor xmm14,xmm0
2375 » cmp» rdx,040h 2374 » cmp» rdx,0x40
2376 » jb» $L$xts_dec_three 2375 » jb» NEAR $L$xts_dec_three
2377 » je» $L$xts_dec_four 2376 » je» NEAR $L$xts_dec_four
2378 2377
2379 » movdqu» xmm2,XMMWORD PTR[rdi] 2378 » movdqu» xmm2,XMMWORD[rdi]
2380 » movdqu» xmm3,XMMWORD PTR[16+rdi] 2379 » movdqu» xmm3,XMMWORD[16+rdi]
2381 » movdqu» xmm4,XMMWORD PTR[32+rdi] 2380 » movdqu» xmm4,XMMWORD[32+rdi]
2382 pxor xmm2,xmm10 2381 pxor xmm2,xmm10
2383 » movdqu» xmm5,XMMWORD PTR[48+rdi] 2382 » movdqu» xmm5,XMMWORD[48+rdi]
2384 pxor xmm3,xmm11 2383 pxor xmm3,xmm11
2385 » movdqu» xmm6,XMMWORD PTR[64+rdi] 2384 » movdqu» xmm6,XMMWORD[64+rdi]
2386 » lea» rdi,QWORD PTR[80+rdi] 2385 » lea» rdi,[80+rdi]
2387 pxor xmm4,xmm12 2386 pxor xmm4,xmm12
2388 pxor xmm5,xmm13 2387 pxor xmm5,xmm13
2389 pxor xmm6,xmm14 2388 pxor xmm6,xmm14
2390 2389
2391 call _aesni_decrypt6 2390 call _aesni_decrypt6
2392 2391
2393 xorps xmm2,xmm10 2392 xorps xmm2,xmm10
2394 xorps xmm3,xmm11 2393 xorps xmm3,xmm11
2395 xorps xmm4,xmm12 2394 xorps xmm4,xmm12
2396 » movdqu» XMMWORD PTR[rsi],xmm2 2395 » movdqu» XMMWORD[rsi],xmm2
2397 xorps xmm5,xmm13 2396 xorps xmm5,xmm13
2398 » movdqu» XMMWORD PTR[16+rsi],xmm3 2397 » movdqu» XMMWORD[16+rsi],xmm3
2399 xorps xmm6,xmm14 2398 xorps xmm6,xmm14
2400 » movdqu» XMMWORD PTR[32+rsi],xmm4 2399 » movdqu» XMMWORD[32+rsi],xmm4
2401 pxor xmm14,xmm14 2400 pxor xmm14,xmm14
2402 » movdqu» XMMWORD PTR[48+rsi],xmm5 2401 » movdqu» XMMWORD[48+rsi],xmm5
2403 pcmpgtd xmm14,xmm15 2402 pcmpgtd xmm14,xmm15
2404 » movdqu» XMMWORD PTR[64+rsi],xmm6 2403 » movdqu» XMMWORD[64+rsi],xmm6
2405 » lea» rsi,QWORD PTR[80+rsi] 2404 » lea» rsi,[80+rsi]
2406 » pshufd» xmm11,xmm14,013h 2405 » pshufd» xmm11,xmm14,0x13
2407 and r9,15 2406 and r9,15
2408 » jz» $L$xts_dec_ret 2407 » jz» NEAR $L$xts_dec_ret
2409 2408
2410 movdqa xmm10,xmm15 2409 movdqa xmm10,xmm15
2411 paddq xmm15,xmm15 2410 paddq xmm15,xmm15
2412 pand xmm11,xmm8 2411 pand xmm11,xmm8
2413 pxor xmm11,xmm15 2412 pxor xmm11,xmm15
2414 » jmp» $L$xts_dec_done2 2413 » jmp» NEAR $L$xts_dec_done2
2415 2414
2416 ALIGN 16 2415 ALIGN 16
2417 $L$xts_dec_one:: 2416 $L$xts_dec_one:
2418 » movups» xmm2,XMMWORD PTR[rdi] 2417 » movups» xmm2,XMMWORD[rdi]
2419 » lea» rdi,QWORD PTR[16+rdi] 2418 » lea» rdi,[16+rdi]
2420 xorps xmm2,xmm10 2419 xorps xmm2,xmm10
2421 » movups» xmm0,XMMWORD PTR[rcx] 2420 » movups» xmm0,XMMWORD[rcx]
2422 » movups» xmm1,XMMWORD PTR[16+rcx] 2421 » movups» xmm1,XMMWORD[16+rcx]
2423 » lea» rcx,QWORD PTR[32+rcx] 2422 » lea» rcx,[32+rcx]
2424 xorps xmm2,xmm0 2423 xorps xmm2,xmm0
2425 $L$oop_dec1_12:: 2424 $L$oop_dec1_12:
2426 DB 102,15,56,222,209 2425 DB 102,15,56,222,209
2427 dec eax 2426 dec eax
2428 » movups» xmm1,XMMWORD PTR[rcx] 2427 » movups» xmm1,XMMWORD[rcx]
2429 » lea» rcx,QWORD PTR[16+rcx] 2428 » lea» rcx,[16+rcx]
2430 » jnz» $L$oop_dec1_12 2429 » jnz» NEAR $L$oop_dec1_12
2431 DB 102,15,56,223,209 2430 DB 102,15,56,223,209
2432 xorps xmm2,xmm10 2431 xorps xmm2,xmm10
2433 movdqa xmm10,xmm11 2432 movdqa xmm10,xmm11
2434 » movups» XMMWORD PTR[rsi],xmm2 2433 » movups» XMMWORD[rsi],xmm2
2435 movdqa xmm11,xmm12 2434 movdqa xmm11,xmm12
2436 » lea» rsi,QWORD PTR[16+rsi] 2435 » lea» rsi,[16+rsi]
2437 » jmp» $L$xts_dec_done 2436 » jmp» NEAR $L$xts_dec_done
2438 2437
2439 ALIGN 16 2438 ALIGN 16
2440 $L$xts_dec_two:: 2439 $L$xts_dec_two:
2441 » movups» xmm2,XMMWORD PTR[rdi] 2440 » movups» xmm2,XMMWORD[rdi]
2442 » movups» xmm3,XMMWORD PTR[16+rdi] 2441 » movups» xmm3,XMMWORD[16+rdi]
2443 » lea» rdi,QWORD PTR[32+rdi] 2442 » lea» rdi,[32+rdi]
2444 xorps xmm2,xmm10 2443 xorps xmm2,xmm10
2445 xorps xmm3,xmm11 2444 xorps xmm3,xmm11
2446 2445
2447 call _aesni_decrypt2 2446 call _aesni_decrypt2
2448 2447
2449 xorps xmm2,xmm10 2448 xorps xmm2,xmm10
2450 movdqa xmm10,xmm12 2449 movdqa xmm10,xmm12
2451 xorps xmm3,xmm11 2450 xorps xmm3,xmm11
2452 movdqa xmm11,xmm13 2451 movdqa xmm11,xmm13
2453 » movups» XMMWORD PTR[rsi],xmm2 2452 » movups» XMMWORD[rsi],xmm2
2454 » movups» XMMWORD PTR[16+rsi],xmm3 2453 » movups» XMMWORD[16+rsi],xmm3
2455 » lea» rsi,QWORD PTR[32+rsi] 2454 » lea» rsi,[32+rsi]
2456 » jmp» $L$xts_dec_done 2455 » jmp» NEAR $L$xts_dec_done
2457 2456
2458 ALIGN 16 2457 ALIGN 16
2459 $L$xts_dec_three:: 2458 $L$xts_dec_three:
2460 » movups» xmm2,XMMWORD PTR[rdi] 2459 » movups» xmm2,XMMWORD[rdi]
2461 » movups» xmm3,XMMWORD PTR[16+rdi] 2460 » movups» xmm3,XMMWORD[16+rdi]
2462 » movups» xmm4,XMMWORD PTR[32+rdi] 2461 » movups» xmm4,XMMWORD[32+rdi]
2463 » lea» rdi,QWORD PTR[48+rdi] 2462 » lea» rdi,[48+rdi]
2464 xorps xmm2,xmm10 2463 xorps xmm2,xmm10
2465 xorps xmm3,xmm11 2464 xorps xmm3,xmm11
2466 xorps xmm4,xmm12 2465 xorps xmm4,xmm12
2467 2466
2468 call _aesni_decrypt3 2467 call _aesni_decrypt3
2469 2468
2470 xorps xmm2,xmm10 2469 xorps xmm2,xmm10
2471 movdqa xmm10,xmm13 2470 movdqa xmm10,xmm13
2472 xorps xmm3,xmm11 2471 xorps xmm3,xmm11
2473 movdqa xmm11,xmm14 2472 movdqa xmm11,xmm14
2474 xorps xmm4,xmm12 2473 xorps xmm4,xmm12
2475 » movups» XMMWORD PTR[rsi],xmm2 2474 » movups» XMMWORD[rsi],xmm2
2476 » movups» XMMWORD PTR[16+rsi],xmm3 2475 » movups» XMMWORD[16+rsi],xmm3
2477 » movups» XMMWORD PTR[32+rsi],xmm4 2476 » movups» XMMWORD[32+rsi],xmm4
2478 » lea» rsi,QWORD PTR[48+rsi] 2477 » lea» rsi,[48+rsi]
2479 » jmp» $L$xts_dec_done 2478 » jmp» NEAR $L$xts_dec_done
2480 2479
2481 ALIGN 16 2480 ALIGN 16
2482 $L$xts_dec_four:: 2481 $L$xts_dec_four:
2483 » movups» xmm2,XMMWORD PTR[rdi] 2482 » movups» xmm2,XMMWORD[rdi]
2484 » movups» xmm3,XMMWORD PTR[16+rdi] 2483 » movups» xmm3,XMMWORD[16+rdi]
2485 » movups» xmm4,XMMWORD PTR[32+rdi] 2484 » movups» xmm4,XMMWORD[32+rdi]
2486 xorps xmm2,xmm10 2485 xorps xmm2,xmm10
2487 » movups» xmm5,XMMWORD PTR[48+rdi] 2486 » movups» xmm5,XMMWORD[48+rdi]
2488 » lea» rdi,QWORD PTR[64+rdi] 2487 » lea» rdi,[64+rdi]
2489 xorps xmm3,xmm11 2488 xorps xmm3,xmm11
2490 xorps xmm4,xmm12 2489 xorps xmm4,xmm12
2491 xorps xmm5,xmm13 2490 xorps xmm5,xmm13
2492 2491
2493 call _aesni_decrypt4 2492 call _aesni_decrypt4
2494 2493
2495 pxor xmm2,xmm10 2494 pxor xmm2,xmm10
2496 movdqa xmm10,xmm14 2495 movdqa xmm10,xmm14
2497 pxor xmm3,xmm11 2496 pxor xmm3,xmm11
2498 movdqa xmm11,xmm15 2497 movdqa xmm11,xmm15
2499 pxor xmm4,xmm12 2498 pxor xmm4,xmm12
2500 » movdqu» XMMWORD PTR[rsi],xmm2 2499 » movdqu» XMMWORD[rsi],xmm2
2501 pxor xmm5,xmm13 2500 pxor xmm5,xmm13
2502 » movdqu» XMMWORD PTR[16+rsi],xmm3 2501 » movdqu» XMMWORD[16+rsi],xmm3
2503 » movdqu» XMMWORD PTR[32+rsi],xmm4 2502 » movdqu» XMMWORD[32+rsi],xmm4
2504 » movdqu» XMMWORD PTR[48+rsi],xmm5 2503 » movdqu» XMMWORD[48+rsi],xmm5
2505 » lea» rsi,QWORD PTR[64+rsi] 2504 » lea» rsi,[64+rsi]
2506 » jmp» $L$xts_dec_done 2505 » jmp» NEAR $L$xts_dec_done
2507 2506
2508 ALIGN» 16 2507 ALIGN» 16
2509 $L$xts_dec_done:: 2508 $L$xts_dec_done:
2510 and r9,15 2509 and r9,15
2511 » jz» $L$xts_dec_ret 2510 » jz» NEAR $L$xts_dec_ret
2512 $L$xts_dec_done2:: 2511 $L$xts_dec_done2:
2513 mov rdx,r9 2512 mov rdx,r9
2514 mov rcx,r11 2513 mov rcx,r11
2515 mov eax,r10d 2514 mov eax,r10d
2516 2515
2517 » movups» xmm2,XMMWORD PTR[rdi] 2516 » movups» xmm2,XMMWORD[rdi]
2518 xorps xmm2,xmm11 2517 xorps xmm2,xmm11
2519 » movups» xmm0,XMMWORD PTR[rcx] 2518 » movups» xmm0,XMMWORD[rcx]
2520 » movups» xmm1,XMMWORD PTR[16+rcx] 2519 » movups» xmm1,XMMWORD[16+rcx]
2521 » lea» rcx,QWORD PTR[32+rcx] 2520 » lea» rcx,[32+rcx]
2522 xorps xmm2,xmm0 2521 xorps xmm2,xmm0
2523 $L$oop_dec1_13:: 2522 $L$oop_dec1_13:
2524 DB 102,15,56,222,209 2523 DB 102,15,56,222,209
2525 dec eax 2524 dec eax
2526 » movups» xmm1,XMMWORD PTR[rcx] 2525 » movups» xmm1,XMMWORD[rcx]
2527 » lea» rcx,QWORD PTR[16+rcx] 2526 » lea» rcx,[16+rcx]
2528 » jnz» $L$oop_dec1_13 2527 » jnz» NEAR $L$oop_dec1_13
2529 DB 102,15,56,223,209 2528 DB 102,15,56,223,209
2530 xorps xmm2,xmm11 2529 xorps xmm2,xmm11
2531 » movups» XMMWORD PTR[rsi],xmm2 2530 » movups» XMMWORD[rsi],xmm2
2532 2531
2533 $L$xts_dec_steal:: 2532 $L$xts_dec_steal:
2534 » movzx» eax,BYTE PTR[16+rdi] 2533 » movzx» eax,BYTE[16+rdi]
2535 » movzx» ecx,BYTE PTR[rsi] 2534 » movzx» ecx,BYTE[rsi]
2536 » lea» rdi,QWORD PTR[1+rdi] 2535 » lea» rdi,[1+rdi]
2537 » mov» BYTE PTR[rsi],al 2536 » mov» BYTE[rsi],al
2538 » mov» BYTE PTR[16+rsi],cl 2537 » mov» BYTE[16+rsi],cl
2539 » lea» rsi,QWORD PTR[1+rsi] 2538 » lea» rsi,[1+rsi]
2540 sub rdx,1 2539 sub rdx,1
2541 » jnz» $L$xts_dec_steal 2540 » jnz» NEAR $L$xts_dec_steal
2542 2541
2543 sub rsi,r9 2542 sub rsi,r9
2544 mov rcx,r11 2543 mov rcx,r11
2545 mov eax,r10d 2544 mov eax,r10d
2546 2545
2547 » movups» xmm2,XMMWORD PTR[rsi] 2546 » movups» xmm2,XMMWORD[rsi]
2548 xorps xmm2,xmm10 2547 xorps xmm2,xmm10
2549 » movups» xmm0,XMMWORD PTR[rcx] 2548 » movups» xmm0,XMMWORD[rcx]
2550 » movups» xmm1,XMMWORD PTR[16+rcx] 2549 » movups» xmm1,XMMWORD[16+rcx]
2551 » lea» rcx,QWORD PTR[32+rcx] 2550 » lea» rcx,[32+rcx]
2552 xorps xmm2,xmm0 2551 xorps xmm2,xmm0
2553 $L$oop_dec1_14:: 2552 $L$oop_dec1_14:
2554 DB 102,15,56,222,209 2553 DB 102,15,56,222,209
2555 dec eax 2554 dec eax
2556 » movups» xmm1,XMMWORD PTR[rcx] 2555 » movups» xmm1,XMMWORD[rcx]
2557 » lea» rcx,QWORD PTR[16+rcx] 2556 » lea» rcx,[16+rcx]
2558 » jnz» $L$oop_dec1_14 2557 » jnz» NEAR $L$oop_dec1_14
2559 DB 102,15,56,223,209 2558 DB 102,15,56,223,209
2560 xorps xmm2,xmm10 2559 xorps xmm2,xmm10
2561 » movups» XMMWORD PTR[rsi],xmm2 2560 » movups» XMMWORD[rsi],xmm2
2562 2561
2563 $L$xts_dec_ret:: 2562 $L$xts_dec_ret:
2564 » movaps» xmm6,XMMWORD PTR[((-160))+rbp] 2563 » movaps» xmm6,XMMWORD[((-160))+rbp]
2565 » movaps» xmm7,XMMWORD PTR[((-144))+rbp] 2564 » movaps» xmm7,XMMWORD[((-144))+rbp]
2566 » movaps» xmm8,XMMWORD PTR[((-128))+rbp] 2565 » movaps» xmm8,XMMWORD[((-128))+rbp]
2567 » movaps» xmm9,XMMWORD PTR[((-112))+rbp] 2566 » movaps» xmm9,XMMWORD[((-112))+rbp]
2568 » movaps» xmm10,XMMWORD PTR[((-96))+rbp] 2567 » movaps» xmm10,XMMWORD[((-96))+rbp]
2569 » movaps» xmm11,XMMWORD PTR[((-80))+rbp] 2568 » movaps» xmm11,XMMWORD[((-80))+rbp]
2570 » movaps» xmm12,XMMWORD PTR[((-64))+rbp] 2569 » movaps» xmm12,XMMWORD[((-64))+rbp]
2571 » movaps» xmm13,XMMWORD PTR[((-48))+rbp] 2570 » movaps» xmm13,XMMWORD[((-48))+rbp]
2572 » movaps» xmm14,XMMWORD PTR[((-32))+rbp] 2571 » movaps» xmm14,XMMWORD[((-32))+rbp]
2573 » movaps» xmm15,XMMWORD PTR[((-16))+rbp] 2572 » movaps» xmm15,XMMWORD[((-16))+rbp]
2574 » lea» rsp,QWORD PTR[rbp] 2573 » lea» rsp,[rbp]
2575 pop rbp 2574 pop rbp
2576 $L$xts_dec_epilogue:: 2575 $L$xts_dec_epilogue:
2577 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 2576 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
2578 » mov» rsi,QWORD PTR[16+rsp] 2577 » mov» rsi,QWORD[16+rsp]
2579 DB 0F3h,0C3h ;repret 2578 DB 0F3h,0C3h ;repret
2580 $L$SEH_end_aesni_xts_decrypt:: 2579 $L$SEH_end_aesni_xts_decrypt:
2581 aesni_xts_decrypt» ENDP 2580 global» aesni_cbc_encrypt
2582 PUBLIC» aesni_cbc_encrypt 2581
2583 2582 ALIGN» 16
2584 ALIGN» 16 2583 aesni_cbc_encrypt:
2585 aesni_cbc_encrypt» PROC PUBLIC 2584 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
2586 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 2585 » mov» QWORD[16+rsp],rsi
2587 » mov» QWORD PTR[16+rsp],rsi
2588 mov rax,rsp 2586 mov rax,rsp
2589 $L$SEH_begin_aesni_cbc_encrypt:: 2587 $L$SEH_begin_aesni_cbc_encrypt:
2590 mov rdi,rcx 2588 mov rdi,rcx
2591 mov rsi,rdx 2589 mov rsi,rdx
2592 mov rdx,r8 2590 mov rdx,r8
2593 mov rcx,r9 2591 mov rcx,r9
2594 » mov» r8,QWORD PTR[40+rsp] 2592 » mov» r8,QWORD[40+rsp]
2595 » mov» r9,QWORD PTR[48+rsp] 2593 » mov» r9,QWORD[48+rsp]
2596 2594
2597 2595
2598 test rdx,rdx 2596 test rdx,rdx
2599 » jz» $L$cbc_ret 2597 » jz» NEAR $L$cbc_ret
2600 2598
2601 » mov» r10d,DWORD PTR[240+rcx] 2599 » mov» r10d,DWORD[240+rcx]
2602 mov r11,rcx 2600 mov r11,rcx
2603 test r9d,r9d 2601 test r9d,r9d
2604 » jz» $L$cbc_decrypt 2602 » jz» NEAR $L$cbc_decrypt
2605 2603
2606 » movups» xmm2,XMMWORD PTR[r8] 2604 » movups» xmm2,XMMWORD[r8]
2607 mov eax,r10d 2605 mov eax,r10d
2608 cmp rdx,16 2606 cmp rdx,16
2609 » jb» $L$cbc_enc_tail 2607 » jb» NEAR $L$cbc_enc_tail
2610 sub rdx,16 2608 sub rdx,16
2611 » jmp» $L$cbc_enc_loop 2609 » jmp» NEAR $L$cbc_enc_loop
2612 ALIGN» 16 2610 ALIGN» 16
2613 $L$cbc_enc_loop:: 2611 $L$cbc_enc_loop:
2614 » movups» xmm3,XMMWORD PTR[rdi] 2612 » movups» xmm3,XMMWORD[rdi]
2615 » lea» rdi,QWORD PTR[16+rdi] 2613 » lea» rdi,[16+rdi]
2616 2614
2617 » movups» xmm0,XMMWORD PTR[rcx] 2615 » movups» xmm0,XMMWORD[rcx]
2618 » movups» xmm1,XMMWORD PTR[16+rcx] 2616 » movups» xmm1,XMMWORD[16+rcx]
2619 xorps xmm3,xmm0 2617 xorps xmm3,xmm0
2620 » lea» rcx,QWORD PTR[32+rcx] 2618 » lea» rcx,[32+rcx]
2621 xorps xmm2,xmm3 2619 xorps xmm2,xmm3
2622 $L$oop_enc1_15:: 2620 $L$oop_enc1_15:
2623 DB 102,15,56,220,209 2621 DB 102,15,56,220,209
2624 dec eax 2622 dec eax
2625 » movups» xmm1,XMMWORD PTR[rcx] 2623 » movups» xmm1,XMMWORD[rcx]
2626 » lea» rcx,QWORD PTR[16+rcx] 2624 » lea» rcx,[16+rcx]
2627 » jnz» $L$oop_enc1_15 2625 » jnz» NEAR $L$oop_enc1_15
2628 DB 102,15,56,221,209 2626 DB 102,15,56,221,209
2629 mov eax,r10d 2627 mov eax,r10d
2630 mov rcx,r11 2628 mov rcx,r11
2631 » movups» XMMWORD PTR[rsi],xmm2 2629 » movups» XMMWORD[rsi],xmm2
2632 » lea» rsi,QWORD PTR[16+rsi] 2630 » lea» rsi,[16+rsi]
2633 sub rdx,16 2631 sub rdx,16
2634 » jnc» $L$cbc_enc_loop 2632 » jnc» NEAR $L$cbc_enc_loop
2635 add rdx,16 2633 add rdx,16
2636 » jnz» $L$cbc_enc_tail 2634 » jnz» NEAR $L$cbc_enc_tail
2637 » movups» XMMWORD PTR[r8],xmm2 2635 » movups» XMMWORD[r8],xmm2
2638 » jmp» $L$cbc_ret 2636 » jmp» NEAR $L$cbc_ret
2639 2637
2640 $L$cbc_enc_tail:: 2638 $L$cbc_enc_tail:
2641 mov rcx,rdx 2639 mov rcx,rdx
2642 xchg rsi,rdi 2640 xchg rsi,rdi
2643 » DD» 09066A4F3h 2641 » DD» 0x9066A4F3
2644 mov ecx,16 2642 mov ecx,16
2645 sub rcx,rdx 2643 sub rcx,rdx
2646 xor eax,eax 2644 xor eax,eax
2647 » DD» 09066AAF3h 2645 » DD» 0x9066AAF3
2648 » lea» rdi,QWORD PTR[((-16))+rdi] 2646 » lea» rdi,[((-16))+rdi]
2649 mov eax,r10d 2647 mov eax,r10d
2650 mov rsi,rdi 2648 mov rsi,rdi
2651 mov rcx,r11 2649 mov rcx,r11
2652 xor rdx,rdx 2650 xor rdx,rdx
2653 » jmp» $L$cbc_enc_loop 2651 » jmp» NEAR $L$cbc_enc_loop
2654 2652
2655 ALIGN» 16 2653 ALIGN» 16
2656 $L$cbc_decrypt:: 2654 $L$cbc_decrypt:
2657 » lea» rax,QWORD PTR[rsp] 2655 » lea» rax,[rsp]
2658 push rbp 2656 push rbp
2659 sub rsp,176 2657 sub rsp,176
2660 and rsp,-16 2658 and rsp,-16
2661 » movaps» XMMWORD PTR[16+rsp],xmm6 2659 » movaps» XMMWORD[16+rsp],xmm6
2662 » movaps» XMMWORD PTR[32+rsp],xmm7 2660 » movaps» XMMWORD[32+rsp],xmm7
2663 » movaps» XMMWORD PTR[48+rsp],xmm8 2661 » movaps» XMMWORD[48+rsp],xmm8
2664 » movaps» XMMWORD PTR[64+rsp],xmm9 2662 » movaps» XMMWORD[64+rsp],xmm9
2665 » movaps» XMMWORD PTR[80+rsp],xmm10 2663 » movaps» XMMWORD[80+rsp],xmm10
2666 » movaps» XMMWORD PTR[96+rsp],xmm11 2664 » movaps» XMMWORD[96+rsp],xmm11
2667 » movaps» XMMWORD PTR[112+rsp],xmm12 2665 » movaps» XMMWORD[112+rsp],xmm12
2668 » movaps» XMMWORD PTR[128+rsp],xmm13 2666 » movaps» XMMWORD[128+rsp],xmm13
2669 » movaps» XMMWORD PTR[144+rsp],xmm14 2667 » movaps» XMMWORD[144+rsp],xmm14
2670 » movaps» XMMWORD PTR[160+rsp],xmm15 2668 » movaps» XMMWORD[160+rsp],xmm15
2671 $L$cbc_decrypt_body:: 2669 $L$cbc_decrypt_body:
2672 » lea» rbp,QWORD PTR[((-8))+rax] 2670 » lea» rbp,[((-8))+rax]
2673 » movups» xmm10,XMMWORD PTR[r8] 2671 » movups» xmm10,XMMWORD[r8]
2674 » mov» eax,r10d 2672 » mov» eax,r10d
2675 » cmp» rdx,050h 2673 » cmp» rdx,0x50
2676 » jbe» $L$cbc_dec_tail 2674 » jbe» NEAR $L$cbc_dec_tail
2677 2675
2678 » movups» xmm0,XMMWORD PTR[rcx] 2676 » movups» xmm0,XMMWORD[rcx]
2679 » movdqu» xmm2,XMMWORD PTR[rdi] 2677 » movdqu» xmm2,XMMWORD[rdi]
2680 » movdqu» xmm3,XMMWORD PTR[16+rdi] 2678 » movdqu» xmm3,XMMWORD[16+rdi]
2681 movdqa xmm11,xmm2 2679 movdqa xmm11,xmm2
2682 » movdqu» xmm4,XMMWORD PTR[32+rdi] 2680 » movdqu» xmm4,XMMWORD[32+rdi]
2683 movdqa xmm12,xmm3 2681 movdqa xmm12,xmm3
2684 » movdqu» xmm5,XMMWORD PTR[48+rdi] 2682 » movdqu» xmm5,XMMWORD[48+rdi]
2685 movdqa xmm13,xmm4 2683 movdqa xmm13,xmm4
2686 » movdqu» xmm6,XMMWORD PTR[64+rdi] 2684 » movdqu» xmm6,XMMWORD[64+rdi]
2687 movdqa xmm14,xmm5 2685 movdqa xmm14,xmm5
2688 » movdqu» xmm7,XMMWORD PTR[80+rdi] 2686 » movdqu» xmm7,XMMWORD[80+rdi]
2689 movdqa xmm15,xmm6 2687 movdqa xmm15,xmm6
2690 » mov» r9d,DWORD PTR[((OPENSSL_ia32cap_P+4))] 2688 » mov» r9d,DWORD[((OPENSSL_ia32cap_P+4))]
2691 » cmp» rdx,070h 2689 » cmp» rdx,0x70
2692 » jbe» $L$cbc_dec_six_or_seven 2690 » jbe» NEAR $L$cbc_dec_six_or_seven
2693 2691
2694 and r9d,71303168 2692 and r9d,71303168
2695 » sub» rdx,050h 2693 » sub» rdx,0x50
2696 cmp r9d,4194304 2694 cmp r9d,4194304
2697 » je» $L$cbc_dec_loop6_enter 2695 » je» NEAR $L$cbc_dec_loop6_enter
2698 » sub» rdx,020h 2696 » sub» rdx,0x20
2699 » lea» rcx,QWORD PTR[112+rcx] 2697 » lea» rcx,[112+rcx]
2700 » jmp» $L$cbc_dec_loop8_enter 2698 » jmp» NEAR $L$cbc_dec_loop8_enter
2701 ALIGN» 16 2699 ALIGN» 16
2702 $L$cbc_dec_loop8:: 2700 $L$cbc_dec_loop8:
2703 » movups» XMMWORD PTR[rsi],xmm9 2701 » movups» XMMWORD[rsi],xmm9
2704 » lea» rsi,QWORD PTR[16+rsi] 2702 » lea» rsi,[16+rsi]
2705 $L$cbc_dec_loop8_enter:: 2703 $L$cbc_dec_loop8_enter:
2706 » movdqu» xmm8,XMMWORD PTR[96+rdi] 2704 » movdqu» xmm8,XMMWORD[96+rdi]
2707 pxor xmm2,xmm0 2705 pxor xmm2,xmm0
2708 » movdqu» xmm9,XMMWORD PTR[112+rdi] 2706 » movdqu» xmm9,XMMWORD[112+rdi]
2709 pxor xmm3,xmm0 2707 pxor xmm3,xmm0
2710 » movups» xmm1,XMMWORD PTR[((16-112))+rcx] 2708 » movups» xmm1,XMMWORD[((16-112))+rcx]
2711 pxor xmm4,xmm0 2709 pxor xmm4,xmm0
2712 xor r11,r11 2710 xor r11,r11
2713 » cmp» rdx,070h 2711 » cmp» rdx,0x70
2714 pxor xmm5,xmm0 2712 pxor xmm5,xmm0
2715 pxor xmm6,xmm0 2713 pxor xmm6,xmm0
2716 pxor xmm7,xmm0 2714 pxor xmm7,xmm0
2717 pxor xmm8,xmm0 2715 pxor xmm8,xmm0
2718 2716
2719 DB 102,15,56,222,209 2717 DB 102,15,56,222,209
2720 pxor xmm9,xmm0 2718 pxor xmm9,xmm0
2721 » movups» xmm0,XMMWORD PTR[((32-112))+rcx] 2719 » movups» xmm0,XMMWORD[((32-112))+rcx]
2722 DB 102,15,56,222,217 2720 DB 102,15,56,222,217
2723 DB 102,15,56,222,225 2721 DB 102,15,56,222,225
2724 DB 102,15,56,222,233 2722 DB 102,15,56,222,233
2725 DB 102,15,56,222,241 2723 DB 102,15,56,222,241
2726 DB 102,15,56,222,249 2724 DB 102,15,56,222,249
2727 DB 102,68,15,56,222,193 2725 DB 102,68,15,56,222,193
2728 setnc r11b 2726 setnc r11b
2729 shl r11,7 2727 shl r11,7
2730 DB 102,68,15,56,222,201 2728 DB 102,68,15,56,222,201
2731 add r11,rdi 2729 add r11,rdi
2732 » movups» xmm1,XMMWORD PTR[((48-112))+rcx] 2730 » movups» xmm1,XMMWORD[((48-112))+rcx]
2733 DB 102,15,56,222,208 2731 DB 102,15,56,222,208
2734 DB 102,15,56,222,216 2732 DB 102,15,56,222,216
2735 DB 102,15,56,222,224 2733 DB 102,15,56,222,224
2736 DB 102,15,56,222,232 2734 DB 102,15,56,222,232
2737 DB 102,15,56,222,240 2735 DB 102,15,56,222,240
2738 DB 102,15,56,222,248 2736 DB 102,15,56,222,248
2739 DB 102,68,15,56,222,192 2737 DB 102,68,15,56,222,192
2740 DB 102,68,15,56,222,200 2738 DB 102,68,15,56,222,200
2741 » movups» xmm0,XMMWORD PTR[((64-112))+rcx] 2739 » movups» xmm0,XMMWORD[((64-112))+rcx]
2742 nop 2740 nop
2743 DB 102,15,56,222,209 2741 DB 102,15,56,222,209
2744 DB 102,15,56,222,217 2742 DB 102,15,56,222,217
2745 DB 102,15,56,222,225 2743 DB 102,15,56,222,225
2746 DB 102,15,56,222,233 2744 DB 102,15,56,222,233
2747 DB 102,15,56,222,241 2745 DB 102,15,56,222,241
2748 DB 102,15,56,222,249 2746 DB 102,15,56,222,249
2749 DB 102,68,15,56,222,193 2747 DB 102,68,15,56,222,193
2750 DB 102,68,15,56,222,201 2748 DB 102,68,15,56,222,201
2751 » movups» xmm1,XMMWORD PTR[((80-112))+rcx] 2749 » movups» xmm1,XMMWORD[((80-112))+rcx]
2752 nop 2750 nop
2753 DB 102,15,56,222,208 2751 DB 102,15,56,222,208
2754 DB 102,15,56,222,216 2752 DB 102,15,56,222,216
2755 DB 102,15,56,222,224 2753 DB 102,15,56,222,224
2756 DB 102,15,56,222,232 2754 DB 102,15,56,222,232
2757 DB 102,15,56,222,240 2755 DB 102,15,56,222,240
2758 DB 102,15,56,222,248 2756 DB 102,15,56,222,248
2759 DB 102,68,15,56,222,192 2757 DB 102,68,15,56,222,192
2760 DB 102,68,15,56,222,200 2758 DB 102,68,15,56,222,200
2761 » movups» xmm0,XMMWORD PTR[((96-112))+rcx] 2759 » movups» xmm0,XMMWORD[((96-112))+rcx]
2762 nop 2760 nop
2763 DB 102,15,56,222,209 2761 DB 102,15,56,222,209
2764 DB 102,15,56,222,217 2762 DB 102,15,56,222,217
2765 DB 102,15,56,222,225 2763 DB 102,15,56,222,225
2766 DB 102,15,56,222,233 2764 DB 102,15,56,222,233
2767 DB 102,15,56,222,241 2765 DB 102,15,56,222,241
2768 DB 102,15,56,222,249 2766 DB 102,15,56,222,249
2769 DB 102,68,15,56,222,193 2767 DB 102,68,15,56,222,193
2770 DB 102,68,15,56,222,201 2768 DB 102,68,15,56,222,201
2771 » movups» xmm1,XMMWORD PTR[((112-112))+rcx] 2769 » movups» xmm1,XMMWORD[((112-112))+rcx]
2772 nop 2770 nop
2773 DB 102,15,56,222,208 2771 DB 102,15,56,222,208
2774 DB 102,15,56,222,216 2772 DB 102,15,56,222,216
2775 DB 102,15,56,222,224 2773 DB 102,15,56,222,224
2776 DB 102,15,56,222,232 2774 DB 102,15,56,222,232
2777 DB 102,15,56,222,240 2775 DB 102,15,56,222,240
2778 DB 102,15,56,222,248 2776 DB 102,15,56,222,248
2779 DB 102,68,15,56,222,192 2777 DB 102,68,15,56,222,192
2780 DB 102,68,15,56,222,200 2778 DB 102,68,15,56,222,200
2781 » movups» xmm0,XMMWORD PTR[((128-112))+rcx] 2779 » movups» xmm0,XMMWORD[((128-112))+rcx]
2782 nop 2780 nop
2783 DB 102,15,56,222,209 2781 DB 102,15,56,222,209
2784 DB 102,15,56,222,217 2782 DB 102,15,56,222,217
2785 DB 102,15,56,222,225 2783 DB 102,15,56,222,225
2786 DB 102,15,56,222,233 2784 DB 102,15,56,222,233
2787 DB 102,15,56,222,241 2785 DB 102,15,56,222,241
2788 DB 102,15,56,222,249 2786 DB 102,15,56,222,249
2789 DB 102,68,15,56,222,193 2787 DB 102,68,15,56,222,193
2790 DB 102,68,15,56,222,201 2788 DB 102,68,15,56,222,201
2791 » movups» xmm1,XMMWORD PTR[((144-112))+rcx] 2789 » movups» xmm1,XMMWORD[((144-112))+rcx]
2792 cmp eax,11 2790 cmp eax,11
2793 DB 102,15,56,222,208 2791 DB 102,15,56,222,208
2794 DB 102,15,56,222,216 2792 DB 102,15,56,222,216
2795 DB 102,15,56,222,224 2793 DB 102,15,56,222,224
2796 DB 102,15,56,222,232 2794 DB 102,15,56,222,232
2797 DB 102,15,56,222,240 2795 DB 102,15,56,222,240
2798 DB 102,15,56,222,248 2796 DB 102,15,56,222,248
2799 DB 102,68,15,56,222,192 2797 DB 102,68,15,56,222,192
2800 DB 102,68,15,56,222,200 2798 DB 102,68,15,56,222,200
2801 » movups» xmm0,XMMWORD PTR[((160-112))+rcx] 2799 » movups» xmm0,XMMWORD[((160-112))+rcx]
2802 » jb» $L$cbc_dec_done 2800 » jb» NEAR $L$cbc_dec_done
2803 DB 102,15,56,222,209 2801 DB 102,15,56,222,209
2804 DB 102,15,56,222,217 2802 DB 102,15,56,222,217
2805 DB 102,15,56,222,225 2803 DB 102,15,56,222,225
2806 DB 102,15,56,222,233 2804 DB 102,15,56,222,233
2807 DB 102,15,56,222,241 2805 DB 102,15,56,222,241
2808 DB 102,15,56,222,249 2806 DB 102,15,56,222,249
2809 DB 102,68,15,56,222,193 2807 DB 102,68,15,56,222,193
2810 DB 102,68,15,56,222,201 2808 DB 102,68,15,56,222,201
2811 » movups» xmm1,XMMWORD PTR[((176-112))+rcx] 2809 » movups» xmm1,XMMWORD[((176-112))+rcx]
2812 nop 2810 nop
2813 DB 102,15,56,222,208 2811 DB 102,15,56,222,208
2814 DB 102,15,56,222,216 2812 DB 102,15,56,222,216
2815 DB 102,15,56,222,224 2813 DB 102,15,56,222,224
2816 DB 102,15,56,222,232 2814 DB 102,15,56,222,232
2817 DB 102,15,56,222,240 2815 DB 102,15,56,222,240
2818 DB 102,15,56,222,248 2816 DB 102,15,56,222,248
2819 DB 102,68,15,56,222,192 2817 DB 102,68,15,56,222,192
2820 DB 102,68,15,56,222,200 2818 DB 102,68,15,56,222,200
2821 » movups» xmm0,XMMWORD PTR[((192-112))+rcx] 2819 » movups» xmm0,XMMWORD[((192-112))+rcx]
2822 » je» $L$cbc_dec_done 2820 » je» NEAR $L$cbc_dec_done
2823 DB 102,15,56,222,209 2821 DB 102,15,56,222,209
2824 DB 102,15,56,222,217 2822 DB 102,15,56,222,217
2825 DB 102,15,56,222,225 2823 DB 102,15,56,222,225
2826 DB 102,15,56,222,233 2824 DB 102,15,56,222,233
2827 DB 102,15,56,222,241 2825 DB 102,15,56,222,241
2828 DB 102,15,56,222,249 2826 DB 102,15,56,222,249
2829 DB 102,68,15,56,222,193 2827 DB 102,68,15,56,222,193
2830 DB 102,68,15,56,222,201 2828 DB 102,68,15,56,222,201
2831 » movups» xmm1,XMMWORD PTR[((208-112))+rcx] 2829 » movups» xmm1,XMMWORD[((208-112))+rcx]
2832 nop 2830 nop
2833 DB 102,15,56,222,208 2831 DB 102,15,56,222,208
2834 DB 102,15,56,222,216 2832 DB 102,15,56,222,216
2835 DB 102,15,56,222,224 2833 DB 102,15,56,222,224
2836 DB 102,15,56,222,232 2834 DB 102,15,56,222,232
2837 DB 102,15,56,222,240 2835 DB 102,15,56,222,240
2838 DB 102,15,56,222,248 2836 DB 102,15,56,222,248
2839 DB 102,68,15,56,222,192 2837 DB 102,68,15,56,222,192
2840 DB 102,68,15,56,222,200 2838 DB 102,68,15,56,222,200
2841 » movups» xmm0,XMMWORD PTR[((224-112))+rcx] 2839 » movups» xmm0,XMMWORD[((224-112))+rcx]
2842 » jmp» $L$cbc_dec_done 2840 » jmp» NEAR $L$cbc_dec_done
2843 ALIGN 16 2841 ALIGN 16
2844 $L$cbc_dec_done:: 2842 $L$cbc_dec_done:
2845 DB 102,15,56,222,209 2843 DB 102,15,56,222,209
2846 DB 102,15,56,222,217 2844 DB 102,15,56,222,217
2847 pxor xmm10,xmm0 2845 pxor xmm10,xmm0
2848 pxor xmm11,xmm0 2846 pxor xmm11,xmm0
2849 DB 102,15,56,222,225 2847 DB 102,15,56,222,225
2850 DB 102,15,56,222,233 2848 DB 102,15,56,222,233
2851 pxor xmm12,xmm0 2849 pxor xmm12,xmm0
2852 pxor xmm13,xmm0 2850 pxor xmm13,xmm0
2853 DB 102,15,56,222,241 2851 DB 102,15,56,222,241
2854 DB 102,15,56,222,249 2852 DB 102,15,56,222,249
2855 pxor xmm14,xmm0 2853 pxor xmm14,xmm0
2856 pxor xmm15,xmm0 2854 pxor xmm15,xmm0
2857 DB 102,68,15,56,222,193 2855 DB 102,68,15,56,222,193
2858 DB 102,68,15,56,222,201 2856 DB 102,68,15,56,222,201
2859 » movdqu» xmm1,XMMWORD PTR[80+rdi] 2857 » movdqu» xmm1,XMMWORD[80+rdi]
2860 2858
2861 DB 102,65,15,56,223,210 2859 DB 102,65,15,56,223,210
2862 » movdqu» xmm10,XMMWORD PTR[96+rdi] 2860 » movdqu» xmm10,XMMWORD[96+rdi]
2863 pxor xmm1,xmm0 2861 pxor xmm1,xmm0
2864 DB 102,65,15,56,223,219 2862 DB 102,65,15,56,223,219
2865 pxor xmm10,xmm0 2863 pxor xmm10,xmm0
2866 » movdqu» xmm0,XMMWORD PTR[112+rdi] 2864 » movdqu» xmm0,XMMWORD[112+rdi]
2867 DB 102,65,15,56,223,228 2865 DB 102,65,15,56,223,228
2868 » lea» rdi,QWORD PTR[128+rdi] 2866 » lea» rdi,[128+rdi]
2869 » movdqu» xmm11,XMMWORD PTR[r11] 2867 » movdqu» xmm11,XMMWORD[r11]
2870 DB 102,65,15,56,223,237 2868 DB 102,65,15,56,223,237
2871 DB 102,65,15,56,223,246 2869 DB 102,65,15,56,223,246
2872 » movdqu» xmm12,XMMWORD PTR[16+r11] 2870 » movdqu» xmm12,XMMWORD[16+r11]
2873 » movdqu» xmm13,XMMWORD PTR[32+r11] 2871 » movdqu» xmm13,XMMWORD[32+r11]
2874 DB 102,65,15,56,223,255 2872 DB 102,65,15,56,223,255
2875 DB 102,68,15,56,223,193 2873 DB 102,68,15,56,223,193
2876 » movdqu» xmm14,XMMWORD PTR[48+r11] 2874 » movdqu» xmm14,XMMWORD[48+r11]
2877 » movdqu» xmm15,XMMWORD PTR[64+r11] 2875 » movdqu» xmm15,XMMWORD[64+r11]
2878 DB 102,69,15,56,223,202 2876 DB 102,69,15,56,223,202
2879 movdqa xmm10,xmm0 2877 movdqa xmm10,xmm0
2880 » movdqu» xmm1,XMMWORD PTR[80+r11] 2878 » movdqu» xmm1,XMMWORD[80+r11]
2881 » movups» xmm0,XMMWORD PTR[((-112))+rcx] 2879 » movups» xmm0,XMMWORD[((-112))+rcx]
2882 2880
2883 » movups» XMMWORD PTR[rsi],xmm2 2881 » movups» XMMWORD[rsi],xmm2
2884 movdqa xmm2,xmm11 2882 movdqa xmm2,xmm11
2885 » movups» XMMWORD PTR[16+rsi],xmm3 2883 » movups» XMMWORD[16+rsi],xmm3
2886 movdqa xmm3,xmm12 2884 movdqa xmm3,xmm12
2887 » movups» XMMWORD PTR[32+rsi],xmm4 2885 » movups» XMMWORD[32+rsi],xmm4
2888 movdqa xmm4,xmm13 2886 movdqa xmm4,xmm13
2889 » movups» XMMWORD PTR[48+rsi],xmm5 2887 » movups» XMMWORD[48+rsi],xmm5
2890 movdqa xmm5,xmm14 2888 movdqa xmm5,xmm14
2891 » movups» XMMWORD PTR[64+rsi],xmm6 2889 » movups» XMMWORD[64+rsi],xmm6
2892 movdqa xmm6,xmm15 2890 movdqa xmm6,xmm15
2893 » movups» XMMWORD PTR[80+rsi],xmm7 2891 » movups» XMMWORD[80+rsi],xmm7
2894 movdqa xmm7,xmm1 2892 movdqa xmm7,xmm1
2895 » movups» XMMWORD PTR[96+rsi],xmm8 2893 » movups» XMMWORD[96+rsi],xmm8
2896 » lea» rsi,QWORD PTR[112+rsi] 2894 » lea» rsi,[112+rsi]
2897 2895
2898 » sub» rdx,080h 2896 » sub» rdx,0x80
2899 » ja» $L$cbc_dec_loop8 2897 » ja» NEAR $L$cbc_dec_loop8
2900 2898
2901 movaps xmm2,xmm9 2899 movaps xmm2,xmm9
2902 » lea» rcx,QWORD PTR[((-112))+rcx] 2900 » lea» rcx,[((-112))+rcx]
2903 » add» rdx,070h 2901 » add» rdx,0x70
2904 » jle» $L$cbc_dec_tail_collected 2902 » jle» NEAR $L$cbc_dec_tail_collected
2905 » movups» XMMWORD PTR[rsi],xmm9 2903 » movups» XMMWORD[rsi],xmm9
2906 » lea» rsi,QWORD PTR[16+rsi] 2904 » lea» rsi,[16+rsi]
2907 » cmp» rdx,050h 2905 » cmp» rdx,0x50
2908 » jbe» $L$cbc_dec_tail 2906 » jbe» NEAR $L$cbc_dec_tail
2909 2907
2910 movaps xmm2,xmm11 2908 movaps xmm2,xmm11
2911 $L$cbc_dec_six_or_seven:: 2909 $L$cbc_dec_six_or_seven:
2912 » cmp» rdx,060h 2910 » cmp» rdx,0x60
2913 » ja» $L$cbc_dec_seven 2911 » ja» NEAR $L$cbc_dec_seven
2914 2912
2915 movaps xmm8,xmm7 2913 movaps xmm8,xmm7
2916 call _aesni_decrypt6 2914 call _aesni_decrypt6
2917 pxor xmm2,xmm10 2915 pxor xmm2,xmm10
2918 movaps xmm10,xmm8 2916 movaps xmm10,xmm8
2919 pxor xmm3,xmm11 2917 pxor xmm3,xmm11
2920 » movdqu» XMMWORD PTR[rsi],xmm2 2918 » movdqu» XMMWORD[rsi],xmm2
2921 pxor xmm4,xmm12 2919 pxor xmm4,xmm12
2922 » movdqu» XMMWORD PTR[16+rsi],xmm3 2920 » movdqu» XMMWORD[16+rsi],xmm3
2923 pxor xmm5,xmm13 2921 pxor xmm5,xmm13
2924 » movdqu» XMMWORD PTR[32+rsi],xmm4 2922 » movdqu» XMMWORD[32+rsi],xmm4
2925 pxor xmm6,xmm14 2923 pxor xmm6,xmm14
2926 » movdqu» XMMWORD PTR[48+rsi],xmm5 2924 » movdqu» XMMWORD[48+rsi],xmm5
2927 pxor xmm7,xmm15 2925 pxor xmm7,xmm15
2928 » movdqu» XMMWORD PTR[64+rsi],xmm6 2926 » movdqu» XMMWORD[64+rsi],xmm6
2929 » lea» rsi,QWORD PTR[80+rsi] 2927 » lea» rsi,[80+rsi]
2930 movdqa xmm2,xmm7 2928 movdqa xmm2,xmm7
2931 » jmp» $L$cbc_dec_tail_collected 2929 » jmp» NEAR $L$cbc_dec_tail_collected
2932 2930
2933 ALIGN 16 2931 ALIGN 16
2934 $L$cbc_dec_seven:: 2932 $L$cbc_dec_seven:
2935 » movups» xmm8,XMMWORD PTR[96+rdi] 2933 » movups» xmm8,XMMWORD[96+rdi]
2936 xorps xmm9,xmm9 2934 xorps xmm9,xmm9
2937 call _aesni_decrypt8 2935 call _aesni_decrypt8
2938 » movups» xmm9,XMMWORD PTR[80+rdi] 2936 » movups» xmm9,XMMWORD[80+rdi]
2939 pxor xmm2,xmm10 2937 pxor xmm2,xmm10
2940 » movups» xmm10,XMMWORD PTR[96+rdi] 2938 » movups» xmm10,XMMWORD[96+rdi]
2941 pxor xmm3,xmm11 2939 pxor xmm3,xmm11
2942 » movdqu» XMMWORD PTR[rsi],xmm2 2940 » movdqu» XMMWORD[rsi],xmm2
2943 pxor xmm4,xmm12 2941 pxor xmm4,xmm12
2944 » movdqu» XMMWORD PTR[16+rsi],xmm3 2942 » movdqu» XMMWORD[16+rsi],xmm3
2945 pxor xmm5,xmm13 2943 pxor xmm5,xmm13
2946 » movdqu» XMMWORD PTR[32+rsi],xmm4 2944 » movdqu» XMMWORD[32+rsi],xmm4
2947 pxor xmm6,xmm14 2945 pxor xmm6,xmm14
2948 » movdqu» XMMWORD PTR[48+rsi],xmm5 2946 » movdqu» XMMWORD[48+rsi],xmm5
2949 pxor xmm7,xmm15 2947 pxor xmm7,xmm15
2950 » movdqu» XMMWORD PTR[64+rsi],xmm6 2948 » movdqu» XMMWORD[64+rsi],xmm6
2951 pxor xmm8,xmm9 2949 pxor xmm8,xmm9
2952 » movdqu» XMMWORD PTR[80+rsi],xmm7 2950 » movdqu» XMMWORD[80+rsi],xmm7
2953 » lea» rsi,QWORD PTR[96+rsi] 2951 » lea» rsi,[96+rsi]
2954 movdqa xmm2,xmm8 2952 movdqa xmm2,xmm8
2955 » jmp» $L$cbc_dec_tail_collected 2953 » jmp» NEAR $L$cbc_dec_tail_collected
2956 2954
2957 ALIGN 16 2955 ALIGN 16
2958 $L$cbc_dec_loop6:: 2956 $L$cbc_dec_loop6:
2959 » movups» XMMWORD PTR[rsi],xmm7 2957 » movups» XMMWORD[rsi],xmm7
2960 » lea» rsi,QWORD PTR[16+rsi] 2958 » lea» rsi,[16+rsi]
2961 » movdqu» xmm2,XMMWORD PTR[rdi] 2959 » movdqu» xmm2,XMMWORD[rdi]
2962 » movdqu» xmm3,XMMWORD PTR[16+rdi] 2960 » movdqu» xmm3,XMMWORD[16+rdi]
2963 movdqa xmm11,xmm2 2961 movdqa xmm11,xmm2
2964 » movdqu» xmm4,XMMWORD PTR[32+rdi] 2962 » movdqu» xmm4,XMMWORD[32+rdi]
2965 movdqa xmm12,xmm3 2963 movdqa xmm12,xmm3
2966 » movdqu» xmm5,XMMWORD PTR[48+rdi] 2964 » movdqu» xmm5,XMMWORD[48+rdi]
2967 movdqa xmm13,xmm4 2965 movdqa xmm13,xmm4
2968 » movdqu» xmm6,XMMWORD PTR[64+rdi] 2966 » movdqu» xmm6,XMMWORD[64+rdi]
2969 movdqa xmm14,xmm5 2967 movdqa xmm14,xmm5
2970 » movdqu» xmm7,XMMWORD PTR[80+rdi] 2968 » movdqu» xmm7,XMMWORD[80+rdi]
2971 movdqa xmm15,xmm6 2969 movdqa xmm15,xmm6
2972 $L$cbc_dec_loop6_enter:: 2970 $L$cbc_dec_loop6_enter:
2973 » lea» rdi,QWORD PTR[96+rdi] 2971 » lea» rdi,[96+rdi]
2974 movdqa xmm8,xmm7 2972 movdqa xmm8,xmm7
2975 2973
2976 call _aesni_decrypt6 2974 call _aesni_decrypt6
2977 2975
2978 pxor xmm2,xmm10 2976 pxor xmm2,xmm10
2979 movdqa xmm10,xmm8 2977 movdqa xmm10,xmm8
2980 pxor xmm3,xmm11 2978 pxor xmm3,xmm11
2981 » movdqu» XMMWORD PTR[rsi],xmm2 2979 » movdqu» XMMWORD[rsi],xmm2
2982 pxor xmm4,xmm12 2980 pxor xmm4,xmm12
2983 » movdqu» XMMWORD PTR[16+rsi],xmm3 2981 » movdqu» XMMWORD[16+rsi],xmm3
2984 pxor xmm5,xmm13 2982 pxor xmm5,xmm13
2985 » movdqu» XMMWORD PTR[32+rsi],xmm4 2983 » movdqu» XMMWORD[32+rsi],xmm4
2986 pxor xmm6,xmm14 2984 pxor xmm6,xmm14
2987 mov rcx,r11 2985 mov rcx,r11
2988 » movdqu» XMMWORD PTR[48+rsi],xmm5 2986 » movdqu» XMMWORD[48+rsi],xmm5
2989 pxor xmm7,xmm15 2987 pxor xmm7,xmm15
2990 mov eax,r10d 2988 mov eax,r10d
2991 » movdqu» XMMWORD PTR[64+rsi],xmm6 2989 » movdqu» XMMWORD[64+rsi],xmm6
2992 » lea» rsi,QWORD PTR[80+rsi] 2990 » lea» rsi,[80+rsi]
2993 » sub» rdx,060h 2991 » sub» rdx,0x60
2994 » ja» $L$cbc_dec_loop6 2992 » ja» NEAR $L$cbc_dec_loop6
2995 2993
2996 movdqa xmm2,xmm7 2994 movdqa xmm2,xmm7
2997 » add» rdx,050h 2995 » add» rdx,0x50
2998 » jle» $L$cbc_dec_tail_collected 2996 » jle» NEAR $L$cbc_dec_tail_collected
2999 » movups» XMMWORD PTR[rsi],xmm7 2997 » movups» XMMWORD[rsi],xmm7
3000 » lea» rsi,QWORD PTR[16+rsi] 2998 » lea» rsi,[16+rsi]
3001 2999
3002 $L$cbc_dec_tail:: 3000 $L$cbc_dec_tail:
3003 » movups» xmm2,XMMWORD PTR[rdi] 3001 » movups» xmm2,XMMWORD[rdi]
3004 » sub» rdx,010h 3002 » sub» rdx,0x10
3005 » jbe» $L$cbc_dec_one 3003 » jbe» NEAR $L$cbc_dec_one
3006 3004
3007 » movups» xmm3,XMMWORD PTR[16+rdi] 3005 » movups» xmm3,XMMWORD[16+rdi]
3008 movaps xmm11,xmm2 3006 movaps xmm11,xmm2
3009 » sub» rdx,010h 3007 » sub» rdx,0x10
3010 » jbe» $L$cbc_dec_two 3008 » jbe» NEAR $L$cbc_dec_two
3011 3009
3012 » movups» xmm4,XMMWORD PTR[32+rdi] 3010 » movups» xmm4,XMMWORD[32+rdi]
3013 movaps xmm12,xmm3 3011 movaps xmm12,xmm3
3014 » sub» rdx,010h 3012 » sub» rdx,0x10
3015 » jbe» $L$cbc_dec_three 3013 » jbe» NEAR $L$cbc_dec_three
3016 3014
3017 » movups» xmm5,XMMWORD PTR[48+rdi] 3015 » movups» xmm5,XMMWORD[48+rdi]
3018 movaps xmm13,xmm4 3016 movaps xmm13,xmm4
3019 » sub» rdx,010h 3017 » sub» rdx,0x10
3020 » jbe» $L$cbc_dec_four 3018 » jbe» NEAR $L$cbc_dec_four
3021 3019
3022 » movups» xmm6,XMMWORD PTR[64+rdi] 3020 » movups» xmm6,XMMWORD[64+rdi]
3023 movaps xmm14,xmm5 3021 movaps xmm14,xmm5
3024 movaps xmm15,xmm6 3022 movaps xmm15,xmm6
3025 xorps xmm7,xmm7 3023 xorps xmm7,xmm7
3026 call _aesni_decrypt6 3024 call _aesni_decrypt6
3027 pxor xmm2,xmm10 3025 pxor xmm2,xmm10
3028 movaps xmm10,xmm15 3026 movaps xmm10,xmm15
3029 pxor xmm3,xmm11 3027 pxor xmm3,xmm11
3030 » movdqu» XMMWORD PTR[rsi],xmm2 3028 » movdqu» XMMWORD[rsi],xmm2
3031 pxor xmm4,xmm12 3029 pxor xmm4,xmm12
3032 » movdqu» XMMWORD PTR[16+rsi],xmm3 3030 » movdqu» XMMWORD[16+rsi],xmm3
3033 pxor xmm5,xmm13 3031 pxor xmm5,xmm13
3034 » movdqu» XMMWORD PTR[32+rsi],xmm4 3032 » movdqu» XMMWORD[32+rsi],xmm4
3035 pxor xmm6,xmm14 3033 pxor xmm6,xmm14
3036 » movdqu» XMMWORD PTR[48+rsi],xmm5 3034 » movdqu» XMMWORD[48+rsi],xmm5
3037 » lea» rsi,QWORD PTR[64+rsi] 3035 » lea» rsi,[64+rsi]
3038 movdqa xmm2,xmm6 3036 movdqa xmm2,xmm6
3039 » sub» rdx,010h 3037 » sub» rdx,0x10
3040 » jmp» $L$cbc_dec_tail_collected 3038 » jmp» NEAR $L$cbc_dec_tail_collected
3041 3039
3042 ALIGN 16 3040 ALIGN 16
3043 $L$cbc_dec_one:: 3041 $L$cbc_dec_one:
3044 movaps xmm11,xmm2 3042 movaps xmm11,xmm2
3045 » movups» xmm0,XMMWORD PTR[rcx] 3043 » movups» xmm0,XMMWORD[rcx]
3046 » movups» xmm1,XMMWORD PTR[16+rcx] 3044 » movups» xmm1,XMMWORD[16+rcx]
3047 » lea» rcx,QWORD PTR[32+rcx] 3045 » lea» rcx,[32+rcx]
3048 xorps xmm2,xmm0 3046 xorps xmm2,xmm0
3049 $L$oop_dec1_16:: 3047 $L$oop_dec1_16:
3050 DB 102,15,56,222,209 3048 DB 102,15,56,222,209
3051 dec eax 3049 dec eax
3052 » movups» xmm1,XMMWORD PTR[rcx] 3050 » movups» xmm1,XMMWORD[rcx]
3053 » lea» rcx,QWORD PTR[16+rcx] 3051 » lea» rcx,[16+rcx]
3054 » jnz» $L$oop_dec1_16 3052 » jnz» NEAR $L$oop_dec1_16
3055 DB 102,15,56,223,209 3053 DB 102,15,56,223,209
3056 xorps xmm2,xmm10 3054 xorps xmm2,xmm10
3057 movaps xmm10,xmm11 3055 movaps xmm10,xmm11
3058 » jmp» $L$cbc_dec_tail_collected 3056 » jmp» NEAR $L$cbc_dec_tail_collected
3059 ALIGN 16 3057 ALIGN 16
3060 $L$cbc_dec_two:: 3058 $L$cbc_dec_two:
3061 movaps xmm12,xmm3 3059 movaps xmm12,xmm3
3062 call _aesni_decrypt2 3060 call _aesni_decrypt2
3063 pxor xmm2,xmm10 3061 pxor xmm2,xmm10
3064 movaps xmm10,xmm12 3062 movaps xmm10,xmm12
3065 pxor xmm3,xmm11 3063 pxor xmm3,xmm11
3066 » movdqu» XMMWORD PTR[rsi],xmm2 3064 » movdqu» XMMWORD[rsi],xmm2
3067 movdqa xmm2,xmm3 3065 movdqa xmm2,xmm3
3068 » lea» rsi,QWORD PTR[16+rsi] 3066 » lea» rsi,[16+rsi]
3069 » jmp» $L$cbc_dec_tail_collected 3067 » jmp» NEAR $L$cbc_dec_tail_collected
3070 ALIGN 16 3068 ALIGN 16
3071 $L$cbc_dec_three:: 3069 $L$cbc_dec_three:
3072 movaps xmm13,xmm4 3070 movaps xmm13,xmm4
3073 call _aesni_decrypt3 3071 call _aesni_decrypt3
3074 pxor xmm2,xmm10 3072 pxor xmm2,xmm10
3075 movaps xmm10,xmm13 3073 movaps xmm10,xmm13
3076 pxor xmm3,xmm11 3074 pxor xmm3,xmm11
3077 » movdqu» XMMWORD PTR[rsi],xmm2 3075 » movdqu» XMMWORD[rsi],xmm2
3078 pxor xmm4,xmm12 3076 pxor xmm4,xmm12
3079 » movdqu» XMMWORD PTR[16+rsi],xmm3 3077 » movdqu» XMMWORD[16+rsi],xmm3
3080 movdqa xmm2,xmm4 3078 movdqa xmm2,xmm4
3081 » lea» rsi,QWORD PTR[32+rsi] 3079 » lea» rsi,[32+rsi]
3082 » jmp» $L$cbc_dec_tail_collected 3080 » jmp» NEAR $L$cbc_dec_tail_collected
3083 ALIGN 16 3081 ALIGN 16
3084 $L$cbc_dec_four:: 3082 $L$cbc_dec_four:
3085 movaps xmm14,xmm5 3083 movaps xmm14,xmm5
3086 call _aesni_decrypt4 3084 call _aesni_decrypt4
3087 pxor xmm2,xmm10 3085 pxor xmm2,xmm10
3088 movaps xmm10,xmm14 3086 movaps xmm10,xmm14
3089 pxor xmm3,xmm11 3087 pxor xmm3,xmm11
3090 » movdqu» XMMWORD PTR[rsi],xmm2 3088 » movdqu» XMMWORD[rsi],xmm2
3091 pxor xmm4,xmm12 3089 pxor xmm4,xmm12
3092 » movdqu» XMMWORD PTR[16+rsi],xmm3 3090 » movdqu» XMMWORD[16+rsi],xmm3
3093 pxor xmm5,xmm13 3091 pxor xmm5,xmm13
3094 » movdqu» XMMWORD PTR[32+rsi],xmm4 3092 » movdqu» XMMWORD[32+rsi],xmm4
3095 movdqa xmm2,xmm5 3093 movdqa xmm2,xmm5
3096 » lea» rsi,QWORD PTR[48+rsi] 3094 » lea» rsi,[48+rsi]
3097 » jmp» $L$cbc_dec_tail_collected 3095 » jmp» NEAR $L$cbc_dec_tail_collected
3098 3096
3099 ALIGN 16 3097 ALIGN 16
3100 $L$cbc_dec_tail_collected:: 3098 $L$cbc_dec_tail_collected:
3101 » movups» XMMWORD PTR[r8],xmm10 3099 » movups» XMMWORD[r8],xmm10
3102 and rdx,15 3100 and rdx,15
3103 » jnz» $L$cbc_dec_tail_partial 3101 » jnz» NEAR $L$cbc_dec_tail_partial
3104 » movups» XMMWORD PTR[rsi],xmm2 3102 » movups» XMMWORD[rsi],xmm2
3105 » jmp» $L$cbc_dec_ret 3103 » jmp» NEAR $L$cbc_dec_ret
3106 ALIGN 16 3104 ALIGN 16
3107 $L$cbc_dec_tail_partial:: 3105 $L$cbc_dec_tail_partial:
3108 » movaps» XMMWORD PTR[rsp],xmm2 3106 » movaps» XMMWORD[rsp],xmm2
3109 mov rcx,16 3107 mov rcx,16
3110 mov rdi,rsi 3108 mov rdi,rsi
3111 sub rcx,rdx 3109 sub rcx,rdx
3112 » lea» rsi,QWORD PTR[rsp] 3110 » lea» rsi,[rsp]
3113 » DD» 09066A4F3h 3111 » DD» 0x9066A4F3
3114 3112
3115 $L$cbc_dec_ret:: 3113 $L$cbc_dec_ret:
3116 » movaps» xmm6,XMMWORD PTR[16+rsp] 3114 » movaps» xmm6,XMMWORD[16+rsp]
3117 » movaps» xmm7,XMMWORD PTR[32+rsp] 3115 » movaps» xmm7,XMMWORD[32+rsp]
3118 » movaps» xmm8,XMMWORD PTR[48+rsp] 3116 » movaps» xmm8,XMMWORD[48+rsp]
3119 » movaps» xmm9,XMMWORD PTR[64+rsp] 3117 » movaps» xmm9,XMMWORD[64+rsp]
3120 » movaps» xmm10,XMMWORD PTR[80+rsp] 3118 » movaps» xmm10,XMMWORD[80+rsp]
3121 » movaps» xmm11,XMMWORD PTR[96+rsp] 3119 » movaps» xmm11,XMMWORD[96+rsp]
3122 » movaps» xmm12,XMMWORD PTR[112+rsp] 3120 » movaps» xmm12,XMMWORD[112+rsp]
3123 » movaps» xmm13,XMMWORD PTR[128+rsp] 3121 » movaps» xmm13,XMMWORD[128+rsp]
3124 » movaps» xmm14,XMMWORD PTR[144+rsp] 3122 » movaps» xmm14,XMMWORD[144+rsp]
3125 » movaps» xmm15,XMMWORD PTR[160+rsp] 3123 » movaps» xmm15,XMMWORD[160+rsp]
3126 » lea» rsp,QWORD PTR[rbp] 3124 » lea» rsp,[rbp]
3127 pop rbp 3125 pop rbp
3128 $L$cbc_ret:: 3126 $L$cbc_ret:
3129 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 3127 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
3130 » mov» rsi,QWORD PTR[16+rsp] 3128 » mov» rsi,QWORD[16+rsp]
3131 DB 0F3h,0C3h ;repret 3129 DB 0F3h,0C3h ;repret
3132 $L$SEH_end_aesni_cbc_encrypt:: 3130 $L$SEH_end_aesni_cbc_encrypt:
3133 aesni_cbc_encrypt» ENDP 3131 global» aesni_set_decrypt_key
3134 PUBLIC» aesni_set_decrypt_key
3135 3132
3136 ALIGN 16 3133 ALIGN 16
3137 aesni_set_decrypt_key» PROC PUBLIC 3134 aesni_set_decrypt_key:
3138 DB» 048h,083h,0ECh,008h 3135 DB» 0x48,0x83,0xEC,0x08
3139 call __aesni_set_encrypt_key 3136 call __aesni_set_encrypt_key
3140 shl edx,4 3137 shl edx,4
3141 test eax,eax 3138 test eax,eax
3142 » jnz» $L$dec_key_ret 3139 » jnz» NEAR $L$dec_key_ret
3143 » lea» rcx,QWORD PTR[16+rdx*1+r8] 3140 » lea» rcx,[16+rdx*1+r8]
3144 3141
3145 » movups» xmm0,XMMWORD PTR[r8] 3142 » movups» xmm0,XMMWORD[r8]
3146 » movups» xmm1,XMMWORD PTR[rcx] 3143 » movups» xmm1,XMMWORD[rcx]
3147 » movups» XMMWORD PTR[rcx],xmm0 3144 » movups» XMMWORD[rcx],xmm0
3148 » movups» XMMWORD PTR[r8],xmm1 3145 » movups» XMMWORD[r8],xmm1
3149 » lea» r8,QWORD PTR[16+r8] 3146 » lea» r8,[16+r8]
3150 » lea» rcx,QWORD PTR[((-16))+rcx] 3147 » lea» rcx,[((-16))+rcx]
3151 3148
3152 $L$dec_key_inverse:: 3149 $L$dec_key_inverse:
3153 » movups» xmm0,XMMWORD PTR[r8] 3150 » movups» xmm0,XMMWORD[r8]
3154 » movups» xmm1,XMMWORD PTR[rcx] 3151 » movups» xmm1,XMMWORD[rcx]
3155 DB 102,15,56,219,192 3152 DB 102,15,56,219,192
3156 DB 102,15,56,219,201 3153 DB 102,15,56,219,201
3157 » lea» r8,QWORD PTR[16+r8] 3154 » lea» r8,[16+r8]
3158 » lea» rcx,QWORD PTR[((-16))+rcx] 3155 » lea» rcx,[((-16))+rcx]
3159 » movups» XMMWORD PTR[16+rcx],xmm0 3156 » movups» XMMWORD[16+rcx],xmm0
3160 » movups» XMMWORD PTR[(-16)+r8],xmm1 3157 » movups» XMMWORD[(-16)+r8],xmm1
3161 cmp rcx,r8 3158 cmp rcx,r8
3162 » ja» $L$dec_key_inverse 3159 » ja» NEAR $L$dec_key_inverse
3163 3160
3164 » movups» xmm0,XMMWORD PTR[r8] 3161 » movups» xmm0,XMMWORD[r8]
3165 DB 102,15,56,219,192 3162 DB 102,15,56,219,192
3166 » movups» XMMWORD PTR[rcx],xmm0 3163 » movups» XMMWORD[rcx],xmm0
3167 $L$dec_key_ret:: 3164 $L$dec_key_ret:
3168 add rsp,8 3165 add rsp,8
3169 DB 0F3h,0C3h ;repret 3166 DB 0F3h,0C3h ;repret
3170 $L$SEH_end_set_decrypt_key:: 3167 $L$SEH_end_set_decrypt_key:
3171 aesni_set_decrypt_key» ENDP 3168
3172 PUBLIC» aesni_set_encrypt_key 3169 global» aesni_set_encrypt_key
3173 3170
3174 ALIGN 16 3171 ALIGN 16
3175 aesni_set_encrypt_key» PROC PUBLIC 3172 aesni_set_encrypt_key:
3176 __aesni_set_encrypt_key:: 3173 __aesni_set_encrypt_key:
3177 DB» 048h,083h,0ECh,008h 3174 DB» 0x48,0x83,0xEC,0x08
3178 mov rax,-1 3175 mov rax,-1
3179 test rcx,rcx 3176 test rcx,rcx
3180 » jz» $L$enc_key_ret 3177 » jz» NEAR $L$enc_key_ret
3181 test r8,r8 3178 test r8,r8
3182 » jz» $L$enc_key_ret 3179 » jz» NEAR $L$enc_key_ret
3183 3180
3184 » movups» xmm0,XMMWORD PTR[rcx] 3181 » movups» xmm0,XMMWORD[rcx]
3185 xorps xmm4,xmm4 3182 xorps xmm4,xmm4
3186 » lea» rax,QWORD PTR[16+r8] 3183 » lea» rax,[16+r8]
3187 cmp edx,256 3184 cmp edx,256
3188 » je» $L$14rounds 3185 » je» NEAR $L$14rounds
3189 cmp edx,192 3186 cmp edx,192
3190 » je» $L$12rounds 3187 » je» NEAR $L$12rounds
3191 cmp edx,128 3188 cmp edx,128
3192 » jne» $L$bad_keybits 3189 » jne» NEAR $L$bad_keybits
3193 3190
3194 $L$10rounds:: 3191 $L$10rounds:
3195 mov edx,9 3192 mov edx,9
3196 » movups» XMMWORD PTR[r8],xmm0 3193 » movups» XMMWORD[r8],xmm0
3197 DB 102,15,58,223,200,1 3194 DB 102,15,58,223,200,1
3198 call $L$key_expansion_128_cold 3195 call $L$key_expansion_128_cold
3199 DB 102,15,58,223,200,2 3196 DB 102,15,58,223,200,2
3200 call $L$key_expansion_128 3197 call $L$key_expansion_128
3201 DB 102,15,58,223,200,4 3198 DB 102,15,58,223,200,4
3202 call $L$key_expansion_128 3199 call $L$key_expansion_128
3203 DB 102,15,58,223,200,8 3200 DB 102,15,58,223,200,8
3204 call $L$key_expansion_128 3201 call $L$key_expansion_128
3205 DB 102,15,58,223,200,16 3202 DB 102,15,58,223,200,16
3206 call $L$key_expansion_128 3203 call $L$key_expansion_128
3207 DB 102,15,58,223,200,32 3204 DB 102,15,58,223,200,32
3208 call $L$key_expansion_128 3205 call $L$key_expansion_128
3209 DB 102,15,58,223,200,64 3206 DB 102,15,58,223,200,64
3210 call $L$key_expansion_128 3207 call $L$key_expansion_128
3211 DB 102,15,58,223,200,128 3208 DB 102,15,58,223,200,128
3212 call $L$key_expansion_128 3209 call $L$key_expansion_128
3213 DB 102,15,58,223,200,27 3210 DB 102,15,58,223,200,27
3214 call $L$key_expansion_128 3211 call $L$key_expansion_128
3215 DB 102,15,58,223,200,54 3212 DB 102,15,58,223,200,54
3216 call $L$key_expansion_128 3213 call $L$key_expansion_128
3217 » movups» XMMWORD PTR[rax],xmm0 3214 » movups» XMMWORD[rax],xmm0
3218 » mov» DWORD PTR[80+rax],edx 3215 » mov» DWORD[80+rax],edx
3219 xor eax,eax 3216 xor eax,eax
3220 » jmp» $L$enc_key_ret 3217 » jmp» NEAR $L$enc_key_ret
3221 3218
3222 ALIGN 16 3219 ALIGN 16
3223 $L$12rounds:: 3220 $L$12rounds:
3224 » movq» xmm2,QWORD PTR[16+rcx] 3221 » movq» xmm2,QWORD[16+rcx]
3225 mov edx,11 3222 mov edx,11
3226 » movups» XMMWORD PTR[r8],xmm0 3223 » movups» XMMWORD[r8],xmm0
3227 DB 102,15,58,223,202,1 3224 DB 102,15,58,223,202,1
3228 call $L$key_expansion_192a_cold 3225 call $L$key_expansion_192a_cold
3229 DB 102,15,58,223,202,2 3226 DB 102,15,58,223,202,2
3230 call $L$key_expansion_192b 3227 call $L$key_expansion_192b
3231 DB 102,15,58,223,202,4 3228 DB 102,15,58,223,202,4
3232 call $L$key_expansion_192a 3229 call $L$key_expansion_192a
3233 DB 102,15,58,223,202,8 3230 DB 102,15,58,223,202,8
3234 call $L$key_expansion_192b 3231 call $L$key_expansion_192b
3235 DB 102,15,58,223,202,16 3232 DB 102,15,58,223,202,16
3236 call $L$key_expansion_192a 3233 call $L$key_expansion_192a
3237 DB 102,15,58,223,202,32 3234 DB 102,15,58,223,202,32
3238 call $L$key_expansion_192b 3235 call $L$key_expansion_192b
3239 DB 102,15,58,223,202,64 3236 DB 102,15,58,223,202,64
3240 call $L$key_expansion_192a 3237 call $L$key_expansion_192a
3241 DB 102,15,58,223,202,128 3238 DB 102,15,58,223,202,128
3242 call $L$key_expansion_192b 3239 call $L$key_expansion_192b
3243 » movups» XMMWORD PTR[rax],xmm0 3240 » movups» XMMWORD[rax],xmm0
3244 » mov» DWORD PTR[48+rax],edx 3241 » mov» DWORD[48+rax],edx
3245 xor rax,rax 3242 xor rax,rax
3246 » jmp» $L$enc_key_ret 3243 » jmp» NEAR $L$enc_key_ret
3247 3244
3248 ALIGN 16 3245 ALIGN 16
3249 $L$14rounds:: 3246 $L$14rounds:
3250 » movups» xmm2,XMMWORD PTR[16+rcx] 3247 » movups» xmm2,XMMWORD[16+rcx]
3251 mov edx,13 3248 mov edx,13
3252 » lea» rax,QWORD PTR[16+rax] 3249 » lea» rax,[16+rax]
3253 » movups» XMMWORD PTR[r8],xmm0 3250 » movups» XMMWORD[r8],xmm0
3254 » movups» XMMWORD PTR[16+r8],xmm2 3251 » movups» XMMWORD[16+r8],xmm2
3255 DB 102,15,58,223,202,1 3252 DB 102,15,58,223,202,1
3256 call $L$key_expansion_256a_cold 3253 call $L$key_expansion_256a_cold
3257 DB 102,15,58,223,200,1 3254 DB 102,15,58,223,200,1
3258 call $L$key_expansion_256b 3255 call $L$key_expansion_256b
3259 DB 102,15,58,223,202,2 3256 DB 102,15,58,223,202,2
3260 call $L$key_expansion_256a 3257 call $L$key_expansion_256a
3261 DB 102,15,58,223,200,2 3258 DB 102,15,58,223,200,2
3262 call $L$key_expansion_256b 3259 call $L$key_expansion_256b
3263 DB 102,15,58,223,202,4 3260 DB 102,15,58,223,202,4
3264 call $L$key_expansion_256a 3261 call $L$key_expansion_256a
3265 DB 102,15,58,223,200,4 3262 DB 102,15,58,223,200,4
3266 call $L$key_expansion_256b 3263 call $L$key_expansion_256b
3267 DB 102,15,58,223,202,8 3264 DB 102,15,58,223,202,8
3268 call $L$key_expansion_256a 3265 call $L$key_expansion_256a
3269 DB 102,15,58,223,200,8 3266 DB 102,15,58,223,200,8
3270 call $L$key_expansion_256b 3267 call $L$key_expansion_256b
3271 DB 102,15,58,223,202,16 3268 DB 102,15,58,223,202,16
3272 call $L$key_expansion_256a 3269 call $L$key_expansion_256a
3273 DB 102,15,58,223,200,16 3270 DB 102,15,58,223,200,16
3274 call $L$key_expansion_256b 3271 call $L$key_expansion_256b
3275 DB 102,15,58,223,202,32 3272 DB 102,15,58,223,202,32
3276 call $L$key_expansion_256a 3273 call $L$key_expansion_256a
3277 DB 102,15,58,223,200,32 3274 DB 102,15,58,223,200,32
3278 call $L$key_expansion_256b 3275 call $L$key_expansion_256b
3279 DB 102,15,58,223,202,64 3276 DB 102,15,58,223,202,64
3280 call $L$key_expansion_256a 3277 call $L$key_expansion_256a
3281 » movups» XMMWORD PTR[rax],xmm0 3278 » movups» XMMWORD[rax],xmm0
3282 » mov» DWORD PTR[16+rax],edx 3279 » mov» DWORD[16+rax],edx
3283 xor rax,rax 3280 xor rax,rax
3284 » jmp» $L$enc_key_ret 3281 » jmp» NEAR $L$enc_key_ret
3285 3282
3286 ALIGN 16 3283 ALIGN 16
3287 $L$bad_keybits:: 3284 $L$bad_keybits:
3288 mov rax,-2 3285 mov rax,-2
3289 $L$enc_key_ret:: 3286 $L$enc_key_ret:
3290 add rsp,8 3287 add rsp,8
3291 DB 0F3h,0C3h ;repret 3288 DB 0F3h,0C3h ;repret
3292 $L$SEH_end_set_encrypt_key:: 3289 $L$SEH_end_set_encrypt_key:
3293 3290
3294 ALIGN 16 3291 ALIGN 16
3295 $L$key_expansion_128:: 3292 $L$key_expansion_128:
3296 » movups» XMMWORD PTR[rax],xmm0 3293 » movups» XMMWORD[rax],xmm0
3297 » lea» rax,QWORD PTR[16+rax] 3294 » lea» rax,[16+rax]
3298 $L$key_expansion_128_cold:: 3295 $L$key_expansion_128_cold:
3299 shufps xmm4,xmm0,16 3296 shufps xmm4,xmm0,16
3300 xorps xmm0,xmm4 3297 xorps xmm0,xmm4
3301 shufps xmm4,xmm0,140 3298 shufps xmm4,xmm0,140
3302 xorps xmm0,xmm4 3299 xorps xmm0,xmm4
3303 shufps xmm1,xmm1,255 3300 shufps xmm1,xmm1,255
3304 xorps xmm0,xmm1 3301 xorps xmm0,xmm1
3305 DB 0F3h,0C3h ;repret 3302 DB 0F3h,0C3h ;repret
3306 3303
3307 ALIGN 16 3304 ALIGN 16
3308 $L$key_expansion_192a:: 3305 $L$key_expansion_192a:
3309 » movups» XMMWORD PTR[rax],xmm0 3306 » movups» XMMWORD[rax],xmm0
3310 » lea» rax,QWORD PTR[16+rax] 3307 » lea» rax,[16+rax]
3311 $L$key_expansion_192a_cold:: 3308 $L$key_expansion_192a_cold:
3312 movaps xmm5,xmm2 3309 movaps xmm5,xmm2
3313 $L$key_expansion_192b_warm:: 3310 $L$key_expansion_192b_warm:
3314 shufps xmm4,xmm0,16 3311 shufps xmm4,xmm0,16
3315 movdqa xmm3,xmm2 3312 movdqa xmm3,xmm2
3316 xorps xmm0,xmm4 3313 xorps xmm0,xmm4
3317 shufps xmm4,xmm0,140 3314 shufps xmm4,xmm0,140
3318 pslldq xmm3,4 3315 pslldq xmm3,4
3319 xorps xmm0,xmm4 3316 xorps xmm0,xmm4
3320 pshufd xmm1,xmm1,85 3317 pshufd xmm1,xmm1,85
3321 pxor xmm2,xmm3 3318 pxor xmm2,xmm3
3322 pxor xmm0,xmm1 3319 pxor xmm0,xmm1
3323 pshufd xmm3,xmm0,255 3320 pshufd xmm3,xmm0,255
3324 pxor xmm2,xmm3 3321 pxor xmm2,xmm3
3325 DB 0F3h,0C3h ;repret 3322 DB 0F3h,0C3h ;repret
3326 3323
3327 ALIGN 16 3324 ALIGN 16
3328 $L$key_expansion_192b:: 3325 $L$key_expansion_192b:
3329 movaps xmm3,xmm0 3326 movaps xmm3,xmm0
3330 shufps xmm5,xmm0,68 3327 shufps xmm5,xmm0,68
3331 » movups» XMMWORD PTR[rax],xmm5 3328 » movups» XMMWORD[rax],xmm5
3332 shufps xmm3,xmm2,78 3329 shufps xmm3,xmm2,78
3333 » movups» XMMWORD PTR[16+rax],xmm3 3330 » movups» XMMWORD[16+rax],xmm3
3334 » lea» rax,QWORD PTR[32+rax] 3331 » lea» rax,[32+rax]
3335 » jmp» $L$key_expansion_192b_warm 3332 » jmp» NEAR $L$key_expansion_192b_warm
3336 3333
3337 ALIGN 16 3334 ALIGN 16
3338 $L$key_expansion_256a:: 3335 $L$key_expansion_256a:
3339 » movups» XMMWORD PTR[rax],xmm2 3336 » movups» XMMWORD[rax],xmm2
3340 » lea» rax,QWORD PTR[16+rax] 3337 » lea» rax,[16+rax]
3341 $L$key_expansion_256a_cold:: 3338 $L$key_expansion_256a_cold:
3342 shufps xmm4,xmm0,16 3339 shufps xmm4,xmm0,16
3343 xorps xmm0,xmm4 3340 xorps xmm0,xmm4
3344 shufps xmm4,xmm0,140 3341 shufps xmm4,xmm0,140
3345 xorps xmm0,xmm4 3342 xorps xmm0,xmm4
3346 shufps xmm1,xmm1,255 3343 shufps xmm1,xmm1,255
3347 xorps xmm0,xmm1 3344 xorps xmm0,xmm1
3348 DB 0F3h,0C3h ;repret 3345 DB 0F3h,0C3h ;repret
3349 3346
3350 ALIGN 16 3347 ALIGN 16
3351 $L$key_expansion_256b:: 3348 $L$key_expansion_256b:
3352 » movups» XMMWORD PTR[rax],xmm0 3349 » movups» XMMWORD[rax],xmm0
3353 » lea» rax,QWORD PTR[16+rax] 3350 » lea» rax,[16+rax]
3354 3351
3355 shufps xmm4,xmm2,16 3352 shufps xmm4,xmm2,16
3356 xorps xmm2,xmm4 3353 xorps xmm2,xmm4
3357 shufps xmm4,xmm2,140 3354 shufps xmm4,xmm2,140
3358 xorps xmm2,xmm4 3355 xorps xmm2,xmm4
3359 shufps xmm1,xmm1,170 3356 shufps xmm1,xmm1,170
3360 xorps xmm2,xmm1 3357 xorps xmm2,xmm1
3361 DB 0F3h,0C3h ;repret 3358 DB 0F3h,0C3h ;repret
3362 aesni_set_encrypt_key» ENDP 3359
3363 3360
3364 ALIGN 64 3361 ALIGN 64
3365 $L$bswap_mask:: 3362 $L$bswap_mask:
3366 DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 3363 DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
3367 $L$increment32:: 3364 $L$increment32:
3368 DD 6,6,6,0 3365 DD 6,6,6,0
3369 $L$increment64:: 3366 $L$increment64:
3370 DD 1,0,0,0 3367 DD 1,0,0,0
3371 $L$xts_magic:: 3368 $L$xts_magic:
3372 » DD» 087h,0,1,0 3369 » DD» 0x87,0,1,0
3373 $L$increment1:: 3370 $L$increment1:
3374 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 3371 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
3375 3372
3376 DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 3373 DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
3377 DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 3374 DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
3378 DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 3375 DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
3379 DB 115,108,46,111,114,103,62,0 3376 DB 115,108,46,111,114,103,62,0
3380 ALIGN 64 3377 ALIGN 64
3381 EXTERN» __imp_RtlVirtualUnwind:NEAR 3378 EXTERN» __imp_RtlVirtualUnwind
3382 3379
3383 ALIGN 16 3380 ALIGN 16
3384 ecb_se_handler» PROC PRIVATE 3381 ecb_se_handler:
3385 push rsi 3382 push rsi
3386 push rdi 3383 push rdi
3387 push rbx 3384 push rbx
3388 push rbp 3385 push rbp
3389 push r12 3386 push r12
3390 push r13 3387 push r13
3391 push r14 3388 push r14
3392 push r15 3389 push r15
3393 pushfq 3390 pushfq
3394 sub rsp,64 3391 sub rsp,64
3395 3392
3396 » mov» rax,QWORD PTR[152+r8] 3393 » mov» rax,QWORD[152+r8]
3397 3394
3398 » jmp» $L$common_seh_tail 3395 » jmp» NEAR $L$common_seh_tail
3399 ecb_se_handler» ENDP 3396
3400 3397
3401 3398
3402 ALIGN 16 3399 ALIGN 16
3403 ccm64_se_handler» PROC PRIVATE 3400 ccm64_se_handler:
3404 push rsi 3401 push rsi
3405 push rdi 3402 push rdi
3406 push rbx 3403 push rbx
3407 push rbp 3404 push rbp
3408 push r12 3405 push r12
3409 push r13 3406 push r13
3410 push r14 3407 push r14
3411 push r15 3408 push r15
3412 pushfq 3409 pushfq
3413 sub rsp,64 3410 sub rsp,64
3414 3411
3415 » mov» rax,QWORD PTR[120+r8] 3412 » mov» rax,QWORD[120+r8]
3416 » mov» rbx,QWORD PTR[248+r8] 3413 » mov» rbx,QWORD[248+r8]
3417 3414
3418 » mov» rsi,QWORD PTR[8+r9] 3415 » mov» rsi,QWORD[8+r9]
3419 » mov» r11,QWORD PTR[56+r9] 3416 » mov» r11,QWORD[56+r9]
3420 3417
3421 » mov» r10d,DWORD PTR[r11] 3418 » mov» r10d,DWORD[r11]
3422 » lea» r10,QWORD PTR[r10*1+rsi] 3419 » lea» r10,[r10*1+rsi]
3423 cmp rbx,r10 3420 cmp rbx,r10
3424 » jb» $L$common_seh_tail 3421 » jb» NEAR $L$common_seh_tail
3425 3422
3426 » mov» rax,QWORD PTR[152+r8] 3423 » mov» rax,QWORD[152+r8]
3427 3424
3428 » mov» r10d,DWORD PTR[4+r11] 3425 » mov» r10d,DWORD[4+r11]
3429 » lea» r10,QWORD PTR[r10*1+rsi] 3426 » lea» r10,[r10*1+rsi]
3430 cmp rbx,r10 3427 cmp rbx,r10
3431 » jae» $L$common_seh_tail 3428 » jae» NEAR $L$common_seh_tail
3432 3429
3433 » lea» rsi,QWORD PTR[rax] 3430 » lea» rsi,[rax]
3434 » lea» rdi,QWORD PTR[512+r8] 3431 » lea» rdi,[512+r8]
3435 mov ecx,8 3432 mov ecx,8
3436 » DD» 0a548f3fch 3433 » DD» 0xa548f3fc
3437 » lea» rax,QWORD PTR[88+rax] 3434 » lea» rax,[88+rax]
3438 3435
3439 » jmp» $L$common_seh_tail 3436 » jmp» NEAR $L$common_seh_tail
3440 ccm64_se_handler» ENDP 3437
3441 3438
3442 3439
3443 ALIGN 16 3440 ALIGN 16
3444 ctr_xts_se_handler» PROC PRIVATE 3441 ctr_xts_se_handler:
3445 push rsi 3442 push rsi
3446 push rdi 3443 push rdi
3447 push rbx 3444 push rbx
3448 push rbp 3445 push rbp
3449 push r12 3446 push r12
3450 push r13 3447 push r13
3451 push r14 3448 push r14
3452 push r15 3449 push r15
3453 pushfq 3450 pushfq
3454 sub rsp,64 3451 sub rsp,64
3455 3452
3456 » mov» rax,QWORD PTR[120+r8] 3453 » mov» rax,QWORD[120+r8]
3457 » mov» rbx,QWORD PTR[248+r8] 3454 » mov» rbx,QWORD[248+r8]
3458 3455
3459 » mov» rsi,QWORD PTR[8+r9] 3456 » mov» rsi,QWORD[8+r9]
3460 » mov» r11,QWORD PTR[56+r9] 3457 » mov» r11,QWORD[56+r9]
3461 3458
3462 » mov» r10d,DWORD PTR[r11] 3459 » mov» r10d,DWORD[r11]
3463 » lea» r10,QWORD PTR[r10*1+rsi] 3460 » lea» r10,[r10*1+rsi]
3464 cmp rbx,r10 3461 cmp rbx,r10
3465 » jb» $L$common_seh_tail 3462 » jb» NEAR $L$common_seh_tail
3466 3463
3467 » mov» rax,QWORD PTR[152+r8] 3464 » mov» rax,QWORD[152+r8]
3468 3465
3469 » mov» r10d,DWORD PTR[4+r11] 3466 » mov» r10d,DWORD[4+r11]
3470 » lea» r10,QWORD PTR[r10*1+rsi] 3467 » lea» r10,[r10*1+rsi]
3471 cmp rbx,r10 3468 cmp rbx,r10
3472 » jae» $L$common_seh_tail 3469 » jae» NEAR $L$common_seh_tail
3473 3470
3474 » mov» rax,QWORD PTR[160+r8] 3471 » mov» rax,QWORD[160+r8]
3475 » lea» rsi,QWORD PTR[((-160))+rax] 3472 » lea» rsi,[((-160))+rax]
3476 » lea» rdi,QWORD PTR[512+r8] 3473 » lea» rdi,[512+r8]
3477 mov ecx,20 3474 mov ecx,20
3478 » DD» 0a548f3fch 3475 » DD» 0xa548f3fc
3479 3476
3480 » jmp» $L$common_rbp_tail 3477 » jmp» NEAR $L$common_rbp_tail
3481 ctr_xts_se_handler» ENDP 3478
3482 3479
3483 ALIGN 16 3480 ALIGN 16
3484 cbc_se_handler» PROC PRIVATE 3481 cbc_se_handler:
3485 push rsi 3482 push rsi
3486 push rdi 3483 push rdi
3487 push rbx 3484 push rbx
3488 push rbp 3485 push rbp
3489 push r12 3486 push r12
3490 push r13 3487 push r13
3491 push r14 3488 push r14
3492 push r15 3489 push r15
3493 pushfq 3490 pushfq
3494 sub rsp,64 3491 sub rsp,64
3495 3492
3496 » mov» rax,QWORD PTR[152+r8] 3493 » mov» rax,QWORD[152+r8]
3497 » mov» rbx,QWORD PTR[248+r8] 3494 » mov» rbx,QWORD[248+r8]
3498 3495
3499 » lea» r10,QWORD PTR[$L$cbc_decrypt] 3496 » lea» r10,[$L$cbc_decrypt]
3500 cmp rbx,r10 3497 cmp rbx,r10
3501 » jb» $L$common_seh_tail 3498 » jb» NEAR $L$common_seh_tail
3502 3499
3503 » lea» r10,QWORD PTR[$L$cbc_decrypt_body] 3500 » lea» r10,[$L$cbc_decrypt_body]
3504 cmp rbx,r10 3501 cmp rbx,r10
3505 » jb» $L$restore_cbc_rax 3502 » jb» NEAR $L$restore_cbc_rax
3506 3503
3507 » lea» r10,QWORD PTR[$L$cbc_ret] 3504 » lea» r10,[$L$cbc_ret]
3508 cmp rbx,r10 3505 cmp rbx,r10
3509 » jae» $L$common_seh_tail 3506 » jae» NEAR $L$common_seh_tail
3510 3507
3511 » lea» rsi,QWORD PTR[16+rax] 3508 » lea» rsi,[16+rax]
3512 » lea» rdi,QWORD PTR[512+r8] 3509 » lea» rdi,[512+r8]
3513 mov ecx,20 3510 mov ecx,20
3514 » DD» 0a548f3fch 3511 » DD» 0xa548f3fc
3515 3512
3516 $L$common_rbp_tail:: 3513 $L$common_rbp_tail:
3517 » mov» rax,QWORD PTR[160+r8] 3514 » mov» rax,QWORD[160+r8]
3518 » mov» rbp,QWORD PTR[rax] 3515 » mov» rbp,QWORD[rax]
3519 » lea» rax,QWORD PTR[8+rax] 3516 » lea» rax,[8+rax]
3520 » mov» QWORD PTR[160+r8],rbp 3517 » mov» QWORD[160+r8],rbp
3521 » jmp» $L$common_seh_tail 3518 » jmp» NEAR $L$common_seh_tail
3522 3519
3523 $L$restore_cbc_rax:: 3520 $L$restore_cbc_rax:
3524 » mov» rax,QWORD PTR[120+r8] 3521 » mov» rax,QWORD[120+r8]
3525 3522
3526 $L$common_seh_tail:: 3523 $L$common_seh_tail:
3527 » mov» rdi,QWORD PTR[8+rax] 3524 » mov» rdi,QWORD[8+rax]
3528 » mov» rsi,QWORD PTR[16+rax] 3525 » mov» rsi,QWORD[16+rax]
3529 » mov» QWORD PTR[152+r8],rax 3526 » mov» QWORD[152+r8],rax
3530 » mov» QWORD PTR[168+r8],rsi 3527 » mov» QWORD[168+r8],rsi
3531 » mov» QWORD PTR[176+r8],rdi 3528 » mov» QWORD[176+r8],rdi
3532 3529
3533 » mov» rdi,QWORD PTR[40+r9] 3530 » mov» rdi,QWORD[40+r9]
3534 mov rsi,r8 3531 mov rsi,r8
3535 mov ecx,154 3532 mov ecx,154
3536 » DD» 0a548f3fch 3533 » DD» 0xa548f3fc
3537 3534
3538 mov rsi,r9 3535 mov rsi,r9
3539 xor rcx,rcx 3536 xor rcx,rcx
3540 » mov» rdx,QWORD PTR[8+rsi] 3537 » mov» rdx,QWORD[8+rsi]
3541 » mov» r8,QWORD PTR[rsi] 3538 » mov» r8,QWORD[rsi]
3542 » mov» r9,QWORD PTR[16+rsi] 3539 » mov» r9,QWORD[16+rsi]
3543 » mov» r10,QWORD PTR[40+rsi] 3540 » mov» r10,QWORD[40+rsi]
3544 » lea» r11,QWORD PTR[56+rsi] 3541 » lea» r11,[56+rsi]
3545 » lea» r12,QWORD PTR[24+rsi] 3542 » lea» r12,[24+rsi]
3546 » mov» QWORD PTR[32+rsp],r10 3543 » mov» QWORD[32+rsp],r10
3547 » mov» QWORD PTR[40+rsp],r11 3544 » mov» QWORD[40+rsp],r11
3548 » mov» QWORD PTR[48+rsp],r12 3545 » mov» QWORD[48+rsp],r12
3549 » mov» QWORD PTR[56+rsp],rcx 3546 » mov» QWORD[56+rsp],rcx
3550 » call» QWORD PTR[__imp_RtlVirtualUnwind] 3547 » call» QWORD[__imp_RtlVirtualUnwind]
3551 3548
3552 mov eax,1 3549 mov eax,1
3553 add rsp,64 3550 add rsp,64
3554 popfq 3551 popfq
3555 pop r15 3552 pop r15
3556 pop r14 3553 pop r14
3557 pop r13 3554 pop r13
3558 pop r12 3555 pop r12
3559 pop rbp 3556 pop rbp
3560 pop rbx 3557 pop rbx
3561 pop rdi 3558 pop rdi
3562 pop rsi 3559 pop rsi
3563 DB 0F3h,0C3h ;repret 3560 DB 0F3h,0C3h ;repret
3564 cbc_se_handler ENDP
3565 3561
3566 .text$» ENDS 3562
3567 .pdata» SEGMENT READONLY ALIGN(4) 3563 section».pdata rdata align=4
3568 ALIGN 4 3564 ALIGN 4
3569 » DD» imagerel $L$SEH_begin_aesni_ecb_encrypt 3565 » DD» $L$SEH_begin_aesni_ecb_encrypt wrt ..imagebase
3570 » DD» imagerel $L$SEH_end_aesni_ecb_encrypt 3566 » DD» $L$SEH_end_aesni_ecb_encrypt wrt ..imagebase
3571 » DD» imagerel $L$SEH_info_ecb 3567 » DD» $L$SEH_info_ecb wrt ..imagebase
3572 3568
3573 » DD» imagerel $L$SEH_begin_aesni_ccm64_encrypt_blocks 3569 » DD» $L$SEH_begin_aesni_ccm64_encrypt_blocks wrt ..imagebase
3574 » DD» imagerel $L$SEH_end_aesni_ccm64_encrypt_blocks 3570 » DD» $L$SEH_end_aesni_ccm64_encrypt_blocks wrt ..imagebase
3575 » DD» imagerel $L$SEH_info_ccm64_enc 3571 » DD» $L$SEH_info_ccm64_enc wrt ..imagebase
3576 3572
3577 » DD» imagerel $L$SEH_begin_aesni_ccm64_decrypt_blocks 3573 » DD» $L$SEH_begin_aesni_ccm64_decrypt_blocks wrt ..imagebase
3578 » DD» imagerel $L$SEH_end_aesni_ccm64_decrypt_blocks 3574 » DD» $L$SEH_end_aesni_ccm64_decrypt_blocks wrt ..imagebase
3579 » DD» imagerel $L$SEH_info_ccm64_dec 3575 » DD» $L$SEH_info_ccm64_dec wrt ..imagebase
3580 3576
3581 » DD» imagerel $L$SEH_begin_aesni_ctr32_encrypt_blocks 3577 » DD» $L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase
3582 » DD» imagerel $L$SEH_end_aesni_ctr32_encrypt_blocks 3578 » DD» $L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase
3583 » DD» imagerel $L$SEH_info_ctr32 3579 » DD» $L$SEH_info_ctr32 wrt ..imagebase
3584 3580
3585 » DD» imagerel $L$SEH_begin_aesni_xts_encrypt 3581 » DD» $L$SEH_begin_aesni_xts_encrypt wrt ..imagebase
3586 » DD» imagerel $L$SEH_end_aesni_xts_encrypt 3582 » DD» $L$SEH_end_aesni_xts_encrypt wrt ..imagebase
3587 » DD» imagerel $L$SEH_info_xts_enc 3583 » DD» $L$SEH_info_xts_enc wrt ..imagebase
3588 3584
3589 » DD» imagerel $L$SEH_begin_aesni_xts_decrypt 3585 » DD» $L$SEH_begin_aesni_xts_decrypt wrt ..imagebase
3590 » DD» imagerel $L$SEH_end_aesni_xts_decrypt 3586 » DD» $L$SEH_end_aesni_xts_decrypt wrt ..imagebase
3591 » DD» imagerel $L$SEH_info_xts_dec 3587 » DD» $L$SEH_info_xts_dec wrt ..imagebase
3592 » DD» imagerel $L$SEH_begin_aesni_cbc_encrypt 3588 » DD» $L$SEH_begin_aesni_cbc_encrypt wrt ..imagebase
3593 » DD» imagerel $L$SEH_end_aesni_cbc_encrypt 3589 » DD» $L$SEH_end_aesni_cbc_encrypt wrt ..imagebase
3594 » DD» imagerel $L$SEH_info_cbc 3590 » DD» $L$SEH_info_cbc wrt ..imagebase
3595 3591
3596 » DD» imagerel aesni_set_decrypt_key 3592 » DD» aesni_set_decrypt_key wrt ..imagebase
3597 » DD» imagerel $L$SEH_end_set_decrypt_key 3593 » DD» $L$SEH_end_set_decrypt_key wrt ..imagebase
3598 » DD» imagerel $L$SEH_info_key 3594 » DD» $L$SEH_info_key wrt ..imagebase
3599 3595
3600 » DD» imagerel aesni_set_encrypt_key 3596 » DD» aesni_set_encrypt_key wrt ..imagebase
3601 » DD» imagerel $L$SEH_end_set_encrypt_key 3597 » DD» $L$SEH_end_set_encrypt_key wrt ..imagebase
3602 » DD» imagerel $L$SEH_info_key 3598 » DD» $L$SEH_info_key wrt ..imagebase
3603 .pdata» ENDS 3599 section».xdata rdata align=8
3604 .xdata» SEGMENT READONLY ALIGN(8)
3605 ALIGN 8 3600 ALIGN 8
3606 $L$SEH_info_ecb:: 3601 $L$SEH_info_ecb:
3607 DB 9,0,0,0 3602 DB 9,0,0,0
3608 » DD» imagerel ecb_se_handler 3603 » DD» ecb_se_handler wrt ..imagebase
3609 $L$SEH_info_ccm64_enc:: 3604 $L$SEH_info_ccm64_enc:
3610 DB 9,0,0,0 3605 DB 9,0,0,0
3611 » DD» imagerel ccm64_se_handler 3606 » DD» ccm64_se_handler wrt ..imagebase
3612 » DD» imagerel $L$ccm64_enc_body,imagerel $L$ccm64_enc_ret 3607 » DD» $L$ccm64_enc_body wrt ..imagebase,$L$ccm64_enc_ret wrt ..imageba se
3613 $L$SEH_info_ccm64_dec:: 3608 $L$SEH_info_ccm64_dec:
3614 DB 9,0,0,0 3609 DB 9,0,0,0
3615 » DD» imagerel ccm64_se_handler 3610 » DD» ccm64_se_handler wrt ..imagebase
3616 » DD» imagerel $L$ccm64_dec_body,imagerel $L$ccm64_dec_ret 3611 » DD» $L$ccm64_dec_body wrt ..imagebase,$L$ccm64_dec_ret wrt ..imageba se
3617 $L$SEH_info_ctr32:: 3612 $L$SEH_info_ctr32:
3618 DB 9,0,0,0 3613 DB 9,0,0,0
3619 » DD» imagerel ctr_xts_se_handler 3614 » DD» ctr_xts_se_handler wrt ..imagebase
3620 » DD» imagerel $L$ctr32_body,imagerel $L$ctr32_epilogue 3615 » DD» $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase
3621 $L$SEH_info_xts_enc:: 3616 $L$SEH_info_xts_enc:
3622 DB 9,0,0,0 3617 DB 9,0,0,0
3623 » DD» imagerel ctr_xts_se_handler 3618 » DD» ctr_xts_se_handler wrt ..imagebase
3624 » DD» imagerel $L$xts_enc_body,imagerel $L$xts_enc_epilogue 3619 » DD» $L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imageb ase
3625 $L$SEH_info_xts_dec:: 3620 $L$SEH_info_xts_dec:
3626 DB 9,0,0,0 3621 DB 9,0,0,0
3627 » DD» imagerel ctr_xts_se_handler 3622 » DD» ctr_xts_se_handler wrt ..imagebase
3628 » DD» imagerel $L$xts_dec_body,imagerel $L$xts_dec_epilogue 3623 » DD» $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imageb ase
3629 $L$SEH_info_cbc:: 3624 $L$SEH_info_cbc:
3630 DB 9,0,0,0 3625 DB 9,0,0,0
3631 » DD» imagerel cbc_se_handler 3626 » DD» cbc_se_handler wrt ..imagebase
3632 $L$SEH_info_key:: 3627 $L$SEH_info_key:
3633 DB» 001h,004h,001h,000h 3628 DB» 0x01,0x04,0x01,0x00
3634 DB» 004h,002h,000h,000h 3629 DB» 0x04,0x02,0x00,0x00
3635
3636 .xdata» ENDS
3637 END
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698