1 1.1 christos #include <machine/asm.h> 2 1.1 christos .text 3 1.1 christos .globl aesni_encrypt 4 1.1 christos .type aesni_encrypt,@function 5 1.1 christos .align 16 6 1.1 christos aesni_encrypt: 7 1.1 christos .L_aesni_encrypt_begin: 8 1.1 christos movl 4(%esp),%eax 9 1.1 christos movl 12(%esp),%edx 10 1.1 christos movups (%eax),%xmm2 11 1.1 christos movl 240(%edx),%ecx 12 1.1 christos movl 8(%esp),%eax 13 1.1 christos movups (%edx),%xmm0 14 1.1 christos movups 16(%edx),%xmm1 15 1.1 christos leal 32(%edx),%edx 16 1.1 christos xorps %xmm0,%xmm2 17 1.1 christos .L000enc1_loop_1: 18 1.1 christos .byte 102,15,56,220,209 19 1.1 christos decl %ecx 20 1.1 christos movups (%edx),%xmm1 21 1.1 christos leal 16(%edx),%edx 22 1.1 christos jnz .L000enc1_loop_1 23 1.1 christos .byte 102,15,56,221,209 24 1.1 christos pxor %xmm0,%xmm0 25 1.1 christos pxor %xmm1,%xmm1 26 1.1 christos movups %xmm2,(%eax) 27 1.1 christos pxor %xmm2,%xmm2 28 1.1 christos ret 29 1.1 christos .size aesni_encrypt,.-.L_aesni_encrypt_begin 30 1.1 christos .globl aesni_decrypt 31 1.1 christos .type aesni_decrypt,@function 32 1.1 christos .align 16 33 1.1 christos aesni_decrypt: 34 1.1 christos .L_aesni_decrypt_begin: 35 1.1 christos movl 4(%esp),%eax 36 1.1 christos movl 12(%esp),%edx 37 1.1 christos movups (%eax),%xmm2 38 1.1 christos movl 240(%edx),%ecx 39 1.1 christos movl 8(%esp),%eax 40 1.1 christos movups (%edx),%xmm0 41 1.1 christos movups 16(%edx),%xmm1 42 1.1 christos leal 32(%edx),%edx 43 1.1 christos xorps %xmm0,%xmm2 44 1.1 christos .L001dec1_loop_2: 45 1.1 christos .byte 102,15,56,222,209 46 1.1 christos decl %ecx 47 1.1 christos movups (%edx),%xmm1 48 1.1 christos leal 16(%edx),%edx 49 1.1 christos jnz .L001dec1_loop_2 50 1.1 christos .byte 102,15,56,223,209 51 1.1 christos pxor %xmm0,%xmm0 52 1.1 christos pxor %xmm1,%xmm1 53 1.1 christos movups %xmm2,(%eax) 54 1.1 christos pxor %xmm2,%xmm2 55 1.1 christos ret 56 1.1 christos .size aesni_decrypt,.-.L_aesni_decrypt_begin 57 1.1 christos .type _aesni_encrypt2,@function 58 1.1 christos .align 16 59 1.1 christos _aesni_encrypt2: 60 1.1 christos movups (%edx),%xmm0 61 1.1 christos shll $4,%ecx 62 1.1 christos movups 16(%edx),%xmm1 63 1.1 christos xorps %xmm0,%xmm2 64 1.1 christos pxor %xmm0,%xmm3 65 1.1 christos movups 32(%edx),%xmm0 66 1.1 christos leal 32(%edx,%ecx,1),%edx 67 1.1 christos negl %ecx 68 1.1 christos addl $16,%ecx 69 1.1 christos .L002enc2_loop: 70 1.1 christos .byte 102,15,56,220,209 71 1.1 christos .byte 102,15,56,220,217 72 1.1 christos movups (%edx,%ecx,1),%xmm1 73 1.1 christos addl $32,%ecx 74 1.1 christos .byte 102,15,56,220,208 75 1.1 christos .byte 102,15,56,220,216 76 1.1 christos movups -16(%edx,%ecx,1),%xmm0 77 1.1 christos jnz .L002enc2_loop 78 1.1 christos .byte 102,15,56,220,209 79 1.1 christos .byte 102,15,56,220,217 80 1.1 christos .byte 102,15,56,221,208 81 1.1 christos .byte 102,15,56,221,216 82 1.1 christos ret 83 1.1 christos .size _aesni_encrypt2,.-_aesni_encrypt2 84 1.1 christos .type _aesni_decrypt2,@function 85 1.1 christos .align 16 86 1.1 christos _aesni_decrypt2: 87 1.1 christos movups (%edx),%xmm0 88 1.1 christos shll $4,%ecx 89 1.1 christos movups 16(%edx),%xmm1 90 1.1 christos xorps %xmm0,%xmm2 91 1.1 christos pxor %xmm0,%xmm3 92 1.1 christos movups 32(%edx),%xmm0 93 1.1 christos leal 32(%edx,%ecx,1),%edx 94 1.1 christos negl %ecx 95 1.1 christos addl $16,%ecx 96 1.1 christos .L003dec2_loop: 97 1.1 christos .byte 102,15,56,222,209 98 1.1 christos .byte 102,15,56,222,217 99 1.1 christos movups (%edx,%ecx,1),%xmm1 100 1.1 christos addl $32,%ecx 101 1.1 christos .byte 102,15,56,222,208 102 1.1 christos .byte 102,15,56,222,216 103 1.1 christos movups -16(%edx,%ecx,1),%xmm0 104 1.1 christos jnz .L003dec2_loop 105 1.1 christos .byte 102,15,56,222,209 106 1.1 christos .byte 102,15,56,222,217 107 1.1 christos .byte 102,15,56,223,208 108 1.1 christos .byte 102,15,56,223,216 109 1.1 christos ret 110 1.1 christos .size _aesni_decrypt2,.-_aesni_decrypt2 111 1.1 christos .type _aesni_encrypt3,@function 112 1.1 christos .align 16 113 1.1 christos _aesni_encrypt3: 114 1.1 christos movups (%edx),%xmm0 115 1.1 christos shll $4,%ecx 116 1.1 christos movups 16(%edx),%xmm1 117 1.1 christos xorps %xmm0,%xmm2 118 1.1 christos pxor %xmm0,%xmm3 119 1.1 christos pxor %xmm0,%xmm4 120 1.1 christos movups 32(%edx),%xmm0 121 1.1 christos leal 32(%edx,%ecx,1),%edx 122 1.1 christos negl %ecx 123 1.1 christos addl $16,%ecx 124 1.1 christos .L004enc3_loop: 125 1.1 christos .byte 102,15,56,220,209 126 1.1 christos .byte 102,15,56,220,217 127 1.1 christos .byte 102,15,56,220,225 128 1.1 christos movups (%edx,%ecx,1),%xmm1 129 1.1 christos addl $32,%ecx 130 1.1 christos .byte 102,15,56,220,208 131 1.1 christos .byte 102,15,56,220,216 132 1.1 christos .byte 102,15,56,220,224 133 1.1 christos movups -16(%edx,%ecx,1),%xmm0 134 1.1 christos jnz .L004enc3_loop 135 1.1 christos .byte 102,15,56,220,209 136 1.1 christos .byte 102,15,56,220,217 137 1.1 christos .byte 102,15,56,220,225 138 1.1 christos .byte 102,15,56,221,208 139 1.1 christos .byte 102,15,56,221,216 140 1.1 christos .byte 102,15,56,221,224 141 1.1 christos ret 142 1.1 christos .size _aesni_encrypt3,.-_aesni_encrypt3 143 1.1 christos .type _aesni_decrypt3,@function 144 1.1 christos .align 16 145 1.1 christos _aesni_decrypt3: 146 1.1 christos movups (%edx),%xmm0 147 1.1 christos shll $4,%ecx 148 1.1 christos movups 16(%edx),%xmm1 149 1.1 christos xorps %xmm0,%xmm2 150 1.1 christos pxor %xmm0,%xmm3 151 1.1 christos pxor %xmm0,%xmm4 152 1.1 christos movups 32(%edx),%xmm0 153 1.1 christos leal 32(%edx,%ecx,1),%edx 154 1.1 christos negl %ecx 155 1.1 christos addl $16,%ecx 156 1.1 christos .L005dec3_loop: 157 1.1 christos .byte 102,15,56,222,209 158 1.1 christos .byte 102,15,56,222,217 159 1.1 christos .byte 102,15,56,222,225 160 1.1 christos movups (%edx,%ecx,1),%xmm1 161 1.1 christos addl $32,%ecx 162 1.1 christos .byte 102,15,56,222,208 163 1.1 christos .byte 102,15,56,222,216 164 1.1 christos .byte 102,15,56,222,224 165 1.1 christos movups -16(%edx,%ecx,1),%xmm0 166 1.1 christos jnz .L005dec3_loop 167 1.1 christos .byte 102,15,56,222,209 168 1.1 christos .byte 102,15,56,222,217 169 1.1 christos .byte 102,15,56,222,225 170 1.1 christos .byte 102,15,56,223,208 171 1.1 christos .byte 102,15,56,223,216 172 1.1 christos .byte 102,15,56,223,224 173 1.1 christos ret 174 1.1 christos .size _aesni_decrypt3,.-_aesni_decrypt3 175 1.1 christos .type _aesni_encrypt4,@function 176 1.1 christos .align 16 177 1.1 christos _aesni_encrypt4: 178 1.1 christos movups (%edx),%xmm0 179 1.1 christos movups 16(%edx),%xmm1 180 1.1 christos shll $4,%ecx 181 1.1 christos xorps %xmm0,%xmm2 182 1.1 christos pxor %xmm0,%xmm3 183 1.1 christos pxor %xmm0,%xmm4 184 1.1 christos pxor %xmm0,%xmm5 185 1.1 christos movups 32(%edx),%xmm0 186 1.1 christos leal 32(%edx,%ecx,1),%edx 187 1.1 christos negl %ecx 188 1.1 christos .byte 15,31,64,0 189 1.1 christos addl $16,%ecx 190 1.1 christos .L006enc4_loop: 191 1.1 christos .byte 102,15,56,220,209 192 1.1 christos .byte 102,15,56,220,217 193 1.1 christos .byte 102,15,56,220,225 194 1.1 christos .byte 102,15,56,220,233 195 1.1 christos movups (%edx,%ecx,1),%xmm1 196 1.1 christos addl $32,%ecx 197 1.1 christos .byte 102,15,56,220,208 198 1.1 christos .byte 102,15,56,220,216 199 1.1 christos .byte 102,15,56,220,224 200 1.1 christos .byte 102,15,56,220,232 201 1.1 christos movups -16(%edx,%ecx,1),%xmm0 202 1.1 christos jnz .L006enc4_loop 203 1.1 christos .byte 102,15,56,220,209 204 1.1 christos .byte 102,15,56,220,217 205 1.1 christos .byte 102,15,56,220,225 206 1.1 christos .byte 102,15,56,220,233 207 1.1 christos .byte 102,15,56,221,208 208 1.1 christos .byte 102,15,56,221,216 209 1.1 christos .byte 102,15,56,221,224 210 1.1 christos .byte 102,15,56,221,232 211 1.1 christos ret 212 1.1 christos .size _aesni_encrypt4,.-_aesni_encrypt4 213 1.1 christos .type _aesni_decrypt4,@function 214 1.1 christos .align 16 215 1.1 christos _aesni_decrypt4: 216 1.1 christos movups (%edx),%xmm0 217 1.1 christos movups 16(%edx),%xmm1 218 1.1 christos shll $4,%ecx 219 1.1 christos xorps %xmm0,%xmm2 220 1.1 christos pxor %xmm0,%xmm3 221 1.1 christos pxor %xmm0,%xmm4 222 1.1 christos pxor %xmm0,%xmm5 223 1.1 christos movups 32(%edx),%xmm0 224 1.1 christos leal 32(%edx,%ecx,1),%edx 225 1.1 christos negl %ecx 226 1.1 christos .byte 15,31,64,0 227 1.1 christos addl $16,%ecx 228 1.1 christos .L007dec4_loop: 229 1.1 christos .byte 102,15,56,222,209 230 1.1 christos .byte 102,15,56,222,217 231 1.1 christos .byte 102,15,56,222,225 232 1.1 christos .byte 102,15,56,222,233 233 1.1 christos movups (%edx,%ecx,1),%xmm1 234 1.1 christos addl $32,%ecx 235 1.1 christos .byte 102,15,56,222,208 236 1.1 christos .byte 102,15,56,222,216 237 1.1 christos .byte 102,15,56,222,224 238 1.1 christos .byte 102,15,56,222,232 239 1.1 christos movups -16(%edx,%ecx,1),%xmm0 240 1.1 christos jnz .L007dec4_loop 241 1.1 christos .byte 102,15,56,222,209 242 1.1 christos .byte 102,15,56,222,217 243 1.1 christos .byte 102,15,56,222,225 244 1.1 christos .byte 102,15,56,222,233 245 1.1 christos .byte 102,15,56,223,208 246 1.1 christos .byte 102,15,56,223,216 247 1.1 christos .byte 102,15,56,223,224 248 1.1 christos .byte 102,15,56,223,232 249 1.1 christos ret 250 1.1 christos .size _aesni_decrypt4,.-_aesni_decrypt4 251 1.1 christos .type _aesni_encrypt6,@function 252 1.1 christos .align 16 253 1.1 christos _aesni_encrypt6: 254 1.1 christos movups (%edx),%xmm0 255 1.1 christos shll $4,%ecx 256 1.1 christos movups 16(%edx),%xmm1 257 1.1 christos xorps %xmm0,%xmm2 258 1.1 christos pxor %xmm0,%xmm3 259 1.1 christos pxor %xmm0,%xmm4 260 1.1 christos .byte 102,15,56,220,209 261 1.1 christos pxor %xmm0,%xmm5 262 1.1 christos pxor %xmm0,%xmm6 263 1.1 christos .byte 102,15,56,220,217 264 1.1 christos leal 32(%edx,%ecx,1),%edx 265 1.1 christos negl %ecx 266 1.1 christos .byte 102,15,56,220,225 267 1.1 christos pxor %xmm0,%xmm7 268 1.1 christos movups (%edx,%ecx,1),%xmm0 269 1.1 christos addl $16,%ecx 270 1.1 christos jmp .L008_aesni_encrypt6_inner 271 1.1 christos .align 16 272 1.1 christos .L009enc6_loop: 273 1.1 christos .byte 102,15,56,220,209 274 1.1 christos .byte 102,15,56,220,217 275 1.1 christos .byte 102,15,56,220,225 276 1.1 christos .L008_aesni_encrypt6_inner: 277 1.1 christos .byte 102,15,56,220,233 278 1.1 christos .byte 102,15,56,220,241 279 1.1 christos .byte 102,15,56,220,249 280 1.1 christos .L_aesni_encrypt6_enter: 281 1.1 christos movups (%edx,%ecx,1),%xmm1 282 1.1 christos addl $32,%ecx 283 1.1 christos .byte 102,15,56,220,208 284 1.1 christos .byte 102,15,56,220,216 285 1.1 christos .byte 102,15,56,220,224 286 1.1 christos .byte 102,15,56,220,232 287 1.1 christos .byte 102,15,56,220,240 288 1.1 christos .byte 102,15,56,220,248 289 1.1 christos movups -16(%edx,%ecx,1),%xmm0 290 1.1 christos jnz .L009enc6_loop 291 1.1 christos .byte 102,15,56,220,209 292 1.1 christos .byte 102,15,56,220,217 293 1.1 christos .byte 102,15,56,220,225 294 1.1 christos .byte 102,15,56,220,233 295 1.1 christos .byte 102,15,56,220,241 296 1.1 christos .byte 102,15,56,220,249 297 1.1 christos .byte 102,15,56,221,208 298 1.1 christos .byte 102,15,56,221,216 299 1.1 christos .byte 102,15,56,221,224 300 1.1 christos .byte 102,15,56,221,232 301 1.1 christos .byte 102,15,56,221,240 302 1.1 christos .byte 102,15,56,221,248 303 1.1 christos ret 304 1.1 christos .size _aesni_encrypt6,.-_aesni_encrypt6 305 1.1 christos .type _aesni_decrypt6,@function 306 1.1 christos .align 16 307 1.1 christos _aesni_decrypt6: 308 1.1 christos movups (%edx),%xmm0 309 1.1 christos shll $4,%ecx 310 1.1 christos movups 16(%edx),%xmm1 311 1.1 christos xorps %xmm0,%xmm2 312 1.1 christos pxor %xmm0,%xmm3 313 1.1 christos pxor %xmm0,%xmm4 314 1.1 christos .byte 102,15,56,222,209 315 1.1 christos pxor %xmm0,%xmm5 316 1.1 christos pxor %xmm0,%xmm6 317 1.1 christos .byte 102,15,56,222,217 318 1.1 christos leal 32(%edx,%ecx,1),%edx 319 1.1 christos negl %ecx 320 1.1 christos .byte 102,15,56,222,225 321 1.1 christos pxor %xmm0,%xmm7 322 1.1 christos movups (%edx,%ecx,1),%xmm0 323 1.1 christos addl $16,%ecx 324 1.1 christos jmp .L010_aesni_decrypt6_inner 325 1.1 christos .align 16 326 1.1 christos .L011dec6_loop: 327 1.1 christos .byte 102,15,56,222,209 328 1.1 christos .byte 102,15,56,222,217 329 1.1 christos .byte 102,15,56,222,225 330 1.1 christos .L010_aesni_decrypt6_inner: 331 1.1 christos .byte 102,15,56,222,233 332 1.1 christos .byte 102,15,56,222,241 333 1.1 christos .byte 102,15,56,222,249 334 1.1 christos .L_aesni_decrypt6_enter: 335 1.1 christos movups (%edx,%ecx,1),%xmm1 336 1.1 christos addl $32,%ecx 337 1.1 christos .byte 102,15,56,222,208 338 1.1 christos .byte 102,15,56,222,216 339 1.1 christos .byte 102,15,56,222,224 340 1.1 christos .byte 102,15,56,222,232 341 1.1 christos .byte 102,15,56,222,240 342 1.1 christos .byte 102,15,56,222,248 343 1.1 christos movups -16(%edx,%ecx,1),%xmm0 344 1.1 christos jnz .L011dec6_loop 345 1.1 christos .byte 102,15,56,222,209 346 1.1 christos .byte 102,15,56,222,217 347 1.1 christos .byte 102,15,56,222,225 348 1.1 christos .byte 102,15,56,222,233 349 1.1 christos .byte 102,15,56,222,241 350 1.1 christos .byte 102,15,56,222,249 351 1.1 christos .byte 102,15,56,223,208 352 1.1 christos .byte 102,15,56,223,216 353 1.1 christos .byte 102,15,56,223,224 354 1.1 christos .byte 102,15,56,223,232 355 1.1 christos .byte 102,15,56,223,240 356 1.1 christos .byte 102,15,56,223,248 357 1.1 christos ret 358 1.1 christos .size _aesni_decrypt6,.-_aesni_decrypt6 359 1.1 christos .globl aesni_ecb_encrypt 360 1.1 christos .type aesni_ecb_encrypt,@function 361 1.1 christos .align 16 362 1.1 christos aesni_ecb_encrypt: 363 1.1 christos .L_aesni_ecb_encrypt_begin: 364 1.1 christos pushl %ebp 365 1.1 christos pushl %ebx 366 1.1 christos pushl %esi 367 1.1 christos pushl %edi 368 1.1 christos movl 20(%esp),%esi 369 1.1 christos movl 24(%esp),%edi 370 1.1 christos movl 28(%esp),%eax 371 1.1 christos movl 32(%esp),%edx 372 1.1 christos movl 36(%esp),%ebx 373 1.1 christos andl $-16,%eax 374 1.1 christos jz .L012ecb_ret 375 1.1 christos movl 240(%edx),%ecx 376 1.1 christos testl %ebx,%ebx 377 1.1 christos jz .L013ecb_decrypt 378 1.1 christos movl %edx,%ebp 379 1.1 christos movl %ecx,%ebx 380 1.1 christos cmpl $96,%eax 381 1.1 christos jb .L014ecb_enc_tail 382 1.1 christos movdqu (%esi),%xmm2 383 1.1 christos movdqu 16(%esi),%xmm3 384 1.1 christos movdqu 32(%esi),%xmm4 385 1.1 christos movdqu 48(%esi),%xmm5 386 1.1 christos movdqu 64(%esi),%xmm6 387 1.1 christos movdqu 80(%esi),%xmm7 388 1.1 christos leal 96(%esi),%esi 389 1.1 christos subl $96,%eax 390 1.1 christos jmp .L015ecb_enc_loop6_enter 391 1.1 christos .align 16 392 1.1 christos .L016ecb_enc_loop6: 393 1.1 christos movups %xmm2,(%edi) 394 1.1 christos movdqu (%esi),%xmm2 395 1.1 christos movups %xmm3,16(%edi) 396 1.1 christos movdqu 16(%esi),%xmm3 397 1.1 christos movups %xmm4,32(%edi) 398 1.1 christos movdqu 32(%esi),%xmm4 399 1.1 christos movups %xmm5,48(%edi) 400 1.1 christos movdqu 48(%esi),%xmm5 401 1.1 christos movups %xmm6,64(%edi) 402 1.1 christos movdqu 64(%esi),%xmm6 403 1.1 christos movups %xmm7,80(%edi) 404 1.1 christos leal 96(%edi),%edi 405 1.1 christos movdqu 80(%esi),%xmm7 406 1.1 christos leal 96(%esi),%esi 407 1.1 christos .L015ecb_enc_loop6_enter: 408 1.1 christos call _aesni_encrypt6 409 1.1 christos movl %ebp,%edx 410 1.1 christos movl %ebx,%ecx 411 1.1 christos subl $96,%eax 412 1.1 christos jnc .L016ecb_enc_loop6 413 1.1 christos movups %xmm2,(%edi) 414 1.1 christos movups %xmm3,16(%edi) 415 1.1 christos movups %xmm4,32(%edi) 416 1.1 christos movups %xmm5,48(%edi) 417 1.1 christos movups %xmm6,64(%edi) 418 1.1 christos movups %xmm7,80(%edi) 419 1.1 christos leal 96(%edi),%edi 420 1.1 christos addl $96,%eax 421 1.1 christos jz .L012ecb_ret 422 1.1 christos .L014ecb_enc_tail: 423 1.1 christos movups (%esi),%xmm2 424 1.1 christos cmpl $32,%eax 425 1.1 christos jb .L017ecb_enc_one 426 1.1 christos movups 16(%esi),%xmm3 427 1.1 christos je .L018ecb_enc_two 428 1.1 christos movups 32(%esi),%xmm4 429 1.1 christos cmpl $64,%eax 430 1.1 christos jb .L019ecb_enc_three 431 1.1 christos movups 48(%esi),%xmm5 432 1.1 christos je .L020ecb_enc_four 433 1.1 christos movups 64(%esi),%xmm6 434 1.1 christos xorps %xmm7,%xmm7 435 1.1 christos call _aesni_encrypt6 436 1.1 christos movups %xmm2,(%edi) 437 1.1 christos movups %xmm3,16(%edi) 438 1.1 christos movups %xmm4,32(%edi) 439 1.1 christos movups %xmm5,48(%edi) 440 1.1 christos movups %xmm6,64(%edi) 441 1.1 christos jmp .L012ecb_ret 442 1.1 christos .align 16 443 1.1 christos .L017ecb_enc_one: 444 1.1 christos movups (%edx),%xmm0 445 1.1 christos movups 16(%edx),%xmm1 446 1.1 christos leal 32(%edx),%edx 447 1.1 christos xorps %xmm0,%xmm2 448 1.1 christos .L021enc1_loop_3: 449 1.1 christos .byte 102,15,56,220,209 450 1.1 christos decl %ecx 451 1.1 christos movups (%edx),%xmm1 452 1.1 christos leal 16(%edx),%edx 453 1.1 christos jnz .L021enc1_loop_3 454 1.1 christos .byte 102,15,56,221,209 455 1.1 christos movups %xmm2,(%edi) 456 1.1 christos jmp .L012ecb_ret 457 1.1 christos .align 16 458 1.1 christos .L018ecb_enc_two: 459 1.1 christos call _aesni_encrypt2 460 1.1 christos movups %xmm2,(%edi) 461 1.1 christos movups %xmm3,16(%edi) 462 1.1 christos jmp .L012ecb_ret 463 1.1 christos .align 16 464 1.1 christos .L019ecb_enc_three: 465 1.1 christos call _aesni_encrypt3 466 1.1 christos movups %xmm2,(%edi) 467 1.1 christos movups %xmm3,16(%edi) 468 1.1 christos movups %xmm4,32(%edi) 469 1.1 christos jmp .L012ecb_ret 470 1.1 christos .align 16 471 1.1 christos .L020ecb_enc_four: 472 1.1 christos call _aesni_encrypt4 473 1.1 christos movups %xmm2,(%edi) 474 1.1 christos movups %xmm3,16(%edi) 475 1.1 christos movups %xmm4,32(%edi) 476 1.1 christos movups %xmm5,48(%edi) 477 1.1 christos jmp .L012ecb_ret 478 1.1 christos .align 16 479 1.1 christos .L013ecb_decrypt: 480 1.1 christos movl %edx,%ebp 481 1.1 christos movl %ecx,%ebx 482 1.1 christos cmpl $96,%eax 483 1.1 christos jb .L022ecb_dec_tail 484 1.1 christos movdqu (%esi),%xmm2 485 1.1 christos movdqu 16(%esi),%xmm3 486 1.1 christos movdqu 32(%esi),%xmm4 487 1.1 christos movdqu 48(%esi),%xmm5 488 1.1 christos movdqu 64(%esi),%xmm6 489 1.1 christos movdqu 80(%esi),%xmm7 490 1.1 christos leal 96(%esi),%esi 491 1.1 christos subl $96,%eax 492 1.1 christos jmp .L023ecb_dec_loop6_enter 493 1.1 christos .align 16 494 1.1 christos .L024ecb_dec_loop6: 495 1.1 christos movups %xmm2,(%edi) 496 1.1 christos movdqu (%esi),%xmm2 497 1.1 christos movups %xmm3,16(%edi) 498 1.1 christos movdqu 16(%esi),%xmm3 499 1.1 christos movups %xmm4,32(%edi) 500 1.1 christos movdqu 32(%esi),%xmm4 501 1.1 christos movups %xmm5,48(%edi) 502 1.1 christos movdqu 48(%esi),%xmm5 503 1.1 christos movups %xmm6,64(%edi) 504 1.1 christos movdqu 64(%esi),%xmm6 505 1.1 christos movups %xmm7,80(%edi) 506 1.1 christos leal 96(%edi),%edi 507 1.1 christos movdqu 80(%esi),%xmm7 508 1.1 christos leal 96(%esi),%esi 509 1.1 christos .L023ecb_dec_loop6_enter: 510 1.1 christos call _aesni_decrypt6 511 1.1 christos movl %ebp,%edx 512 1.1 christos movl %ebx,%ecx 513 1.1 christos subl $96,%eax 514 1.1 christos jnc .L024ecb_dec_loop6 515 1.1 christos movups %xmm2,(%edi) 516 1.1 christos movups %xmm3,16(%edi) 517 1.1 christos movups %xmm4,32(%edi) 518 1.1 christos movups %xmm5,48(%edi) 519 1.1 christos movups %xmm6,64(%edi) 520 1.1 christos movups %xmm7,80(%edi) 521 1.1 christos leal 96(%edi),%edi 522 1.1 christos addl $96,%eax 523 1.1 christos jz .L012ecb_ret 524 1.1 christos .L022ecb_dec_tail: 525 1.1 christos movups (%esi),%xmm2 526 1.1 christos cmpl $32,%eax 527 1.1 christos jb .L025ecb_dec_one 528 1.1 christos movups 16(%esi),%xmm3 529 1.1 christos je .L026ecb_dec_two 530 1.1 christos movups 32(%esi),%xmm4 531 1.1 christos cmpl $64,%eax 532 1.1 christos jb .L027ecb_dec_three 533 1.1 christos movups 48(%esi),%xmm5 534 1.1 christos je .L028ecb_dec_four 535 1.1 christos movups 64(%esi),%xmm6 536 1.1 christos xorps %xmm7,%xmm7 537 1.1 christos call _aesni_decrypt6 538 1.1 christos movups %xmm2,(%edi) 539 1.1 christos movups %xmm3,16(%edi) 540 1.1 christos movups %xmm4,32(%edi) 541 1.1 christos movups %xmm5,48(%edi) 542 1.1 christos movups %xmm6,64(%edi) 543 1.1 christos jmp .L012ecb_ret 544 1.1 christos .align 16 545 1.1 christos .L025ecb_dec_one: 546 1.1 christos movups (%edx),%xmm0 547 1.1 christos movups 16(%edx),%xmm1 548 1.1 christos leal 32(%edx),%edx 549 1.1 christos xorps %xmm0,%xmm2 550 1.1 christos .L029dec1_loop_4: 551 1.1 christos .byte 102,15,56,222,209 552 1.1 christos decl %ecx 553 1.1 christos movups (%edx),%xmm1 554 1.1 christos leal 16(%edx),%edx 555 1.1 christos jnz .L029dec1_loop_4 556 1.1 christos .byte 102,15,56,223,209 557 1.1 christos movups %xmm2,(%edi) 558 1.1 christos jmp .L012ecb_ret 559 1.1 christos .align 16 560 1.1 christos .L026ecb_dec_two: 561 1.1 christos call _aesni_decrypt2 562 1.1 christos movups %xmm2,(%edi) 563 1.1 christos movups %xmm3,16(%edi) 564 1.1 christos jmp .L012ecb_ret 565 1.1 christos .align 16 566 1.1 christos .L027ecb_dec_three: 567 1.1 christos call _aesni_decrypt3 568 1.1 christos movups %xmm2,(%edi) 569 1.1 christos movups %xmm3,16(%edi) 570 1.1 christos movups %xmm4,32(%edi) 571 1.1 christos jmp .L012ecb_ret 572 1.1 christos .align 16 573 1.1 christos .L028ecb_dec_four: 574 1.1 christos call _aesni_decrypt4 575 1.1 christos movups %xmm2,(%edi) 576 1.1 christos movups %xmm3,16(%edi) 577 1.1 christos movups %xmm4,32(%edi) 578 1.1 christos movups %xmm5,48(%edi) 579 1.1 christos .L012ecb_ret: 580 1.1 christos pxor %xmm0,%xmm0 581 1.1 christos pxor %xmm1,%xmm1 582 1.1 christos pxor %xmm2,%xmm2 583 1.1 christos pxor %xmm3,%xmm3 584 1.1 christos pxor %xmm4,%xmm4 585 1.1 christos pxor %xmm5,%xmm5 586 1.1 christos pxor %xmm6,%xmm6 587 1.1 christos pxor %xmm7,%xmm7 588 1.1 christos popl %edi 589 1.1 christos popl %esi 590 1.1 christos popl %ebx 591 1.1 christos popl %ebp 592 1.1 christos ret 593 1.1 christos .size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin 594 1.1 christos .globl aesni_ccm64_encrypt_blocks 595 1.1 christos .type aesni_ccm64_encrypt_blocks,@function 596 1.1 christos .align 16 597 1.1 christos aesni_ccm64_encrypt_blocks: 598 1.1 christos .L_aesni_ccm64_encrypt_blocks_begin: 599 1.1 christos pushl %ebp 600 1.1 christos pushl %ebx 601 1.1 christos pushl %esi 602 1.1 christos pushl %edi 603 1.1 christos movl 20(%esp),%esi 604 1.1 christos movl 24(%esp),%edi 605 1.1 christos movl 28(%esp),%eax 606 1.1 christos movl 32(%esp),%edx 607 1.1 christos movl 36(%esp),%ebx 608 1.1 christos movl 40(%esp),%ecx 609 1.1 christos movl %esp,%ebp 610 1.1 christos subl $60,%esp 611 1.1 christos andl $-16,%esp 612 1.1 christos movl %ebp,48(%esp) 613 1.1 christos movdqu (%ebx),%xmm7 614 1.1 christos movdqu (%ecx),%xmm3 615 1.1 christos movl 240(%edx),%ecx 616 1.1 christos movl $202182159,(%esp) 617 1.1 christos movl $134810123,4(%esp) 618 1.1 christos movl $67438087,8(%esp) 619 1.1 christos movl $66051,12(%esp) 620 1.1 christos movl $1,%ebx 621 1.1 christos xorl %ebp,%ebp 622 1.1 christos movl %ebx,16(%esp) 623 1.1 christos movl %ebp,20(%esp) 624 1.1 christos movl %ebp,24(%esp) 625 1.1 christos movl %ebp,28(%esp) 626 1.1 christos shll $4,%ecx 627 1.1 christos movl $16,%ebx 628 1.1 christos leal (%edx),%ebp 629 1.1 christos movdqa (%esp),%xmm5 630 1.1 christos movdqa %xmm7,%xmm2 631 1.1 christos leal 32(%edx,%ecx,1),%edx 632 1.1 christos subl %ecx,%ebx 633 1.1 christos .byte 102,15,56,0,253 634 1.1 christos .L030ccm64_enc_outer: 635 1.1 christos movups (%ebp),%xmm0 636 1.1 christos movl %ebx,%ecx 637 1.1 christos movups (%esi),%xmm6 638 1.1 christos xorps %xmm0,%xmm2 639 1.1 christos movups 16(%ebp),%xmm1 640 1.1 christos xorps %xmm6,%xmm0 641 1.1 christos xorps %xmm0,%xmm3 642 1.1 christos movups 32(%ebp),%xmm0 643 1.1 christos .L031ccm64_enc2_loop: 644 1.1 christos .byte 102,15,56,220,209 645 1.1 christos .byte 102,15,56,220,217 646 1.1 christos movups (%edx,%ecx,1),%xmm1 647 1.1 christos addl $32,%ecx 648 1.1 christos .byte 102,15,56,220,208 649 1.1 christos .byte 102,15,56,220,216 650 1.1 christos movups -16(%edx,%ecx,1),%xmm0 651 1.1 christos jnz .L031ccm64_enc2_loop 652 1.1 christos .byte 102,15,56,220,209 653 1.1 christos .byte 102,15,56,220,217 654 1.1 christos paddq 16(%esp),%xmm7 655 1.1 christos decl %eax 656 1.1 christos .byte 102,15,56,221,208 657 1.1 christos .byte 102,15,56,221,216 658 1.1 christos leal 16(%esi),%esi 659 1.1 christos xorps %xmm2,%xmm6 660 1.1 christos movdqa %xmm7,%xmm2 661 1.1 christos movups %xmm6,(%edi) 662 1.1 christos .byte 102,15,56,0,213 663 1.1 christos leal 16(%edi),%edi 664 1.1 christos jnz .L030ccm64_enc_outer 665 1.1 christos movl 48(%esp),%esp 666 1.1 christos movl 40(%esp),%edi 667 1.1 christos movups %xmm3,(%edi) 668 1.1 christos pxor %xmm0,%xmm0 669 1.1 christos pxor %xmm1,%xmm1 670 1.1 christos pxor %xmm2,%xmm2 671 1.1 christos pxor %xmm3,%xmm3 672 1.1 christos pxor %xmm4,%xmm4 673 1.1 christos pxor %xmm5,%xmm5 674 1.1 christos pxor %xmm6,%xmm6 675 1.1 christos pxor %xmm7,%xmm7 676 1.1 christos popl %edi 677 1.1 christos popl %esi 678 1.1 christos popl %ebx 679 1.1 christos popl %ebp 680 1.1 christos ret 681 1.1 christos .size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin 682 1.1 christos .globl aesni_ccm64_decrypt_blocks 683 1.1 christos .type aesni_ccm64_decrypt_blocks,@function 684 1.1 christos .align 16 685 1.1 christos aesni_ccm64_decrypt_blocks: 686 1.1 christos .L_aesni_ccm64_decrypt_blocks_begin: 687 1.1 christos pushl %ebp 688 1.1 christos pushl %ebx 689 1.1 christos pushl %esi 690 1.1 christos pushl %edi 691 1.1 christos movl 20(%esp),%esi 692 1.1 christos movl 24(%esp),%edi 693 1.1 christos movl 28(%esp),%eax 694 1.1 christos movl 32(%esp),%edx 695 1.1 christos movl 36(%esp),%ebx 696 1.1 christos movl 40(%esp),%ecx 697 1.1 christos movl %esp,%ebp 698 1.1 christos subl $60,%esp 699 1.1 christos andl $-16,%esp 700 1.1 christos movl %ebp,48(%esp) 701 1.1 christos movdqu (%ebx),%xmm7 702 1.1 christos movdqu (%ecx),%xmm3 703 1.1 christos movl 240(%edx),%ecx 704 1.1 christos movl $202182159,(%esp) 705 1.1 christos movl $134810123,4(%esp) 706 1.1 christos movl $67438087,8(%esp) 707 1.1 christos movl $66051,12(%esp) 708 1.1 christos movl $1,%ebx 709 1.1 christos xorl %ebp,%ebp 710 1.1 christos movl %ebx,16(%esp) 711 1.1 christos movl %ebp,20(%esp) 712 1.1 christos movl %ebp,24(%esp) 713 1.1 christos movl %ebp,28(%esp) 714 1.1 christos movdqa (%esp),%xmm5 715 1.1 christos movdqa %xmm7,%xmm2 716 1.1 christos movl %edx,%ebp 717 1.1 christos movl %ecx,%ebx 718 1.1 christos .byte 102,15,56,0,253 719 1.1 christos movups (%edx),%xmm0 720 1.1 christos movups 16(%edx),%xmm1 721 1.1 christos leal 32(%edx),%edx 722 1.1 christos xorps %xmm0,%xmm2 723 1.1 christos .L032enc1_loop_5: 724 1.1 christos .byte 102,15,56,220,209 725 1.1 christos decl %ecx 726 1.1 christos movups (%edx),%xmm1 727 1.1 christos leal 16(%edx),%edx 728 1.1 christos jnz .L032enc1_loop_5 729 1.1 christos .byte 102,15,56,221,209 730 1.1 christos shll $4,%ebx 731 1.1 christos movl $16,%ecx 732 1.1 christos movups (%esi),%xmm6 733 1.1 christos paddq 16(%esp),%xmm7 734 1.1 christos leal 16(%esi),%esi 735 1.1 christos subl %ebx,%ecx 736 1.1 christos leal 32(%ebp,%ebx,1),%edx 737 1.1 christos movl %ecx,%ebx 738 1.1 christos jmp .L033ccm64_dec_outer 739 1.1 christos .align 16 740 1.1 christos .L033ccm64_dec_outer: 741 1.1 christos xorps %xmm2,%xmm6 742 1.1 christos movdqa %xmm7,%xmm2 743 1.1 christos movups %xmm6,(%edi) 744 1.1 christos leal 16(%edi),%edi 745 1.1 christos .byte 102,15,56,0,213 746 1.1 christos subl $1,%eax 747 1.1 christos jz .L034ccm64_dec_break 748 1.1 christos movups (%ebp),%xmm0 749 1.1 christos movl %ebx,%ecx 750 1.1 christos movups 16(%ebp),%xmm1 751 1.1 christos xorps %xmm0,%xmm6 752 1.1 christos xorps %xmm0,%xmm2 753 1.1 christos xorps %xmm6,%xmm3 754 1.1 christos movups 32(%ebp),%xmm0 755 1.1 christos .L035ccm64_dec2_loop: 756 1.1 christos .byte 102,15,56,220,209 757 1.1 christos .byte 102,15,56,220,217 758 1.1 christos movups (%edx,%ecx,1),%xmm1 759 1.1 christos addl $32,%ecx 760 1.1 christos .byte 102,15,56,220,208 761 1.1 christos .byte 102,15,56,220,216 762 1.1 christos movups -16(%edx,%ecx,1),%xmm0 763 1.1 christos jnz .L035ccm64_dec2_loop 764 1.1 christos movups (%esi),%xmm6 765 1.1 christos paddq 16(%esp),%xmm7 766 1.1 christos .byte 102,15,56,220,209 767 1.1 christos .byte 102,15,56,220,217 768 1.1 christos .byte 102,15,56,221,208 769 1.1 christos .byte 102,15,56,221,216 770 1.1 christos leal 16(%esi),%esi 771 1.1 christos jmp .L033ccm64_dec_outer 772 1.1 christos .align 16 773 1.1 christos .L034ccm64_dec_break: 774 1.1 christos movl 240(%ebp),%ecx 775 1.1 christos movl %ebp,%edx 776 1.1 christos movups (%edx),%xmm0 777 1.1 christos movups 16(%edx),%xmm1 778 1.1 christos xorps %xmm0,%xmm6 779 1.1 christos leal 32(%edx),%edx 780 1.1 christos xorps %xmm6,%xmm3 781 1.1 christos .L036enc1_loop_6: 782 1.1 christos .byte 102,15,56,220,217 783 1.1 christos decl %ecx 784 1.1 christos movups (%edx),%xmm1 785 1.1 christos leal 16(%edx),%edx 786 1.1 christos jnz .L036enc1_loop_6 787 1.1 christos .byte 102,15,56,221,217 788 1.1 christos movl 48(%esp),%esp 789 1.1 christos movl 40(%esp),%edi 790 1.1 christos movups %xmm3,(%edi) 791 1.1 christos pxor %xmm0,%xmm0 792 1.1 christos pxor %xmm1,%xmm1 793 1.1 christos pxor %xmm2,%xmm2 794 1.1 christos pxor %xmm3,%xmm3 795 1.1 christos pxor %xmm4,%xmm4 796 1.1 christos pxor %xmm5,%xmm5 797 1.1 christos pxor %xmm6,%xmm6 798 1.1 christos pxor %xmm7,%xmm7 799 1.1 christos popl %edi 800 1.1 christos popl %esi 801 1.1 christos popl %ebx 802 1.1 christos popl %ebp 803 1.1 christos ret 804 1.1 christos .size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin 805 1.1 christos .globl aesni_ctr32_encrypt_blocks 806 1.1 christos .type aesni_ctr32_encrypt_blocks,@function 807 1.1 christos .align 16 808 1.1 christos aesni_ctr32_encrypt_blocks: 809 1.1 christos .L_aesni_ctr32_encrypt_blocks_begin: 810 1.1 christos pushl %ebp 811 1.1 christos pushl %ebx 812 1.1 christos pushl %esi 813 1.1 christos pushl %edi 814 1.1 christos movl 20(%esp),%esi 815 1.1 christos movl 24(%esp),%edi 816 1.1 christos movl 28(%esp),%eax 817 1.1 christos movl 32(%esp),%edx 818 1.1 christos movl 36(%esp),%ebx 819 1.1 christos movl %esp,%ebp 820 1.1 christos subl $88,%esp 821 1.1 christos andl $-16,%esp 822 1.1 christos movl %ebp,80(%esp) 823 1.1 christos cmpl $1,%eax 824 1.1 christos je .L037ctr32_one_shortcut 825 1.1 christos movdqu (%ebx),%xmm7 826 1.1 christos movl $202182159,(%esp) 827 1.1 christos movl $134810123,4(%esp) 828 1.1 christos movl $67438087,8(%esp) 829 1.1 christos movl $66051,12(%esp) 830 1.1 christos movl $6,%ecx 831 1.1 christos xorl %ebp,%ebp 832 1.1 christos movl %ecx,16(%esp) 833 1.1 christos movl %ecx,20(%esp) 834 1.1 christos movl %ecx,24(%esp) 835 1.1 christos movl %ebp,28(%esp) 836 1.1 christos .byte 102,15,58,22,251,3 837 1.1 christos .byte 102,15,58,34,253,3 838 1.1 christos movl 240(%edx),%ecx 839 1.1 christos bswap %ebx 840 1.1 christos pxor %xmm0,%xmm0 841 1.1 christos pxor %xmm1,%xmm1 842 1.1 christos movdqa (%esp),%xmm2 843 1.1 christos .byte 102,15,58,34,195,0 844 1.1 christos leal 3(%ebx),%ebp 845 1.1 christos .byte 102,15,58,34,205,0 846 1.1 christos incl %ebx 847 1.1 christos .byte 102,15,58,34,195,1 848 1.1 christos incl %ebp 849 1.1 christos .byte 102,15,58,34,205,1 850 1.1 christos incl %ebx 851 1.1 christos .byte 102,15,58,34,195,2 852 1.1 christos incl %ebp 853 1.1 christos .byte 102,15,58,34,205,2 854 1.1 christos movdqa %xmm0,48(%esp) 855 1.1 christos .byte 102,15,56,0,194 856 1.1 christos movdqu (%edx),%xmm6 857 1.1 christos movdqa %xmm1,64(%esp) 858 1.1 christos .byte 102,15,56,0,202 859 1.1 christos pshufd $192,%xmm0,%xmm2 860 1.1 christos pshufd $128,%xmm0,%xmm3 861 1.1 christos cmpl $6,%eax 862 1.1 christos jb .L038ctr32_tail 863 1.1 christos pxor %xmm6,%xmm7 864 1.1 christos shll $4,%ecx 865 1.1 christos movl $16,%ebx 866 1.1 christos movdqa %xmm7,32(%esp) 867 1.1 christos movl %edx,%ebp 868 1.1 christos subl %ecx,%ebx 869 1.1 christos leal 32(%edx,%ecx,1),%edx 870 1.1 christos subl $6,%eax 871 1.1 christos jmp .L039ctr32_loop6 872 1.1 christos .align 16 873 1.1 christos .L039ctr32_loop6: 874 1.1 christos pshufd $64,%xmm0,%xmm4 875 1.1 christos movdqa 32(%esp),%xmm0 876 1.1 christos pshufd $192,%xmm1,%xmm5 877 1.1 christos pxor %xmm0,%xmm2 878 1.1 christos pshufd $128,%xmm1,%xmm6 879 1.1 christos pxor %xmm0,%xmm3 880 1.1 christos pshufd $64,%xmm1,%xmm7 881 1.1 christos movups 16(%ebp),%xmm1 882 1.1 christos pxor %xmm0,%xmm4 883 1.1 christos pxor %xmm0,%xmm5 884 1.1 christos .byte 102,15,56,220,209 885 1.1 christos pxor %xmm0,%xmm6 886 1.1 christos pxor %xmm0,%xmm7 887 1.1 christos .byte 102,15,56,220,217 888 1.1 christos movups 32(%ebp),%xmm0 889 1.1 christos movl %ebx,%ecx 890 1.1 christos .byte 102,15,56,220,225 891 1.1 christos .byte 102,15,56,220,233 892 1.1 christos .byte 102,15,56,220,241 893 1.1 christos .byte 102,15,56,220,249 894 1.1 christos call .L_aesni_encrypt6_enter 895 1.1 christos movups (%esi),%xmm1 896 1.1 christos movups 16(%esi),%xmm0 897 1.1 christos xorps %xmm1,%xmm2 898 1.1 christos movups 32(%esi),%xmm1 899 1.1 christos xorps %xmm0,%xmm3 900 1.1 christos movups %xmm2,(%edi) 901 1.1 christos movdqa 16(%esp),%xmm0 902 1.1 christos xorps %xmm1,%xmm4 903 1.1 christos movdqa 64(%esp),%xmm1 904 1.1 christos movups %xmm3,16(%edi) 905 1.1 christos movups %xmm4,32(%edi) 906 1.1 christos paddd %xmm0,%xmm1 907 1.1 christos paddd 48(%esp),%xmm0 908 1.1 christos movdqa (%esp),%xmm2 909 1.1 christos movups 48(%esi),%xmm3 910 1.1 christos movups 64(%esi),%xmm4 911 1.1 christos xorps %xmm3,%xmm5 912 1.1 christos movups 80(%esi),%xmm3 913 1.1 christos leal 96(%esi),%esi 914 1.1 christos movdqa %xmm0,48(%esp) 915 1.1 christos .byte 102,15,56,0,194 916 1.1 christos xorps %xmm4,%xmm6 917 1.1 christos movups %xmm5,48(%edi) 918 1.1 christos xorps %xmm3,%xmm7 919 1.1 christos movdqa %xmm1,64(%esp) 920 1.1 christos .byte 102,15,56,0,202 921 1.1 christos movups %xmm6,64(%edi) 922 1.1 christos pshufd $192,%xmm0,%xmm2 923 1.1 christos movups %xmm7,80(%edi) 924 1.1 christos leal 96(%edi),%edi 925 1.1 christos pshufd $128,%xmm0,%xmm3 926 1.1 christos subl $6,%eax 927 1.1 christos jnc .L039ctr32_loop6 928 1.1 christos addl $6,%eax 929 1.1 christos jz .L040ctr32_ret 930 1.1 christos movdqu (%ebp),%xmm7 931 1.1 christos movl %ebp,%edx 932 1.1 christos pxor 32(%esp),%xmm7 933 1.1 christos movl 240(%ebp),%ecx 934 1.1 christos .L038ctr32_tail: 935 1.1 christos por %xmm7,%xmm2 936 1.1 christos cmpl $2,%eax 937 1.1 christos jb .L041ctr32_one 938 1.1 christos pshufd $64,%xmm0,%xmm4 939 1.1 christos por %xmm7,%xmm3 940 1.1 christos je .L042ctr32_two 941 1.1 christos pshufd $192,%xmm1,%xmm5 942 1.1 christos por %xmm7,%xmm4 943 1.1 christos cmpl $4,%eax 944 1.1 christos jb .L043ctr32_three 945 1.1 christos pshufd $128,%xmm1,%xmm6 946 1.1 christos por %xmm7,%xmm5 947 1.1 christos je .L044ctr32_four 948 1.1 christos por %xmm7,%xmm6 949 1.1 christos call _aesni_encrypt6 950 1.1 christos movups (%esi),%xmm1 951 1.1 christos movups 16(%esi),%xmm0 952 1.1 christos xorps %xmm1,%xmm2 953 1.1 christos movups 32(%esi),%xmm1 954 1.1 christos xorps %xmm0,%xmm3 955 1.1 christos movups 48(%esi),%xmm0 956 1.1 christos xorps %xmm1,%xmm4 957 1.1 christos movups 64(%esi),%xmm1 958 1.1 christos xorps %xmm0,%xmm5 959 1.1 christos movups %xmm2,(%edi) 960 1.1 christos xorps %xmm1,%xmm6 961 1.1 christos movups %xmm3,16(%edi) 962 1.1 christos movups %xmm4,32(%edi) 963 1.1 christos movups %xmm5,48(%edi) 964 1.1 christos movups %xmm6,64(%edi) 965 1.1 christos jmp .L040ctr32_ret 966 1.1 christos .align 16 967 1.1 christos .L037ctr32_one_shortcut: 968 1.1 christos movups (%ebx),%xmm2 969 1.1 christos movl 240(%edx),%ecx 970 1.1 christos .L041ctr32_one: 971 1.1 christos movups (%edx),%xmm0 972 1.1 christos movups 16(%edx),%xmm1 973 1.1 christos leal 32(%edx),%edx 974 1.1 christos xorps %xmm0,%xmm2 975 1.1 christos .L045enc1_loop_7: 976 1.1 christos .byte 102,15,56,220,209 977 1.1 christos decl %ecx 978 1.1 christos movups (%edx),%xmm1 979 1.1 christos leal 16(%edx),%edx 980 1.1 christos jnz .L045enc1_loop_7 981 1.1 christos .byte 102,15,56,221,209 982 1.1 christos movups (%esi),%xmm6 983 1.1 christos xorps %xmm2,%xmm6 984 1.1 christos movups %xmm6,(%edi) 985 1.1 christos jmp .L040ctr32_ret 986 1.1 christos .align 16 987 1.1 christos .L042ctr32_two: 988 1.1 christos call _aesni_encrypt2 989 1.1 christos movups (%esi),%xmm5 990 1.1 christos movups 16(%esi),%xmm6 991 1.1 christos xorps %xmm5,%xmm2 992 1.1 christos xorps %xmm6,%xmm3 993 1.1 christos movups %xmm2,(%edi) 994 1.1 christos movups %xmm3,16(%edi) 995 1.1 christos jmp .L040ctr32_ret 996 1.1 christos .align 16 997 1.1 christos .L043ctr32_three: 998 1.1 christos call _aesni_encrypt3 999 1.1 christos movups (%esi),%xmm5 1000 1.1 christos movups 16(%esi),%xmm6 1001 1.1 christos xorps %xmm5,%xmm2 1002 1.1 christos movups 32(%esi),%xmm7 1003 1.1 christos xorps %xmm6,%xmm3 1004 1.1 christos movups %xmm2,(%edi) 1005 1.1 christos xorps %xmm7,%xmm4 1006 1.1 christos movups %xmm3,16(%edi) 1007 1.1 christos movups %xmm4,32(%edi) 1008 1.1 christos jmp .L040ctr32_ret 1009 1.1 christos .align 16 1010 1.1 christos .L044ctr32_four: 1011 1.1 christos call _aesni_encrypt4 1012 1.1 christos movups (%esi),%xmm6 1013 1.1 christos movups 16(%esi),%xmm7 1014 1.1 christos movups 32(%esi),%xmm1 1015 1.1 christos xorps %xmm6,%xmm2 1016 1.1 christos movups 48(%esi),%xmm0 1017 1.1 christos xorps %xmm7,%xmm3 1018 1.1 christos movups %xmm2,(%edi) 1019 1.1 christos xorps %xmm1,%xmm4 1020 1.1 christos movups %xmm3,16(%edi) 1021 1.1 christos xorps %xmm0,%xmm5 1022 1.1 christos movups %xmm4,32(%edi) 1023 1.1 christos movups %xmm5,48(%edi) 1024 1.1 christos .L040ctr32_ret: 1025 1.1 christos pxor %xmm0,%xmm0 1026 1.1 christos pxor %xmm1,%xmm1 1027 1.1 christos pxor %xmm2,%xmm2 1028 1.1 christos pxor %xmm3,%xmm3 1029 1.1 christos pxor %xmm4,%xmm4 1030 1.1 christos movdqa %xmm0,32(%esp) 1031 1.1 christos pxor %xmm5,%xmm5 1032 1.1 christos movdqa %xmm0,48(%esp) 1033 1.1 christos pxor %xmm6,%xmm6 1034 1.1 christos movdqa %xmm0,64(%esp) 1035 1.1 christos pxor %xmm7,%xmm7 1036 1.1 christos movl 80(%esp),%esp 1037 1.1 christos popl %edi 1038 1.1 christos popl %esi 1039 1.1 christos popl %ebx 1040 1.1 christos popl %ebp 1041 1.1 christos ret 1042 1.1 christos .size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin 1043 1.1 christos .globl aesni_xts_encrypt 1044 1.1 christos .type aesni_xts_encrypt,@function 1045 1.1 christos .align 16 1046 1.1 christos aesni_xts_encrypt: 1047 1.1 christos .L_aesni_xts_encrypt_begin: 1048 1.1 christos pushl %ebp 1049 1.1 christos pushl %ebx 1050 1.1 christos pushl %esi 1051 1.1 christos pushl %edi 1052 1.1 christos movl 36(%esp),%edx 1053 1.1 christos movl 40(%esp),%esi 1054 1.1 christos movl 240(%edx),%ecx 1055 1.1 christos movups (%esi),%xmm2 1056 1.1 christos movups (%edx),%xmm0 1057 1.1 christos movups 16(%edx),%xmm1 1058 1.1 christos leal 32(%edx),%edx 1059 1.1 christos xorps %xmm0,%xmm2 1060 1.1 christos .L046enc1_loop_8: 1061 1.1 christos .byte 102,15,56,220,209 1062 1.1 christos decl %ecx 1063 1.1 christos movups (%edx),%xmm1 1064 1.1 christos leal 16(%edx),%edx 1065 1.1 christos jnz .L046enc1_loop_8 1066 1.1 christos .byte 102,15,56,221,209 1067 1.1 christos movl 20(%esp),%esi 1068 1.1 christos movl 24(%esp),%edi 1069 1.1 christos movl 28(%esp),%eax 1070 1.1 christos movl 32(%esp),%edx 1071 1.1 christos movl %esp,%ebp 1072 1.1 christos subl $120,%esp 1073 1.1 christos movl 240(%edx),%ecx 1074 1.1 christos andl $-16,%esp 1075 1.1 christos movl $135,96(%esp) 1076 1.1 christos movl $0,100(%esp) 1077 1.1 christos movl $1,104(%esp) 1078 1.1 christos movl $0,108(%esp) 1079 1.1 christos movl %eax,112(%esp) 1080 1.1 christos movl %ebp,116(%esp) 1081 1.1 christos movdqa %xmm2,%xmm1 1082 1.1 christos pxor %xmm0,%xmm0 1083 1.1 christos movdqa 96(%esp),%xmm3 1084 1.1 christos pcmpgtd %xmm1,%xmm0 1085 1.1 christos andl $-16,%eax 1086 1.1 christos movl %edx,%ebp 1087 1.1 christos movl %ecx,%ebx 1088 1.1 christos subl $96,%eax 1089 1.1 christos jc .L047xts_enc_short 1090 1.1 christos shll $4,%ecx 1091 1.1 christos movl $16,%ebx 1092 1.1 christos subl %ecx,%ebx 1093 1.1 christos leal 32(%edx,%ecx,1),%edx 1094 1.1 christos jmp .L048xts_enc_loop6 1095 1.1 christos .align 16 1096 1.1 christos .L048xts_enc_loop6: 1097 1.1 christos pshufd $19,%xmm0,%xmm2 1098 1.1 christos pxor %xmm0,%xmm0 1099 1.1 christos movdqa %xmm1,(%esp) 1100 1.1 christos paddq %xmm1,%xmm1 1101 1.1 christos pand %xmm3,%xmm2 1102 1.1 christos pcmpgtd %xmm1,%xmm0 1103 1.1 christos pxor %xmm2,%xmm1 1104 1.1 christos pshufd $19,%xmm0,%xmm2 1105 1.1 christos pxor %xmm0,%xmm0 1106 1.1 christos movdqa %xmm1,16(%esp) 1107 1.1 christos paddq %xmm1,%xmm1 1108 1.1 christos pand %xmm3,%xmm2 1109 1.1 christos pcmpgtd %xmm1,%xmm0 1110 1.1 christos pxor %xmm2,%xmm1 1111 1.1 christos pshufd $19,%xmm0,%xmm2 1112 1.1 christos pxor %xmm0,%xmm0 1113 1.1 christos movdqa %xmm1,32(%esp) 1114 1.1 christos paddq %xmm1,%xmm1 1115 1.1 christos pand %xmm3,%xmm2 1116 1.1 christos pcmpgtd %xmm1,%xmm0 1117 1.1 christos pxor %xmm2,%xmm1 1118 1.1 christos pshufd $19,%xmm0,%xmm2 1119 1.1 christos pxor %xmm0,%xmm0 1120 1.1 christos movdqa %xmm1,48(%esp) 1121 1.1 christos paddq %xmm1,%xmm1 1122 1.1 christos pand %xmm3,%xmm2 1123 1.1 christos pcmpgtd %xmm1,%xmm0 1124 1.1 christos pxor %xmm2,%xmm1 1125 1.1 christos pshufd $19,%xmm0,%xmm7 1126 1.1 christos movdqa %xmm1,64(%esp) 1127 1.1 christos paddq %xmm1,%xmm1 1128 1.1 christos movups (%ebp),%xmm0 1129 1.1 christos pand %xmm3,%xmm7 1130 1.1 christos movups (%esi),%xmm2 1131 1.1 christos pxor %xmm1,%xmm7 1132 1.1 christos movl %ebx,%ecx 1133 1.1 christos movdqu 16(%esi),%xmm3 1134 1.1 christos xorps %xmm0,%xmm2 1135 1.1 christos movdqu 32(%esi),%xmm4 1136 1.1 christos pxor %xmm0,%xmm3 1137 1.1 christos movdqu 48(%esi),%xmm5 1138 1.1 christos pxor %xmm0,%xmm4 1139 1.1 christos movdqu 64(%esi),%xmm6 1140 1.1 christos pxor %xmm0,%xmm5 1141 1.1 christos movdqu 80(%esi),%xmm1 1142 1.1 christos pxor %xmm0,%xmm6 1143 1.1 christos leal 96(%esi),%esi 1144 1.1 christos pxor (%esp),%xmm2 1145 1.1 christos movdqa %xmm7,80(%esp) 1146 1.1 christos pxor %xmm1,%xmm7 1147 1.1 christos movups 16(%ebp),%xmm1 1148 1.1 christos pxor 16(%esp),%xmm3 1149 1.1 christos pxor 32(%esp),%xmm4 1150 1.1 christos .byte 102,15,56,220,209 1151 1.1 christos pxor 48(%esp),%xmm5 1152 1.1 christos pxor 64(%esp),%xmm6 1153 1.1 christos .byte 102,15,56,220,217 1154 1.1 christos pxor %xmm0,%xmm7 1155 1.1 christos movups 32(%ebp),%xmm0 1156 1.1 christos .byte 102,15,56,220,225 1157 1.1 christos .byte 102,15,56,220,233 1158 1.1 christos .byte 102,15,56,220,241 1159 1.1 christos .byte 102,15,56,220,249 1160 1.1 christos call .L_aesni_encrypt6_enter 1161 1.1 christos movdqa 80(%esp),%xmm1 1162 1.1 christos pxor %xmm0,%xmm0 1163 1.1 christos xorps (%esp),%xmm2 1164 1.1 christos pcmpgtd %xmm1,%xmm0 1165 1.1 christos xorps 16(%esp),%xmm3 1166 1.1 christos movups %xmm2,(%edi) 1167 1.1 christos xorps 32(%esp),%xmm4 1168 1.1 christos movups %xmm3,16(%edi) 1169 1.1 christos xorps 48(%esp),%xmm5 1170 1.1 christos movups %xmm4,32(%edi) 1171 1.1 christos xorps 64(%esp),%xmm6 1172 1.1 christos movups %xmm5,48(%edi) 1173 1.1 christos xorps %xmm1,%xmm7 1174 1.1 christos movups %xmm6,64(%edi) 1175 1.1 christos pshufd $19,%xmm0,%xmm2 1176 1.1 christos movups %xmm7,80(%edi) 1177 1.1 christos leal 96(%edi),%edi 1178 1.1 christos movdqa 96(%esp),%xmm3 1179 1.1 christos pxor %xmm0,%xmm0 1180 1.1 christos paddq %xmm1,%xmm1 1181 1.1 christos pand %xmm3,%xmm2 1182 1.1 christos pcmpgtd %xmm1,%xmm0 1183 1.1 christos pxor %xmm2,%xmm1 1184 1.1 christos subl $96,%eax 1185 1.1 christos jnc .L048xts_enc_loop6 1186 1.1 christos movl 240(%ebp),%ecx 1187 1.1 christos movl %ebp,%edx 1188 1.1 christos movl %ecx,%ebx 1189 1.1 christos .L047xts_enc_short: 1190 1.1 christos addl $96,%eax 1191 1.1 christos jz .L049xts_enc_done6x 1192 1.1 christos movdqa %xmm1,%xmm5 1193 1.1 christos cmpl $32,%eax 1194 1.1 christos jb .L050xts_enc_one 1195 1.1 christos pshufd $19,%xmm0,%xmm2 1196 1.1 christos pxor %xmm0,%xmm0 1197 1.1 christos paddq %xmm1,%xmm1 1198 1.1 christos pand %xmm3,%xmm2 1199 1.1 christos pcmpgtd %xmm1,%xmm0 1200 1.1 christos pxor %xmm2,%xmm1 1201 1.1 christos je .L051xts_enc_two 1202 1.1 christos pshufd $19,%xmm0,%xmm2 1203 1.1 christos pxor %xmm0,%xmm0 1204 1.1 christos movdqa %xmm1,%xmm6 1205 1.1 christos paddq %xmm1,%xmm1 1206 1.1 christos pand %xmm3,%xmm2 1207 1.1 christos pcmpgtd %xmm1,%xmm0 1208 1.1 christos pxor %xmm2,%xmm1 1209 1.1 christos cmpl $64,%eax 1210 1.1 christos jb .L052xts_enc_three 1211 1.1 christos pshufd $19,%xmm0,%xmm2 1212 1.1 christos pxor %xmm0,%xmm0 1213 1.1 christos movdqa %xmm1,%xmm7 1214 1.1 christos paddq %xmm1,%xmm1 1215 1.1 christos pand %xmm3,%xmm2 1216 1.1 christos pcmpgtd %xmm1,%xmm0 1217 1.1 christos pxor %xmm2,%xmm1 1218 1.1 christos movdqa %xmm5,(%esp) 1219 1.1 christos movdqa %xmm6,16(%esp) 1220 1.1 christos je .L053xts_enc_four 1221 1.1 christos movdqa %xmm7,32(%esp) 1222 1.1 christos pshufd $19,%xmm0,%xmm7 1223 1.1 christos movdqa %xmm1,48(%esp) 1224 1.1 christos paddq %xmm1,%xmm1 1225 1.1 christos pand %xmm3,%xmm7 1226 1.1 christos pxor %xmm1,%xmm7 1227 1.1 christos movdqu (%esi),%xmm2 1228 1.1 christos movdqu 16(%esi),%xmm3 1229 1.1 christos movdqu 32(%esi),%xmm4 1230 1.1 christos pxor (%esp),%xmm2 1231 1.1 christos movdqu 48(%esi),%xmm5 1232 1.1 christos pxor 16(%esp),%xmm3 1233 1.1 christos movdqu 64(%esi),%xmm6 1234 1.1 christos pxor 32(%esp),%xmm4 1235 1.1 christos leal 80(%esi),%esi 1236 1.1 christos pxor 48(%esp),%xmm5 1237 1.1 christos movdqa %xmm7,64(%esp) 1238 1.1 christos pxor %xmm7,%xmm6 1239 1.1 christos call _aesni_encrypt6 1240 1.1 christos movaps 64(%esp),%xmm1 1241 1.1 christos xorps (%esp),%xmm2 1242 1.1 christos xorps 16(%esp),%xmm3 1243 1.1 christos xorps 32(%esp),%xmm4 1244 1.1 christos movups %xmm2,(%edi) 1245 1.1 christos xorps 48(%esp),%xmm5 1246 1.1 christos movups %xmm3,16(%edi) 1247 1.1 christos xorps %xmm1,%xmm6 1248 1.1 christos movups %xmm4,32(%edi) 1249 1.1 christos movups %xmm5,48(%edi) 1250 1.1 christos movups %xmm6,64(%edi) 1251 1.1 christos leal 80(%edi),%edi 1252 1.1 christos jmp .L054xts_enc_done 1253 1.1 christos .align 16 1254 1.1 christos .L050xts_enc_one: 1255 1.1 christos movups (%esi),%xmm2 1256 1.1 christos leal 16(%esi),%esi 1257 1.1 christos xorps %xmm5,%xmm2 1258 1.1 christos movups (%edx),%xmm0 1259 1.1 christos movups 16(%edx),%xmm1 1260 1.1 christos leal 32(%edx),%edx 1261 1.1 christos xorps %xmm0,%xmm2 1262 1.1 christos .L055enc1_loop_9: 1263 1.1 christos .byte 102,15,56,220,209 1264 1.1 christos decl %ecx 1265 1.1 christos movups (%edx),%xmm1 1266 1.1 christos leal 16(%edx),%edx 1267 1.1 christos jnz .L055enc1_loop_9 1268 1.1 christos .byte 102,15,56,221,209 1269 1.1 christos xorps %xmm5,%xmm2 1270 1.1 christos movups %xmm2,(%edi) 1271 1.1 christos leal 16(%edi),%edi 1272 1.1 christos movdqa %xmm5,%xmm1 1273 1.1 christos jmp .L054xts_enc_done 1274 1.1 christos .align 16 1275 1.1 christos .L051xts_enc_two: 1276 1.1 christos movaps %xmm1,%xmm6 1277 1.1 christos movups (%esi),%xmm2 1278 1.1 christos movups 16(%esi),%xmm3 1279 1.1 christos leal 32(%esi),%esi 1280 1.1 christos xorps %xmm5,%xmm2 1281 1.1 christos xorps %xmm6,%xmm3 1282 1.1 christos call _aesni_encrypt2 1283 1.1 christos xorps %xmm5,%xmm2 1284 1.1 christos xorps %xmm6,%xmm3 1285 1.1 christos movups %xmm2,(%edi) 1286 1.1 christos movups %xmm3,16(%edi) 1287 1.1 christos leal 32(%edi),%edi 1288 1.1 christos movdqa %xmm6,%xmm1 1289 1.1 christos jmp .L054xts_enc_done 1290 1.1 christos .align 16 1291 1.1 christos .L052xts_enc_three: 1292 1.1 christos movaps %xmm1,%xmm7 1293 1.1 christos movups (%esi),%xmm2 1294 1.1 christos movups 16(%esi),%xmm3 1295 1.1 christos movups 32(%esi),%xmm4 1296 1.1 christos leal 48(%esi),%esi 1297 1.1 christos xorps %xmm5,%xmm2 1298 1.1 christos xorps %xmm6,%xmm3 1299 1.1 christos xorps %xmm7,%xmm4 1300 1.1 christos call _aesni_encrypt3 1301 1.1 christos xorps %xmm5,%xmm2 1302 1.1 christos xorps %xmm6,%xmm3 1303 1.1 christos xorps %xmm7,%xmm4 1304 1.1 christos movups %xmm2,(%edi) 1305 1.1 christos movups %xmm3,16(%edi) 1306 1.1 christos movups %xmm4,32(%edi) 1307 1.1 christos leal 48(%edi),%edi 1308 1.1 christos movdqa %xmm7,%xmm1 1309 1.1 christos jmp .L054xts_enc_done 1310 1.1 christos .align 16 1311 1.1 christos .L053xts_enc_four: 1312 1.1 christos movaps %xmm1,%xmm6 1313 1.1 christos movups (%esi),%xmm2 1314 1.1 christos movups 16(%esi),%xmm3 1315 1.1 christos movups 32(%esi),%xmm4 1316 1.1 christos xorps (%esp),%xmm2 1317 1.1 christos movups 48(%esi),%xmm5 1318 1.1 christos leal 64(%esi),%esi 1319 1.1 christos xorps 16(%esp),%xmm3 1320 1.1 christos xorps %xmm7,%xmm4 1321 1.1 christos xorps %xmm6,%xmm5 1322 1.1 christos call _aesni_encrypt4 1323 1.1 christos xorps (%esp),%xmm2 1324 1.1 christos xorps 16(%esp),%xmm3 1325 1.1 christos xorps %xmm7,%xmm4 1326 1.1 christos movups %xmm2,(%edi) 1327 1.1 christos xorps %xmm6,%xmm5 1328 1.1 christos movups %xmm3,16(%edi) 1329 1.1 christos movups %xmm4,32(%edi) 1330 1.1 christos movups %xmm5,48(%edi) 1331 1.1 christos leal 64(%edi),%edi 1332 1.1 christos movdqa %xmm6,%xmm1 1333 1.1 christos jmp .L054xts_enc_done 1334 1.1 christos .align 16 1335 1.1 christos .L049xts_enc_done6x: 1336 1.1 christos movl 112(%esp),%eax 1337 1.1 christos andl $15,%eax 1338 1.1 christos jz .L056xts_enc_ret 1339 1.1 christos movdqa %xmm1,%xmm5 1340 1.1 christos movl %eax,112(%esp) 1341 1.1 christos jmp .L057xts_enc_steal 1342 1.1 christos .align 16 1343 1.1 christos .L054xts_enc_done: 1344 1.1 christos movl 112(%esp),%eax 1345 1.1 christos pxor %xmm0,%xmm0 1346 1.1 christos andl $15,%eax 1347 1.1 christos jz .L056xts_enc_ret 1348 1.1 christos pcmpgtd %xmm1,%xmm0 1349 1.1 christos movl %eax,112(%esp) 1350 1.1 christos pshufd $19,%xmm0,%xmm5 1351 1.1 christos paddq %xmm1,%xmm1 1352 1.1 christos pand 96(%esp),%xmm5 1353 1.1 christos pxor %xmm1,%xmm5 1354 1.1 christos .L057xts_enc_steal: 1355 1.1 christos movzbl (%esi),%ecx 1356 1.1 christos movzbl -16(%edi),%edx 1357 1.1 christos leal 1(%esi),%esi 1358 1.1 christos movb %cl,-16(%edi) 1359 1.1 christos movb %dl,(%edi) 1360 1.1 christos leal 1(%edi),%edi 1361 1.1 christos subl $1,%eax 1362 1.1 christos jnz .L057xts_enc_steal 1363 1.1 christos subl 112(%esp),%edi 1364 1.1 christos movl %ebp,%edx 1365 1.1 christos movl %ebx,%ecx 1366 1.1 christos movups -16(%edi),%xmm2 1367 1.1 christos xorps %xmm5,%xmm2 1368 1.1 christos movups (%edx),%xmm0 1369 1.1 christos movups 16(%edx),%xmm1 1370 1.1 christos leal 32(%edx),%edx 1371 1.1 christos xorps %xmm0,%xmm2 1372 1.1 christos .L058enc1_loop_10: 1373 1.1 christos .byte 102,15,56,220,209 1374 1.1 christos decl %ecx 1375 1.1 christos movups (%edx),%xmm1 1376 1.1 christos leal 16(%edx),%edx 1377 1.1 christos jnz .L058enc1_loop_10 1378 1.1 christos .byte 102,15,56,221,209 1379 1.1 christos xorps %xmm5,%xmm2 1380 1.1 christos movups %xmm2,-16(%edi) 1381 1.1 christos .L056xts_enc_ret: 1382 1.1 christos pxor %xmm0,%xmm0 1383 1.1 christos pxor %xmm1,%xmm1 1384 1.1 christos pxor %xmm2,%xmm2 1385 1.1 christos movdqa %xmm0,(%esp) 1386 1.1 christos pxor %xmm3,%xmm3 1387 1.1 christos movdqa %xmm0,16(%esp) 1388 1.1 christos pxor %xmm4,%xmm4 1389 1.1 christos movdqa %xmm0,32(%esp) 1390 1.1 christos pxor %xmm5,%xmm5 1391 1.1 christos movdqa %xmm0,48(%esp) 1392 1.1 christos pxor %xmm6,%xmm6 1393 1.1 christos movdqa %xmm0,64(%esp) 1394 1.1 christos pxor %xmm7,%xmm7 1395 1.1 christos movdqa %xmm0,80(%esp) 1396 1.1 christos movl 116(%esp),%esp 1397 1.1 christos popl %edi 1398 1.1 christos popl %esi 1399 1.1 christos popl %ebx 1400 1.1 christos popl %ebp 1401 1.1 christos ret 1402 1.1 christos .size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin 1403 1.1 christos .globl aesni_xts_decrypt 1404 1.1 christos .type aesni_xts_decrypt,@function 1405 1.1 christos .align 16 1406 1.1 christos aesni_xts_decrypt: 1407 1.1 christos .L_aesni_xts_decrypt_begin: 1408 1.1 christos pushl %ebp 1409 1.1 christos pushl %ebx 1410 1.1 christos pushl %esi 1411 1.1 christos pushl %edi 1412 1.1 christos movl 36(%esp),%edx 1413 1.1 christos movl 40(%esp),%esi 1414 1.1 christos movl 240(%edx),%ecx 1415 1.1 christos movups (%esi),%xmm2 1416 1.1 christos movups (%edx),%xmm0 1417 1.1 christos movups 16(%edx),%xmm1 1418 1.1 christos leal 32(%edx),%edx 1419 1.1 christos xorps %xmm0,%xmm2 1420 1.1 christos .L059enc1_loop_11: 1421 1.1 christos .byte 102,15,56,220,209 1422 1.1 christos decl %ecx 1423 1.1 christos movups (%edx),%xmm1 1424 1.1 christos leal 16(%edx),%edx 1425 1.1 christos jnz .L059enc1_loop_11 1426 1.1 christos .byte 102,15,56,221,209 1427 1.1 christos movl 20(%esp),%esi 1428 1.1 christos movl 24(%esp),%edi 1429 1.1 christos movl 28(%esp),%eax 1430 1.1 christos movl 32(%esp),%edx 1431 1.1 christos movl %esp,%ebp 1432 1.1 christos subl $120,%esp 1433 1.1 christos andl $-16,%esp 1434 1.1 christos xorl %ebx,%ebx 1435 1.1 christos testl $15,%eax 1436 1.1 christos setnz %bl 1437 1.1 christos shll $4,%ebx 1438 1.1 christos subl %ebx,%eax 1439 1.1 christos movl $135,96(%esp) 1440 1.1 christos movl $0,100(%esp) 1441 1.1 christos movl $1,104(%esp) 1442 1.1 christos movl $0,108(%esp) 1443 1.1 christos movl %eax,112(%esp) 1444 1.1 christos movl %ebp,116(%esp) 1445 1.1 christos movl 240(%edx),%ecx 1446 1.1 christos movl %edx,%ebp 1447 1.1 christos movl %ecx,%ebx 1448 1.1 christos movdqa %xmm2,%xmm1 1449 1.1 christos pxor %xmm0,%xmm0 1450 1.1 christos movdqa 96(%esp),%xmm3 1451 1.1 christos pcmpgtd %xmm1,%xmm0 1452 1.1 christos andl $-16,%eax 1453 1.1 christos subl $96,%eax 1454 1.1 christos jc .L060xts_dec_short 1455 1.1 christos shll $4,%ecx 1456 1.1 christos movl $16,%ebx 1457 1.1 christos subl %ecx,%ebx 1458 1.1 christos leal 32(%edx,%ecx,1),%edx 1459 1.1 christos jmp .L061xts_dec_loop6 1460 1.1 christos .align 16 1461 1.1 christos .L061xts_dec_loop6: 1462 1.1 christos pshufd $19,%xmm0,%xmm2 1463 1.1 christos pxor %xmm0,%xmm0 1464 1.1 christos movdqa %xmm1,(%esp) 1465 1.1 christos paddq %xmm1,%xmm1 1466 1.1 christos pand %xmm3,%xmm2 1467 1.1 christos pcmpgtd %xmm1,%xmm0 1468 1.1 christos pxor %xmm2,%xmm1 1469 1.1 christos pshufd $19,%xmm0,%xmm2 1470 1.1 christos pxor %xmm0,%xmm0 1471 1.1 christos movdqa %xmm1,16(%esp) 1472 1.1 christos paddq %xmm1,%xmm1 1473 1.1 christos pand %xmm3,%xmm2 1474 1.1 christos pcmpgtd %xmm1,%xmm0 1475 1.1 christos pxor %xmm2,%xmm1 1476 1.1 christos pshufd $19,%xmm0,%xmm2 1477 1.1 christos pxor %xmm0,%xmm0 1478 1.1 christos movdqa %xmm1,32(%esp) 1479 1.1 christos paddq %xmm1,%xmm1 1480 1.1 christos pand %xmm3,%xmm2 1481 1.1 christos pcmpgtd %xmm1,%xmm0 1482 1.1 christos pxor %xmm2,%xmm1 1483 1.1 christos pshufd $19,%xmm0,%xmm2 1484 1.1 christos pxor %xmm0,%xmm0 1485 1.1 christos movdqa %xmm1,48(%esp) 1486 1.1 christos paddq %xmm1,%xmm1 1487 1.1 christos pand %xmm3,%xmm2 1488 1.1 christos pcmpgtd %xmm1,%xmm0 1489 1.1 christos pxor %xmm2,%xmm1 1490 1.1 christos pshufd $19,%xmm0,%xmm7 1491 1.1 christos movdqa %xmm1,64(%esp) 1492 1.1 christos paddq %xmm1,%xmm1 1493 1.1 christos movups (%ebp),%xmm0 1494 1.1 christos pand %xmm3,%xmm7 1495 1.1 christos movups (%esi),%xmm2 1496 1.1 christos pxor %xmm1,%xmm7 1497 1.1 christos movl %ebx,%ecx 1498 1.1 christos movdqu 16(%esi),%xmm3 1499 1.1 christos xorps %xmm0,%xmm2 1500 1.1 christos movdqu 32(%esi),%xmm4 1501 1.1 christos pxor %xmm0,%xmm3 1502 1.1 christos movdqu 48(%esi),%xmm5 1503 1.1 christos pxor %xmm0,%xmm4 1504 1.1 christos movdqu 64(%esi),%xmm6 1505 1.1 christos pxor %xmm0,%xmm5 1506 1.1 christos movdqu 80(%esi),%xmm1 1507 1.1 christos pxor %xmm0,%xmm6 1508 1.1 christos leal 96(%esi),%esi 1509 1.1 christos pxor (%esp),%xmm2 1510 1.1 christos movdqa %xmm7,80(%esp) 1511 1.1 christos pxor %xmm1,%xmm7 1512 1.1 christos movups 16(%ebp),%xmm1 1513 1.1 christos pxor 16(%esp),%xmm3 1514 1.1 christos pxor 32(%esp),%xmm4 1515 1.1 christos .byte 102,15,56,222,209 1516 1.1 christos pxor 48(%esp),%xmm5 1517 1.1 christos pxor 64(%esp),%xmm6 1518 1.1 christos .byte 102,15,56,222,217 1519 1.1 christos pxor %xmm0,%xmm7 1520 1.1 christos movups 32(%ebp),%xmm0 1521 1.1 christos .byte 102,15,56,222,225 1522 1.1 christos .byte 102,15,56,222,233 1523 1.1 christos .byte 102,15,56,222,241 1524 1.1 christos .byte 102,15,56,222,249 1525 1.1 christos call .L_aesni_decrypt6_enter 1526 1.1 christos movdqa 80(%esp),%xmm1 1527 1.1 christos pxor %xmm0,%xmm0 1528 1.1 christos xorps (%esp),%xmm2 1529 1.1 christos pcmpgtd %xmm1,%xmm0 1530 1.1 christos xorps 16(%esp),%xmm3 1531 1.1 christos movups %xmm2,(%edi) 1532 1.1 christos xorps 32(%esp),%xmm4 1533 1.1 christos movups %xmm3,16(%edi) 1534 1.1 christos xorps 48(%esp),%xmm5 1535 1.1 christos movups %xmm4,32(%edi) 1536 1.1 christos xorps 64(%esp),%xmm6 1537 1.1 christos movups %xmm5,48(%edi) 1538 1.1 christos xorps %xmm1,%xmm7 1539 1.1 christos movups %xmm6,64(%edi) 1540 1.1 christos pshufd $19,%xmm0,%xmm2 1541 1.1 christos movups %xmm7,80(%edi) 1542 1.1 christos leal 96(%edi),%edi 1543 1.1 christos movdqa 96(%esp),%xmm3 1544 1.1 christos pxor %xmm0,%xmm0 1545 1.1 christos paddq %xmm1,%xmm1 1546 1.1 christos pand %xmm3,%xmm2 1547 1.1 christos pcmpgtd %xmm1,%xmm0 1548 1.1 christos pxor %xmm2,%xmm1 1549 1.1 christos subl $96,%eax 1550 1.1 christos jnc .L061xts_dec_loop6 1551 1.1 christos movl 240(%ebp),%ecx 1552 1.1 christos movl %ebp,%edx 1553 1.1 christos movl %ecx,%ebx 1554 1.1 christos .L060xts_dec_short: 1555 1.1 christos addl $96,%eax 1556 1.1 christos jz .L062xts_dec_done6x 1557 1.1 christos movdqa %xmm1,%xmm5 1558 1.1 christos cmpl $32,%eax 1559 1.1 christos jb .L063xts_dec_one 1560 1.1 christos pshufd $19,%xmm0,%xmm2 1561 1.1 christos pxor %xmm0,%xmm0 1562 1.1 christos paddq %xmm1,%xmm1 1563 1.1 christos pand %xmm3,%xmm2 1564 1.1 christos pcmpgtd %xmm1,%xmm0 1565 1.1 christos pxor %xmm2,%xmm1 1566 1.1 christos je .L064xts_dec_two 1567 1.1 christos pshufd $19,%xmm0,%xmm2 1568 1.1 christos pxor %xmm0,%xmm0 1569 1.1 christos movdqa %xmm1,%xmm6 1570 1.1 christos paddq %xmm1,%xmm1 1571 1.1 christos pand %xmm3,%xmm2 1572 1.1 christos pcmpgtd %xmm1,%xmm0 1573 1.1 christos pxor %xmm2,%xmm1 1574 1.1 christos cmpl $64,%eax 1575 1.1 christos jb .L065xts_dec_three 1576 1.1 christos pshufd $19,%xmm0,%xmm2 1577 1.1 christos pxor %xmm0,%xmm0 1578 1.1 christos movdqa %xmm1,%xmm7 1579 1.1 christos paddq %xmm1,%xmm1 1580 1.1 christos pand %xmm3,%xmm2 1581 1.1 christos pcmpgtd %xmm1,%xmm0 1582 1.1 christos pxor %xmm2,%xmm1 1583 1.1 christos movdqa %xmm5,(%esp) 1584 1.1 christos movdqa %xmm6,16(%esp) 1585 1.1 christos je .L066xts_dec_four 1586 1.1 christos movdqa %xmm7,32(%esp) 1587 1.1 christos pshufd $19,%xmm0,%xmm7 1588 1.1 christos movdqa %xmm1,48(%esp) 1589 1.1 christos paddq %xmm1,%xmm1 1590 1.1 christos pand %xmm3,%xmm7 1591 1.1 christos pxor %xmm1,%xmm7 1592 1.1 christos movdqu (%esi),%xmm2 1593 1.1 christos movdqu 16(%esi),%xmm3 1594 1.1 christos movdqu 32(%esi),%xmm4 1595 1.1 christos pxor (%esp),%xmm2 1596 1.1 christos movdqu 48(%esi),%xmm5 1597 1.1 christos pxor 16(%esp),%xmm3 1598 1.1 christos movdqu 64(%esi),%xmm6 1599 1.1 christos pxor 32(%esp),%xmm4 1600 1.1 christos leal 80(%esi),%esi 1601 1.1 christos pxor 48(%esp),%xmm5 1602 1.1 christos movdqa %xmm7,64(%esp) 1603 1.1 christos pxor %xmm7,%xmm6 1604 1.1 christos call _aesni_decrypt6 1605 1.1 christos movaps 64(%esp),%xmm1 1606 1.1 christos xorps (%esp),%xmm2 1607 1.1 christos xorps 16(%esp),%xmm3 1608 1.1 christos xorps 32(%esp),%xmm4 1609 1.1 christos movups %xmm2,(%edi) 1610 1.1 christos xorps 48(%esp),%xmm5 1611 1.1 christos movups %xmm3,16(%edi) 1612 1.1 christos xorps %xmm1,%xmm6 1613 1.1 christos movups %xmm4,32(%edi) 1614 1.1 christos movups %xmm5,48(%edi) 1615 1.1 christos movups %xmm6,64(%edi) 1616 1.1 christos leal 80(%edi),%edi 1617 1.1 christos jmp .L067xts_dec_done 1618 1.1 christos .align 16 1619 1.1 christos .L063xts_dec_one: 1620 1.1 christos movups (%esi),%xmm2 1621 1.1 christos leal 16(%esi),%esi 1622 1.1 christos xorps %xmm5,%xmm2 1623 1.1 christos movups (%edx),%xmm0 1624 1.1 christos movups 16(%edx),%xmm1 1625 1.1 christos leal 32(%edx),%edx 1626 1.1 christos xorps %xmm0,%xmm2 1627 1.1 christos .L068dec1_loop_12: 1628 1.1 christos .byte 102,15,56,222,209 1629 1.1 christos decl %ecx 1630 1.1 christos movups (%edx),%xmm1 1631 1.1 christos leal 16(%edx),%edx 1632 1.1 christos jnz .L068dec1_loop_12 1633 1.1 christos .byte 102,15,56,223,209 1634 1.1 christos xorps %xmm5,%xmm2 1635 1.1 christos movups %xmm2,(%edi) 1636 1.1 christos leal 16(%edi),%edi 1637 1.1 christos movdqa %xmm5,%xmm1 1638 1.1 christos jmp .L067xts_dec_done 1639 1.1 christos .align 16 1640 1.1 christos .L064xts_dec_two: 1641 1.1 christos movaps %xmm1,%xmm6 1642 1.1 christos movups (%esi),%xmm2 1643 1.1 christos movups 16(%esi),%xmm3 1644 1.1 christos leal 32(%esi),%esi 1645 1.1 christos xorps %xmm5,%xmm2 1646 1.1 christos xorps %xmm6,%xmm3 1647 1.1 christos call _aesni_decrypt2 1648 1.1 christos xorps %xmm5,%xmm2 1649 1.1 christos xorps %xmm6,%xmm3 1650 1.1 christos movups %xmm2,(%edi) 1651 1.1 christos movups %xmm3,16(%edi) 1652 1.1 christos leal 32(%edi),%edi 1653 1.1 christos movdqa %xmm6,%xmm1 1654 1.1 christos jmp .L067xts_dec_done 1655 1.1 christos .align 16 1656 1.1 christos .L065xts_dec_three: 1657 1.1 christos movaps %xmm1,%xmm7 1658 1.1 christos movups (%esi),%xmm2 1659 1.1 christos movups 16(%esi),%xmm3 1660 1.1 christos movups 32(%esi),%xmm4 1661 1.1 christos leal 48(%esi),%esi 1662 1.1 christos xorps %xmm5,%xmm2 1663 1.1 christos xorps %xmm6,%xmm3 1664 1.1 christos xorps %xmm7,%xmm4 1665 1.1 christos call _aesni_decrypt3 1666 1.1 christos xorps %xmm5,%xmm2 1667 1.1 christos xorps %xmm6,%xmm3 1668 1.1 christos xorps %xmm7,%xmm4 1669 1.1 christos movups %xmm2,(%edi) 1670 1.1 christos movups %xmm3,16(%edi) 1671 1.1 christos movups %xmm4,32(%edi) 1672 1.1 christos leal 48(%edi),%edi 1673 1.1 christos movdqa %xmm7,%xmm1 1674 1.1 christos jmp .L067xts_dec_done 1675 1.1 christos .align 16 1676 1.1 christos .L066xts_dec_four: 1677 1.1 christos movaps %xmm1,%xmm6 1678 1.1 christos movups (%esi),%xmm2 1679 1.1 christos movups 16(%esi),%xmm3 1680 1.1 christos movups 32(%esi),%xmm4 1681 1.1 christos xorps (%esp),%xmm2 1682 1.1 christos movups 48(%esi),%xmm5 1683 1.1 christos leal 64(%esi),%esi 1684 1.1 christos xorps 16(%esp),%xmm3 1685 1.1 christos xorps %xmm7,%xmm4 1686 1.1 christos xorps %xmm6,%xmm5 1687 1.1 christos call _aesni_decrypt4 1688 1.1 christos xorps (%esp),%xmm2 1689 1.1 christos xorps 16(%esp),%xmm3 1690 1.1 christos xorps %xmm7,%xmm4 1691 1.1 christos movups %xmm2,(%edi) 1692 1.1 christos xorps %xmm6,%xmm5 1693 1.1 christos movups %xmm3,16(%edi) 1694 1.1 christos movups %xmm4,32(%edi) 1695 1.1 christos movups %xmm5,48(%edi) 1696 1.1 christos leal 64(%edi),%edi 1697 1.1 christos movdqa %xmm6,%xmm1 1698 1.1 christos jmp .L067xts_dec_done 1699 1.1 christos .align 16 1700 1.1 christos .L062xts_dec_done6x: 1701 1.1 christos movl 112(%esp),%eax 1702 1.1 christos andl $15,%eax 1703 1.1 christos jz .L069xts_dec_ret 1704 1.1 christos movl %eax,112(%esp) 1705 1.1 christos jmp .L070xts_dec_only_one_more 1706 1.1 christos .align 16 1707 1.1 christos .L067xts_dec_done: 1708 1.1 christos movl 112(%esp),%eax 1709 1.1 christos pxor %xmm0,%xmm0 1710 1.1 christos andl $15,%eax 1711 1.1 christos jz .L069xts_dec_ret 1712 1.1 christos pcmpgtd %xmm1,%xmm0 1713 1.1 christos movl %eax,112(%esp) 1714 1.1 christos pshufd $19,%xmm0,%xmm2 1715 1.1 christos pxor %xmm0,%xmm0 1716 1.1 christos movdqa 96(%esp),%xmm3 1717 1.1 christos paddq %xmm1,%xmm1 1718 1.1 christos pand %xmm3,%xmm2 1719 1.1 christos pcmpgtd %xmm1,%xmm0 1720 1.1 christos pxor %xmm2,%xmm1 1721 1.1 christos .L070xts_dec_only_one_more: 1722 1.1 christos pshufd $19,%xmm0,%xmm5 1723 1.1 christos movdqa %xmm1,%xmm6 1724 1.1 christos paddq %xmm1,%xmm1 1725 1.1 christos pand %xmm3,%xmm5 1726 1.1 christos pxor %xmm1,%xmm5 1727 1.1 christos movl %ebp,%edx 1728 1.1 christos movl %ebx,%ecx 1729 1.1 christos movups (%esi),%xmm2 1730 1.1 christos xorps %xmm5,%xmm2 1731 1.1 christos movups (%edx),%xmm0 1732 1.1 christos movups 16(%edx),%xmm1 1733 1.1 christos leal 32(%edx),%edx 1734 1.1 christos xorps %xmm0,%xmm2 1735 1.1 christos .L071dec1_loop_13: 1736 1.1 christos .byte 102,15,56,222,209 1737 1.1 christos decl %ecx 1738 1.1 christos movups (%edx),%xmm1 1739 1.1 christos leal 16(%edx),%edx 1740 1.1 christos jnz .L071dec1_loop_13 1741 1.1 christos .byte 102,15,56,223,209 1742 1.1 christos xorps %xmm5,%xmm2 1743 1.1 christos movups %xmm2,(%edi) 1744 1.1 christos .L072xts_dec_steal: 1745 1.1 christos movzbl 16(%esi),%ecx 1746 1.1 christos movzbl (%edi),%edx 1747 1.1 christos leal 1(%esi),%esi 1748 1.1 christos movb %cl,(%edi) 1749 1.1 christos movb %dl,16(%edi) 1750 1.1 christos leal 1(%edi),%edi 1751 1.1 christos subl $1,%eax 1752 1.1 christos jnz .L072xts_dec_steal 1753 1.1 christos subl 112(%esp),%edi 1754 1.1 christos movl %ebp,%edx 1755 1.1 christos movl %ebx,%ecx 1756 1.1 christos movups (%edi),%xmm2 1757 1.1 christos xorps %xmm6,%xmm2 1758 1.1 christos movups (%edx),%xmm0 1759 1.1 christos movups 16(%edx),%xmm1 1760 1.1 christos leal 32(%edx),%edx 1761 1.1 christos xorps %xmm0,%xmm2 1762 1.1 christos .L073dec1_loop_14: 1763 1.1 christos .byte 102,15,56,222,209 1764 1.1 christos decl %ecx 1765 1.1 christos movups (%edx),%xmm1 1766 1.1 christos leal 16(%edx),%edx 1767 1.1 christos jnz .L073dec1_loop_14 1768 1.1 christos .byte 102,15,56,223,209 1769 1.1 christos xorps %xmm6,%xmm2 1770 1.1 christos movups %xmm2,(%edi) 1771 1.1 christos .L069xts_dec_ret: 1772 1.1 christos pxor %xmm0,%xmm0 1773 1.1 christos pxor %xmm1,%xmm1 1774 1.1 christos pxor %xmm2,%xmm2 1775 1.1 christos movdqa %xmm0,(%esp) 1776 1.1 christos pxor %xmm3,%xmm3 1777 1.1 christos movdqa %xmm0,16(%esp) 1778 1.1 christos pxor %xmm4,%xmm4 1779 1.1 christos movdqa %xmm0,32(%esp) 1780 1.1 christos pxor %xmm5,%xmm5 1781 1.1 christos movdqa %xmm0,48(%esp) 1782 1.1 christos pxor %xmm6,%xmm6 1783 1.1 christos movdqa %xmm0,64(%esp) 1784 1.1 christos pxor %xmm7,%xmm7 1785 1.1 christos movdqa %xmm0,80(%esp) 1786 1.1 christos movl 116(%esp),%esp 1787 1.1 christos popl %edi 1788 1.1 christos popl %esi 1789 1.1 christos popl %ebx 1790 1.1 christos popl %ebp 1791 1.1 christos ret 1792 1.1 christos .size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin 1793 1.1.1.2 christos .globl aesni_ocb_encrypt 1794 1.1.1.2 christos .type aesni_ocb_encrypt,@function 1795 1.1.1.2 christos .align 16 1796 1.1.1.2 christos aesni_ocb_encrypt: 1797 1.1.1.2 christos .L_aesni_ocb_encrypt_begin: 1798 1.1.1.2 christos pushl %ebp 1799 1.1.1.2 christos pushl %ebx 1800 1.1.1.2 christos pushl %esi 1801 1.1.1.2 christos pushl %edi 1802 1.1.1.2 christos movl 40(%esp),%ecx 1803 1.1.1.2 christos movl 48(%esp),%ebx 1804 1.1.1.2 christos movl 20(%esp),%esi 1805 1.1.1.2 christos movl 24(%esp),%edi 1806 1.1.1.2 christos movl 28(%esp),%eax 1807 1.1.1.2 christos movl 32(%esp),%edx 1808 1.1.1.2 christos movdqu (%ecx),%xmm0 1809 1.1.1.2 christos movl 36(%esp),%ebp 1810 1.1.1.2 christos movdqu (%ebx),%xmm1 1811 1.1.1.2 christos movl 44(%esp),%ebx 1812 1.1.1.2 christos movl %esp,%ecx 1813 1.1.1.2 christos subl $132,%esp 1814 1.1.1.2 christos andl $-16,%esp 1815 1.1.1.2 christos subl %esi,%edi 1816 1.1.1.2 christos shll $4,%eax 1817 1.1.1.2 christos leal -96(%esi,%eax,1),%eax 1818 1.1.1.2 christos movl %edi,120(%esp) 1819 1.1.1.2 christos movl %eax,124(%esp) 1820 1.1.1.2 christos movl %ecx,128(%esp) 1821 1.1.1.2 christos movl 240(%edx),%ecx 1822 1.1.1.2 christos testl $1,%ebp 1823 1.1.1.2 christos jnz .L074odd 1824 1.1.1.2 christos bsfl %ebp,%eax 1825 1.1.1.2 christos addl $1,%ebp 1826 1.1.1.2 christos shll $4,%eax 1827 1.1.1.2 christos movdqu (%ebx,%eax,1),%xmm7 1828 1.1.1.2 christos movl %edx,%eax 1829 1.1.1.2 christos movdqu (%esi),%xmm2 1830 1.1.1.2 christos leal 16(%esi),%esi 1831 1.1.1.2 christos pxor %xmm0,%xmm7 1832 1.1.1.2 christos pxor %xmm2,%xmm1 1833 1.1.1.2 christos pxor %xmm7,%xmm2 1834 1.1.1.2 christos movdqa %xmm1,%xmm6 1835 1.1.1.2 christos movups (%edx),%xmm0 1836 1.1.1.2 christos movups 16(%edx),%xmm1 1837 1.1.1.2 christos leal 32(%edx),%edx 1838 1.1.1.2 christos xorps %xmm0,%xmm2 1839 1.1.1.2 christos .L075enc1_loop_15: 1840 1.1.1.2 christos .byte 102,15,56,220,209 1841 1.1.1.2 christos decl %ecx 1842 1.1.1.2 christos movups (%edx),%xmm1 1843 1.1.1.2 christos leal 16(%edx),%edx 1844 1.1.1.2 christos jnz .L075enc1_loop_15 1845 1.1.1.2 christos .byte 102,15,56,221,209 1846 1.1.1.2 christos xorps %xmm7,%xmm2 1847 1.1.1.2 christos movdqa %xmm7,%xmm0 1848 1.1.1.2 christos movdqa %xmm6,%xmm1 1849 1.1.1.2 christos movups %xmm2,-16(%edi,%esi,1) 1850 1.1.1.2 christos movl 240(%eax),%ecx 1851 1.1.1.2 christos movl %eax,%edx 1852 1.1.1.2 christos movl 124(%esp),%eax 1853 1.1.1.2 christos .L074odd: 1854 1.1.1.2 christos shll $4,%ecx 1855 1.1.1.2 christos movl $16,%edi 1856 1.1.1.2 christos subl %ecx,%edi 1857 1.1.1.2 christos movl %edx,112(%esp) 1858 1.1.1.2 christos leal 32(%edx,%ecx,1),%edx 1859 1.1.1.2 christos movl %edi,116(%esp) 1860 1.1.1.2 christos cmpl %eax,%esi 1861 1.1.1.2 christos ja .L076short 1862 1.1.1.2 christos jmp .L077grandloop 1863 1.1.1.2 christos .align 32 1864 1.1.1.2 christos .L077grandloop: 1865 1.1.1.2 christos leal 1(%ebp),%ecx 1866 1.1.1.2 christos leal 3(%ebp),%eax 1867 1.1.1.2 christos leal 5(%ebp),%edi 1868 1.1.1.2 christos addl $6,%ebp 1869 1.1.1.2 christos bsfl %ecx,%ecx 1870 1.1.1.2 christos bsfl %eax,%eax 1871 1.1.1.2 christos bsfl %edi,%edi 1872 1.1.1.2 christos shll $4,%ecx 1873 1.1.1.2 christos shll $4,%eax 1874 1.1.1.2 christos shll $4,%edi 1875 1.1.1.2 christos movdqu (%ebx),%xmm2 1876 1.1.1.2 christos movdqu (%ebx,%ecx,1),%xmm3 1877 1.1.1.2 christos movl 116(%esp),%ecx 1878 1.1.1.2 christos movdqa %xmm2,%xmm4 1879 1.1.1.2 christos movdqu (%ebx,%eax,1),%xmm5 1880 1.1.1.2 christos movdqa %xmm2,%xmm6 1881 1.1.1.2 christos movdqu (%ebx,%edi,1),%xmm7 1882 1.1.1.2 christos pxor %xmm0,%xmm2 1883 1.1.1.2 christos pxor %xmm2,%xmm3 1884 1.1.1.2 christos movdqa %xmm2,(%esp) 1885 1.1.1.2 christos pxor %xmm3,%xmm4 1886 1.1.1.2 christos movdqa %xmm3,16(%esp) 1887 1.1.1.2 christos pxor %xmm4,%xmm5 1888 1.1.1.2 christos movdqa %xmm4,32(%esp) 1889 1.1.1.2 christos pxor %xmm5,%xmm6 1890 1.1.1.2 christos movdqa %xmm5,48(%esp) 1891 1.1.1.2 christos pxor %xmm6,%xmm7 1892 1.1.1.2 christos movdqa %xmm6,64(%esp) 1893 1.1.1.2 christos movdqa %xmm7,80(%esp) 1894 1.1.1.2 christos movups -48(%edx,%ecx,1),%xmm0 1895 1.1.1.2 christos movdqu (%esi),%xmm2 1896 1.1.1.2 christos movdqu 16(%esi),%xmm3 1897 1.1.1.2 christos movdqu 32(%esi),%xmm4 1898 1.1.1.2 christos movdqu 48(%esi),%xmm5 1899 1.1.1.2 christos movdqu 64(%esi),%xmm6 1900 1.1.1.2 christos movdqu 80(%esi),%xmm7 1901 1.1.1.2 christos leal 96(%esi),%esi 1902 1.1.1.2 christos pxor %xmm2,%xmm1 1903 1.1.1.2 christos pxor %xmm0,%xmm2 1904 1.1.1.2 christos pxor %xmm3,%xmm1 1905 1.1.1.2 christos pxor %xmm0,%xmm3 1906 1.1.1.2 christos pxor %xmm4,%xmm1 1907 1.1.1.2 christos pxor %xmm0,%xmm4 1908 1.1.1.2 christos pxor %xmm5,%xmm1 1909 1.1.1.2 christos pxor %xmm0,%xmm5 1910 1.1.1.2 christos pxor %xmm6,%xmm1 1911 1.1.1.2 christos pxor %xmm0,%xmm6 1912 1.1.1.2 christos pxor %xmm7,%xmm1 1913 1.1.1.2 christos pxor %xmm0,%xmm7 1914 1.1.1.2 christos movdqa %xmm1,96(%esp) 1915 1.1.1.2 christos movups -32(%edx,%ecx,1),%xmm1 1916 1.1.1.2 christos pxor (%esp),%xmm2 1917 1.1.1.2 christos pxor 16(%esp),%xmm3 1918 1.1.1.2 christos pxor 32(%esp),%xmm4 1919 1.1.1.2 christos pxor 48(%esp),%xmm5 1920 1.1.1.2 christos pxor 64(%esp),%xmm6 1921 1.1.1.2 christos pxor 80(%esp),%xmm7 1922 1.1.1.2 christos movups -16(%edx,%ecx,1),%xmm0 1923 1.1.1.2 christos .byte 102,15,56,220,209 1924 1.1.1.2 christos .byte 102,15,56,220,217 1925 1.1.1.2 christos .byte 102,15,56,220,225 1926 1.1.1.2 christos .byte 102,15,56,220,233 1927 1.1.1.2 christos .byte 102,15,56,220,241 1928 1.1.1.2 christos .byte 102,15,56,220,249 1929 1.1.1.2 christos movl 120(%esp),%edi 1930 1.1.1.2 christos movl 124(%esp),%eax 1931 1.1.1.2 christos call .L_aesni_encrypt6_enter 1932 1.1.1.2 christos movdqa 80(%esp),%xmm0 1933 1.1.1.2 christos pxor (%esp),%xmm2 1934 1.1.1.2 christos pxor 16(%esp),%xmm3 1935 1.1.1.2 christos pxor 32(%esp),%xmm4 1936 1.1.1.2 christos pxor 48(%esp),%xmm5 1937 1.1.1.2 christos pxor 64(%esp),%xmm6 1938 1.1.1.2 christos pxor %xmm0,%xmm7 1939 1.1.1.2 christos movdqa 96(%esp),%xmm1 1940 1.1.1.2 christos movdqu %xmm2,-96(%edi,%esi,1) 1941 1.1.1.2 christos movdqu %xmm3,-80(%edi,%esi,1) 1942 1.1.1.2 christos movdqu %xmm4,-64(%edi,%esi,1) 1943 1.1.1.2 christos movdqu %xmm5,-48(%edi,%esi,1) 1944 1.1.1.2 christos movdqu %xmm6,-32(%edi,%esi,1) 1945 1.1.1.2 christos movdqu %xmm7,-16(%edi,%esi,1) 1946 1.1.1.2 christos cmpl %eax,%esi 1947 1.1.1.2 christos jb .L077grandloop 1948 1.1.1.2 christos .L076short: 1949 1.1.1.2 christos addl $96,%eax 1950 1.1.1.2 christos subl %esi,%eax 1951 1.1.1.2 christos jz .L078done 1952 1.1.1.2 christos cmpl $32,%eax 1953 1.1.1.2 christos jb .L079one 1954 1.1.1.2 christos je .L080two 1955 1.1.1.2 christos cmpl $64,%eax 1956 1.1.1.2 christos jb .L081three 1957 1.1.1.2 christos je .L082four 1958 1.1.1.2 christos leal 1(%ebp),%ecx 1959 1.1.1.2 christos leal 3(%ebp),%eax 1960 1.1.1.2 christos bsfl %ecx,%ecx 1961 1.1.1.2 christos bsfl %eax,%eax 1962 1.1.1.2 christos shll $4,%ecx 1963 1.1.1.2 christos shll $4,%eax 1964 1.1.1.2 christos movdqu (%ebx),%xmm2 1965 1.1.1.2 christos movdqu (%ebx,%ecx,1),%xmm3 1966 1.1.1.2 christos movl 116(%esp),%ecx 1967 1.1.1.2 christos movdqa %xmm2,%xmm4 1968 1.1.1.2 christos movdqu (%ebx,%eax,1),%xmm5 1969 1.1.1.2 christos movdqa %xmm2,%xmm6 1970 1.1.1.2 christos pxor %xmm0,%xmm2 1971 1.1.1.2 christos pxor %xmm2,%xmm3 1972 1.1.1.2 christos movdqa %xmm2,(%esp) 1973 1.1.1.2 christos pxor %xmm3,%xmm4 1974 1.1.1.2 christos movdqa %xmm3,16(%esp) 1975 1.1.1.2 christos pxor %xmm4,%xmm5 1976 1.1.1.2 christos movdqa %xmm4,32(%esp) 1977 1.1.1.2 christos pxor %xmm5,%xmm6 1978 1.1.1.2 christos movdqa %xmm5,48(%esp) 1979 1.1.1.2 christos pxor %xmm6,%xmm7 1980 1.1.1.2 christos movdqa %xmm6,64(%esp) 1981 1.1.1.2 christos movups -48(%edx,%ecx,1),%xmm0 1982 1.1.1.2 christos movdqu (%esi),%xmm2 1983 1.1.1.2 christos movdqu 16(%esi),%xmm3 1984 1.1.1.2 christos movdqu 32(%esi),%xmm4 1985 1.1.1.2 christos movdqu 48(%esi),%xmm5 1986 1.1.1.2 christos movdqu 64(%esi),%xmm6 1987 1.1.1.2 christos pxor %xmm7,%xmm7 1988 1.1.1.2 christos pxor %xmm2,%xmm1 1989 1.1.1.2 christos pxor %xmm0,%xmm2 1990 1.1.1.2 christos pxor %xmm3,%xmm1 1991 1.1.1.2 christos pxor %xmm0,%xmm3 1992 1.1.1.2 christos pxor %xmm4,%xmm1 1993 1.1.1.2 christos pxor %xmm0,%xmm4 1994 1.1.1.2 christos pxor %xmm5,%xmm1 1995 1.1.1.2 christos pxor %xmm0,%xmm5 1996 1.1.1.2 christos pxor %xmm6,%xmm1 1997 1.1.1.2 christos pxor %xmm0,%xmm6 1998 1.1.1.2 christos movdqa %xmm1,96(%esp) 1999 1.1.1.2 christos movups -32(%edx,%ecx,1),%xmm1 2000 1.1.1.2 christos pxor (%esp),%xmm2 2001 1.1.1.2 christos pxor 16(%esp),%xmm3 2002 1.1.1.2 christos pxor 32(%esp),%xmm4 2003 1.1.1.2 christos pxor 48(%esp),%xmm5 2004 1.1.1.2 christos pxor 64(%esp),%xmm6 2005 1.1.1.2 christos movups -16(%edx,%ecx,1),%xmm0 2006 1.1.1.2 christos .byte 102,15,56,220,209 2007 1.1.1.2 christos .byte 102,15,56,220,217 2008 1.1.1.2 christos .byte 102,15,56,220,225 2009 1.1.1.2 christos .byte 102,15,56,220,233 2010 1.1.1.2 christos .byte 102,15,56,220,241 2011 1.1.1.2 christos .byte 102,15,56,220,249 2012 1.1.1.2 christos movl 120(%esp),%edi 2013 1.1.1.2 christos call .L_aesni_encrypt6_enter 2014 1.1.1.2 christos movdqa 64(%esp),%xmm0 2015 1.1.1.2 christos pxor (%esp),%xmm2 2016 1.1.1.2 christos pxor 16(%esp),%xmm3 2017 1.1.1.2 christos pxor 32(%esp),%xmm4 2018 1.1.1.2 christos pxor 48(%esp),%xmm5 2019 1.1.1.2 christos pxor %xmm0,%xmm6 2020 1.1.1.2 christos movdqa 96(%esp),%xmm1 2021 1.1.1.2 christos movdqu %xmm2,(%edi,%esi,1) 2022 1.1.1.2 christos movdqu %xmm3,16(%edi,%esi,1) 2023 1.1.1.2 christos movdqu %xmm4,32(%edi,%esi,1) 2024 1.1.1.2 christos movdqu %xmm5,48(%edi,%esi,1) 2025 1.1.1.2 christos movdqu %xmm6,64(%edi,%esi,1) 2026 1.1.1.2 christos jmp .L078done 2027 1.1.1.2 christos .align 16 2028 1.1.1.2 christos .L079one: 2029 1.1.1.2 christos movdqu (%ebx),%xmm7 2030 1.1.1.2 christos movl 112(%esp),%edx 2031 1.1.1.2 christos movdqu (%esi),%xmm2 2032 1.1.1.2 christos movl 240(%edx),%ecx 2033 1.1.1.2 christos pxor %xmm0,%xmm7 2034 1.1.1.2 christos pxor %xmm2,%xmm1 2035 1.1.1.2 christos pxor %xmm7,%xmm2 2036 1.1.1.2 christos movdqa %xmm1,%xmm6 2037 1.1.1.2 christos movl 120(%esp),%edi 2038 1.1.1.2 christos movups (%edx),%xmm0 2039 1.1.1.2 christos movups 16(%edx),%xmm1 2040 1.1.1.2 christos leal 32(%edx),%edx 2041 1.1.1.2 christos xorps %xmm0,%xmm2 2042 1.1.1.2 christos .L083enc1_loop_16: 2043 1.1.1.2 christos .byte 102,15,56,220,209 2044 1.1.1.2 christos decl %ecx 2045 1.1.1.2 christos movups (%edx),%xmm1 2046 1.1.1.2 christos leal 16(%edx),%edx 2047 1.1.1.2 christos jnz .L083enc1_loop_16 2048 1.1.1.2 christos .byte 102,15,56,221,209 2049 1.1.1.2 christos xorps %xmm7,%xmm2 2050 1.1.1.2 christos movdqa %xmm7,%xmm0 2051 1.1.1.2 christos movdqa %xmm6,%xmm1 2052 1.1.1.2 christos movups %xmm2,(%edi,%esi,1) 2053 1.1.1.2 christos jmp .L078done 2054 1.1.1.2 christos .align 16 2055 1.1.1.2 christos .L080two: 2056 1.1.1.2 christos leal 1(%ebp),%ecx 2057 1.1.1.2 christos movl 112(%esp),%edx 2058 1.1.1.2 christos bsfl %ecx,%ecx 2059 1.1.1.2 christos shll $4,%ecx 2060 1.1.1.2 christos movdqu (%ebx),%xmm6 2061 1.1.1.2 christos movdqu (%ebx,%ecx,1),%xmm7 2062 1.1.1.2 christos movdqu (%esi),%xmm2 2063 1.1.1.2 christos movdqu 16(%esi),%xmm3 2064 1.1.1.2 christos movl 240(%edx),%ecx 2065 1.1.1.2 christos pxor %xmm0,%xmm6 2066 1.1.1.2 christos pxor %xmm6,%xmm7 2067 1.1.1.2 christos pxor %xmm2,%xmm1 2068 1.1.1.2 christos pxor %xmm6,%xmm2 2069 1.1.1.2 christos pxor %xmm3,%xmm1 2070 1.1.1.2 christos pxor %xmm7,%xmm3 2071 1.1.1.2 christos movdqa %xmm1,%xmm5 2072 1.1.1.2 christos movl 120(%esp),%edi 2073 1.1.1.2 christos call _aesni_encrypt2 2074 1.1.1.2 christos xorps %xmm6,%xmm2 2075 1.1.1.2 christos xorps %xmm7,%xmm3 2076 1.1.1.2 christos movdqa %xmm7,%xmm0 2077 1.1.1.2 christos movdqa %xmm5,%xmm1 2078 1.1.1.2 christos movups %xmm2,(%edi,%esi,1) 2079 1.1.1.2 christos movups %xmm3,16(%edi,%esi,1) 2080 1.1.1.2 christos jmp .L078done 2081 1.1.1.2 christos .align 16 2082 1.1.1.2 christos .L081three: 2083 1.1.1.2 christos leal 1(%ebp),%ecx 2084 1.1.1.2 christos movl 112(%esp),%edx 2085 1.1.1.2 christos bsfl %ecx,%ecx 2086 1.1.1.2 christos shll $4,%ecx 2087 1.1.1.2 christos movdqu (%ebx),%xmm5 2088 1.1.1.2 christos movdqu (%ebx,%ecx,1),%xmm6 2089 1.1.1.2 christos movdqa %xmm5,%xmm7 2090 1.1.1.2 christos movdqu (%esi),%xmm2 2091 1.1.1.2 christos movdqu 16(%esi),%xmm3 2092 1.1.1.2 christos movdqu 32(%esi),%xmm4 2093 1.1.1.2 christos movl 240(%edx),%ecx 2094 1.1.1.2 christos pxor %xmm0,%xmm5 2095 1.1.1.2 christos pxor %xmm5,%xmm6 2096 1.1.1.2 christos pxor %xmm6,%xmm7 2097 1.1.1.2 christos pxor %xmm2,%xmm1 2098 1.1.1.2 christos pxor %xmm5,%xmm2 2099 1.1.1.2 christos pxor %xmm3,%xmm1 2100 1.1.1.2 christos pxor %xmm6,%xmm3 2101 1.1.1.2 christos pxor %xmm4,%xmm1 2102 1.1.1.2 christos pxor %xmm7,%xmm4 2103 1.1.1.2 christos movdqa %xmm1,96(%esp) 2104 1.1.1.2 christos movl 120(%esp),%edi 2105 1.1.1.2 christos call _aesni_encrypt3 2106 1.1.1.2 christos xorps %xmm5,%xmm2 2107 1.1.1.2 christos xorps %xmm6,%xmm3 2108 1.1.1.2 christos xorps %xmm7,%xmm4 2109 1.1.1.2 christos movdqa %xmm7,%xmm0 2110 1.1.1.2 christos movdqa 96(%esp),%xmm1 2111 1.1.1.2 christos movups %xmm2,(%edi,%esi,1) 2112 1.1.1.2 christos movups %xmm3,16(%edi,%esi,1) 2113 1.1.1.2 christos movups %xmm4,32(%edi,%esi,1) 2114 1.1.1.2 christos jmp .L078done 2115 1.1.1.2 christos .align 16 2116 1.1.1.2 christos .L082four: 2117 1.1.1.2 christos leal 1(%ebp),%ecx 2118 1.1.1.2 christos leal 3(%ebp),%eax 2119 1.1.1.2 christos bsfl %ecx,%ecx 2120 1.1.1.2 christos bsfl %eax,%eax 2121 1.1.1.2 christos movl 112(%esp),%edx 2122 1.1.1.2 christos shll $4,%ecx 2123 1.1.1.2 christos shll $4,%eax 2124 1.1.1.2 christos movdqu (%ebx),%xmm4 2125 1.1.1.2 christos movdqu (%ebx,%ecx,1),%xmm5 2126 1.1.1.2 christos movdqa %xmm4,%xmm6 2127 1.1.1.2 christos movdqu (%ebx,%eax,1),%xmm7 2128 1.1.1.2 christos pxor %xmm0,%xmm4 2129 1.1.1.2 christos movdqu (%esi),%xmm2 2130 1.1.1.2 christos pxor %xmm4,%xmm5 2131 1.1.1.2 christos movdqu 16(%esi),%xmm3 2132 1.1.1.2 christos pxor %xmm5,%xmm6 2133 1.1.1.2 christos movdqa %xmm4,(%esp) 2134 1.1.1.2 christos pxor %xmm6,%xmm7 2135 1.1.1.2 christos movdqa %xmm5,16(%esp) 2136 1.1.1.2 christos movdqu 32(%esi),%xmm4 2137 1.1.1.2 christos movdqu 48(%esi),%xmm5 2138 1.1.1.2 christos movl 240(%edx),%ecx 2139 1.1.1.2 christos pxor %xmm2,%xmm1 2140 1.1.1.2 christos pxor (%esp),%xmm2 2141 1.1.1.2 christos pxor %xmm3,%xmm1 2142 1.1.1.2 christos pxor 16(%esp),%xmm3 2143 1.1.1.2 christos pxor %xmm4,%xmm1 2144 1.1.1.2 christos pxor %xmm6,%xmm4 2145 1.1.1.2 christos pxor %xmm5,%xmm1 2146 1.1.1.2 christos pxor %xmm7,%xmm5 2147 1.1.1.2 christos movdqa %xmm1,96(%esp) 2148 1.1.1.2 christos movl 120(%esp),%edi 2149 1.1.1.2 christos call _aesni_encrypt4 2150 1.1.1.2 christos xorps (%esp),%xmm2 2151 1.1.1.2 christos xorps 16(%esp),%xmm3 2152 1.1.1.2 christos xorps %xmm6,%xmm4 2153 1.1.1.2 christos movups %xmm2,(%edi,%esi,1) 2154 1.1.1.2 christos xorps %xmm7,%xmm5 2155 1.1.1.2 christos movups %xmm3,16(%edi,%esi,1) 2156 1.1.1.2 christos movdqa %xmm7,%xmm0 2157 1.1.1.2 christos movups %xmm4,32(%edi,%esi,1) 2158 1.1.1.2 christos movdqa 96(%esp),%xmm1 2159 1.1.1.2 christos movups %xmm5,48(%edi,%esi,1) 2160 1.1.1.2 christos .L078done: 2161 1.1.1.2 christos movl 128(%esp),%edx 2162 1.1.1.2 christos pxor %xmm2,%xmm2 2163 1.1.1.2 christos pxor %xmm3,%xmm3 2164 1.1.1.2 christos movdqa %xmm2,(%esp) 2165 1.1.1.2 christos pxor %xmm4,%xmm4 2166 1.1.1.2 christos movdqa %xmm2,16(%esp) 2167 1.1.1.2 christos pxor %xmm5,%xmm5 2168 1.1.1.2 christos movdqa %xmm2,32(%esp) 2169 1.1.1.2 christos pxor %xmm6,%xmm6 2170 1.1.1.2 christos movdqa %xmm2,48(%esp) 2171 1.1.1.2 christos pxor %xmm7,%xmm7 2172 1.1.1.2 christos movdqa %xmm2,64(%esp) 2173 1.1.1.2 christos movdqa %xmm2,80(%esp) 2174 1.1.1.2 christos movdqa %xmm2,96(%esp) 2175 1.1.1.2 christos leal (%edx),%esp 2176 1.1.1.2 christos movl 40(%esp),%ecx 2177 1.1.1.2 christos movl 48(%esp),%ebx 2178 1.1.1.2 christos movdqu %xmm0,(%ecx) 2179 1.1.1.2 christos pxor %xmm0,%xmm0 2180 1.1.1.2 christos movdqu %xmm1,(%ebx) 2181 1.1.1.2 christos pxor %xmm1,%xmm1 2182 1.1.1.2 christos popl %edi 2183 1.1.1.2 christos popl %esi 2184 1.1.1.2 christos popl %ebx 2185 1.1.1.2 christos popl %ebp 2186 1.1.1.2 christos ret 2187 1.1.1.2 christos .size aesni_ocb_encrypt,.-.L_aesni_ocb_encrypt_begin 2188 1.1.1.2 christos .globl aesni_ocb_decrypt 2189 1.1.1.2 christos .type aesni_ocb_decrypt,@function 2190 1.1.1.2 christos .align 16 2191 1.1.1.2 christos aesni_ocb_decrypt: 2192 1.1.1.2 christos .L_aesni_ocb_decrypt_begin: 2193 1.1.1.2 christos pushl %ebp 2194 1.1.1.2 christos pushl %ebx 2195 1.1.1.2 christos pushl %esi 2196 1.1.1.2 christos pushl %edi 2197 1.1.1.2 christos movl 40(%esp),%ecx 2198 1.1.1.2 christos movl 48(%esp),%ebx 2199 1.1.1.2 christos movl 20(%esp),%esi 2200 1.1.1.2 christos movl 24(%esp),%edi 2201 1.1.1.2 christos movl 28(%esp),%eax 2202 1.1.1.2 christos movl 32(%esp),%edx 2203 1.1.1.2 christos movdqu (%ecx),%xmm0 2204 1.1.1.2 christos movl 36(%esp),%ebp 2205 1.1.1.2 christos movdqu (%ebx),%xmm1 2206 1.1.1.2 christos movl 44(%esp),%ebx 2207 1.1.1.2 christos movl %esp,%ecx 2208 1.1.1.2 christos subl $132,%esp 2209 1.1.1.2 christos andl $-16,%esp 2210 1.1.1.2 christos subl %esi,%edi 2211 1.1.1.2 christos shll $4,%eax 2212 1.1.1.2 christos leal -96(%esi,%eax,1),%eax 2213 1.1.1.2 christos movl %edi,120(%esp) 2214 1.1.1.2 christos movl %eax,124(%esp) 2215 1.1.1.2 christos movl %ecx,128(%esp) 2216 1.1.1.2 christos movl 240(%edx),%ecx 2217 1.1.1.2 christos testl $1,%ebp 2218 1.1.1.2 christos jnz .L084odd 2219 1.1.1.2 christos bsfl %ebp,%eax 2220 1.1.1.2 christos addl $1,%ebp 2221 1.1.1.2 christos shll $4,%eax 2222 1.1.1.2 christos movdqu (%ebx,%eax,1),%xmm7 2223 1.1.1.2 christos movl %edx,%eax 2224 1.1.1.2 christos movdqu (%esi),%xmm2 2225 1.1.1.2 christos leal 16(%esi),%esi 2226 1.1.1.2 christos pxor %xmm0,%xmm7 2227 1.1.1.2 christos pxor %xmm7,%xmm2 2228 1.1.1.2 christos movdqa %xmm1,%xmm6 2229 1.1.1.2 christos movups (%edx),%xmm0 2230 1.1.1.2 christos movups 16(%edx),%xmm1 2231 1.1.1.2 christos leal 32(%edx),%edx 2232 1.1.1.2 christos xorps %xmm0,%xmm2 2233 1.1.1.2 christos .L085dec1_loop_17: 2234 1.1.1.2 christos .byte 102,15,56,222,209 2235 1.1.1.2 christos decl %ecx 2236 1.1.1.2 christos movups (%edx),%xmm1 2237 1.1.1.2 christos leal 16(%edx),%edx 2238 1.1.1.2 christos jnz .L085dec1_loop_17 2239 1.1.1.2 christos .byte 102,15,56,223,209 2240 1.1.1.2 christos xorps %xmm7,%xmm2 2241 1.1.1.2 christos movaps %xmm6,%xmm1 2242 1.1.1.2 christos movdqa %xmm7,%xmm0 2243 1.1.1.2 christos xorps %xmm2,%xmm1 2244 1.1.1.2 christos movups %xmm2,-16(%edi,%esi,1) 2245 1.1.1.2 christos movl 240(%eax),%ecx 2246 1.1.1.2 christos movl %eax,%edx 2247 1.1.1.2 christos movl 124(%esp),%eax 2248 1.1.1.2 christos .L084odd: 2249 1.1.1.2 christos shll $4,%ecx 2250 1.1.1.2 christos movl $16,%edi 2251 1.1.1.2 christos subl %ecx,%edi 2252 1.1.1.2 christos movl %edx,112(%esp) 2253 1.1.1.2 christos leal 32(%edx,%ecx,1),%edx 2254 1.1.1.2 christos movl %edi,116(%esp) 2255 1.1.1.2 christos cmpl %eax,%esi 2256 1.1.1.2 christos ja .L086short 2257 1.1.1.2 christos jmp .L087grandloop 2258 1.1.1.2 christos .align 32 2259 1.1.1.2 christos .L087grandloop: 2260 1.1.1.2 christos leal 1(%ebp),%ecx 2261 1.1.1.2 christos leal 3(%ebp),%eax 2262 1.1.1.2 christos leal 5(%ebp),%edi 2263 1.1.1.2 christos addl $6,%ebp 2264 1.1.1.2 christos bsfl %ecx,%ecx 2265 1.1.1.2 christos bsfl %eax,%eax 2266 1.1.1.2 christos bsfl %edi,%edi 2267 1.1.1.2 christos shll $4,%ecx 2268 1.1.1.2 christos shll $4,%eax 2269 1.1.1.2 christos shll $4,%edi 2270 1.1.1.2 christos movdqu (%ebx),%xmm2 2271 1.1.1.2 christos movdqu (%ebx,%ecx,1),%xmm3 2272 1.1.1.2 christos movl 116(%esp),%ecx 2273 1.1.1.2 christos movdqa %xmm2,%xmm4 2274 1.1.1.2 christos movdqu (%ebx,%eax,1),%xmm5 2275 1.1.1.2 christos movdqa %xmm2,%xmm6 2276 1.1.1.2 christos movdqu (%ebx,%edi,1),%xmm7 2277 1.1.1.2 christos pxor %xmm0,%xmm2 2278 1.1.1.2 christos pxor %xmm2,%xmm3 2279 1.1.1.2 christos movdqa %xmm2,(%esp) 2280 1.1.1.2 christos pxor %xmm3,%xmm4 2281 1.1.1.2 christos movdqa %xmm3,16(%esp) 2282 1.1.1.2 christos pxor %xmm4,%xmm5 2283 1.1.1.2 christos movdqa %xmm4,32(%esp) 2284 1.1.1.2 christos pxor %xmm5,%xmm6 2285 1.1.1.2 christos movdqa %xmm5,48(%esp) 2286 1.1.1.2 christos pxor %xmm6,%xmm7 2287 1.1.1.2 christos movdqa %xmm6,64(%esp) 2288 1.1.1.2 christos movdqa %xmm7,80(%esp) 2289 1.1.1.2 christos movups -48(%edx,%ecx,1),%xmm0 2290 1.1.1.2 christos movdqu (%esi),%xmm2 2291 1.1.1.2 christos movdqu 16(%esi),%xmm3 2292 1.1.1.2 christos movdqu 32(%esi),%xmm4 2293 1.1.1.2 christos movdqu 48(%esi),%xmm5 2294 1.1.1.2 christos movdqu 64(%esi),%xmm6 2295 1.1.1.2 christos movdqu 80(%esi),%xmm7 2296 1.1.1.2 christos leal 96(%esi),%esi 2297 1.1.1.2 christos movdqa %xmm1,96(%esp) 2298 1.1.1.2 christos pxor %xmm0,%xmm2 2299 1.1.1.2 christos pxor %xmm0,%xmm3 2300 1.1.1.2 christos pxor %xmm0,%xmm4 2301 1.1.1.2 christos pxor %xmm0,%xmm5 2302 1.1.1.2 christos pxor %xmm0,%xmm6 2303 1.1.1.2 christos pxor %xmm0,%xmm7 2304 1.1.1.2 christos movups -32(%edx,%ecx,1),%xmm1 2305 1.1.1.2 christos pxor (%esp),%xmm2 2306 1.1.1.2 christos pxor 16(%esp),%xmm3 2307 1.1.1.2 christos pxor 32(%esp),%xmm4 2308 1.1.1.2 christos pxor 48(%esp),%xmm5 2309 1.1.1.2 christos pxor 64(%esp),%xmm6 2310 1.1.1.2 christos pxor 80(%esp),%xmm7 2311 1.1.1.2 christos movups -16(%edx,%ecx,1),%xmm0 2312 1.1.1.2 christos .byte 102,15,56,222,209 2313 1.1.1.2 christos .byte 102,15,56,222,217 2314 1.1.1.2 christos .byte 102,15,56,222,225 2315 1.1.1.2 christos .byte 102,15,56,222,233 2316 1.1.1.2 christos .byte 102,15,56,222,241 2317 1.1.1.2 christos .byte 102,15,56,222,249 2318 1.1.1.2 christos movl 120(%esp),%edi 2319 1.1.1.2 christos movl 124(%esp),%eax 2320 1.1.1.2 christos call .L_aesni_decrypt6_enter 2321 1.1.1.2 christos movdqa 80(%esp),%xmm0 2322 1.1.1.2 christos pxor (%esp),%xmm2 2323 1.1.1.2 christos movdqa 96(%esp),%xmm1 2324 1.1.1.2 christos pxor 16(%esp),%xmm3 2325 1.1.1.2 christos pxor 32(%esp),%xmm4 2326 1.1.1.2 christos pxor 48(%esp),%xmm5 2327 1.1.1.2 christos pxor 64(%esp),%xmm6 2328 1.1.1.2 christos pxor %xmm0,%xmm7 2329 1.1.1.2 christos pxor %xmm2,%xmm1 2330 1.1.1.2 christos movdqu %xmm2,-96(%edi,%esi,1) 2331 1.1.1.2 christos pxor %xmm3,%xmm1 2332 1.1.1.2 christos movdqu %xmm3,-80(%edi,%esi,1) 2333 1.1.1.2 christos pxor %xmm4,%xmm1 2334 1.1.1.2 christos movdqu %xmm4,-64(%edi,%esi,1) 2335 1.1.1.2 christos pxor %xmm5,%xmm1 2336 1.1.1.2 christos movdqu %xmm5,-48(%edi,%esi,1) 2337 1.1.1.2 christos pxor %xmm6,%xmm1 2338 1.1.1.2 christos movdqu %xmm6,-32(%edi,%esi,1) 2339 1.1.1.2 christos pxor %xmm7,%xmm1 2340 1.1.1.2 christos movdqu %xmm7,-16(%edi,%esi,1) 2341 1.1.1.2 christos cmpl %eax,%esi 2342 1.1.1.2 christos jb .L087grandloop 2343 1.1.1.2 christos .L086short: 2344 1.1.1.2 christos addl $96,%eax 2345 1.1.1.2 christos subl %esi,%eax 2346 1.1.1.2 christos jz .L088done 2347 1.1.1.2 christos cmpl $32,%eax 2348 1.1.1.2 christos jb .L089one 2349 1.1.1.2 christos je .L090two 2350 1.1.1.2 christos cmpl $64,%eax 2351 1.1.1.2 christos jb .L091three 2352 1.1.1.2 christos je .L092four 2353 1.1.1.2 christos leal 1(%ebp),%ecx 2354 1.1.1.2 christos leal 3(%ebp),%eax 2355 1.1.1.2 christos bsfl %ecx,%ecx 2356 1.1.1.2 christos bsfl %eax,%eax 2357 1.1.1.2 christos shll $4,%ecx 2358 1.1.1.2 christos shll $4,%eax 2359 1.1.1.2 christos movdqu (%ebx),%xmm2 2360 1.1.1.2 christos movdqu (%ebx,%ecx,1),%xmm3 2361 1.1.1.2 christos movl 116(%esp),%ecx 2362 1.1.1.2 christos movdqa %xmm2,%xmm4 2363 1.1.1.2 christos movdqu (%ebx,%eax,1),%xmm5 2364 1.1.1.2 christos movdqa %xmm2,%xmm6 2365 1.1.1.2 christos pxor %xmm0,%xmm2 2366 1.1.1.2 christos pxor %xmm2,%xmm3 2367 1.1.1.2 christos movdqa %xmm2,(%esp) 2368 1.1.1.2 christos pxor %xmm3,%xmm4 2369 1.1.1.2 christos movdqa %xmm3,16(%esp) 2370 1.1.1.2 christos pxor %xmm4,%xmm5 2371 1.1.1.2 christos movdqa %xmm4,32(%esp) 2372 1.1.1.2 christos pxor %xmm5,%xmm6 2373 1.1.1.2 christos movdqa %xmm5,48(%esp) 2374 1.1.1.2 christos pxor %xmm6,%xmm7 2375 1.1.1.2 christos movdqa %xmm6,64(%esp) 2376 1.1.1.2 christos movups -48(%edx,%ecx,1),%xmm0 2377 1.1.1.2 christos movdqu (%esi),%xmm2 2378 1.1.1.2 christos movdqu 16(%esi),%xmm3 2379 1.1.1.2 christos movdqu 32(%esi),%xmm4 2380 1.1.1.2 christos movdqu 48(%esi),%xmm5 2381 1.1.1.2 christos movdqu 64(%esi),%xmm6 2382 1.1.1.2 christos pxor %xmm7,%xmm7 2383 1.1.1.2 christos movdqa %xmm1,96(%esp) 2384 1.1.1.2 christos pxor %xmm0,%xmm2 2385 1.1.1.2 christos pxor %xmm0,%xmm3 2386 1.1.1.2 christos pxor %xmm0,%xmm4 2387 1.1.1.2 christos pxor %xmm0,%xmm5 2388 1.1.1.2 christos pxor %xmm0,%xmm6 2389 1.1.1.2 christos movups -32(%edx,%ecx,1),%xmm1 2390 1.1.1.2 christos pxor (%esp),%xmm2 2391 1.1.1.2 christos pxor 16(%esp),%xmm3 2392 1.1.1.2 christos pxor 32(%esp),%xmm4 2393 1.1.1.2 christos pxor 48(%esp),%xmm5 2394 1.1.1.2 christos pxor 64(%esp),%xmm6 2395 1.1.1.2 christos movups -16(%edx,%ecx,1),%xmm0 2396 1.1.1.2 christos .byte 102,15,56,222,209 2397 1.1.1.2 christos .byte 102,15,56,222,217 2398 1.1.1.2 christos .byte 102,15,56,222,225 2399 1.1.1.2 christos .byte 102,15,56,222,233 2400 1.1.1.2 christos .byte 102,15,56,222,241 2401 1.1.1.2 christos .byte 102,15,56,222,249 2402 1.1.1.2 christos movl 120(%esp),%edi 2403 1.1.1.2 christos call .L_aesni_decrypt6_enter 2404 1.1.1.2 christos movdqa 64(%esp),%xmm0 2405 1.1.1.2 christos pxor (%esp),%xmm2 2406 1.1.1.2 christos movdqa 96(%esp),%xmm1 2407 1.1.1.2 christos pxor 16(%esp),%xmm3 2408 1.1.1.2 christos pxor 32(%esp),%xmm4 2409 1.1.1.2 christos pxor 48(%esp),%xmm5 2410 1.1.1.2 christos pxor %xmm0,%xmm6 2411 1.1.1.2 christos pxor %xmm2,%xmm1 2412 1.1.1.2 christos movdqu %xmm2,(%edi,%esi,1) 2413 1.1.1.2 christos pxor %xmm3,%xmm1 2414 1.1.1.2 christos movdqu %xmm3,16(%edi,%esi,1) 2415 1.1.1.2 christos pxor %xmm4,%xmm1 2416 1.1.1.2 christos movdqu %xmm4,32(%edi,%esi,1) 2417 1.1.1.2 christos pxor %xmm5,%xmm1 2418 1.1.1.2 christos movdqu %xmm5,48(%edi,%esi,1) 2419 1.1.1.2 christos pxor %xmm6,%xmm1 2420 1.1.1.2 christos movdqu %xmm6,64(%edi,%esi,1) 2421 1.1.1.2 christos jmp .L088done 2422 1.1.1.2 christos .align 16 2423 1.1.1.2 christos .L089one: 2424 1.1.1.2 christos movdqu (%ebx),%xmm7 2425 1.1.1.2 christos movl 112(%esp),%edx 2426 1.1.1.2 christos movdqu (%esi),%xmm2 2427 1.1.1.2 christos movl 240(%edx),%ecx 2428 1.1.1.2 christos pxor %xmm0,%xmm7 2429 1.1.1.2 christos pxor %xmm7,%xmm2 2430 1.1.1.2 christos movdqa %xmm1,%xmm6 2431 1.1.1.2 christos movl 120(%esp),%edi 2432 1.1.1.2 christos movups (%edx),%xmm0 2433 1.1.1.2 christos movups 16(%edx),%xmm1 2434 1.1.1.2 christos leal 32(%edx),%edx 2435 1.1.1.2 christos xorps %xmm0,%xmm2 2436 1.1.1.2 christos .L093dec1_loop_18: 2437 1.1.1.2 christos .byte 102,15,56,222,209 2438 1.1.1.2 christos decl %ecx 2439 1.1.1.2 christos movups (%edx),%xmm1 2440 1.1.1.2 christos leal 16(%edx),%edx 2441 1.1.1.2 christos jnz .L093dec1_loop_18 2442 1.1.1.2 christos .byte 102,15,56,223,209 2443 1.1.1.2 christos xorps %xmm7,%xmm2 2444 1.1.1.2 christos movaps %xmm6,%xmm1 2445 1.1.1.2 christos movdqa %xmm7,%xmm0 2446 1.1.1.2 christos xorps %xmm2,%xmm1 2447 1.1.1.2 christos movups %xmm2,(%edi,%esi,1) 2448 1.1.1.2 christos jmp .L088done 2449 1.1.1.2 christos .align 16 2450 1.1.1.2 christos .L090two: 2451 1.1.1.2 christos leal 1(%ebp),%ecx 2452 1.1.1.2 christos movl 112(%esp),%edx 2453 1.1.1.2 christos bsfl %ecx,%ecx 2454 1.1.1.2 christos shll $4,%ecx 2455 1.1.1.2 christos movdqu (%ebx),%xmm6 2456 1.1.1.2 christos movdqu (%ebx,%ecx,1),%xmm7 2457 1.1.1.2 christos movdqu (%esi),%xmm2 2458 1.1.1.2 christos movdqu 16(%esi),%xmm3 2459 1.1.1.2 christos movl 240(%edx),%ecx 2460 1.1.1.2 christos movdqa %xmm1,%xmm5 2461 1.1.1.2 christos pxor %xmm0,%xmm6 2462 1.1.1.2 christos pxor %xmm6,%xmm7 2463 1.1.1.2 christos pxor %xmm6,%xmm2 2464 1.1.1.2 christos pxor %xmm7,%xmm3 2465 1.1.1.2 christos movl 120(%esp),%edi 2466 1.1.1.2 christos call _aesni_decrypt2 2467 1.1.1.2 christos xorps %xmm6,%xmm2 2468 1.1.1.2 christos xorps %xmm7,%xmm3 2469 1.1.1.2 christos movdqa %xmm7,%xmm0 2470 1.1.1.2 christos xorps %xmm2,%xmm5 2471 1.1.1.2 christos movups %xmm2,(%edi,%esi,1) 2472 1.1.1.2 christos xorps %xmm3,%xmm5 2473 1.1.1.2 christos movups %xmm3,16(%edi,%esi,1) 2474 1.1.1.2 christos movaps %xmm5,%xmm1 2475 1.1.1.2 christos jmp .L088done 2476 1.1.1.2 christos .align 16 2477 1.1.1.2 christos .L091three: 2478 1.1.1.2 christos leal 1(%ebp),%ecx 2479 1.1.1.2 christos movl 112(%esp),%edx 2480 1.1.1.2 christos bsfl %ecx,%ecx 2481 1.1.1.2 christos shll $4,%ecx 2482 1.1.1.2 christos movdqu (%ebx),%xmm5 2483 1.1.1.2 christos movdqu (%ebx,%ecx,1),%xmm6 2484 1.1.1.2 christos movdqa %xmm5,%xmm7 2485 1.1.1.2 christos movdqu (%esi),%xmm2 2486 1.1.1.2 christos movdqu 16(%esi),%xmm3 2487 1.1.1.2 christos movdqu 32(%esi),%xmm4 2488 1.1.1.2 christos movl 240(%edx),%ecx 2489 1.1.1.2 christos movdqa %xmm1,96(%esp) 2490 1.1.1.2 christos pxor %xmm0,%xmm5 2491 1.1.1.2 christos pxor %xmm5,%xmm6 2492 1.1.1.2 christos pxor %xmm6,%xmm7 2493 1.1.1.2 christos pxor %xmm5,%xmm2 2494 1.1.1.2 christos pxor %xmm6,%xmm3 2495 1.1.1.2 christos pxor %xmm7,%xmm4 2496 1.1.1.2 christos movl 120(%esp),%edi 2497 1.1.1.2 christos call _aesni_decrypt3 2498 1.1.1.2 christos movdqa 96(%esp),%xmm1 2499 1.1.1.2 christos xorps %xmm5,%xmm2 2500 1.1.1.2 christos xorps %xmm6,%xmm3 2501 1.1.1.2 christos xorps %xmm7,%xmm4 2502 1.1.1.2 christos movups %xmm2,(%edi,%esi,1) 2503 1.1.1.2 christos pxor %xmm2,%xmm1 2504 1.1.1.2 christos movdqa %xmm7,%xmm0 2505 1.1.1.2 christos movups %xmm3,16(%edi,%esi,1) 2506 1.1.1.2 christos pxor %xmm3,%xmm1 2507 1.1.1.2 christos movups %xmm4,32(%edi,%esi,1) 2508 1.1.1.2 christos pxor %xmm4,%xmm1 2509 1.1.1.2 christos jmp .L088done 2510 1.1.1.2 christos .align 16 2511 1.1.1.2 christos .L092four: 2512 1.1.1.2 christos leal 1(%ebp),%ecx 2513 1.1.1.2 christos leal 3(%ebp),%eax 2514 1.1.1.2 christos bsfl %ecx,%ecx 2515 1.1.1.2 christos bsfl %eax,%eax 2516 1.1.1.2 christos movl 112(%esp),%edx 2517 1.1.1.2 christos shll $4,%ecx 2518 1.1.1.2 christos shll $4,%eax 2519 1.1.1.2 christos movdqu (%ebx),%xmm4 2520 1.1.1.2 christos movdqu (%ebx,%ecx,1),%xmm5 2521 1.1.1.2 christos movdqa %xmm4,%xmm6 2522 1.1.1.2 christos movdqu (%ebx,%eax,1),%xmm7 2523 1.1.1.2 christos pxor %xmm0,%xmm4 2524 1.1.1.2 christos movdqu (%esi),%xmm2 2525 1.1.1.2 christos pxor %xmm4,%xmm5 2526 1.1.1.2 christos movdqu 16(%esi),%xmm3 2527 1.1.1.2 christos pxor %xmm5,%xmm6 2528 1.1.1.2 christos movdqa %xmm4,(%esp) 2529 1.1.1.2 christos pxor %xmm6,%xmm7 2530 1.1.1.2 christos movdqa %xmm5,16(%esp) 2531 1.1.1.2 christos movdqu 32(%esi),%xmm4 2532 1.1.1.2 christos movdqu 48(%esi),%xmm5 2533 1.1.1.2 christos movl 240(%edx),%ecx 2534 1.1.1.2 christos movdqa %xmm1,96(%esp) 2535 1.1.1.2 christos pxor (%esp),%xmm2 2536 1.1.1.2 christos pxor 16(%esp),%xmm3 2537 1.1.1.2 christos pxor %xmm6,%xmm4 2538 1.1.1.2 christos pxor %xmm7,%xmm5 2539 1.1.1.2 christos movl 120(%esp),%edi 2540 1.1.1.2 christos call _aesni_decrypt4 2541 1.1.1.2 christos movdqa 96(%esp),%xmm1 2542 1.1.1.2 christos xorps (%esp),%xmm2 2543 1.1.1.2 christos xorps 16(%esp),%xmm3 2544 1.1.1.2 christos xorps %xmm6,%xmm4 2545 1.1.1.2 christos movups %xmm2,(%edi,%esi,1) 2546 1.1.1.2 christos pxor %xmm2,%xmm1 2547 1.1.1.2 christos xorps %xmm7,%xmm5 2548 1.1.1.2 christos movups %xmm3,16(%edi,%esi,1) 2549 1.1.1.2 christos pxor %xmm3,%xmm1 2550 1.1.1.2 christos movdqa %xmm7,%xmm0 2551 1.1.1.2 christos movups %xmm4,32(%edi,%esi,1) 2552 1.1.1.2 christos pxor %xmm4,%xmm1 2553 1.1.1.2 christos movups %xmm5,48(%edi,%esi,1) 2554 1.1.1.2 christos pxor %xmm5,%xmm1 2555 1.1.1.2 christos .L088done: 2556 1.1.1.2 christos movl 128(%esp),%edx 2557 1.1.1.2 christos pxor %xmm2,%xmm2 2558 1.1.1.2 christos pxor %xmm3,%xmm3 2559 1.1.1.2 christos movdqa %xmm2,(%esp) 2560 1.1.1.2 christos pxor %xmm4,%xmm4 2561 1.1.1.2 christos movdqa %xmm2,16(%esp) 2562 1.1.1.2 christos pxor %xmm5,%xmm5 2563 1.1.1.2 christos movdqa %xmm2,32(%esp) 2564 1.1.1.2 christos pxor %xmm6,%xmm6 2565 1.1.1.2 christos movdqa %xmm2,48(%esp) 2566 1.1.1.2 christos pxor %xmm7,%xmm7 2567 1.1.1.2 christos movdqa %xmm2,64(%esp) 2568 1.1.1.2 christos movdqa %xmm2,80(%esp) 2569 1.1.1.2 christos movdqa %xmm2,96(%esp) 2570 1.1.1.2 christos leal (%edx),%esp 2571 1.1.1.2 christos movl 40(%esp),%ecx 2572 1.1.1.2 christos movl 48(%esp),%ebx 2573 1.1.1.2 christos movdqu %xmm0,(%ecx) 2574 1.1.1.2 christos pxor %xmm0,%xmm0 2575 1.1.1.2 christos movdqu %xmm1,(%ebx) 2576 1.1.1.2 christos pxor %xmm1,%xmm1 2577 1.1.1.2 christos popl %edi 2578 1.1.1.2 christos popl %esi 2579 1.1.1.2 christos popl %ebx 2580 1.1.1.2 christos popl %ebp 2581 1.1.1.2 christos ret 2582 1.1.1.2 christos .size aesni_ocb_decrypt,.-.L_aesni_ocb_decrypt_begin 2583 1.1 christos .globl aesni_cbc_encrypt 2584 1.1 christos .type aesni_cbc_encrypt,@function 2585 1.1 christos .align 16 2586 1.1 christos aesni_cbc_encrypt: 2587 1.1 christos .L_aesni_cbc_encrypt_begin: 2588 1.1 christos pushl %ebp 2589 1.1 christos pushl %ebx 2590 1.1 christos pushl %esi 2591 1.1 christos pushl %edi 2592 1.1 christos movl 20(%esp),%esi 2593 1.1 christos movl %esp,%ebx 2594 1.1 christos movl 24(%esp),%edi 2595 1.1 christos subl $24,%ebx 2596 1.1 christos movl 28(%esp),%eax 2597 1.1 christos andl $-16,%ebx 2598 1.1 christos movl 32(%esp),%edx 2599 1.1 christos movl 36(%esp),%ebp 2600 1.1 christos testl %eax,%eax 2601 1.1.1.2 christos jz .L094cbc_abort 2602 1.1 christos cmpl $0,40(%esp) 2603 1.1 christos xchgl %esp,%ebx 2604 1.1 christos movups (%ebp),%xmm7 2605 1.1 christos movl 240(%edx),%ecx 2606 1.1 christos movl %edx,%ebp 2607 1.1 christos movl %ebx,16(%esp) 2608 1.1 christos movl %ecx,%ebx 2609 1.1.1.2 christos je .L095cbc_decrypt 2610 1.1 christos movaps %xmm7,%xmm2 2611 1.1 christos cmpl $16,%eax 2612 1.1.1.2 christos jb .L096cbc_enc_tail 2613 1.1 christos subl $16,%eax 2614 1.1.1.2 christos jmp .L097cbc_enc_loop 2615 1.1 christos .align 16 2616 1.1.1.2 christos .L097cbc_enc_loop: 2617 1.1 christos movups (%esi),%xmm7 2618 1.1 christos leal 16(%esi),%esi 2619 1.1 christos movups (%edx),%xmm0 2620 1.1 christos movups 16(%edx),%xmm1 2621 1.1 christos xorps %xmm0,%xmm7 2622 1.1 christos leal 32(%edx),%edx 2623 1.1 christos xorps %xmm7,%xmm2 2624 1.1.1.2 christos .L098enc1_loop_19: 2625 1.1 christos .byte 102,15,56,220,209 2626 1.1 christos decl %ecx 2627 1.1 christos movups (%edx),%xmm1 2628 1.1 christos leal 16(%edx),%edx 2629 1.1.1.2 christos jnz .L098enc1_loop_19 2630 1.1 christos .byte 102,15,56,221,209 2631 1.1 christos movl %ebx,%ecx 2632 1.1 christos movl %ebp,%edx 2633 1.1 christos movups %xmm2,(%edi) 2634 1.1 christos leal 16(%edi),%edi 2635 1.1 christos subl $16,%eax 2636 1.1.1.2 christos jnc .L097cbc_enc_loop 2637 1.1 christos addl $16,%eax 2638 1.1.1.2 christos jnz .L096cbc_enc_tail 2639 1.1 christos movaps %xmm2,%xmm7 2640 1.1 christos pxor %xmm2,%xmm2 2641 1.1.1.2 christos jmp .L099cbc_ret 2642 1.1.1.2 christos .L096cbc_enc_tail: 2643 1.1 christos movl %eax,%ecx 2644 1.1 christos .long 2767451785 2645 1.1 christos movl $16,%ecx 2646 1.1 christos subl %eax,%ecx 2647 1.1 christos xorl %eax,%eax 2648 1.1 christos .long 2868115081 2649 1.1 christos leal -16(%edi),%edi 2650 1.1 christos movl %ebx,%ecx 2651 1.1 christos movl %edi,%esi 2652 1.1 christos movl %ebp,%edx 2653 1.1.1.2 christos jmp .L097cbc_enc_loop 2654 1.1 christos .align 16 2655 1.1.1.2 christos .L095cbc_decrypt: 2656 1.1 christos cmpl $80,%eax 2657 1.1.1.2 christos jbe .L100cbc_dec_tail 2658 1.1 christos movaps %xmm7,(%esp) 2659 1.1 christos subl $80,%eax 2660 1.1.1.2 christos jmp .L101cbc_dec_loop6_enter 2661 1.1 christos .align 16 2662 1.1.1.2 christos .L102cbc_dec_loop6: 2663 1.1 christos movaps %xmm0,(%esp) 2664 1.1 christos movups %xmm7,(%edi) 2665 1.1 christos leal 16(%edi),%edi 2666 1.1.1.2 christos .L101cbc_dec_loop6_enter: 2667 1.1 christos movdqu (%esi),%xmm2 2668 1.1 christos movdqu 16(%esi),%xmm3 2669 1.1 christos movdqu 32(%esi),%xmm4 2670 1.1 christos movdqu 48(%esi),%xmm5 2671 1.1 christos movdqu 64(%esi),%xmm6 2672 1.1 christos movdqu 80(%esi),%xmm7 2673 1.1 christos call _aesni_decrypt6 2674 1.1 christos movups (%esi),%xmm1 2675 1.1 christos movups 16(%esi),%xmm0 2676 1.1 christos xorps (%esp),%xmm2 2677 1.1 christos xorps %xmm1,%xmm3 2678 1.1 christos movups 32(%esi),%xmm1 2679 1.1 christos xorps %xmm0,%xmm4 2680 1.1 christos movups 48(%esi),%xmm0 2681 1.1 christos xorps %xmm1,%xmm5 2682 1.1 christos movups 64(%esi),%xmm1 2683 1.1 christos xorps %xmm0,%xmm6 2684 1.1 christos movups 80(%esi),%xmm0 2685 1.1 christos xorps %xmm1,%xmm7 2686 1.1 christos movups %xmm2,(%edi) 2687 1.1 christos movups %xmm3,16(%edi) 2688 1.1 christos leal 96(%esi),%esi 2689 1.1 christos movups %xmm4,32(%edi) 2690 1.1 christos movl %ebx,%ecx 2691 1.1 christos movups %xmm5,48(%edi) 2692 1.1 christos movl %ebp,%edx 2693 1.1 christos movups %xmm6,64(%edi) 2694 1.1 christos leal 80(%edi),%edi 2695 1.1 christos subl $96,%eax 2696 1.1.1.2 christos ja .L102cbc_dec_loop6 2697 1.1 christos movaps %xmm7,%xmm2 2698 1.1 christos movaps %xmm0,%xmm7 2699 1.1 christos addl $80,%eax 2700 1.1.1.2 christos jle .L103cbc_dec_clear_tail_collected 2701 1.1 christos movups %xmm2,(%edi) 2702 1.1 christos leal 16(%edi),%edi 2703 1.1.1.2 christos .L100cbc_dec_tail: 2704 1.1 christos movups (%esi),%xmm2 2705 1.1 christos movaps %xmm2,%xmm6 2706 1.1 christos cmpl $16,%eax 2707 1.1.1.2 christos jbe .L104cbc_dec_one 2708 1.1 christos movups 16(%esi),%xmm3 2709 1.1 christos movaps %xmm3,%xmm5 2710 1.1 christos cmpl $32,%eax 2711 1.1.1.2 christos jbe .L105cbc_dec_two 2712 1.1 christos movups 32(%esi),%xmm4 2713 1.1 christos cmpl $48,%eax 2714 1.1.1.2 christos jbe .L106cbc_dec_three 2715 1.1 christos movups 48(%esi),%xmm5 2716 1.1 christos cmpl $64,%eax 2717 1.1.1.2 christos jbe .L107cbc_dec_four 2718 1.1 christos movups 64(%esi),%xmm6 2719 1.1 christos movaps %xmm7,(%esp) 2720 1.1 christos movups (%esi),%xmm2 2721 1.1 christos xorps %xmm7,%xmm7 2722 1.1 christos call _aesni_decrypt6 2723 1.1 christos movups (%esi),%xmm1 2724 1.1 christos movups 16(%esi),%xmm0 2725 1.1 christos xorps (%esp),%xmm2 2726 1.1 christos xorps %xmm1,%xmm3 2727 1.1 christos movups 32(%esi),%xmm1 2728 1.1 christos xorps %xmm0,%xmm4 2729 1.1 christos movups 48(%esi),%xmm0 2730 1.1 christos xorps %xmm1,%xmm5 2731 1.1 christos movups 64(%esi),%xmm7 2732 1.1 christos xorps %xmm0,%xmm6 2733 1.1 christos movups %xmm2,(%edi) 2734 1.1 christos movups %xmm3,16(%edi) 2735 1.1 christos pxor %xmm3,%xmm3 2736 1.1 christos movups %xmm4,32(%edi) 2737 1.1 christos pxor %xmm4,%xmm4 2738 1.1 christos movups %xmm5,48(%edi) 2739 1.1 christos pxor %xmm5,%xmm5 2740 1.1 christos leal 64(%edi),%edi 2741 1.1 christos movaps %xmm6,%xmm2 2742 1.1 christos pxor %xmm6,%xmm6 2743 1.1 christos subl $80,%eax 2744 1.1.1.2 christos jmp .L108cbc_dec_tail_collected 2745 1.1 christos .align 16 2746 1.1.1.2 christos .L104cbc_dec_one: 2747 1.1 christos movups (%edx),%xmm0 2748 1.1 christos movups 16(%edx),%xmm1 2749 1.1 christos leal 32(%edx),%edx 2750 1.1 christos xorps %xmm0,%xmm2 2751 1.1.1.2 christos .L109dec1_loop_20: 2752 1.1 christos .byte 102,15,56,222,209 2753 1.1 christos decl %ecx 2754 1.1 christos movups (%edx),%xmm1 2755 1.1 christos leal 16(%edx),%edx 2756 1.1.1.2 christos jnz .L109dec1_loop_20 2757 1.1 christos .byte 102,15,56,223,209 2758 1.1 christos xorps %xmm7,%xmm2 2759 1.1 christos movaps %xmm6,%xmm7 2760 1.1 christos subl $16,%eax 2761 1.1.1.2 christos jmp .L108cbc_dec_tail_collected 2762 1.1 christos .align 16 2763 1.1.1.2 christos .L105cbc_dec_two: 2764 1.1 christos call _aesni_decrypt2 2765 1.1 christos xorps %xmm7,%xmm2 2766 1.1 christos xorps %xmm6,%xmm3 2767 1.1 christos movups %xmm2,(%edi) 2768 1.1 christos movaps %xmm3,%xmm2 2769 1.1 christos pxor %xmm3,%xmm3 2770 1.1 christos leal 16(%edi),%edi 2771 1.1 christos movaps %xmm5,%xmm7 2772 1.1 christos subl $32,%eax 2773 1.1.1.2 christos jmp .L108cbc_dec_tail_collected 2774 1.1 christos .align 16 2775 1.1.1.2 christos .L106cbc_dec_three: 2776 1.1 christos call _aesni_decrypt3 2777 1.1 christos xorps %xmm7,%xmm2 2778 1.1 christos xorps %xmm6,%xmm3 2779 1.1 christos xorps %xmm5,%xmm4 2780 1.1 christos movups %xmm2,(%edi) 2781 1.1 christos movaps %xmm4,%xmm2 2782 1.1 christos pxor %xmm4,%xmm4 2783 1.1 christos movups %xmm3,16(%edi) 2784 1.1 christos pxor %xmm3,%xmm3 2785 1.1 christos leal 32(%edi),%edi 2786 1.1 christos movups 32(%esi),%xmm7 2787 1.1 christos subl $48,%eax 2788 1.1.1.2 christos jmp .L108cbc_dec_tail_collected 2789 1.1 christos .align 16 2790 1.1.1.2 christos .L107cbc_dec_four: 2791 1.1 christos call _aesni_decrypt4 2792 1.1 christos movups 16(%esi),%xmm1 2793 1.1 christos movups 32(%esi),%xmm0 2794 1.1 christos xorps %xmm7,%xmm2 2795 1.1 christos movups 48(%esi),%xmm7 2796 1.1 christos xorps %xmm6,%xmm3 2797 1.1 christos movups %xmm2,(%edi) 2798 1.1 christos xorps %xmm1,%xmm4 2799 1.1 christos movups %xmm3,16(%edi) 2800 1.1 christos pxor %xmm3,%xmm3 2801 1.1 christos xorps %xmm0,%xmm5 2802 1.1 christos movups %xmm4,32(%edi) 2803 1.1 christos pxor %xmm4,%xmm4 2804 1.1 christos leal 48(%edi),%edi 2805 1.1 christos movaps %xmm5,%xmm2 2806 1.1 christos pxor %xmm5,%xmm5 2807 1.1 christos subl $64,%eax 2808 1.1.1.2 christos jmp .L108cbc_dec_tail_collected 2809 1.1 christos .align 16 2810 1.1.1.2 christos .L103cbc_dec_clear_tail_collected: 2811 1.1 christos pxor %xmm3,%xmm3 2812 1.1 christos pxor %xmm4,%xmm4 2813 1.1 christos pxor %xmm5,%xmm5 2814 1.1 christos pxor %xmm6,%xmm6 2815 1.1.1.2 christos .L108cbc_dec_tail_collected: 2816 1.1 christos andl $15,%eax 2817 1.1.1.2 christos jnz .L110cbc_dec_tail_partial 2818 1.1 christos movups %xmm2,(%edi) 2819 1.1 christos pxor %xmm0,%xmm0 2820 1.1.1.2 christos jmp .L099cbc_ret 2821 1.1 christos .align 16 2822 1.1.1.2 christos .L110cbc_dec_tail_partial: 2823 1.1 christos movaps %xmm2,(%esp) 2824 1.1 christos pxor %xmm0,%xmm0 2825 1.1 christos movl $16,%ecx 2826 1.1 christos movl %esp,%esi 2827 1.1 christos subl %eax,%ecx 2828 1.1 christos .long 2767451785 2829 1.1 christos movdqa %xmm2,(%esp) 2830 1.1.1.2 christos .L099cbc_ret: 2831 1.1 christos movl 16(%esp),%esp 2832 1.1 christos movl 36(%esp),%ebp 2833 1.1 christos pxor %xmm2,%xmm2 2834 1.1 christos pxor %xmm1,%xmm1 2835 1.1 christos movups %xmm7,(%ebp) 2836 1.1 christos pxor %xmm7,%xmm7 2837 1.1.1.2 christos .L094cbc_abort: 2838 1.1 christos popl %edi 2839 1.1 christos popl %esi 2840 1.1 christos popl %ebx 2841 1.1 christos popl %ebp 2842 1.1 christos ret 2843 1.1 christos .size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin 2844 1.1 christos .type _aesni_set_encrypt_key,@function 2845 1.1 christos .align 16 2846 1.1 christos _aesni_set_encrypt_key: 2847 1.1 christos pushl %ebp 2848 1.1 christos pushl %ebx 2849 1.1 christos testl %eax,%eax 2850 1.1.1.2 christos jz .L111bad_pointer 2851 1.1 christos testl %edx,%edx 2852 1.1.1.2 christos jz .L111bad_pointer 2853 1.1.1.2 christos call .L112pic 2854 1.1.1.2 christos .L112pic: 2855 1.1 christos popl %ebx 2856 1.1.1.2 christos leal .Lkey_const-.L112pic(%ebx),%ebx 2857 1.1 christos leal OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp 2858 1.1 christos movups (%eax),%xmm0 2859 1.1 christos xorps %xmm4,%xmm4 2860 1.1 christos movl 4(%ebp),%ebp 2861 1.1 christos leal 16(%edx),%edx 2862 1.1 christos andl $268437504,%ebp 2863 1.1 christos cmpl $256,%ecx 2864 1.1.1.2 christos je .L11314rounds 2865 1.1 christos cmpl $192,%ecx 2866 1.1.1.2 christos je .L11412rounds 2867 1.1 christos cmpl $128,%ecx 2868 1.1.1.2 christos jne .L115bad_keybits 2869 1.1 christos .align 16 2870 1.1.1.2 christos .L11610rounds: 2871 1.1 christos cmpl $268435456,%ebp 2872 1.1.1.2 christos je .L11710rounds_alt 2873 1.1 christos movl $9,%ecx 2874 1.1 christos movups %xmm0,-16(%edx) 2875 1.1 christos .byte 102,15,58,223,200,1 2876 1.1.1.2 christos call .L118key_128_cold 2877 1.1 christos .byte 102,15,58,223,200,2 2878 1.1.1.2 christos call .L119key_128 2879 1.1 christos .byte 102,15,58,223,200,4 2880 1.1.1.2 christos call .L119key_128 2881 1.1 christos .byte 102,15,58,223,200,8 2882 1.1.1.2 christos call .L119key_128 2883 1.1 christos .byte 102,15,58,223,200,16 2884 1.1.1.2 christos call .L119key_128 2885 1.1 christos .byte 102,15,58,223,200,32 2886 1.1.1.2 christos call .L119key_128 2887 1.1 christos .byte 102,15,58,223,200,64 2888 1.1.1.2 christos call .L119key_128 2889 1.1 christos .byte 102,15,58,223,200,128 2890 1.1.1.2 christos call .L119key_128 2891 1.1 christos .byte 102,15,58,223,200,27 2892 1.1.1.2 christos call .L119key_128 2893 1.1 christos .byte 102,15,58,223,200,54 2894 1.1.1.2 christos call .L119key_128 2895 1.1 christos movups %xmm0,(%edx) 2896 1.1 christos movl %ecx,80(%edx) 2897 1.1.1.2 christos jmp .L120good_key 2898 1.1 christos .align 16 2899 1.1.1.2 christos .L119key_128: 2900 1.1 christos movups %xmm0,(%edx) 2901 1.1 christos leal 16(%edx),%edx 2902 1.1.1.2 christos .L118key_128_cold: 2903 1.1 christos shufps $16,%xmm0,%xmm4 2904 1.1 christos xorps %xmm4,%xmm0 2905 1.1 christos shufps $140,%xmm0,%xmm4 2906 1.1 christos xorps %xmm4,%xmm0 2907 1.1 christos shufps $255,%xmm1,%xmm1 2908 1.1 christos xorps %xmm1,%xmm0 2909 1.1 christos ret 2910 1.1 christos .align 16 2911 1.1.1.2 christos .L11710rounds_alt: 2912 1.1 christos movdqa (%ebx),%xmm5 2913 1.1 christos movl $8,%ecx 2914 1.1 christos movdqa 32(%ebx),%xmm4 2915 1.1 christos movdqa %xmm0,%xmm2 2916 1.1 christos movdqu %xmm0,-16(%edx) 2917 1.1.1.2 christos .L121loop_key128: 2918 1.1 christos .byte 102,15,56,0,197 2919 1.1 christos .byte 102,15,56,221,196 2920 1.1 christos pslld $1,%xmm4 2921 1.1 christos leal 16(%edx),%edx 2922 1.1 christos movdqa %xmm2,%xmm3 2923 1.1 christos pslldq $4,%xmm2 2924 1.1 christos pxor %xmm2,%xmm3 2925 1.1 christos pslldq $4,%xmm2 2926 1.1 christos pxor %xmm2,%xmm3 2927 1.1 christos pslldq $4,%xmm2 2928 1.1 christos pxor %xmm3,%xmm2 2929 1.1 christos pxor %xmm2,%xmm0 2930 1.1 christos movdqu %xmm0,-16(%edx) 2931 1.1 christos movdqa %xmm0,%xmm2 2932 1.1 christos decl %ecx 2933 1.1.1.2 christos jnz .L121loop_key128 2934 1.1 christos movdqa 48(%ebx),%xmm4 2935 1.1 christos .byte 102,15,56,0,197 2936 1.1 christos .byte 102,15,56,221,196 2937 1.1 christos pslld $1,%xmm4 2938 1.1 christos movdqa %xmm2,%xmm3 2939 1.1 christos pslldq $4,%xmm2 2940 1.1 christos pxor %xmm2,%xmm3 2941 1.1 christos pslldq $4,%xmm2 2942 1.1 christos pxor %xmm2,%xmm3 2943 1.1 christos pslldq $4,%xmm2 2944 1.1 christos pxor %xmm3,%xmm2 2945 1.1 christos pxor %xmm2,%xmm0 2946 1.1 christos movdqu %xmm0,(%edx) 2947 1.1 christos movdqa %xmm0,%xmm2 2948 1.1 christos .byte 102,15,56,0,197 2949 1.1 christos .byte 102,15,56,221,196 2950 1.1 christos movdqa %xmm2,%xmm3 2951 1.1 christos pslldq $4,%xmm2 2952 1.1 christos pxor %xmm2,%xmm3 2953 1.1 christos pslldq $4,%xmm2 2954 1.1 christos pxor %xmm2,%xmm3 2955 1.1 christos pslldq $4,%xmm2 2956 1.1 christos pxor %xmm3,%xmm2 2957 1.1 christos pxor %xmm2,%xmm0 2958 1.1 christos movdqu %xmm0,16(%edx) 2959 1.1 christos movl $9,%ecx 2960 1.1 christos movl %ecx,96(%edx) 2961 1.1.1.2 christos jmp .L120good_key 2962 1.1 christos .align 16 2963 1.1.1.2 christos .L11412rounds: 2964 1.1 christos movq 16(%eax),%xmm2 2965 1.1 christos cmpl $268435456,%ebp 2966 1.1.1.2 christos je .L12212rounds_alt 2967 1.1 christos movl $11,%ecx 2968 1.1 christos movups %xmm0,-16(%edx) 2969 1.1 christos .byte 102,15,58,223,202,1 2970 1.1.1.2 christos call .L123key_192a_cold 2971 1.1 christos .byte 102,15,58,223,202,2 2972 1.1.1.2 christos call .L124key_192b 2973 1.1 christos .byte 102,15,58,223,202,4 2974 1.1.1.2 christos call .L125key_192a 2975 1.1 christos .byte 102,15,58,223,202,8 2976 1.1.1.2 christos call .L124key_192b 2977 1.1 christos .byte 102,15,58,223,202,16 2978 1.1.1.2 christos call .L125key_192a 2979 1.1 christos .byte 102,15,58,223,202,32 2980 1.1.1.2 christos call .L124key_192b 2981 1.1 christos .byte 102,15,58,223,202,64 2982 1.1.1.2 christos call .L125key_192a 2983 1.1 christos .byte 102,15,58,223,202,128 2984 1.1.1.2 christos call .L124key_192b 2985 1.1 christos movups %xmm0,(%edx) 2986 1.1 christos movl %ecx,48(%edx) 2987 1.1.1.2 christos jmp .L120good_key 2988 1.1 christos .align 16 2989 1.1.1.2 christos .L125key_192a: 2990 1.1 christos movups %xmm0,(%edx) 2991 1.1 christos leal 16(%edx),%edx 2992 1.1 christos .align 16 2993 1.1.1.2 christos .L123key_192a_cold: 2994 1.1 christos movaps %xmm2,%xmm5 2995 1.1.1.2 christos .L126key_192b_warm: 2996 1.1 christos shufps $16,%xmm0,%xmm4 2997 1.1 christos movdqa %xmm2,%xmm3 2998 1.1 christos xorps %xmm4,%xmm0 2999 1.1 christos shufps $140,%xmm0,%xmm4 3000 1.1 christos pslldq $4,%xmm3 3001 1.1 christos xorps %xmm4,%xmm0 3002 1.1 christos pshufd $85,%xmm1,%xmm1 3003 1.1 christos pxor %xmm3,%xmm2 3004 1.1 christos pxor %xmm1,%xmm0 3005 1.1 christos pshufd $255,%xmm0,%xmm3 3006 1.1 christos pxor %xmm3,%xmm2 3007 1.1 christos ret 3008 1.1 christos .align 16 3009 1.1.1.2 christos .L124key_192b: 3010 1.1 christos movaps %xmm0,%xmm3 3011 1.1 christos shufps $68,%xmm0,%xmm5 3012 1.1 christos movups %xmm5,(%edx) 3013 1.1 christos shufps $78,%xmm2,%xmm3 3014 1.1 christos movups %xmm3,16(%edx) 3015 1.1 christos leal 32(%edx),%edx 3016 1.1.1.2 christos jmp .L126key_192b_warm 3017 1.1 christos .align 16 3018 1.1.1.2 christos .L12212rounds_alt: 3019 1.1 christos movdqa 16(%ebx),%xmm5 3020 1.1 christos movdqa 32(%ebx),%xmm4 3021 1.1 christos movl $8,%ecx 3022 1.1 christos movdqu %xmm0,-16(%edx) 3023 1.1.1.2 christos .L127loop_key192: 3024 1.1 christos movq %xmm2,(%edx) 3025 1.1 christos movdqa %xmm2,%xmm1 3026 1.1 christos .byte 102,15,56,0,213 3027 1.1 christos .byte 102,15,56,221,212 3028 1.1 christos pslld $1,%xmm4 3029 1.1 christos leal 24(%edx),%edx 3030 1.1 christos movdqa %xmm0,%xmm3 3031 1.1 christos pslldq $4,%xmm0 3032 1.1 christos pxor %xmm0,%xmm3 3033 1.1 christos pslldq $4,%xmm0 3034 1.1 christos pxor %xmm0,%xmm3 3035 1.1 christos pslldq $4,%xmm0 3036 1.1 christos pxor %xmm3,%xmm0 3037 1.1 christos pshufd $255,%xmm0,%xmm3 3038 1.1 christos pxor %xmm1,%xmm3 3039 1.1 christos pslldq $4,%xmm1 3040 1.1 christos pxor %xmm1,%xmm3 3041 1.1 christos pxor %xmm2,%xmm0 3042 1.1 christos pxor %xmm3,%xmm2 3043 1.1 christos movdqu %xmm0,-16(%edx) 3044 1.1 christos decl %ecx 3045 1.1.1.2 christos jnz .L127loop_key192 3046 1.1 christos movl $11,%ecx 3047 1.1 christos movl %ecx,32(%edx) 3048 1.1.1.2 christos jmp .L120good_key 3049 1.1 christos .align 16 3050 1.1.1.2 christos .L11314rounds: 3051 1.1 christos movups 16(%eax),%xmm2 3052 1.1 christos leal 16(%edx),%edx 3053 1.1 christos cmpl $268435456,%ebp 3054 1.1.1.2 christos je .L12814rounds_alt 3055 1.1 christos movl $13,%ecx 3056 1.1 christos movups %xmm0,-32(%edx) 3057 1.1 christos movups %xmm2,-16(%edx) 3058 1.1 christos .byte 102,15,58,223,202,1 3059 1.1.1.2 christos call .L129key_256a_cold 3060 1.1 christos .byte 102,15,58,223,200,1 3061 1.1.1.2 christos call .L130key_256b 3062 1.1 christos .byte 102,15,58,223,202,2 3063 1.1.1.2 christos call .L131key_256a 3064 1.1 christos .byte 102,15,58,223,200,2 3065 1.1.1.2 christos call .L130key_256b 3066 1.1 christos .byte 102,15,58,223,202,4 3067 1.1.1.2 christos call .L131key_256a 3068 1.1 christos .byte 102,15,58,223,200,4 3069 1.1.1.2 christos call .L130key_256b 3070 1.1 christos .byte 102,15,58,223,202,8 3071 1.1.1.2 christos call .L131key_256a 3072 1.1 christos .byte 102,15,58,223,200,8 3073 1.1.1.2 christos call .L130key_256b 3074 1.1 christos .byte 102,15,58,223,202,16 3075 1.1.1.2 christos call .L131key_256a 3076 1.1 christos .byte 102,15,58,223,200,16 3077 1.1.1.2 christos call .L130key_256b 3078 1.1 christos .byte 102,15,58,223,202,32 3079 1.1.1.2 christos call .L131key_256a 3080 1.1 christos .byte 102,15,58,223,200,32 3081 1.1.1.2 christos call .L130key_256b 3082 1.1 christos .byte 102,15,58,223,202,64 3083 1.1.1.2 christos call .L131key_256a 3084 1.1 christos movups %xmm0,(%edx) 3085 1.1 christos movl %ecx,16(%edx) 3086 1.1 christos xorl %eax,%eax 3087 1.1.1.2 christos jmp .L120good_key 3088 1.1 christos .align 16 3089 1.1.1.2 christos .L131key_256a: 3090 1.1 christos movups %xmm2,(%edx) 3091 1.1 christos leal 16(%edx),%edx 3092 1.1.1.2 christos .L129key_256a_cold: 3093 1.1 christos shufps $16,%xmm0,%xmm4 3094 1.1 christos xorps %xmm4,%xmm0 3095 1.1 christos shufps $140,%xmm0,%xmm4 3096 1.1 christos xorps %xmm4,%xmm0 3097 1.1 christos shufps $255,%xmm1,%xmm1 3098 1.1 christos xorps %xmm1,%xmm0 3099 1.1 christos ret 3100 1.1 christos .align 16 3101 1.1.1.2 christos .L130key_256b: 3102 1.1 christos movups %xmm0,(%edx) 3103 1.1 christos leal 16(%edx),%edx 3104 1.1 christos shufps $16,%xmm2,%xmm4 3105 1.1 christos xorps %xmm4,%xmm2 3106 1.1 christos shufps $140,%xmm2,%xmm4 3107 1.1 christos xorps %xmm4,%xmm2 3108 1.1 christos shufps $170,%xmm1,%xmm1 3109 1.1 christos xorps %xmm1,%xmm2 3110 1.1 christos ret 3111 1.1 christos .align 16 3112 1.1.1.2 christos .L12814rounds_alt: 3113 1.1 christos movdqa (%ebx),%xmm5 3114 1.1 christos movdqa 32(%ebx),%xmm4 3115 1.1 christos movl $7,%ecx 3116 1.1 christos movdqu %xmm0,-32(%edx) 3117 1.1 christos movdqa %xmm2,%xmm1 3118 1.1 christos movdqu %xmm2,-16(%edx) 3119 1.1.1.2 christos .L132loop_key256: 3120 1.1 christos .byte 102,15,56,0,213 3121 1.1 christos .byte 102,15,56,221,212 3122 1.1 christos movdqa %xmm0,%xmm3 3123 1.1 christos pslldq $4,%xmm0 3124 1.1 christos pxor %xmm0,%xmm3 3125 1.1 christos pslldq $4,%xmm0 3126 1.1 christos pxor %xmm0,%xmm3 3127 1.1 christos pslldq $4,%xmm0 3128 1.1 christos pxor %xmm3,%xmm0 3129 1.1 christos pslld $1,%xmm4 3130 1.1 christos pxor %xmm2,%xmm0 3131 1.1 christos movdqu %xmm0,(%edx) 3132 1.1 christos decl %ecx 3133 1.1.1.2 christos jz .L133done_key256 3134 1.1 christos pshufd $255,%xmm0,%xmm2 3135 1.1 christos pxor %xmm3,%xmm3 3136 1.1 christos .byte 102,15,56,221,211 3137 1.1 christos movdqa %xmm1,%xmm3 3138 1.1 christos pslldq $4,%xmm1 3139 1.1 christos pxor %xmm1,%xmm3 3140 1.1 christos pslldq $4,%xmm1 3141 1.1 christos pxor %xmm1,%xmm3 3142 1.1 christos pslldq $4,%xmm1 3143 1.1 christos pxor %xmm3,%xmm1 3144 1.1 christos pxor %xmm1,%xmm2 3145 1.1 christos movdqu %xmm2,16(%edx) 3146 1.1 christos leal 32(%edx),%edx 3147 1.1 christos movdqa %xmm2,%xmm1 3148 1.1.1.2 christos jmp .L132loop_key256 3149 1.1.1.2 christos .L133done_key256: 3150 1.1 christos movl $13,%ecx 3151 1.1 christos movl %ecx,16(%edx) 3152 1.1.1.2 christos .L120good_key: 3153 1.1 christos pxor %xmm0,%xmm0 3154 1.1 christos pxor %xmm1,%xmm1 3155 1.1 christos pxor %xmm2,%xmm2 3156 1.1 christos pxor %xmm3,%xmm3 3157 1.1 christos pxor %xmm4,%xmm4 3158 1.1 christos pxor %xmm5,%xmm5 3159 1.1 christos xorl %eax,%eax 3160 1.1 christos popl %ebx 3161 1.1 christos popl %ebp 3162 1.1 christos ret 3163 1.1 christos .align 4 3164 1.1.1.2 christos .L111bad_pointer: 3165 1.1 christos movl $-1,%eax 3166 1.1 christos popl %ebx 3167 1.1 christos popl %ebp 3168 1.1 christos ret 3169 1.1 christos .align 4 3170 1.1.1.2 christos .L115bad_keybits: 3171 1.1 christos pxor %xmm0,%xmm0 3172 1.1 christos movl $-2,%eax 3173 1.1 christos popl %ebx 3174 1.1 christos popl %ebp 3175 1.1 christos ret 3176 1.1 christos .size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key 3177 1.1 christos .globl aesni_set_encrypt_key 3178 1.1 christos .type aesni_set_encrypt_key,@function 3179 1.1 christos .align 16 3180 1.1 christos aesni_set_encrypt_key: 3181 1.1 christos .L_aesni_set_encrypt_key_begin: 3182 1.1 christos movl 4(%esp),%eax 3183 1.1 christos movl 8(%esp),%ecx 3184 1.1 christos movl 12(%esp),%edx 3185 1.1 christos call _aesni_set_encrypt_key 3186 1.1 christos ret 3187 1.1 christos .size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin 3188 1.1 christos .globl aesni_set_decrypt_key 3189 1.1 christos .type aesni_set_decrypt_key,@function 3190 1.1 christos .align 16 3191 1.1 christos aesni_set_decrypt_key: 3192 1.1 christos .L_aesni_set_decrypt_key_begin: 3193 1.1 christos movl 4(%esp),%eax 3194 1.1 christos movl 8(%esp),%ecx 3195 1.1 christos movl 12(%esp),%edx 3196 1.1 christos call _aesni_set_encrypt_key 3197 1.1 christos movl 12(%esp),%edx 3198 1.1 christos shll $4,%ecx 3199 1.1 christos testl %eax,%eax 3200 1.1.1.2 christos jnz .L134dec_key_ret 3201 1.1 christos leal 16(%edx,%ecx,1),%eax 3202 1.1 christos movups (%edx),%xmm0 3203 1.1 christos movups (%eax),%xmm1 3204 1.1 christos movups %xmm0,(%eax) 3205 1.1 christos movups %xmm1,(%edx) 3206 1.1 christos leal 16(%edx),%edx 3207 1.1 christos leal -16(%eax),%eax 3208 1.1.1.2 christos .L135dec_key_inverse: 3209 1.1 christos movups (%edx),%xmm0 3210 1.1 christos movups (%eax),%xmm1 3211 1.1 christos .byte 102,15,56,219,192 3212 1.1 christos .byte 102,15,56,219,201 3213 1.1 christos leal 16(%edx),%edx 3214 1.1 christos leal -16(%eax),%eax 3215 1.1 christos movups %xmm0,16(%eax) 3216 1.1 christos movups %xmm1,-16(%edx) 3217 1.1 christos cmpl %edx,%eax 3218 1.1.1.2 christos ja .L135dec_key_inverse 3219 1.1 christos movups (%edx),%xmm0 3220 1.1 christos .byte 102,15,56,219,192 3221 1.1 christos movups %xmm0,(%edx) 3222 1.1 christos pxor %xmm0,%xmm0 3223 1.1 christos pxor %xmm1,%xmm1 3224 1.1 christos xorl %eax,%eax 3225 1.1.1.2 christos .L134dec_key_ret: 3226 1.1 christos ret 3227 1.1 christos .size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin 3228 1.1 christos .align 64 3229 1.1 christos .Lkey_const: 3230 1.1 christos .long 202313229,202313229,202313229,202313229 3231 1.1 christos .long 67569157,67569157,67569157,67569157 3232 1.1 christos .long 1,1,1,1 3233 1.1 christos .long 27,27,27,27 3234 1.1 christos .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 3235 1.1 christos .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 3236 1.1 christos .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 3237 1.1 christos .byte 115,108,46,111,114,103,62,0 3238 1.1 christos .comm OPENSSL_ia32cap_P,16,4 3239