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