1299966Sjkim# $FreeBSD$ 2299966Sjkim# Do not modify. This file is auto-generated from rc4-586.pl. 3299966Sjkim#ifdef PIC 4299966Sjkim.file "rc4-586.S" 595967Speter.text 6238405Sjkim.globl RC4 7238405Sjkim.type RC4,@function 8238405Sjkim.align 16 995967SpeterRC4: 10238405Sjkim.L_RC4_begin: 1195967Speter pushl %ebp 1295967Speter pushl %ebx 1395967Speter pushl %esi 1495967Speter pushl %edi 15238405Sjkim movl 20(%esp),%edi 16238405Sjkim movl 24(%esp),%edx 17238405Sjkim movl 28(%esp),%esi 18238405Sjkim movl 32(%esp),%ebp 19238405Sjkim xorl %eax,%eax 20238405Sjkim xorl %ebx,%ebx 21238405Sjkim cmpl $0,%edx 22238405Sjkim je .L000abort 23238405Sjkim movb (%edi),%al 24238405Sjkim movb 4(%edi),%bl 25238405Sjkim addl $8,%edi 26238405Sjkim leal (%esi,%edx,1),%ecx 27238405Sjkim subl %esi,%ebp 28238405Sjkim movl %ecx,24(%esp) 29238405Sjkim incb %al 30238405Sjkim cmpl $-1,256(%edi) 31238405Sjkim je .L001RC4_CHAR 32238405Sjkim movl (%edi,%eax,4),%ecx 33238405Sjkim andl $-4,%edx 34238405Sjkim jz .L002loop1 35238405Sjkim testl $-8,%edx 36238405Sjkim movl %ebp,32(%esp) 37238405Sjkim jz .L003go4loop4 38299966Sjkim call .L004PIC_me_up 39299966Sjkim.L004PIC_me_up: 40299966Sjkim popl %ebp 41299966Sjkim leal _GLOBAL_OFFSET_TABLE_+[.-.L004PIC_me_up](%ebp),%ebp 42299966Sjkim movl OPENSSL_ia32cap_P@GOT(%ebp),%ebp 43299966Sjkim btl $26,(%ebp) 44299966Sjkim jnc .L003go4loop4 45299966Sjkim movl 32(%esp),%ebp 46299966Sjkim andl $-8,%edx 47299966Sjkim leal -8(%esi,%edx,1),%edx 48299966Sjkim movl %edx,-4(%edi) 49299966Sjkim addb %cl,%bl 50299966Sjkim movl (%edi,%ebx,4),%edx 51299966Sjkim movl %ecx,(%edi,%ebx,4) 52299966Sjkim movl %edx,(%edi,%eax,4) 53299966Sjkim incl %eax 54299966Sjkim addl %ecx,%edx 55299966Sjkim movzbl %al,%eax 56299966Sjkim movzbl %dl,%edx 57299966Sjkim movq (%esi),%mm0 58299966Sjkim movl (%edi,%eax,4),%ecx 59299966Sjkim movd (%edi,%edx,4),%mm2 60299966Sjkim jmp .L005loop_mmx_enter 61299966Sjkim.align 16 62299966Sjkim.L006loop_mmx: 63299966Sjkim addb %cl,%bl 64299966Sjkim psllq $56,%mm1 65299966Sjkim movl (%edi,%ebx,4),%edx 66299966Sjkim movl %ecx,(%edi,%ebx,4) 67299966Sjkim movl %edx,(%edi,%eax,4) 68299966Sjkim incl %eax 69299966Sjkim addl %ecx,%edx 70299966Sjkim movzbl %al,%eax 71299966Sjkim movzbl %dl,%edx 72299966Sjkim pxor %mm1,%mm2 73299966Sjkim movq (%esi),%mm0 74299966Sjkim movq %mm2,-8(%ebp,%esi,1) 75299966Sjkim movl (%edi,%eax,4),%ecx 76299966Sjkim movd (%edi,%edx,4),%mm2 77299966Sjkim.L005loop_mmx_enter: 78299966Sjkim addb %cl,%bl 79299966Sjkim movl (%edi,%ebx,4),%edx 80299966Sjkim movl %ecx,(%edi,%ebx,4) 81299966Sjkim movl %edx,(%edi,%eax,4) 82299966Sjkim incl %eax 83299966Sjkim addl %ecx,%edx 84299966Sjkim movzbl %al,%eax 85299966Sjkim movzbl %dl,%edx 86299966Sjkim pxor %mm0,%mm2 87299966Sjkim movl (%edi,%eax,4),%ecx 88299966Sjkim movd (%edi,%edx,4),%mm1 89299966Sjkim addb %cl,%bl 90299966Sjkim psllq $8,%mm1 91299966Sjkim movl (%edi,%ebx,4),%edx 92299966Sjkim movl %ecx,(%edi,%ebx,4) 93299966Sjkim movl %edx,(%edi,%eax,4) 94299966Sjkim incl %eax 95299966Sjkim addl %ecx,%edx 96299966Sjkim movzbl %al,%eax 97299966Sjkim movzbl %dl,%edx 98299966Sjkim pxor %mm1,%mm2 99299966Sjkim movl (%edi,%eax,4),%ecx 100299966Sjkim movd (%edi,%edx,4),%mm1 101299966Sjkim addb %cl,%bl 102299966Sjkim psllq $16,%mm1 103299966Sjkim movl (%edi,%ebx,4),%edx 104299966Sjkim movl %ecx,(%edi,%ebx,4) 105299966Sjkim movl %edx,(%edi,%eax,4) 106299966Sjkim incl %eax 107299966Sjkim addl %ecx,%edx 108299966Sjkim movzbl %al,%eax 109299966Sjkim movzbl %dl,%edx 110299966Sjkim pxor %mm1,%mm2 111299966Sjkim movl (%edi,%eax,4),%ecx 112299966Sjkim movd (%edi,%edx,4),%mm1 113299966Sjkim addb %cl,%bl 114299966Sjkim psllq $24,%mm1 115299966Sjkim movl (%edi,%ebx,4),%edx 116299966Sjkim movl %ecx,(%edi,%ebx,4) 117299966Sjkim movl %edx,(%edi,%eax,4) 118299966Sjkim incl %eax 119299966Sjkim addl %ecx,%edx 120299966Sjkim movzbl %al,%eax 121299966Sjkim movzbl %dl,%edx 122299966Sjkim pxor %mm1,%mm2 123299966Sjkim movl (%edi,%eax,4),%ecx 124299966Sjkim movd (%edi,%edx,4),%mm1 125299966Sjkim addb %cl,%bl 126299966Sjkim psllq $32,%mm1 127299966Sjkim movl (%edi,%ebx,4),%edx 128299966Sjkim movl %ecx,(%edi,%ebx,4) 129299966Sjkim movl %edx,(%edi,%eax,4) 130299966Sjkim incl %eax 131299966Sjkim addl %ecx,%edx 132299966Sjkim movzbl %al,%eax 133299966Sjkim movzbl %dl,%edx 134299966Sjkim pxor %mm1,%mm2 135299966Sjkim movl (%edi,%eax,4),%ecx 136299966Sjkim movd (%edi,%edx,4),%mm1 137299966Sjkim addb %cl,%bl 138299966Sjkim psllq $40,%mm1 139299966Sjkim movl (%edi,%ebx,4),%edx 140299966Sjkim movl %ecx,(%edi,%ebx,4) 141299966Sjkim movl %edx,(%edi,%eax,4) 142299966Sjkim incl %eax 143299966Sjkim addl %ecx,%edx 144299966Sjkim movzbl %al,%eax 145299966Sjkim movzbl %dl,%edx 146299966Sjkim pxor %mm1,%mm2 147299966Sjkim movl (%edi,%eax,4),%ecx 148299966Sjkim movd (%edi,%edx,4),%mm1 149299966Sjkim addb %cl,%bl 150299966Sjkim psllq $48,%mm1 151299966Sjkim movl (%edi,%ebx,4),%edx 152299966Sjkim movl %ecx,(%edi,%ebx,4) 153299966Sjkim movl %edx,(%edi,%eax,4) 154299966Sjkim incl %eax 155299966Sjkim addl %ecx,%edx 156299966Sjkim movzbl %al,%eax 157299966Sjkim movzbl %dl,%edx 158299966Sjkim pxor %mm1,%mm2 159299966Sjkim movl (%edi,%eax,4),%ecx 160299966Sjkim movd (%edi,%edx,4),%mm1 161299966Sjkim movl %ebx,%edx 162299966Sjkim xorl %ebx,%ebx 163299966Sjkim movb %dl,%bl 164299966Sjkim cmpl -4(%edi),%esi 165299966Sjkim leal 8(%esi),%esi 166299966Sjkim jb .L006loop_mmx 167299966Sjkim psllq $56,%mm1 168299966Sjkim pxor %mm1,%mm2 169299966Sjkim movq %mm2,-8(%ebp,%esi,1) 170299966Sjkim emms 171299966Sjkim cmpl 24(%esp),%esi 172299966Sjkim je .L007done 173299966Sjkim jmp .L002loop1 174299966Sjkim.align 16 175299966Sjkim.L003go4loop4: 176299966Sjkim leal -4(%esi,%edx,1),%edx 177299966Sjkim movl %edx,28(%esp) 178299966Sjkim.L008loop4: 179299966Sjkim addb %cl,%bl 180299966Sjkim movl (%edi,%ebx,4),%edx 181299966Sjkim movl %ecx,(%edi,%ebx,4) 182299966Sjkim movl %edx,(%edi,%eax,4) 183299966Sjkim addl %ecx,%edx 184299966Sjkim incb %al 185299966Sjkim andl $255,%edx 186299966Sjkim movl (%edi,%eax,4),%ecx 187299966Sjkim movl (%edi,%edx,4),%ebp 188299966Sjkim addb %cl,%bl 189299966Sjkim movl (%edi,%ebx,4),%edx 190299966Sjkim movl %ecx,(%edi,%ebx,4) 191299966Sjkim movl %edx,(%edi,%eax,4) 192299966Sjkim addl %ecx,%edx 193299966Sjkim incb %al 194299966Sjkim andl $255,%edx 195299966Sjkim rorl $8,%ebp 196299966Sjkim movl (%edi,%eax,4),%ecx 197299966Sjkim orl (%edi,%edx,4),%ebp 198299966Sjkim addb %cl,%bl 199299966Sjkim movl (%edi,%ebx,4),%edx 200299966Sjkim movl %ecx,(%edi,%ebx,4) 201299966Sjkim movl %edx,(%edi,%eax,4) 202299966Sjkim addl %ecx,%edx 203299966Sjkim incb %al 204299966Sjkim andl $255,%edx 205299966Sjkim rorl $8,%ebp 206299966Sjkim movl (%edi,%eax,4),%ecx 207299966Sjkim orl (%edi,%edx,4),%ebp 208299966Sjkim addb %cl,%bl 209299966Sjkim movl (%edi,%ebx,4),%edx 210299966Sjkim movl %ecx,(%edi,%ebx,4) 211299966Sjkim movl %edx,(%edi,%eax,4) 212299966Sjkim addl %ecx,%edx 213299966Sjkim incb %al 214299966Sjkim andl $255,%edx 215299966Sjkim rorl $8,%ebp 216299966Sjkim movl 32(%esp),%ecx 217299966Sjkim orl (%edi,%edx,4),%ebp 218299966Sjkim rorl $8,%ebp 219299966Sjkim xorl (%esi),%ebp 220299966Sjkim cmpl 28(%esp),%esi 221299966Sjkim movl %ebp,(%ecx,%esi,1) 222299966Sjkim leal 4(%esi),%esi 223299966Sjkim movl (%edi,%eax,4),%ecx 224299966Sjkim jb .L008loop4 225299966Sjkim cmpl 24(%esp),%esi 226299966Sjkim je .L007done 227299966Sjkim movl 32(%esp),%ebp 228299966Sjkim.align 16 229299966Sjkim.L002loop1: 230299966Sjkim addb %cl,%bl 231299966Sjkim movl (%edi,%ebx,4),%edx 232299966Sjkim movl %ecx,(%edi,%ebx,4) 233299966Sjkim movl %edx,(%edi,%eax,4) 234299966Sjkim addl %ecx,%edx 235299966Sjkim incb %al 236299966Sjkim andl $255,%edx 237299966Sjkim movl (%edi,%edx,4),%edx 238299966Sjkim xorb (%esi),%dl 239299966Sjkim leal 1(%esi),%esi 240299966Sjkim movl (%edi,%eax,4),%ecx 241299966Sjkim cmpl 24(%esp),%esi 242299966Sjkim movb %dl,-1(%ebp,%esi,1) 243299966Sjkim jb .L002loop1 244299966Sjkim jmp .L007done 245299966Sjkim.align 16 246299966Sjkim.L001RC4_CHAR: 247299966Sjkim movzbl (%edi,%eax,1),%ecx 248299966Sjkim.L009cloop1: 249299966Sjkim addb %cl,%bl 250299966Sjkim movzbl (%edi,%ebx,1),%edx 251299966Sjkim movb %cl,(%edi,%ebx,1) 252299966Sjkim movb %dl,(%edi,%eax,1) 253299966Sjkim addb %cl,%dl 254299966Sjkim movzbl (%edi,%edx,1),%edx 255299966Sjkim addb $1,%al 256299966Sjkim xorb (%esi),%dl 257299966Sjkim leal 1(%esi),%esi 258299966Sjkim movzbl (%edi,%eax,1),%ecx 259299966Sjkim cmpl 24(%esp),%esi 260299966Sjkim movb %dl,-1(%ebp,%esi,1) 261299966Sjkim jb .L009cloop1 262299966Sjkim.L007done: 263299966Sjkim decb %al 264299966Sjkim movl %ebx,-4(%edi) 265299966Sjkim movb %al,-8(%edi) 266299966Sjkim.L000abort: 267299966Sjkim popl %edi 268299966Sjkim popl %esi 269299966Sjkim popl %ebx 270299966Sjkim popl %ebp 271299966Sjkim ret 272299966Sjkim.size RC4,.-.L_RC4_begin 273299966Sjkim.globl private_RC4_set_key 274299966Sjkim.type private_RC4_set_key,@function 275299966Sjkim.align 16 276299966Sjkimprivate_RC4_set_key: 277299966Sjkim.L_private_RC4_set_key_begin: 278299966Sjkim pushl %ebp 279299966Sjkim pushl %ebx 280299966Sjkim pushl %esi 281299966Sjkim pushl %edi 282299966Sjkim movl 20(%esp),%edi 283299966Sjkim movl 24(%esp),%ebp 284299966Sjkim movl 28(%esp),%esi 285299966Sjkim call .L010PIC_me_up 286299966Sjkim.L010PIC_me_up: 287299966Sjkim popl %edx 288299966Sjkim leal _GLOBAL_OFFSET_TABLE_+[.-.L010PIC_me_up](%edx),%edx 289299966Sjkim movl OPENSSL_ia32cap_P@GOT(%edx),%edx 290299966Sjkim leal 8(%edi),%edi 291299966Sjkim leal (%esi,%ebp,1),%esi 292299966Sjkim negl %ebp 293299966Sjkim xorl %eax,%eax 294299966Sjkim movl %ebp,-4(%edi) 295299966Sjkim btl $20,(%edx) 296299966Sjkim jc .L011c1stloop 297299966Sjkim.align 16 298299966Sjkim.L012w1stloop: 299299966Sjkim movl %eax,(%edi,%eax,4) 300299966Sjkim addb $1,%al 301299966Sjkim jnc .L012w1stloop 302299966Sjkim xorl %ecx,%ecx 303299966Sjkim xorl %edx,%edx 304299966Sjkim.align 16 305299966Sjkim.L013w2ndloop: 306299966Sjkim movl (%edi,%ecx,4),%eax 307299966Sjkim addb (%esi,%ebp,1),%dl 308299966Sjkim addb %al,%dl 309299966Sjkim addl $1,%ebp 310299966Sjkim movl (%edi,%edx,4),%ebx 311299966Sjkim jnz .L014wnowrap 312299966Sjkim movl -4(%edi),%ebp 313299966Sjkim.L014wnowrap: 314299966Sjkim movl %eax,(%edi,%edx,4) 315299966Sjkim movl %ebx,(%edi,%ecx,4) 316299966Sjkim addb $1,%cl 317299966Sjkim jnc .L013w2ndloop 318299966Sjkim jmp .L015exit 319299966Sjkim.align 16 320299966Sjkim.L011c1stloop: 321299966Sjkim movb %al,(%edi,%eax,1) 322299966Sjkim addb $1,%al 323299966Sjkim jnc .L011c1stloop 324299966Sjkim xorl %ecx,%ecx 325299966Sjkim xorl %edx,%edx 326299966Sjkim xorl %ebx,%ebx 327299966Sjkim.align 16 328299966Sjkim.L016c2ndloop: 329299966Sjkim movb (%edi,%ecx,1),%al 330299966Sjkim addb (%esi,%ebp,1),%dl 331299966Sjkim addb %al,%dl 332299966Sjkim addl $1,%ebp 333299966Sjkim movb (%edi,%edx,1),%bl 334299966Sjkim jnz .L017cnowrap 335299966Sjkim movl -4(%edi),%ebp 336299966Sjkim.L017cnowrap: 337299966Sjkim movb %al,(%edi,%edx,1) 338299966Sjkim movb %bl,(%edi,%ecx,1) 339299966Sjkim addb $1,%cl 340299966Sjkim jnc .L016c2ndloop 341299966Sjkim movl $-1,256(%edi) 342299966Sjkim.L015exit: 343299966Sjkim xorl %eax,%eax 344299966Sjkim movl %eax,-8(%edi) 345299966Sjkim movl %eax,-4(%edi) 346299966Sjkim popl %edi 347299966Sjkim popl %esi 348299966Sjkim popl %ebx 349299966Sjkim popl %ebp 350299966Sjkim ret 351299966Sjkim.size private_RC4_set_key,.-.L_private_RC4_set_key_begin 352299966Sjkim.globl RC4_options 353299966Sjkim.type RC4_options,@function 354299966Sjkim.align 16 355299966SjkimRC4_options: 356299966Sjkim.L_RC4_options_begin: 357299966Sjkim call .L018pic_point 358299966Sjkim.L018pic_point: 359299966Sjkim popl %eax 360299966Sjkim leal .L019opts-.L018pic_point(%eax),%eax 361299966Sjkim call .L020PIC_me_up 362299966Sjkim.L020PIC_me_up: 363299966Sjkim popl %edx 364299966Sjkim leal _GLOBAL_OFFSET_TABLE_+[.-.L020PIC_me_up](%edx),%edx 365299966Sjkim movl OPENSSL_ia32cap_P@GOT(%edx),%edx 366299966Sjkim movl (%edx),%edx 367299966Sjkim btl $20,%edx 368299966Sjkim jc .L0211xchar 369299966Sjkim btl $26,%edx 370299966Sjkim jnc .L022ret 371299966Sjkim addl $25,%eax 372299966Sjkim ret 373299966Sjkim.L0211xchar: 374299966Sjkim addl $12,%eax 375299966Sjkim.L022ret: 376299966Sjkim ret 377299966Sjkim.align 64 378299966Sjkim.L019opts: 379299966Sjkim.byte 114,99,52,40,52,120,44,105,110,116,41,0 380299966Sjkim.byte 114,99,52,40,49,120,44,99,104,97,114,41,0 381299966Sjkim.byte 114,99,52,40,56,120,44,109,109,120,41,0 382299966Sjkim.byte 82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89 383299966Sjkim.byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 384299966Sjkim.byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 385299966Sjkim.align 64 386299966Sjkim.size RC4_options,.-.L_RC4_options_begin 387299966Sjkim.comm OPENSSL_ia32cap_P,8,4 388299966Sjkim#else 389299966Sjkim.file "rc4-586.S" 390299966Sjkim.text 391299966Sjkim.globl RC4 392299966Sjkim.type RC4,@function 393299966Sjkim.align 16 394299966SjkimRC4: 395299966Sjkim.L_RC4_begin: 396299966Sjkim pushl %ebp 397299966Sjkim pushl %ebx 398299966Sjkim pushl %esi 399299966Sjkim pushl %edi 400299966Sjkim movl 20(%esp),%edi 401299966Sjkim movl 24(%esp),%edx 402299966Sjkim movl 28(%esp),%esi 403299966Sjkim movl 32(%esp),%ebp 404299966Sjkim xorl %eax,%eax 405299966Sjkim xorl %ebx,%ebx 406299966Sjkim cmpl $0,%edx 407299966Sjkim je .L000abort 408299966Sjkim movb (%edi),%al 409299966Sjkim movb 4(%edi),%bl 410299966Sjkim addl $8,%edi 411299966Sjkim leal (%esi,%edx,1),%ecx 412299966Sjkim subl %esi,%ebp 413299966Sjkim movl %ecx,24(%esp) 414299966Sjkim incb %al 415299966Sjkim cmpl $-1,256(%edi) 416299966Sjkim je .L001RC4_CHAR 417299966Sjkim movl (%edi,%eax,4),%ecx 418299966Sjkim andl $-4,%edx 419299966Sjkim jz .L002loop1 420299966Sjkim testl $-8,%edx 421299966Sjkim movl %ebp,32(%esp) 422299966Sjkim jz .L003go4loop4 423238405Sjkim leal OPENSSL_ia32cap_P,%ebp 424238405Sjkim btl $26,(%ebp) 425238405Sjkim jnc .L003go4loop4 426238405Sjkim movl 32(%esp),%ebp 427238405Sjkim andl $-8,%edx 428238405Sjkim leal -8(%esi,%edx,1),%edx 429238405Sjkim movl %edx,-4(%edi) 430238405Sjkim addb %cl,%bl 431238405Sjkim movl (%edi,%ebx,4),%edx 432238405Sjkim movl %ecx,(%edi,%ebx,4) 433238405Sjkim movl %edx,(%edi,%eax,4) 434238405Sjkim incl %eax 435238405Sjkim addl %ecx,%edx 436238405Sjkim movzbl %al,%eax 437238405Sjkim movzbl %dl,%edx 438238405Sjkim movq (%esi),%mm0 439238405Sjkim movl (%edi,%eax,4),%ecx 440238405Sjkim movd (%edi,%edx,4),%mm2 441238405Sjkim jmp .L004loop_mmx_enter 442238405Sjkim.align 16 443238405Sjkim.L005loop_mmx: 444238405Sjkim addb %cl,%bl 445238405Sjkim psllq $56,%mm1 446238405Sjkim movl (%edi,%ebx,4),%edx 447238405Sjkim movl %ecx,(%edi,%ebx,4) 448238405Sjkim movl %edx,(%edi,%eax,4) 449238405Sjkim incl %eax 450238405Sjkim addl %ecx,%edx 451238405Sjkim movzbl %al,%eax 452238405Sjkim movzbl %dl,%edx 453238405Sjkim pxor %mm1,%mm2 454238405Sjkim movq (%esi),%mm0 455238405Sjkim movq %mm2,-8(%ebp,%esi,1) 456238405Sjkim movl (%edi,%eax,4),%ecx 457238405Sjkim movd (%edi,%edx,4),%mm2 458238405Sjkim.L004loop_mmx_enter: 459238405Sjkim addb %cl,%bl 460238405Sjkim movl (%edi,%ebx,4),%edx 461238405Sjkim movl %ecx,(%edi,%ebx,4) 462238405Sjkim movl %edx,(%edi,%eax,4) 463238405Sjkim incl %eax 464238405Sjkim addl %ecx,%edx 465238405Sjkim movzbl %al,%eax 466238405Sjkim movzbl %dl,%edx 467238405Sjkim pxor %mm0,%mm2 468238405Sjkim movl (%edi,%eax,4),%ecx 469238405Sjkim movd (%edi,%edx,4),%mm1 470238405Sjkim addb %cl,%bl 471238405Sjkim psllq $8,%mm1 472238405Sjkim movl (%edi,%ebx,4),%edx 473238405Sjkim movl %ecx,(%edi,%ebx,4) 474238405Sjkim movl %edx,(%edi,%eax,4) 475238405Sjkim incl %eax 476238405Sjkim addl %ecx,%edx 477238405Sjkim movzbl %al,%eax 478238405Sjkim movzbl %dl,%edx 479238405Sjkim pxor %mm1,%mm2 480238405Sjkim movl (%edi,%eax,4),%ecx 481238405Sjkim movd (%edi,%edx,4),%mm1 482238405Sjkim addb %cl,%bl 483238405Sjkim psllq $16,%mm1 484238405Sjkim movl (%edi,%ebx,4),%edx 485238405Sjkim movl %ecx,(%edi,%ebx,4) 486238405Sjkim movl %edx,(%edi,%eax,4) 487238405Sjkim incl %eax 488238405Sjkim addl %ecx,%edx 489238405Sjkim movzbl %al,%eax 490238405Sjkim movzbl %dl,%edx 491238405Sjkim pxor %mm1,%mm2 492238405Sjkim movl (%edi,%eax,4),%ecx 493238405Sjkim movd (%edi,%edx,4),%mm1 494238405Sjkim addb %cl,%bl 495238405Sjkim psllq $24,%mm1 496238405Sjkim movl (%edi,%ebx,4),%edx 497238405Sjkim movl %ecx,(%edi,%ebx,4) 498238405Sjkim movl %edx,(%edi,%eax,4) 499238405Sjkim incl %eax 500238405Sjkim addl %ecx,%edx 501238405Sjkim movzbl %al,%eax 502238405Sjkim movzbl %dl,%edx 503238405Sjkim pxor %mm1,%mm2 504238405Sjkim movl (%edi,%eax,4),%ecx 505238405Sjkim movd (%edi,%edx,4),%mm1 506238405Sjkim addb %cl,%bl 507238405Sjkim psllq $32,%mm1 508238405Sjkim movl (%edi,%ebx,4),%edx 509238405Sjkim movl %ecx,(%edi,%ebx,4) 510238405Sjkim movl %edx,(%edi,%eax,4) 511238405Sjkim incl %eax 512238405Sjkim addl %ecx,%edx 513238405Sjkim movzbl %al,%eax 514238405Sjkim movzbl %dl,%edx 515238405Sjkim pxor %mm1,%mm2 516238405Sjkim movl (%edi,%eax,4),%ecx 517238405Sjkim movd (%edi,%edx,4),%mm1 518238405Sjkim addb %cl,%bl 519238405Sjkim psllq $40,%mm1 520238405Sjkim movl (%edi,%ebx,4),%edx 521238405Sjkim movl %ecx,(%edi,%ebx,4) 522238405Sjkim movl %edx,(%edi,%eax,4) 523238405Sjkim incl %eax 524238405Sjkim addl %ecx,%edx 525238405Sjkim movzbl %al,%eax 526238405Sjkim movzbl %dl,%edx 527238405Sjkim pxor %mm1,%mm2 528238405Sjkim movl (%edi,%eax,4),%ecx 529238405Sjkim movd (%edi,%edx,4),%mm1 530238405Sjkim addb %cl,%bl 531238405Sjkim psllq $48,%mm1 532238405Sjkim movl (%edi,%ebx,4),%edx 533238405Sjkim movl %ecx,(%edi,%ebx,4) 534238405Sjkim movl %edx,(%edi,%eax,4) 535238405Sjkim incl %eax 536238405Sjkim addl %ecx,%edx 537238405Sjkim movzbl %al,%eax 538238405Sjkim movzbl %dl,%edx 539238405Sjkim pxor %mm1,%mm2 540238405Sjkim movl (%edi,%eax,4),%ecx 541238405Sjkim movd (%edi,%edx,4),%mm1 542238405Sjkim movl %ebx,%edx 543238405Sjkim xorl %ebx,%ebx 544238405Sjkim movb %dl,%bl 545238405Sjkim cmpl -4(%edi),%esi 546238405Sjkim leal 8(%esi),%esi 547238405Sjkim jb .L005loop_mmx 548238405Sjkim psllq $56,%mm1 549238405Sjkim pxor %mm1,%mm2 550238405Sjkim movq %mm2,-8(%ebp,%esi,1) 551238405Sjkim emms 552238405Sjkim cmpl 24(%esp),%esi 553238405Sjkim je .L006done 554238405Sjkim jmp .L002loop1 555238405Sjkim.align 16 556238405Sjkim.L003go4loop4: 557238405Sjkim leal -4(%esi,%edx,1),%edx 558238405Sjkim movl %edx,28(%esp) 559238405Sjkim.L007loop4: 560238405Sjkim addb %cl,%bl 561238405Sjkim movl (%edi,%ebx,4),%edx 562238405Sjkim movl %ecx,(%edi,%ebx,4) 563238405Sjkim movl %edx,(%edi,%eax,4) 564238405Sjkim addl %ecx,%edx 565238405Sjkim incb %al 566238405Sjkim andl $255,%edx 567238405Sjkim movl (%edi,%eax,4),%ecx 568238405Sjkim movl (%edi,%edx,4),%ebp 569238405Sjkim addb %cl,%bl 570238405Sjkim movl (%edi,%ebx,4),%edx 571238405Sjkim movl %ecx,(%edi,%ebx,4) 572238405Sjkim movl %edx,(%edi,%eax,4) 573238405Sjkim addl %ecx,%edx 574238405Sjkim incb %al 575238405Sjkim andl $255,%edx 576238405Sjkim rorl $8,%ebp 577238405Sjkim movl (%edi,%eax,4),%ecx 578238405Sjkim orl (%edi,%edx,4),%ebp 579238405Sjkim addb %cl,%bl 580238405Sjkim movl (%edi,%ebx,4),%edx 581238405Sjkim movl %ecx,(%edi,%ebx,4) 582238405Sjkim movl %edx,(%edi,%eax,4) 583238405Sjkim addl %ecx,%edx 584238405Sjkim incb %al 585238405Sjkim andl $255,%edx 586238405Sjkim rorl $8,%ebp 587238405Sjkim movl (%edi,%eax,4),%ecx 588238405Sjkim orl (%edi,%edx,4),%ebp 589238405Sjkim addb %cl,%bl 590238405Sjkim movl (%edi,%ebx,4),%edx 591238405Sjkim movl %ecx,(%edi,%ebx,4) 592238405Sjkim movl %edx,(%edi,%eax,4) 593238405Sjkim addl %ecx,%edx 594238405Sjkim incb %al 595238405Sjkim andl $255,%edx 596238405Sjkim rorl $8,%ebp 597238405Sjkim movl 32(%esp),%ecx 598238405Sjkim orl (%edi,%edx,4),%ebp 599238405Sjkim rorl $8,%ebp 600238405Sjkim xorl (%esi),%ebp 601238405Sjkim cmpl 28(%esp),%esi 602238405Sjkim movl %ebp,(%ecx,%esi,1) 603238405Sjkim leal 4(%esi),%esi 604238405Sjkim movl (%edi,%eax,4),%ecx 605238405Sjkim jb .L007loop4 606238405Sjkim cmpl 24(%esp),%esi 607238405Sjkim je .L006done 608238405Sjkim movl 32(%esp),%ebp 609238405Sjkim.align 16 610238405Sjkim.L002loop1: 611238405Sjkim addb %cl,%bl 612238405Sjkim movl (%edi,%ebx,4),%edx 613238405Sjkim movl %ecx,(%edi,%ebx,4) 614238405Sjkim movl %edx,(%edi,%eax,4) 615238405Sjkim addl %ecx,%edx 616238405Sjkim incb %al 617238405Sjkim andl $255,%edx 618238405Sjkim movl (%edi,%edx,4),%edx 619238405Sjkim xorb (%esi),%dl 620238405Sjkim leal 1(%esi),%esi 621238405Sjkim movl (%edi,%eax,4),%ecx 622238405Sjkim cmpl 24(%esp),%esi 623238405Sjkim movb %dl,-1(%ebp,%esi,1) 624238405Sjkim jb .L002loop1 625238405Sjkim jmp .L006done 626238405Sjkim.align 16 627238405Sjkim.L001RC4_CHAR: 628238405Sjkim movzbl (%edi,%eax,1),%ecx 629238405Sjkim.L008cloop1: 630238405Sjkim addb %cl,%bl 631238405Sjkim movzbl (%edi,%ebx,1),%edx 632238405Sjkim movb %cl,(%edi,%ebx,1) 633238405Sjkim movb %dl,(%edi,%eax,1) 634238405Sjkim addb %cl,%dl 635238405Sjkim movzbl (%edi,%edx,1),%edx 636238405Sjkim addb $1,%al 637238405Sjkim xorb (%esi),%dl 638238405Sjkim leal 1(%esi),%esi 639238405Sjkim movzbl (%edi,%eax,1),%ecx 640238405Sjkim cmpl 24(%esp),%esi 641238405Sjkim movb %dl,-1(%ebp,%esi,1) 642238405Sjkim jb .L008cloop1 643238405Sjkim.L006done: 644238405Sjkim decb %al 645238405Sjkim movl %ebx,-4(%edi) 646238405Sjkim movb %al,-8(%edi) 647238405Sjkim.L000abort: 64895967Speter popl %edi 64995967Speter popl %esi 65095967Speter popl %ebx 65195967Speter popl %ebp 65295967Speter ret 653238405Sjkim.size RC4,.-.L_RC4_begin 654238405Sjkim.globl private_RC4_set_key 655238405Sjkim.type private_RC4_set_key,@function 656238405Sjkim.align 16 657238405Sjkimprivate_RC4_set_key: 658238405Sjkim.L_private_RC4_set_key_begin: 659238405Sjkim pushl %ebp 660238405Sjkim pushl %ebx 661238405Sjkim pushl %esi 662238405Sjkim pushl %edi 663238405Sjkim movl 20(%esp),%edi 664238405Sjkim movl 24(%esp),%ebp 665238405Sjkim movl 28(%esp),%esi 666238405Sjkim leal OPENSSL_ia32cap_P,%edx 667238405Sjkim leal 8(%edi),%edi 668238405Sjkim leal (%esi,%ebp,1),%esi 669238405Sjkim negl %ebp 670238405Sjkim xorl %eax,%eax 671238405Sjkim movl %ebp,-4(%edi) 672238405Sjkim btl $20,(%edx) 673238405Sjkim jc .L009c1stloop 674238405Sjkim.align 16 675238405Sjkim.L010w1stloop: 676238405Sjkim movl %eax,(%edi,%eax,4) 677238405Sjkim addb $1,%al 678238405Sjkim jnc .L010w1stloop 679238405Sjkim xorl %ecx,%ecx 680238405Sjkim xorl %edx,%edx 681238405Sjkim.align 16 682238405Sjkim.L011w2ndloop: 683238405Sjkim movl (%edi,%ecx,4),%eax 684238405Sjkim addb (%esi,%ebp,1),%dl 685238405Sjkim addb %al,%dl 686238405Sjkim addl $1,%ebp 687238405Sjkim movl (%edi,%edx,4),%ebx 688238405Sjkim jnz .L012wnowrap 689238405Sjkim movl -4(%edi),%ebp 690238405Sjkim.L012wnowrap: 691238405Sjkim movl %eax,(%edi,%edx,4) 692238405Sjkim movl %ebx,(%edi,%ecx,4) 693238405Sjkim addb $1,%cl 694238405Sjkim jnc .L011w2ndloop 695238405Sjkim jmp .L013exit 696238405Sjkim.align 16 697238405Sjkim.L009c1stloop: 698238405Sjkim movb %al,(%edi,%eax,1) 699238405Sjkim addb $1,%al 700238405Sjkim jnc .L009c1stloop 701238405Sjkim xorl %ecx,%ecx 702238405Sjkim xorl %edx,%edx 703238405Sjkim xorl %ebx,%ebx 704238405Sjkim.align 16 705238405Sjkim.L014c2ndloop: 706238405Sjkim movb (%edi,%ecx,1),%al 707238405Sjkim addb (%esi,%ebp,1),%dl 708238405Sjkim addb %al,%dl 709238405Sjkim addl $1,%ebp 710238405Sjkim movb (%edi,%edx,1),%bl 711238405Sjkim jnz .L015cnowrap 712238405Sjkim movl -4(%edi),%ebp 713238405Sjkim.L015cnowrap: 714238405Sjkim movb %al,(%edi,%edx,1) 715238405Sjkim movb %bl,(%edi,%ecx,1) 716238405Sjkim addb $1,%cl 717238405Sjkim jnc .L014c2ndloop 718238405Sjkim movl $-1,256(%edi) 719238405Sjkim.L013exit: 720238405Sjkim xorl %eax,%eax 721238405Sjkim movl %eax,-8(%edi) 722238405Sjkim movl %eax,-4(%edi) 723238405Sjkim popl %edi 724238405Sjkim popl %esi 725238405Sjkim popl %ebx 726238405Sjkim popl %ebp 727238405Sjkim ret 728238405Sjkim.size private_RC4_set_key,.-.L_private_RC4_set_key_begin 729238405Sjkim.globl RC4_options 730238405Sjkim.type RC4_options,@function 731238405Sjkim.align 16 732238405SjkimRC4_options: 733238405Sjkim.L_RC4_options_begin: 734238405Sjkim call .L016pic_point 735238405Sjkim.L016pic_point: 736238405Sjkim popl %eax 737238405Sjkim leal .L017opts-.L016pic_point(%eax),%eax 738238405Sjkim leal OPENSSL_ia32cap_P,%edx 739238405Sjkim movl (%edx),%edx 740238405Sjkim btl $20,%edx 741238405Sjkim jc .L0181xchar 742238405Sjkim btl $26,%edx 743238405Sjkim jnc .L019ret 744238405Sjkim addl $25,%eax 745238405Sjkim ret 746238405Sjkim.L0181xchar: 747238405Sjkim addl $12,%eax 748238405Sjkim.L019ret: 749238405Sjkim ret 750238405Sjkim.align 64 751238405Sjkim.L017opts: 752238405Sjkim.byte 114,99,52,40,52,120,44,105,110,116,41,0 753238405Sjkim.byte 114,99,52,40,49,120,44,99,104,97,114,41,0 754238405Sjkim.byte 114,99,52,40,56,120,44,109,109,120,41,0 755238405Sjkim.byte 82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89 756238405Sjkim.byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 757238405Sjkim.byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 758238405Sjkim.align 64 759238405Sjkim.size RC4_options,.-.L_RC4_options_begin 760238405Sjkim.comm OPENSSL_ia32cap_P,8,4 761299966Sjkim#endif 762