14969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin#if defined(__i386__) 24969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.text 34969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.globl _ChaCha20_ctr32 44969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.private_extern _ChaCha20_ctr32 54969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.align 4 64969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin_ChaCha20_ctr32: 74969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL_ChaCha20_ctr32_begin: 84969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pushl %ebp 94969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pushl %ebx 104969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pushl %esi 114969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pushl %edi 124969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%eax 134969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin cmpl 28(%esp),%eax 144969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin je L000no_data 154969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin call Lpic_point 164969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminLpic_point: 174969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin popl %eax 184969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl L_OPENSSL_ia32cap_P$non_lazy_ptr-Lpic_point(%eax),%ebp 194969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin testl $16777216,(%ebp) 204969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jz L001x86 214969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin testl $512,4(%ebp) 224969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jz L001x86 234969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jmp Lssse3_shortcut 244969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL001x86: 254969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 32(%esp),%esi 264969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 36(%esp),%edi 274969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin subl $132,%esp 284969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl (%esi),%eax 294969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 4(%esi),%ebx 304969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 8(%esi),%ecx 314969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 12(%esi),%edx 324969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,80(%esp) 334969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,84(%esp) 344969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,88(%esp) 354969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,92(%esp) 364969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 16(%esi),%eax 374969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 20(%esi),%ebx 384969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 24(%esi),%ecx 394969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 28(%esi),%edx 404969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,96(%esp) 414969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,100(%esp) 424969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,104(%esp) 434969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,108(%esp) 444969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl (%edi),%eax 454969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 4(%edi),%ebx 464969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 8(%edi),%ecx 474969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 12(%edi),%edx 484969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin subl $1,%eax 494969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,112(%esp) 504969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,116(%esp) 514969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,120(%esp) 524969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,124(%esp) 534969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jmp L002entry 544969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.align 4,0x90 554969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL003outer_loop: 564969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,156(%esp) 574969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,152(%esp) 584969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,160(%esp) 594969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL002entry: 604969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl $1634760805,%eax 614969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl $857760878,4(%esp) 624969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl $2036477234,8(%esp) 634969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl $1797285236,12(%esp) 644969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 84(%esp),%ebx 654969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 88(%esp),%ebp 664969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 104(%esp),%ecx 674969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 108(%esp),%esi 684969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 116(%esp),%edx 694969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 120(%esp),%edi 704969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,20(%esp) 714969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,24(%esp) 724969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,40(%esp) 734969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %esi,44(%esp) 744969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,52(%esp) 754969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,56(%esp) 764969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 92(%esp),%ebx 774969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 124(%esp),%edi 784969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 112(%esp),%edx 794969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 80(%esp),%ebp 804969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 96(%esp),%ecx 814969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 100(%esp),%esi 824969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl $1,%edx 834969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,28(%esp) 844969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,60(%esp) 854969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,112(%esp) 864969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl $10,%ebx 874969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jmp L004loop 884969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.align 4,0x90 894969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL004loop: 904969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebp,%eax 914969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,128(%esp) 924969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,%ebx 934969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edx 944969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $16,%edx 954969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edx,%ecx 964969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %ecx,%ebx 974969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 52(%esp),%edi 984969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $12,%ebx 994969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 20(%esp),%ebp 1004969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebx,%eax 1014969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edx 1024969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,(%esp) 1034969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $8,%edx 1044969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 4(%esp),%eax 1054969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edx,%ecx 1064969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,48(%esp) 1074969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %ecx,%ebx 1084969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebp,%eax 1094969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $7,%ebx 1104969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edi 1114969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,32(%esp) 1124969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $16,%edi 1134969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,16(%esp) 1144969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edi,%esi 1154969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 40(%esp),%ecx 1164969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %esi,%ebp 1174969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 56(%esp),%edx 1184969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $12,%ebp 1194969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 24(%esp),%ebx 1204969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebp,%eax 1214969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edi 1224969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,4(%esp) 1234969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $8,%edi 1244969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 8(%esp),%eax 1254969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edi,%esi 1264969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,52(%esp) 1274969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %esi,%ebp 1284969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebx,%eax 1294969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $7,%ebp 1304969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edx 1314969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %esi,36(%esp) 1324969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $16,%edx 1334969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,20(%esp) 1344969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edx,%ecx 1354969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 44(%esp),%esi 1364969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %ecx,%ebx 1374969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 60(%esp),%edi 1384969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $12,%ebx 1394969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 28(%esp),%ebp 1404969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebx,%eax 1414969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edx 1424969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,8(%esp) 1434969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $8,%edx 1444969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 12(%esp),%eax 1454969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edx,%ecx 1464969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,56(%esp) 1474969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %ecx,%ebx 1484969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebp,%eax 1494969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $7,%ebx 1504969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edi 1514969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $16,%edi 1524969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,24(%esp) 1534969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edi,%esi 1544969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %esi,%ebp 1554969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $12,%ebp 1564969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 20(%esp),%ebx 1574969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebp,%eax 1584969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edi 1594969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,12(%esp) 1604969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $8,%edi 1614969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl (%esp),%eax 1624969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edi,%esi 1634969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,%edx 1644969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %esi,%ebp 1654969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebx,%eax 1664969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $7,%ebp 1674969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edx 1684969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $16,%edx 1694969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,28(%esp) 1704969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edx,%ecx 1714969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %ecx,%ebx 1724969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 48(%esp),%edi 1734969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $12,%ebx 1744969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 24(%esp),%ebp 1754969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebx,%eax 1764969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edx 1774969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,(%esp) 1784969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $8,%edx 1794969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 4(%esp),%eax 1804969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edx,%ecx 1814969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,60(%esp) 1824969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %ecx,%ebx 1834969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebp,%eax 1844969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $7,%ebx 1854969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edi 1864969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,40(%esp) 1874969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $16,%edi 1884969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,20(%esp) 1894969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edi,%esi 1904969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 32(%esp),%ecx 1914969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %esi,%ebp 1924969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 52(%esp),%edx 1934969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $12,%ebp 1944969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 28(%esp),%ebx 1954969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebp,%eax 1964969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edi 1974969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,4(%esp) 1984969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $8,%edi 1994969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 8(%esp),%eax 2004969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edi,%esi 2014969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,48(%esp) 2024969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %esi,%ebp 2034969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebx,%eax 2044969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $7,%ebp 2054969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edx 2064969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %esi,44(%esp) 2074969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $16,%edx 2084969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,24(%esp) 2094969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edx,%ecx 2104969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 36(%esp),%esi 2114969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %ecx,%ebx 2124969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 56(%esp),%edi 2134969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $12,%ebx 2144969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 16(%esp),%ebp 2154969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebx,%eax 2164969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edx 2174969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,8(%esp) 2184969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $8,%edx 2194969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 12(%esp),%eax 2204969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edx,%ecx 2214969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,52(%esp) 2224969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %ecx,%ebx 2234969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebp,%eax 2244969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $7,%ebx 2254969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edi 2264969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $16,%edi 2274969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,28(%esp) 2284969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edi,%esi 2294969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %esi,%ebp 2304969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 48(%esp),%edx 2314969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $12,%ebp 2324969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 128(%esp),%ebx 2334969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %ebp,%eax 2344969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%edi 2354969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,12(%esp) 2364969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $8,%edi 2374969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl (%esp),%eax 2384969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl %edi,%esi 2394969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,56(%esp) 2404969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %esi,%ebp 2414969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin roll $7,%ebp 2424969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin decl %ebx 2434969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jnz L004loop 2444969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 160(%esp),%ebx 2454969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl $1634760805,%eax 2464969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 80(%esp),%ebp 2474969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 96(%esp),%ecx 2484969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 100(%esp),%esi 2494969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin cmpl $64,%ebx 2504969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jb L005tail 2514969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 156(%esp),%ebx 2524969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 112(%esp),%edx 2534969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 120(%esp),%edi 2544969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl (%ebx),%eax 2554969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 16(%ebx),%ebp 2564969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,(%esp) 2574969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 152(%esp),%eax 2584969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 32(%ebx),%ecx 2594969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 36(%ebx),%esi 2604969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 48(%ebx),%edx 2614969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 56(%ebx),%edi 2626e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl %ebp,16(%eax) 2636e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl %ecx,32(%eax) 2646e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl %esi,36(%eax) 2656e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl %edx,48(%eax) 2666e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl %edi,56(%eax) 2674969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 4(%esp),%ebp 2684969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 8(%esp),%ecx 2694969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 12(%esp),%esi 2704969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 20(%esp),%edx 2714969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 24(%esp),%edi 2724969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl $857760878,%ebp 2734969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl $2036477234,%ecx 2744969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl $1797285236,%esi 2754969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 84(%esp),%edx 2764969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 88(%esp),%edi 2774969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 4(%ebx),%ebp 2784969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 8(%ebx),%ecx 2794969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 12(%ebx),%esi 2804969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 20(%ebx),%edx 2814969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 24(%ebx),%edi 2824969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,4(%eax) 2834969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,8(%eax) 2844969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %esi,12(%eax) 2854969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,20(%eax) 2864969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,24(%eax) 2876e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl 28(%esp),%ebp 2886e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl 40(%esp),%ecx 2894969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 44(%esp),%esi 2904969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 52(%esp),%edx 2914969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 60(%esp),%edi 2926e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin addl 92(%esp),%ebp 2936e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin addl 104(%esp),%ecx 2946e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin addl 108(%esp),%esi 2954969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 116(%esp),%edx 2964969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 124(%esp),%edi 2976e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin xorl 28(%ebx),%ebp 2986e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin xorl 40(%ebx),%ecx 2996e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin xorl 44(%ebx),%esi 3004969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 52(%ebx),%edx 3014969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl 60(%ebx),%edi 3024969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal 64(%ebx),%ebx 3036e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl %ebp,28(%eax) 3046e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl (%esp),%ebp 3056e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl %ecx,40(%eax) 3064969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 160(%esp),%ecx 3076e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl %esi,44(%eax) 3084969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,52(%eax) 3094969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,60(%eax) 3106e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movl %ebp,(%eax) 3114969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal 64(%eax),%eax 3124969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin subl $64,%ecx 3134969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jnz L003outer_loop 3144969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jmp L006done 3154969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL005tail: 3164969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 112(%esp),%edx 3174969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 120(%esp),%edi 3184969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %eax,(%esp) 3194969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,16(%esp) 3204969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,32(%esp) 3214969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %esi,36(%esp) 3224969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,48(%esp) 3234969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,56(%esp) 3244969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 4(%esp),%ebp 3254969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 8(%esp),%ecx 3264969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 12(%esp),%esi 3274969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 20(%esp),%edx 3284969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 24(%esp),%edi 3294969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl $857760878,%ebp 3304969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl $2036477234,%ecx 3314969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl $1797285236,%esi 3324969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 84(%esp),%edx 3334969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 88(%esp),%edi 3344969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,4(%esp) 3354969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,8(%esp) 3364969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %esi,12(%esp) 3374969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,20(%esp) 3384969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,24(%esp) 3394969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 28(%esp),%ebp 3404969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 40(%esp),%ecx 3414969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 44(%esp),%esi 3424969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 52(%esp),%edx 3434969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 60(%esp),%edi 3444969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 92(%esp),%ebp 3454969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 104(%esp),%ecx 3464969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 108(%esp),%esi 3474969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 116(%esp),%edx 3484969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl 124(%esp),%edi 3494969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,28(%esp) 3504969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 156(%esp),%ebp 3514969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ecx,40(%esp) 3524969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 152(%esp),%ecx 3534969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %esi,44(%esp) 3544969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %esi,%esi 3554969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,52(%esp) 3564969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edi,60(%esp) 3574969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%eax 3584969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %edx,%edx 3594969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL007tail_loop: 3604969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movb (%esi,%ebp,1),%al 3614969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movb (%esp,%esi,1),%dl 3624969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal 1(%esi),%esi 3634969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorb %dl,%al 3644969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movb %al,-1(%ecx,%esi,1) 3654969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin decl %ebx 3664969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jnz L007tail_loop 3674969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL006done: 3684969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl $132,%esp 3694969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL000no_data: 3704969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin popl %edi 3714969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin popl %esi 3724969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin popl %ebx 3734969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin popl %ebp 3744969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin ret 3754969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.globl _ChaCha20_ssse3 3764969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.private_extern _ChaCha20_ssse3 3774969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.align 4 3784969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin_ChaCha20_ssse3: 3794969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL_ChaCha20_ssse3_begin: 3804969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pushl %ebp 3814969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pushl %ebx 3824969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pushl %esi 3834969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pushl %edi 3844969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminLssse3_shortcut: 3854969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 20(%esp),%edi 3864969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 24(%esp),%esi 3874969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 28(%esp),%ecx 3884969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 32(%esp),%edx 3894969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 36(%esp),%ebx 3904969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %esp,%ebp 3914969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin subl $524,%esp 3924969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin andl $-64,%esp 3934969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,512(%esp) 3944969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal Lssse3_data-Lpic_point(%eax),%eax 3954969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu (%ebx),%xmm3 3964969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin cmpl $256,%ecx 3974969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jb L0081x 3984969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %edx,516(%esp) 3994969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebx,520(%esp) 4004969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin subl $256,%ecx 4014969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal 384(%esp),%ebp 4024969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu (%edx),%xmm7 4034969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $0,%xmm3,%xmm0 4044969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $85,%xmm3,%xmm1 4054969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $170,%xmm3,%xmm2 4064969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $255,%xmm3,%xmm3 4074969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 48(%eax),%xmm0 4084969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $0,%xmm7,%xmm4 4094969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $85,%xmm7,%xmm5 4104969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psubd 64(%eax),%xmm0 4114969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $170,%xmm7,%xmm6 4124969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $255,%xmm7,%xmm7 4134969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,64(%ebp) 4144969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,80(%ebp) 4154969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,96(%ebp) 4164969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,112(%ebp) 4174969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu 16(%edx),%xmm3 4184969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm4,-64(%ebp) 4194969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm5,-48(%ebp) 4204969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,-32(%ebp) 4214969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm7,-16(%ebp) 4224969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 32(%eax),%xmm7 4234969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal 128(%esp),%ebx 4244969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $0,%xmm3,%xmm0 4254969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $85,%xmm3,%xmm1 4264969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $170,%xmm3,%xmm2 4274969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $255,%xmm3,%xmm3 4284969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $0,%xmm7,%xmm4 4294969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $85,%xmm7,%xmm5 4304969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $170,%xmm7,%xmm6 4314969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $255,%xmm7,%xmm7 4324969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,(%ebp) 4334969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,16(%ebp) 4344969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,32(%ebp) 4354969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,48(%ebp) 4364969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm4,-128(%ebp) 4374969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm5,-112(%ebp) 4384969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,-96(%ebp) 4394969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm7,-80(%ebp) 4404969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal 128(%esi),%esi 4414969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal 128(%edi),%edi 4424969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jmp L009outer_loop 4434969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.align 4,0x90 4444969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL009outer_loop: 4454969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -112(%ebp),%xmm1 4464969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -96(%ebp),%xmm2 4474969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -80(%ebp),%xmm3 4484969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -48(%ebp),%xmm5 4494969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -32(%ebp),%xmm6 4504969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -16(%ebp),%xmm7 4514969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,-112(%ebx) 4524969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,-96(%ebx) 4534969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,-80(%ebx) 4544969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm5,-48(%ebx) 4554969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,-32(%ebx) 4564969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm7,-16(%ebx) 4574969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 32(%ebp),%xmm2 4584969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 48(%ebp),%xmm3 4594969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 64(%ebp),%xmm4 4604969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 80(%ebp),%xmm5 4614969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 96(%ebp),%xmm6 4624969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 112(%ebp),%xmm7 4634969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 64(%eax),%xmm4 4644969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,32(%ebx) 4654969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,48(%ebx) 4664969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm4,64(%ebx) 4674969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm5,80(%ebx) 4684969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,96(%ebx) 4694969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm7,112(%ebx) 4704969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm4,64(%ebp) 4714969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -128(%ebp),%xmm0 4724969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm4,%xmm6 4734969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -64(%ebp),%xmm3 4744969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa (%ebp),%xmm4 4754969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 16(%ebp),%xmm5 4764969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl $10,%edx 4774969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin nop 4784969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.align 4,0x90 4794969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL010loop: 4804969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm0 4814969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,%xmm2 4824969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm6 4834969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb (%eax),%xmm6 4844969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm6,%xmm4 4854969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm4,%xmm2 4864969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -48(%ebx),%xmm3 4874969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm1 4884969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $12,%xmm2 4894969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $20,%xmm1 4904969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm1,%xmm2 4914969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -112(%ebx),%xmm1 4924969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm2,%xmm0 4934969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 80(%ebx),%xmm7 4944969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm6 4954969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,-128(%ebx) 4964969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb 16(%eax),%xmm6 4974969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm6,%xmm4 4984969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,64(%ebx) 4994969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm4,%xmm2 5004969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm1 5014969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm0 5024969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $7,%xmm2 5034969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $25,%xmm0 5044969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm1,%xmm7 5054969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm0,%xmm2 5064969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm4,(%ebx) 5074969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb (%eax),%xmm7 5084969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,-64(%ebx) 5094969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm7,%xmm5 5104969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 32(%ebx),%xmm4 5114969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm5,%xmm3 5124969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -32(%ebx),%xmm2 5134969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,%xmm0 5144969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $12,%xmm3 5154969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $20,%xmm0 5164969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm0,%xmm3 5174969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -96(%ebx),%xmm0 5184969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm1 5194969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 96(%ebx),%xmm6 5204969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm1,%xmm7 5214969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,-112(%ebx) 5224969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb 16(%eax),%xmm7 5234969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm7,%xmm5 5244969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm7,80(%ebx) 5254969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm5,%xmm3 5264969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm2,%xmm0 5274969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,%xmm1 5284969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $7,%xmm3 5294969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $25,%xmm1 5304969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm6 5314969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm1,%xmm3 5324969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm5,16(%ebx) 5334969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb (%eax),%xmm6 5344969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,-48(%ebx) 5354969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm6,%xmm4 5364969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 48(%ebx),%xmm5 5374969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm4,%xmm2 5384969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -16(%ebx),%xmm3 5394969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm1 5404969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $12,%xmm2 5414969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $20,%xmm1 5424969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm1,%xmm2 5434969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -80(%ebx),%xmm1 5444969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm2,%xmm0 5454969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 112(%ebx),%xmm7 5464969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm6 5474969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,-96(%ebx) 5484969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb 16(%eax),%xmm6 5494969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm6,%xmm4 5504969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,96(%ebx) 5514969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm4,%xmm2 5524969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm1 5534969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm0 5544969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $7,%xmm2 5554969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $25,%xmm0 5564969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm1,%xmm7 5574969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm0,%xmm2 5584969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb (%eax),%xmm7 5594969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,-32(%ebx) 5604969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm7,%xmm5 5614969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm5,%xmm3 5624969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -48(%ebx),%xmm2 5634969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,%xmm0 5644969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $12,%xmm3 5654969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $20,%xmm0 5664969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm0,%xmm3 5674969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -128(%ebx),%xmm0 5684969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm1 5694969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm1,%xmm7 5704969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,-80(%ebx) 5714969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb 16(%eax),%xmm7 5724969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm7,%xmm5 5734969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm7,%xmm6 5744969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm5,%xmm3 5754969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm2,%xmm0 5764969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,%xmm1 5774969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $7,%xmm3 5784969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $25,%xmm1 5794969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm6 5804969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm1,%xmm3 5814969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb (%eax),%xmm6 5824969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,-16(%ebx) 5834969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm6,%xmm4 5844969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm4,%xmm2 5854969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -32(%ebx),%xmm3 5864969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm1 5874969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $12,%xmm2 5884969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $20,%xmm1 5894969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm1,%xmm2 5904969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -112(%ebx),%xmm1 5914969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm2,%xmm0 5924969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 64(%ebx),%xmm7 5934969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm6 5944969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,-128(%ebx) 5954969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb 16(%eax),%xmm6 5964969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm6,%xmm4 5974969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,112(%ebx) 5984969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm4,%xmm2 5994969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm1 6004969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm0 6014969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $7,%xmm2 6024969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $25,%xmm0 6034969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm1,%xmm7 6044969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm0,%xmm2 6054969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm4,32(%ebx) 6064969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb (%eax),%xmm7 6074969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,-48(%ebx) 6084969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm7,%xmm5 6094969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa (%ebx),%xmm4 6104969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm5,%xmm3 6114969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -16(%ebx),%xmm2 6124969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,%xmm0 6134969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $12,%xmm3 6144969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $20,%xmm0 6154969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm0,%xmm3 6164969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -96(%ebx),%xmm0 6174969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm1 6184969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 80(%ebx),%xmm6 6194969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm1,%xmm7 6204969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,-112(%ebx) 6214969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb 16(%eax),%xmm7 6224969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm7,%xmm5 6234969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm7,64(%ebx) 6244969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm5,%xmm3 6254969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm2,%xmm0 6264969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,%xmm1 6274969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $7,%xmm3 6284969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $25,%xmm1 6294969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm6 6304969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm1,%xmm3 6314969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm5,48(%ebx) 6324969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb (%eax),%xmm6 6334969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,-32(%ebx) 6344969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm6,%xmm4 6354969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 16(%ebx),%xmm5 6364969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm4,%xmm2 6374969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -64(%ebx),%xmm3 6384969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm1 6394969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $12,%xmm2 6404969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $20,%xmm1 6414969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm1,%xmm2 6424969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -80(%ebx),%xmm1 6434969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm2,%xmm0 6444969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 96(%ebx),%xmm7 6454969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm6 6464969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,-96(%ebx) 6474969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb 16(%eax),%xmm6 6484969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm6,%xmm4 6494969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,80(%ebx) 6504969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm4,%xmm2 6514969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm1 6524969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm0 6534969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $7,%xmm2 6544969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $25,%xmm0 6554969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm1,%xmm7 6564969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm0,%xmm2 6574969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb (%eax),%xmm7 6584969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,-16(%ebx) 6594969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm7,%xmm5 6604969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm5,%xmm3 6614969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,%xmm0 6624969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $12,%xmm3 6634969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $20,%xmm0 6644969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm0,%xmm3 6654969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -128(%ebx),%xmm0 6664969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm1 6674969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 64(%ebx),%xmm6 6684969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm1,%xmm7 6694969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,-80(%ebx) 6704969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufb 16(%eax),%xmm7 6714969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm7,%xmm5 6724969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm7,96(%ebx) 6734969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm5,%xmm3 6744969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,%xmm1 6754969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $7,%xmm3 6764969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $25,%xmm1 6774969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm1,%xmm3 6784969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin decl %edx 6794969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jnz L010loop 6804969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,-64(%ebx) 6814969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm4,(%ebx) 6824969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm5,16(%ebx) 6834969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,64(%ebx) 6844969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm7,96(%ebx) 6854969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -112(%ebx),%xmm1 6864969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -96(%ebx),%xmm2 6874969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -80(%ebx),%xmm3 6884969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd -128(%ebp),%xmm0 6894969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd -112(%ebp),%xmm1 6904969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd -96(%ebp),%xmm2 6914969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd -80(%ebp),%xmm3 6924969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,%xmm6 6934969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckldq %xmm1,%xmm0 6944969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm7 6954969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckldq %xmm3,%xmm2 6964969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhdq %xmm1,%xmm6 6974969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhdq %xmm3,%xmm7 6984969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,%xmm1 6994969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpcklqdq %xmm2,%xmm0 7004969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,%xmm3 7014969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpcklqdq %xmm7,%xmm6 7024969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhqdq %xmm2,%xmm1 7034969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhqdq %xmm7,%xmm3 7046e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu -128(%esi),%xmm4 7056e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu -64(%esi),%xmm5 7066e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu (%esi),%xmm2 7076e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu 64(%esi),%xmm7 7086e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin leal 16(%esi),%esi 7096e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm0,%xmm4 7104969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -64(%ebx),%xmm0 7116e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm1,%xmm5 7124969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -48(%ebx),%xmm1 7136e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm2,%xmm6 7144969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -32(%ebx),%xmm2 7156e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm3,%xmm7 7164969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa -16(%ebx),%xmm3 7176e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm4,-128(%edi) 7186e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm5,-64(%edi) 7196e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm6,(%edi) 7206e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm7,64(%edi) 7216e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin leal 16(%edi),%edi 7224969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd -64(%ebp),%xmm0 7234969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd -48(%ebp),%xmm1 7244969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd -32(%ebp),%xmm2 7254969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd -16(%ebp),%xmm3 7264969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,%xmm6 7274969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckldq %xmm1,%xmm0 7284969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm7 7294969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckldq %xmm3,%xmm2 7304969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhdq %xmm1,%xmm6 7314969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhdq %xmm3,%xmm7 7324969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,%xmm1 7334969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpcklqdq %xmm2,%xmm0 7344969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,%xmm3 7354969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpcklqdq %xmm7,%xmm6 7364969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhqdq %xmm2,%xmm1 7374969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhqdq %xmm7,%xmm3 7386e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu -128(%esi),%xmm4 7396e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu -64(%esi),%xmm5 7406e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu (%esi),%xmm2 7416e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu 64(%esi),%xmm7 7426e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin leal 16(%esi),%esi 7436e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm0,%xmm4 7444969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa (%ebx),%xmm0 7456e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm1,%xmm5 7464969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 16(%ebx),%xmm1 7476e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm2,%xmm6 7484969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 32(%ebx),%xmm2 7496e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm3,%xmm7 7504969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 48(%ebx),%xmm3 7516e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm4,-128(%edi) 7526e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm5,-64(%edi) 7536e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm6,(%edi) 7546e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm7,64(%edi) 7556e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin leal 16(%edi),%edi 7564969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd (%ebp),%xmm0 7574969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 16(%ebp),%xmm1 7584969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 32(%ebp),%xmm2 7594969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 48(%ebp),%xmm3 7604969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,%xmm6 7614969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckldq %xmm1,%xmm0 7624969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm7 7634969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckldq %xmm3,%xmm2 7644969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhdq %xmm1,%xmm6 7654969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhdq %xmm3,%xmm7 7664969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,%xmm1 7674969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpcklqdq %xmm2,%xmm0 7684969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,%xmm3 7694969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpcklqdq %xmm7,%xmm6 7704969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhqdq %xmm2,%xmm1 7714969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhqdq %xmm7,%xmm3 7726e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu -128(%esi),%xmm4 7736e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu -64(%esi),%xmm5 7746e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu (%esi),%xmm2 7756e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu 64(%esi),%xmm7 7766e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin leal 16(%esi),%esi 7776e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm0,%xmm4 7784969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 64(%ebx),%xmm0 7796e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm1,%xmm5 7804969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 80(%ebx),%xmm1 7816e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm2,%xmm6 7824969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 96(%ebx),%xmm2 7836e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm3,%xmm7 7844969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 112(%ebx),%xmm3 7856e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm4,-128(%edi) 7866e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm5,-64(%edi) 7876e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm6,(%edi) 7886e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm7,64(%edi) 7896e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin leal 16(%edi),%edi 7904969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 64(%ebp),%xmm0 7914969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 80(%ebp),%xmm1 7924969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 96(%ebp),%xmm2 7934969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 112(%ebp),%xmm3 7944969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,%xmm6 7954969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckldq %xmm1,%xmm0 7964969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,%xmm7 7974969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckldq %xmm3,%xmm2 7984969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhdq %xmm1,%xmm6 7994969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhdq %xmm3,%xmm7 8004969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,%xmm1 8014969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpcklqdq %xmm2,%xmm0 8024969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm6,%xmm3 8034969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpcklqdq %xmm7,%xmm6 8044969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhqdq %xmm2,%xmm1 8054969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin punpckhqdq %xmm7,%xmm3 8066e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu -128(%esi),%xmm4 8076e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu -64(%esi),%xmm5 8086e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu (%esi),%xmm2 8096e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu 64(%esi),%xmm7 8106e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin leal 208(%esi),%esi 8116e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm0,%xmm4 8126e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm1,%xmm5 8136e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm2,%xmm6 8146e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin pxor %xmm3,%xmm7 8156e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm4,-128(%edi) 8166e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm5,-64(%edi) 8176e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm6,(%edi) 8186e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin movdqu %xmm7,64(%edi) 8196e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin leal 208(%edi),%edi 8204969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin subl $256,%ecx 8214969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jnc L009outer_loop 8224969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin addl $256,%ecx 8234969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jz L011done 8244969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 520(%esp),%ebx 8254969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal -128(%esi),%esi 8264969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 516(%esp),%edx 8274969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal -128(%edi),%edi 8284969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movd 64(%ebp),%xmm2 8294969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu (%ebx),%xmm3 8304969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 96(%eax),%xmm2 8314969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pand 112(%eax),%xmm3 8324969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm2,%xmm3 8334969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL0081x: 8344969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 32(%eax),%xmm0 8354969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu (%edx),%xmm1 8364969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu 16(%edx),%xmm2 8374969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa (%eax),%xmm6 8384969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 16(%eax),%xmm7 8394969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl %ebp,48(%esp) 8404969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,(%esp) 8414969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,16(%esp) 8424969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,32(%esp) 8434969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,48(%esp) 8444969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl $10,%edx 8454969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jmp L012loop1x 8464969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.align 4,0x90 8474969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL013outer1x: 8484969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 80(%eax),%xmm3 8494969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa (%esp),%xmm0 8504969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 16(%esp),%xmm1 8514969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa 32(%esp),%xmm2 8524969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 48(%esp),%xmm3 8534969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl $10,%edx 8544969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,48(%esp) 8554969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jmp L012loop1x 8564969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.align 4,0x90 8574969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL012loop1x: 8584969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm1,%xmm0 8594969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm3 8604969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.byte 102,15,56,0,222 8614969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm2 8624969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm2,%xmm1 8634969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,%xmm4 8644969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $20,%xmm1 8654969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $12,%xmm4 8664969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm4,%xmm1 8674969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm1,%xmm0 8684969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm3 8694969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.byte 102,15,56,0,223 8704969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm2 8714969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm2,%xmm1 8724969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,%xmm4 8734969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $25,%xmm1 8744969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $7,%xmm4 8754969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm4,%xmm1 8764969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $78,%xmm2,%xmm2 8774969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $57,%xmm1,%xmm1 8784969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $147,%xmm3,%xmm3 8794969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin nop 8804969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm1,%xmm0 8814969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm3 8824969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.byte 102,15,56,0,222 8834969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm2 8844969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm2,%xmm1 8854969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,%xmm4 8864969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $20,%xmm1 8874969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $12,%xmm4 8884969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm4,%xmm1 8894969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm1,%xmm0 8904969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm0,%xmm3 8914969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.byte 102,15,56,0,223 8924969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd %xmm3,%xmm2 8934969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm2,%xmm1 8944969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,%xmm4 8954969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin psrld $25,%xmm1 8964969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pslld $7,%xmm4 8974969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin por %xmm4,%xmm1 8984969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $78,%xmm2,%xmm2 8994969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $147,%xmm1,%xmm1 9004969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pshufd $57,%xmm3,%xmm3 9014969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin decl %edx 9024969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jnz L012loop1x 9034969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd (%esp),%xmm0 9044969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 16(%esp),%xmm1 9054969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 32(%esp),%xmm2 9064969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin paddd 48(%esp),%xmm3 9074969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin cmpl $64,%ecx 9084969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jb L014tail 9094969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu (%esi),%xmm4 9104969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu 16(%esi),%xmm5 9114969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm4,%xmm0 9124969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu 32(%esi),%xmm4 9134969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm5,%xmm1 9144969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu 48(%esi),%xmm5 9154969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm4,%xmm2 9164969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin pxor %xmm5,%xmm3 9174969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal 64(%esi),%esi 9184969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu %xmm0,(%edi) 9194969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu %xmm1,16(%edi) 9204969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu %xmm2,32(%edi) 9214969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqu %xmm3,48(%edi) 9224969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal 64(%edi),%edi 9234969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin subl $64,%ecx 9244969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jnz L013outer1x 9254969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jmp L011done 9264969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL014tail: 9274969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm0,(%esp) 9284969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm1,16(%esp) 9294969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm2,32(%esp) 9304969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movdqa %xmm3,48(%esp) 9314969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %eax,%eax 9324969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %edx,%edx 9334969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorl %ebp,%ebp 9344969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL015tail_loop: 9354969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movb (%esp,%ebp,1),%al 9364969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movb (%esi,%ebp,1),%dl 9374969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin leal 1(%ebp),%ebp 9384969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin xorb %dl,%al 9394969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movb %al,-1(%edi,%ebp,1) 9404969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin decl %ecx 9414969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin jnz L015tail_loop 9424969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL011done: 9434969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin movl 512(%esp),%esp 9444969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin popl %edi 9454969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin popl %esi 9464969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin popl %ebx 9474969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin popl %ebp 9484969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin ret 9494969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.align 6,0x90 9504969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminLssse3_data: 9514969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.byte 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13 9524969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.byte 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14 9534969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.long 1634760805,857760878,2036477234,1797285236 9544969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.long 0,1,2,3 9554969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.long 4,4,4,4 9564969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.long 1,0,0,0 9574969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.long 4,0,0,0 9584969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.long 0,-1,-1,-1 9594969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.align 6,0x90 9604969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54 9614969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.byte 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 9624969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.byte 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 9634969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.byte 114,103,62,0 9644969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.section __IMPORT,__pointers,non_lazy_symbol_pointers 9654969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid BenjaminL_OPENSSL_ia32cap_P$non_lazy_ptr: 9664969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.indirect_symbol _OPENSSL_ia32cap_P 9674969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin.long 0 9684969cc9b0ab2905ec478277f50ed3849b37a6c6bDavid Benjamin#endif 969