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_mont 9*8fb009dcSAndroid Build Coastguard Worker.private_extern _bn_mul_mont 10*8fb009dcSAndroid Build Coastguard Worker.align 4 11*8fb009dcSAndroid Build Coastguard Worker_bn_mul_mont: 12*8fb009dcSAndroid Build Coastguard WorkerL_bn_mul_mont_begin: 13*8fb009dcSAndroid Build Coastguard Worker pushl %ebp 14*8fb009dcSAndroid Build Coastguard Worker pushl %ebx 15*8fb009dcSAndroid Build Coastguard Worker pushl %esi 16*8fb009dcSAndroid Build Coastguard Worker pushl %edi 17*8fb009dcSAndroid Build Coastguard Worker xorl %eax,%eax 18*8fb009dcSAndroid Build Coastguard Worker movl 40(%esp),%edi 19*8fb009dcSAndroid Build Coastguard Worker cmpl $4,%edi 20*8fb009dcSAndroid Build Coastguard Worker jl L000just_leave 21*8fb009dcSAndroid Build Coastguard Worker leal 20(%esp),%esi 22*8fb009dcSAndroid Build Coastguard Worker leal 24(%esp),%edx 23*8fb009dcSAndroid Build Coastguard Worker addl $2,%edi 24*8fb009dcSAndroid Build Coastguard Worker negl %edi 25*8fb009dcSAndroid Build Coastguard Worker leal -32(%esp,%edi,4),%ebp 26*8fb009dcSAndroid Build Coastguard Worker negl %edi 27*8fb009dcSAndroid Build Coastguard Worker movl %ebp,%eax 28*8fb009dcSAndroid Build Coastguard Worker subl %edx,%eax 29*8fb009dcSAndroid Build Coastguard Worker andl $2047,%eax 30*8fb009dcSAndroid Build Coastguard Worker subl %eax,%ebp 31*8fb009dcSAndroid Build Coastguard Worker xorl %ebp,%edx 32*8fb009dcSAndroid Build Coastguard Worker andl $2048,%edx 33*8fb009dcSAndroid Build Coastguard Worker xorl $2048,%edx 34*8fb009dcSAndroid Build Coastguard Worker subl %edx,%ebp 35*8fb009dcSAndroid Build Coastguard Worker andl $-64,%ebp 36*8fb009dcSAndroid Build Coastguard Worker movl %esp,%eax 37*8fb009dcSAndroid Build Coastguard Worker subl %ebp,%eax 38*8fb009dcSAndroid Build Coastguard Worker andl $-4096,%eax 39*8fb009dcSAndroid Build Coastguard Worker movl %esp,%edx 40*8fb009dcSAndroid Build Coastguard Worker leal (%ebp,%eax,1),%esp 41*8fb009dcSAndroid Build Coastguard Worker movl (%esp),%eax 42*8fb009dcSAndroid Build Coastguard Worker cmpl %ebp,%esp 43*8fb009dcSAndroid Build Coastguard Worker ja L001page_walk 44*8fb009dcSAndroid Build Coastguard Worker jmp L002page_walk_done 45*8fb009dcSAndroid Build Coastguard Worker.align 4,0x90 46*8fb009dcSAndroid Build Coastguard WorkerL001page_walk: 47*8fb009dcSAndroid Build Coastguard Worker leal -4096(%esp),%esp 48*8fb009dcSAndroid Build Coastguard Worker movl (%esp),%eax 49*8fb009dcSAndroid Build Coastguard Worker cmpl %ebp,%esp 50*8fb009dcSAndroid Build Coastguard Worker ja L001page_walk 51*8fb009dcSAndroid Build Coastguard WorkerL002page_walk_done: 52*8fb009dcSAndroid Build Coastguard Worker movl (%esi),%eax 53*8fb009dcSAndroid Build Coastguard Worker movl 4(%esi),%ebx 54*8fb009dcSAndroid Build Coastguard Worker movl 8(%esi),%ecx 55*8fb009dcSAndroid Build Coastguard Worker movl 12(%esi),%ebp 56*8fb009dcSAndroid Build Coastguard Worker movl 16(%esi),%esi 57*8fb009dcSAndroid Build Coastguard Worker movl (%esi),%esi 58*8fb009dcSAndroid Build Coastguard Worker movl %eax,4(%esp) 59*8fb009dcSAndroid Build Coastguard Worker movl %ebx,8(%esp) 60*8fb009dcSAndroid Build Coastguard Worker movl %ecx,12(%esp) 61*8fb009dcSAndroid Build Coastguard Worker movl %ebp,16(%esp) 62*8fb009dcSAndroid Build Coastguard Worker movl %esi,20(%esp) 63*8fb009dcSAndroid Build Coastguard Worker leal -3(%edi),%ebx 64*8fb009dcSAndroid Build Coastguard Worker movl %edx,24(%esp) 65*8fb009dcSAndroid Build Coastguard Worker movl $-1,%eax 66*8fb009dcSAndroid Build Coastguard Worker movd %eax,%mm7 67*8fb009dcSAndroid Build Coastguard Worker movl 8(%esp),%esi 68*8fb009dcSAndroid Build Coastguard Worker movl 12(%esp),%edi 69*8fb009dcSAndroid Build Coastguard Worker movl 16(%esp),%ebp 70*8fb009dcSAndroid Build Coastguard Worker xorl %edx,%edx 71*8fb009dcSAndroid Build Coastguard Worker xorl %ecx,%ecx 72*8fb009dcSAndroid Build Coastguard Worker movd (%edi),%mm4 73*8fb009dcSAndroid Build Coastguard Worker movd (%esi),%mm5 74*8fb009dcSAndroid Build Coastguard Worker movd (%ebp),%mm3 75*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm4,%mm5 76*8fb009dcSAndroid Build Coastguard Worker movq %mm5,%mm2 77*8fb009dcSAndroid Build Coastguard Worker movq %mm5,%mm0 78*8fb009dcSAndroid Build Coastguard Worker pand %mm7,%mm0 79*8fb009dcSAndroid Build Coastguard Worker pmuludq 20(%esp),%mm5 80*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm5,%mm3 81*8fb009dcSAndroid Build Coastguard Worker paddq %mm0,%mm3 82*8fb009dcSAndroid Build Coastguard Worker movd 4(%ebp),%mm1 83*8fb009dcSAndroid Build Coastguard Worker movd 4(%esi),%mm0 84*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm2 85*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm3 86*8fb009dcSAndroid Build Coastguard Worker incl %ecx 87*8fb009dcSAndroid Build Coastguard Worker.align 4,0x90 88*8fb009dcSAndroid Build Coastguard WorkerL0031st: 89*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm4,%mm0 90*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm5,%mm1 91*8fb009dcSAndroid Build Coastguard Worker paddq %mm0,%mm2 92*8fb009dcSAndroid Build Coastguard Worker paddq %mm1,%mm3 93*8fb009dcSAndroid Build Coastguard Worker movq %mm2,%mm0 94*8fb009dcSAndroid Build Coastguard Worker pand %mm7,%mm0 95*8fb009dcSAndroid Build Coastguard Worker movd 4(%ebp,%ecx,4),%mm1 96*8fb009dcSAndroid Build Coastguard Worker paddq %mm0,%mm3 97*8fb009dcSAndroid Build Coastguard Worker movd 4(%esi,%ecx,4),%mm0 98*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm2 99*8fb009dcSAndroid Build Coastguard Worker movd %mm3,28(%esp,%ecx,4) 100*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm3 101*8fb009dcSAndroid Build Coastguard Worker leal 1(%ecx),%ecx 102*8fb009dcSAndroid Build Coastguard Worker cmpl %ebx,%ecx 103*8fb009dcSAndroid Build Coastguard Worker jl L0031st 104*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm4,%mm0 105*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm5,%mm1 106*8fb009dcSAndroid Build Coastguard Worker paddq %mm0,%mm2 107*8fb009dcSAndroid Build Coastguard Worker paddq %mm1,%mm3 108*8fb009dcSAndroid Build Coastguard Worker movq %mm2,%mm0 109*8fb009dcSAndroid Build Coastguard Worker pand %mm7,%mm0 110*8fb009dcSAndroid Build Coastguard Worker paddq %mm0,%mm3 111*8fb009dcSAndroid Build Coastguard Worker movd %mm3,28(%esp,%ecx,4) 112*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm2 113*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm3 114*8fb009dcSAndroid Build Coastguard Worker paddq %mm2,%mm3 115*8fb009dcSAndroid Build Coastguard Worker movq %mm3,32(%esp,%ebx,4) 116*8fb009dcSAndroid Build Coastguard Worker incl %edx 117*8fb009dcSAndroid Build Coastguard WorkerL004outer: 118*8fb009dcSAndroid Build Coastguard Worker xorl %ecx,%ecx 119*8fb009dcSAndroid Build Coastguard Worker movd (%edi,%edx,4),%mm4 120*8fb009dcSAndroid Build Coastguard Worker movd (%esi),%mm5 121*8fb009dcSAndroid Build Coastguard Worker movd 32(%esp),%mm6 122*8fb009dcSAndroid Build Coastguard Worker movd (%ebp),%mm3 123*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm4,%mm5 124*8fb009dcSAndroid Build Coastguard Worker paddq %mm6,%mm5 125*8fb009dcSAndroid Build Coastguard Worker movq %mm5,%mm0 126*8fb009dcSAndroid Build Coastguard Worker movq %mm5,%mm2 127*8fb009dcSAndroid Build Coastguard Worker pand %mm7,%mm0 128*8fb009dcSAndroid Build Coastguard Worker pmuludq 20(%esp),%mm5 129*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm5,%mm3 130*8fb009dcSAndroid Build Coastguard Worker paddq %mm0,%mm3 131*8fb009dcSAndroid Build Coastguard Worker movd 36(%esp),%mm6 132*8fb009dcSAndroid Build Coastguard Worker movd 4(%ebp),%mm1 133*8fb009dcSAndroid Build Coastguard Worker movd 4(%esi),%mm0 134*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm2 135*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm3 136*8fb009dcSAndroid Build Coastguard Worker paddq %mm6,%mm2 137*8fb009dcSAndroid Build Coastguard Worker incl %ecx 138*8fb009dcSAndroid Build Coastguard Worker decl %ebx 139*8fb009dcSAndroid Build Coastguard WorkerL005inner: 140*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm4,%mm0 141*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm5,%mm1 142*8fb009dcSAndroid Build Coastguard Worker paddq %mm0,%mm2 143*8fb009dcSAndroid Build Coastguard Worker paddq %mm1,%mm3 144*8fb009dcSAndroid Build Coastguard Worker movq %mm2,%mm0 145*8fb009dcSAndroid Build Coastguard Worker movd 36(%esp,%ecx,4),%mm6 146*8fb009dcSAndroid Build Coastguard Worker pand %mm7,%mm0 147*8fb009dcSAndroid Build Coastguard Worker movd 4(%ebp,%ecx,4),%mm1 148*8fb009dcSAndroid Build Coastguard Worker paddq %mm0,%mm3 149*8fb009dcSAndroid Build Coastguard Worker movd 4(%esi,%ecx,4),%mm0 150*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm2 151*8fb009dcSAndroid Build Coastguard Worker movd %mm3,28(%esp,%ecx,4) 152*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm3 153*8fb009dcSAndroid Build Coastguard Worker paddq %mm6,%mm2 154*8fb009dcSAndroid Build Coastguard Worker decl %ebx 155*8fb009dcSAndroid Build Coastguard Worker leal 1(%ecx),%ecx 156*8fb009dcSAndroid Build Coastguard Worker jnz L005inner 157*8fb009dcSAndroid Build Coastguard Worker movl %ecx,%ebx 158*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm4,%mm0 159*8fb009dcSAndroid Build Coastguard Worker pmuludq %mm5,%mm1 160*8fb009dcSAndroid Build Coastguard Worker paddq %mm0,%mm2 161*8fb009dcSAndroid Build Coastguard Worker paddq %mm1,%mm3 162*8fb009dcSAndroid Build Coastguard Worker movq %mm2,%mm0 163*8fb009dcSAndroid Build Coastguard Worker pand %mm7,%mm0 164*8fb009dcSAndroid Build Coastguard Worker paddq %mm0,%mm3 165*8fb009dcSAndroid Build Coastguard Worker movd %mm3,28(%esp,%ecx,4) 166*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm2 167*8fb009dcSAndroid Build Coastguard Worker psrlq $32,%mm3 168*8fb009dcSAndroid Build Coastguard Worker movd 36(%esp,%ebx,4),%mm6 169*8fb009dcSAndroid Build Coastguard Worker paddq %mm2,%mm3 170*8fb009dcSAndroid Build Coastguard Worker paddq %mm6,%mm3 171*8fb009dcSAndroid Build Coastguard Worker movq %mm3,32(%esp,%ebx,4) 172*8fb009dcSAndroid Build Coastguard Worker leal 1(%edx),%edx 173*8fb009dcSAndroid Build Coastguard Worker cmpl %ebx,%edx 174*8fb009dcSAndroid Build Coastguard Worker jle L004outer 175*8fb009dcSAndroid Build Coastguard Worker emms 176*8fb009dcSAndroid Build Coastguard Worker jmp L006common_tail 177*8fb009dcSAndroid Build Coastguard Worker.align 4,0x90 178*8fb009dcSAndroid Build Coastguard WorkerL006common_tail: 179*8fb009dcSAndroid Build Coastguard Worker movl 16(%esp),%ebp 180*8fb009dcSAndroid Build Coastguard Worker movl 4(%esp),%edi 181*8fb009dcSAndroid Build Coastguard Worker leal 32(%esp),%esi 182*8fb009dcSAndroid Build Coastguard Worker movl (%esi),%eax 183*8fb009dcSAndroid Build Coastguard Worker movl %ebx,%ecx 184*8fb009dcSAndroid Build Coastguard Worker xorl %edx,%edx 185*8fb009dcSAndroid Build Coastguard Worker.align 4,0x90 186*8fb009dcSAndroid Build Coastguard WorkerL007sub: 187*8fb009dcSAndroid Build Coastguard Worker sbbl (%ebp,%edx,4),%eax 188*8fb009dcSAndroid Build Coastguard Worker movl %eax,(%edi,%edx,4) 189*8fb009dcSAndroid Build Coastguard Worker decl %ecx 190*8fb009dcSAndroid Build Coastguard Worker movl 4(%esi,%edx,4),%eax 191*8fb009dcSAndroid Build Coastguard Worker leal 1(%edx),%edx 192*8fb009dcSAndroid Build Coastguard Worker jge L007sub 193*8fb009dcSAndroid Build Coastguard Worker sbbl $0,%eax 194*8fb009dcSAndroid Build Coastguard Worker movl $-1,%edx 195*8fb009dcSAndroid Build Coastguard Worker xorl %eax,%edx 196*8fb009dcSAndroid Build Coastguard Worker jmp L008copy 197*8fb009dcSAndroid Build Coastguard Worker.align 4,0x90 198*8fb009dcSAndroid Build Coastguard WorkerL008copy: 199*8fb009dcSAndroid Build Coastguard Worker movl 32(%esp,%ebx,4),%esi 200*8fb009dcSAndroid Build Coastguard Worker movl (%edi,%ebx,4),%ebp 201*8fb009dcSAndroid Build Coastguard Worker movl %ecx,32(%esp,%ebx,4) 202*8fb009dcSAndroid Build Coastguard Worker andl %eax,%esi 203*8fb009dcSAndroid Build Coastguard Worker andl %edx,%ebp 204*8fb009dcSAndroid Build Coastguard Worker orl %esi,%ebp 205*8fb009dcSAndroid Build Coastguard Worker movl %ebp,(%edi,%ebx,4) 206*8fb009dcSAndroid Build Coastguard Worker decl %ebx 207*8fb009dcSAndroid Build Coastguard Worker jge L008copy 208*8fb009dcSAndroid Build Coastguard Worker movl 24(%esp),%esp 209*8fb009dcSAndroid Build Coastguard Worker movl $1,%eax 210*8fb009dcSAndroid Build Coastguard WorkerL000just_leave: 211*8fb009dcSAndroid Build Coastguard Worker popl %edi 212*8fb009dcSAndroid Build Coastguard Worker popl %esi 213*8fb009dcSAndroid Build Coastguard Worker popl %ebx 214*8fb009dcSAndroid Build Coastguard Worker popl %ebp 215*8fb009dcSAndroid Build Coastguard Worker ret 216*8fb009dcSAndroid Build Coastguard Worker.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 217*8fb009dcSAndroid Build Coastguard Worker.byte 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 218*8fb009dcSAndroid Build Coastguard Worker.byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 219*8fb009dcSAndroid Build Coastguard Worker.byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 220*8fb009dcSAndroid Build Coastguard Worker.byte 111,114,103,62,0 221*8fb009dcSAndroid Build Coastguard Worker#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__) 222