Path: blob/main/sys/crypto/openssl/i386/chacha-x86.S
39483 views
/* Do not modify. This file is auto-generated from chacha-x86.pl. */1#ifdef PIC2.text3.globl ChaCha20_ctr324.type ChaCha20_ctr32,@function5.align 166ChaCha20_ctr32:7.L_ChaCha20_ctr32_begin:8#ifdef __CET__910.byte 243,15,30,25111#endif1213pushl %ebp14pushl %ebx15pushl %esi16pushl %edi17xorl %eax,%eax18cmpl 28(%esp),%eax19je .L000no_data20call .Lpic_point21.Lpic_point:22popl %eax23leal OPENSSL_ia32cap_P-.Lpic_point(%eax),%ebp24testl $16777216,(%ebp)25jz .L001x8626testl $512,4(%ebp)27jz .L001x8628jmp .Lssse3_shortcut29.L001x86:30movl 32(%esp),%esi31movl 36(%esp),%edi32subl $132,%esp33movl (%esi),%eax34movl 4(%esi),%ebx35movl 8(%esi),%ecx36movl 12(%esi),%edx37movl %eax,80(%esp)38movl %ebx,84(%esp)39movl %ecx,88(%esp)40movl %edx,92(%esp)41movl 16(%esi),%eax42movl 20(%esi),%ebx43movl 24(%esi),%ecx44movl 28(%esi),%edx45movl %eax,96(%esp)46movl %ebx,100(%esp)47movl %ecx,104(%esp)48movl %edx,108(%esp)49movl (%edi),%eax50movl 4(%edi),%ebx51movl 8(%edi),%ecx52movl 12(%edi),%edx53subl $1,%eax54movl %eax,112(%esp)55movl %ebx,116(%esp)56movl %ecx,120(%esp)57movl %edx,124(%esp)58jmp .L002entry59.align 1660.L003outer_loop:61movl %ebx,156(%esp)62movl %eax,152(%esp)63movl %ecx,160(%esp)64.L002entry:65movl $1634760805,%eax66movl $857760878,4(%esp)67movl $2036477234,8(%esp)68movl $1797285236,12(%esp)69movl 84(%esp),%ebx70movl 88(%esp),%ebp71movl 104(%esp),%ecx72movl 108(%esp),%esi73movl 116(%esp),%edx74movl 120(%esp),%edi75movl %ebx,20(%esp)76movl %ebp,24(%esp)77movl %ecx,40(%esp)78movl %esi,44(%esp)79movl %edx,52(%esp)80movl %edi,56(%esp)81movl 92(%esp),%ebx82movl 124(%esp),%edi83movl 112(%esp),%edx84movl 80(%esp),%ebp85movl 96(%esp),%ecx86movl 100(%esp),%esi87addl $1,%edx88movl %ebx,28(%esp)89movl %edi,60(%esp)90movl %edx,112(%esp)91movl $10,%ebx92jmp .L004loop93.align 1694.L004loop:95addl %ebp,%eax96movl %ebx,128(%esp)97movl %ebp,%ebx98xorl %eax,%edx99roll $16,%edx100addl %edx,%ecx101xorl %ecx,%ebx102movl 52(%esp),%edi103roll $12,%ebx104movl 20(%esp),%ebp105addl %ebx,%eax106xorl %eax,%edx107movl %eax,(%esp)108roll $8,%edx109movl 4(%esp),%eax110addl %edx,%ecx111movl %edx,48(%esp)112xorl %ecx,%ebx113addl %ebp,%eax114roll $7,%ebx115xorl %eax,%edi116movl %ecx,32(%esp)117roll $16,%edi118movl %ebx,16(%esp)119addl %edi,%esi120movl 40(%esp),%ecx121xorl %esi,%ebp122movl 56(%esp),%edx123roll $12,%ebp124movl 24(%esp),%ebx125addl %ebp,%eax126xorl %eax,%edi127movl %eax,4(%esp)128roll $8,%edi129movl 8(%esp),%eax130addl %edi,%esi131movl %edi,52(%esp)132xorl %esi,%ebp133addl %ebx,%eax134roll $7,%ebp135xorl %eax,%edx136movl %esi,36(%esp)137roll $16,%edx138movl %ebp,20(%esp)139addl %edx,%ecx140movl 44(%esp),%esi141xorl %ecx,%ebx142movl 60(%esp),%edi143roll $12,%ebx144movl 28(%esp),%ebp145addl %ebx,%eax146xorl %eax,%edx147movl %eax,8(%esp)148roll $8,%edx149movl 12(%esp),%eax150addl %edx,%ecx151movl %edx,56(%esp)152xorl %ecx,%ebx153addl %ebp,%eax154roll $7,%ebx155xorl %eax,%edi156roll $16,%edi157movl %ebx,24(%esp)158addl %edi,%esi159xorl %esi,%ebp160roll $12,%ebp161movl 20(%esp),%ebx162addl %ebp,%eax163xorl %eax,%edi164movl %eax,12(%esp)165roll $8,%edi166movl (%esp),%eax167addl %edi,%esi168movl %edi,%edx169xorl %esi,%ebp170addl %ebx,%eax171roll $7,%ebp172xorl %eax,%edx173roll $16,%edx174movl %ebp,28(%esp)175addl %edx,%ecx176xorl %ecx,%ebx177movl 48(%esp),%edi178roll $12,%ebx179movl 24(%esp),%ebp180addl %ebx,%eax181xorl %eax,%edx182movl %eax,(%esp)183roll $8,%edx184movl 4(%esp),%eax185addl %edx,%ecx186movl %edx,60(%esp)187xorl %ecx,%ebx188addl %ebp,%eax189roll $7,%ebx190xorl %eax,%edi191movl %ecx,40(%esp)192roll $16,%edi193movl %ebx,20(%esp)194addl %edi,%esi195movl 32(%esp),%ecx196xorl %esi,%ebp197movl 52(%esp),%edx198roll $12,%ebp199movl 28(%esp),%ebx200addl %ebp,%eax201xorl %eax,%edi202movl %eax,4(%esp)203roll $8,%edi204movl 8(%esp),%eax205addl %edi,%esi206movl %edi,48(%esp)207xorl %esi,%ebp208addl %ebx,%eax209roll $7,%ebp210xorl %eax,%edx211movl %esi,44(%esp)212roll $16,%edx213movl %ebp,24(%esp)214addl %edx,%ecx215movl 36(%esp),%esi216xorl %ecx,%ebx217movl 56(%esp),%edi218roll $12,%ebx219movl 16(%esp),%ebp220addl %ebx,%eax221xorl %eax,%edx222movl %eax,8(%esp)223roll $8,%edx224movl 12(%esp),%eax225addl %edx,%ecx226movl %edx,52(%esp)227xorl %ecx,%ebx228addl %ebp,%eax229roll $7,%ebx230xorl %eax,%edi231roll $16,%edi232movl %ebx,28(%esp)233addl %edi,%esi234xorl %esi,%ebp235movl 48(%esp),%edx236roll $12,%ebp237movl 128(%esp),%ebx238addl %ebp,%eax239xorl %eax,%edi240movl %eax,12(%esp)241roll $8,%edi242movl (%esp),%eax243addl %edi,%esi244movl %edi,56(%esp)245xorl %esi,%ebp246roll $7,%ebp247decl %ebx248jnz .L004loop249movl 160(%esp),%ebx250addl $1634760805,%eax251addl 80(%esp),%ebp252addl 96(%esp),%ecx253addl 100(%esp),%esi254cmpl $64,%ebx255jb .L005tail256movl 156(%esp),%ebx257addl 112(%esp),%edx258addl 120(%esp),%edi259xorl (%ebx),%eax260xorl 16(%ebx),%ebp261movl %eax,(%esp)262movl 152(%esp),%eax263xorl 32(%ebx),%ecx264xorl 36(%ebx),%esi265xorl 48(%ebx),%edx266xorl 56(%ebx),%edi267movl %ebp,16(%eax)268movl %ecx,32(%eax)269movl %esi,36(%eax)270movl %edx,48(%eax)271movl %edi,56(%eax)272movl 4(%esp),%ebp273movl 8(%esp),%ecx274movl 12(%esp),%esi275movl 20(%esp),%edx276movl 24(%esp),%edi277addl $857760878,%ebp278addl $2036477234,%ecx279addl $1797285236,%esi280addl 84(%esp),%edx281addl 88(%esp),%edi282xorl 4(%ebx),%ebp283xorl 8(%ebx),%ecx284xorl 12(%ebx),%esi285xorl 20(%ebx),%edx286xorl 24(%ebx),%edi287movl %ebp,4(%eax)288movl %ecx,8(%eax)289movl %esi,12(%eax)290movl %edx,20(%eax)291movl %edi,24(%eax)292movl 28(%esp),%ebp293movl 40(%esp),%ecx294movl 44(%esp),%esi295movl 52(%esp),%edx296movl 60(%esp),%edi297addl 92(%esp),%ebp298addl 104(%esp),%ecx299addl 108(%esp),%esi300addl 116(%esp),%edx301addl 124(%esp),%edi302xorl 28(%ebx),%ebp303xorl 40(%ebx),%ecx304xorl 44(%ebx),%esi305xorl 52(%ebx),%edx306xorl 60(%ebx),%edi307leal 64(%ebx),%ebx308movl %ebp,28(%eax)309movl (%esp),%ebp310movl %ecx,40(%eax)311movl 160(%esp),%ecx312movl %esi,44(%eax)313movl %edx,52(%eax)314movl %edi,60(%eax)315movl %ebp,(%eax)316leal 64(%eax),%eax317subl $64,%ecx318jnz .L003outer_loop319jmp .L006done320.L005tail:321addl 112(%esp),%edx322addl 120(%esp),%edi323movl %eax,(%esp)324movl %ebp,16(%esp)325movl %ecx,32(%esp)326movl %esi,36(%esp)327movl %edx,48(%esp)328movl %edi,56(%esp)329movl 4(%esp),%ebp330movl 8(%esp),%ecx331movl 12(%esp),%esi332movl 20(%esp),%edx333movl 24(%esp),%edi334addl $857760878,%ebp335addl $2036477234,%ecx336addl $1797285236,%esi337addl 84(%esp),%edx338addl 88(%esp),%edi339movl %ebp,4(%esp)340movl %ecx,8(%esp)341movl %esi,12(%esp)342movl %edx,20(%esp)343movl %edi,24(%esp)344movl 28(%esp),%ebp345movl 40(%esp),%ecx346movl 44(%esp),%esi347movl 52(%esp),%edx348movl 60(%esp),%edi349addl 92(%esp),%ebp350addl 104(%esp),%ecx351addl 108(%esp),%esi352addl 116(%esp),%edx353addl 124(%esp),%edi354movl %ebp,28(%esp)355movl 156(%esp),%ebp356movl %ecx,40(%esp)357movl 152(%esp),%ecx358movl %esi,44(%esp)359xorl %esi,%esi360movl %edx,52(%esp)361movl %edi,60(%esp)362xorl %eax,%eax363xorl %edx,%edx364.L007tail_loop:365movb (%esi,%ebp,1),%al366movb (%esp,%esi,1),%dl367leal 1(%esi),%esi368xorb %dl,%al369movb %al,-1(%ecx,%esi,1)370decl %ebx371jnz .L007tail_loop372.L006done:373addl $132,%esp374.L000no_data:375popl %edi376popl %esi377popl %ebx378popl %ebp379ret380.size ChaCha20_ctr32,.-.L_ChaCha20_ctr32_begin381.globl ChaCha20_ssse3382.type ChaCha20_ssse3,@function383.align 16384ChaCha20_ssse3:385.L_ChaCha20_ssse3_begin:386#ifdef __CET__387388.byte 243,15,30,251389#endif390391pushl %ebp392pushl %ebx393pushl %esi394pushl %edi395.Lssse3_shortcut:396testl $2048,4(%ebp)397jnz .Lxop_shortcut398movl 20(%esp),%edi399movl 24(%esp),%esi400movl 28(%esp),%ecx401movl 32(%esp),%edx402movl 36(%esp),%ebx403movl %esp,%ebp404subl $524,%esp405andl $-64,%esp406movl %ebp,512(%esp)407leal .Lssse3_data-.Lpic_point(%eax),%eax408movdqu (%ebx),%xmm3409.L0081x:410movdqa 32(%eax),%xmm0411movdqu (%edx),%xmm1412movdqu 16(%edx),%xmm2413movdqa (%eax),%xmm6414movdqa 16(%eax),%xmm7415movl %ebp,48(%esp)416movdqa %xmm0,(%esp)417movdqa %xmm1,16(%esp)418movdqa %xmm2,32(%esp)419movdqa %xmm3,48(%esp)420movl $10,%edx421jmp .L009loop1x422.align 16423.L010outer1x:424movdqa 80(%eax),%xmm3425movdqa (%esp),%xmm0426movdqa 16(%esp),%xmm1427movdqa 32(%esp),%xmm2428paddd 48(%esp),%xmm3429movl $10,%edx430movdqa %xmm3,48(%esp)431jmp .L009loop1x432.align 16433.L009loop1x:434paddd %xmm1,%xmm0435pxor %xmm0,%xmm3436.byte 102,15,56,0,222437paddd %xmm3,%xmm2438pxor %xmm2,%xmm1439movdqa %xmm1,%xmm4440psrld $20,%xmm1441pslld $12,%xmm4442por %xmm4,%xmm1443paddd %xmm1,%xmm0444pxor %xmm0,%xmm3445.byte 102,15,56,0,223446paddd %xmm3,%xmm2447pxor %xmm2,%xmm1448movdqa %xmm1,%xmm4449psrld $25,%xmm1450pslld $7,%xmm4451por %xmm4,%xmm1452pshufd $78,%xmm2,%xmm2453pshufd $57,%xmm1,%xmm1454pshufd $147,%xmm3,%xmm3455nop456paddd %xmm1,%xmm0457pxor %xmm0,%xmm3458.byte 102,15,56,0,222459paddd %xmm3,%xmm2460pxor %xmm2,%xmm1461movdqa %xmm1,%xmm4462psrld $20,%xmm1463pslld $12,%xmm4464por %xmm4,%xmm1465paddd %xmm1,%xmm0466pxor %xmm0,%xmm3467.byte 102,15,56,0,223468paddd %xmm3,%xmm2469pxor %xmm2,%xmm1470movdqa %xmm1,%xmm4471psrld $25,%xmm1472pslld $7,%xmm4473por %xmm4,%xmm1474pshufd $78,%xmm2,%xmm2475pshufd $147,%xmm1,%xmm1476pshufd $57,%xmm3,%xmm3477decl %edx478jnz .L009loop1x479paddd (%esp),%xmm0480paddd 16(%esp),%xmm1481paddd 32(%esp),%xmm2482paddd 48(%esp),%xmm3483cmpl $64,%ecx484jb .L011tail485movdqu (%esi),%xmm4486movdqu 16(%esi),%xmm5487pxor %xmm4,%xmm0488movdqu 32(%esi),%xmm4489pxor %xmm5,%xmm1490movdqu 48(%esi),%xmm5491pxor %xmm4,%xmm2492pxor %xmm5,%xmm3493leal 64(%esi),%esi494movdqu %xmm0,(%edi)495movdqu %xmm1,16(%edi)496movdqu %xmm2,32(%edi)497movdqu %xmm3,48(%edi)498leal 64(%edi),%edi499subl $64,%ecx500jnz .L010outer1x501jmp .L012done502.L011tail:503movdqa %xmm0,(%esp)504movdqa %xmm1,16(%esp)505movdqa %xmm2,32(%esp)506movdqa %xmm3,48(%esp)507xorl %eax,%eax508xorl %edx,%edx509xorl %ebp,%ebp510.L013tail_loop:511movb (%esp,%ebp,1),%al512movb (%esi,%ebp,1),%dl513leal 1(%ebp),%ebp514xorb %dl,%al515movb %al,-1(%edi,%ebp,1)516decl %ecx517jnz .L013tail_loop518.L012done:519movl 512(%esp),%esp520popl %edi521popl %esi522popl %ebx523popl %ebp524ret525.size ChaCha20_ssse3,.-.L_ChaCha20_ssse3_begin526.align 64527.Lssse3_data:528.byte 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13529.byte 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14530.long 1634760805,857760878,2036477234,1797285236531.long 0,1,2,3532.long 4,4,4,4533.long 1,0,0,0534.long 4,0,0,0535.long 0,-1,-1,-1536.align 64537.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54538.byte 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32539.byte 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111540.byte 114,103,62,0541.globl ChaCha20_xop542.type ChaCha20_xop,@function543.align 16544ChaCha20_xop:545.L_ChaCha20_xop_begin:546#ifdef __CET__547548.byte 243,15,30,251549#endif550551pushl %ebp552pushl %ebx553pushl %esi554pushl %edi555.Lxop_shortcut:556movl 20(%esp),%edi557movl 24(%esp),%esi558movl 28(%esp),%ecx559movl 32(%esp),%edx560movl 36(%esp),%ebx561vzeroupper562movl %esp,%ebp563subl $524,%esp564andl $-64,%esp565movl %ebp,512(%esp)566leal .Lssse3_data-.Lpic_point(%eax),%eax567vmovdqu (%ebx),%xmm3568cmpl $256,%ecx569jb .L0141x570movl %edx,516(%esp)571movl %ebx,520(%esp)572subl $256,%ecx573leal 384(%esp),%ebp574vmovdqu (%edx),%xmm7575vpshufd $0,%xmm3,%xmm0576vpshufd $85,%xmm3,%xmm1577vpshufd $170,%xmm3,%xmm2578vpshufd $255,%xmm3,%xmm3579vpaddd 48(%eax),%xmm0,%xmm0580vpshufd $0,%xmm7,%xmm4581vpshufd $85,%xmm7,%xmm5582vpsubd 64(%eax),%xmm0,%xmm0583vpshufd $170,%xmm7,%xmm6584vpshufd $255,%xmm7,%xmm7585vmovdqa %xmm0,64(%ebp)586vmovdqa %xmm1,80(%ebp)587vmovdqa %xmm2,96(%ebp)588vmovdqa %xmm3,112(%ebp)589vmovdqu 16(%edx),%xmm3590vmovdqa %xmm4,-64(%ebp)591vmovdqa %xmm5,-48(%ebp)592vmovdqa %xmm6,-32(%ebp)593vmovdqa %xmm7,-16(%ebp)594vmovdqa 32(%eax),%xmm7595leal 128(%esp),%ebx596vpshufd $0,%xmm3,%xmm0597vpshufd $85,%xmm3,%xmm1598vpshufd $170,%xmm3,%xmm2599vpshufd $255,%xmm3,%xmm3600vpshufd $0,%xmm7,%xmm4601vpshufd $85,%xmm7,%xmm5602vpshufd $170,%xmm7,%xmm6603vpshufd $255,%xmm7,%xmm7604vmovdqa %xmm0,(%ebp)605vmovdqa %xmm1,16(%ebp)606vmovdqa %xmm2,32(%ebp)607vmovdqa %xmm3,48(%ebp)608vmovdqa %xmm4,-128(%ebp)609vmovdqa %xmm5,-112(%ebp)610vmovdqa %xmm6,-96(%ebp)611vmovdqa %xmm7,-80(%ebp)612leal 128(%esi),%esi613leal 128(%edi),%edi614jmp .L015outer_loop615.align 32616.L015outer_loop:617vmovdqa -112(%ebp),%xmm1618vmovdqa -96(%ebp),%xmm2619vmovdqa -80(%ebp),%xmm3620vmovdqa -48(%ebp),%xmm5621vmovdqa -32(%ebp),%xmm6622vmovdqa -16(%ebp),%xmm7623vmovdqa %xmm1,-112(%ebx)624vmovdqa %xmm2,-96(%ebx)625vmovdqa %xmm3,-80(%ebx)626vmovdqa %xmm5,-48(%ebx)627vmovdqa %xmm6,-32(%ebx)628vmovdqa %xmm7,-16(%ebx)629vmovdqa 32(%ebp),%xmm2630vmovdqa 48(%ebp),%xmm3631vmovdqa 64(%ebp),%xmm4632vmovdqa 80(%ebp),%xmm5633vmovdqa 96(%ebp),%xmm6634vmovdqa 112(%ebp),%xmm7635vpaddd 64(%eax),%xmm4,%xmm4636vmovdqa %xmm2,32(%ebx)637vmovdqa %xmm3,48(%ebx)638vmovdqa %xmm4,64(%ebx)639vmovdqa %xmm5,80(%ebx)640vmovdqa %xmm6,96(%ebx)641vmovdqa %xmm7,112(%ebx)642vmovdqa %xmm4,64(%ebp)643vmovdqa -128(%ebp),%xmm0644vmovdqa %xmm4,%xmm6645vmovdqa -64(%ebp),%xmm3646vmovdqa (%ebp),%xmm4647vmovdqa 16(%ebp),%xmm5648movl $10,%edx649nop650.align 32651.L016loop:652vpaddd %xmm3,%xmm0,%xmm0653vpxor %xmm0,%xmm6,%xmm6654.byte 143,232,120,194,246,16655vpaddd %xmm6,%xmm4,%xmm4656vpxor %xmm4,%xmm3,%xmm2657vmovdqa -112(%ebx),%xmm1658.byte 143,232,120,194,210,12659vmovdqa -48(%ebx),%xmm3660vpaddd %xmm2,%xmm0,%xmm0661vmovdqa 80(%ebx),%xmm7662vpxor %xmm0,%xmm6,%xmm6663vpaddd %xmm3,%xmm1,%xmm1664.byte 143,232,120,194,246,8665vmovdqa %xmm0,-128(%ebx)666vpaddd %xmm6,%xmm4,%xmm4667vmovdqa %xmm6,64(%ebx)668vpxor %xmm4,%xmm2,%xmm2669vpxor %xmm1,%xmm7,%xmm7670.byte 143,232,120,194,210,7671vmovdqa %xmm4,(%ebx)672.byte 143,232,120,194,255,16673vmovdqa %xmm2,-64(%ebx)674vpaddd %xmm7,%xmm5,%xmm5675vmovdqa 32(%ebx),%xmm4676vpxor %xmm5,%xmm3,%xmm3677vmovdqa -96(%ebx),%xmm0678.byte 143,232,120,194,219,12679vmovdqa -32(%ebx),%xmm2680vpaddd %xmm3,%xmm1,%xmm1681vmovdqa 96(%ebx),%xmm6682vpxor %xmm1,%xmm7,%xmm7683vpaddd %xmm2,%xmm0,%xmm0684.byte 143,232,120,194,255,8685vmovdqa %xmm1,-112(%ebx)686vpaddd %xmm7,%xmm5,%xmm5687vmovdqa %xmm7,80(%ebx)688vpxor %xmm5,%xmm3,%xmm3689vpxor %xmm0,%xmm6,%xmm6690.byte 143,232,120,194,219,7691vmovdqa %xmm5,16(%ebx)692.byte 143,232,120,194,246,16693vmovdqa %xmm3,-48(%ebx)694vpaddd %xmm6,%xmm4,%xmm4695vmovdqa 48(%ebx),%xmm5696vpxor %xmm4,%xmm2,%xmm2697vmovdqa -80(%ebx),%xmm1698.byte 143,232,120,194,210,12699vmovdqa -16(%ebx),%xmm3700vpaddd %xmm2,%xmm0,%xmm0701vmovdqa 112(%ebx),%xmm7702vpxor %xmm0,%xmm6,%xmm6703vpaddd %xmm3,%xmm1,%xmm1704.byte 143,232,120,194,246,8705vmovdqa %xmm0,-96(%ebx)706vpaddd %xmm6,%xmm4,%xmm4707vmovdqa %xmm6,96(%ebx)708vpxor %xmm4,%xmm2,%xmm2709vpxor %xmm1,%xmm7,%xmm7710.byte 143,232,120,194,210,7711.byte 143,232,120,194,255,16712vmovdqa %xmm2,-32(%ebx)713vpaddd %xmm7,%xmm5,%xmm5714vpxor %xmm5,%xmm3,%xmm3715vmovdqa -128(%ebx),%xmm0716.byte 143,232,120,194,219,12717vmovdqa -48(%ebx),%xmm2718vpaddd %xmm3,%xmm1,%xmm1719vpxor %xmm1,%xmm7,%xmm7720vpaddd %xmm2,%xmm0,%xmm0721.byte 143,232,120,194,255,8722vmovdqa %xmm1,-80(%ebx)723vpaddd %xmm7,%xmm5,%xmm5724vpxor %xmm5,%xmm3,%xmm3725vpxor %xmm0,%xmm7,%xmm6726.byte 143,232,120,194,219,7727.byte 143,232,120,194,246,16728vmovdqa %xmm3,-16(%ebx)729vpaddd %xmm6,%xmm4,%xmm4730vpxor %xmm4,%xmm2,%xmm2731vmovdqa -112(%ebx),%xmm1732.byte 143,232,120,194,210,12733vmovdqa -32(%ebx),%xmm3734vpaddd %xmm2,%xmm0,%xmm0735vmovdqa 64(%ebx),%xmm7736vpxor %xmm0,%xmm6,%xmm6737vpaddd %xmm3,%xmm1,%xmm1738.byte 143,232,120,194,246,8739vmovdqa %xmm0,-128(%ebx)740vpaddd %xmm6,%xmm4,%xmm4741vmovdqa %xmm6,112(%ebx)742vpxor %xmm4,%xmm2,%xmm2743vpxor %xmm1,%xmm7,%xmm7744.byte 143,232,120,194,210,7745vmovdqa %xmm4,32(%ebx)746.byte 143,232,120,194,255,16747vmovdqa %xmm2,-48(%ebx)748vpaddd %xmm7,%xmm5,%xmm5749vmovdqa (%ebx),%xmm4750vpxor %xmm5,%xmm3,%xmm3751vmovdqa -96(%ebx),%xmm0752.byte 143,232,120,194,219,12753vmovdqa -16(%ebx),%xmm2754vpaddd %xmm3,%xmm1,%xmm1755vmovdqa 80(%ebx),%xmm6756vpxor %xmm1,%xmm7,%xmm7757vpaddd %xmm2,%xmm0,%xmm0758.byte 143,232,120,194,255,8759vmovdqa %xmm1,-112(%ebx)760vpaddd %xmm7,%xmm5,%xmm5761vmovdqa %xmm7,64(%ebx)762vpxor %xmm5,%xmm3,%xmm3763vpxor %xmm0,%xmm6,%xmm6764.byte 143,232,120,194,219,7765vmovdqa %xmm5,48(%ebx)766.byte 143,232,120,194,246,16767vmovdqa %xmm3,-32(%ebx)768vpaddd %xmm6,%xmm4,%xmm4769vmovdqa 16(%ebx),%xmm5770vpxor %xmm4,%xmm2,%xmm2771vmovdqa -80(%ebx),%xmm1772.byte 143,232,120,194,210,12773vmovdqa -64(%ebx),%xmm3774vpaddd %xmm2,%xmm0,%xmm0775vmovdqa 96(%ebx),%xmm7776vpxor %xmm0,%xmm6,%xmm6777vpaddd %xmm3,%xmm1,%xmm1778.byte 143,232,120,194,246,8779vmovdqa %xmm0,-96(%ebx)780vpaddd %xmm6,%xmm4,%xmm4781vmovdqa %xmm6,80(%ebx)782vpxor %xmm4,%xmm2,%xmm2783vpxor %xmm1,%xmm7,%xmm7784.byte 143,232,120,194,210,7785.byte 143,232,120,194,255,16786vmovdqa %xmm2,-16(%ebx)787vpaddd %xmm7,%xmm5,%xmm5788vpxor %xmm5,%xmm3,%xmm3789vmovdqa -128(%ebx),%xmm0790.byte 143,232,120,194,219,12791vpaddd %xmm3,%xmm1,%xmm1792vmovdqa 64(%ebx),%xmm6793vpxor %xmm1,%xmm7,%xmm7794.byte 143,232,120,194,255,8795vmovdqa %xmm1,-80(%ebx)796vpaddd %xmm7,%xmm5,%xmm5797vmovdqa %xmm7,96(%ebx)798vpxor %xmm5,%xmm3,%xmm3799.byte 143,232,120,194,219,7800decl %edx801jnz .L016loop802vmovdqa %xmm3,-64(%ebx)803vmovdqa %xmm4,(%ebx)804vmovdqa %xmm5,16(%ebx)805vmovdqa %xmm6,64(%ebx)806vmovdqa %xmm7,96(%ebx)807vmovdqa -112(%ebx),%xmm1808vmovdqa -96(%ebx),%xmm2809vmovdqa -80(%ebx),%xmm3810vpaddd -128(%ebp),%xmm0,%xmm0811vpaddd -112(%ebp),%xmm1,%xmm1812vpaddd -96(%ebp),%xmm2,%xmm2813vpaddd -80(%ebp),%xmm3,%xmm3814vpunpckldq %xmm1,%xmm0,%xmm6815vpunpckldq %xmm3,%xmm2,%xmm7816vpunpckhdq %xmm1,%xmm0,%xmm0817vpunpckhdq %xmm3,%xmm2,%xmm2818vpunpcklqdq %xmm7,%xmm6,%xmm1819vpunpckhqdq %xmm7,%xmm6,%xmm6820vpunpcklqdq %xmm2,%xmm0,%xmm7821vpunpckhqdq %xmm2,%xmm0,%xmm3822vpxor -128(%esi),%xmm1,%xmm4823vpxor -64(%esi),%xmm6,%xmm5824vpxor (%esi),%xmm7,%xmm6825vpxor 64(%esi),%xmm3,%xmm7826leal 16(%esi),%esi827vmovdqa -64(%ebx),%xmm0828vmovdqa -48(%ebx),%xmm1829vmovdqa -32(%ebx),%xmm2830vmovdqa -16(%ebx),%xmm3831vmovdqu %xmm4,-128(%edi)832vmovdqu %xmm5,-64(%edi)833vmovdqu %xmm6,(%edi)834vmovdqu %xmm7,64(%edi)835leal 16(%edi),%edi836vpaddd -64(%ebp),%xmm0,%xmm0837vpaddd -48(%ebp),%xmm1,%xmm1838vpaddd -32(%ebp),%xmm2,%xmm2839vpaddd -16(%ebp),%xmm3,%xmm3840vpunpckldq %xmm1,%xmm0,%xmm6841vpunpckldq %xmm3,%xmm2,%xmm7842vpunpckhdq %xmm1,%xmm0,%xmm0843vpunpckhdq %xmm3,%xmm2,%xmm2844vpunpcklqdq %xmm7,%xmm6,%xmm1845vpunpckhqdq %xmm7,%xmm6,%xmm6846vpunpcklqdq %xmm2,%xmm0,%xmm7847vpunpckhqdq %xmm2,%xmm0,%xmm3848vpxor -128(%esi),%xmm1,%xmm4849vpxor -64(%esi),%xmm6,%xmm5850vpxor (%esi),%xmm7,%xmm6851vpxor 64(%esi),%xmm3,%xmm7852leal 16(%esi),%esi853vmovdqa (%ebx),%xmm0854vmovdqa 16(%ebx),%xmm1855vmovdqa 32(%ebx),%xmm2856vmovdqa 48(%ebx),%xmm3857vmovdqu %xmm4,-128(%edi)858vmovdqu %xmm5,-64(%edi)859vmovdqu %xmm6,(%edi)860vmovdqu %xmm7,64(%edi)861leal 16(%edi),%edi862vpaddd (%ebp),%xmm0,%xmm0863vpaddd 16(%ebp),%xmm1,%xmm1864vpaddd 32(%ebp),%xmm2,%xmm2865vpaddd 48(%ebp),%xmm3,%xmm3866vpunpckldq %xmm1,%xmm0,%xmm6867vpunpckldq %xmm3,%xmm2,%xmm7868vpunpckhdq %xmm1,%xmm0,%xmm0869vpunpckhdq %xmm3,%xmm2,%xmm2870vpunpcklqdq %xmm7,%xmm6,%xmm1871vpunpckhqdq %xmm7,%xmm6,%xmm6872vpunpcklqdq %xmm2,%xmm0,%xmm7873vpunpckhqdq %xmm2,%xmm0,%xmm3874vpxor -128(%esi),%xmm1,%xmm4875vpxor -64(%esi),%xmm6,%xmm5876vpxor (%esi),%xmm7,%xmm6877vpxor 64(%esi),%xmm3,%xmm7878leal 16(%esi),%esi879vmovdqa 64(%ebx),%xmm0880vmovdqa 80(%ebx),%xmm1881vmovdqa 96(%ebx),%xmm2882vmovdqa 112(%ebx),%xmm3883vmovdqu %xmm4,-128(%edi)884vmovdqu %xmm5,-64(%edi)885vmovdqu %xmm6,(%edi)886vmovdqu %xmm7,64(%edi)887leal 16(%edi),%edi888vpaddd 64(%ebp),%xmm0,%xmm0889vpaddd 80(%ebp),%xmm1,%xmm1890vpaddd 96(%ebp),%xmm2,%xmm2891vpaddd 112(%ebp),%xmm3,%xmm3892vpunpckldq %xmm1,%xmm0,%xmm6893vpunpckldq %xmm3,%xmm2,%xmm7894vpunpckhdq %xmm1,%xmm0,%xmm0895vpunpckhdq %xmm3,%xmm2,%xmm2896vpunpcklqdq %xmm7,%xmm6,%xmm1897vpunpckhqdq %xmm7,%xmm6,%xmm6898vpunpcklqdq %xmm2,%xmm0,%xmm7899vpunpckhqdq %xmm2,%xmm0,%xmm3900vpxor -128(%esi),%xmm1,%xmm4901vpxor -64(%esi),%xmm6,%xmm5902vpxor (%esi),%xmm7,%xmm6903vpxor 64(%esi),%xmm3,%xmm7904leal 208(%esi),%esi905vmovdqu %xmm4,-128(%edi)906vmovdqu %xmm5,-64(%edi)907vmovdqu %xmm6,(%edi)908vmovdqu %xmm7,64(%edi)909leal 208(%edi),%edi910subl $256,%ecx911jnc .L015outer_loop912addl $256,%ecx913jz .L017done914movl 520(%esp),%ebx915leal -128(%esi),%esi916movl 516(%esp),%edx917leal -128(%edi),%edi918vmovd 64(%ebp),%xmm2919vmovdqu (%ebx),%xmm3920vpaddd 96(%eax),%xmm2,%xmm2921vpand 112(%eax),%xmm3,%xmm3922vpor %xmm2,%xmm3,%xmm3923.L0141x:924vmovdqa 32(%eax),%xmm0925vmovdqu (%edx),%xmm1926vmovdqu 16(%edx),%xmm2927vmovdqa (%eax),%xmm6928vmovdqa 16(%eax),%xmm7929movl %ebp,48(%esp)930vmovdqa %xmm0,(%esp)931vmovdqa %xmm1,16(%esp)932vmovdqa %xmm2,32(%esp)933vmovdqa %xmm3,48(%esp)934movl $10,%edx935jmp .L018loop1x936.align 16937.L019outer1x:938vmovdqa 80(%eax),%xmm3939vmovdqa (%esp),%xmm0940vmovdqa 16(%esp),%xmm1941vmovdqa 32(%esp),%xmm2942vpaddd 48(%esp),%xmm3,%xmm3943movl $10,%edx944vmovdqa %xmm3,48(%esp)945jmp .L018loop1x946.align 16947.L018loop1x:948vpaddd %xmm1,%xmm0,%xmm0949vpxor %xmm0,%xmm3,%xmm3950.byte 143,232,120,194,219,16951vpaddd %xmm3,%xmm2,%xmm2952vpxor %xmm2,%xmm1,%xmm1953.byte 143,232,120,194,201,12954vpaddd %xmm1,%xmm0,%xmm0955vpxor %xmm0,%xmm3,%xmm3956.byte 143,232,120,194,219,8957vpaddd %xmm3,%xmm2,%xmm2958vpxor %xmm2,%xmm1,%xmm1959.byte 143,232,120,194,201,7960vpshufd $78,%xmm2,%xmm2961vpshufd $57,%xmm1,%xmm1962vpshufd $147,%xmm3,%xmm3963vpaddd %xmm1,%xmm0,%xmm0964vpxor %xmm0,%xmm3,%xmm3965.byte 143,232,120,194,219,16966vpaddd %xmm3,%xmm2,%xmm2967vpxor %xmm2,%xmm1,%xmm1968.byte 143,232,120,194,201,12969vpaddd %xmm1,%xmm0,%xmm0970vpxor %xmm0,%xmm3,%xmm3971.byte 143,232,120,194,219,8972vpaddd %xmm3,%xmm2,%xmm2973vpxor %xmm2,%xmm1,%xmm1974.byte 143,232,120,194,201,7975vpshufd $78,%xmm2,%xmm2976vpshufd $147,%xmm1,%xmm1977vpshufd $57,%xmm3,%xmm3978decl %edx979jnz .L018loop1x980vpaddd (%esp),%xmm0,%xmm0981vpaddd 16(%esp),%xmm1,%xmm1982vpaddd 32(%esp),%xmm2,%xmm2983vpaddd 48(%esp),%xmm3,%xmm3984cmpl $64,%ecx985jb .L020tail986vpxor (%esi),%xmm0,%xmm0987vpxor 16(%esi),%xmm1,%xmm1988vpxor 32(%esi),%xmm2,%xmm2989vpxor 48(%esi),%xmm3,%xmm3990leal 64(%esi),%esi991vmovdqu %xmm0,(%edi)992vmovdqu %xmm1,16(%edi)993vmovdqu %xmm2,32(%edi)994vmovdqu %xmm3,48(%edi)995leal 64(%edi),%edi996subl $64,%ecx997jnz .L019outer1x998jmp .L017done999.L020tail:1000vmovdqa %xmm0,(%esp)1001vmovdqa %xmm1,16(%esp)1002vmovdqa %xmm2,32(%esp)1003vmovdqa %xmm3,48(%esp)1004xorl %eax,%eax1005xorl %edx,%edx1006xorl %ebp,%ebp1007.L021tail_loop:1008movb (%esp,%ebp,1),%al1009movb (%esi,%ebp,1),%dl1010leal 1(%ebp),%ebp1011xorb %dl,%al1012movb %al,-1(%edi,%ebp,1)1013decl %ecx1014jnz .L021tail_loop1015.L017done:1016vzeroupper1017movl 512(%esp),%esp1018popl %edi1019popl %esi1020popl %ebx1021popl %ebp1022ret1023.size ChaCha20_xop,.-.L_ChaCha20_xop_begin1024.comm OPENSSL_ia32cap_P,40,410251026.section ".note.gnu.property", "a"1027.p2align 21028.long 1f - 0f1029.long 4f - 1f1030.long 510310:1032.asciz "GNU"10331:1034.p2align 21035.long 0xc00000021036.long 3f - 2f10372:1038.long 310393:1040.p2align 210414:1042#else1043.text1044.globl ChaCha20_ctr321045.type ChaCha20_ctr32,@function1046.align 161047ChaCha20_ctr32:1048.L_ChaCha20_ctr32_begin:1049#ifdef __CET__10501051.byte 243,15,30,2511052#endif10531054pushl %ebp1055pushl %ebx1056pushl %esi1057pushl %edi1058xorl %eax,%eax1059cmpl 28(%esp),%eax1060je .L000no_data1061call .Lpic_point1062.Lpic_point:1063popl %eax1064leal OPENSSL_ia32cap_P,%ebp1065testl $16777216,(%ebp)1066jz .L001x861067testl $512,4(%ebp)1068jz .L001x861069jmp .Lssse3_shortcut1070.L001x86:1071movl 32(%esp),%esi1072movl 36(%esp),%edi1073subl $132,%esp1074movl (%esi),%eax1075movl 4(%esi),%ebx1076movl 8(%esi),%ecx1077movl 12(%esi),%edx1078movl %eax,80(%esp)1079movl %ebx,84(%esp)1080movl %ecx,88(%esp)1081movl %edx,92(%esp)1082movl 16(%esi),%eax1083movl 20(%esi),%ebx1084movl 24(%esi),%ecx1085movl 28(%esi),%edx1086movl %eax,96(%esp)1087movl %ebx,100(%esp)1088movl %ecx,104(%esp)1089movl %edx,108(%esp)1090movl (%edi),%eax1091movl 4(%edi),%ebx1092movl 8(%edi),%ecx1093movl 12(%edi),%edx1094subl $1,%eax1095movl %eax,112(%esp)1096movl %ebx,116(%esp)1097movl %ecx,120(%esp)1098movl %edx,124(%esp)1099jmp .L002entry1100.align 161101.L003outer_loop:1102movl %ebx,156(%esp)1103movl %eax,152(%esp)1104movl %ecx,160(%esp)1105.L002entry:1106movl $1634760805,%eax1107movl $857760878,4(%esp)1108movl $2036477234,8(%esp)1109movl $1797285236,12(%esp)1110movl 84(%esp),%ebx1111movl 88(%esp),%ebp1112movl 104(%esp),%ecx1113movl 108(%esp),%esi1114movl 116(%esp),%edx1115movl 120(%esp),%edi1116movl %ebx,20(%esp)1117movl %ebp,24(%esp)1118movl %ecx,40(%esp)1119movl %esi,44(%esp)1120movl %edx,52(%esp)1121movl %edi,56(%esp)1122movl 92(%esp),%ebx1123movl 124(%esp),%edi1124movl 112(%esp),%edx1125movl 80(%esp),%ebp1126movl 96(%esp),%ecx1127movl 100(%esp),%esi1128addl $1,%edx1129movl %ebx,28(%esp)1130movl %edi,60(%esp)1131movl %edx,112(%esp)1132movl $10,%ebx1133jmp .L004loop1134.align 161135.L004loop:1136addl %ebp,%eax1137movl %ebx,128(%esp)1138movl %ebp,%ebx1139xorl %eax,%edx1140roll $16,%edx1141addl %edx,%ecx1142xorl %ecx,%ebx1143movl 52(%esp),%edi1144roll $12,%ebx1145movl 20(%esp),%ebp1146addl %ebx,%eax1147xorl %eax,%edx1148movl %eax,(%esp)1149roll $8,%edx1150movl 4(%esp),%eax1151addl %edx,%ecx1152movl %edx,48(%esp)1153xorl %ecx,%ebx1154addl %ebp,%eax1155roll $7,%ebx1156xorl %eax,%edi1157movl %ecx,32(%esp)1158roll $16,%edi1159movl %ebx,16(%esp)1160addl %edi,%esi1161movl 40(%esp),%ecx1162xorl %esi,%ebp1163movl 56(%esp),%edx1164roll $12,%ebp1165movl 24(%esp),%ebx1166addl %ebp,%eax1167xorl %eax,%edi1168movl %eax,4(%esp)1169roll $8,%edi1170movl 8(%esp),%eax1171addl %edi,%esi1172movl %edi,52(%esp)1173xorl %esi,%ebp1174addl %ebx,%eax1175roll $7,%ebp1176xorl %eax,%edx1177movl %esi,36(%esp)1178roll $16,%edx1179movl %ebp,20(%esp)1180addl %edx,%ecx1181movl 44(%esp),%esi1182xorl %ecx,%ebx1183movl 60(%esp),%edi1184roll $12,%ebx1185movl 28(%esp),%ebp1186addl %ebx,%eax1187xorl %eax,%edx1188movl %eax,8(%esp)1189roll $8,%edx1190movl 12(%esp),%eax1191addl %edx,%ecx1192movl %edx,56(%esp)1193xorl %ecx,%ebx1194addl %ebp,%eax1195roll $7,%ebx1196xorl %eax,%edi1197roll $16,%edi1198movl %ebx,24(%esp)1199addl %edi,%esi1200xorl %esi,%ebp1201roll $12,%ebp1202movl 20(%esp),%ebx1203addl %ebp,%eax1204xorl %eax,%edi1205movl %eax,12(%esp)1206roll $8,%edi1207movl (%esp),%eax1208addl %edi,%esi1209movl %edi,%edx1210xorl %esi,%ebp1211addl %ebx,%eax1212roll $7,%ebp1213xorl %eax,%edx1214roll $16,%edx1215movl %ebp,28(%esp)1216addl %edx,%ecx1217xorl %ecx,%ebx1218movl 48(%esp),%edi1219roll $12,%ebx1220movl 24(%esp),%ebp1221addl %ebx,%eax1222xorl %eax,%edx1223movl %eax,(%esp)1224roll $8,%edx1225movl 4(%esp),%eax1226addl %edx,%ecx1227movl %edx,60(%esp)1228xorl %ecx,%ebx1229addl %ebp,%eax1230roll $7,%ebx1231xorl %eax,%edi1232movl %ecx,40(%esp)1233roll $16,%edi1234movl %ebx,20(%esp)1235addl %edi,%esi1236movl 32(%esp),%ecx1237xorl %esi,%ebp1238movl 52(%esp),%edx1239roll $12,%ebp1240movl 28(%esp),%ebx1241addl %ebp,%eax1242xorl %eax,%edi1243movl %eax,4(%esp)1244roll $8,%edi1245movl 8(%esp),%eax1246addl %edi,%esi1247movl %edi,48(%esp)1248xorl %esi,%ebp1249addl %ebx,%eax1250roll $7,%ebp1251xorl %eax,%edx1252movl %esi,44(%esp)1253roll $16,%edx1254movl %ebp,24(%esp)1255addl %edx,%ecx1256movl 36(%esp),%esi1257xorl %ecx,%ebx1258movl 56(%esp),%edi1259roll $12,%ebx1260movl 16(%esp),%ebp1261addl %ebx,%eax1262xorl %eax,%edx1263movl %eax,8(%esp)1264roll $8,%edx1265movl 12(%esp),%eax1266addl %edx,%ecx1267movl %edx,52(%esp)1268xorl %ecx,%ebx1269addl %ebp,%eax1270roll $7,%ebx1271xorl %eax,%edi1272roll $16,%edi1273movl %ebx,28(%esp)1274addl %edi,%esi1275xorl %esi,%ebp1276movl 48(%esp),%edx1277roll $12,%ebp1278movl 128(%esp),%ebx1279addl %ebp,%eax1280xorl %eax,%edi1281movl %eax,12(%esp)1282roll $8,%edi1283movl (%esp),%eax1284addl %edi,%esi1285movl %edi,56(%esp)1286xorl %esi,%ebp1287roll $7,%ebp1288decl %ebx1289jnz .L004loop1290movl 160(%esp),%ebx1291addl $1634760805,%eax1292addl 80(%esp),%ebp1293addl 96(%esp),%ecx1294addl 100(%esp),%esi1295cmpl $64,%ebx1296jb .L005tail1297movl 156(%esp),%ebx1298addl 112(%esp),%edx1299addl 120(%esp),%edi1300xorl (%ebx),%eax1301xorl 16(%ebx),%ebp1302movl %eax,(%esp)1303movl 152(%esp),%eax1304xorl 32(%ebx),%ecx1305xorl 36(%ebx),%esi1306xorl 48(%ebx),%edx1307xorl 56(%ebx),%edi1308movl %ebp,16(%eax)1309movl %ecx,32(%eax)1310movl %esi,36(%eax)1311movl %edx,48(%eax)1312movl %edi,56(%eax)1313movl 4(%esp),%ebp1314movl 8(%esp),%ecx1315movl 12(%esp),%esi1316movl 20(%esp),%edx1317movl 24(%esp),%edi1318addl $857760878,%ebp1319addl $2036477234,%ecx1320addl $1797285236,%esi1321addl 84(%esp),%edx1322addl 88(%esp),%edi1323xorl 4(%ebx),%ebp1324xorl 8(%ebx),%ecx1325xorl 12(%ebx),%esi1326xorl 20(%ebx),%edx1327xorl 24(%ebx),%edi1328movl %ebp,4(%eax)1329movl %ecx,8(%eax)1330movl %esi,12(%eax)1331movl %edx,20(%eax)1332movl %edi,24(%eax)1333movl 28(%esp),%ebp1334movl 40(%esp),%ecx1335movl 44(%esp),%esi1336movl 52(%esp),%edx1337movl 60(%esp),%edi1338addl 92(%esp),%ebp1339addl 104(%esp),%ecx1340addl 108(%esp),%esi1341addl 116(%esp),%edx1342addl 124(%esp),%edi1343xorl 28(%ebx),%ebp1344xorl 40(%ebx),%ecx1345xorl 44(%ebx),%esi1346xorl 52(%ebx),%edx1347xorl 60(%ebx),%edi1348leal 64(%ebx),%ebx1349movl %ebp,28(%eax)1350movl (%esp),%ebp1351movl %ecx,40(%eax)1352movl 160(%esp),%ecx1353movl %esi,44(%eax)1354movl %edx,52(%eax)1355movl %edi,60(%eax)1356movl %ebp,(%eax)1357leal 64(%eax),%eax1358subl $64,%ecx1359jnz .L003outer_loop1360jmp .L006done1361.L005tail:1362addl 112(%esp),%edx1363addl 120(%esp),%edi1364movl %eax,(%esp)1365movl %ebp,16(%esp)1366movl %ecx,32(%esp)1367movl %esi,36(%esp)1368movl %edx,48(%esp)1369movl %edi,56(%esp)1370movl 4(%esp),%ebp1371movl 8(%esp),%ecx1372movl 12(%esp),%esi1373movl 20(%esp),%edx1374movl 24(%esp),%edi1375addl $857760878,%ebp1376addl $2036477234,%ecx1377addl $1797285236,%esi1378addl 84(%esp),%edx1379addl 88(%esp),%edi1380movl %ebp,4(%esp)1381movl %ecx,8(%esp)1382movl %esi,12(%esp)1383movl %edx,20(%esp)1384movl %edi,24(%esp)1385movl 28(%esp),%ebp1386movl 40(%esp),%ecx1387movl 44(%esp),%esi1388movl 52(%esp),%edx1389movl 60(%esp),%edi1390addl 92(%esp),%ebp1391addl 104(%esp),%ecx1392addl 108(%esp),%esi1393addl 116(%esp),%edx1394addl 124(%esp),%edi1395movl %ebp,28(%esp)1396movl 156(%esp),%ebp1397movl %ecx,40(%esp)1398movl 152(%esp),%ecx1399movl %esi,44(%esp)1400xorl %esi,%esi1401movl %edx,52(%esp)1402movl %edi,60(%esp)1403xorl %eax,%eax1404xorl %edx,%edx1405.L007tail_loop:1406movb (%esi,%ebp,1),%al1407movb (%esp,%esi,1),%dl1408leal 1(%esi),%esi1409xorb %dl,%al1410movb %al,-1(%ecx,%esi,1)1411decl %ebx1412jnz .L007tail_loop1413.L006done:1414addl $132,%esp1415.L000no_data:1416popl %edi1417popl %esi1418popl %ebx1419popl %ebp1420ret1421.size ChaCha20_ctr32,.-.L_ChaCha20_ctr32_begin1422.globl ChaCha20_ssse31423.type ChaCha20_ssse3,@function1424.align 161425ChaCha20_ssse3:1426.L_ChaCha20_ssse3_begin:1427#ifdef __CET__14281429.byte 243,15,30,2511430#endif14311432pushl %ebp1433pushl %ebx1434pushl %esi1435pushl %edi1436.Lssse3_shortcut:1437testl $2048,4(%ebp)1438jnz .Lxop_shortcut1439movl 20(%esp),%edi1440movl 24(%esp),%esi1441movl 28(%esp),%ecx1442movl 32(%esp),%edx1443movl 36(%esp),%ebx1444movl %esp,%ebp1445subl $524,%esp1446andl $-64,%esp1447movl %ebp,512(%esp)1448leal .Lssse3_data-.Lpic_point(%eax),%eax1449movdqu (%ebx),%xmm31450.L0081x:1451movdqa 32(%eax),%xmm01452movdqu (%edx),%xmm11453movdqu 16(%edx),%xmm21454movdqa (%eax),%xmm61455movdqa 16(%eax),%xmm71456movl %ebp,48(%esp)1457movdqa %xmm0,(%esp)1458movdqa %xmm1,16(%esp)1459movdqa %xmm2,32(%esp)1460movdqa %xmm3,48(%esp)1461movl $10,%edx1462jmp .L009loop1x1463.align 161464.L010outer1x:1465movdqa 80(%eax),%xmm31466movdqa (%esp),%xmm01467movdqa 16(%esp),%xmm11468movdqa 32(%esp),%xmm21469paddd 48(%esp),%xmm31470movl $10,%edx1471movdqa %xmm3,48(%esp)1472jmp .L009loop1x1473.align 161474.L009loop1x:1475paddd %xmm1,%xmm01476pxor %xmm0,%xmm31477.byte 102,15,56,0,2221478paddd %xmm3,%xmm21479pxor %xmm2,%xmm11480movdqa %xmm1,%xmm41481psrld $20,%xmm11482pslld $12,%xmm41483por %xmm4,%xmm11484paddd %xmm1,%xmm01485pxor %xmm0,%xmm31486.byte 102,15,56,0,2231487paddd %xmm3,%xmm21488pxor %xmm2,%xmm11489movdqa %xmm1,%xmm41490psrld $25,%xmm11491pslld $7,%xmm41492por %xmm4,%xmm11493pshufd $78,%xmm2,%xmm21494pshufd $57,%xmm1,%xmm11495pshufd $147,%xmm3,%xmm31496nop1497paddd %xmm1,%xmm01498pxor %xmm0,%xmm31499.byte 102,15,56,0,2221500paddd %xmm3,%xmm21501pxor %xmm2,%xmm11502movdqa %xmm1,%xmm41503psrld $20,%xmm11504pslld $12,%xmm41505por %xmm4,%xmm11506paddd %xmm1,%xmm01507pxor %xmm0,%xmm31508.byte 102,15,56,0,2231509paddd %xmm3,%xmm21510pxor %xmm2,%xmm11511movdqa %xmm1,%xmm41512psrld $25,%xmm11513pslld $7,%xmm41514por %xmm4,%xmm11515pshufd $78,%xmm2,%xmm21516pshufd $147,%xmm1,%xmm11517pshufd $57,%xmm3,%xmm31518decl %edx1519jnz .L009loop1x1520paddd (%esp),%xmm01521paddd 16(%esp),%xmm11522paddd 32(%esp),%xmm21523paddd 48(%esp),%xmm31524cmpl $64,%ecx1525jb .L011tail1526movdqu (%esi),%xmm41527movdqu 16(%esi),%xmm51528pxor %xmm4,%xmm01529movdqu 32(%esi),%xmm41530pxor %xmm5,%xmm11531movdqu 48(%esi),%xmm51532pxor %xmm4,%xmm21533pxor %xmm5,%xmm31534leal 64(%esi),%esi1535movdqu %xmm0,(%edi)1536movdqu %xmm1,16(%edi)1537movdqu %xmm2,32(%edi)1538movdqu %xmm3,48(%edi)1539leal 64(%edi),%edi1540subl $64,%ecx1541jnz .L010outer1x1542jmp .L012done1543.L011tail:1544movdqa %xmm0,(%esp)1545movdqa %xmm1,16(%esp)1546movdqa %xmm2,32(%esp)1547movdqa %xmm3,48(%esp)1548xorl %eax,%eax1549xorl %edx,%edx1550xorl %ebp,%ebp1551.L013tail_loop:1552movb (%esp,%ebp,1),%al1553movb (%esi,%ebp,1),%dl1554leal 1(%ebp),%ebp1555xorb %dl,%al1556movb %al,-1(%edi,%ebp,1)1557decl %ecx1558jnz .L013tail_loop1559.L012done:1560movl 512(%esp),%esp1561popl %edi1562popl %esi1563popl %ebx1564popl %ebp1565ret1566.size ChaCha20_ssse3,.-.L_ChaCha20_ssse3_begin1567.align 641568.Lssse3_data:1569.byte 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,131570.byte 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,141571.long 1634760805,857760878,2036477234,17972852361572.long 0,1,2,31573.long 4,4,4,41574.long 1,0,0,01575.long 4,0,0,01576.long 0,-1,-1,-11577.align 641578.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,541579.byte 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,321580.byte 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,1111581.byte 114,103,62,01582.globl ChaCha20_xop1583.type ChaCha20_xop,@function1584.align 161585ChaCha20_xop:1586.L_ChaCha20_xop_begin:1587#ifdef __CET__15881589.byte 243,15,30,2511590#endif15911592pushl %ebp1593pushl %ebx1594pushl %esi1595pushl %edi1596.Lxop_shortcut:1597movl 20(%esp),%edi1598movl 24(%esp),%esi1599movl 28(%esp),%ecx1600movl 32(%esp),%edx1601movl 36(%esp),%ebx1602vzeroupper1603movl %esp,%ebp1604subl $524,%esp1605andl $-64,%esp1606movl %ebp,512(%esp)1607leal .Lssse3_data-.Lpic_point(%eax),%eax1608vmovdqu (%ebx),%xmm31609cmpl $256,%ecx1610jb .L0141x1611movl %edx,516(%esp)1612movl %ebx,520(%esp)1613subl $256,%ecx1614leal 384(%esp),%ebp1615vmovdqu (%edx),%xmm71616vpshufd $0,%xmm3,%xmm01617vpshufd $85,%xmm3,%xmm11618vpshufd $170,%xmm3,%xmm21619vpshufd $255,%xmm3,%xmm31620vpaddd 48(%eax),%xmm0,%xmm01621vpshufd $0,%xmm7,%xmm41622vpshufd $85,%xmm7,%xmm51623vpsubd 64(%eax),%xmm0,%xmm01624vpshufd $170,%xmm7,%xmm61625vpshufd $255,%xmm7,%xmm71626vmovdqa %xmm0,64(%ebp)1627vmovdqa %xmm1,80(%ebp)1628vmovdqa %xmm2,96(%ebp)1629vmovdqa %xmm3,112(%ebp)1630vmovdqu 16(%edx),%xmm31631vmovdqa %xmm4,-64(%ebp)1632vmovdqa %xmm5,-48(%ebp)1633vmovdqa %xmm6,-32(%ebp)1634vmovdqa %xmm7,-16(%ebp)1635vmovdqa 32(%eax),%xmm71636leal 128(%esp),%ebx1637vpshufd $0,%xmm3,%xmm01638vpshufd $85,%xmm3,%xmm11639vpshufd $170,%xmm3,%xmm21640vpshufd $255,%xmm3,%xmm31641vpshufd $0,%xmm7,%xmm41642vpshufd $85,%xmm7,%xmm51643vpshufd $170,%xmm7,%xmm61644vpshufd $255,%xmm7,%xmm71645vmovdqa %xmm0,(%ebp)1646vmovdqa %xmm1,16(%ebp)1647vmovdqa %xmm2,32(%ebp)1648vmovdqa %xmm3,48(%ebp)1649vmovdqa %xmm4,-128(%ebp)1650vmovdqa %xmm5,-112(%ebp)1651vmovdqa %xmm6,-96(%ebp)1652vmovdqa %xmm7,-80(%ebp)1653leal 128(%esi),%esi1654leal 128(%edi),%edi1655jmp .L015outer_loop1656.align 321657.L015outer_loop:1658vmovdqa -112(%ebp),%xmm11659vmovdqa -96(%ebp),%xmm21660vmovdqa -80(%ebp),%xmm31661vmovdqa -48(%ebp),%xmm51662vmovdqa -32(%ebp),%xmm61663vmovdqa -16(%ebp),%xmm71664vmovdqa %xmm1,-112(%ebx)1665vmovdqa %xmm2,-96(%ebx)1666vmovdqa %xmm3,-80(%ebx)1667vmovdqa %xmm5,-48(%ebx)1668vmovdqa %xmm6,-32(%ebx)1669vmovdqa %xmm7,-16(%ebx)1670vmovdqa 32(%ebp),%xmm21671vmovdqa 48(%ebp),%xmm31672vmovdqa 64(%ebp),%xmm41673vmovdqa 80(%ebp),%xmm51674vmovdqa 96(%ebp),%xmm61675vmovdqa 112(%ebp),%xmm71676vpaddd 64(%eax),%xmm4,%xmm41677vmovdqa %xmm2,32(%ebx)1678vmovdqa %xmm3,48(%ebx)1679vmovdqa %xmm4,64(%ebx)1680vmovdqa %xmm5,80(%ebx)1681vmovdqa %xmm6,96(%ebx)1682vmovdqa %xmm7,112(%ebx)1683vmovdqa %xmm4,64(%ebp)1684vmovdqa -128(%ebp),%xmm01685vmovdqa %xmm4,%xmm61686vmovdqa -64(%ebp),%xmm31687vmovdqa (%ebp),%xmm41688vmovdqa 16(%ebp),%xmm51689movl $10,%edx1690nop1691.align 321692.L016loop:1693vpaddd %xmm3,%xmm0,%xmm01694vpxor %xmm0,%xmm6,%xmm61695.byte 143,232,120,194,246,161696vpaddd %xmm6,%xmm4,%xmm41697vpxor %xmm4,%xmm3,%xmm21698vmovdqa -112(%ebx),%xmm11699.byte 143,232,120,194,210,121700vmovdqa -48(%ebx),%xmm31701vpaddd %xmm2,%xmm0,%xmm01702vmovdqa 80(%ebx),%xmm71703vpxor %xmm0,%xmm6,%xmm61704vpaddd %xmm3,%xmm1,%xmm11705.byte 143,232,120,194,246,81706vmovdqa %xmm0,-128(%ebx)1707vpaddd %xmm6,%xmm4,%xmm41708vmovdqa %xmm6,64(%ebx)1709vpxor %xmm4,%xmm2,%xmm21710vpxor %xmm1,%xmm7,%xmm71711.byte 143,232,120,194,210,71712vmovdqa %xmm4,(%ebx)1713.byte 143,232,120,194,255,161714vmovdqa %xmm2,-64(%ebx)1715vpaddd %xmm7,%xmm5,%xmm51716vmovdqa 32(%ebx),%xmm41717vpxor %xmm5,%xmm3,%xmm31718vmovdqa -96(%ebx),%xmm01719.byte 143,232,120,194,219,121720vmovdqa -32(%ebx),%xmm21721vpaddd %xmm3,%xmm1,%xmm11722vmovdqa 96(%ebx),%xmm61723vpxor %xmm1,%xmm7,%xmm71724vpaddd %xmm2,%xmm0,%xmm01725.byte 143,232,120,194,255,81726vmovdqa %xmm1,-112(%ebx)1727vpaddd %xmm7,%xmm5,%xmm51728vmovdqa %xmm7,80(%ebx)1729vpxor %xmm5,%xmm3,%xmm31730vpxor %xmm0,%xmm6,%xmm61731.byte 143,232,120,194,219,71732vmovdqa %xmm5,16(%ebx)1733.byte 143,232,120,194,246,161734vmovdqa %xmm3,-48(%ebx)1735vpaddd %xmm6,%xmm4,%xmm41736vmovdqa 48(%ebx),%xmm51737vpxor %xmm4,%xmm2,%xmm21738vmovdqa -80(%ebx),%xmm11739.byte 143,232,120,194,210,121740vmovdqa -16(%ebx),%xmm31741vpaddd %xmm2,%xmm0,%xmm01742vmovdqa 112(%ebx),%xmm71743vpxor %xmm0,%xmm6,%xmm61744vpaddd %xmm3,%xmm1,%xmm11745.byte 143,232,120,194,246,81746vmovdqa %xmm0,-96(%ebx)1747vpaddd %xmm6,%xmm4,%xmm41748vmovdqa %xmm6,96(%ebx)1749vpxor %xmm4,%xmm2,%xmm21750vpxor %xmm1,%xmm7,%xmm71751.byte 143,232,120,194,210,71752.byte 143,232,120,194,255,161753vmovdqa %xmm2,-32(%ebx)1754vpaddd %xmm7,%xmm5,%xmm51755vpxor %xmm5,%xmm3,%xmm31756vmovdqa -128(%ebx),%xmm01757.byte 143,232,120,194,219,121758vmovdqa -48(%ebx),%xmm21759vpaddd %xmm3,%xmm1,%xmm11760vpxor %xmm1,%xmm7,%xmm71761vpaddd %xmm2,%xmm0,%xmm01762.byte 143,232,120,194,255,81763vmovdqa %xmm1,-80(%ebx)1764vpaddd %xmm7,%xmm5,%xmm51765vpxor %xmm5,%xmm3,%xmm31766vpxor %xmm0,%xmm7,%xmm61767.byte 143,232,120,194,219,71768.byte 143,232,120,194,246,161769vmovdqa %xmm3,-16(%ebx)1770vpaddd %xmm6,%xmm4,%xmm41771vpxor %xmm4,%xmm2,%xmm21772vmovdqa -112(%ebx),%xmm11773.byte 143,232,120,194,210,121774vmovdqa -32(%ebx),%xmm31775vpaddd %xmm2,%xmm0,%xmm01776vmovdqa 64(%ebx),%xmm71777vpxor %xmm0,%xmm6,%xmm61778vpaddd %xmm3,%xmm1,%xmm11779.byte 143,232,120,194,246,81780vmovdqa %xmm0,-128(%ebx)1781vpaddd %xmm6,%xmm4,%xmm41782vmovdqa %xmm6,112(%ebx)1783vpxor %xmm4,%xmm2,%xmm21784vpxor %xmm1,%xmm7,%xmm71785.byte 143,232,120,194,210,71786vmovdqa %xmm4,32(%ebx)1787.byte 143,232,120,194,255,161788vmovdqa %xmm2,-48(%ebx)1789vpaddd %xmm7,%xmm5,%xmm51790vmovdqa (%ebx),%xmm41791vpxor %xmm5,%xmm3,%xmm31792vmovdqa -96(%ebx),%xmm01793.byte 143,232,120,194,219,121794vmovdqa -16(%ebx),%xmm21795vpaddd %xmm3,%xmm1,%xmm11796vmovdqa 80(%ebx),%xmm61797vpxor %xmm1,%xmm7,%xmm71798vpaddd %xmm2,%xmm0,%xmm01799.byte 143,232,120,194,255,81800vmovdqa %xmm1,-112(%ebx)1801vpaddd %xmm7,%xmm5,%xmm51802vmovdqa %xmm7,64(%ebx)1803vpxor %xmm5,%xmm3,%xmm31804vpxor %xmm0,%xmm6,%xmm61805.byte 143,232,120,194,219,71806vmovdqa %xmm5,48(%ebx)1807.byte 143,232,120,194,246,161808vmovdqa %xmm3,-32(%ebx)1809vpaddd %xmm6,%xmm4,%xmm41810vmovdqa 16(%ebx),%xmm51811vpxor %xmm4,%xmm2,%xmm21812vmovdqa -80(%ebx),%xmm11813.byte 143,232,120,194,210,121814vmovdqa -64(%ebx),%xmm31815vpaddd %xmm2,%xmm0,%xmm01816vmovdqa 96(%ebx),%xmm71817vpxor %xmm0,%xmm6,%xmm61818vpaddd %xmm3,%xmm1,%xmm11819.byte 143,232,120,194,246,81820vmovdqa %xmm0,-96(%ebx)1821vpaddd %xmm6,%xmm4,%xmm41822vmovdqa %xmm6,80(%ebx)1823vpxor %xmm4,%xmm2,%xmm21824vpxor %xmm1,%xmm7,%xmm71825.byte 143,232,120,194,210,71826.byte 143,232,120,194,255,161827vmovdqa %xmm2,-16(%ebx)1828vpaddd %xmm7,%xmm5,%xmm51829vpxor %xmm5,%xmm3,%xmm31830vmovdqa -128(%ebx),%xmm01831.byte 143,232,120,194,219,121832vpaddd %xmm3,%xmm1,%xmm11833vmovdqa 64(%ebx),%xmm61834vpxor %xmm1,%xmm7,%xmm71835.byte 143,232,120,194,255,81836vmovdqa %xmm1,-80(%ebx)1837vpaddd %xmm7,%xmm5,%xmm51838vmovdqa %xmm7,96(%ebx)1839vpxor %xmm5,%xmm3,%xmm31840.byte 143,232,120,194,219,71841decl %edx1842jnz .L016loop1843vmovdqa %xmm3,-64(%ebx)1844vmovdqa %xmm4,(%ebx)1845vmovdqa %xmm5,16(%ebx)1846vmovdqa %xmm6,64(%ebx)1847vmovdqa %xmm7,96(%ebx)1848vmovdqa -112(%ebx),%xmm11849vmovdqa -96(%ebx),%xmm21850vmovdqa -80(%ebx),%xmm31851vpaddd -128(%ebp),%xmm0,%xmm01852vpaddd -112(%ebp),%xmm1,%xmm11853vpaddd -96(%ebp),%xmm2,%xmm21854vpaddd -80(%ebp),%xmm3,%xmm31855vpunpckldq %xmm1,%xmm0,%xmm61856vpunpckldq %xmm3,%xmm2,%xmm71857vpunpckhdq %xmm1,%xmm0,%xmm01858vpunpckhdq %xmm3,%xmm2,%xmm21859vpunpcklqdq %xmm7,%xmm6,%xmm11860vpunpckhqdq %xmm7,%xmm6,%xmm61861vpunpcklqdq %xmm2,%xmm0,%xmm71862vpunpckhqdq %xmm2,%xmm0,%xmm31863vpxor -128(%esi),%xmm1,%xmm41864vpxor -64(%esi),%xmm6,%xmm51865vpxor (%esi),%xmm7,%xmm61866vpxor 64(%esi),%xmm3,%xmm71867leal 16(%esi),%esi1868vmovdqa -64(%ebx),%xmm01869vmovdqa -48(%ebx),%xmm11870vmovdqa -32(%ebx),%xmm21871vmovdqa -16(%ebx),%xmm31872vmovdqu %xmm4,-128(%edi)1873vmovdqu %xmm5,-64(%edi)1874vmovdqu %xmm6,(%edi)1875vmovdqu %xmm7,64(%edi)1876leal 16(%edi),%edi1877vpaddd -64(%ebp),%xmm0,%xmm01878vpaddd -48(%ebp),%xmm1,%xmm11879vpaddd -32(%ebp),%xmm2,%xmm21880vpaddd -16(%ebp),%xmm3,%xmm31881vpunpckldq %xmm1,%xmm0,%xmm61882vpunpckldq %xmm3,%xmm2,%xmm71883vpunpckhdq %xmm1,%xmm0,%xmm01884vpunpckhdq %xmm3,%xmm2,%xmm21885vpunpcklqdq %xmm7,%xmm6,%xmm11886vpunpckhqdq %xmm7,%xmm6,%xmm61887vpunpcklqdq %xmm2,%xmm0,%xmm71888vpunpckhqdq %xmm2,%xmm0,%xmm31889vpxor -128(%esi),%xmm1,%xmm41890vpxor -64(%esi),%xmm6,%xmm51891vpxor (%esi),%xmm7,%xmm61892vpxor 64(%esi),%xmm3,%xmm71893leal 16(%esi),%esi1894vmovdqa (%ebx),%xmm01895vmovdqa 16(%ebx),%xmm11896vmovdqa 32(%ebx),%xmm21897vmovdqa 48(%ebx),%xmm31898vmovdqu %xmm4,-128(%edi)1899vmovdqu %xmm5,-64(%edi)1900vmovdqu %xmm6,(%edi)1901vmovdqu %xmm7,64(%edi)1902leal 16(%edi),%edi1903vpaddd (%ebp),%xmm0,%xmm01904vpaddd 16(%ebp),%xmm1,%xmm11905vpaddd 32(%ebp),%xmm2,%xmm21906vpaddd 48(%ebp),%xmm3,%xmm31907vpunpckldq %xmm1,%xmm0,%xmm61908vpunpckldq %xmm3,%xmm2,%xmm71909vpunpckhdq %xmm1,%xmm0,%xmm01910vpunpckhdq %xmm3,%xmm2,%xmm21911vpunpcklqdq %xmm7,%xmm6,%xmm11912vpunpckhqdq %xmm7,%xmm6,%xmm61913vpunpcklqdq %xmm2,%xmm0,%xmm71914vpunpckhqdq %xmm2,%xmm0,%xmm31915vpxor -128(%esi),%xmm1,%xmm41916vpxor -64(%esi),%xmm6,%xmm51917vpxor (%esi),%xmm7,%xmm61918vpxor 64(%esi),%xmm3,%xmm71919leal 16(%esi),%esi1920vmovdqa 64(%ebx),%xmm01921vmovdqa 80(%ebx),%xmm11922vmovdqa 96(%ebx),%xmm21923vmovdqa 112(%ebx),%xmm31924vmovdqu %xmm4,-128(%edi)1925vmovdqu %xmm5,-64(%edi)1926vmovdqu %xmm6,(%edi)1927vmovdqu %xmm7,64(%edi)1928leal 16(%edi),%edi1929vpaddd 64(%ebp),%xmm0,%xmm01930vpaddd 80(%ebp),%xmm1,%xmm11931vpaddd 96(%ebp),%xmm2,%xmm21932vpaddd 112(%ebp),%xmm3,%xmm31933vpunpckldq %xmm1,%xmm0,%xmm61934vpunpckldq %xmm3,%xmm2,%xmm71935vpunpckhdq %xmm1,%xmm0,%xmm01936vpunpckhdq %xmm3,%xmm2,%xmm21937vpunpcklqdq %xmm7,%xmm6,%xmm11938vpunpckhqdq %xmm7,%xmm6,%xmm61939vpunpcklqdq %xmm2,%xmm0,%xmm71940vpunpckhqdq %xmm2,%xmm0,%xmm31941vpxor -128(%esi),%xmm1,%xmm41942vpxor -64(%esi),%xmm6,%xmm51943vpxor (%esi),%xmm7,%xmm61944vpxor 64(%esi),%xmm3,%xmm71945leal 208(%esi),%esi1946vmovdqu %xmm4,-128(%edi)1947vmovdqu %xmm5,-64(%edi)1948vmovdqu %xmm6,(%edi)1949vmovdqu %xmm7,64(%edi)1950leal 208(%edi),%edi1951subl $256,%ecx1952jnc .L015outer_loop1953addl $256,%ecx1954jz .L017done1955movl 520(%esp),%ebx1956leal -128(%esi),%esi1957movl 516(%esp),%edx1958leal -128(%edi),%edi1959vmovd 64(%ebp),%xmm21960vmovdqu (%ebx),%xmm31961vpaddd 96(%eax),%xmm2,%xmm21962vpand 112(%eax),%xmm3,%xmm31963vpor %xmm2,%xmm3,%xmm31964.L0141x:1965vmovdqa 32(%eax),%xmm01966vmovdqu (%edx),%xmm11967vmovdqu 16(%edx),%xmm21968vmovdqa (%eax),%xmm61969vmovdqa 16(%eax),%xmm71970movl %ebp,48(%esp)1971vmovdqa %xmm0,(%esp)1972vmovdqa %xmm1,16(%esp)1973vmovdqa %xmm2,32(%esp)1974vmovdqa %xmm3,48(%esp)1975movl $10,%edx1976jmp .L018loop1x1977.align 161978.L019outer1x:1979vmovdqa 80(%eax),%xmm31980vmovdqa (%esp),%xmm01981vmovdqa 16(%esp),%xmm11982vmovdqa 32(%esp),%xmm21983vpaddd 48(%esp),%xmm3,%xmm31984movl $10,%edx1985vmovdqa %xmm3,48(%esp)1986jmp .L018loop1x1987.align 161988.L018loop1x:1989vpaddd %xmm1,%xmm0,%xmm01990vpxor %xmm0,%xmm3,%xmm31991.byte 143,232,120,194,219,161992vpaddd %xmm3,%xmm2,%xmm21993vpxor %xmm2,%xmm1,%xmm11994.byte 143,232,120,194,201,121995vpaddd %xmm1,%xmm0,%xmm01996vpxor %xmm0,%xmm3,%xmm31997.byte 143,232,120,194,219,81998vpaddd %xmm3,%xmm2,%xmm21999vpxor %xmm2,%xmm1,%xmm12000.byte 143,232,120,194,201,72001vpshufd $78,%xmm2,%xmm22002vpshufd $57,%xmm1,%xmm12003vpshufd $147,%xmm3,%xmm32004vpaddd %xmm1,%xmm0,%xmm02005vpxor %xmm0,%xmm3,%xmm32006.byte 143,232,120,194,219,162007vpaddd %xmm3,%xmm2,%xmm22008vpxor %xmm2,%xmm1,%xmm12009.byte 143,232,120,194,201,122010vpaddd %xmm1,%xmm0,%xmm02011vpxor %xmm0,%xmm3,%xmm32012.byte 143,232,120,194,219,82013vpaddd %xmm3,%xmm2,%xmm22014vpxor %xmm2,%xmm1,%xmm12015.byte 143,232,120,194,201,72016vpshufd $78,%xmm2,%xmm22017vpshufd $147,%xmm1,%xmm12018vpshufd $57,%xmm3,%xmm32019decl %edx2020jnz .L018loop1x2021vpaddd (%esp),%xmm0,%xmm02022vpaddd 16(%esp),%xmm1,%xmm12023vpaddd 32(%esp),%xmm2,%xmm22024vpaddd 48(%esp),%xmm3,%xmm32025cmpl $64,%ecx2026jb .L020tail2027vpxor (%esi),%xmm0,%xmm02028vpxor 16(%esi),%xmm1,%xmm12029vpxor 32(%esi),%xmm2,%xmm22030vpxor 48(%esi),%xmm3,%xmm32031leal 64(%esi),%esi2032vmovdqu %xmm0,(%edi)2033vmovdqu %xmm1,16(%edi)2034vmovdqu %xmm2,32(%edi)2035vmovdqu %xmm3,48(%edi)2036leal 64(%edi),%edi2037subl $64,%ecx2038jnz .L019outer1x2039jmp .L017done2040.L020tail:2041vmovdqa %xmm0,(%esp)2042vmovdqa %xmm1,16(%esp)2043vmovdqa %xmm2,32(%esp)2044vmovdqa %xmm3,48(%esp)2045xorl %eax,%eax2046xorl %edx,%edx2047xorl %ebp,%ebp2048.L021tail_loop:2049movb (%esp,%ebp,1),%al2050movb (%esi,%ebp,1),%dl2051leal 1(%ebp),%ebp2052xorb %dl,%al2053movb %al,-1(%edi,%ebp,1)2054decl %ecx2055jnz .L021tail_loop2056.L017done:2057vzeroupper2058movl 512(%esp),%esp2059popl %edi2060popl %esi2061popl %ebx2062popl %ebp2063ret2064.size ChaCha20_xop,.-.L_ChaCha20_xop_begin2065.comm OPENSSL_ia32cap_P,40,420662067.section ".note.gnu.property", "a"2068.p2align 22069.long 1f - 0f2070.long 4f - 1f2071.long 520720:2073.asciz "GNU"20741:2075.p2align 22076.long 0xc00000022077.long 3f - 2f20782:2079.long 320803:2081.p2align 220824:2083#endif208420852086