1*8fb009dcSAndroid Build Coastguard Worker; This file is generated from a similarly-named Perl script in the BoringSSL 2*8fb009dcSAndroid Build Coastguard Worker; source tree. Do not edit by hand. 3*8fb009dcSAndroid Build Coastguard Worker 4*8fb009dcSAndroid Build Coastguard Worker%ifdef BORINGSSL_PREFIX 5*8fb009dcSAndroid Build Coastguard Worker%include "boringssl_prefix_symbols_nasm.inc" 6*8fb009dcSAndroid Build Coastguard Worker%endif 7*8fb009dcSAndroid Build Coastguard Worker%ifidn __OUTPUT_FORMAT__, win32 8*8fb009dcSAndroid Build Coastguard Worker%ifidn __OUTPUT_FORMAT__,obj 9*8fb009dcSAndroid Build Coastguard Workersection code use32 class=code align=64 10*8fb009dcSAndroid Build Coastguard Worker%elifidn __OUTPUT_FORMAT__,win32 11*8fb009dcSAndroid Build Coastguard Worker$@feat.00 equ 1 12*8fb009dcSAndroid Build Coastguard Workersection .text code align=64 13*8fb009dcSAndroid Build Coastguard Worker%else 14*8fb009dcSAndroid Build Coastguard Workersection .text code 15*8fb009dcSAndroid Build Coastguard Worker%endif 16*8fb009dcSAndroid Build Coastguard Workerglobal _bn_mul_add_words 17*8fb009dcSAndroid Build Coastguard Workeralign 16 18*8fb009dcSAndroid Build Coastguard Worker_bn_mul_add_words: 19*8fb009dcSAndroid Build Coastguard WorkerL$_bn_mul_add_words_begin: 20*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esp] 21*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+esp] 22*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [12+esp] 23*8fb009dcSAndroid Build Coastguard Worker movd mm0,DWORD [16+esp] 24*8fb009dcSAndroid Build Coastguard Worker pxor mm1,mm1 25*8fb009dcSAndroid Build Coastguard Worker jmp NEAR L$000maw_sse2_entry 26*8fb009dcSAndroid Build Coastguard Workeralign 16 27*8fb009dcSAndroid Build Coastguard WorkerL$001maw_sse2_unrolled: 28*8fb009dcSAndroid Build Coastguard Worker movd mm3,DWORD [eax] 29*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm3 30*8fb009dcSAndroid Build Coastguard Worker movd mm2,DWORD [edx] 31*8fb009dcSAndroid Build Coastguard Worker pmuludq mm2,mm0 32*8fb009dcSAndroid Build Coastguard Worker movd mm4,DWORD [4+edx] 33*8fb009dcSAndroid Build Coastguard Worker pmuludq mm4,mm0 34*8fb009dcSAndroid Build Coastguard Worker movd mm6,DWORD [8+edx] 35*8fb009dcSAndroid Build Coastguard Worker pmuludq mm6,mm0 36*8fb009dcSAndroid Build Coastguard Worker movd mm7,DWORD [12+edx] 37*8fb009dcSAndroid Build Coastguard Worker pmuludq mm7,mm0 38*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm2 39*8fb009dcSAndroid Build Coastguard Worker movd mm3,DWORD [4+eax] 40*8fb009dcSAndroid Build Coastguard Worker paddq mm3,mm4 41*8fb009dcSAndroid Build Coastguard Worker movd mm5,DWORD [8+eax] 42*8fb009dcSAndroid Build Coastguard Worker paddq mm5,mm6 43*8fb009dcSAndroid Build Coastguard Worker movd mm4,DWORD [12+eax] 44*8fb009dcSAndroid Build Coastguard Worker paddq mm7,mm4 45*8fb009dcSAndroid Build Coastguard Worker movd DWORD [eax],mm1 46*8fb009dcSAndroid Build Coastguard Worker movd mm2,DWORD [16+edx] 47*8fb009dcSAndroid Build Coastguard Worker pmuludq mm2,mm0 48*8fb009dcSAndroid Build Coastguard Worker psrlq mm1,32 49*8fb009dcSAndroid Build Coastguard Worker movd mm4,DWORD [20+edx] 50*8fb009dcSAndroid Build Coastguard Worker pmuludq mm4,mm0 51*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm3 52*8fb009dcSAndroid Build Coastguard Worker movd mm6,DWORD [24+edx] 53*8fb009dcSAndroid Build Coastguard Worker pmuludq mm6,mm0 54*8fb009dcSAndroid Build Coastguard Worker movd DWORD [4+eax],mm1 55*8fb009dcSAndroid Build Coastguard Worker psrlq mm1,32 56*8fb009dcSAndroid Build Coastguard Worker movd mm3,DWORD [28+edx] 57*8fb009dcSAndroid Build Coastguard Worker add edx,32 58*8fb009dcSAndroid Build Coastguard Worker pmuludq mm3,mm0 59*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm5 60*8fb009dcSAndroid Build Coastguard Worker movd mm5,DWORD [16+eax] 61*8fb009dcSAndroid Build Coastguard Worker paddq mm2,mm5 62*8fb009dcSAndroid Build Coastguard Worker movd DWORD [8+eax],mm1 63*8fb009dcSAndroid Build Coastguard Worker psrlq mm1,32 64*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm7 65*8fb009dcSAndroid Build Coastguard Worker movd mm5,DWORD [20+eax] 66*8fb009dcSAndroid Build Coastguard Worker paddq mm4,mm5 67*8fb009dcSAndroid Build Coastguard Worker movd DWORD [12+eax],mm1 68*8fb009dcSAndroid Build Coastguard Worker psrlq mm1,32 69*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm2 70*8fb009dcSAndroid Build Coastguard Worker movd mm5,DWORD [24+eax] 71*8fb009dcSAndroid Build Coastguard Worker paddq mm6,mm5 72*8fb009dcSAndroid Build Coastguard Worker movd DWORD [16+eax],mm1 73*8fb009dcSAndroid Build Coastguard Worker psrlq mm1,32 74*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm4 75*8fb009dcSAndroid Build Coastguard Worker movd mm5,DWORD [28+eax] 76*8fb009dcSAndroid Build Coastguard Worker paddq mm3,mm5 77*8fb009dcSAndroid Build Coastguard Worker movd DWORD [20+eax],mm1 78*8fb009dcSAndroid Build Coastguard Worker psrlq mm1,32 79*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm6 80*8fb009dcSAndroid Build Coastguard Worker movd DWORD [24+eax],mm1 81*8fb009dcSAndroid Build Coastguard Worker psrlq mm1,32 82*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm3 83*8fb009dcSAndroid Build Coastguard Worker movd DWORD [28+eax],mm1 84*8fb009dcSAndroid Build Coastguard Worker lea eax,[32+eax] 85*8fb009dcSAndroid Build Coastguard Worker psrlq mm1,32 86*8fb009dcSAndroid Build Coastguard Worker sub ecx,8 87*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$002maw_sse2_exit 88*8fb009dcSAndroid Build Coastguard WorkerL$000maw_sse2_entry: 89*8fb009dcSAndroid Build Coastguard Worker test ecx,4294967288 90*8fb009dcSAndroid Build Coastguard Worker jnz NEAR L$001maw_sse2_unrolled 91*8fb009dcSAndroid Build Coastguard Workeralign 4 92*8fb009dcSAndroid Build Coastguard WorkerL$003maw_sse2_loop: 93*8fb009dcSAndroid Build Coastguard Worker movd mm2,DWORD [edx] 94*8fb009dcSAndroid Build Coastguard Worker movd mm3,DWORD [eax] 95*8fb009dcSAndroid Build Coastguard Worker pmuludq mm2,mm0 96*8fb009dcSAndroid Build Coastguard Worker lea edx,[4+edx] 97*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm3 98*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm2 99*8fb009dcSAndroid Build Coastguard Worker movd DWORD [eax],mm1 100*8fb009dcSAndroid Build Coastguard Worker sub ecx,1 101*8fb009dcSAndroid Build Coastguard Worker psrlq mm1,32 102*8fb009dcSAndroid Build Coastguard Worker lea eax,[4+eax] 103*8fb009dcSAndroid Build Coastguard Worker jnz NEAR L$003maw_sse2_loop 104*8fb009dcSAndroid Build Coastguard WorkerL$002maw_sse2_exit: 105*8fb009dcSAndroid Build Coastguard Worker movd eax,mm1 106*8fb009dcSAndroid Build Coastguard Worker emms 107*8fb009dcSAndroid Build Coastguard Worker ret 108*8fb009dcSAndroid Build Coastguard Worker pop edi 109*8fb009dcSAndroid Build Coastguard Worker pop esi 110*8fb009dcSAndroid Build Coastguard Worker pop ebx 111*8fb009dcSAndroid Build Coastguard Worker pop ebp 112*8fb009dcSAndroid Build Coastguard Worker ret 113*8fb009dcSAndroid Build Coastguard Workerglobal _bn_mul_words 114*8fb009dcSAndroid Build Coastguard Workeralign 16 115*8fb009dcSAndroid Build Coastguard Worker_bn_mul_words: 116*8fb009dcSAndroid Build Coastguard WorkerL$_bn_mul_words_begin: 117*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esp] 118*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+esp] 119*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [12+esp] 120*8fb009dcSAndroid Build Coastguard Worker movd mm0,DWORD [16+esp] 121*8fb009dcSAndroid Build Coastguard Worker pxor mm1,mm1 122*8fb009dcSAndroid Build Coastguard Workeralign 16 123*8fb009dcSAndroid Build Coastguard WorkerL$004mw_sse2_loop: 124*8fb009dcSAndroid Build Coastguard Worker movd mm2,DWORD [edx] 125*8fb009dcSAndroid Build Coastguard Worker pmuludq mm2,mm0 126*8fb009dcSAndroid Build Coastguard Worker lea edx,[4+edx] 127*8fb009dcSAndroid Build Coastguard Worker paddq mm1,mm2 128*8fb009dcSAndroid Build Coastguard Worker movd DWORD [eax],mm1 129*8fb009dcSAndroid Build Coastguard Worker sub ecx,1 130*8fb009dcSAndroid Build Coastguard Worker psrlq mm1,32 131*8fb009dcSAndroid Build Coastguard Worker lea eax,[4+eax] 132*8fb009dcSAndroid Build Coastguard Worker jnz NEAR L$004mw_sse2_loop 133*8fb009dcSAndroid Build Coastguard Worker movd eax,mm1 134*8fb009dcSAndroid Build Coastguard Worker emms 135*8fb009dcSAndroid Build Coastguard Worker ret 136*8fb009dcSAndroid Build Coastguard Worker pop edi 137*8fb009dcSAndroid Build Coastguard Worker pop esi 138*8fb009dcSAndroid Build Coastguard Worker pop ebx 139*8fb009dcSAndroid Build Coastguard Worker pop ebp 140*8fb009dcSAndroid Build Coastguard Worker ret 141*8fb009dcSAndroid Build Coastguard Workerglobal _bn_sqr_words 142*8fb009dcSAndroid Build Coastguard Workeralign 16 143*8fb009dcSAndroid Build Coastguard Worker_bn_sqr_words: 144*8fb009dcSAndroid Build Coastguard WorkerL$_bn_sqr_words_begin: 145*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esp] 146*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+esp] 147*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [12+esp] 148*8fb009dcSAndroid Build Coastguard Workeralign 16 149*8fb009dcSAndroid Build Coastguard WorkerL$005sqr_sse2_loop: 150*8fb009dcSAndroid Build Coastguard Worker movd mm0,DWORD [edx] 151*8fb009dcSAndroid Build Coastguard Worker pmuludq mm0,mm0 152*8fb009dcSAndroid Build Coastguard Worker lea edx,[4+edx] 153*8fb009dcSAndroid Build Coastguard Worker movq [eax],mm0 154*8fb009dcSAndroid Build Coastguard Worker sub ecx,1 155*8fb009dcSAndroid Build Coastguard Worker lea eax,[8+eax] 156*8fb009dcSAndroid Build Coastguard Worker jnz NEAR L$005sqr_sse2_loop 157*8fb009dcSAndroid Build Coastguard Worker emms 158*8fb009dcSAndroid Build Coastguard Worker ret 159*8fb009dcSAndroid Build Coastguard Worker pop edi 160*8fb009dcSAndroid Build Coastguard Worker pop esi 161*8fb009dcSAndroid Build Coastguard Worker pop ebx 162*8fb009dcSAndroid Build Coastguard Worker pop ebp 163*8fb009dcSAndroid Build Coastguard Worker ret 164*8fb009dcSAndroid Build Coastguard Workerglobal _bn_div_words 165*8fb009dcSAndroid Build Coastguard Workeralign 16 166*8fb009dcSAndroid Build Coastguard Worker_bn_div_words: 167*8fb009dcSAndroid Build Coastguard WorkerL$_bn_div_words_begin: 168*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+esp] 169*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esp] 170*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [12+esp] 171*8fb009dcSAndroid Build Coastguard Worker div ecx 172*8fb009dcSAndroid Build Coastguard Worker ret 173*8fb009dcSAndroid Build Coastguard Workerglobal _bn_add_words 174*8fb009dcSAndroid Build Coastguard Workeralign 16 175*8fb009dcSAndroid Build Coastguard Worker_bn_add_words: 176*8fb009dcSAndroid Build Coastguard WorkerL$_bn_add_words_begin: 177*8fb009dcSAndroid Build Coastguard Worker push ebp 178*8fb009dcSAndroid Build Coastguard Worker push ebx 179*8fb009dcSAndroid Build Coastguard Worker push esi 180*8fb009dcSAndroid Build Coastguard Worker push edi 181*8fb009dcSAndroid Build Coastguard Worker ; 182*8fb009dcSAndroid Build Coastguard Worker mov ebx,DWORD [20+esp] 183*8fb009dcSAndroid Build Coastguard Worker mov esi,DWORD [24+esp] 184*8fb009dcSAndroid Build Coastguard Worker mov edi,DWORD [28+esp] 185*8fb009dcSAndroid Build Coastguard Worker mov ebp,DWORD [32+esp] 186*8fb009dcSAndroid Build Coastguard Worker xor eax,eax 187*8fb009dcSAndroid Build Coastguard Worker and ebp,4294967288 188*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$006aw_finish 189*8fb009dcSAndroid Build Coastguard WorkerL$007aw_loop: 190*8fb009dcSAndroid Build Coastguard Worker ; Round 0 191*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [esi] 192*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 193*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 194*8fb009dcSAndroid Build Coastguard Worker mov eax,0 195*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 196*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 197*8fb009dcSAndroid Build Coastguard Worker adc eax,0 198*8fb009dcSAndroid Build Coastguard Worker mov DWORD [ebx],ecx 199*8fb009dcSAndroid Build Coastguard Worker ; Round 1 200*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [4+esi] 201*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 202*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 203*8fb009dcSAndroid Build Coastguard Worker mov eax,0 204*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 205*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 206*8fb009dcSAndroid Build Coastguard Worker adc eax,0 207*8fb009dcSAndroid Build Coastguard Worker mov DWORD [4+ebx],ecx 208*8fb009dcSAndroid Build Coastguard Worker ; Round 2 209*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [8+esi] 210*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 211*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 212*8fb009dcSAndroid Build Coastguard Worker mov eax,0 213*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 214*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 215*8fb009dcSAndroid Build Coastguard Worker adc eax,0 216*8fb009dcSAndroid Build Coastguard Worker mov DWORD [8+ebx],ecx 217*8fb009dcSAndroid Build Coastguard Worker ; Round 3 218*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [12+esi] 219*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 220*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 221*8fb009dcSAndroid Build Coastguard Worker mov eax,0 222*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 223*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 224*8fb009dcSAndroid Build Coastguard Worker adc eax,0 225*8fb009dcSAndroid Build Coastguard Worker mov DWORD [12+ebx],ecx 226*8fb009dcSAndroid Build Coastguard Worker ; Round 4 227*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [16+esi] 228*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 229*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 230*8fb009dcSAndroid Build Coastguard Worker mov eax,0 231*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 232*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 233*8fb009dcSAndroid Build Coastguard Worker adc eax,0 234*8fb009dcSAndroid Build Coastguard Worker mov DWORD [16+ebx],ecx 235*8fb009dcSAndroid Build Coastguard Worker ; Round 5 236*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [20+esi] 237*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 238*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 239*8fb009dcSAndroid Build Coastguard Worker mov eax,0 240*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 241*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 242*8fb009dcSAndroid Build Coastguard Worker adc eax,0 243*8fb009dcSAndroid Build Coastguard Worker mov DWORD [20+ebx],ecx 244*8fb009dcSAndroid Build Coastguard Worker ; Round 6 245*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [24+esi] 246*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 247*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 248*8fb009dcSAndroid Build Coastguard Worker mov eax,0 249*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 250*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 251*8fb009dcSAndroid Build Coastguard Worker adc eax,0 252*8fb009dcSAndroid Build Coastguard Worker mov DWORD [24+ebx],ecx 253*8fb009dcSAndroid Build Coastguard Worker ; Round 7 254*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [28+esi] 255*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [28+edi] 256*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 257*8fb009dcSAndroid Build Coastguard Worker mov eax,0 258*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 259*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 260*8fb009dcSAndroid Build Coastguard Worker adc eax,0 261*8fb009dcSAndroid Build Coastguard Worker mov DWORD [28+ebx],ecx 262*8fb009dcSAndroid Build Coastguard Worker ; 263*8fb009dcSAndroid Build Coastguard Worker add esi,32 264*8fb009dcSAndroid Build Coastguard Worker add edi,32 265*8fb009dcSAndroid Build Coastguard Worker add ebx,32 266*8fb009dcSAndroid Build Coastguard Worker sub ebp,8 267*8fb009dcSAndroid Build Coastguard Worker jnz NEAR L$007aw_loop 268*8fb009dcSAndroid Build Coastguard WorkerL$006aw_finish: 269*8fb009dcSAndroid Build Coastguard Worker mov ebp,DWORD [32+esp] 270*8fb009dcSAndroid Build Coastguard Worker and ebp,7 271*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$008aw_end 272*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 0 273*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [esi] 274*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 275*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 276*8fb009dcSAndroid Build Coastguard Worker mov eax,0 277*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 278*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 279*8fb009dcSAndroid Build Coastguard Worker adc eax,0 280*8fb009dcSAndroid Build Coastguard Worker dec ebp 281*8fb009dcSAndroid Build Coastguard Worker mov DWORD [ebx],ecx 282*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$008aw_end 283*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 1 284*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [4+esi] 285*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 286*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 287*8fb009dcSAndroid Build Coastguard Worker mov eax,0 288*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 289*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 290*8fb009dcSAndroid Build Coastguard Worker adc eax,0 291*8fb009dcSAndroid Build Coastguard Worker dec ebp 292*8fb009dcSAndroid Build Coastguard Worker mov DWORD [4+ebx],ecx 293*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$008aw_end 294*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 2 295*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [8+esi] 296*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 297*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 298*8fb009dcSAndroid Build Coastguard Worker mov eax,0 299*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 300*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 301*8fb009dcSAndroid Build Coastguard Worker adc eax,0 302*8fb009dcSAndroid Build Coastguard Worker dec ebp 303*8fb009dcSAndroid Build Coastguard Worker mov DWORD [8+ebx],ecx 304*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$008aw_end 305*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 3 306*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [12+esi] 307*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 308*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 309*8fb009dcSAndroid Build Coastguard Worker mov eax,0 310*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 311*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 312*8fb009dcSAndroid Build Coastguard Worker adc eax,0 313*8fb009dcSAndroid Build Coastguard Worker dec ebp 314*8fb009dcSAndroid Build Coastguard Worker mov DWORD [12+ebx],ecx 315*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$008aw_end 316*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 4 317*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [16+esi] 318*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 319*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 320*8fb009dcSAndroid Build Coastguard Worker mov eax,0 321*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 322*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 323*8fb009dcSAndroid Build Coastguard Worker adc eax,0 324*8fb009dcSAndroid Build Coastguard Worker dec ebp 325*8fb009dcSAndroid Build Coastguard Worker mov DWORD [16+ebx],ecx 326*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$008aw_end 327*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 5 328*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [20+esi] 329*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 330*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 331*8fb009dcSAndroid Build Coastguard Worker mov eax,0 332*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 333*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 334*8fb009dcSAndroid Build Coastguard Worker adc eax,0 335*8fb009dcSAndroid Build Coastguard Worker dec ebp 336*8fb009dcSAndroid Build Coastguard Worker mov DWORD [20+ebx],ecx 337*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$008aw_end 338*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 6 339*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [24+esi] 340*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 341*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 342*8fb009dcSAndroid Build Coastguard Worker mov eax,0 343*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 344*8fb009dcSAndroid Build Coastguard Worker add ecx,edx 345*8fb009dcSAndroid Build Coastguard Worker adc eax,0 346*8fb009dcSAndroid Build Coastguard Worker mov DWORD [24+ebx],ecx 347*8fb009dcSAndroid Build Coastguard WorkerL$008aw_end: 348*8fb009dcSAndroid Build Coastguard Worker pop edi 349*8fb009dcSAndroid Build Coastguard Worker pop esi 350*8fb009dcSAndroid Build Coastguard Worker pop ebx 351*8fb009dcSAndroid Build Coastguard Worker pop ebp 352*8fb009dcSAndroid Build Coastguard Worker ret 353*8fb009dcSAndroid Build Coastguard Workerglobal _bn_sub_words 354*8fb009dcSAndroid Build Coastguard Workeralign 16 355*8fb009dcSAndroid Build Coastguard Worker_bn_sub_words: 356*8fb009dcSAndroid Build Coastguard WorkerL$_bn_sub_words_begin: 357*8fb009dcSAndroid Build Coastguard Worker push ebp 358*8fb009dcSAndroid Build Coastguard Worker push ebx 359*8fb009dcSAndroid Build Coastguard Worker push esi 360*8fb009dcSAndroid Build Coastguard Worker push edi 361*8fb009dcSAndroid Build Coastguard Worker ; 362*8fb009dcSAndroid Build Coastguard Worker mov ebx,DWORD [20+esp] 363*8fb009dcSAndroid Build Coastguard Worker mov esi,DWORD [24+esp] 364*8fb009dcSAndroid Build Coastguard Worker mov edi,DWORD [28+esp] 365*8fb009dcSAndroid Build Coastguard Worker mov ebp,DWORD [32+esp] 366*8fb009dcSAndroid Build Coastguard Worker xor eax,eax 367*8fb009dcSAndroid Build Coastguard Worker and ebp,4294967288 368*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$009aw_finish 369*8fb009dcSAndroid Build Coastguard WorkerL$010aw_loop: 370*8fb009dcSAndroid Build Coastguard Worker ; Round 0 371*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [esi] 372*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 373*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 374*8fb009dcSAndroid Build Coastguard Worker mov eax,0 375*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 376*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 377*8fb009dcSAndroid Build Coastguard Worker adc eax,0 378*8fb009dcSAndroid Build Coastguard Worker mov DWORD [ebx],ecx 379*8fb009dcSAndroid Build Coastguard Worker ; Round 1 380*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [4+esi] 381*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 382*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 383*8fb009dcSAndroid Build Coastguard Worker mov eax,0 384*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 385*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 386*8fb009dcSAndroid Build Coastguard Worker adc eax,0 387*8fb009dcSAndroid Build Coastguard Worker mov DWORD [4+ebx],ecx 388*8fb009dcSAndroid Build Coastguard Worker ; Round 2 389*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [8+esi] 390*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 391*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 392*8fb009dcSAndroid Build Coastguard Worker mov eax,0 393*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 394*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 395*8fb009dcSAndroid Build Coastguard Worker adc eax,0 396*8fb009dcSAndroid Build Coastguard Worker mov DWORD [8+ebx],ecx 397*8fb009dcSAndroid Build Coastguard Worker ; Round 3 398*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [12+esi] 399*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 400*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 401*8fb009dcSAndroid Build Coastguard Worker mov eax,0 402*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 403*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 404*8fb009dcSAndroid Build Coastguard Worker adc eax,0 405*8fb009dcSAndroid Build Coastguard Worker mov DWORD [12+ebx],ecx 406*8fb009dcSAndroid Build Coastguard Worker ; Round 4 407*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [16+esi] 408*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 409*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 410*8fb009dcSAndroid Build Coastguard Worker mov eax,0 411*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 412*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 413*8fb009dcSAndroid Build Coastguard Worker adc eax,0 414*8fb009dcSAndroid Build Coastguard Worker mov DWORD [16+ebx],ecx 415*8fb009dcSAndroid Build Coastguard Worker ; Round 5 416*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [20+esi] 417*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 418*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 419*8fb009dcSAndroid Build Coastguard Worker mov eax,0 420*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 421*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 422*8fb009dcSAndroid Build Coastguard Worker adc eax,0 423*8fb009dcSAndroid Build Coastguard Worker mov DWORD [20+ebx],ecx 424*8fb009dcSAndroid Build Coastguard Worker ; Round 6 425*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [24+esi] 426*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 427*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 428*8fb009dcSAndroid Build Coastguard Worker mov eax,0 429*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 430*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 431*8fb009dcSAndroid Build Coastguard Worker adc eax,0 432*8fb009dcSAndroid Build Coastguard Worker mov DWORD [24+ebx],ecx 433*8fb009dcSAndroid Build Coastguard Worker ; Round 7 434*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [28+esi] 435*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [28+edi] 436*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 437*8fb009dcSAndroid Build Coastguard Worker mov eax,0 438*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 439*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 440*8fb009dcSAndroid Build Coastguard Worker adc eax,0 441*8fb009dcSAndroid Build Coastguard Worker mov DWORD [28+ebx],ecx 442*8fb009dcSAndroid Build Coastguard Worker ; 443*8fb009dcSAndroid Build Coastguard Worker add esi,32 444*8fb009dcSAndroid Build Coastguard Worker add edi,32 445*8fb009dcSAndroid Build Coastguard Worker add ebx,32 446*8fb009dcSAndroid Build Coastguard Worker sub ebp,8 447*8fb009dcSAndroid Build Coastguard Worker jnz NEAR L$010aw_loop 448*8fb009dcSAndroid Build Coastguard WorkerL$009aw_finish: 449*8fb009dcSAndroid Build Coastguard Worker mov ebp,DWORD [32+esp] 450*8fb009dcSAndroid Build Coastguard Worker and ebp,7 451*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$011aw_end 452*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 0 453*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [esi] 454*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 455*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 456*8fb009dcSAndroid Build Coastguard Worker mov eax,0 457*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 458*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 459*8fb009dcSAndroid Build Coastguard Worker adc eax,0 460*8fb009dcSAndroid Build Coastguard Worker dec ebp 461*8fb009dcSAndroid Build Coastguard Worker mov DWORD [ebx],ecx 462*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$011aw_end 463*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 1 464*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [4+esi] 465*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 466*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 467*8fb009dcSAndroid Build Coastguard Worker mov eax,0 468*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 469*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 470*8fb009dcSAndroid Build Coastguard Worker adc eax,0 471*8fb009dcSAndroid Build Coastguard Worker dec ebp 472*8fb009dcSAndroid Build Coastguard Worker mov DWORD [4+ebx],ecx 473*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$011aw_end 474*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 2 475*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [8+esi] 476*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 477*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 478*8fb009dcSAndroid Build Coastguard Worker mov eax,0 479*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 480*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 481*8fb009dcSAndroid Build Coastguard Worker adc eax,0 482*8fb009dcSAndroid Build Coastguard Worker dec ebp 483*8fb009dcSAndroid Build Coastguard Worker mov DWORD [8+ebx],ecx 484*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$011aw_end 485*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 3 486*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [12+esi] 487*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 488*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 489*8fb009dcSAndroid Build Coastguard Worker mov eax,0 490*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 491*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 492*8fb009dcSAndroid Build Coastguard Worker adc eax,0 493*8fb009dcSAndroid Build Coastguard Worker dec ebp 494*8fb009dcSAndroid Build Coastguard Worker mov DWORD [12+ebx],ecx 495*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$011aw_end 496*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 4 497*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [16+esi] 498*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 499*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 500*8fb009dcSAndroid Build Coastguard Worker mov eax,0 501*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 502*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 503*8fb009dcSAndroid Build Coastguard Worker adc eax,0 504*8fb009dcSAndroid Build Coastguard Worker dec ebp 505*8fb009dcSAndroid Build Coastguard Worker mov DWORD [16+ebx],ecx 506*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$011aw_end 507*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 5 508*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [20+esi] 509*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 510*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 511*8fb009dcSAndroid Build Coastguard Worker mov eax,0 512*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 513*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 514*8fb009dcSAndroid Build Coastguard Worker adc eax,0 515*8fb009dcSAndroid Build Coastguard Worker dec ebp 516*8fb009dcSAndroid Build Coastguard Worker mov DWORD [20+ebx],ecx 517*8fb009dcSAndroid Build Coastguard Worker jz NEAR L$011aw_end 518*8fb009dcSAndroid Build Coastguard Worker ; Tail Round 6 519*8fb009dcSAndroid Build Coastguard Worker mov ecx,DWORD [24+esi] 520*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 521*8fb009dcSAndroid Build Coastguard Worker sub ecx,eax 522*8fb009dcSAndroid Build Coastguard Worker mov eax,0 523*8fb009dcSAndroid Build Coastguard Worker adc eax,eax 524*8fb009dcSAndroid Build Coastguard Worker sub ecx,edx 525*8fb009dcSAndroid Build Coastguard Worker adc eax,0 526*8fb009dcSAndroid Build Coastguard Worker mov DWORD [24+ebx],ecx 527*8fb009dcSAndroid Build Coastguard WorkerL$011aw_end: 528*8fb009dcSAndroid Build Coastguard Worker pop edi 529*8fb009dcSAndroid Build Coastguard Worker pop esi 530*8fb009dcSAndroid Build Coastguard Worker pop ebx 531*8fb009dcSAndroid Build Coastguard Worker pop ebp 532*8fb009dcSAndroid Build Coastguard Worker ret 533*8fb009dcSAndroid Build Coastguard Worker%else 534*8fb009dcSAndroid Build Coastguard Worker; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 535*8fb009dcSAndroid Build Coastguard Workerret 536*8fb009dcSAndroid Build Coastguard Worker%endif 537