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#include <openssl/asm_base.h> 5*8fb009dcSAndroid Build Coastguard Worker 6*8fb009dcSAndroid Build Coastguard Worker#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__) 7*8fb009dcSAndroid Build Coastguard Worker.text 8*8fb009dcSAndroid Build Coastguard Worker.globl _bn_mul_add_words 9*8fb009dcSAndroid Build Coastguard Worker.private_extern _bn_mul_add_words 10*8fb009dcSAndroid Build Coastguard Worker.align 4 11*8fb009dcSAndroid Build Coastguard Worker_bn_mul_add_words: 12*8fb009dcSAndroid Build Coastguard WorkerL_bn_mul_add_words_begin: 13*8fb009dcSAndroid Build Coastguard Worker movl 4(%esp),%eax 14*8fb009dcSAndroid Build Coastguard Worker movl 8(%esp),%edx 15*8fb009dcSAndroid Build Coastguard Worker movl 12(%esp),%ecx 16*8fb009dcSAndroid Build Coastguard Worker movd 16(%esp),%mm0 17*8fb009dcSAndroid Build Coastguard Worker pxor %mm1,%mm1 18*8fb009dcSAndroid Build Coastguard Worker jmp L000maw_sse2_entry 19*8fb009dcSAndroid Build Coastguard Worker.align 4,0x90 20*8fb009dcSAndroid Build Coastguard WorkerL001maw_sse2_unrolled: 21*8fb009dcSAndroid Build Coastguard Worker movd (%eax),%mm3 22*8fb009dcSAndroid Build Coastguard Worker paddq %mm3,%mm1 23*8fb009dcSAndroid Build Coastguard Worker movd (%edx),%mm2 24*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm2 25*8fb009dcSAndroid Build Coastguard Worker movd 4(%edx),%mm4 26*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm4 27*8fb009dcSAndroid Build Coastguard Worker movd 8(%edx),%mm6 28*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm6 29*8fb009dcSAndroid Build Coastguard Worker movd 12(%edx),%mm7 30*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm7 31*8fb009dcSAndroid Build Coastguard Worker paddq %mm2,%mm1 32*8fb009dcSAndroid Build Coastguard Worker movd 4(%eax),%mm3 33*8fb009dcSAndroid Build Coastguard Worker paddq %mm4,%mm3 34*8fb009dcSAndroid Build Coastguard Worker movd 8(%eax),%mm5 35*8fb009dcSAndroid Build Coastguard Worker paddq %mm6,%mm5 36*8fb009dcSAndroid Build Coastguard Worker movd 12(%eax),%mm4 37*8fb009dcSAndroid Build Coastguard Worker paddq %mm4,%mm7 38*8fb009dcSAndroid Build Coastguard Worker movd %mm1,(%eax) 39*8fb009dcSAndroid Build Coastguard Worker movd 16(%edx),%mm2 40*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm2 41*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm1 42*8fb009dcSAndroid Build Coastguard Worker movd 20(%edx),%mm4 43*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm4 44*8fb009dcSAndroid Build Coastguard Worker paddq %mm3,%mm1 45*8fb009dcSAndroid Build Coastguard Worker movd 24(%edx),%mm6 46*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm6 47*8fb009dcSAndroid Build Coastguard Worker movd %mm1,4(%eax) 48*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm1 49*8fb009dcSAndroid Build Coastguard Worker movd 28(%edx),%mm3 50*8fb009dcSAndroid Build Coastguard Worker addl $32,%edx 51*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm3 52*8fb009dcSAndroid Build Coastguard Worker paddq %mm5,%mm1 53*8fb009dcSAndroid Build Coastguard Worker movd 16(%eax),%mm5 54*8fb009dcSAndroid Build Coastguard Worker paddq %mm5,%mm2 55*8fb009dcSAndroid Build Coastguard Worker movd %mm1,8(%eax) 56*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm1 57*8fb009dcSAndroid Build Coastguard Worker paddq %mm7,%mm1 58*8fb009dcSAndroid Build Coastguard Worker movd 20(%eax),%mm5 59*8fb009dcSAndroid Build Coastguard Worker paddq %mm5,%mm4 60*8fb009dcSAndroid Build Coastguard Worker movd %mm1,12(%eax) 61*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm1 62*8fb009dcSAndroid Build Coastguard Worker paddq %mm2,%mm1 63*8fb009dcSAndroid Build Coastguard Worker movd 24(%eax),%mm5 64*8fb009dcSAndroid Build Coastguard Worker paddq %mm5,%mm6 65*8fb009dcSAndroid Build Coastguard Worker movd %mm1,16(%eax) 66*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm1 67*8fb009dcSAndroid Build Coastguard Worker paddq %mm4,%mm1 68*8fb009dcSAndroid Build Coastguard Worker movd 28(%eax),%mm5 69*8fb009dcSAndroid Build Coastguard Worker paddq %mm5,%mm3 70*8fb009dcSAndroid Build Coastguard Worker movd %mm1,20(%eax) 71*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm1 72*8fb009dcSAndroid Build Coastguard Worker paddq %mm6,%mm1 73*8fb009dcSAndroid Build Coastguard Worker movd %mm1,24(%eax) 74*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm1 75*8fb009dcSAndroid Build Coastguard Worker paddq %mm3,%mm1 76*8fb009dcSAndroid Build Coastguard Worker movd %mm1,28(%eax) 77*8fb009dcSAndroid Build Coastguard Worker leal 32(%eax),%eax 78*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm1 79*8fb009dcSAndroid Build Coastguard Worker subl $8,%ecx 80*8fb009dcSAndroid Build Coastguard Worker jz L002maw_sse2_exit 81*8fb009dcSAndroid Build Coastguard WorkerL000maw_sse2_entry: 82*8fb009dcSAndroid Build Coastguard Worker testl $4294967288,%ecx 83*8fb009dcSAndroid Build Coastguard Worker jnz L001maw_sse2_unrolled 84*8fb009dcSAndroid Build Coastguard Worker.align 2,0x90 85*8fb009dcSAndroid Build Coastguard WorkerL003maw_sse2_loop: 86*8fb009dcSAndroid Build Coastguard Worker movd (%edx),%mm2 87*8fb009dcSAndroid Build Coastguard Worker movd (%eax),%mm3 88*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm2 89*8fb009dcSAndroid Build Coastguard Worker leal 4(%edx),%edx 90*8fb009dcSAndroid Build Coastguard Worker paddq %mm3,%mm1 91*8fb009dcSAndroid Build Coastguard Worker paddq %mm2,%mm1 92*8fb009dcSAndroid Build Coastguard Worker movd %mm1,(%eax) 93*8fb009dcSAndroid Build Coastguard Worker subl $1,%ecx 94*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm1 95*8fb009dcSAndroid Build Coastguard Worker leal 4(%eax),%eax 96*8fb009dcSAndroid Build Coastguard Worker jnz L003maw_sse2_loop 97*8fb009dcSAndroid Build Coastguard WorkerL002maw_sse2_exit: 98*8fb009dcSAndroid Build Coastguard Worker movd %mm1,%eax 99*8fb009dcSAndroid Build Coastguard Worker emms 100*8fb009dcSAndroid Build Coastguard Worker ret 101*8fb009dcSAndroid Build Coastguard Worker popl %edi 102*8fb009dcSAndroid Build Coastguard Worker popl %esi 103*8fb009dcSAndroid Build Coastguard Worker popl %ebx 104*8fb009dcSAndroid Build Coastguard Worker popl %ebp 105*8fb009dcSAndroid Build Coastguard Worker ret 106*8fb009dcSAndroid Build Coastguard Worker.globl _bn_mul_words 107*8fb009dcSAndroid Build Coastguard Worker.private_extern _bn_mul_words 108*8fb009dcSAndroid Build Coastguard Worker.align 4 109*8fb009dcSAndroid Build Coastguard Worker_bn_mul_words: 110*8fb009dcSAndroid Build Coastguard WorkerL_bn_mul_words_begin: 111*8fb009dcSAndroid Build Coastguard Worker movl 4(%esp),%eax 112*8fb009dcSAndroid Build Coastguard Worker movl 8(%esp),%edx 113*8fb009dcSAndroid Build Coastguard Worker movl 12(%esp),%ecx 114*8fb009dcSAndroid Build Coastguard Worker movd 16(%esp),%mm0 115*8fb009dcSAndroid Build Coastguard Worker pxor %mm1,%mm1 116*8fb009dcSAndroid Build Coastguard Worker.align 4,0x90 117*8fb009dcSAndroid Build Coastguard WorkerL004mw_sse2_loop: 118*8fb009dcSAndroid Build Coastguard Worker movd (%edx),%mm2 119*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm2 120*8fb009dcSAndroid Build Coastguard Worker leal 4(%edx),%edx 121*8fb009dcSAndroid Build Coastguard Worker paddq %mm2,%mm1 122*8fb009dcSAndroid Build Coastguard Worker movd %mm1,(%eax) 123*8fb009dcSAndroid Build Coastguard Worker subl $1,%ecx 124*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm1 125*8fb009dcSAndroid Build Coastguard Worker leal 4(%eax),%eax 126*8fb009dcSAndroid Build Coastguard Worker jnz L004mw_sse2_loop 127*8fb009dcSAndroid Build Coastguard Worker movd %mm1,%eax 128*8fb009dcSAndroid Build Coastguard Worker emms 129*8fb009dcSAndroid Build Coastguard Worker ret 130*8fb009dcSAndroid Build Coastguard Worker popl %edi 131*8fb009dcSAndroid Build Coastguard Worker popl %esi 132*8fb009dcSAndroid Build Coastguard Worker popl %ebx 133*8fb009dcSAndroid Build Coastguard Worker popl %ebp 134*8fb009dcSAndroid Build Coastguard Worker ret 135*8fb009dcSAndroid Build Coastguard Worker.globl _bn_sqr_words 136*8fb009dcSAndroid Build Coastguard Worker.private_extern _bn_sqr_words 137*8fb009dcSAndroid Build Coastguard Worker.align 4 138*8fb009dcSAndroid Build Coastguard Worker_bn_sqr_words: 139*8fb009dcSAndroid Build Coastguard WorkerL_bn_sqr_words_begin: 140*8fb009dcSAndroid Build Coastguard Worker movl 4(%esp),%eax 141*8fb009dcSAndroid Build Coastguard Worker movl 8(%esp),%edx 142*8fb009dcSAndroid Build Coastguard Worker movl 12(%esp),%ecx 143*8fb009dcSAndroid Build Coastguard Worker.align 4,0x90 144*8fb009dcSAndroid Build Coastguard WorkerL005sqr_sse2_loop: 145*8fb009dcSAndroid Build Coastguard Worker movd (%edx),%mm0 146*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm0,%mm0 147*8fb009dcSAndroid Build Coastguard Worker leal 4(%edx),%edx 148*8fb009dcSAndroid Build Coastguard Worker movq %mm0,(%eax) 149*8fb009dcSAndroid Build Coastguard Worker subl $1,%ecx 150*8fb009dcSAndroid Build Coastguard Worker leal 8(%eax),%eax 151*8fb009dcSAndroid Build Coastguard Worker jnz L005sqr_sse2_loop 152*8fb009dcSAndroid Build Coastguard Worker emms 153*8fb009dcSAndroid Build Coastguard Worker ret 154*8fb009dcSAndroid Build Coastguard Worker popl %edi 155*8fb009dcSAndroid Build Coastguard Worker popl %esi 156*8fb009dcSAndroid Build Coastguard Worker popl %ebx 157*8fb009dcSAndroid Build Coastguard Worker popl %ebp 158*8fb009dcSAndroid Build Coastguard Worker ret 159*8fb009dcSAndroid Build Coastguard Worker.globl _bn_div_words 160*8fb009dcSAndroid Build Coastguard Worker.private_extern _bn_div_words 161*8fb009dcSAndroid Build Coastguard Worker.align 4 162*8fb009dcSAndroid Build Coastguard Worker_bn_div_words: 163*8fb009dcSAndroid Build Coastguard WorkerL_bn_div_words_begin: 164*8fb009dcSAndroid Build Coastguard Worker movl 4(%esp),%edx 165*8fb009dcSAndroid Build Coastguard Worker movl 8(%esp),%eax 166*8fb009dcSAndroid Build Coastguard Worker movl 12(%esp),%ecx 167*8fb009dcSAndroid Build Coastguard Worker divl %ecx 168*8fb009dcSAndroid Build Coastguard Worker ret 169*8fb009dcSAndroid Build Coastguard Worker.globl _bn_add_words 170*8fb009dcSAndroid Build Coastguard Worker.private_extern _bn_add_words 171*8fb009dcSAndroid Build Coastguard Worker.align 4 172*8fb009dcSAndroid Build Coastguard Worker_bn_add_words: 173*8fb009dcSAndroid Build Coastguard WorkerL_bn_add_words_begin: 174*8fb009dcSAndroid Build Coastguard Worker pushl %ebp 175*8fb009dcSAndroid Build Coastguard Worker pushl %ebx 176*8fb009dcSAndroid Build Coastguard Worker pushl %esi 177*8fb009dcSAndroid Build Coastguard Worker pushl %edi 178*8fb009dcSAndroid Build Coastguard Worker 179*8fb009dcSAndroid Build Coastguard Worker movl 20(%esp),%ebx 180*8fb009dcSAndroid Build Coastguard Worker movl 24(%esp),%esi 181*8fb009dcSAndroid Build Coastguard Worker movl 28(%esp),%edi 182*8fb009dcSAndroid Build Coastguard Worker movl 32(%esp),%ebp 183*8fb009dcSAndroid Build Coastguard Worker xorl %eax,%eax 184*8fb009dcSAndroid Build Coastguard Worker andl $4294967288,%ebp 185*8fb009dcSAndroid Build Coastguard Worker jz L006aw_finish 186*8fb009dcSAndroid Build Coastguard WorkerL007aw_loop: 187*8fb009dcSAndroid Build Coastguard Worker # Round 0 188*8fb009dcSAndroid Build Coastguard Worker movl (%esi),%ecx 189*8fb009dcSAndroid Build Coastguard Worker movl (%edi),%edx 190*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 191*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 192*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 193*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 194*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 195*8fb009dcSAndroid Build Coastguard Worker movl %ecx,(%ebx) 196*8fb009dcSAndroid Build Coastguard Worker # Round 1 197*8fb009dcSAndroid Build Coastguard Worker movl 4(%esi),%ecx 198*8fb009dcSAndroid Build Coastguard Worker movl 4(%edi),%edx 199*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 200*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 201*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 202*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 203*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 204*8fb009dcSAndroid Build Coastguard Worker movl %ecx,4(%ebx) 205*8fb009dcSAndroid Build Coastguard Worker # Round 2 206*8fb009dcSAndroid Build Coastguard Worker movl 8(%esi),%ecx 207*8fb009dcSAndroid Build Coastguard Worker movl 8(%edi),%edx 208*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 209*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 210*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 211*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 212*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 213*8fb009dcSAndroid Build Coastguard Worker movl %ecx,8(%ebx) 214*8fb009dcSAndroid Build Coastguard Worker # Round 3 215*8fb009dcSAndroid Build Coastguard Worker movl 12(%esi),%ecx 216*8fb009dcSAndroid Build Coastguard Worker movl 12(%edi),%edx 217*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 218*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 219*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 220*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 221*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 222*8fb009dcSAndroid Build Coastguard Worker movl %ecx,12(%ebx) 223*8fb009dcSAndroid Build Coastguard Worker # Round 4 224*8fb009dcSAndroid Build Coastguard Worker movl 16(%esi),%ecx 225*8fb009dcSAndroid Build Coastguard Worker movl 16(%edi),%edx 226*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 227*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 228*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 229*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 230*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 231*8fb009dcSAndroid Build Coastguard Worker movl %ecx,16(%ebx) 232*8fb009dcSAndroid Build Coastguard Worker # Round 5 233*8fb009dcSAndroid Build Coastguard Worker movl 20(%esi),%ecx 234*8fb009dcSAndroid Build Coastguard Worker movl 20(%edi),%edx 235*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 236*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 237*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 238*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 239*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 240*8fb009dcSAndroid Build Coastguard Worker movl %ecx,20(%ebx) 241*8fb009dcSAndroid Build Coastguard Worker # Round 6 242*8fb009dcSAndroid Build Coastguard Worker movl 24(%esi),%ecx 243*8fb009dcSAndroid Build Coastguard Worker movl 24(%edi),%edx 244*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 245*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 246*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 247*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 248*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 249*8fb009dcSAndroid Build Coastguard Worker movl %ecx,24(%ebx) 250*8fb009dcSAndroid Build Coastguard Worker # Round 7 251*8fb009dcSAndroid Build Coastguard Worker movl 28(%esi),%ecx 252*8fb009dcSAndroid Build Coastguard Worker movl 28(%edi),%edx 253*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 254*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 255*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 256*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 257*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 258*8fb009dcSAndroid Build Coastguard Worker movl %ecx,28(%ebx) 259*8fb009dcSAndroid Build Coastguard Worker 260*8fb009dcSAndroid Build Coastguard Worker addl $32,%esi 261*8fb009dcSAndroid Build Coastguard Worker addl $32,%edi 262*8fb009dcSAndroid Build Coastguard Worker addl $32,%ebx 263*8fb009dcSAndroid Build Coastguard Worker subl $8,%ebp 264*8fb009dcSAndroid Build Coastguard Worker jnz L007aw_loop 265*8fb009dcSAndroid Build Coastguard WorkerL006aw_finish: 266*8fb009dcSAndroid Build Coastguard Worker movl 32(%esp),%ebp 267*8fb009dcSAndroid Build Coastguard Worker andl $7,%ebp 268*8fb009dcSAndroid Build Coastguard Worker jz L008aw_end 269*8fb009dcSAndroid Build Coastguard Worker # Tail Round 0 270*8fb009dcSAndroid Build Coastguard Worker movl (%esi),%ecx 271*8fb009dcSAndroid Build Coastguard Worker movl (%edi),%edx 272*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 273*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 274*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 275*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 276*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 277*8fb009dcSAndroid Build Coastguard Worker decl %ebp 278*8fb009dcSAndroid Build Coastguard Worker movl %ecx,(%ebx) 279*8fb009dcSAndroid Build Coastguard Worker jz L008aw_end 280*8fb009dcSAndroid Build Coastguard Worker # Tail Round 1 281*8fb009dcSAndroid Build Coastguard Worker movl 4(%esi),%ecx 282*8fb009dcSAndroid Build Coastguard Worker movl 4(%edi),%edx 283*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 284*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 285*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 286*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 287*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 288*8fb009dcSAndroid Build Coastguard Worker decl %ebp 289*8fb009dcSAndroid Build Coastguard Worker movl %ecx,4(%ebx) 290*8fb009dcSAndroid Build Coastguard Worker jz L008aw_end 291*8fb009dcSAndroid Build Coastguard Worker # Tail Round 2 292*8fb009dcSAndroid Build Coastguard Worker movl 8(%esi),%ecx 293*8fb009dcSAndroid Build Coastguard Worker movl 8(%edi),%edx 294*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 295*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 296*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 297*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 298*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 299*8fb009dcSAndroid Build Coastguard Worker decl %ebp 300*8fb009dcSAndroid Build Coastguard Worker movl %ecx,8(%ebx) 301*8fb009dcSAndroid Build Coastguard Worker jz L008aw_end 302*8fb009dcSAndroid Build Coastguard Worker # Tail Round 3 303*8fb009dcSAndroid Build Coastguard Worker movl 12(%esi),%ecx 304*8fb009dcSAndroid Build Coastguard Worker movl 12(%edi),%edx 305*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 306*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 307*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 308*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 309*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 310*8fb009dcSAndroid Build Coastguard Worker decl %ebp 311*8fb009dcSAndroid Build Coastguard Worker movl %ecx,12(%ebx) 312*8fb009dcSAndroid Build Coastguard Worker jz L008aw_end 313*8fb009dcSAndroid Build Coastguard Worker # Tail Round 4 314*8fb009dcSAndroid Build Coastguard Worker movl 16(%esi),%ecx 315*8fb009dcSAndroid Build Coastguard Worker movl 16(%edi),%edx 316*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 317*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 318*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 319*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 320*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 321*8fb009dcSAndroid Build Coastguard Worker decl %ebp 322*8fb009dcSAndroid Build Coastguard Worker movl %ecx,16(%ebx) 323*8fb009dcSAndroid Build Coastguard Worker jz L008aw_end 324*8fb009dcSAndroid Build Coastguard Worker # Tail Round 5 325*8fb009dcSAndroid Build Coastguard Worker movl 20(%esi),%ecx 326*8fb009dcSAndroid Build Coastguard Worker movl 20(%edi),%edx 327*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 328*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 329*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 330*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 331*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 332*8fb009dcSAndroid Build Coastguard Worker decl %ebp 333*8fb009dcSAndroid Build Coastguard Worker movl %ecx,20(%ebx) 334*8fb009dcSAndroid Build Coastguard Worker jz L008aw_end 335*8fb009dcSAndroid Build Coastguard Worker # Tail Round 6 336*8fb009dcSAndroid Build Coastguard Worker movl 24(%esi),%ecx 337*8fb009dcSAndroid Build Coastguard Worker movl 24(%edi),%edx 338*8fb009dcSAndroid Build Coastguard Worker addl %eax,%ecx 339*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 340*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 341*8fb009dcSAndroid Build Coastguard Worker addl %edx,%ecx 342*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 343*8fb009dcSAndroid Build Coastguard Worker movl %ecx,24(%ebx) 344*8fb009dcSAndroid Build Coastguard WorkerL008aw_end: 345*8fb009dcSAndroid Build Coastguard Worker popl %edi 346*8fb009dcSAndroid Build Coastguard Worker popl %esi 347*8fb009dcSAndroid Build Coastguard Worker popl %ebx 348*8fb009dcSAndroid Build Coastguard Worker popl %ebp 349*8fb009dcSAndroid Build Coastguard Worker ret 350*8fb009dcSAndroid Build Coastguard Worker.globl _bn_sub_words 351*8fb009dcSAndroid Build Coastguard Worker.private_extern _bn_sub_words 352*8fb009dcSAndroid Build Coastguard Worker.align 4 353*8fb009dcSAndroid Build Coastguard Worker_bn_sub_words: 354*8fb009dcSAndroid Build Coastguard WorkerL_bn_sub_words_begin: 355*8fb009dcSAndroid Build Coastguard Worker pushl %ebp 356*8fb009dcSAndroid Build Coastguard Worker pushl %ebx 357*8fb009dcSAndroid Build Coastguard Worker pushl %esi 358*8fb009dcSAndroid Build Coastguard Worker pushl %edi 359*8fb009dcSAndroid Build Coastguard Worker 360*8fb009dcSAndroid Build Coastguard Worker movl 20(%esp),%ebx 361*8fb009dcSAndroid Build Coastguard Worker movl 24(%esp),%esi 362*8fb009dcSAndroid Build Coastguard Worker movl 28(%esp),%edi 363*8fb009dcSAndroid Build Coastguard Worker movl 32(%esp),%ebp 364*8fb009dcSAndroid Build Coastguard Worker xorl %eax,%eax 365*8fb009dcSAndroid Build Coastguard Worker andl $4294967288,%ebp 366*8fb009dcSAndroid Build Coastguard Worker jz L009aw_finish 367*8fb009dcSAndroid Build Coastguard WorkerL010aw_loop: 368*8fb009dcSAndroid Build Coastguard Worker # Round 0 369*8fb009dcSAndroid Build Coastguard Worker movl (%esi),%ecx 370*8fb009dcSAndroid Build Coastguard Worker movl (%edi),%edx 371*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 372*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 373*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 374*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 375*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 376*8fb009dcSAndroid Build Coastguard Worker movl %ecx,(%ebx) 377*8fb009dcSAndroid Build Coastguard Worker # Round 1 378*8fb009dcSAndroid Build Coastguard Worker movl 4(%esi),%ecx 379*8fb009dcSAndroid Build Coastguard Worker movl 4(%edi),%edx 380*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 381*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 382*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 383*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 384*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 385*8fb009dcSAndroid Build Coastguard Worker movl %ecx,4(%ebx) 386*8fb009dcSAndroid Build Coastguard Worker # Round 2 387*8fb009dcSAndroid Build Coastguard Worker movl 8(%esi),%ecx 388*8fb009dcSAndroid Build Coastguard Worker movl 8(%edi),%edx 389*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 390*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 391*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 392*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 393*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 394*8fb009dcSAndroid Build Coastguard Worker movl %ecx,8(%ebx) 395*8fb009dcSAndroid Build Coastguard Worker # Round 3 396*8fb009dcSAndroid Build Coastguard Worker movl 12(%esi),%ecx 397*8fb009dcSAndroid Build Coastguard Worker movl 12(%edi),%edx 398*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 399*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 400*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 401*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 402*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 403*8fb009dcSAndroid Build Coastguard Worker movl %ecx,12(%ebx) 404*8fb009dcSAndroid Build Coastguard Worker # Round 4 405*8fb009dcSAndroid Build Coastguard Worker movl 16(%esi),%ecx 406*8fb009dcSAndroid Build Coastguard Worker movl 16(%edi),%edx 407*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 408*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 409*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 410*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 411*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 412*8fb009dcSAndroid Build Coastguard Worker movl %ecx,16(%ebx) 413*8fb009dcSAndroid Build Coastguard Worker # Round 5 414*8fb009dcSAndroid Build Coastguard Worker movl 20(%esi),%ecx 415*8fb009dcSAndroid Build Coastguard Worker movl 20(%edi),%edx 416*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 417*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 418*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 419*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 420*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 421*8fb009dcSAndroid Build Coastguard Worker movl %ecx,20(%ebx) 422*8fb009dcSAndroid Build Coastguard Worker # Round 6 423*8fb009dcSAndroid Build Coastguard Worker movl 24(%esi),%ecx 424*8fb009dcSAndroid Build Coastguard Worker movl 24(%edi),%edx 425*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 426*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 427*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 428*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 429*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 430*8fb009dcSAndroid Build Coastguard Worker movl %ecx,24(%ebx) 431*8fb009dcSAndroid Build Coastguard Worker # Round 7 432*8fb009dcSAndroid Build Coastguard Worker movl 28(%esi),%ecx 433*8fb009dcSAndroid Build Coastguard Worker movl 28(%edi),%edx 434*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 435*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 436*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 437*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 438*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 439*8fb009dcSAndroid Build Coastguard Worker movl %ecx,28(%ebx) 440*8fb009dcSAndroid Build Coastguard Worker 441*8fb009dcSAndroid Build Coastguard Worker addl $32,%esi 442*8fb009dcSAndroid Build Coastguard Worker addl $32,%edi 443*8fb009dcSAndroid Build Coastguard Worker addl $32,%ebx 444*8fb009dcSAndroid Build Coastguard Worker subl $8,%ebp 445*8fb009dcSAndroid Build Coastguard Worker jnz L010aw_loop 446*8fb009dcSAndroid Build Coastguard WorkerL009aw_finish: 447*8fb009dcSAndroid Build Coastguard Worker movl 32(%esp),%ebp 448*8fb009dcSAndroid Build Coastguard Worker andl $7,%ebp 449*8fb009dcSAndroid Build Coastguard Worker jz L011aw_end 450*8fb009dcSAndroid Build Coastguard Worker # Tail Round 0 451*8fb009dcSAndroid Build Coastguard Worker movl (%esi),%ecx 452*8fb009dcSAndroid Build Coastguard Worker movl (%edi),%edx 453*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 454*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 455*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 456*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 457*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 458*8fb009dcSAndroid Build Coastguard Worker decl %ebp 459*8fb009dcSAndroid Build Coastguard Worker movl %ecx,(%ebx) 460*8fb009dcSAndroid Build Coastguard Worker jz L011aw_end 461*8fb009dcSAndroid Build Coastguard Worker # Tail Round 1 462*8fb009dcSAndroid Build Coastguard Worker movl 4(%esi),%ecx 463*8fb009dcSAndroid Build Coastguard Worker movl 4(%edi),%edx 464*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 465*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 466*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 467*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 468*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 469*8fb009dcSAndroid Build Coastguard Worker decl %ebp 470*8fb009dcSAndroid Build Coastguard Worker movl %ecx,4(%ebx) 471*8fb009dcSAndroid Build Coastguard Worker jz L011aw_end 472*8fb009dcSAndroid Build Coastguard Worker # Tail Round 2 473*8fb009dcSAndroid Build Coastguard Worker movl 8(%esi),%ecx 474*8fb009dcSAndroid Build Coastguard Worker movl 8(%edi),%edx 475*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 476*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 477*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 478*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 479*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 480*8fb009dcSAndroid Build Coastguard Worker decl %ebp 481*8fb009dcSAndroid Build Coastguard Worker movl %ecx,8(%ebx) 482*8fb009dcSAndroid Build Coastguard Worker jz L011aw_end 483*8fb009dcSAndroid Build Coastguard Worker # Tail Round 3 484*8fb009dcSAndroid Build Coastguard Worker movl 12(%esi),%ecx 485*8fb009dcSAndroid Build Coastguard Worker movl 12(%edi),%edx 486*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 487*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 488*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 489*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 490*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 491*8fb009dcSAndroid Build Coastguard Worker decl %ebp 492*8fb009dcSAndroid Build Coastguard Worker movl %ecx,12(%ebx) 493*8fb009dcSAndroid Build Coastguard Worker jz L011aw_end 494*8fb009dcSAndroid Build Coastguard Worker # Tail Round 4 495*8fb009dcSAndroid Build Coastguard Worker movl 16(%esi),%ecx 496*8fb009dcSAndroid Build Coastguard Worker movl 16(%edi),%edx 497*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 498*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 499*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 500*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 501*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 502*8fb009dcSAndroid Build Coastguard Worker decl %ebp 503*8fb009dcSAndroid Build Coastguard Worker movl %ecx,16(%ebx) 504*8fb009dcSAndroid Build Coastguard Worker jz L011aw_end 505*8fb009dcSAndroid Build Coastguard Worker # Tail Round 5 506*8fb009dcSAndroid Build Coastguard Worker movl 20(%esi),%ecx 507*8fb009dcSAndroid Build Coastguard Worker movl 20(%edi),%edx 508*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 509*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 510*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 511*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 512*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 513*8fb009dcSAndroid Build Coastguard Worker decl %ebp 514*8fb009dcSAndroid Build Coastguard Worker movl %ecx,20(%ebx) 515*8fb009dcSAndroid Build Coastguard Worker jz L011aw_end 516*8fb009dcSAndroid Build Coastguard Worker # Tail Round 6 517*8fb009dcSAndroid Build Coastguard Worker movl 24(%esi),%ecx 518*8fb009dcSAndroid Build Coastguard Worker movl 24(%edi),%edx 519*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ecx 520*8fb009dcSAndroid Build Coastguard Worker movl $0,%eax 521*8fb009dcSAndroid Build Coastguard Worker adcl %eax,%eax 522*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ecx 523*8fb009dcSAndroid Build Coastguard Worker adcl $0,%eax 524*8fb009dcSAndroid Build Coastguard Worker movl %ecx,24(%ebx) 525*8fb009dcSAndroid Build Coastguard WorkerL011aw_end: 526*8fb009dcSAndroid Build Coastguard Worker popl %edi 527*8fb009dcSAndroid Build Coastguard Worker popl %esi 528*8fb009dcSAndroid Build Coastguard Worker popl %ebx 529*8fb009dcSAndroid Build Coastguard Worker popl %ebp 530*8fb009dcSAndroid Build Coastguard Worker ret 531*8fb009dcSAndroid Build Coastguard Worker#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__) 532