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