Path: blob/main/sys/crypto/openssl/i386/rc4-586.S
101200 views
/* Do not modify. This file is auto-generated from rc4-586.pl. */1#ifdef PIC2.text3.globl RC44.type RC4,@function5.align 166RC4:7.L_RC4_begin:8#ifdef __CET__910.byte 243,15,30,25111#endif1213pushl %ebp14pushl %ebx15pushl %esi16pushl %edi17movl 20(%esp),%edi18movl 24(%esp),%edx19movl 28(%esp),%esi20movl 32(%esp),%ebp21xorl %eax,%eax22xorl %ebx,%ebx23cmpl $0,%edx24je .L000abort25movb (%edi),%al26movb 4(%edi),%bl27addl $8,%edi28leal (%esi,%edx,1),%ecx29subl %esi,%ebp30movl %ecx,24(%esp)31incb %al32cmpl $-1,256(%edi)33je .L001RC4_CHAR34movl (%edi,%eax,4),%ecx35andl $-4,%edx36jz .L002loop137movl %ebp,32(%esp)38testl $-8,%edx39jz .L003go4loop440call .L004PIC_me_up41.L004PIC_me_up:42popl %ebp43leal OPENSSL_ia32cap_P-.L004PIC_me_up(%ebp),%ebp44btl $26,(%ebp)45jnc .L003go4loop446movl 32(%esp),%ebp47andl $-8,%edx48leal -8(%esi,%edx,1),%edx49movl %edx,-4(%edi)50addb %cl,%bl51movl (%edi,%ebx,4),%edx52movl %ecx,(%edi,%ebx,4)53movl %edx,(%edi,%eax,4)54incl %eax55addl %ecx,%edx56movzbl %al,%eax57movzbl %dl,%edx58movq (%esi),%mm059movl (%edi,%eax,4),%ecx60movd (%edi,%edx,4),%mm261jmp .L005loop_mmx_enter62.align 1663.L006loop_mmx:64addb %cl,%bl65psllq $56,%mm166movl (%edi,%ebx,4),%edx67movl %ecx,(%edi,%ebx,4)68movl %edx,(%edi,%eax,4)69incl %eax70addl %ecx,%edx71movzbl %al,%eax72movzbl %dl,%edx73pxor %mm1,%mm274movq (%esi),%mm075movq %mm2,-8(%ebp,%esi,1)76movl (%edi,%eax,4),%ecx77movd (%edi,%edx,4),%mm278.L005loop_mmx_enter:79addb %cl,%bl80movl (%edi,%ebx,4),%edx81movl %ecx,(%edi,%ebx,4)82movl %edx,(%edi,%eax,4)83incl %eax84addl %ecx,%edx85movzbl %al,%eax86movzbl %dl,%edx87pxor %mm0,%mm288movl (%edi,%eax,4),%ecx89movd (%edi,%edx,4),%mm190addb %cl,%bl91psllq $8,%mm192movl (%edi,%ebx,4),%edx93movl %ecx,(%edi,%ebx,4)94movl %edx,(%edi,%eax,4)95incl %eax96addl %ecx,%edx97movzbl %al,%eax98movzbl %dl,%edx99pxor %mm1,%mm2100movl (%edi,%eax,4),%ecx101movd (%edi,%edx,4),%mm1102addb %cl,%bl103psllq $16,%mm1104movl (%edi,%ebx,4),%edx105movl %ecx,(%edi,%ebx,4)106movl %edx,(%edi,%eax,4)107incl %eax108addl %ecx,%edx109movzbl %al,%eax110movzbl %dl,%edx111pxor %mm1,%mm2112movl (%edi,%eax,4),%ecx113movd (%edi,%edx,4),%mm1114addb %cl,%bl115psllq $24,%mm1116movl (%edi,%ebx,4),%edx117movl %ecx,(%edi,%ebx,4)118movl %edx,(%edi,%eax,4)119incl %eax120addl %ecx,%edx121movzbl %al,%eax122movzbl %dl,%edx123pxor %mm1,%mm2124movl (%edi,%eax,4),%ecx125movd (%edi,%edx,4),%mm1126addb %cl,%bl127psllq $32,%mm1128movl (%edi,%ebx,4),%edx129movl %ecx,(%edi,%ebx,4)130movl %edx,(%edi,%eax,4)131incl %eax132addl %ecx,%edx133movzbl %al,%eax134movzbl %dl,%edx135pxor %mm1,%mm2136movl (%edi,%eax,4),%ecx137movd (%edi,%edx,4),%mm1138addb %cl,%bl139psllq $40,%mm1140movl (%edi,%ebx,4),%edx141movl %ecx,(%edi,%ebx,4)142movl %edx,(%edi,%eax,4)143incl %eax144addl %ecx,%edx145movzbl %al,%eax146movzbl %dl,%edx147pxor %mm1,%mm2148movl (%edi,%eax,4),%ecx149movd (%edi,%edx,4),%mm1150addb %cl,%bl151psllq $48,%mm1152movl (%edi,%ebx,4),%edx153movl %ecx,(%edi,%ebx,4)154movl %edx,(%edi,%eax,4)155incl %eax156addl %ecx,%edx157movzbl %al,%eax158movzbl %dl,%edx159pxor %mm1,%mm2160movl (%edi,%eax,4),%ecx161movd (%edi,%edx,4),%mm1162movl %ebx,%edx163xorl %ebx,%ebx164movb %dl,%bl165cmpl -4(%edi),%esi166leal 8(%esi),%esi167jb .L006loop_mmx168psllq $56,%mm1169pxor %mm1,%mm2170movq %mm2,-8(%ebp,%esi,1)171emms172cmpl 24(%esp),%esi173je .L007done174jmp .L002loop1175.align 16176.L003go4loop4:177leal -4(%esi,%edx,1),%edx178movl %edx,28(%esp)179.L008loop4:180addb %cl,%bl181movl (%edi,%ebx,4),%edx182movl %ecx,(%edi,%ebx,4)183movl %edx,(%edi,%eax,4)184addl %ecx,%edx185incb %al186andl $255,%edx187movl (%edi,%eax,4),%ecx188movl (%edi,%edx,4),%ebp189addb %cl,%bl190movl (%edi,%ebx,4),%edx191movl %ecx,(%edi,%ebx,4)192movl %edx,(%edi,%eax,4)193addl %ecx,%edx194incb %al195andl $255,%edx196rorl $8,%ebp197movl (%edi,%eax,4),%ecx198orl (%edi,%edx,4),%ebp199addb %cl,%bl200movl (%edi,%ebx,4),%edx201movl %ecx,(%edi,%ebx,4)202movl %edx,(%edi,%eax,4)203addl %ecx,%edx204incb %al205andl $255,%edx206rorl $8,%ebp207movl (%edi,%eax,4),%ecx208orl (%edi,%edx,4),%ebp209addb %cl,%bl210movl (%edi,%ebx,4),%edx211movl %ecx,(%edi,%ebx,4)212movl %edx,(%edi,%eax,4)213addl %ecx,%edx214incb %al215andl $255,%edx216rorl $8,%ebp217movl 32(%esp),%ecx218orl (%edi,%edx,4),%ebp219rorl $8,%ebp220xorl (%esi),%ebp221cmpl 28(%esp),%esi222movl %ebp,(%ecx,%esi,1)223leal 4(%esi),%esi224movl (%edi,%eax,4),%ecx225jb .L008loop4226cmpl 24(%esp),%esi227je .L007done228movl 32(%esp),%ebp229.align 16230.L002loop1:231addb %cl,%bl232movl (%edi,%ebx,4),%edx233movl %ecx,(%edi,%ebx,4)234movl %edx,(%edi,%eax,4)235addl %ecx,%edx236incb %al237andl $255,%edx238movl (%edi,%edx,4),%edx239xorb (%esi),%dl240leal 1(%esi),%esi241movl (%edi,%eax,4),%ecx242cmpl 24(%esp),%esi243movb %dl,-1(%ebp,%esi,1)244jb .L002loop1245jmp .L007done246.align 16247.L001RC4_CHAR:248movzbl (%edi,%eax,1),%ecx249.L009cloop1:250addb %cl,%bl251movzbl (%edi,%ebx,1),%edx252movb %cl,(%edi,%ebx,1)253movb %dl,(%edi,%eax,1)254addb %cl,%dl255movzbl (%edi,%edx,1),%edx256addb $1,%al257xorb (%esi),%dl258leal 1(%esi),%esi259movzbl (%edi,%eax,1),%ecx260cmpl 24(%esp),%esi261movb %dl,-1(%ebp,%esi,1)262jb .L009cloop1263.L007done:264decb %al265movl %ebx,-4(%edi)266movb %al,-8(%edi)267.L000abort:268popl %edi269popl %esi270popl %ebx271popl %ebp272ret273.size RC4,.-.L_RC4_begin274.globl RC4_set_key275.type RC4_set_key,@function276.align 16277RC4_set_key:278.L_RC4_set_key_begin:279#ifdef __CET__280281.byte 243,15,30,251282#endif283284pushl %ebp285pushl %ebx286pushl %esi287pushl %edi288movl 20(%esp),%edi289movl 24(%esp),%ebp290movl 28(%esp),%esi291call .L010PIC_me_up292.L010PIC_me_up:293popl %edx294leal OPENSSL_ia32cap_P-.L010PIC_me_up(%edx),%edx295leal 8(%edi),%edi296leal (%esi,%ebp,1),%esi297negl %ebp298xorl %eax,%eax299movl %ebp,-4(%edi)300btl $20,(%edx)301jc .L011c1stloop302.align 16303.L012w1stloop:304movl %eax,(%edi,%eax,4)305addb $1,%al306jnc .L012w1stloop307xorl %ecx,%ecx308xorl %edx,%edx309.align 16310.L013w2ndloop:311movl (%edi,%ecx,4),%eax312addb (%esi,%ebp,1),%dl313addb %al,%dl314addl $1,%ebp315movl (%edi,%edx,4),%ebx316jnz .L014wnowrap317movl -4(%edi),%ebp318.L014wnowrap:319movl %eax,(%edi,%edx,4)320movl %ebx,(%edi,%ecx,4)321addb $1,%cl322jnc .L013w2ndloop323jmp .L015exit324.align 16325.L011c1stloop:326movb %al,(%edi,%eax,1)327addb $1,%al328jnc .L011c1stloop329xorl %ecx,%ecx330xorl %edx,%edx331xorl %ebx,%ebx332.align 16333.L016c2ndloop:334movb (%edi,%ecx,1),%al335addb (%esi,%ebp,1),%dl336addb %al,%dl337addl $1,%ebp338movb (%edi,%edx,1),%bl339jnz .L017cnowrap340movl -4(%edi),%ebp341.L017cnowrap:342movb %al,(%edi,%edx,1)343movb %bl,(%edi,%ecx,1)344addb $1,%cl345jnc .L016c2ndloop346movl $-1,256(%edi)347.L015exit:348xorl %eax,%eax349movl %eax,-8(%edi)350movl %eax,-4(%edi)351popl %edi352popl %esi353popl %ebx354popl %ebp355ret356.size RC4_set_key,.-.L_RC4_set_key_begin357.globl RC4_options358.type RC4_options,@function359.align 16360RC4_options:361.L_RC4_options_begin:362#ifdef __CET__363364.byte 243,15,30,251365#endif366367call .L018pic_point368.L018pic_point:369popl %eax370leal .L019opts-.L018pic_point(%eax),%eax371call .L020PIC_me_up372.L020PIC_me_up:373popl %edx374leal OPENSSL_ia32cap_P-.L020PIC_me_up(%edx),%edx375movl (%edx),%edx376btl $20,%edx377jc .L0211xchar378btl $26,%edx379jnc .L022ret380addl $25,%eax381ret382.L0211xchar:383addl $12,%eax384.L022ret:385ret386.align 64387.L019opts:388.byte 114,99,52,40,52,120,44,105,110,116,41,0389.byte 114,99,52,40,49,120,44,99,104,97,114,41,0390.byte 114,99,52,40,56,120,44,109,109,120,41,0391.byte 82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89392.byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114393.byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0394.align 64395.size RC4_options,.-.L_RC4_options_begin396.comm OPENSSL_ia32cap_P,40,4397398.section ".note.gnu.property", "a"399.p2align 2400.long 1f - 0f401.long 4f - 1f402.long 54030:404.asciz "GNU"4051:406.p2align 2407.long 0xc0000002408.long 3f - 2f4092:410.long 34113:412.p2align 24134:414#else415.text416.globl RC4417.type RC4,@function418.align 16419RC4:420.L_RC4_begin:421#ifdef __CET__422423.byte 243,15,30,251424#endif425426pushl %ebp427pushl %ebx428pushl %esi429pushl %edi430movl 20(%esp),%edi431movl 24(%esp),%edx432movl 28(%esp),%esi433movl 32(%esp),%ebp434xorl %eax,%eax435xorl %ebx,%ebx436cmpl $0,%edx437je .L000abort438movb (%edi),%al439movb 4(%edi),%bl440addl $8,%edi441leal (%esi,%edx,1),%ecx442subl %esi,%ebp443movl %ecx,24(%esp)444incb %al445cmpl $-1,256(%edi)446je .L001RC4_CHAR447movl (%edi,%eax,4),%ecx448andl $-4,%edx449jz .L002loop1450movl %ebp,32(%esp)451testl $-8,%edx452jz .L003go4loop4453leal OPENSSL_ia32cap_P,%ebp454btl $26,(%ebp)455jnc .L003go4loop4456movl 32(%esp),%ebp457andl $-8,%edx458leal -8(%esi,%edx,1),%edx459movl %edx,-4(%edi)460addb %cl,%bl461movl (%edi,%ebx,4),%edx462movl %ecx,(%edi,%ebx,4)463movl %edx,(%edi,%eax,4)464incl %eax465addl %ecx,%edx466movzbl %al,%eax467movzbl %dl,%edx468movq (%esi),%mm0469movl (%edi,%eax,4),%ecx470movd (%edi,%edx,4),%mm2471jmp .L004loop_mmx_enter472.align 16473.L005loop_mmx:474addb %cl,%bl475psllq $56,%mm1476movl (%edi,%ebx,4),%edx477movl %ecx,(%edi,%ebx,4)478movl %edx,(%edi,%eax,4)479incl %eax480addl %ecx,%edx481movzbl %al,%eax482movzbl %dl,%edx483pxor %mm1,%mm2484movq (%esi),%mm0485movq %mm2,-8(%ebp,%esi,1)486movl (%edi,%eax,4),%ecx487movd (%edi,%edx,4),%mm2488.L004loop_mmx_enter:489addb %cl,%bl490movl (%edi,%ebx,4),%edx491movl %ecx,(%edi,%ebx,4)492movl %edx,(%edi,%eax,4)493incl %eax494addl %ecx,%edx495movzbl %al,%eax496movzbl %dl,%edx497pxor %mm0,%mm2498movl (%edi,%eax,4),%ecx499movd (%edi,%edx,4),%mm1500addb %cl,%bl501psllq $8,%mm1502movl (%edi,%ebx,4),%edx503movl %ecx,(%edi,%ebx,4)504movl %edx,(%edi,%eax,4)505incl %eax506addl %ecx,%edx507movzbl %al,%eax508movzbl %dl,%edx509pxor %mm1,%mm2510movl (%edi,%eax,4),%ecx511movd (%edi,%edx,4),%mm1512addb %cl,%bl513psllq $16,%mm1514movl (%edi,%ebx,4),%edx515movl %ecx,(%edi,%ebx,4)516movl %edx,(%edi,%eax,4)517incl %eax518addl %ecx,%edx519movzbl %al,%eax520movzbl %dl,%edx521pxor %mm1,%mm2522movl (%edi,%eax,4),%ecx523movd (%edi,%edx,4),%mm1524addb %cl,%bl525psllq $24,%mm1526movl (%edi,%ebx,4),%edx527movl %ecx,(%edi,%ebx,4)528movl %edx,(%edi,%eax,4)529incl %eax530addl %ecx,%edx531movzbl %al,%eax532movzbl %dl,%edx533pxor %mm1,%mm2534movl (%edi,%eax,4),%ecx535movd (%edi,%edx,4),%mm1536addb %cl,%bl537psllq $32,%mm1538movl (%edi,%ebx,4),%edx539movl %ecx,(%edi,%ebx,4)540movl %edx,(%edi,%eax,4)541incl %eax542addl %ecx,%edx543movzbl %al,%eax544movzbl %dl,%edx545pxor %mm1,%mm2546movl (%edi,%eax,4),%ecx547movd (%edi,%edx,4),%mm1548addb %cl,%bl549psllq $40,%mm1550movl (%edi,%ebx,4),%edx551movl %ecx,(%edi,%ebx,4)552movl %edx,(%edi,%eax,4)553incl %eax554addl %ecx,%edx555movzbl %al,%eax556movzbl %dl,%edx557pxor %mm1,%mm2558movl (%edi,%eax,4),%ecx559movd (%edi,%edx,4),%mm1560addb %cl,%bl561psllq $48,%mm1562movl (%edi,%ebx,4),%edx563movl %ecx,(%edi,%ebx,4)564movl %edx,(%edi,%eax,4)565incl %eax566addl %ecx,%edx567movzbl %al,%eax568movzbl %dl,%edx569pxor %mm1,%mm2570movl (%edi,%eax,4),%ecx571movd (%edi,%edx,4),%mm1572movl %ebx,%edx573xorl %ebx,%ebx574movb %dl,%bl575cmpl -4(%edi),%esi576leal 8(%esi),%esi577jb .L005loop_mmx578psllq $56,%mm1579pxor %mm1,%mm2580movq %mm2,-8(%ebp,%esi,1)581emms582cmpl 24(%esp),%esi583je .L006done584jmp .L002loop1585.align 16586.L003go4loop4:587leal -4(%esi,%edx,1),%edx588movl %edx,28(%esp)589.L007loop4:590addb %cl,%bl591movl (%edi,%ebx,4),%edx592movl %ecx,(%edi,%ebx,4)593movl %edx,(%edi,%eax,4)594addl %ecx,%edx595incb %al596andl $255,%edx597movl (%edi,%eax,4),%ecx598movl (%edi,%edx,4),%ebp599addb %cl,%bl600movl (%edi,%ebx,4),%edx601movl %ecx,(%edi,%ebx,4)602movl %edx,(%edi,%eax,4)603addl %ecx,%edx604incb %al605andl $255,%edx606rorl $8,%ebp607movl (%edi,%eax,4),%ecx608orl (%edi,%edx,4),%ebp609addb %cl,%bl610movl (%edi,%ebx,4),%edx611movl %ecx,(%edi,%ebx,4)612movl %edx,(%edi,%eax,4)613addl %ecx,%edx614incb %al615andl $255,%edx616rorl $8,%ebp617movl (%edi,%eax,4),%ecx618orl (%edi,%edx,4),%ebp619addb %cl,%bl620movl (%edi,%ebx,4),%edx621movl %ecx,(%edi,%ebx,4)622movl %edx,(%edi,%eax,4)623addl %ecx,%edx624incb %al625andl $255,%edx626rorl $8,%ebp627movl 32(%esp),%ecx628orl (%edi,%edx,4),%ebp629rorl $8,%ebp630xorl (%esi),%ebp631cmpl 28(%esp),%esi632movl %ebp,(%ecx,%esi,1)633leal 4(%esi),%esi634movl (%edi,%eax,4),%ecx635jb .L007loop4636cmpl 24(%esp),%esi637je .L006done638movl 32(%esp),%ebp639.align 16640.L002loop1:641addb %cl,%bl642movl (%edi,%ebx,4),%edx643movl %ecx,(%edi,%ebx,4)644movl %edx,(%edi,%eax,4)645addl %ecx,%edx646incb %al647andl $255,%edx648movl (%edi,%edx,4),%edx649xorb (%esi),%dl650leal 1(%esi),%esi651movl (%edi,%eax,4),%ecx652cmpl 24(%esp),%esi653movb %dl,-1(%ebp,%esi,1)654jb .L002loop1655jmp .L006done656.align 16657.L001RC4_CHAR:658movzbl (%edi,%eax,1),%ecx659.L008cloop1:660addb %cl,%bl661movzbl (%edi,%ebx,1),%edx662movb %cl,(%edi,%ebx,1)663movb %dl,(%edi,%eax,1)664addb %cl,%dl665movzbl (%edi,%edx,1),%edx666addb $1,%al667xorb (%esi),%dl668leal 1(%esi),%esi669movzbl (%edi,%eax,1),%ecx670cmpl 24(%esp),%esi671movb %dl,-1(%ebp,%esi,1)672jb .L008cloop1673.L006done:674decb %al675movl %ebx,-4(%edi)676movb %al,-8(%edi)677.L000abort:678popl %edi679popl %esi680popl %ebx681popl %ebp682ret683.size RC4,.-.L_RC4_begin684.globl RC4_set_key685.type RC4_set_key,@function686.align 16687RC4_set_key:688.L_RC4_set_key_begin:689#ifdef __CET__690691.byte 243,15,30,251692#endif693694pushl %ebp695pushl %ebx696pushl %esi697pushl %edi698movl 20(%esp),%edi699movl 24(%esp),%ebp700movl 28(%esp),%esi701leal OPENSSL_ia32cap_P,%edx702leal 8(%edi),%edi703leal (%esi,%ebp,1),%esi704negl %ebp705xorl %eax,%eax706movl %ebp,-4(%edi)707btl $20,(%edx)708jc .L009c1stloop709.align 16710.L010w1stloop:711movl %eax,(%edi,%eax,4)712addb $1,%al713jnc .L010w1stloop714xorl %ecx,%ecx715xorl %edx,%edx716.align 16717.L011w2ndloop:718movl (%edi,%ecx,4),%eax719addb (%esi,%ebp,1),%dl720addb %al,%dl721addl $1,%ebp722movl (%edi,%edx,4),%ebx723jnz .L012wnowrap724movl -4(%edi),%ebp725.L012wnowrap:726movl %eax,(%edi,%edx,4)727movl %ebx,(%edi,%ecx,4)728addb $1,%cl729jnc .L011w2ndloop730jmp .L013exit731.align 16732.L009c1stloop:733movb %al,(%edi,%eax,1)734addb $1,%al735jnc .L009c1stloop736xorl %ecx,%ecx737xorl %edx,%edx738xorl %ebx,%ebx739.align 16740.L014c2ndloop:741movb (%edi,%ecx,1),%al742addb (%esi,%ebp,1),%dl743addb %al,%dl744addl $1,%ebp745movb (%edi,%edx,1),%bl746jnz .L015cnowrap747movl -4(%edi),%ebp748.L015cnowrap:749movb %al,(%edi,%edx,1)750movb %bl,(%edi,%ecx,1)751addb $1,%cl752jnc .L014c2ndloop753movl $-1,256(%edi)754.L013exit:755xorl %eax,%eax756movl %eax,-8(%edi)757movl %eax,-4(%edi)758popl %edi759popl %esi760popl %ebx761popl %ebp762ret763.size RC4_set_key,.-.L_RC4_set_key_begin764.globl RC4_options765.type RC4_options,@function766.align 16767RC4_options:768.L_RC4_options_begin:769#ifdef __CET__770771.byte 243,15,30,251772#endif773774call .L016pic_point775.L016pic_point:776popl %eax777leal .L017opts-.L016pic_point(%eax),%eax778leal OPENSSL_ia32cap_P,%edx779movl (%edx),%edx780btl $20,%edx781jc .L0181xchar782btl $26,%edx783jnc .L019ret784addl $25,%eax785ret786.L0181xchar:787addl $12,%eax788.L019ret:789ret790.align 64791.L017opts:792.byte 114,99,52,40,52,120,44,105,110,116,41,0793.byte 114,99,52,40,49,120,44,99,104,97,114,41,0794.byte 114,99,52,40,56,120,44,109,109,120,41,0795.byte 82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89796.byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114797.byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0798.align 64799.size RC4_options,.-.L_RC4_options_begin800.comm OPENSSL_ia32cap_P,40,4801802.section ".note.gnu.property", "a"803.p2align 2804.long 1f - 0f805.long 4f - 1f806.long 58070:808.asciz "GNU"8091:810.p2align 2811.long 0xc0000002812.long 3f - 2f8132:814.long 38153:816.p2align 28174:818#endif819820821