TEST movb \$1,BORINGSSL_function_hit+3(%rip) #endif sub \$8,%rsp .cfi_adjust_cfa_offset 8 .seh_stackalloc 8 .seh_endprologue movups ($inp),%xmm0 # pull first 128 bits of *userKey xorps %xmm4,%xmm4 # low dword of xmm4 is assumed 0 lea 16($key),%rax # %rax is used as modifiable copy of $key cmp \$256,$bits je .L14rounds_alt # 192-bit key support was removed. cmp \$128,$bits jne .Lbad_keybits_alt mov \$9,$bits # 10 rounds for 128-bit key movdqa .Lkey_rotate(%rip),%xmm5 mov \$8,%r10d movdqa .Lkey_rcon1(%rip),%xmm4 movdqa %xmm0,%xmm2 movdqu %xmm0,($key) jmp .Loop_key128 .align 16 .Loop_key128: pshufb %xmm5,%xmm0 aesenclast %xmm4,%xmm0 pslld \$1,%xmm4 lea 16(%rax),%rax movdqa %xmm2,%xmm3 pslldq \$4,%xmm2 pxor %xmm2,%xmm3 pslldq \$4,%xmm2 pxor %xmm2,%xmm3 pslldq \$4,%xmm2 pxor %xmm3,%xmm2 pxor %xmm2,%xmm0 movdqu %xmm0,-16(%rax) movdqa %xmm0,%xmm2 dec %r10d jnz .Loop_key128 movdqa .Lkey_rcon1b(%rip),%xmm4 pshufb %xmm5,%xmm0 aesenclast %xmm4,%xmm0 pslld \$1,%xmm4 movdqa %xmm2,%xmm3 pslldq \$4,%xmm2 pxor %xmm2,%xmm3 pslldq \$4,%xmm2 pxor %xmm2,%xmm3 pslldq \$4,%xmm2 pxor %xmm3,%xmm2 pxor %xmm2,%xmm0 movdqu %xmm0,(%rax) movdqa %xmm0,%xmm2 pshufb %xmm5,%xmm0 aesenclast %xmm4,%xmm0 movdqa %xmm2,%xmm3 pslldq \$4,%xmm2 pxor %xmm2,%xmm3 pslldq \$4,%xmm2 pxor %xmm2,%xmm3 pslldq \$4,%xmm2 pxor %xmm3,%xmm2 pxor %xmm2,%xmm0 movdqu %xmm0,16(%rax) mov $bits,96(%rax) # 240($key) xor %eax,%eax jmp .Lenc_key_ret_alt # 192-bit key support was removed. .align 16 .L14rounds_alt: movups 16($inp),%xmm2 # remaining half of *userKey mov \$13,$bits # 14 rounds for 256 lea 16(%rax),%rax movdqa .Lkey_rotate(%rip),%xmm5 movdqa .Lkey_rcon1(%rip),%xmm4 mov \$7,%r10d movdqu %xmm0,0($key) movdqa %xmm2,%xmm1 movdqu %xmm2,16($key) jmp .Loop_key256 .align 16 .Loop_key256: pshufb %xmm5,%xmm2 aesenclast %xmm4,%xmm2 movdqa %xmm0,%xmm3 pslldq \$4,%xmm0 pxor %xmm0,%xmm3 pslldq \$4,%xmm0 pxor %xmm0,%xmm3 pslldq \$4,%xmm0 pxor %xmm3,%xmm0 pslld \$1,%xmm4 pxor %xmm2,%xmm0 movdqu %xmm0,(%rax) dec %r10d jz .Ldone_key256 pshufd \$0xff,%xmm0,%xmm2 pxor %xmm3,%xmm3 aesenclast %xmm3,%xmm2 movdqa %xmm1,%xmm3 pslldq \$4,%xmm1 pxor %xmm1,%xmm3 pslldq \$4,%xmm1 pxor %xmm1,%xmm3 pslldq \$4,%xmm1 pxor %xmm3,%xmm1 pxor %xmm1,%xmm2 movdqu %xmm2,16(%rax) lea 32(%rax),%rax movdqa %xmm2,%xmm1 jmp .Loop_key256 .Ldone_key256: mov $bits,16(%rax) # 240($key) xor %eax,%eax jmp .Lenc_key_ret_alt .align 16 .Lbad_keybits_alt: mov \$-2,%rax .Lenc_key_ret_alt: pxor %xmm0,%xmm0 pxor %xmm1,%xmm1 pxor %xmm2,%xmm2 pxor %xmm3,%xmm3 pxor %xmm4,%xmm4 pxor %xmm5,%xmm5 add \$8,%rsp .cfi_adjust_cfa_offset -8 ret .cfi_endproc .seh_endproc .size ${PREFIX}_set_encrypt_key_alt,.-${PREFIX}_set_encrypt_key_alt ___ }