OLD | NEW |
(Empty) | |
| 1 #if defined(__i386__) |
| 2 .file "rc4-586.S" |
| 3 .text |
| 4 .globl asm_RC4 |
| 5 .hidden asm_RC4 |
| 6 .type asm_RC4,@function |
| 7 .align 16 |
| 8 asm_RC4: |
| 9 .L_asm_RC4_begin: |
| 10 pushl %ebp |
| 11 pushl %ebx |
| 12 pushl %esi |
| 13 pushl %edi |
| 14 movl 20(%esp),%edi |
| 15 movl 24(%esp),%edx |
| 16 movl 28(%esp),%esi |
| 17 movl 32(%esp),%ebp |
| 18 xorl %eax,%eax |
| 19 xorl %ebx,%ebx |
| 20 cmpl $0,%edx |
| 21 je .L000abort |
| 22 movb (%edi),%al |
| 23 movb 4(%edi),%bl |
| 24 addl $8,%edi |
| 25 leal (%esi,%edx,1),%ecx |
| 26 subl %esi,%ebp |
| 27 movl %ecx,24(%esp) |
| 28 incb %al |
| 29 cmpl $-1,256(%edi) |
| 30 je .L001RC4_CHAR |
| 31 movl (%edi,%eax,4),%ecx |
| 32 andl $-4,%edx |
| 33 jz .L002loop1 |
| 34 movl %ebp,32(%esp) |
| 35 testl $-8,%edx |
| 36 jz .L003go4loop4 |
| 37 call .L004PIC_me_up |
| 38 .L004PIC_me_up: |
| 39 popl %ebp |
| 40 leal OPENSSL_ia32cap_P-.L004PIC_me_up(%ebp),%ebp |
| 41 btl $26,(%ebp) |
| 42 jnc .L003go4loop4 |
| 43 movl 32(%esp),%ebp |
| 44 andl $-8,%edx |
| 45 leal -8(%esi,%edx,1),%edx |
| 46 movl %edx,-4(%edi) |
| 47 addb %cl,%bl |
| 48 movl (%edi,%ebx,4),%edx |
| 49 movl %ecx,(%edi,%ebx,4) |
| 50 movl %edx,(%edi,%eax,4) |
| 51 incl %eax |
| 52 addl %ecx,%edx |
| 53 movzbl %al,%eax |
| 54 movzbl %dl,%edx |
| 55 movq (%esi),%mm0 |
| 56 movl (%edi,%eax,4),%ecx |
| 57 movd (%edi,%edx,4),%mm2 |
| 58 jmp .L005loop_mmx_enter |
| 59 .align 16 |
| 60 .L006loop_mmx: |
| 61 addb %cl,%bl |
| 62 psllq $56,%mm1 |
| 63 movl (%edi,%ebx,4),%edx |
| 64 movl %ecx,(%edi,%ebx,4) |
| 65 movl %edx,(%edi,%eax,4) |
| 66 incl %eax |
| 67 addl %ecx,%edx |
| 68 movzbl %al,%eax |
| 69 movzbl %dl,%edx |
| 70 pxor %mm1,%mm2 |
| 71 movq (%esi),%mm0 |
| 72 movq %mm2,-8(%ebp,%esi,1) |
| 73 movl (%edi,%eax,4),%ecx |
| 74 movd (%edi,%edx,4),%mm2 |
| 75 .L005loop_mmx_enter: |
| 76 addb %cl,%bl |
| 77 movl (%edi,%ebx,4),%edx |
| 78 movl %ecx,(%edi,%ebx,4) |
| 79 movl %edx,(%edi,%eax,4) |
| 80 incl %eax |
| 81 addl %ecx,%edx |
| 82 movzbl %al,%eax |
| 83 movzbl %dl,%edx |
| 84 pxor %mm0,%mm2 |
| 85 movl (%edi,%eax,4),%ecx |
| 86 movd (%edi,%edx,4),%mm1 |
| 87 addb %cl,%bl |
| 88 psllq $8,%mm1 |
| 89 movl (%edi,%ebx,4),%edx |
| 90 movl %ecx,(%edi,%ebx,4) |
| 91 movl %edx,(%edi,%eax,4) |
| 92 incl %eax |
| 93 addl %ecx,%edx |
| 94 movzbl %al,%eax |
| 95 movzbl %dl,%edx |
| 96 pxor %mm1,%mm2 |
| 97 movl (%edi,%eax,4),%ecx |
| 98 movd (%edi,%edx,4),%mm1 |
| 99 addb %cl,%bl |
| 100 psllq $16,%mm1 |
| 101 movl (%edi,%ebx,4),%edx |
| 102 movl %ecx,(%edi,%ebx,4) |
| 103 movl %edx,(%edi,%eax,4) |
| 104 incl %eax |
| 105 addl %ecx,%edx |
| 106 movzbl %al,%eax |
| 107 movzbl %dl,%edx |
| 108 pxor %mm1,%mm2 |
| 109 movl (%edi,%eax,4),%ecx |
| 110 movd (%edi,%edx,4),%mm1 |
| 111 addb %cl,%bl |
| 112 psllq $24,%mm1 |
| 113 movl (%edi,%ebx,4),%edx |
| 114 movl %ecx,(%edi,%ebx,4) |
| 115 movl %edx,(%edi,%eax,4) |
| 116 incl %eax |
| 117 addl %ecx,%edx |
| 118 movzbl %al,%eax |
| 119 movzbl %dl,%edx |
| 120 pxor %mm1,%mm2 |
| 121 movl (%edi,%eax,4),%ecx |
| 122 movd (%edi,%edx,4),%mm1 |
| 123 addb %cl,%bl |
| 124 psllq $32,%mm1 |
| 125 movl (%edi,%ebx,4),%edx |
| 126 movl %ecx,(%edi,%ebx,4) |
| 127 movl %edx,(%edi,%eax,4) |
| 128 incl %eax |
| 129 addl %ecx,%edx |
| 130 movzbl %al,%eax |
| 131 movzbl %dl,%edx |
| 132 pxor %mm1,%mm2 |
| 133 movl (%edi,%eax,4),%ecx |
| 134 movd (%edi,%edx,4),%mm1 |
| 135 addb %cl,%bl |
| 136 psllq $40,%mm1 |
| 137 movl (%edi,%ebx,4),%edx |
| 138 movl %ecx,(%edi,%ebx,4) |
| 139 movl %edx,(%edi,%eax,4) |
| 140 incl %eax |
| 141 addl %ecx,%edx |
| 142 movzbl %al,%eax |
| 143 movzbl %dl,%edx |
| 144 pxor %mm1,%mm2 |
| 145 movl (%edi,%eax,4),%ecx |
| 146 movd (%edi,%edx,4),%mm1 |
| 147 addb %cl,%bl |
| 148 psllq $48,%mm1 |
| 149 movl (%edi,%ebx,4),%edx |
| 150 movl %ecx,(%edi,%ebx,4) |
| 151 movl %edx,(%edi,%eax,4) |
| 152 incl %eax |
| 153 addl %ecx,%edx |
| 154 movzbl %al,%eax |
| 155 movzbl %dl,%edx |
| 156 pxor %mm1,%mm2 |
| 157 movl (%edi,%eax,4),%ecx |
| 158 movd (%edi,%edx,4),%mm1 |
| 159 movl %ebx,%edx |
| 160 xorl %ebx,%ebx |
| 161 movb %dl,%bl |
| 162 cmpl -4(%edi),%esi |
| 163 leal 8(%esi),%esi |
| 164 jb .L006loop_mmx |
| 165 psllq $56,%mm1 |
| 166 pxor %mm1,%mm2 |
| 167 movq %mm2,-8(%ebp,%esi,1) |
| 168 emms |
| 169 cmpl 24(%esp),%esi |
| 170 je .L007done |
| 171 jmp .L002loop1 |
| 172 .align 16 |
| 173 .L003go4loop4: |
| 174 leal -4(%esi,%edx,1),%edx |
| 175 movl %edx,28(%esp) |
| 176 .L008loop4: |
| 177 addb %cl,%bl |
| 178 movl (%edi,%ebx,4),%edx |
| 179 movl %ecx,(%edi,%ebx,4) |
| 180 movl %edx,(%edi,%eax,4) |
| 181 addl %ecx,%edx |
| 182 incb %al |
| 183 andl $255,%edx |
| 184 movl (%edi,%eax,4),%ecx |
| 185 movl (%edi,%edx,4),%ebp |
| 186 addb %cl,%bl |
| 187 movl (%edi,%ebx,4),%edx |
| 188 movl %ecx,(%edi,%ebx,4) |
| 189 movl %edx,(%edi,%eax,4) |
| 190 addl %ecx,%edx |
| 191 incb %al |
| 192 andl $255,%edx |
| 193 rorl $8,%ebp |
| 194 movl (%edi,%eax,4),%ecx |
| 195 orl (%edi,%edx,4),%ebp |
| 196 addb %cl,%bl |
| 197 movl (%edi,%ebx,4),%edx |
| 198 movl %ecx,(%edi,%ebx,4) |
| 199 movl %edx,(%edi,%eax,4) |
| 200 addl %ecx,%edx |
| 201 incb %al |
| 202 andl $255,%edx |
| 203 rorl $8,%ebp |
| 204 movl (%edi,%eax,4),%ecx |
| 205 orl (%edi,%edx,4),%ebp |
| 206 addb %cl,%bl |
| 207 movl (%edi,%ebx,4),%edx |
| 208 movl %ecx,(%edi,%ebx,4) |
| 209 movl %edx,(%edi,%eax,4) |
| 210 addl %ecx,%edx |
| 211 incb %al |
| 212 andl $255,%edx |
| 213 rorl $8,%ebp |
| 214 movl 32(%esp),%ecx |
| 215 orl (%edi,%edx,4),%ebp |
| 216 rorl $8,%ebp |
| 217 xorl (%esi),%ebp |
| 218 cmpl 28(%esp),%esi |
| 219 movl %ebp,(%ecx,%esi,1) |
| 220 leal 4(%esi),%esi |
| 221 movl (%edi,%eax,4),%ecx |
| 222 jb .L008loop4 |
| 223 cmpl 24(%esp),%esi |
| 224 je .L007done |
| 225 movl 32(%esp),%ebp |
| 226 .align 16 |
| 227 .L002loop1: |
| 228 addb %cl,%bl |
| 229 movl (%edi,%ebx,4),%edx |
| 230 movl %ecx,(%edi,%ebx,4) |
| 231 movl %edx,(%edi,%eax,4) |
| 232 addl %ecx,%edx |
| 233 incb %al |
| 234 andl $255,%edx |
| 235 movl (%edi,%edx,4),%edx |
| 236 xorb (%esi),%dl |
| 237 leal 1(%esi),%esi |
| 238 movl (%edi,%eax,4),%ecx |
| 239 cmpl 24(%esp),%esi |
| 240 movb %dl,-1(%ebp,%esi,1) |
| 241 jb .L002loop1 |
| 242 jmp .L007done |
| 243 .align 16 |
| 244 .L001RC4_CHAR: |
| 245 movzbl (%edi,%eax,1),%ecx |
| 246 .L009cloop1: |
| 247 addb %cl,%bl |
| 248 movzbl (%edi,%ebx,1),%edx |
| 249 movb %cl,(%edi,%ebx,1) |
| 250 movb %dl,(%edi,%eax,1) |
| 251 addb %cl,%dl |
| 252 movzbl (%edi,%edx,1),%edx |
| 253 addb $1,%al |
| 254 xorb (%esi),%dl |
| 255 leal 1(%esi),%esi |
| 256 movzbl (%edi,%eax,1),%ecx |
| 257 cmpl 24(%esp),%esi |
| 258 movb %dl,-1(%ebp,%esi,1) |
| 259 jb .L009cloop1 |
| 260 .L007done: |
| 261 decb %al |
| 262 movl %ebx,-4(%edi) |
| 263 movb %al,-8(%edi) |
| 264 .L000abort: |
| 265 popl %edi |
| 266 popl %esi |
| 267 popl %ebx |
| 268 popl %ebp |
| 269 ret |
| 270 .size asm_RC4,.-.L_asm_RC4_begin |
| 271 .globl asm_RC4_set_key |
| 272 .hidden asm_RC4_set_key |
| 273 .type asm_RC4_set_key,@function |
| 274 .align 16 |
| 275 asm_RC4_set_key: |
| 276 .L_asm_RC4_set_key_begin: |
| 277 pushl %ebp |
| 278 pushl %ebx |
| 279 pushl %esi |
| 280 pushl %edi |
| 281 movl 20(%esp),%edi |
| 282 movl 24(%esp),%ebp |
| 283 movl 28(%esp),%esi |
| 284 call .L010PIC_me_up |
| 285 .L010PIC_me_up: |
| 286 popl %edx |
| 287 leal OPENSSL_ia32cap_P-.L010PIC_me_up(%edx),%edx |
| 288 leal 8(%edi),%edi |
| 289 leal (%esi,%ebp,1),%esi |
| 290 negl %ebp |
| 291 xorl %eax,%eax |
| 292 movl %ebp,-4(%edi) |
| 293 btl $20,(%edx) |
| 294 jc .L011c1stloop |
| 295 .align 16 |
| 296 .L012w1stloop: |
| 297 movl %eax,(%edi,%eax,4) |
| 298 addb $1,%al |
| 299 jnc .L012w1stloop |
| 300 xorl %ecx,%ecx |
| 301 xorl %edx,%edx |
| 302 .align 16 |
| 303 .L013w2ndloop: |
| 304 movl (%edi,%ecx,4),%eax |
| 305 addb (%esi,%ebp,1),%dl |
| 306 addb %al,%dl |
| 307 addl $1,%ebp |
| 308 movl (%edi,%edx,4),%ebx |
| 309 jnz .L014wnowrap |
| 310 movl -4(%edi),%ebp |
| 311 .L014wnowrap: |
| 312 movl %eax,(%edi,%edx,4) |
| 313 movl %ebx,(%edi,%ecx,4) |
| 314 addb $1,%cl |
| 315 jnc .L013w2ndloop |
| 316 jmp .L015exit |
| 317 .align 16 |
| 318 .L011c1stloop: |
| 319 movb %al,(%edi,%eax,1) |
| 320 addb $1,%al |
| 321 jnc .L011c1stloop |
| 322 xorl %ecx,%ecx |
| 323 xorl %edx,%edx |
| 324 xorl %ebx,%ebx |
| 325 .align 16 |
| 326 .L016c2ndloop: |
| 327 movb (%edi,%ecx,1),%al |
| 328 addb (%esi,%ebp,1),%dl |
| 329 addb %al,%dl |
| 330 addl $1,%ebp |
| 331 movb (%edi,%edx,1),%bl |
| 332 jnz .L017cnowrap |
| 333 movl -4(%edi),%ebp |
| 334 .L017cnowrap: |
| 335 movb %al,(%edi,%edx,1) |
| 336 movb %bl,(%edi,%ecx,1) |
| 337 addb $1,%cl |
| 338 jnc .L016c2ndloop |
| 339 movl $-1,256(%edi) |
| 340 .L015exit: |
| 341 xorl %eax,%eax |
| 342 movl %eax,-8(%edi) |
| 343 movl %eax,-4(%edi) |
| 344 popl %edi |
| 345 popl %esi |
| 346 popl %ebx |
| 347 popl %ebp |
| 348 ret |
| 349 .size asm_RC4_set_key,.-.L_asm_RC4_set_key_begin |
| 350 .globl RC4_options |
| 351 .hidden RC4_options |
| 352 .type RC4_options,@function |
| 353 .align 16 |
| 354 RC4_options: |
| 355 .L_RC4_options_begin: |
| 356 call .L018pic_point |
| 357 .L018pic_point: |
| 358 popl %eax |
| 359 leal .L019opts-.L018pic_point(%eax),%eax |
| 360 call .L020PIC_me_up |
| 361 .L020PIC_me_up: |
| 362 popl %edx |
| 363 leal OPENSSL_ia32cap_P-.L020PIC_me_up(%edx),%edx |
| 364 movl (%edx),%edx |
| 365 btl $20,%edx |
| 366 jc .L0211xchar |
| 367 btl $26,%edx |
| 368 jnc .L022ret |
| 369 addl $25,%eax |
| 370 ret |
| 371 .L0211xchar: |
| 372 addl $12,%eax |
| 373 .L022ret: |
| 374 ret |
| 375 .align 64 |
| 376 .L019opts: |
| 377 .byte 114,99,52,40,52,120,44,105,110,116,41,0 |
| 378 .byte 114,99,52,40,49,120,44,99,104,97,114,41,0 |
| 379 .byte 114,99,52,40,56,120,44,109,109,120,41,0 |
| 380 .byte 82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89 |
| 381 .byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 |
| 382 .byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 |
| 383 .align 64 |
| 384 .size RC4_options,.-.L_RC4_options_begin |
| 385 #endif |
OLD | NEW |