Home | History | Annotate | Download | only in rc4
      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
    386