1; This file is generated from a similarly-named Perl script in the BoringSSL 2; source tree. Do not edit by hand. 3 4%ifdef BORINGSSL_PREFIX 5%include "boringssl_prefix_symbols_nasm.inc" 6%endif 7%ifidn __OUTPUT_FORMAT__,obj 8section code use32 class=code align=64 9%elifidn __OUTPUT_FORMAT__,win32 10$@feat.00 equ 1 11section .text code align=64 12%else 13section .text code 14%endif 15global _gcm_init_clmul 16align 16 17_gcm_init_clmul: 18L$_gcm_init_clmul_begin: 19 mov edx,DWORD [4+esp] 20 mov eax,DWORD [8+esp] 21 call L$000pic 22L$000pic: 23 pop ecx 24 lea ecx,[(L$bswap-L$000pic)+ecx] 25 movdqu xmm2,[eax] 26 pshufd xmm2,xmm2,78 27 pshufd xmm4,xmm2,255 28 movdqa xmm3,xmm2 29 psllq xmm2,1 30 pxor xmm5,xmm5 31 psrlq xmm3,63 32 pcmpgtd xmm5,xmm4 33 pslldq xmm3,8 34 por xmm2,xmm3 35 pand xmm5,[16+ecx] 36 pxor xmm2,xmm5 37 movdqa xmm0,xmm2 38 movdqa xmm1,xmm0 39 pshufd xmm3,xmm0,78 40 pshufd xmm4,xmm2,78 41 pxor xmm3,xmm0 42 pxor xmm4,xmm2 43db 102,15,58,68,194,0 44db 102,15,58,68,202,17 45db 102,15,58,68,220,0 46 xorps xmm3,xmm0 47 xorps xmm3,xmm1 48 movdqa xmm4,xmm3 49 psrldq xmm3,8 50 pslldq xmm4,8 51 pxor xmm1,xmm3 52 pxor xmm0,xmm4 53 movdqa xmm4,xmm0 54 movdqa xmm3,xmm0 55 psllq xmm0,5 56 pxor xmm3,xmm0 57 psllq xmm0,1 58 pxor xmm0,xmm3 59 psllq xmm0,57 60 movdqa xmm3,xmm0 61 pslldq xmm0,8 62 psrldq xmm3,8 63 pxor xmm0,xmm4 64 pxor xmm1,xmm3 65 movdqa xmm4,xmm0 66 psrlq xmm0,1 67 pxor xmm1,xmm4 68 pxor xmm4,xmm0 69 psrlq xmm0,5 70 pxor xmm0,xmm4 71 psrlq xmm0,1 72 pxor xmm0,xmm1 73 pshufd xmm3,xmm2,78 74 pshufd xmm4,xmm0,78 75 pxor xmm3,xmm2 76 movdqu [edx],xmm2 77 pxor xmm4,xmm0 78 movdqu [16+edx],xmm0 79db 102,15,58,15,227,8 80 movdqu [32+edx],xmm4 81 ret 82global _gcm_gmult_clmul 83align 16 84_gcm_gmult_clmul: 85L$_gcm_gmult_clmul_begin: 86 mov eax,DWORD [4+esp] 87 mov edx,DWORD [8+esp] 88 call L$001pic 89L$001pic: 90 pop ecx 91 lea ecx,[(L$bswap-L$001pic)+ecx] 92 movdqu xmm0,[eax] 93 movdqa xmm5,[ecx] 94 movups xmm2,[edx] 95db 102,15,56,0,197 96 movups xmm4,[32+edx] 97 movdqa xmm1,xmm0 98 pshufd xmm3,xmm0,78 99 pxor xmm3,xmm0 100db 102,15,58,68,194,0 101db 102,15,58,68,202,17 102db 102,15,58,68,220,0 103 xorps xmm3,xmm0 104 xorps xmm3,xmm1 105 movdqa xmm4,xmm3 106 psrldq xmm3,8 107 pslldq xmm4,8 108 pxor xmm1,xmm3 109 pxor xmm0,xmm4 110 movdqa xmm4,xmm0 111 movdqa xmm3,xmm0 112 psllq xmm0,5 113 pxor xmm3,xmm0 114 psllq xmm0,1 115 pxor xmm0,xmm3 116 psllq xmm0,57 117 movdqa xmm3,xmm0 118 pslldq xmm0,8 119 psrldq xmm3,8 120 pxor xmm0,xmm4 121 pxor xmm1,xmm3 122 movdqa xmm4,xmm0 123 psrlq xmm0,1 124 pxor xmm1,xmm4 125 pxor xmm4,xmm0 126 psrlq xmm0,5 127 pxor xmm0,xmm4 128 psrlq xmm0,1 129 pxor xmm0,xmm1 130db 102,15,56,0,197 131 movdqu [eax],xmm0 132 ret 133global _gcm_ghash_clmul 134align 16 135_gcm_ghash_clmul: 136L$_gcm_ghash_clmul_begin: 137 push ebp 138 push ebx 139 push esi 140 push edi 141 mov eax,DWORD [20+esp] 142 mov edx,DWORD [24+esp] 143 mov esi,DWORD [28+esp] 144 mov ebx,DWORD [32+esp] 145 call L$002pic 146L$002pic: 147 pop ecx 148 lea ecx,[(L$bswap-L$002pic)+ecx] 149 movdqu xmm0,[eax] 150 movdqa xmm5,[ecx] 151 movdqu xmm2,[edx] 152db 102,15,56,0,197 153 sub ebx,16 154 jz NEAR L$003odd_tail 155 movdqu xmm3,[esi] 156 movdqu xmm6,[16+esi] 157db 102,15,56,0,221 158db 102,15,56,0,245 159 movdqu xmm5,[32+edx] 160 pxor xmm0,xmm3 161 pshufd xmm3,xmm6,78 162 movdqa xmm7,xmm6 163 pxor xmm3,xmm6 164 lea esi,[32+esi] 165db 102,15,58,68,242,0 166db 102,15,58,68,250,17 167db 102,15,58,68,221,0 168 movups xmm2,[16+edx] 169 nop 170 sub ebx,32 171 jbe NEAR L$004even_tail 172 jmp NEAR L$005mod_loop 173align 32 174L$005mod_loop: 175 pshufd xmm4,xmm0,78 176 movdqa xmm1,xmm0 177 pxor xmm4,xmm0 178 nop 179db 102,15,58,68,194,0 180db 102,15,58,68,202,17 181db 102,15,58,68,229,16 182 movups xmm2,[edx] 183 xorps xmm0,xmm6 184 movdqa xmm5,[ecx] 185 xorps xmm1,xmm7 186 movdqu xmm7,[esi] 187 pxor xmm3,xmm0 188 movdqu xmm6,[16+esi] 189 pxor xmm3,xmm1 190db 102,15,56,0,253 191 pxor xmm4,xmm3 192 movdqa xmm3,xmm4 193 psrldq xmm4,8 194 pslldq xmm3,8 195 pxor xmm1,xmm4 196 pxor xmm0,xmm3 197db 102,15,56,0,245 198 pxor xmm1,xmm7 199 movdqa xmm7,xmm6 200 movdqa xmm4,xmm0 201 movdqa xmm3,xmm0 202 psllq xmm0,5 203 pxor xmm3,xmm0 204 psllq xmm0,1 205 pxor xmm0,xmm3 206db 102,15,58,68,242,0 207 movups xmm5,[32+edx] 208 psllq xmm0,57 209 movdqa xmm3,xmm0 210 pslldq xmm0,8 211 psrldq xmm3,8 212 pxor xmm0,xmm4 213 pxor xmm1,xmm3 214 pshufd xmm3,xmm7,78 215 movdqa xmm4,xmm0 216 psrlq xmm0,1 217 pxor xmm3,xmm7 218 pxor xmm1,xmm4 219db 102,15,58,68,250,17 220 movups xmm2,[16+edx] 221 pxor xmm4,xmm0 222 psrlq xmm0,5 223 pxor xmm0,xmm4 224 psrlq xmm0,1 225 pxor xmm0,xmm1 226db 102,15,58,68,221,0 227 lea esi,[32+esi] 228 sub ebx,32 229 ja NEAR L$005mod_loop 230L$004even_tail: 231 pshufd xmm4,xmm0,78 232 movdqa xmm1,xmm0 233 pxor xmm4,xmm0 234db 102,15,58,68,194,0 235db 102,15,58,68,202,17 236db 102,15,58,68,229,16 237 movdqa xmm5,[ecx] 238 xorps xmm0,xmm6 239 xorps xmm1,xmm7 240 pxor xmm3,xmm0 241 pxor xmm3,xmm1 242 pxor xmm4,xmm3 243 movdqa xmm3,xmm4 244 psrldq xmm4,8 245 pslldq xmm3,8 246 pxor xmm1,xmm4 247 pxor xmm0,xmm3 248 movdqa xmm4,xmm0 249 movdqa xmm3,xmm0 250 psllq xmm0,5 251 pxor xmm3,xmm0 252 psllq xmm0,1 253 pxor xmm0,xmm3 254 psllq xmm0,57 255 movdqa xmm3,xmm0 256 pslldq xmm0,8 257 psrldq xmm3,8 258 pxor xmm0,xmm4 259 pxor xmm1,xmm3 260 movdqa xmm4,xmm0 261 psrlq xmm0,1 262 pxor xmm1,xmm4 263 pxor xmm4,xmm0 264 psrlq xmm0,5 265 pxor xmm0,xmm4 266 psrlq xmm0,1 267 pxor xmm0,xmm1 268 test ebx,ebx 269 jnz NEAR L$006done 270 movups xmm2,[edx] 271L$003odd_tail: 272 movdqu xmm3,[esi] 273db 102,15,56,0,221 274 pxor xmm0,xmm3 275 movdqa xmm1,xmm0 276 pshufd xmm3,xmm0,78 277 pshufd xmm4,xmm2,78 278 pxor xmm3,xmm0 279 pxor xmm4,xmm2 280db 102,15,58,68,194,0 281db 102,15,58,68,202,17 282db 102,15,58,68,220,0 283 xorps xmm3,xmm0 284 xorps xmm3,xmm1 285 movdqa xmm4,xmm3 286 psrldq xmm3,8 287 pslldq xmm4,8 288 pxor xmm1,xmm3 289 pxor xmm0,xmm4 290 movdqa xmm4,xmm0 291 movdqa xmm3,xmm0 292 psllq xmm0,5 293 pxor xmm3,xmm0 294 psllq xmm0,1 295 pxor xmm0,xmm3 296 psllq xmm0,57 297 movdqa xmm3,xmm0 298 pslldq xmm0,8 299 psrldq xmm3,8 300 pxor xmm0,xmm4 301 pxor xmm1,xmm3 302 movdqa xmm4,xmm0 303 psrlq xmm0,1 304 pxor xmm1,xmm4 305 pxor xmm4,xmm0 306 psrlq xmm0,5 307 pxor xmm0,xmm4 308 psrlq xmm0,1 309 pxor xmm0,xmm1 310L$006done: 311db 102,15,56,0,197 312 movdqu [eax],xmm0 313 pop edi 314 pop esi 315 pop ebx 316 pop ebp 317 ret 318align 64 319L$bswap: 320db 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 321db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 322db 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 323db 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 324db 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 325db 0 326