1# This file is generated from a similarly-named Perl script in the BoringSSL 2# source tree. Do not edit by hand. 3 4#if defined(__i386__) 5#if defined(BORINGSSL_PREFIX) 6#include <boringssl_prefix_symbols_asm.h> 7#endif 8.text 9.globl GFp_bn_mul_mont 10.hidden GFp_bn_mul_mont 11.type GFp_bn_mul_mont,@function 12.align 16 13GFp_bn_mul_mont: 14.L_GFp_bn_mul_mont_begin: 15 pushl %ebp 16 pushl %ebx 17 pushl %esi 18 pushl %edi 19 xorl %eax,%eax 20 movl 40(%esp),%edi 21 leal 20(%esp),%esi 22 leal 24(%esp),%edx 23 addl $2,%edi 24 negl %edi 25 leal -32(%esp,%edi,4),%ebp 26 negl %edi 27 movl %ebp,%eax 28 subl %edx,%eax 29 andl $2047,%eax 30 subl %eax,%ebp 31 xorl %ebp,%edx 32 andl $2048,%edx 33 xorl $2048,%edx 34 subl %edx,%ebp 35 andl $-64,%ebp 36 movl %esp,%eax 37 subl %ebp,%eax 38 andl $-4096,%eax 39 movl %esp,%edx 40 leal (%ebp,%eax,1),%esp 41 movl (%esp),%eax 42 cmpl %ebp,%esp 43 ja .L000page_walk 44 jmp .L001page_walk_done 45.align 16 46.L000page_walk: 47 leal -4096(%esp),%esp 48 movl (%esp),%eax 49 cmpl %ebp,%esp 50 ja .L000page_walk 51.L001page_walk_done: 52 movl (%esi),%eax 53 movl 4(%esi),%ebx 54 movl 8(%esi),%ecx 55 movl 12(%esi),%ebp 56 movl 16(%esi),%esi 57 movl (%esi),%esi 58 movl %eax,4(%esp) 59 movl %ebx,8(%esp) 60 movl %ecx,12(%esp) 61 movl %ebp,16(%esp) 62 movl %esi,20(%esp) 63 leal -3(%edi),%ebx 64 movl %edx,24(%esp) 65 call .L002PIC_me_up 66.L002PIC_me_up: 67 popl %eax 68 leal GFp_ia32cap_P-.L002PIC_me_up(%eax),%eax 69 btl $26,(%eax) 70 movl $-1,%eax 71 movd %eax,%mm7 72 movl 8(%esp),%esi 73 movl 12(%esp),%edi 74 movl 16(%esp),%ebp 75 xorl %edx,%edx 76 xorl %ecx,%ecx 77 movd (%edi),%mm4 78 movd (%esi),%mm5 79 movd (%ebp),%mm3 80 pmuludq %mm4,%mm5 81 movq %mm5,%mm2 82 movq %mm5,%mm0 83 pand %mm7,%mm0 84 pmuludq 20(%esp),%mm5 85 pmuludq %mm5,%mm3 86 paddq %mm0,%mm3 87 movd 4(%ebp),%mm1 88 movd 4(%esi),%mm0 89 psrlq $32,%mm2 90 psrlq $32,%mm3 91 incl %ecx 92.align 16 93.L0031st: 94 pmuludq %mm4,%mm0 95 pmuludq %mm5,%mm1 96 paddq %mm0,%mm2 97 paddq %mm1,%mm3 98 movq %mm2,%mm0 99 pand %mm7,%mm0 100 movd 4(%ebp,%ecx,4),%mm1 101 paddq %mm0,%mm3 102 movd 4(%esi,%ecx,4),%mm0 103 psrlq $32,%mm2 104 movd %mm3,28(%esp,%ecx,4) 105 psrlq $32,%mm3 106 leal 1(%ecx),%ecx 107 cmpl %ebx,%ecx 108 jl .L0031st 109 pmuludq %mm4,%mm0 110 pmuludq %mm5,%mm1 111 paddq %mm0,%mm2 112 paddq %mm1,%mm3 113 movq %mm2,%mm0 114 pand %mm7,%mm0 115 paddq %mm0,%mm3 116 movd %mm3,28(%esp,%ecx,4) 117 psrlq $32,%mm2 118 psrlq $32,%mm3 119 paddq %mm2,%mm3 120 movq %mm3,32(%esp,%ebx,4) 121 incl %edx 122.L004outer: 123 xorl %ecx,%ecx 124 movd (%edi,%edx,4),%mm4 125 movd (%esi),%mm5 126 movd 32(%esp),%mm6 127 movd (%ebp),%mm3 128 pmuludq %mm4,%mm5 129 paddq %mm6,%mm5 130 movq %mm5,%mm0 131 movq %mm5,%mm2 132 pand %mm7,%mm0 133 pmuludq 20(%esp),%mm5 134 pmuludq %mm5,%mm3 135 paddq %mm0,%mm3 136 movd 36(%esp),%mm6 137 movd 4(%ebp),%mm1 138 movd 4(%esi),%mm0 139 psrlq $32,%mm2 140 psrlq $32,%mm3 141 paddq %mm6,%mm2 142 incl %ecx 143 decl %ebx 144.L005inner: 145 pmuludq %mm4,%mm0 146 pmuludq %mm5,%mm1 147 paddq %mm0,%mm2 148 paddq %mm1,%mm3 149 movq %mm2,%mm0 150 movd 36(%esp,%ecx,4),%mm6 151 pand %mm7,%mm0 152 movd 4(%ebp,%ecx,4),%mm1 153 paddq %mm0,%mm3 154 movd 4(%esi,%ecx,4),%mm0 155 psrlq $32,%mm2 156 movd %mm3,28(%esp,%ecx,4) 157 psrlq $32,%mm3 158 paddq %mm6,%mm2 159 decl %ebx 160 leal 1(%ecx),%ecx 161 jnz .L005inner 162 movl %ecx,%ebx 163 pmuludq %mm4,%mm0 164 pmuludq %mm5,%mm1 165 paddq %mm0,%mm2 166 paddq %mm1,%mm3 167 movq %mm2,%mm0 168 pand %mm7,%mm0 169 paddq %mm0,%mm3 170 movd %mm3,28(%esp,%ecx,4) 171 psrlq $32,%mm2 172 psrlq $32,%mm3 173 movd 36(%esp,%ebx,4),%mm6 174 paddq %mm2,%mm3 175 paddq %mm6,%mm3 176 movq %mm3,32(%esp,%ebx,4) 177 leal 1(%edx),%edx 178 cmpl %ebx,%edx 179 jle .L004outer 180 emms 181.align 16 182.L006common_tail: 183 movl 16(%esp),%ebp 184 movl 4(%esp),%edi 185 leal 32(%esp),%esi 186 movl (%esi),%eax 187 movl %ebx,%ecx 188 xorl %edx,%edx 189.align 16 190.L007sub: 191 sbbl (%ebp,%edx,4),%eax 192 movl %eax,(%edi,%edx,4) 193 decl %ecx 194 movl 4(%esi,%edx,4),%eax 195 leal 1(%edx),%edx 196 jge .L007sub 197 sbbl $0,%eax 198 movl $-1,%edx 199 xorl %eax,%edx 200 jmp .L008copy 201.align 16 202.L008copy: 203 movl 32(%esp,%ebx,4),%esi 204 movl (%edi,%ebx,4),%ebp 205 movl %ecx,32(%esp,%ebx,4) 206 andl %eax,%esi 207 andl %edx,%ebp 208 orl %esi,%ebp 209 movl %ebp,(%edi,%ebx,4) 210 decl %ebx 211 jge .L008copy 212 movl 24(%esp),%esp 213 movl $1,%eax 214 popl %edi 215 popl %esi 216 popl %ebx 217 popl %ebp 218 ret 219.size GFp_bn_mul_mont,.-.L_GFp_bn_mul_mont_begin 220.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 221.byte 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 222.byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 223.byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 224.byte 111,114,103,62,0 225#endif 226.section .note.GNU-stack,"",@progbits 227