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_comba8 17*8fb009dcSAndroid Build Coastguard Workeralign 16 18*8fb009dcSAndroid Build Coastguard Worker_bn_mul_comba8: 19*8fb009dcSAndroid Build Coastguard WorkerL$_bn_mul_comba8_begin: 20*8fb009dcSAndroid Build Coastguard Worker push esi 21*8fb009dcSAndroid Build Coastguard Worker mov esi,DWORD [12+esp] 22*8fb009dcSAndroid Build Coastguard Worker push edi 23*8fb009dcSAndroid Build Coastguard Worker mov edi,DWORD [20+esp] 24*8fb009dcSAndroid Build Coastguard Worker push ebp 25*8fb009dcSAndroid Build Coastguard Worker push ebx 26*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 27*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 28*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 29*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 30*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 0 31*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 32*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[0] 33*8fb009dcSAndroid Build Coastguard Worker mul edx 34*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 35*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 36*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 37*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 38*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 39*8fb009dcSAndroid Build Coastguard Worker mov DWORD [eax],ebx 40*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 41*8fb009dcSAndroid Build Coastguard Worker ; saved r[0] 42*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 1 43*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 44*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[0] 45*8fb009dcSAndroid Build Coastguard Worker mul edx 46*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 47*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 48*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 49*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 50*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 51*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[1] 52*8fb009dcSAndroid Build Coastguard Worker mul edx 53*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 54*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 55*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 56*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 57*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 58*8fb009dcSAndroid Build Coastguard Worker mov DWORD [4+eax],ecx 59*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 60*8fb009dcSAndroid Build Coastguard Worker ; saved r[1] 61*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 2 62*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 63*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[0] 64*8fb009dcSAndroid Build Coastguard Worker mul edx 65*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 66*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 67*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 68*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 69*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 70*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[1] 71*8fb009dcSAndroid Build Coastguard Worker mul edx 72*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 73*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 74*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 75*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 76*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 77*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[2] 78*8fb009dcSAndroid Build Coastguard Worker mul edx 79*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 80*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 81*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 82*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 83*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 84*8fb009dcSAndroid Build Coastguard Worker mov DWORD [8+eax],ebp 85*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 86*8fb009dcSAndroid Build Coastguard Worker ; saved r[2] 87*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 3 88*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 89*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[0] 90*8fb009dcSAndroid Build Coastguard Worker mul edx 91*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 92*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 93*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 94*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 95*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 96*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[1] 97*8fb009dcSAndroid Build Coastguard Worker mul edx 98*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 99*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 100*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 101*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 102*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 103*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[2] 104*8fb009dcSAndroid Build Coastguard Worker mul edx 105*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 106*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 107*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 108*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 109*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 110*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[3] 111*8fb009dcSAndroid Build Coastguard Worker mul edx 112*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 113*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 114*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 115*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 116*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 117*8fb009dcSAndroid Build Coastguard Worker mov DWORD [12+eax],ebx 118*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 119*8fb009dcSAndroid Build Coastguard Worker ; saved r[3] 120*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 4 121*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 122*8fb009dcSAndroid Build Coastguard Worker ; mul a[4]*b[0] 123*8fb009dcSAndroid Build Coastguard Worker mul edx 124*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 125*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 126*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 127*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 128*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 129*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[1] 130*8fb009dcSAndroid Build Coastguard Worker mul edx 131*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 132*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 133*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 134*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 135*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 136*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[2] 137*8fb009dcSAndroid Build Coastguard Worker mul edx 138*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 139*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 140*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 141*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 142*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 143*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[3] 144*8fb009dcSAndroid Build Coastguard Worker mul edx 145*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 146*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 147*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 148*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 149*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 150*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[4] 151*8fb009dcSAndroid Build Coastguard Worker mul edx 152*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 153*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 154*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 155*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 156*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 157*8fb009dcSAndroid Build Coastguard Worker mov DWORD [16+eax],ecx 158*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 159*8fb009dcSAndroid Build Coastguard Worker ; saved r[4] 160*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 5 161*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 162*8fb009dcSAndroid Build Coastguard Worker ; mul a[5]*b[0] 163*8fb009dcSAndroid Build Coastguard Worker mul edx 164*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 165*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 166*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 167*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 168*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 169*8fb009dcSAndroid Build Coastguard Worker ; mul a[4]*b[1] 170*8fb009dcSAndroid Build Coastguard Worker mul edx 171*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 172*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 173*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 174*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 175*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 176*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[2] 177*8fb009dcSAndroid Build Coastguard Worker mul edx 178*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 179*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 180*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 181*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 182*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 183*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[3] 184*8fb009dcSAndroid Build Coastguard Worker mul edx 185*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 186*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 187*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 188*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 189*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 190*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[4] 191*8fb009dcSAndroid Build Coastguard Worker mul edx 192*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 193*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 194*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 195*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 196*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 197*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[5] 198*8fb009dcSAndroid Build Coastguard Worker mul edx 199*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 200*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 201*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 202*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 203*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 204*8fb009dcSAndroid Build Coastguard Worker mov DWORD [20+eax],ebp 205*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 206*8fb009dcSAndroid Build Coastguard Worker ; saved r[5] 207*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 6 208*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 209*8fb009dcSAndroid Build Coastguard Worker ; mul a[6]*b[0] 210*8fb009dcSAndroid Build Coastguard Worker mul edx 211*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 212*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 213*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 214*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 215*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 216*8fb009dcSAndroid Build Coastguard Worker ; mul a[5]*b[1] 217*8fb009dcSAndroid Build Coastguard Worker mul edx 218*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 219*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 220*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 221*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 222*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 223*8fb009dcSAndroid Build Coastguard Worker ; mul a[4]*b[2] 224*8fb009dcSAndroid Build Coastguard Worker mul edx 225*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 226*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 227*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 228*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 229*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 230*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[3] 231*8fb009dcSAndroid Build Coastguard Worker mul edx 232*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 233*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 234*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 235*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 236*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 237*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[4] 238*8fb009dcSAndroid Build Coastguard Worker mul edx 239*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 240*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 241*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 242*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 243*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 244*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[5] 245*8fb009dcSAndroid Build Coastguard Worker mul edx 246*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 247*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 248*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 249*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 250*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 251*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[6] 252*8fb009dcSAndroid Build Coastguard Worker mul edx 253*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 254*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 255*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 256*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 257*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 258*8fb009dcSAndroid Build Coastguard Worker mov DWORD [24+eax],ebx 259*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 260*8fb009dcSAndroid Build Coastguard Worker ; saved r[6] 261*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 7 262*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 263*8fb009dcSAndroid Build Coastguard Worker ; mul a[7]*b[0] 264*8fb009dcSAndroid Build Coastguard Worker mul edx 265*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 266*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 267*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 268*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 269*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 270*8fb009dcSAndroid Build Coastguard Worker ; mul a[6]*b[1] 271*8fb009dcSAndroid Build Coastguard Worker mul edx 272*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 273*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 274*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 275*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 276*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 277*8fb009dcSAndroid Build Coastguard Worker ; mul a[5]*b[2] 278*8fb009dcSAndroid Build Coastguard Worker mul edx 279*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 280*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 281*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 282*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 283*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 284*8fb009dcSAndroid Build Coastguard Worker ; mul a[4]*b[3] 285*8fb009dcSAndroid Build Coastguard Worker mul edx 286*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 287*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 288*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 289*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 290*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 291*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[4] 292*8fb009dcSAndroid Build Coastguard Worker mul edx 293*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 294*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 295*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 296*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 297*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 298*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[5] 299*8fb009dcSAndroid Build Coastguard Worker mul edx 300*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 301*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 302*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 303*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 304*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 305*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[6] 306*8fb009dcSAndroid Build Coastguard Worker mul edx 307*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 308*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 309*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 310*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [28+edi] 311*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 312*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[7] 313*8fb009dcSAndroid Build Coastguard Worker mul edx 314*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 315*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 316*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 317*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 318*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 319*8fb009dcSAndroid Build Coastguard Worker mov DWORD [28+eax],ecx 320*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 321*8fb009dcSAndroid Build Coastguard Worker ; saved r[7] 322*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 8 323*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 324*8fb009dcSAndroid Build Coastguard Worker ; mul a[7]*b[1] 325*8fb009dcSAndroid Build Coastguard Worker mul edx 326*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 327*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 328*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 329*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 330*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 331*8fb009dcSAndroid Build Coastguard Worker ; mul a[6]*b[2] 332*8fb009dcSAndroid Build Coastguard Worker mul edx 333*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 334*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 335*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 336*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 337*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 338*8fb009dcSAndroid Build Coastguard Worker ; mul a[5]*b[3] 339*8fb009dcSAndroid Build Coastguard Worker mul edx 340*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 341*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 342*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 343*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 344*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 345*8fb009dcSAndroid Build Coastguard Worker ; mul a[4]*b[4] 346*8fb009dcSAndroid Build Coastguard Worker mul edx 347*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 348*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 349*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 350*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 351*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 352*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[5] 353*8fb009dcSAndroid Build Coastguard Worker mul edx 354*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 355*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 356*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 357*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 358*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 359*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[6] 360*8fb009dcSAndroid Build Coastguard Worker mul edx 361*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 362*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 363*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 364*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [28+edi] 365*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 366*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[7] 367*8fb009dcSAndroid Build Coastguard Worker mul edx 368*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 369*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 370*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 371*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 372*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 373*8fb009dcSAndroid Build Coastguard Worker mov DWORD [32+eax],ebp 374*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 375*8fb009dcSAndroid Build Coastguard Worker ; saved r[8] 376*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 9 377*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 378*8fb009dcSAndroid Build Coastguard Worker ; mul a[7]*b[2] 379*8fb009dcSAndroid Build Coastguard Worker mul edx 380*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 381*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 382*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 383*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 384*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 385*8fb009dcSAndroid Build Coastguard Worker ; mul a[6]*b[3] 386*8fb009dcSAndroid Build Coastguard Worker mul edx 387*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 388*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 389*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 390*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 391*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 392*8fb009dcSAndroid Build Coastguard Worker ; mul a[5]*b[4] 393*8fb009dcSAndroid Build Coastguard Worker mul edx 394*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 395*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 396*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 397*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 398*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 399*8fb009dcSAndroid Build Coastguard Worker ; mul a[4]*b[5] 400*8fb009dcSAndroid Build Coastguard Worker mul edx 401*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 402*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 403*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 404*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 405*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 406*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[6] 407*8fb009dcSAndroid Build Coastguard Worker mul edx 408*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 409*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 410*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 411*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [28+edi] 412*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 413*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[7] 414*8fb009dcSAndroid Build Coastguard Worker mul edx 415*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 416*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 417*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 418*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 419*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 420*8fb009dcSAndroid Build Coastguard Worker mov DWORD [36+eax],ebx 421*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 422*8fb009dcSAndroid Build Coastguard Worker ; saved r[9] 423*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 10 424*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 425*8fb009dcSAndroid Build Coastguard Worker ; mul a[7]*b[3] 426*8fb009dcSAndroid Build Coastguard Worker mul edx 427*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 428*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 429*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 430*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 431*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 432*8fb009dcSAndroid Build Coastguard Worker ; mul a[6]*b[4] 433*8fb009dcSAndroid Build Coastguard Worker mul edx 434*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 435*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 436*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 437*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 438*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 439*8fb009dcSAndroid Build Coastguard Worker ; mul a[5]*b[5] 440*8fb009dcSAndroid Build Coastguard Worker mul edx 441*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 442*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 443*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 444*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 445*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 446*8fb009dcSAndroid Build Coastguard Worker ; mul a[4]*b[6] 447*8fb009dcSAndroid Build Coastguard Worker mul edx 448*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 449*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 450*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 451*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [28+edi] 452*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 453*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[7] 454*8fb009dcSAndroid Build Coastguard Worker mul edx 455*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 456*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 457*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 458*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+edi] 459*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 460*8fb009dcSAndroid Build Coastguard Worker mov DWORD [40+eax],ecx 461*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 462*8fb009dcSAndroid Build Coastguard Worker ; saved r[10] 463*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 11 464*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 465*8fb009dcSAndroid Build Coastguard Worker ; mul a[7]*b[4] 466*8fb009dcSAndroid Build Coastguard Worker mul edx 467*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 468*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 469*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 470*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 471*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 472*8fb009dcSAndroid Build Coastguard Worker ; mul a[6]*b[5] 473*8fb009dcSAndroid Build Coastguard Worker mul edx 474*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 475*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 476*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 477*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 478*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 479*8fb009dcSAndroid Build Coastguard Worker ; mul a[5]*b[6] 480*8fb009dcSAndroid Build Coastguard Worker mul edx 481*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 482*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 483*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 484*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [28+edi] 485*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 486*8fb009dcSAndroid Build Coastguard Worker ; mul a[4]*b[7] 487*8fb009dcSAndroid Build Coastguard Worker mul edx 488*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 489*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 490*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 491*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+edi] 492*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 493*8fb009dcSAndroid Build Coastguard Worker mov DWORD [44+eax],ebp 494*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 495*8fb009dcSAndroid Build Coastguard Worker ; saved r[11] 496*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 12 497*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 498*8fb009dcSAndroid Build Coastguard Worker ; mul a[7]*b[5] 499*8fb009dcSAndroid Build Coastguard Worker mul edx 500*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 501*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 502*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 503*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 504*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 505*8fb009dcSAndroid Build Coastguard Worker ; mul a[6]*b[6] 506*8fb009dcSAndroid Build Coastguard Worker mul edx 507*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 508*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 509*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 510*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [28+edi] 511*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 512*8fb009dcSAndroid Build Coastguard Worker ; mul a[5]*b[7] 513*8fb009dcSAndroid Build Coastguard Worker mul edx 514*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 515*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 516*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 517*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+edi] 518*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 519*8fb009dcSAndroid Build Coastguard Worker mov DWORD [48+eax],ebx 520*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 521*8fb009dcSAndroid Build Coastguard Worker ; saved r[12] 522*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 13 523*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 524*8fb009dcSAndroid Build Coastguard Worker ; mul a[7]*b[6] 525*8fb009dcSAndroid Build Coastguard Worker mul edx 526*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 527*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 528*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 529*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [28+edi] 530*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 531*8fb009dcSAndroid Build Coastguard Worker ; mul a[6]*b[7] 532*8fb009dcSAndroid Build Coastguard Worker mul edx 533*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 534*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 535*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 536*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [28+edi] 537*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 538*8fb009dcSAndroid Build Coastguard Worker mov DWORD [52+eax],ecx 539*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 540*8fb009dcSAndroid Build Coastguard Worker ; saved r[13] 541*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 14 542*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 543*8fb009dcSAndroid Build Coastguard Worker ; mul a[7]*b[7] 544*8fb009dcSAndroid Build Coastguard Worker mul edx 545*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 546*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 547*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 548*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 549*8fb009dcSAndroid Build Coastguard Worker mov DWORD [56+eax],ebp 550*8fb009dcSAndroid Build Coastguard Worker ; saved r[14] 551*8fb009dcSAndroid Build Coastguard Worker ; save r[15] 552*8fb009dcSAndroid Build Coastguard Worker mov DWORD [60+eax],ebx 553*8fb009dcSAndroid Build Coastguard Worker pop ebx 554*8fb009dcSAndroid Build Coastguard Worker pop ebp 555*8fb009dcSAndroid Build Coastguard Worker pop edi 556*8fb009dcSAndroid Build Coastguard Worker pop esi 557*8fb009dcSAndroid Build Coastguard Worker ret 558*8fb009dcSAndroid Build Coastguard Workerglobal _bn_mul_comba4 559*8fb009dcSAndroid Build Coastguard Workeralign 16 560*8fb009dcSAndroid Build Coastguard Worker_bn_mul_comba4: 561*8fb009dcSAndroid Build Coastguard WorkerL$_bn_mul_comba4_begin: 562*8fb009dcSAndroid Build Coastguard Worker push esi 563*8fb009dcSAndroid Build Coastguard Worker mov esi,DWORD [12+esp] 564*8fb009dcSAndroid Build Coastguard Worker push edi 565*8fb009dcSAndroid Build Coastguard Worker mov edi,DWORD [20+esp] 566*8fb009dcSAndroid Build Coastguard Worker push ebp 567*8fb009dcSAndroid Build Coastguard Worker push ebx 568*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 569*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 570*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 571*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 572*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 0 573*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 574*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[0] 575*8fb009dcSAndroid Build Coastguard Worker mul edx 576*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 577*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 578*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 579*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 580*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 581*8fb009dcSAndroid Build Coastguard Worker mov DWORD [eax],ebx 582*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 583*8fb009dcSAndroid Build Coastguard Worker ; saved r[0] 584*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 1 585*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 586*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[0] 587*8fb009dcSAndroid Build Coastguard Worker mul edx 588*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 589*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 590*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 591*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 592*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 593*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[1] 594*8fb009dcSAndroid Build Coastguard Worker mul edx 595*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 596*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 597*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 598*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 599*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 600*8fb009dcSAndroid Build Coastguard Worker mov DWORD [4+eax],ecx 601*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 602*8fb009dcSAndroid Build Coastguard Worker ; saved r[1] 603*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 2 604*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 605*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[0] 606*8fb009dcSAndroid Build Coastguard Worker mul edx 607*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 608*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 609*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 610*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 611*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 612*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[1] 613*8fb009dcSAndroid Build Coastguard Worker mul edx 614*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 615*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 616*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 617*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 618*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 619*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[2] 620*8fb009dcSAndroid Build Coastguard Worker mul edx 621*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 622*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 623*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 624*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [edi] 625*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 626*8fb009dcSAndroid Build Coastguard Worker mov DWORD [8+eax],ebp 627*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 628*8fb009dcSAndroid Build Coastguard Worker ; saved r[2] 629*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 3 630*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 631*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[0] 632*8fb009dcSAndroid Build Coastguard Worker mul edx 633*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 634*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 635*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 636*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 637*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 638*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[1] 639*8fb009dcSAndroid Build Coastguard Worker mul edx 640*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 641*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 642*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 643*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 644*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 645*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[2] 646*8fb009dcSAndroid Build Coastguard Worker mul edx 647*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 648*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 649*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 650*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 651*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 652*8fb009dcSAndroid Build Coastguard Worker ; mul a[0]*b[3] 653*8fb009dcSAndroid Build Coastguard Worker mul edx 654*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 655*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 656*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 657*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+edi] 658*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 659*8fb009dcSAndroid Build Coastguard Worker mov DWORD [12+eax],ebx 660*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 661*8fb009dcSAndroid Build Coastguard Worker ; saved r[3] 662*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 4 663*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 664*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[1] 665*8fb009dcSAndroid Build Coastguard Worker mul edx 666*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 667*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 668*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 669*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 670*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 671*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[2] 672*8fb009dcSAndroid Build Coastguard Worker mul edx 673*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 674*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 675*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 676*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 677*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 678*8fb009dcSAndroid Build Coastguard Worker ; mul a[1]*b[3] 679*8fb009dcSAndroid Build Coastguard Worker mul edx 680*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 681*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 682*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 683*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+edi] 684*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 685*8fb009dcSAndroid Build Coastguard Worker mov DWORD [16+eax],ecx 686*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 687*8fb009dcSAndroid Build Coastguard Worker ; saved r[4] 688*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 5 689*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 690*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[2] 691*8fb009dcSAndroid Build Coastguard Worker mul edx 692*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 693*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 694*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 695*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 696*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 697*8fb009dcSAndroid Build Coastguard Worker ; mul a[2]*b[3] 698*8fb009dcSAndroid Build Coastguard Worker mul edx 699*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 700*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 701*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 702*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+edi] 703*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 704*8fb009dcSAndroid Build Coastguard Worker mov DWORD [20+eax],ebp 705*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 706*8fb009dcSAndroid Build Coastguard Worker ; saved r[5] 707*8fb009dcSAndroid Build Coastguard Worker ; ################## Calculate word 6 708*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 709*8fb009dcSAndroid Build Coastguard Worker ; mul a[3]*b[3] 710*8fb009dcSAndroid Build Coastguard Worker mul edx 711*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 712*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esp] 713*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 714*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 715*8fb009dcSAndroid Build Coastguard Worker mov DWORD [24+eax],ebx 716*8fb009dcSAndroid Build Coastguard Worker ; saved r[6] 717*8fb009dcSAndroid Build Coastguard Worker ; save r[7] 718*8fb009dcSAndroid Build Coastguard Worker mov DWORD [28+eax],ecx 719*8fb009dcSAndroid Build Coastguard Worker pop ebx 720*8fb009dcSAndroid Build Coastguard Worker pop ebp 721*8fb009dcSAndroid Build Coastguard Worker pop edi 722*8fb009dcSAndroid Build Coastguard Worker pop esi 723*8fb009dcSAndroid Build Coastguard Worker ret 724*8fb009dcSAndroid Build Coastguard Workerglobal _bn_sqr_comba8 725*8fb009dcSAndroid Build Coastguard Workeralign 16 726*8fb009dcSAndroid Build Coastguard Worker_bn_sqr_comba8: 727*8fb009dcSAndroid Build Coastguard WorkerL$_bn_sqr_comba8_begin: 728*8fb009dcSAndroid Build Coastguard Worker push esi 729*8fb009dcSAndroid Build Coastguard Worker push edi 730*8fb009dcSAndroid Build Coastguard Worker push ebp 731*8fb009dcSAndroid Build Coastguard Worker push ebx 732*8fb009dcSAndroid Build Coastguard Worker mov edi,DWORD [20+esp] 733*8fb009dcSAndroid Build Coastguard Worker mov esi,DWORD [24+esp] 734*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 735*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 736*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 737*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 0 738*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 739*8fb009dcSAndroid Build Coastguard Worker ; sqr a[0]*a[0] 740*8fb009dcSAndroid Build Coastguard Worker mul eax 741*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 742*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 743*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [esi] 744*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 745*8fb009dcSAndroid Build Coastguard Worker mov DWORD [edi],ebx 746*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 747*8fb009dcSAndroid Build Coastguard Worker ; saved r[0] 748*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 1 749*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 750*8fb009dcSAndroid Build Coastguard Worker ; sqr a[1]*a[0] 751*8fb009dcSAndroid Build Coastguard Worker mul edx 752*8fb009dcSAndroid Build Coastguard Worker add eax,eax 753*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 754*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 755*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 756*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 757*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 758*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 759*8fb009dcSAndroid Build Coastguard Worker mov DWORD [4+edi],ecx 760*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [esi] 761*8fb009dcSAndroid Build Coastguard Worker ; saved r[1] 762*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 2 763*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 764*8fb009dcSAndroid Build Coastguard Worker ; sqr a[2]*a[0] 765*8fb009dcSAndroid Build Coastguard Worker mul edx 766*8fb009dcSAndroid Build Coastguard Worker add eax,eax 767*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 768*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 769*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 770*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 771*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 772*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 773*8fb009dcSAndroid Build Coastguard Worker ; sqr a[1]*a[1] 774*8fb009dcSAndroid Build Coastguard Worker mul eax 775*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 776*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 777*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [esi] 778*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 779*8fb009dcSAndroid Build Coastguard Worker mov DWORD [8+edi],ebp 780*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 781*8fb009dcSAndroid Build Coastguard Worker ; saved r[2] 782*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 3 783*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 784*8fb009dcSAndroid Build Coastguard Worker ; sqr a[3]*a[0] 785*8fb009dcSAndroid Build Coastguard Worker mul edx 786*8fb009dcSAndroid Build Coastguard Worker add eax,eax 787*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 788*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 789*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 790*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 791*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 792*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 793*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+esi] 794*8fb009dcSAndroid Build Coastguard Worker ; sqr a[2]*a[1] 795*8fb009dcSAndroid Build Coastguard Worker mul edx 796*8fb009dcSAndroid Build Coastguard Worker add eax,eax 797*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 798*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 799*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 800*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 801*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 802*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 803*8fb009dcSAndroid Build Coastguard Worker mov DWORD [12+edi],ebx 804*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [esi] 805*8fb009dcSAndroid Build Coastguard Worker ; saved r[3] 806*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 4 807*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 808*8fb009dcSAndroid Build Coastguard Worker ; sqr a[4]*a[0] 809*8fb009dcSAndroid Build Coastguard Worker mul edx 810*8fb009dcSAndroid Build Coastguard Worker add eax,eax 811*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 812*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 813*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 814*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 815*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 816*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 817*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+esi] 818*8fb009dcSAndroid Build Coastguard Worker ; sqr a[3]*a[1] 819*8fb009dcSAndroid Build Coastguard Worker mul edx 820*8fb009dcSAndroid Build Coastguard Worker add eax,eax 821*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 822*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 823*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 824*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 825*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 826*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 827*8fb009dcSAndroid Build Coastguard Worker ; sqr a[2]*a[2] 828*8fb009dcSAndroid Build Coastguard Worker mul eax 829*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 830*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 831*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [esi] 832*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 833*8fb009dcSAndroid Build Coastguard Worker mov DWORD [16+edi],ecx 834*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 835*8fb009dcSAndroid Build Coastguard Worker ; saved r[4] 836*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 5 837*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 838*8fb009dcSAndroid Build Coastguard Worker ; sqr a[5]*a[0] 839*8fb009dcSAndroid Build Coastguard Worker mul edx 840*8fb009dcSAndroid Build Coastguard Worker add eax,eax 841*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 842*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 843*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 844*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 845*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 846*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 847*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+esi] 848*8fb009dcSAndroid Build Coastguard Worker ; sqr a[4]*a[1] 849*8fb009dcSAndroid Build Coastguard Worker mul edx 850*8fb009dcSAndroid Build Coastguard Worker add eax,eax 851*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 852*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 853*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 854*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 855*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 856*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 857*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+esi] 858*8fb009dcSAndroid Build Coastguard Worker ; sqr a[3]*a[2] 859*8fb009dcSAndroid Build Coastguard Worker mul edx 860*8fb009dcSAndroid Build Coastguard Worker add eax,eax 861*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 862*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 863*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 864*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 865*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 866*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 867*8fb009dcSAndroid Build Coastguard Worker mov DWORD [20+edi],ebp 868*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [esi] 869*8fb009dcSAndroid Build Coastguard Worker ; saved r[5] 870*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 6 871*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 872*8fb009dcSAndroid Build Coastguard Worker ; sqr a[6]*a[0] 873*8fb009dcSAndroid Build Coastguard Worker mul edx 874*8fb009dcSAndroid Build Coastguard Worker add eax,eax 875*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 876*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 877*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 878*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 879*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 880*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 881*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+esi] 882*8fb009dcSAndroid Build Coastguard Worker ; sqr a[5]*a[1] 883*8fb009dcSAndroid Build Coastguard Worker mul edx 884*8fb009dcSAndroid Build Coastguard Worker add eax,eax 885*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 886*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 887*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 888*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 889*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 890*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 891*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+esi] 892*8fb009dcSAndroid Build Coastguard Worker ; sqr a[4]*a[2] 893*8fb009dcSAndroid Build Coastguard Worker mul edx 894*8fb009dcSAndroid Build Coastguard Worker add eax,eax 895*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 896*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 897*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 898*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 899*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 900*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 901*8fb009dcSAndroid Build Coastguard Worker ; sqr a[3]*a[3] 902*8fb009dcSAndroid Build Coastguard Worker mul eax 903*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 904*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 905*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [esi] 906*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 907*8fb009dcSAndroid Build Coastguard Worker mov DWORD [24+edi],ebx 908*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 909*8fb009dcSAndroid Build Coastguard Worker ; saved r[6] 910*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 7 911*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 912*8fb009dcSAndroid Build Coastguard Worker ; sqr a[7]*a[0] 913*8fb009dcSAndroid Build Coastguard Worker mul edx 914*8fb009dcSAndroid Build Coastguard Worker add eax,eax 915*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 916*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 917*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 918*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 919*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 920*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 921*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+esi] 922*8fb009dcSAndroid Build Coastguard Worker ; sqr a[6]*a[1] 923*8fb009dcSAndroid Build Coastguard Worker mul edx 924*8fb009dcSAndroid Build Coastguard Worker add eax,eax 925*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 926*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 927*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 928*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 929*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 930*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 931*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+esi] 932*8fb009dcSAndroid Build Coastguard Worker ; sqr a[5]*a[2] 933*8fb009dcSAndroid Build Coastguard Worker mul edx 934*8fb009dcSAndroid Build Coastguard Worker add eax,eax 935*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 936*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 937*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 938*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 939*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 940*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 941*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+esi] 942*8fb009dcSAndroid Build Coastguard Worker ; sqr a[4]*a[3] 943*8fb009dcSAndroid Build Coastguard Worker mul edx 944*8fb009dcSAndroid Build Coastguard Worker add eax,eax 945*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 946*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 947*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 948*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 949*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 950*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 951*8fb009dcSAndroid Build Coastguard Worker mov DWORD [28+edi],ecx 952*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+esi] 953*8fb009dcSAndroid Build Coastguard Worker ; saved r[7] 954*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 8 955*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 956*8fb009dcSAndroid Build Coastguard Worker ; sqr a[7]*a[1] 957*8fb009dcSAndroid Build Coastguard Worker mul edx 958*8fb009dcSAndroid Build Coastguard Worker add eax,eax 959*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 960*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 961*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 962*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 963*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 964*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 965*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+esi] 966*8fb009dcSAndroid Build Coastguard Worker ; sqr a[6]*a[2] 967*8fb009dcSAndroid Build Coastguard Worker mul edx 968*8fb009dcSAndroid Build Coastguard Worker add eax,eax 969*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 970*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 971*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 972*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 973*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 974*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 975*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+esi] 976*8fb009dcSAndroid Build Coastguard Worker ; sqr a[5]*a[3] 977*8fb009dcSAndroid Build Coastguard Worker mul edx 978*8fb009dcSAndroid Build Coastguard Worker add eax,eax 979*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 980*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 981*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 982*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 983*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [16+esi] 984*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 985*8fb009dcSAndroid Build Coastguard Worker ; sqr a[4]*a[4] 986*8fb009dcSAndroid Build Coastguard Worker mul eax 987*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 988*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 989*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+esi] 990*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 991*8fb009dcSAndroid Build Coastguard Worker mov DWORD [32+edi],ebp 992*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 993*8fb009dcSAndroid Build Coastguard Worker ; saved r[8] 994*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 9 995*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 996*8fb009dcSAndroid Build Coastguard Worker ; sqr a[7]*a[2] 997*8fb009dcSAndroid Build Coastguard Worker mul edx 998*8fb009dcSAndroid Build Coastguard Worker add eax,eax 999*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1000*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1001*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 1002*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 1003*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 1004*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1005*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+esi] 1006*8fb009dcSAndroid Build Coastguard Worker ; sqr a[6]*a[3] 1007*8fb009dcSAndroid Build Coastguard Worker mul edx 1008*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1009*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1010*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1011*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 1012*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 1013*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 1014*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1015*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+esi] 1016*8fb009dcSAndroid Build Coastguard Worker ; sqr a[5]*a[4] 1017*8fb009dcSAndroid Build Coastguard Worker mul edx 1018*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1019*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1020*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1021*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 1022*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 1023*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 1024*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1025*8fb009dcSAndroid Build Coastguard Worker mov DWORD [36+edi],ebx 1026*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [12+esi] 1027*8fb009dcSAndroid Build Coastguard Worker ; saved r[9] 1028*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 10 1029*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 1030*8fb009dcSAndroid Build Coastguard Worker ; sqr a[7]*a[3] 1031*8fb009dcSAndroid Build Coastguard Worker mul edx 1032*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1033*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1034*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1035*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 1036*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 1037*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 1038*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1039*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+esi] 1040*8fb009dcSAndroid Build Coastguard Worker ; sqr a[6]*a[4] 1041*8fb009dcSAndroid Build Coastguard Worker mul edx 1042*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1043*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1044*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1045*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 1046*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 1047*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [20+esi] 1048*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1049*8fb009dcSAndroid Build Coastguard Worker ; sqr a[5]*a[5] 1050*8fb009dcSAndroid Build Coastguard Worker mul eax 1051*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 1052*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 1053*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [16+esi] 1054*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1055*8fb009dcSAndroid Build Coastguard Worker mov DWORD [40+edi],ecx 1056*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 1057*8fb009dcSAndroid Build Coastguard Worker ; saved r[10] 1058*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 11 1059*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 1060*8fb009dcSAndroid Build Coastguard Worker ; sqr a[7]*a[4] 1061*8fb009dcSAndroid Build Coastguard Worker mul edx 1062*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1063*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1064*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 1065*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 1066*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 1067*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 1068*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 1069*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+esi] 1070*8fb009dcSAndroid Build Coastguard Worker ; sqr a[6]*a[5] 1071*8fb009dcSAndroid Build Coastguard Worker mul edx 1072*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1073*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1074*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 1075*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 1076*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 1077*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 1078*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 1079*8fb009dcSAndroid Build Coastguard Worker mov DWORD [44+edi],ebp 1080*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [20+esi] 1081*8fb009dcSAndroid Build Coastguard Worker ; saved r[11] 1082*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 12 1083*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 1084*8fb009dcSAndroid Build Coastguard Worker ; sqr a[7]*a[5] 1085*8fb009dcSAndroid Build Coastguard Worker mul edx 1086*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1087*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1088*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1089*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 1090*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 1091*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [24+esi] 1092*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1093*8fb009dcSAndroid Build Coastguard Worker ; sqr a[6]*a[6] 1094*8fb009dcSAndroid Build Coastguard Worker mul eax 1095*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 1096*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 1097*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [24+esi] 1098*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1099*8fb009dcSAndroid Build Coastguard Worker mov DWORD [48+edi],ebx 1100*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 1101*8fb009dcSAndroid Build Coastguard Worker ; saved r[12] 1102*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 13 1103*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 1104*8fb009dcSAndroid Build Coastguard Worker ; sqr a[7]*a[6] 1105*8fb009dcSAndroid Build Coastguard Worker mul edx 1106*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1107*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1108*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1109*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 1110*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 1111*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [28+esi] 1112*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1113*8fb009dcSAndroid Build Coastguard Worker mov DWORD [52+edi],ecx 1114*8fb009dcSAndroid Build Coastguard Worker ; saved r[13] 1115*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 14 1116*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 1117*8fb009dcSAndroid Build Coastguard Worker ; sqr a[7]*a[7] 1118*8fb009dcSAndroid Build Coastguard Worker mul eax 1119*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 1120*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 1121*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 1122*8fb009dcSAndroid Build Coastguard Worker mov DWORD [56+edi],ebp 1123*8fb009dcSAndroid Build Coastguard Worker ; saved r[14] 1124*8fb009dcSAndroid Build Coastguard Worker mov DWORD [60+edi],ebx 1125*8fb009dcSAndroid Build Coastguard Worker pop ebx 1126*8fb009dcSAndroid Build Coastguard Worker pop ebp 1127*8fb009dcSAndroid Build Coastguard Worker pop edi 1128*8fb009dcSAndroid Build Coastguard Worker pop esi 1129*8fb009dcSAndroid Build Coastguard Worker ret 1130*8fb009dcSAndroid Build Coastguard Workerglobal _bn_sqr_comba4 1131*8fb009dcSAndroid Build Coastguard Workeralign 16 1132*8fb009dcSAndroid Build Coastguard Worker_bn_sqr_comba4: 1133*8fb009dcSAndroid Build Coastguard WorkerL$_bn_sqr_comba4_begin: 1134*8fb009dcSAndroid Build Coastguard Worker push esi 1135*8fb009dcSAndroid Build Coastguard Worker push edi 1136*8fb009dcSAndroid Build Coastguard Worker push ebp 1137*8fb009dcSAndroid Build Coastguard Worker push ebx 1138*8fb009dcSAndroid Build Coastguard Worker mov edi,DWORD [20+esp] 1139*8fb009dcSAndroid Build Coastguard Worker mov esi,DWORD [24+esp] 1140*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 1141*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 1142*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [esi] 1143*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 0 1144*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 1145*8fb009dcSAndroid Build Coastguard Worker ; sqr a[0]*a[0] 1146*8fb009dcSAndroid Build Coastguard Worker mul eax 1147*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 1148*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 1149*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [esi] 1150*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1151*8fb009dcSAndroid Build Coastguard Worker mov DWORD [edi],ebx 1152*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 1153*8fb009dcSAndroid Build Coastguard Worker ; saved r[0] 1154*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 1 1155*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 1156*8fb009dcSAndroid Build Coastguard Worker ; sqr a[1]*a[0] 1157*8fb009dcSAndroid Build Coastguard Worker mul edx 1158*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1159*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1160*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1161*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 1162*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 1163*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 1164*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1165*8fb009dcSAndroid Build Coastguard Worker mov DWORD [4+edi],ecx 1166*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [esi] 1167*8fb009dcSAndroid Build Coastguard Worker ; saved r[1] 1168*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 2 1169*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 1170*8fb009dcSAndroid Build Coastguard Worker ; sqr a[2]*a[0] 1171*8fb009dcSAndroid Build Coastguard Worker mul edx 1172*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1173*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1174*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 1175*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 1176*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 1177*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [4+esi] 1178*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 1179*8fb009dcSAndroid Build Coastguard Worker ; sqr a[1]*a[1] 1180*8fb009dcSAndroid Build Coastguard Worker mul eax 1181*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 1182*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 1183*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [esi] 1184*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 1185*8fb009dcSAndroid Build Coastguard Worker mov DWORD [8+edi],ebp 1186*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 1187*8fb009dcSAndroid Build Coastguard Worker ; saved r[2] 1188*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 3 1189*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 1190*8fb009dcSAndroid Build Coastguard Worker ; sqr a[3]*a[0] 1191*8fb009dcSAndroid Build Coastguard Worker mul edx 1192*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1193*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1194*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1195*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 1196*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 1197*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 1198*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1199*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+esi] 1200*8fb009dcSAndroid Build Coastguard Worker ; sqr a[2]*a[1] 1201*8fb009dcSAndroid Build Coastguard Worker mul edx 1202*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1203*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1204*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1205*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 1206*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 1207*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 1208*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1209*8fb009dcSAndroid Build Coastguard Worker mov DWORD [12+edi],ebx 1210*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [4+esi] 1211*8fb009dcSAndroid Build Coastguard Worker ; saved r[3] 1212*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 4 1213*8fb009dcSAndroid Build Coastguard Worker xor ebx,ebx 1214*8fb009dcSAndroid Build Coastguard Worker ; sqr a[3]*a[1] 1215*8fb009dcSAndroid Build Coastguard Worker mul edx 1216*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1217*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1218*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1219*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 1220*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 1221*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [8+esi] 1222*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1223*8fb009dcSAndroid Build Coastguard Worker ; sqr a[2]*a[2] 1224*8fb009dcSAndroid Build Coastguard Worker mul eax 1225*8fb009dcSAndroid Build Coastguard Worker add ecx,eax 1226*8fb009dcSAndroid Build Coastguard Worker adc ebp,edx 1227*8fb009dcSAndroid Build Coastguard Worker mov edx,DWORD [8+esi] 1228*8fb009dcSAndroid Build Coastguard Worker adc ebx,0 1229*8fb009dcSAndroid Build Coastguard Worker mov DWORD [16+edi],ecx 1230*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 1231*8fb009dcSAndroid Build Coastguard Worker ; saved r[4] 1232*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 5 1233*8fb009dcSAndroid Build Coastguard Worker xor ecx,ecx 1234*8fb009dcSAndroid Build Coastguard Worker ; sqr a[3]*a[2] 1235*8fb009dcSAndroid Build Coastguard Worker mul edx 1236*8fb009dcSAndroid Build Coastguard Worker add eax,eax 1237*8fb009dcSAndroid Build Coastguard Worker adc edx,edx 1238*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 1239*8fb009dcSAndroid Build Coastguard Worker add ebp,eax 1240*8fb009dcSAndroid Build Coastguard Worker adc ebx,edx 1241*8fb009dcSAndroid Build Coastguard Worker mov eax,DWORD [12+esi] 1242*8fb009dcSAndroid Build Coastguard Worker adc ecx,0 1243*8fb009dcSAndroid Build Coastguard Worker mov DWORD [20+edi],ebp 1244*8fb009dcSAndroid Build Coastguard Worker ; saved r[5] 1245*8fb009dcSAndroid Build Coastguard Worker ; ############### Calculate word 6 1246*8fb009dcSAndroid Build Coastguard Worker xor ebp,ebp 1247*8fb009dcSAndroid Build Coastguard Worker ; sqr a[3]*a[3] 1248*8fb009dcSAndroid Build Coastguard Worker mul eax 1249*8fb009dcSAndroid Build Coastguard Worker add ebx,eax 1250*8fb009dcSAndroid Build Coastguard Worker adc ecx,edx 1251*8fb009dcSAndroid Build Coastguard Worker adc ebp,0 1252*8fb009dcSAndroid Build Coastguard Worker mov DWORD [24+edi],ebx 1253*8fb009dcSAndroid Build Coastguard Worker ; saved r[6] 1254*8fb009dcSAndroid Build Coastguard Worker mov DWORD [28+edi],ecx 1255*8fb009dcSAndroid Build Coastguard Worker pop ebx 1256*8fb009dcSAndroid Build Coastguard Worker pop ebp 1257*8fb009dcSAndroid Build Coastguard Worker pop edi 1258*8fb009dcSAndroid Build Coastguard Worker pop esi 1259*8fb009dcSAndroid Build Coastguard Worker ret 1260*8fb009dcSAndroid Build Coastguard Worker%else 1261*8fb009dcSAndroid Build Coastguard Worker; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 1262*8fb009dcSAndroid Build Coastguard Workerret 1263*8fb009dcSAndroid Build Coastguard Worker%endif 1264