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