1; This file is generated from a similarly-named Perl script in the BoringSSL 2; source tree. Do not edit by hand. 3 4%include "ring_core_generated/prefix_symbols_nasm.inc" 5%ifidn __OUTPUT_FORMAT__,obj 6section code use32 class=code align=64 7%elifidn __OUTPUT_FORMAT__,win32 8$@feat.00 equ 1 9section .text code align=64 10%else 11section .text code 12%endif 13global _gcm_init_clmul 14align 16 15_gcm_init_clmul: 16L$_gcm_init_clmul_begin: 17 mov edx,DWORD [4+esp] 18 mov eax,DWORD [8+esp] 19 call L$000pic 20L$000pic: 21 pop ecx 22 lea ecx,[(L$bswap-L$000pic)+ecx] 23 movdqu xmm2,[eax] 24 pshufd xmm2,xmm2,78 25 pshufd xmm4,xmm2,255 26 movdqa xmm3,xmm2 27 psllq xmm2,1 28 pxor xmm5,xmm5 29 psrlq xmm3,63 30 pcmpgtd xmm5,xmm4 31 pslldq xmm3,8 32 por xmm2,xmm3 33 pand xmm5,[16+ecx] 34 pxor xmm2,xmm5 35 movdqa xmm0,xmm2 36 movdqa xmm1,xmm0 37 pshufd xmm3,xmm0,78 38 pshufd xmm4,xmm2,78 39 pxor xmm3,xmm0 40 pxor xmm4,xmm2 41db 102,15,58,68,194,0 42db 102,15,58,68,202,17 43db 102,15,58,68,220,0 44 xorps xmm3,xmm0 45 xorps xmm3,xmm1 46 movdqa xmm4,xmm3 47 psrldq xmm3,8 48 pslldq xmm4,8 49 pxor xmm1,xmm3 50 pxor xmm0,xmm4 51 movdqa xmm4,xmm0 52 movdqa xmm3,xmm0 53 psllq xmm0,5 54 pxor xmm3,xmm0 55 psllq xmm0,1 56 pxor xmm0,xmm3 57 psllq xmm0,57 58 movdqa xmm3,xmm0 59 pslldq xmm0,8 60 psrldq xmm3,8 61 pxor xmm0,xmm4 62 pxor xmm1,xmm3 63 movdqa xmm4,xmm0 64 psrlq xmm0,1 65 pxor xmm1,xmm4 66 pxor xmm4,xmm0 67 psrlq xmm0,5 68 pxor xmm0,xmm4 69 psrlq xmm0,1 70 pxor xmm0,xmm1 71 pshufd xmm3,xmm2,78 72 pshufd xmm4,xmm0,78 73 pxor xmm3,xmm2 74 movdqu [edx],xmm2 75 pxor xmm4,xmm0 76 movdqu [16+edx],xmm0 77db 102,15,58,15,227,8 78 movdqu [32+edx],xmm4 79 ret 80global _gcm_gmult_clmul 81align 16 82_gcm_gmult_clmul: 83L$_gcm_gmult_clmul_begin: 84 mov eax,DWORD [4+esp] 85 mov edx,DWORD [8+esp] 86 call L$001pic 87L$001pic: 88 pop ecx 89 lea ecx,[(L$bswap-L$001pic)+ecx] 90 movdqu xmm0,[eax] 91 movdqa xmm5,[ecx] 92 movups xmm2,[edx] 93db 102,15,56,0,197 94 movups xmm4,[32+edx] 95 movdqa xmm1,xmm0 96 pshufd xmm3,xmm0,78 97 pxor xmm3,xmm0 98db 102,15,58,68,194,0 99db 102,15,58,68,202,17 100db 102,15,58,68,220,0 101 xorps xmm3,xmm0 102 xorps xmm3,xmm1 103 movdqa xmm4,xmm3 104 psrldq xmm3,8 105 pslldq xmm4,8 106 pxor xmm1,xmm3 107 pxor xmm0,xmm4 108 movdqa xmm4,xmm0 109 movdqa xmm3,xmm0 110 psllq xmm0,5 111 pxor xmm3,xmm0 112 psllq xmm0,1 113 pxor xmm0,xmm3 114 psllq xmm0,57 115 movdqa xmm3,xmm0 116 pslldq xmm0,8 117 psrldq xmm3,8 118 pxor xmm0,xmm4 119 pxor xmm1,xmm3 120 movdqa xmm4,xmm0 121 psrlq xmm0,1 122 pxor xmm1,xmm4 123 pxor xmm4,xmm0 124 psrlq xmm0,5 125 pxor xmm0,xmm4 126 psrlq xmm0,1 127 pxor xmm0,xmm1 128db 102,15,56,0,197 129 movdqu [eax],xmm0 130 ret 131global _gcm_ghash_clmul 132align 16 133_gcm_ghash_clmul: 134L$_gcm_ghash_clmul_begin: 135 push ebp 136 push ebx 137 push esi 138 push edi 139 mov eax,DWORD [20+esp] 140 mov edx,DWORD [24+esp] 141 mov esi,DWORD [28+esp] 142 mov ebx,DWORD [32+esp] 143 call L$002pic 144L$002pic: 145 pop ecx 146 lea ecx,[(L$bswap-L$002pic)+ecx] 147 movdqu xmm0,[eax] 148 movdqa xmm5,[ecx] 149 movdqu xmm2,[edx] 150db 102,15,56,0,197 151 sub ebx,16 152 jz NEAR L$003odd_tail 153 movdqu xmm3,[esi] 154 movdqu xmm6,[16+esi] 155db 102,15,56,0,221 156db 102,15,56,0,245 157 movdqu xmm5,[32+edx] 158 pxor xmm0,xmm3 159 pshufd xmm3,xmm6,78 160 movdqa xmm7,xmm6 161 pxor xmm3,xmm6 162 lea esi,[32+esi] 163db 102,15,58,68,242,0 164db 102,15,58,68,250,17 165db 102,15,58,68,221,0 166 movups xmm2,[16+edx] 167 nop 168 sub ebx,32 169 jbe NEAR L$004even_tail 170 jmp NEAR L$005mod_loop 171align 32 172L$005mod_loop: 173 pshufd xmm4,xmm0,78 174 movdqa xmm1,xmm0 175 pxor xmm4,xmm0 176 nop 177db 102,15,58,68,194,0 178db 102,15,58,68,202,17 179db 102,15,58,68,229,16 180 movups xmm2,[edx] 181 xorps xmm0,xmm6 182 movdqa xmm5,[ecx] 183 xorps xmm1,xmm7 184 movdqu xmm7,[esi] 185 pxor xmm3,xmm0 186 movdqu xmm6,[16+esi] 187 pxor xmm3,xmm1 188db 102,15,56,0,253 189 pxor xmm4,xmm3 190 movdqa xmm3,xmm4 191 psrldq xmm4,8 192 pslldq xmm3,8 193 pxor xmm1,xmm4 194 pxor xmm0,xmm3 195db 102,15,56,0,245 196 pxor xmm1,xmm7 197 movdqa xmm7,xmm6 198 movdqa xmm4,xmm0 199 movdqa xmm3,xmm0 200 psllq xmm0,5 201 pxor xmm3,xmm0 202 psllq xmm0,1 203 pxor xmm0,xmm3 204db 102,15,58,68,242,0 205 movups xmm5,[32+edx] 206 psllq xmm0,57 207 movdqa xmm3,xmm0 208 pslldq xmm0,8 209 psrldq xmm3,8 210 pxor xmm0,xmm4 211 pxor xmm1,xmm3 212 pshufd xmm3,xmm7,78 213 movdqa xmm4,xmm0 214 psrlq xmm0,1 215 pxor xmm3,xmm7 216 pxor xmm1,xmm4 217db 102,15,58,68,250,17 218 movups xmm2,[16+edx] 219 pxor xmm4,xmm0 220 psrlq xmm0,5 221 pxor xmm0,xmm4 222 psrlq xmm0,1 223 pxor xmm0,xmm1 224db 102,15,58,68,221,0 225 lea esi,[32+esi] 226 sub ebx,32 227 ja NEAR L$005mod_loop 228L$004even_tail: 229 pshufd xmm4,xmm0,78 230 movdqa xmm1,xmm0 231 pxor xmm4,xmm0 232db 102,15,58,68,194,0 233db 102,15,58,68,202,17 234db 102,15,58,68,229,16 235 movdqa xmm5,[ecx] 236 xorps xmm0,xmm6 237 xorps xmm1,xmm7 238 pxor xmm3,xmm0 239 pxor xmm3,xmm1 240 pxor xmm4,xmm3 241 movdqa xmm3,xmm4 242 psrldq xmm4,8 243 pslldq xmm3,8 244 pxor xmm1,xmm4 245 pxor xmm0,xmm3 246 movdqa xmm4,xmm0 247 movdqa xmm3,xmm0 248 psllq xmm0,5 249 pxor xmm3,xmm0 250 psllq xmm0,1 251 pxor xmm0,xmm3 252 psllq xmm0,57 253 movdqa xmm3,xmm0 254 pslldq xmm0,8 255 psrldq xmm3,8 256 pxor xmm0,xmm4 257 pxor xmm1,xmm3 258 movdqa xmm4,xmm0 259 psrlq xmm0,1 260 pxor xmm1,xmm4 261 pxor xmm4,xmm0 262 psrlq xmm0,5 263 pxor xmm0,xmm4 264 psrlq xmm0,1 265 pxor xmm0,xmm1 266 test ebx,ebx 267 jnz NEAR L$006done 268 movups xmm2,[edx] 269L$003odd_tail: 270 movdqu xmm3,[esi] 271db 102,15,56,0,221 272 pxor xmm0,xmm3 273 movdqa xmm1,xmm0 274 pshufd xmm3,xmm0,78 275 pshufd xmm4,xmm2,78 276 pxor xmm3,xmm0 277 pxor xmm4,xmm2 278db 102,15,58,68,194,0 279db 102,15,58,68,202,17 280db 102,15,58,68,220,0 281 xorps xmm3,xmm0 282 xorps xmm3,xmm1 283 movdqa xmm4,xmm3 284 psrldq xmm3,8 285 pslldq xmm4,8 286 pxor xmm1,xmm3 287 pxor xmm0,xmm4 288 movdqa xmm4,xmm0 289 movdqa xmm3,xmm0 290 psllq xmm0,5 291 pxor xmm3,xmm0 292 psllq xmm0,1 293 pxor xmm0,xmm3 294 psllq xmm0,57 295 movdqa xmm3,xmm0 296 pslldq xmm0,8 297 psrldq xmm3,8 298 pxor xmm0,xmm4 299 pxor xmm1,xmm3 300 movdqa xmm4,xmm0 301 psrlq xmm0,1 302 pxor xmm1,xmm4 303 pxor xmm4,xmm0 304 psrlq xmm0,5 305 pxor xmm0,xmm4 306 psrlq xmm0,1 307 pxor xmm0,xmm1 308L$006done: 309db 102,15,56,0,197 310 movdqu [eax],xmm0 311 pop edi 312 pop esi 313 pop ebx 314 pop ebp 315 ret 316align 64 317L$bswap: 318db 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 319db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 320align 64 321L$007rem_8bit: 322dw 0,450,900,582,1800,1738,1164,1358 323dw 3600,4050,3476,3158,2328,2266,2716,2910 324dw 7200,7650,8100,7782,6952,6890,6316,6510 325dw 4656,5106,4532,4214,5432,5370,5820,6014 326dw 14400,14722,15300,14854,16200,16010,15564,15630 327dw 13904,14226,13780,13334,12632,12442,13020,13086 328dw 9312,9634,10212,9766,9064,8874,8428,8494 329dw 10864,11186,10740,10294,11640,11450,12028,12094 330dw 28800,28994,29444,29382,30600,30282,29708,30158 331dw 32400,32594,32020,31958,31128,30810,31260,31710 332dw 27808,28002,28452,28390,27560,27242,26668,27118 333dw 25264,25458,24884,24822,26040,25722,26172,26622 334dw 18624,18690,19268,19078,20424,19978,19532,19854 335dw 18128,18194,17748,17558,16856,16410,16988,17310 336dw 21728,21794,22372,22182,21480,21034,20588,20910 337dw 23280,23346,22900,22710,24056,23610,24188,24510 338dw 57600,57538,57988,58182,58888,59338,58764,58446 339dw 61200,61138,60564,60758,59416,59866,60316,59998 340dw 64800,64738,65188,65382,64040,64490,63916,63598 341dw 62256,62194,61620,61814,62520,62970,63420,63102 342dw 55616,55426,56004,56070,56904,57226,56780,56334 343dw 55120,54930,54484,54550,53336,53658,54236,53790 344dw 50528,50338,50916,50982,49768,50090,49644,49198 345dw 52080,51890,51444,51510,52344,52666,53244,52798 346dw 37248,36930,37380,37830,38536,38730,38156,38094 347dw 40848,40530,39956,40406,39064,39258,39708,39646 348dw 36256,35938,36388,36838,35496,35690,35116,35054 349dw 33712,33394,32820,33270,33976,34170,34620,34558 350dw 43456,43010,43588,43910,44744,44810,44364,44174 351dw 42960,42514,42068,42390,41176,41242,41820,41630 352dw 46560,46114,46692,47014,45800,45866,45420,45230 353dw 48112,47666,47220,47542,48376,48442,49020,48830 354db 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 355db 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 356db 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 357db 0 358