1d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#if defined(__i386__) 2d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.file "src/crypto/aes/asm/aesni-x86.S" 3d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.text 4d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_encrypt 5d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_encrypt 6d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 7d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_encrypt: 8d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_encrypt_begin: 9d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 4(%esp),%eax 10d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 12(%esp),%edx 11d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%eax),%xmm2 12d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 13d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 8(%esp),%eax 14d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 15d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 16d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 17d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 18d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL000enc1_loop_1: 19d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 20d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 21d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 22d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 23d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L000enc1_loop_1 24d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,209 25e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 26e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 27d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%eax) 28e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 29d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 30d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_decrypt 31d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_decrypt 32d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 33d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_decrypt: 34d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_decrypt_begin: 35d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 4(%esp),%eax 36d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 12(%esp),%edx 37d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%eax),%xmm2 38d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 39d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 8(%esp),%eax 40d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 41d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 42d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 43d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 44d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL001dec1_loop_2: 45d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 46d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 47d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 48d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 49d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L001dec1_loop_2 50d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,209 51e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 52e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 53d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%eax) 54e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 55d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 56d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __aesni_encrypt2 57d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 58d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__aesni_encrypt2: 59d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 60d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 61d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 62d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 63d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 64d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%edx),%xmm0 65d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 66d9e397b599b13d642138480a28c14db7a136bf0Adam Langley negl %ecx 67d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%ecx 68d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL002enc2_loop: 69d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 70d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 71d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx,%ecx,1),%xmm1 72d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%ecx 73d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,208 74d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,216 75d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edx,%ecx,1),%xmm0 76d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L002enc2_loop 77d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 78d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 79d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,208 80d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,216 81d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 82d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __aesni_decrypt2 83d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 84d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__aesni_decrypt2: 85d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 86d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 87d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 88d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 89d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 90d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%edx),%xmm0 91d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 92d9e397b599b13d642138480a28c14db7a136bf0Adam Langley negl %ecx 93d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%ecx 94d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL003dec2_loop: 95d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 96d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,217 97d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx,%ecx,1),%xmm1 98d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%ecx 99d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,208 100d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,216 101d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edx,%ecx,1),%xmm0 102d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L003dec2_loop 103d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 104d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,217 105d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,208 106d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,216 107d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 108d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __aesni_encrypt3 109d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 110d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__aesni_encrypt3: 111d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 112d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 113d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 114d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 115d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 116d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 117d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%edx),%xmm0 118d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 119d9e397b599b13d642138480a28c14db7a136bf0Adam Langley negl %ecx 120d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%ecx 121d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL004enc3_loop: 122d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 123d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 124d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,225 125d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx,%ecx,1),%xmm1 126d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%ecx 127d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,208 128d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,216 129d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,224 130d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edx,%ecx,1),%xmm0 131d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L004enc3_loop 132d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 133d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 134d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,225 135d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,208 136d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,216 137d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,224 138d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 139d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __aesni_decrypt3 140d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 141d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__aesni_decrypt3: 142d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 143d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 144d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 145d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 146d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 147d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 148d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%edx),%xmm0 149d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 150d9e397b599b13d642138480a28c14db7a136bf0Adam Langley negl %ecx 151d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%ecx 152d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL005dec3_loop: 153d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 154d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,217 155d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,225 156d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx,%ecx,1),%xmm1 157d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%ecx 158d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,208 159d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,216 160d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,224 161d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edx,%ecx,1),%xmm0 162d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L005dec3_loop 163d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 164d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,217 165d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,225 166d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,208 167d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,216 168d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,224 169d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 170d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __aesni_encrypt4 171d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 172d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__aesni_encrypt4: 173d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 174d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 175d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 176d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 177d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 178d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 179d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm5 180d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%edx),%xmm0 181d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 182d9e397b599b13d642138480a28c14db7a136bf0Adam Langley negl %ecx 183d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 15,31,64,0 184d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%ecx 185d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL006enc4_loop: 186d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 187d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 188d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,225 189d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,233 190d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx,%ecx,1),%xmm1 191d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%ecx 192d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,208 193d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,216 194d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,224 195d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,232 196d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edx,%ecx,1),%xmm0 197d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L006enc4_loop 198d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 199d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 200d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,225 201d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,233 202d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,208 203d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,216 204d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,224 205d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,232 206d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 207d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __aesni_decrypt4 208d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 209d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__aesni_decrypt4: 210d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 211d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 212d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 213d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 214d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 215d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 216d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm5 217d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%edx),%xmm0 218d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 219d9e397b599b13d642138480a28c14db7a136bf0Adam Langley negl %ecx 220d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 15,31,64,0 221d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%ecx 222d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL007dec4_loop: 223d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 224d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,217 225d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,225 226d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,233 227d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx,%ecx,1),%xmm1 228d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%ecx 229d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,208 230d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,216 231d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,224 232d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,232 233d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edx,%ecx,1),%xmm0 234d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L007dec4_loop 235d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 236d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,217 237d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,225 238d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,233 239d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,208 240d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,216 241d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,224 242d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,232 243d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 244d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __aesni_encrypt6 245d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 246d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__aesni_encrypt6: 247d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 248d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 249d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 250d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 251d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 252d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 253d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 254d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm5 255d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm6 256d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 257d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 258d9e397b599b13d642138480a28c14db7a136bf0Adam Langley negl %ecx 259d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,225 260d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm7 261e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movups (%edx,%ecx,1),%xmm0 262d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%ecx 263e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L008_aesni_encrypt6_inner 264d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 265e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL009enc6_loop: 266d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 267d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 268d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,225 269e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL008_aesni_encrypt6_inner: 270d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,233 271d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,241 272d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,249 273d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_encrypt6_enter: 274d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx,%ecx,1),%xmm1 275d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%ecx 276d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,208 277d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,216 278d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,224 279d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,232 280d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,240 281d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,248 282d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edx,%ecx,1),%xmm0 283e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L009enc6_loop 284d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 285d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 286d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,225 287d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,233 288d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,241 289d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,249 290d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,208 291d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,216 292d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,224 293d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,232 294d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,240 295d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,248 296d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 297d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __aesni_decrypt6 298d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 299d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__aesni_decrypt6: 300d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 301d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 302d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 303d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 304d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 305d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 306d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 307d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm5 308d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm6 309d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,217 310d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 311d9e397b599b13d642138480a28c14db7a136bf0Adam Langley negl %ecx 312d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,225 313d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm7 314e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movups (%edx,%ecx,1),%xmm0 315d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%ecx 316e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L010_aesni_decrypt6_inner 317d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 318e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL011dec6_loop: 319d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 320d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,217 321d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,225 322e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL010_aesni_decrypt6_inner: 323d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,233 324d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,241 325d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,249 326d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_decrypt6_enter: 327d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx,%ecx,1),%xmm1 328d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%ecx 329d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,208 330d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,216 331d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,224 332d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,232 333d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,240 334d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,248 335d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edx,%ecx,1),%xmm0 336e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L011dec6_loop 337d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 338d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,217 339d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,225 340d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,233 341d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,241 342d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,249 343d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,208 344d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,216 345d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,224 346d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,232 347d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,240 348d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,248 349d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 350d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_ecb_encrypt 351d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_ecb_encrypt 352d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 353d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_ecb_encrypt: 354d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_ecb_encrypt_begin: 355d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 356d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 357d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 358d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 359d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 360d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%edi 361d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%eax 362d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 32(%esp),%edx 363d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 36(%esp),%ebx 364d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%eax 365e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L012ecb_ret 366d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 367d9e397b599b13d642138480a28c14db7a136bf0Adam Langley testl %ebx,%ebx 368e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L013ecb_decrypt 369d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %edx,%ebp 370d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,%ebx 371d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $96,%eax 372e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L014ecb_enc_tail 373d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm2 374d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%esi),%xmm3 375d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%esi),%xmm4 376d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%esi),%xmm5 377d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 64(%esi),%xmm6 378d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 80(%esi),%xmm7 379d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%esi),%esi 380d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $96,%eax 381e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L015ecb_enc_loop6_enter 382d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 383e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL016ecb_enc_loop6: 384d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 385d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm2 386d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 387d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%esi),%xmm3 388d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 389d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%esi),%xmm4 390d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 391d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%esi),%xmm5 392d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 393d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 64(%esi),%xmm6 394d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm7,80(%edi) 395d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%edi),%edi 396d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 80(%esi),%xmm7 397d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%esi),%esi 398e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL015ecb_enc_loop6_enter: 399d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt6 400d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 401d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 402d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $96,%eax 403e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnc L016ecb_enc_loop6 404d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 405d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 406d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 407d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 408d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 409d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm7,80(%edi) 410d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%edi),%edi 411d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $96,%eax 412e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L012ecb_ret 413e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL014ecb_enc_tail: 414d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 415d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $32,%eax 416e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L017ecb_enc_one 417d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm3 418e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L018ecb_enc_two 419d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm4 420d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $64,%eax 421e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L019ecb_enc_three 422d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm5 423e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L020ecb_enc_four 424d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 64(%esi),%xmm6 425d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm7 426d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt6 427d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 428d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 429d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 430d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 431d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 432e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L012ecb_ret 433d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 434e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL017ecb_enc_one: 435d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 436d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 437d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 438d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 439e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL021enc1_loop_3: 440d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 441d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 442d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 443d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 444e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L021enc1_loop_3 445d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,209 446d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 447e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L012ecb_ret 448d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 449e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL018ecb_enc_two: 450d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt2 451d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 452d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 453e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L012ecb_ret 454d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 455e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL019ecb_enc_three: 456d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt3 457d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 458d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 459d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 460e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L012ecb_ret 461d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 462e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL020ecb_enc_four: 463d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt4 464d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 465d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 466d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 467d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 468e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L012ecb_ret 469d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 470e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL013ecb_decrypt: 471d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %edx,%ebp 472d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,%ebx 473d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $96,%eax 474e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L022ecb_dec_tail 475d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm2 476d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%esi),%xmm3 477d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%esi),%xmm4 478d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%esi),%xmm5 479d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 64(%esi),%xmm6 480d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 80(%esi),%xmm7 481d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%esi),%esi 482d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $96,%eax 483e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L023ecb_dec_loop6_enter 484d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 485e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL024ecb_dec_loop6: 486d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 487d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm2 488d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 489d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%esi),%xmm3 490d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 491d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%esi),%xmm4 492d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 493d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%esi),%xmm5 494d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 495d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 64(%esi),%xmm6 496d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm7,80(%edi) 497d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%edi),%edi 498d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 80(%esi),%xmm7 499d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%esi),%esi 500e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL023ecb_dec_loop6_enter: 501d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt6 502d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 503d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 504d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $96,%eax 505e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnc L024ecb_dec_loop6 506d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 507d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 508d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 509d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 510d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 511d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm7,80(%edi) 512d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%edi),%edi 513d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $96,%eax 514e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L012ecb_ret 515e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL022ecb_dec_tail: 516d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 517d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $32,%eax 518e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L025ecb_dec_one 519d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm3 520e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L026ecb_dec_two 521d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm4 522d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $64,%eax 523e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L027ecb_dec_three 524d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm5 525e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L028ecb_dec_four 526d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 64(%esi),%xmm6 527d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm7 528d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt6 529d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 530d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 531d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 532d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 533d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 534e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L012ecb_ret 535d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 536e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL025ecb_dec_one: 537d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 538d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 539d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 540d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 541e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL029dec1_loop_4: 542d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 543d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 544d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 545d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 546e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L029dec1_loop_4 547d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,209 548d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 549e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L012ecb_ret 550d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 551e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL026ecb_dec_two: 552d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt2 553d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 554d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 555e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L012ecb_ret 556d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 557e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL027ecb_dec_three: 558d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt3 559d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 560d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 561d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 562e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L012ecb_ret 563d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 564e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL028ecb_dec_four: 565d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt4 566d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 567d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 568d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 569d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 570e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL012ecb_ret: 571e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 572e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 573e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 574e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 575e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 576e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm5,%xmm5 577e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm6,%xmm6 578e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm7,%xmm7 579d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 580d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 581d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 582d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 583d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 584d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_ccm64_encrypt_blocks 585d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_ccm64_encrypt_blocks 586d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 587d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_ccm64_encrypt_blocks: 588d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_ccm64_encrypt_blocks_begin: 589d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 590d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 591d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 592d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 593d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 594d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%edi 595d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%eax 596d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 32(%esp),%edx 597d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 36(%esp),%ebx 598d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 40(%esp),%ecx 599d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %esp,%ebp 600d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $60,%esp 601d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%esp 602d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,48(%esp) 603d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%ebx),%xmm7 604d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%ecx),%xmm3 605d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 606d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $202182159,(%esp) 607d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $134810123,4(%esp) 608d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $67438087,8(%esp) 609d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $66051,12(%esp) 610d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $1,%ebx 611d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl %ebp,%ebp 612d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,16(%esp) 613d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,20(%esp) 614d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,24(%esp) 615d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,28(%esp) 616d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 617d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $16,%ebx 618d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal (%edx),%ebp 619d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa (%esp),%xmm5 620d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm2 621d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 622d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl %ecx,%ebx 623d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,253 624e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL030ccm64_enc_outer: 625d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%ebp),%xmm0 626d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 627d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm6 628d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 629d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%ebp),%xmm1 630d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm0 631d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm3 632d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%ebp),%xmm0 633e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL031ccm64_enc2_loop: 634d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 635d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 636d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx,%ecx,1),%xmm1 637d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%ecx 638d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,208 639d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,216 640d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edx,%ecx,1),%xmm0 641e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L031ccm64_enc2_loop 642d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 643d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 644d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq 16(%esp),%xmm7 645d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %eax 646d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,208 647d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,216 648d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%esi),%esi 649d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm2,%xmm6 650d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm2 651d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,(%edi) 652d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,213 653d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edi),%edi 654e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L030ccm64_enc_outer 655d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 48(%esp),%esp 656d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 40(%esp),%edi 657d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,(%edi) 658e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 659e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 660e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 661e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 662e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 663e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm5,%xmm5 664e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm6,%xmm6 665e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm7,%xmm7 666d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 667d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 668d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 669d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 670d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 671d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_ccm64_decrypt_blocks 672d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_ccm64_decrypt_blocks 673d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 674d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_ccm64_decrypt_blocks: 675d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_ccm64_decrypt_blocks_begin: 676d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 677d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 678d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 679d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 680d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 681d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%edi 682d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%eax 683d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 32(%esp),%edx 684d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 36(%esp),%ebx 685d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 40(%esp),%ecx 686d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %esp,%ebp 687d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $60,%esp 688d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%esp 689d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,48(%esp) 690d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%ebx),%xmm7 691d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%ecx),%xmm3 692d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 693d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $202182159,(%esp) 694d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $134810123,4(%esp) 695d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $67438087,8(%esp) 696d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $66051,12(%esp) 697d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $1,%ebx 698d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl %ebp,%ebp 699d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,16(%esp) 700d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,20(%esp) 701d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,24(%esp) 702d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,28(%esp) 703d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa (%esp),%xmm5 704d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm2 705d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %edx,%ebp 706d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,%ebx 707d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,253 708d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 709d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 710d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 711d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 712e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL032enc1_loop_5: 713d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 714d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 715d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 716d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 717e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L032enc1_loop_5 718d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,209 719d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ebx 720d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $16,%ecx 721d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm6 722d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq 16(%esp),%xmm7 723d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%esi),%esi 724d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl %ebx,%ecx 725d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%ebp,%ebx,1),%edx 726d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,%ebx 727e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L033ccm64_dec_outer 728d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 729e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL033ccm64_dec_outer: 730d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm2,%xmm6 731d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm2 732d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,(%edi) 733d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edi),%edi 734d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,213 735d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $1,%eax 736e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L034ccm64_dec_break 737d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%ebp),%xmm0 738d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 739d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%ebp),%xmm1 740d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm6 741d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 742d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 743d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%ebp),%xmm0 744e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL035ccm64_dec2_loop: 745d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 746d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 747d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx,%ecx,1),%xmm1 748d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%ecx 749d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,208 750d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,216 751d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edx,%ecx,1),%xmm0 752e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L035ccm64_dec2_loop 753d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm6 754d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq 16(%esp),%xmm7 755d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 756d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 757d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,208 758d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,216 759d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%esi),%esi 760e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L033ccm64_dec_outer 761d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 762e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL034ccm64_dec_break: 763d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%ebp),%ecx 764d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 765d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 766d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 767d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm6 768d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 769d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 770e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL036enc1_loop_6: 771d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 772d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 773d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 774d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 775e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L036enc1_loop_6 776d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,217 777d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 48(%esp),%esp 778d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 40(%esp),%edi 779d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,(%edi) 780e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 781e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 782e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 783e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 784e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 785e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm5,%xmm5 786e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm6,%xmm6 787e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm7,%xmm7 788d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 789d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 790d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 791d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 792d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 793d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_ctr32_encrypt_blocks 794d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_ctr32_encrypt_blocks 795d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 796d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_ctr32_encrypt_blocks: 797d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_ctr32_encrypt_blocks_begin: 798d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 799d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 800d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 801d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 802d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 803d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%edi 804d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%eax 805d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 32(%esp),%edx 806d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 36(%esp),%ebx 807d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %esp,%ebp 808d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $88,%esp 809d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%esp 810d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,80(%esp) 811d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $1,%eax 812e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L037ctr32_one_shortcut 813d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%ebx),%xmm7 814d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $202182159,(%esp) 815d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $134810123,4(%esp) 816d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $67438087,8(%esp) 817d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $66051,12(%esp) 818d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $6,%ecx 819d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl %ebp,%ebp 820d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,16(%esp) 821d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,20(%esp) 822d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,24(%esp) 823d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,28(%esp) 824d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,22,251,3 825d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,34,253,3 826d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 827d9e397b599b13d642138480a28c14db7a136bf0Adam Langley bswap %ebx 828d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 829d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm1 830d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa (%esp),%xmm2 831d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,34,195,0 832d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 3(%ebx),%ebp 833d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,34,205,0 834d9e397b599b13d642138480a28c14db7a136bf0Adam Langley incl %ebx 835d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,34,195,1 836d9e397b599b13d642138480a28c14db7a136bf0Adam Langley incl %ebp 837d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,34,205,1 838d9e397b599b13d642138480a28c14db7a136bf0Adam Langley incl %ebx 839d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,34,195,2 840d9e397b599b13d642138480a28c14db7a136bf0Adam Langley incl %ebp 841d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,34,205,2 842d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,48(%esp) 843d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,194 844d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%edx),%xmm6 845d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,64(%esp) 846d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,202 847d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $192,%xmm0,%xmm2 848d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $128,%xmm0,%xmm3 849d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $6,%eax 850e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L038ctr32_tail 851d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm6,%xmm7 852d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 853d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $16,%ebx 854d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,32(%esp) 855d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %edx,%ebp 856d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl %ecx,%ebx 857d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 858d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $6,%eax 859e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L039ctr32_loop6 860d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 861e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL039ctr32_loop6: 862d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $64,%xmm0,%xmm4 863d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 32(%esp),%xmm0 864d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $192,%xmm1,%xmm5 865d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm2 866d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $128,%xmm1,%xmm6 867d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 868d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $64,%xmm1,%xmm7 869d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%ebp),%xmm1 870d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 871d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm5 872d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 873d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm6 874d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm7 875d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 876d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%ebp),%xmm0 877d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 878d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,225 879d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,233 880d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,241 881d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,249 882d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call L_aesni_encrypt6_enter 883d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm1 884d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm0 885d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm2 886d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm1 887d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm3 888d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 889d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 16(%esp),%xmm0 890d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm4 891d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 64(%esp),%xmm1 892d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 893d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 894d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddd %xmm0,%xmm1 895d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddd 48(%esp),%xmm0 896d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa (%esp),%xmm2 897d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm3 898d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 64(%esi),%xmm4 899d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm3,%xmm5 900d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 80(%esi),%xmm3 901d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%esi),%esi 902d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,48(%esp) 903d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,194 904d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm6 905d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 906d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm3,%xmm7 907d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,64(%esp) 908d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,202 909d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 910d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $192,%xmm0,%xmm2 911d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm7,80(%edi) 912d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%edi),%edi 913d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $128,%xmm0,%xmm3 914d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $6,%eax 915e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnc L039ctr32_loop6 916d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $6,%eax 917e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L040ctr32_ret 918d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%ebp),%xmm7 919d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 920d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 32(%esp),%xmm7 921d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%ebp),%ecx 922e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL038ctr32_tail: 923d9e397b599b13d642138480a28c14db7a136bf0Adam Langley por %xmm7,%xmm2 924d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $2,%eax 925e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L041ctr32_one 926d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $64,%xmm0,%xmm4 927d9e397b599b13d642138480a28c14db7a136bf0Adam Langley por %xmm7,%xmm3 928e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L042ctr32_two 929d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $192,%xmm1,%xmm5 930d9e397b599b13d642138480a28c14db7a136bf0Adam Langley por %xmm7,%xmm4 931d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $4,%eax 932e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L043ctr32_three 933d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $128,%xmm1,%xmm6 934d9e397b599b13d642138480a28c14db7a136bf0Adam Langley por %xmm7,%xmm5 935e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L044ctr32_four 936d9e397b599b13d642138480a28c14db7a136bf0Adam Langley por %xmm7,%xmm6 937d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt6 938d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm1 939d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm0 940d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm2 941d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm1 942d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm3 943d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm0 944d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm4 945d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 64(%esi),%xmm1 946d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm5 947d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 948d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm6 949d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 950d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 951d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 952d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 953e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L040ctr32_ret 954d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 955e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL037ctr32_one_shortcut: 956d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%ebx),%xmm2 957d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 958e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL041ctr32_one: 959d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 960d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 961d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 962d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 963e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL045enc1_loop_7: 964d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 965d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 966d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 967d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 968e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L045enc1_loop_7 969d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,209 970d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm6 971d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm2,%xmm6 972d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,(%edi) 973e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L040ctr32_ret 974d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 975e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL042ctr32_two: 976d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt2 977d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm5 978d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm6 979d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 980d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 981d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 982d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 983e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L040ctr32_ret 984d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 985e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL043ctr32_three: 986d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt3 987d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm5 988d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm6 989d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 990d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm7 991d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 992d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 993d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm4 994d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 995d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 996e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L040ctr32_ret 997d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 998e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL044ctr32_four: 999d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt4 1000d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm6 1001d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm7 1002d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm1 1003d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm2 1004d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm0 1005d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm3 1006d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1007d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm4 1008d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1009d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm5 1010d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1011d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 1012e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL040ctr32_ret: 1013e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 1014e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 1015e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 1016e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 1017e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 1018e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,32(%esp) 1019e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm5,%xmm5 1020e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,48(%esp) 1021e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm6,%xmm6 1022e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,64(%esp) 1023e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm7,%xmm7 1024d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 80(%esp),%esp 1025d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 1026d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 1027d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 1028d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 1029d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 1030d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_xts_encrypt 1031d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_xts_encrypt 1032d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 1033d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_xts_encrypt: 1034d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_xts_encrypt_begin: 1035d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 1036d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 1037d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 1038d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 1039d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 36(%esp),%edx 1040d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 40(%esp),%esi 1041d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 1042d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1043d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 1044d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 1045d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 1046d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 1047e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL046enc1_loop_8: 1048d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 1049d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 1050d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 1051d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 1052e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L046enc1_loop_8 1053d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,209 1054d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 1055d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%edi 1056d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%eax 1057d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 32(%esp),%edx 1058d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %esp,%ebp 1059d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $120,%esp 1060d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 1061d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%esp 1062d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $135,96(%esp) 1063d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $0,100(%esp) 1064d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $1,104(%esp) 1065d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $0,108(%esp) 1066d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,112(%esp) 1067d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,116(%esp) 1068d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm2,%xmm1 1069d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1070d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 96(%esp),%xmm3 1071d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1072d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%eax 1073d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %edx,%ebp 1074d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,%ebx 1075d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $96,%eax 1076e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jc L047xts_enc_short 1077d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 1078d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $16,%ebx 1079d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl %ecx,%ebx 1080d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 1081e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L048xts_enc_loop6 1082d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1083e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL048xts_enc_loop6: 1084d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1085d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1086d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,(%esp) 1087d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1088d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1089d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1090d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1091d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1092d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1093d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,16(%esp) 1094d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1095d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1096d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1097d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1098d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1099d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1100d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,32(%esp) 1101d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1102d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1103d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1104d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1105d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1106d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1107d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,48(%esp) 1108d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1109d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1110d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1111d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1112d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm7 1113d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,64(%esp) 1114d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1115d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%ebp),%xmm0 1116d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm7 1117d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1118d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm7 1119d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 1120d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%esi),%xmm3 1121d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 1122d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%esi),%xmm4 1123d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 1124d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%esi),%xmm5 1125d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 1126d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 64(%esi),%xmm6 1127d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm5 1128d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 80(%esi),%xmm1 1129d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm6 1130d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%esi),%esi 1131d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor (%esp),%xmm2 1132d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,80(%esp) 1133d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm7 1134d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%ebp),%xmm1 1135d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 16(%esp),%xmm3 1136d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 32(%esp),%xmm4 1137d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 1138d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 48(%esp),%xmm5 1139d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 64(%esp),%xmm6 1140d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,217 1141d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm7 1142d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%ebp),%xmm0 1143d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,225 1144d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,233 1145d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,241 1146d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,249 1147d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call L_aesni_encrypt6_enter 1148d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 80(%esp),%xmm1 1149d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1150d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps (%esp),%xmm2 1151d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1152d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 16(%esp),%xmm3 1153d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1154d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 32(%esp),%xmm4 1155d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1156d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 48(%esp),%xmm5 1157d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1158d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 64(%esp),%xmm6 1159d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 1160d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm7 1161d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 1162d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1163d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm7,80(%edi) 1164d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%edi),%edi 1165d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 96(%esp),%xmm3 1166d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1167d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1168d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1169d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1170d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1171d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $96,%eax 1172e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnc L048xts_enc_loop6 1173d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%ebp),%ecx 1174d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 1175d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,%ebx 1176e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL047xts_enc_short: 1177d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $96,%eax 1178e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L049xts_enc_done6x 1179d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,%xmm5 1180d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $32,%eax 1181e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L050xts_enc_one 1182d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1183d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1184d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1185d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1186d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1187d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1188e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L051xts_enc_two 1189d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1190d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1191d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,%xmm6 1192d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1193d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1194d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1195d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1196d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $64,%eax 1197e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L052xts_enc_three 1198d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1199d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1200d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,%xmm7 1201d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1202d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1203d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1204d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1205d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm5,(%esp) 1206d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,16(%esp) 1207e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L053xts_enc_four 1208d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,32(%esp) 1209d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm7 1210d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,48(%esp) 1211d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1212d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm7 1213d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm7 1214d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm2 1215d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%esi),%xmm3 1216d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%esi),%xmm4 1217d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor (%esp),%xmm2 1218d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%esi),%xmm5 1219d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 16(%esp),%xmm3 1220d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 64(%esi),%xmm6 1221d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 32(%esp),%xmm4 1222d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 80(%esi),%esi 1223d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 48(%esp),%xmm5 1224d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,64(%esp) 1225d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm7,%xmm6 1226d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt6 1227d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps 64(%esp),%xmm1 1228d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps (%esp),%xmm2 1229d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 16(%esp),%xmm3 1230d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 32(%esp),%xmm4 1231d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1232d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 48(%esp),%xmm5 1233d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1234d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm6 1235d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1236d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 1237d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 1238d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 80(%edi),%edi 1239e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L054xts_enc_done 1240d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1241e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL050xts_enc_one: 1242d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1243d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%esi),%esi 1244d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1245d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 1246d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 1247d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 1248d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 1249e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL055enc1_loop_9: 1250d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 1251d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 1252d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 1253d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 1254e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L055enc1_loop_9 1255d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,209 1256d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1257d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1258d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edi),%edi 1259d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm5,%xmm1 1260e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L054xts_enc_done 1261d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1262e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL051xts_enc_two: 1263d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm1,%xmm6 1264d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1265d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm3 1266d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%esi),%esi 1267d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1268d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1269d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt2 1270d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1271d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1272d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1273d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1274d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edi),%edi 1275d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,%xmm1 1276e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L054xts_enc_done 1277d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1278e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL052xts_enc_three: 1279d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm1,%xmm7 1280d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1281d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm3 1282d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm4 1283d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 48(%esi),%esi 1284d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1285d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1286d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm4 1287d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt3 1288d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1289d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1290d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm4 1291d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1292d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1293d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1294d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 48(%edi),%edi 1295d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm1 1296e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L054xts_enc_done 1297d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1298e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL053xts_enc_four: 1299d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm1,%xmm6 1300d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1301d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm3 1302d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm4 1303d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps (%esp),%xmm2 1304d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm5 1305d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 64(%esi),%esi 1306d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 16(%esp),%xmm3 1307d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm4 1308d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm5 1309d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_encrypt4 1310d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps (%esp),%xmm2 1311d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 16(%esp),%xmm3 1312d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm4 1313d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1314d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm5 1315d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1316d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1317d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 1318d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 64(%edi),%edi 1319d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,%xmm1 1320e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L054xts_enc_done 1321d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1322e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL049xts_enc_done6x: 1323d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 112(%esp),%eax 1324d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $15,%eax 1325e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L056xts_enc_ret 1326d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,%xmm5 1327d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,112(%esp) 1328e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L057xts_enc_steal 1329d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1330e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL054xts_enc_done: 1331d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 112(%esp),%eax 1332d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1333d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $15,%eax 1334e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L056xts_enc_ret 1335d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1336d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,112(%esp) 1337d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm5 1338d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1339d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand 96(%esp),%xmm5 1340d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm5 1341e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL057xts_enc_steal: 1342d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl (%esi),%ecx 1343d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl -16(%edi),%edx 1344d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 1(%esi),%esi 1345d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %cl,-16(%edi) 1346d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,(%edi) 1347d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 1(%edi),%edi 1348d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $1,%eax 1349e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L057xts_enc_steal 1350d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl 112(%esp),%edi 1351d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 1352d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 1353d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups -16(%edi),%xmm2 1354d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1355d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 1356d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 1357d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 1358d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 1359e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL058enc1_loop_10: 1360d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 1361d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 1362d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 1363d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 1364e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L058enc1_loop_10 1365d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,209 1366d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1367d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,-16(%edi) 1368e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL056xts_enc_ret: 1369e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 1370e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 1371e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 1372e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,(%esp) 1373e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 1374e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,16(%esp) 1375e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 1376e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,32(%esp) 1377e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm5,%xmm5 1378e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,48(%esp) 1379e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm6,%xmm6 1380e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,64(%esp) 1381e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm7,%xmm7 1382e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,80(%esp) 1383d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 116(%esp),%esp 1384d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 1385d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 1386d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 1387d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 1388d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 1389d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_xts_decrypt 1390d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_xts_decrypt 1391d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 1392d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_xts_decrypt: 1393d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_xts_decrypt_begin: 1394d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 1395d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 1396d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 1397d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 1398d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 36(%esp),%edx 1399d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 40(%esp),%esi 1400d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 1401d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1402d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 1403d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 1404d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 1405d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 1406e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL059enc1_loop_11: 1407d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 1408d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 1409d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 1410d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 1411e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L059enc1_loop_11 1412d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,209 1413d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 1414d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%edi 1415d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%eax 1416d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 32(%esp),%edx 1417d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %esp,%ebp 1418d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $120,%esp 1419d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%esp 1420d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl %ebx,%ebx 1421d9e397b599b13d642138480a28c14db7a136bf0Adam Langley testl $15,%eax 1422d9e397b599b13d642138480a28c14db7a136bf0Adam Langley setnz %bl 1423d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ebx 1424d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl %ebx,%eax 1425d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $135,96(%esp) 1426d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $0,100(%esp) 1427d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $1,104(%esp) 1428d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $0,108(%esp) 1429d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,112(%esp) 1430d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,116(%esp) 1431d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 1432d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %edx,%ebp 1433d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,%ebx 1434d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm2,%xmm1 1435d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1436d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 96(%esp),%xmm3 1437d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1438d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%eax 1439d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $96,%eax 1440e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jc L060xts_dec_short 1441d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 1442d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $16,%ebx 1443d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl %ecx,%ebx 1444d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx,%ecx,1),%edx 1445e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L061xts_dec_loop6 1446d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1447e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL061xts_dec_loop6: 1448d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1449d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1450d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,(%esp) 1451d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1452d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1453d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1454d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1455d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1456d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1457d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,16(%esp) 1458d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1459d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1460d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1461d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1462d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1463d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1464d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,32(%esp) 1465d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1466d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1467d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1468d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1469d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1470d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1471d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,48(%esp) 1472d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1473d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1474d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1475d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1476d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm7 1477d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,64(%esp) 1478d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1479d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%ebp),%xmm0 1480d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm7 1481d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1482d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm7 1483d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 1484d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%esi),%xmm3 1485d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 1486d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%esi),%xmm4 1487d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 1488d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%esi),%xmm5 1489d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 1490d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 64(%esi),%xmm6 1491d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm5 1492d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 80(%esi),%xmm1 1493d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm6 1494d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%esi),%esi 1495d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor (%esp),%xmm2 1496d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,80(%esp) 1497d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm7 1498d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%ebp),%xmm1 1499d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 16(%esp),%xmm3 1500d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 32(%esp),%xmm4 1501d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 1502d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 48(%esp),%xmm5 1503d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 64(%esp),%xmm6 1504d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,217 1505d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm7 1506d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%ebp),%xmm0 1507d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,225 1508d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,233 1509d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,241 1510d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,249 1511d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call L_aesni_decrypt6_enter 1512d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 80(%esp),%xmm1 1513d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1514d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps (%esp),%xmm2 1515d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1516d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 16(%esp),%xmm3 1517d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1518d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 32(%esp),%xmm4 1519d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1520d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 48(%esp),%xmm5 1521d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1522d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 64(%esp),%xmm6 1523d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 1524d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm7 1525d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 1526d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1527d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm7,80(%edi) 1528d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%edi),%edi 1529d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 96(%esp),%xmm3 1530d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1531d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1532d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1533d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1534d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1535d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $96,%eax 1536e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnc L061xts_dec_loop6 1537d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%ebp),%ecx 1538d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 1539d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,%ebx 1540e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL060xts_dec_short: 1541d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $96,%eax 1542e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L062xts_dec_done6x 1543d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,%xmm5 1544d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $32,%eax 1545e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L063xts_dec_one 1546d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1547d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1548d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1549d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1550d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1551d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1552e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L064xts_dec_two 1553d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1554d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1555d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,%xmm6 1556d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1557d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1558d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1559d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1560d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $64,%eax 1561e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L065xts_dec_three 1562d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1563d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1564d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,%xmm7 1565d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1566d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1567d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1568d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1569d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm5,(%esp) 1570d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,16(%esp) 1571e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L066xts_dec_four 1572d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,32(%esp) 1573d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm7 1574d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,48(%esp) 1575d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1576d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm7 1577d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm7 1578d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm2 1579d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%esi),%xmm3 1580d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%esi),%xmm4 1581d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor (%esp),%xmm2 1582d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%esi),%xmm5 1583d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 16(%esp),%xmm3 1584d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 64(%esi),%xmm6 1585d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 32(%esp),%xmm4 1586d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 80(%esi),%esi 1587d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 48(%esp),%xmm5 1588d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,64(%esp) 1589d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm7,%xmm6 1590d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt6 1591d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps 64(%esp),%xmm1 1592d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps (%esp),%xmm2 1593d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 16(%esp),%xmm3 1594d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 32(%esp),%xmm4 1595d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1596d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 48(%esp),%xmm5 1597d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1598d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm6 1599d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1600d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 1601d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 1602d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 80(%edi),%edi 1603e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L067xts_dec_done 1604d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1605e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL063xts_dec_one: 1606d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1607d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%esi),%esi 1608d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1609d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 1610d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 1611d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 1612d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 1613e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL068dec1_loop_12: 1614d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 1615d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 1616d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 1617d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 1618e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L068dec1_loop_12 1619d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,209 1620d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1621d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1622d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edi),%edi 1623d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm5,%xmm1 1624e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L067xts_dec_done 1625d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1626e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL064xts_dec_two: 1627d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm1,%xmm6 1628d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1629d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm3 1630d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%esi),%esi 1631d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1632d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1633d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt2 1634d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1635d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1636d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1637d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1638d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edi),%edi 1639d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,%xmm1 1640e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L067xts_dec_done 1641d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1642e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL065xts_dec_three: 1643d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm1,%xmm7 1644d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1645d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm3 1646d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm4 1647d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 48(%esi),%esi 1648d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1649d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1650d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm4 1651d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt3 1652d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1653d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1654d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm4 1655d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1656d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1657d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1658d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 48(%edi),%edi 1659d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm1 1660e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L067xts_dec_done 1661d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1662e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL066xts_dec_four: 1663d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm1,%xmm6 1664d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1665d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm3 1666d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm4 1667d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps (%esp),%xmm2 1668d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm5 1669d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 64(%esi),%esi 1670d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 16(%esp),%xmm3 1671d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm4 1672d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm5 1673d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt4 1674d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps (%esp),%xmm2 1675d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps 16(%esp),%xmm3 1676d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm4 1677d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1678d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm5 1679d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1680d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1681d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 1682d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 64(%edi),%edi 1683d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,%xmm1 1684e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L067xts_dec_done 1685d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1686e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL062xts_dec_done6x: 1687d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 112(%esp),%eax 1688d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $15,%eax 1689e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L069xts_dec_ret 1690d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,112(%esp) 1691e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L070xts_dec_only_one_more 1692d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1693e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL067xts_dec_done: 1694d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 112(%esp),%eax 1695d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1696d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $15,%eax 1697e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L069xts_dec_ret 1698d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1699d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,112(%esp) 1700d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm2 1701d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 1702d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 96(%esp),%xmm3 1703d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1704d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm2 1705d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm1,%xmm0 1706d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm1 1707e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL070xts_dec_only_one_more: 1708d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $19,%xmm0,%xmm5 1709d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,%xmm6 1710d9e397b599b13d642138480a28c14db7a136bf0Adam Langley paddq %xmm1,%xmm1 1711d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm3,%xmm5 1712d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm5 1713d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 1714d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 1715d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1716d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1717d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 1718d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 1719d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 1720d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 1721e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL071dec1_loop_13: 1722d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 1723d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 1724d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 1725d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 1726e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L071dec1_loop_13 1727d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,209 1728d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm2 1729d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1730e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL072xts_dec_steal: 1731d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl 16(%esi),%ecx 1732d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl (%edi),%edx 1733d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 1(%esi),%esi 1734d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %cl,(%edi) 1735d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,16(%edi) 1736d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 1(%edi),%edi 1737d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $1,%eax 1738e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L072xts_dec_steal 1739d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl 112(%esp),%edi 1740d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 1741d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 1742d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edi),%xmm2 1743d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm2 1744d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 1745d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 1746d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 1747d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 1748e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL073dec1_loop_14: 1749d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 1750d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 1751d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 1752d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 1753e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L073dec1_loop_14 1754d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,209 1755d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm2 1756d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1757e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL069xts_dec_ret: 1758e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 1759e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 1760e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 1761e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,(%esp) 1762e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 1763e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,16(%esp) 1764e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 1765e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,32(%esp) 1766e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm5,%xmm5 1767e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,48(%esp) 1768e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm6,%xmm6 1769e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,64(%esp) 1770e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm7,%xmm7 1771e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,80(%esp) 1772d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 116(%esp),%esp 1773d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 1774d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 1775d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 1776d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 1777d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 1778d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_cbc_encrypt 1779d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_cbc_encrypt 1780d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 1781d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_cbc_encrypt: 1782d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_cbc_encrypt_begin: 1783d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 1784d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 1785d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 1786d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 1787d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 1788d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %esp,%ebx 1789d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%edi 1790d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $24,%ebx 1791d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%eax 1792d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%ebx 1793d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 32(%esp),%edx 1794d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 36(%esp),%ebp 1795d9e397b599b13d642138480a28c14db7a136bf0Adam Langley testl %eax,%eax 1796e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L074cbc_abort 1797d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $0,40(%esp) 1798d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xchgl %esp,%ebx 1799d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%ebp),%xmm7 1800d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%ecx 1801d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %edx,%ebp 1802d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,16(%esp) 1803d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,%ebx 1804e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L075cbc_decrypt 1805d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm7,%xmm2 1806d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $16,%eax 1807e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jb L076cbc_enc_tail 1808d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $16,%eax 1809e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L077cbc_enc_loop 1810d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1811e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL077cbc_enc_loop: 1812d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm7 1813d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%esi),%esi 1814d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 1815d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 1816d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm7 1817d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 1818d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm2 1819e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL078enc1_loop_15: 1820d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,220,209 1821d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 1822d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 1823d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 1824e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L078enc1_loop_15 1825d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,221,209 1826d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 1827d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 1828d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1829d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edi),%edi 1830d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $16,%eax 1831e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnc L077cbc_enc_loop 1832d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%eax 1833e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L076cbc_enc_tail 1834d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm2,%xmm7 1835e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 1836e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L079cbc_ret 1837e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL076cbc_enc_tail: 1838d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,%ecx 1839d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2767451785 1840d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $16,%ecx 1841d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl %eax,%ecx 1842d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl %eax,%eax 1843d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2868115081 1844d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal -16(%edi),%edi 1845d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 1846d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %edi,%esi 1847d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 1848e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L077cbc_enc_loop 1849d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1850e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL075cbc_decrypt: 1851d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $80,%eax 1852e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jbe L080cbc_dec_tail 1853d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm7,(%esp) 1854d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $80,%eax 1855e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L081cbc_dec_loop6_enter 1856d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1857e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL082cbc_dec_loop6: 1858d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm0,(%esp) 1859d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm7,(%edi) 1860d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edi),%edi 1861e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL081cbc_dec_loop6_enter: 1862d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm2 1863d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%esi),%xmm3 1864d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%esi),%xmm4 1865d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%esi),%xmm5 1866d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 64(%esi),%xmm6 1867d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 80(%esi),%xmm7 1868d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt6 1869d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm1 1870d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm0 1871d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps (%esp),%xmm2 1872d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm3 1873d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm1 1874d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm4 1875d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm0 1876d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm5 1877d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 64(%esi),%xmm1 1878d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm6 1879d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 80(%esi),%xmm0 1880d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm7 1881d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1882d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1883d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 96(%esi),%esi 1884d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1885d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,%ecx 1886d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 1887d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,%edx 1888d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm6,64(%edi) 1889d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 80(%edi),%edi 1890d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $96,%eax 1891e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ja L082cbc_dec_loop6 1892d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm7,%xmm2 1893d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm0,%xmm7 1894d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $80,%eax 1895e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jle L083cbc_dec_clear_tail_collected 1896d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1897d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edi),%edi 1898e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL080cbc_dec_tail: 1899d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1900d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm2,%xmm6 1901d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $16,%eax 1902e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jbe L084cbc_dec_one 1903d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm3 1904d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm3,%xmm5 1905d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $32,%eax 1906e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jbe L085cbc_dec_two 1907d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm4 1908d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $48,%eax 1909e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jbe L086cbc_dec_three 1910d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm5 1911d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $64,%eax 1912e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jbe L087cbc_dec_four 1913d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 64(%esi),%xmm6 1914d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm7,(%esp) 1915d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm2 1916d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm7 1917d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt6 1918d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%esi),%xmm1 1919d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm0 1920d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps (%esp),%xmm2 1921d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm3 1922d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm1 1923d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm4 1924d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm0 1925d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm5 1926d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 64(%esi),%xmm7 1927d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm6 1928d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1929d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1930e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 1931d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1932e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 1933d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,48(%edi) 1934e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm5,%xmm5 1935d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 64(%edi),%edi 1936d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm6,%xmm2 1937e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm6,%xmm6 1938d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $80,%eax 1939e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L088cbc_dec_tail_collected 1940d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1941e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL084cbc_dec_one: 1942d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 1943d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%edx),%xmm1 1944d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 1945d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm2 1946e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL089dec1_loop_16: 1947d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,222,209 1948d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 1949d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm1 1950d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 1951e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L089dec1_loop_16 1952d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,223,209 1953d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm2 1954d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm6,%xmm7 1955d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $16,%eax 1956e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L088cbc_dec_tail_collected 1957d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1958e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL085cbc_dec_two: 1959d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt2 1960d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm2 1961d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1962d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1963d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm3,%xmm2 1964e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 1965d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edi),%edi 1966d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm5,%xmm7 1967d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $32,%eax 1968e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L088cbc_dec_tail_collected 1969d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1970e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL086cbc_dec_three: 1971d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt3 1972d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm2 1973d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1974d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm4 1975d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1976d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm4,%xmm2 1977e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 1978d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1979e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 1980d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edi),%edi 1981d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm7 1982d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $48,%eax 1983e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L088cbc_dec_tail_collected 1984d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 1985e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL087cbc_dec_four: 1986d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_decrypt4 1987d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%esi),%xmm1 1988d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%esi),%xmm0 1989d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm7,%xmm2 1990d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 48(%esi),%xmm7 1991d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm6,%xmm3 1992d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 1993d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm4 1994d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edi) 1995e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 1996d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm0,%xmm5 1997d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm4,32(%edi) 1998e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 1999d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 48(%edi),%edi 2000d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm5,%xmm2 2001e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm5,%xmm5 2002d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $64,%eax 2003e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L088cbc_dec_tail_collected 2004e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.align 4,0x90 2005e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL083cbc_dec_clear_tail_collected: 2006e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 2007e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 2008e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm5,%xmm5 2009e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm6,%xmm6 2010e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL088cbc_dec_tail_collected: 2011d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $15,%eax 2012e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L090cbc_dec_tail_partial 2013d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edi) 2014e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 2015e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L079cbc_ret 2016d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 2017e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL090cbc_dec_tail_partial: 2018d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm2,(%esp) 2019e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 2020d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $16,%ecx 2021d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %esp,%esi 2022d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl %eax,%ecx 2023d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2767451785 2024e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm2,(%esp) 2025e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL079cbc_ret: 2026d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 16(%esp),%esp 2027d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 36(%esp),%ebp 2028e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 2029e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 2030d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm7,(%ebp) 2031e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm7,%xmm7 2032e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL074cbc_abort: 2033d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 2034d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 2035d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 2036d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 2037d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 2038d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __aesni_set_encrypt_key 2039d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 2040d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__aesni_set_encrypt_key: 2041e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pushl %ebp 2042e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pushl %ebx 2043d9e397b599b13d642138480a28c14db7a136bf0Adam Langley testl %eax,%eax 2044e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L091bad_pointer 2045d9e397b599b13d642138480a28c14db7a136bf0Adam Langley testl %edx,%edx 2046e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L091bad_pointer 2047e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L092pic 2048e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL092pic: 2049e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley popl %ebx 2050e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley leal Lkey_const-L092pic(%ebx),%ebx 2051e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl L_OPENSSL_ia32cap_P$non_lazy_ptr-Lkey_const(%ebx),%ebp 2052d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%eax),%xmm0 2053d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm4 2054e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl 4(%ebp),%ebp 2055d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 2056e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley andl $268437504,%ebp 2057d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $256,%ecx 2058e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L09314rounds 2059d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $192,%ecx 2060e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L09412rounds 2061d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $128,%ecx 2062e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jne L095bad_keybits 2063d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 2064e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL09610rounds: 2065e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley cmpl $268435456,%ebp 2066e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L09710rounds_alt 2067d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $9,%ecx 2068d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,-16(%edx) 2069d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,1 2070e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L098key_128_cold 2071d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,2 2072e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L099key_128 2073d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,4 2074e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L099key_128 2075d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,8 2076e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L099key_128 2077d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,16 2078e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L099key_128 2079d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,32 2080e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L099key_128 2081d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,64 2082e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L099key_128 2083d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,128 2084e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L099key_128 2085d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,27 2086e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L099key_128 2087d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,54 2088e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L099key_128 2089d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,(%edx) 2090d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,80(%edx) 2091e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L100good_key 2092d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 2093e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL099key_128: 2094d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,(%edx) 2095d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 2096e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL098key_128_cold: 2097d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $16,%xmm0,%xmm4 2098d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm0 2099d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $140,%xmm0,%xmm4 2100d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm0 2101d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $255,%xmm1,%xmm1 2102d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm0 2103d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 2104d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 2105e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL09710rounds_alt: 2106e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa (%ebx),%xmm5 2107e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl $8,%ecx 2108e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa 32(%ebx),%xmm4 2109e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,%xmm2 2110e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqu %xmm0,-16(%edx) 2111e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL101loop_key128: 2112e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,0,197 2113e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,221,196 2114e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslld $1,%xmm4 2115e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley leal 16(%edx),%edx 2116e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm2,%xmm3 2117e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm2 2118e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm3 2119e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm2 2120e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm3 2121e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm2 2122e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm2 2123e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm0 2124e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqu %xmm0,-16(%edx) 2125e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,%xmm2 2126e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley decl %ecx 2127e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L101loop_key128 2128e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa 48(%ebx),%xmm4 2129e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,0,197 2130e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,221,196 2131e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslld $1,%xmm4 2132e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm2,%xmm3 2133e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm2 2134e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm3 2135e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm2 2136e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm3 2137e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm2 2138e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm2 2139e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm0 2140e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqu %xmm0,(%edx) 2141e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,%xmm2 2142e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,0,197 2143e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,221,196 2144e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm2,%xmm3 2145e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm2 2146e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm3 2147e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm2 2148e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm3 2149e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm2 2150e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm2 2151e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm0 2152e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqu %xmm0,16(%edx) 2153e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl $9,%ecx 2154e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl %ecx,96(%edx) 2155e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L100good_key 2156e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.align 4,0x90 2157e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL09412rounds: 2158d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%eax),%xmm2 2159e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley cmpl $268435456,%ebp 2160e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L10212rounds_alt 2161d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $11,%ecx 2162d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,-16(%edx) 2163d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,1 2164e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L103key_192a_cold 2165d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,2 2166e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L104key_192b 2167d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,4 2168e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L105key_192a 2169d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,8 2170e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L104key_192b 2171d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,16 2172e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L105key_192a 2173d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,32 2174e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L104key_192b 2175d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,64 2176e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L105key_192a 2177d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,128 2178e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L104key_192b 2179d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,(%edx) 2180d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,48(%edx) 2181e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L100good_key 2182d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 2183e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL105key_192a: 2184d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,(%edx) 2185d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 2186d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 2187e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL103key_192a_cold: 2188d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm2,%xmm5 2189e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL106key_192b_warm: 2190d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $16,%xmm0,%xmm4 2191d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm2,%xmm3 2192d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm0 2193d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $140,%xmm0,%xmm4 2194d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $4,%xmm3 2195d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm0 2196d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $85,%xmm1,%xmm1 2197d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm2 2198d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 2199d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $255,%xmm0,%xmm3 2200d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm2 2201d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 2202d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 2203e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL104key_192b: 2204d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movaps %xmm0,%xmm3 2205d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $68,%xmm0,%xmm5 2206d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm5,(%edx) 2207d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $78,%xmm2,%xmm3 2208d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm3,16(%edx) 2209d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 32(%edx),%edx 2210e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L106key_192b_warm 2211d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 2212e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL10212rounds_alt: 2213e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa 16(%ebx),%xmm5 2214e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa 32(%ebx),%xmm4 2215e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl $8,%ecx 2216e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqu %xmm0,-16(%edx) 2217e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL107loop_key192: 2218e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movq %xmm2,(%edx) 2219e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm2,%xmm1 2220e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,0,213 2221e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,221,212 2222e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslld $1,%xmm4 2223e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley leal 24(%edx),%edx 2224e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,%xmm3 2225e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm0 2226e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm3 2227e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm0 2228e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm3 2229e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm0 2230e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm0 2231e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pshufd $255,%xmm0,%xmm3 2232e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm3 2233e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm1 2234e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm3 2235e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm0 2236e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm2 2237e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqu %xmm0,-16(%edx) 2238e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley decl %ecx 2239e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L107loop_key192 2240e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl $11,%ecx 2241e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl %ecx,32(%edx) 2242e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L100good_key 2243e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.align 4,0x90 2244e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL09314rounds: 2245d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 16(%eax),%xmm2 2246d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 2247e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley cmpl $268435456,%ebp 2248e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley je L10814rounds_alt 2249e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl $13,%ecx 2250d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,-32(%edx) 2251d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,-16(%edx) 2252d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,1 2253e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L109key_256a_cold 2254d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,1 2255e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L110key_256b 2256d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,2 2257e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L111key_256a 2258d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,2 2259e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L110key_256b 2260d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,4 2261e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L111key_256a 2262d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,4 2263e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L110key_256b 2264d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,8 2265e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L111key_256a 2266d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,8 2267e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L110key_256b 2268d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,16 2269e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L111key_256a 2270d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,16 2271e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L110key_256b 2272d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,32 2273e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L111key_256a 2274d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,200,32 2275e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L110key_256b 2276d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,223,202,64 2277e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley call L111key_256a 2278d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,(%edx) 2279d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ecx,16(%edx) 2280d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl %eax,%eax 2281e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L100good_key 2282d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 2283e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL111key_256a: 2284d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm2,(%edx) 2285d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 2286e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL109key_256a_cold: 2287d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $16,%xmm0,%xmm4 2288d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm0 2289d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $140,%xmm0,%xmm4 2290d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm0 2291d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $255,%xmm1,%xmm1 2292d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm0 2293d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 2294d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 2295e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL110key_256b: 2296d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,(%edx) 2297d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 2298d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $16,%xmm2,%xmm4 2299d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm2 2300d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $140,%xmm2,%xmm4 2301d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm2 2302d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shufps $170,%xmm1,%xmm1 2303d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm1,%xmm2 2304d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 2305e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.align 4,0x90 2306e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL10814rounds_alt: 2307e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa (%ebx),%xmm5 2308e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa 32(%ebx),%xmm4 2309e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl $7,%ecx 2310e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqu %xmm0,-32(%edx) 2311e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm2,%xmm1 2312e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqu %xmm2,-16(%edx) 2313e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL112loop_key256: 2314e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,0,213 2315e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,221,212 2316e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm0,%xmm3 2317e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm0 2318e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm3 2319e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm0 2320e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm3 2321e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm0 2322e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm0 2323e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslld $1,%xmm4 2324e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm0 2325e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqu %xmm0,(%edx) 2326e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley decl %ecx 2327e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jz L113done_key256 2328e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pshufd $255,%xmm0,%xmm2 2329e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 2330e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte 102,15,56,221,211 2331e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm1,%xmm3 2332e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm1 2333e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm3 2334e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm1 2335e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm3 2336e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pslldq $4,%xmm1 2337e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm1 2338e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm2 2339e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqu %xmm2,16(%edx) 2340e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley leal 32(%edx),%edx 2341e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movdqa %xmm2,%xmm1 2342e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jmp L112loop_key256 2343e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL113done_key256: 2344e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl $13,%ecx 2345e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley movl %ecx,16(%edx) 2346e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL100good_key: 2347e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 2348e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 2349e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm2,%xmm2 2350e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm3,%xmm3 2351e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm4,%xmm4 2352e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm5,%xmm5 2353e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xorl %eax,%eax 2354e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley popl %ebx 2355e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley popl %ebp 2356e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ret 2357d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 2,0x90 2358e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL091bad_pointer: 2359d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $-1,%eax 2360e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley popl %ebx 2361e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley popl %ebp 2362d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 2363d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 2,0x90 2364e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL095bad_keybits: 2365e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 2366d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $-2,%eax 2367e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley popl %ebx 2368e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley popl %ebp 2369d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 2370d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_set_encrypt_key 2371d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_set_encrypt_key 2372d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 2373d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_set_encrypt_key: 2374d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_set_encrypt_key_begin: 2375d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 4(%esp),%eax 2376d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 8(%esp),%ecx 2377d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 12(%esp),%edx 2378d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_set_encrypt_key 2379d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 2380d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _aesni_set_decrypt_key 2381d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _aesni_set_decrypt_key 2382d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 2383d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_aesni_set_decrypt_key: 2384d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_aesni_set_decrypt_key_begin: 2385d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 4(%esp),%eax 2386d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 8(%esp),%ecx 2387d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 12(%esp),%edx 2388d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __aesni_set_encrypt_key 2389d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 12(%esp),%edx 2390d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 2391d9e397b599b13d642138480a28c14db7a136bf0Adam Langley testl %eax,%eax 2392e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley jnz L114dec_key_ret 2393d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx,%ecx,1),%eax 2394d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 2395d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%eax),%xmm1 2396d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,(%eax) 2397d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm1,(%edx) 2398d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 2399d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal -16(%eax),%eax 2400e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL115dec_key_inverse: 2401d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 2402d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%eax),%xmm1 2403d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,219,192 2404d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,219,201 2405d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx),%edx 2406d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal -16(%eax),%eax 2407d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,16(%eax) 2408d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm1,-16(%edx) 2409d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl %edx,%eax 2410e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ja L115dec_key_inverse 2411d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups (%edx),%xmm0 2412d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,219,192 2413d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups %xmm0,(%edx) 2414e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm0,%xmm0 2415e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pxor %xmm1,%xmm1 2416d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl %eax,%eax 2417e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL114dec_key_ret: 2418d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 2419e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.align 6,0x90 2420e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyLkey_const: 2421e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.long 202313229,202313229,202313229,202313229 2422e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.long 67569157,67569157,67569157,67569157 2423e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.long 1,1,1,1 2424e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.long 27,27,27,27 2425d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 2426d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 2427d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 2428d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 115,108,46,111,114,103,62,0 2429e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.section __IMPORT,__pointers,non_lazy_symbol_pointers 2430e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL_OPENSSL_ia32cap_P$non_lazy_ptr: 2431e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.indirect_symbol _OPENSSL_ia32cap_P 2432e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.long 0 2433d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif 2434